From d58fca554c0adc4888d1fd596739fed7b26bbaa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D1=80=D0=B0=D0=BD=D0=B8=D0=BC=D0=B8=D1=80=20=D0=9A?= =?UTF-8?q?=D0=B0=D1=80=D0=B0=D1=9F=D0=B8=D1=9B?= Date: Sun, 22 Sep 2019 05:12:36 -0700 Subject: [PATCH] Updated glslang. --- 3rdparty/glslang/BUILD.gn | 1 + 3rdparty/glslang/CMakeLists.txt | 59 +- 3rdparty/glslang/README.md | 32 +- 3rdparty/glslang/SPIRV/GLSL.ext.KHR.h | 2 +- 3rdparty/glslang/SPIRV/GlslangToSpv.cpp | 58 +- 3rdparty/glslang/SPIRV/SpvBuilder.h | 6 + 3rdparty/glslang/SPIRV/SpvPostProcess.cpp | 4 +- 3rdparty/glslang/SPIRV/spirv.hpp | 44 + 3rdparty/glslang/StandAlone/StandAlone.cpp | 8 +- 3rdparty/glslang/Test/430.comp | 3 + .../glslang/Test/baseResults/430.comp.out | 155 +- .../Test/baseResults/nonuniform.frag.out | 14 + .../baseResults/spv.bufferhandle1.frag.out | 2 +- .../baseResults/spv.bufferhandle10.frag.out | 2 +- .../baseResults/spv.bufferhandle11.frag.out | 2 +- .../baseResults/spv.bufferhandle12.frag.out | 2 +- .../baseResults/spv.bufferhandle13.frag.out | 2 +- .../baseResults/spv.bufferhandle14.frag.out | 2 +- .../baseResults/spv.bufferhandle15.frag.out | 2 +- .../baseResults/spv.bufferhandle16.frag.out | 2 +- .../baseResults/spv.bufferhandle18.frag.out | 2 +- .../baseResults/spv.bufferhandle2.frag.out | 2 +- .../baseResults/spv.bufferhandle3.frag.out | 2 +- .../baseResults/spv.bufferhandle4.frag.out | 2 +- .../baseResults/spv.bufferhandle5.frag.out | 2 +- .../baseResults/spv.bufferhandle6.frag.out | 2 +- .../baseResults/spv.bufferhandle7.frag.out | 2 +- .../baseResults/spv.bufferhandle8.frag.out | 2 +- .../baseResults/spv.bufferhandle9.frag.out | 2 +- .../spv.bufferhandleUvec2.frag.out | 133 + .../Test/baseResults/spv.coopmat.comp.out | 2 +- .../Test/baseResults/spv.intcoopmat.comp.out | 2 +- .../baseResults/spv.specConstant.vert.out | 6 +- ...v.subgroupExtendedTypesArithmetic.comp.out | 4280 +++++++++++++++++ ...ubgroupExtendedTypesArithmeticNeg.comp.out | 557 +++ .../spv.subgroupExtendedTypesBallot.comp.out | 560 +++ ...pv.subgroupExtendedTypesBallotNeg.comp.out | 61 + .../spv.subgroupExtendedTypesBasic.comp.out | 9 + ...pv.subgroupExtendedTypesClustered.comp.out | 1520 ++++++ ...subgroupExtendedTypesClusteredNeg.comp.out | 189 + ....subgroupExtendedTypesPartitioned.comp.out | 1835 +++++++ ...bgroupExtendedTypesPartitionedNeg.comp.out | 217 + .../spv.subgroupExtendedTypesQuad.comp.out | 981 ++++ .../spv.subgroupExtendedTypesQuadNeg.comp.out | 117 + .../spv.subgroupExtendedTypesShuffle.comp.out | 616 +++ ...v.subgroupExtendedTypesShuffleNeg.comp.out | 61 + ...groupExtendedTypesShuffleRelative.comp.out | 616 +++ ...upExtendedTypesShuffleRelativeNeg.comp.out | 61 + .../spv.subgroupExtendedTypesVote.comp.out | 377 ++ .../spv.subgroupExtendedTypesVoteNeg.comp.out | 33 + 3rdparty/glslang/Test/nonuniform.frag | 4 +- .../glslang/Test/spv.bufferhandleUvec2.frag | 32 + .../spv.subgroupExtendedTypesArithmetic.comp | 715 +++ ...pv.subgroupExtendedTypesArithmeticNeg.comp | 715 +++ .../Test/spv.subgroupExtendedTypesBallot.comp | 88 + .../spv.subgroupExtendedTypesBallotNeg.comp | 88 + .../spv.subgroupExtendedTypesClustered.comp | 255 + ...spv.subgroupExtendedTypesClusteredNeg.comp | 255 + .../spv.subgroupExtendedTypesPartitioned.comp | 291 ++ ...v.subgroupExtendedTypesPartitionedNeg.comp | 291 ++ .../Test/spv.subgroupExtendedTypesQuad.comp | 165 + .../spv.subgroupExtendedTypesQuadNeg.comp | 165 + .../spv.subgroupExtendedTypesShuffle.comp | 95 + .../spv.subgroupExtendedTypesShuffleNeg.comp | 95 + ....subgroupExtendedTypesShuffleRelative.comp | 95 + ...bgroupExtendedTypesShuffleRelativeNeg.comp | 95 + .../Test/spv.subgroupExtendedTypesVote.comp | 66 + .../spv.subgroupExtendedTypesVoteNeg.comp | 66 + 3rdparty/glslang/glslang/CMakeLists.txt | 17 +- 3rdparty/glslang/glslang/Include/Types.h | 7 + .../glslang/glslang/Include/intermediate.h | 4 + .../glslang/MachineIndependent/Initialize.cpp | 1170 +---- .../MachineIndependent/ParseHelper.cpp | 77 +- .../glslang/MachineIndependent/Versions.cpp | 25 +- .../glslang/MachineIndependent/Versions.h | 8 +- .../MachineIndependent/localintermediate.h | 13 +- .../glslang/OSDependent/Web/CMakeLists.txt | 24 + .../glslang/OSDependent/Web/glslang.after.js | 26 + .../{ => OSDependent/Web}/glslang.js.cpp | 11 +- .../{ => OSDependent/Web}/glslang.pre.js | 0 3rdparty/glslang/glslang/Public/ShaderLang.h | 1 + 3rdparty/glslang/glslang/updateGrammar | 2 +- 3rdparty/glslang/gtests/Spv.FromFile.cpp | 17 + 3rdparty/glslang/hlsl/hlslGrammar.cpp | 5 + 3rdparty/glslang/known_good.json | 4 +- 85 files changed, 16378 insertions(+), 1262 deletions(-) create mode 100755 3rdparty/glslang/Test/baseResults/spv.bufferhandleUvec2.frag.out create mode 100644 3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out create mode 100644 3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesArithmeticNeg.comp.out create mode 100644 3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out create mode 100644 3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesBallotNeg.comp.out create mode 100644 3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesBasic.comp.out create mode 100644 3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out create mode 100644 3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesClusteredNeg.comp.out create mode 100644 3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out create mode 100644 3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesPartitionedNeg.comp.out create mode 100644 3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out create mode 100644 3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesQuadNeg.comp.out create mode 100644 3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out create mode 100644 3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesShuffleNeg.comp.out create mode 100644 3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out create mode 100644 3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesShuffleRelativeNeg.comp.out create mode 100644 3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out create mode 100644 3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesVoteNeg.comp.out create mode 100644 3rdparty/glslang/Test/spv.bufferhandleUvec2.frag create mode 100644 3rdparty/glslang/Test/spv.subgroupExtendedTypesArithmetic.comp create mode 100644 3rdparty/glslang/Test/spv.subgroupExtendedTypesArithmeticNeg.comp create mode 100644 3rdparty/glslang/Test/spv.subgroupExtendedTypesBallot.comp create mode 100644 3rdparty/glslang/Test/spv.subgroupExtendedTypesBallotNeg.comp create mode 100644 3rdparty/glslang/Test/spv.subgroupExtendedTypesClustered.comp create mode 100644 3rdparty/glslang/Test/spv.subgroupExtendedTypesClusteredNeg.comp create mode 100644 3rdparty/glslang/Test/spv.subgroupExtendedTypesPartitioned.comp create mode 100644 3rdparty/glslang/Test/spv.subgroupExtendedTypesPartitionedNeg.comp create mode 100644 3rdparty/glslang/Test/spv.subgroupExtendedTypesQuad.comp create mode 100644 3rdparty/glslang/Test/spv.subgroupExtendedTypesQuadNeg.comp create mode 100644 3rdparty/glslang/Test/spv.subgroupExtendedTypesShuffle.comp create mode 100644 3rdparty/glslang/Test/spv.subgroupExtendedTypesShuffleNeg.comp create mode 100644 3rdparty/glslang/Test/spv.subgroupExtendedTypesShuffleRelative.comp create mode 100644 3rdparty/glslang/Test/spv.subgroupExtendedTypesShuffleRelativeNeg.comp create mode 100644 3rdparty/glslang/Test/spv.subgroupExtendedTypesVote.comp create mode 100644 3rdparty/glslang/Test/spv.subgroupExtendedTypesVoteNeg.comp create mode 100644 3rdparty/glslang/glslang/OSDependent/Web/CMakeLists.txt create mode 100644 3rdparty/glslang/glslang/OSDependent/Web/glslang.after.js rename 3rdparty/glslang/glslang/{ => OSDependent/Web}/glslang.js.cpp (98%) rename 3rdparty/glslang/glslang/{ => OSDependent/Web}/glslang.pre.js (100%) diff --git a/3rdparty/glslang/BUILD.gn b/3rdparty/glslang/BUILD.gn index be9e1ab9a..55f21ad01 100644 --- a/3rdparty/glslang/BUILD.gn +++ b/3rdparty/glslang/BUILD.gn @@ -167,6 +167,7 @@ source_set("glslang_sources") { "-Wno-sign-compare", "-Wno-unused-variable", "-Wno-missing-field-initializers", + "-Wno-newline-eof", ] } if (is_win && !is_clang) { diff --git a/3rdparty/glslang/CMakeLists.txt b/3rdparty/glslang/CMakeLists.txt index 196194d17..c2adeb033 100644 --- a/3rdparty/glslang/CMakeLists.txt +++ b/3rdparty/glslang/CMakeLists.txt @@ -28,9 +28,10 @@ option(ENABLE_SPVREMAPPER "Enables building of SPVRemapper" ON) option(ENABLE_GLSLANG_BINARIES "Builds glslangValidator and spirv-remap" ON) -option(ENABLE_GLSLANG_WEB "Reduces glslang to minumum needed for web use" OFF) -option(ENABLE_EMSCRIPTEN_SINGLE_FILE "If using emscripten, enables SINGLE_FILE build" OFF) -option(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE "If using emscripten, builds to run on Node instead of Web" OFF) +option(ENABLE_GLSLANG_WEB "Reduces glslang to minimum needed for web use" OFF) +option(ENABLE_GLSLANG_WEB_DEVEL "For ENABLE_GLSLANG_WEB builds, enables compilation error messages" OFF) +option(ENABLE_EMSCRIPTEN_SINGLE_FILE "If using Emscripten, enables SINGLE_FILE build" OFF) +option(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE "If using Emscripten, builds to run on Node instead of Web" OFF) CMAKE_DEPENDENT_OPTION(ENABLE_HLSL "Enables HLSL input support" ON "NOT ENABLE_GLSLANG_WEB" OFF) @@ -70,6 +71,9 @@ endif(ENABLE_HLSL) if(ENABLE_GLSLANG_WEB) add_definitions(-DGLSLANG_WEB) + if(ENABLE_GLSLANG_WEB_DEVEL) + add_definitions(-DGLSLANG_WEB_DEVEL) + endif(ENABLE_GLSLANG_WEB_DEVEL) endif(ENABLE_GLSLANG_WEB) if(WIN32) @@ -98,38 +102,29 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "MSVC") add_compile_options(/GR-) # Disable RTTI endif() -if(ENABLE_GLSLANG_WEB) - if(EMSCRIPTEN) - add_compile_options(-Os -fno-exceptions) - add_compile_options("SHELL: -s WASM=1") - add_compile_options("SHELL: -s WASM_OBJECT_FILES=0") - add_link_options(-Os) - add_link_options("SHELL: -s FILESYSTEM=0") - add_link_options("SHELL: --llvm-lto 1") - add_link_options("SHELL: --closure 1") - add_link_options("SHELL: -s ALLOW_MEMORY_GROWTH=1") +if(EMSCRIPTEN) + add_compile_options(-Os -fno-exceptions) + add_compile_options("SHELL: -s WASM=1") + add_compile_options("SHELL: -s WASM_OBJECT_FILES=0") + add_link_options(-Os) + add_link_options("SHELL: -s FILESYSTEM=0") + add_link_options("SHELL: --llvm-lto 1") + add_link_options("SHELL: --closure 1") + add_link_options("SHELL: -s ALLOW_MEMORY_GROWTH=1") - add_link_options("SHELL: -s MODULARIZE=1") - if(ENABLE_EMSCRIPTEN_SINGLE_FILE) - add_link_options("SHELL: -s SINGLE_FILE=1") - endif(ENABLE_EMSCRIPTEN_SINGLE_FILE) - - if(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) - add_link_options("SHELL: -s ENVIRONMENT=node") - add_link_options("SHELL: -s BINARYEN_ASYNC_COMPILATION=0") + if(ENABLE_EMSCRIPTEN_SINGLE_FILE) + add_link_options("SHELL: -s SINGLE_FILE=1") + endif(ENABLE_EMSCRIPTEN_SINGLE_FILE) +else() + if(ENABLE_GLSLANG_WEB) + if(MSVC) + add_compile_options(/Os /GR-) else() - add_link_options("SHELL: -s ENVIRONMENT=web,worker") - add_link_options("SHELL: -s EXPORT_ES6=1") + add_compile_options(-Os -fno-exceptions) + add_link_options(-Os) endif() - else() - if(MSVC) - add_compile_options(/Os /GR-) - else() - add_compile_options(-Os -fno-exceptions) - add_link_options(-Os) - endif() - endif(EMSCRIPTEN) -endif(ENABLE_GLSLANG_WEB) + endif(ENABLE_GLSLANG_WEB) +endif(EMSCRIPTEN) # Request C++11 if(${CMAKE_VERSION} VERSION_LESS 3.1) diff --git a/3rdparty/glslang/README.md b/3rdparty/glslang/README.md index 427cf5a54..67aee9df4 100755 --- a/3rdparty/glslang/README.md +++ b/3rdparty/glslang/README.md @@ -166,26 +166,30 @@ when executed from the glslang subdirectory of the glslang repository. With no arguments it builds the full grammar, and with a "web" argument, the web grammar subset (see more about the web subset in the next section). -### WASM for the the Web +### Building to WASM for the Web and Node -Use the steps in [Build Steps](#build-steps), which following notes/exceptions: +Use the steps in [Build Steps](#build-steps), with the following notes/exceptions: * For building the web subset of core glslang: - + `m4` also needs a `-DGLSLANG_WEB` argument, or simply execute `updateGrammar web` from the glslang subdirectory - + turn off the CMAKE options for `BUILD_TESTING`, `ENABLE_OPT`, and `INSTALL_GTEST`, - while turning on `ENABLE_GLSLANG_WEB` + + execute `updateGrammar web` from the glslang subdirectory + (or if using your own scripts, `m4` needs a `-DGLSLANG_WEB` argument) + + set `-DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF` + + turn on `-DENABLE_GLSLANG_WEB=ON` + + optionally, for GLSL compilation error messages, turn on `-DENABLE_GLSLANG_WEB_DEVEL=ON` * `emsdk` needs to be present in your executable search path, *PATH* for Bash-like enivironments - + Instructions located - [here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install) -* Do not checkout SPIRV-Tools into `External` - + Does not work correctly with emscripten out of the box and we don't want it - in the build anyway. *TBD* Have build ignore SPIRV-Tools for web build -* Wrap call to `cmake` using `emconfigure` with ENABLE_GLSLANG_WEB=ON: - + e.g. For Linux, `emconfigure cmake -DCMAKE_BUILD_TYPE=Release - -DENABLE_GLSLANG_WEB=ON -DCMAKE_INSTALL_PREFIX="$(pwd)/install" ..` -* To get a 'true' minimized build, make sure to use `brotli` to compress the .js + + [Instructions located + here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install) +* Wrap cmake call: `emcmake cmake` +* To get a fully minimized build, make sure to use `brotli` to compress the .js and .wasm files +Example: + +```sh +emcmake cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_WEB=ON \ + -DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF .. +``` + Testing ------- diff --git a/3rdparty/glslang/SPIRV/GLSL.ext.KHR.h b/3rdparty/glslang/SPIRV/GLSL.ext.KHR.h index 1140bef53..ac26a0540 100644 --- a/3rdparty/glslang/SPIRV/GLSL.ext.KHR.h +++ b/3rdparty/glslang/SPIRV/GLSL.ext.KHR.h @@ -40,7 +40,7 @@ static const char* const E_SPV_KHR_8bit_storage = "SPV_KHR_8bit_ static const char* const E_SPV_KHR_storage_buffer_storage_class = "SPV_KHR_storage_buffer_storage_class"; static const char* const E_SPV_KHR_post_depth_coverage = "SPV_KHR_post_depth_coverage"; static const char* const E_SPV_KHR_vulkan_memory_model = "SPV_KHR_vulkan_memory_model"; -static const char* const E_SPV_EXT_physical_storage_buffer = "SPV_EXT_physical_storage_buffer"; +static const char* const E_SPV_KHR_physical_storage_buffer = "SPV_KHR_physical_storage_buffer"; static const char* const E_SPV_EXT_fragment_shader_interlock = "SPV_EXT_fragment_shader_interlock"; static const char* const E_SPV_KHR_shader_clock = "SPV_KHR_shader_clock"; diff --git a/3rdparty/glslang/SPIRV/GlslangToSpv.cpp b/3rdparty/glslang/SPIRV/GlslangToSpv.cpp index 2c9fcd81a..afb405e40 100644 --- a/3rdparty/glslang/SPIRV/GlslangToSpv.cpp +++ b/3rdparty/glslang/SPIRV/GlslangToSpv.cpp @@ -217,11 +217,6 @@ protected: bool isTrivial(const glslang::TIntermTyped* node); spv::Id createShortCircuit(glslang::TOperator, glslang::TIntermTyped& left, glslang::TIntermTyped& right); spv::Id getExtBuiltins(const char* name); - void addPre13Extension(const char* ext) - { - if (builder.getSpvVersion() < glslang::EShTargetSpv_1_3) - builder.addExtension(ext); - } std::pair getForcedType(spv::BuiltIn, const glslang::TType&); spv::Id translateForcedType(spv::Id object); spv::Id createCompositeConstruct(spv::Id typeId, std::vector constituents); @@ -517,7 +512,7 @@ spv::Decoration TGlslangToSpvTraverser::TranslateNonUniformDecoration(const glsl { #ifndef GLSLANG_WEB if (qualifier.isNonUniform()) { - builder.addExtension("SPV_EXT_descriptor_indexing"); + builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::CapabilityShaderNonUniformEXT); return spv::DecorationNonUniformEXT; } else @@ -701,7 +696,7 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI glslangIntermediate->getStage() == EShLangTessControl || glslangIntermediate->getStage() == EShLangTessEvaluation) { - builder.addExtension(spv::E_SPV_EXT_shader_viewport_index_layer); + builder.addIncorporatedExtension(spv::E_SPV_EXT_shader_viewport_index_layer, spv::Spv_1_5); builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT); } return spv::BuiltInViewportIndex; @@ -726,23 +721,23 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI glslangIntermediate->getStage() == EShLangTessControl || glslangIntermediate->getStage() == EShLangTessEvaluation) { - builder.addExtension(spv::E_SPV_EXT_shader_viewport_index_layer); + builder.addIncorporatedExtension(spv::E_SPV_EXT_shader_viewport_index_layer, spv::Spv_1_5); builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT); } return spv::BuiltInLayer; case glslang::EbvBaseVertex: - addPre13Extension(spv::E_SPV_KHR_shader_draw_parameters); + builder.addIncorporatedExtension(spv::E_SPV_KHR_shader_draw_parameters, spv::Spv_1_3); builder.addCapability(spv::CapabilityDrawParameters); return spv::BuiltInBaseVertex; case glslang::EbvBaseInstance: - addPre13Extension(spv::E_SPV_KHR_shader_draw_parameters); + builder.addIncorporatedExtension(spv::E_SPV_KHR_shader_draw_parameters, spv::Spv_1_3); builder.addCapability(spv::CapabilityDrawParameters); return spv::BuiltInBaseInstance; case glslang::EbvDrawId: - addPre13Extension(spv::E_SPV_KHR_shader_draw_parameters); + builder.addIncorporatedExtension(spv::E_SPV_KHR_shader_draw_parameters, spv::Spv_1_3); builder.addCapability(spv::CapabilityDrawParameters); return spv::BuiltInDrawIndex; @@ -874,12 +869,12 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI return spv::BuiltInBaryCoordPullModelAMD; case glslang::EbvDeviceIndex: - addPre13Extension(spv::E_SPV_KHR_device_group); + builder.addIncorporatedExtension(spv::E_SPV_KHR_device_group, spv::Spv_1_3); builder.addCapability(spv::CapabilityDeviceGroup); return spv::BuiltInDeviceIndex; case glslang::EbvViewIndex: - addPre13Extension(spv::E_SPV_KHR_multiview); + builder.addIncorporatedExtension(spv::E_SPV_KHR_multiview, spv::Spv_1_3); builder.addCapability(spv::CapabilityMultiView); return spv::BuiltInViewIndex; @@ -1192,7 +1187,7 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T } if (glslangIntermediate->usingStorageBuffer() && type.getQualifier().storage == glslang::EvqBuffer) { - addPre13Extension(spv::E_SPV_KHR_storage_buffer_storage_class); + builder.addIncorporatedExtension(spv::E_SPV_KHR_storage_buffer_storage_class, spv::Spv_1_3); return spv::StorageClassStorageBuffer; } @@ -1253,13 +1248,13 @@ void TGlslangToSpvTraverser::addIndirectionIndexCapabilities(const glslang::TTyp // assume a dynamically uniform index if (baseType.getBasicType() == glslang::EbtSampler) { if (baseType.getQualifier().hasAttachment()) { - builder.addExtension("SPV_EXT_descriptor_indexing"); + builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::CapabilityInputAttachmentArrayDynamicIndexingEXT); } else if (baseType.isImage() && baseType.getSampler().isBuffer()) { - builder.addExtension("SPV_EXT_descriptor_indexing"); + builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::CapabilityStorageTexelBufferArrayDynamicIndexingEXT); } else if (baseType.isTexture() && baseType.getSampler().isBuffer()) { - builder.addExtension("SPV_EXT_descriptor_indexing"); + builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::CapabilityUniformTexelBufferArrayDynamicIndexingEXT); } } @@ -1404,13 +1399,13 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl if (glslangIntermediate->usingPhysicalStorageBuffer()) { addressingModel = spv::AddressingModelPhysicalStorageBuffer64EXT; - builder.addExtension(spv::E_SPV_EXT_physical_storage_buffer); + builder.addIncorporatedExtension(spv::E_SPV_KHR_physical_storage_buffer, spv::Spv_1_5); builder.addCapability(spv::CapabilityPhysicalStorageBufferAddressesEXT); }; if (glslangIntermediate->usingVulkanMemoryModel()) { memoryModel = spv::MemoryModelVulkanKHR; builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); - builder.addExtension(spv::E_SPV_KHR_vulkan_memory_model); + builder.addIncorporatedExtension(spv::E_SPV_KHR_vulkan_memory_model, spv::Spv_1_5); } builder.setMemoryModel(addressingModel, memoryModel); @@ -3242,11 +3237,11 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* switch (storageClass) { case spv::StorageClassInput: case spv::StorageClassOutput: - addPre13Extension(spv::E_SPV_KHR_16bit_storage); + builder.addIncorporatedExtension(spv::E_SPV_KHR_16bit_storage, spv::Spv_1_3); builder.addCapability(spv::CapabilityStorageInputOutput16); break; case spv::StorageClassUniform: - addPre13Extension(spv::E_SPV_KHR_16bit_storage); + builder.addIncorporatedExtension(spv::E_SPV_KHR_16bit_storage, spv::Spv_1_3); if (node->getType().getQualifier().storage == glslang::EvqBuffer) builder.addCapability(spv::CapabilityStorageUniformBufferBlock16); else @@ -3254,12 +3249,12 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* break; #ifndef GLSLANG_WEB case spv::StorageClassPushConstant: - addPre13Extension(spv::E_SPV_KHR_16bit_storage); + builder.addIncorporatedExtension(spv::E_SPV_KHR_16bit_storage, spv::Spv_1_3); builder.addCapability(spv::CapabilityStoragePushConstant16); break; case spv::StorageClassStorageBuffer: case spv::StorageClassPhysicalStorageBufferEXT: - addPre13Extension(spv::E_SPV_KHR_16bit_storage); + builder.addIncorporatedExtension(spv::E_SPV_KHR_16bit_storage, spv::Spv_1_3); builder.addCapability(spv::CapabilityStorageUniformBufferBlock16); break; #endif @@ -3274,13 +3269,13 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* if (node->getType().contains8BitInt()) { if (storageClass == spv::StorageClassPushConstant) { - builder.addExtension(spv::E_SPV_KHR_8bit_storage); + builder.addIncorporatedExtension(spv::E_SPV_KHR_8bit_storage, spv::Spv_1_5); builder.addCapability(spv::CapabilityStoragePushConstant8); } else if (storageClass == spv::StorageClassUniform) { - builder.addExtension(spv::E_SPV_KHR_8bit_storage); + builder.addIncorporatedExtension(spv::E_SPV_KHR_8bit_storage, spv::Spv_1_5); builder.addCapability(spv::CapabilityUniformAndStorageBuffer8BitAccess); } else if (storageClass == spv::StorageClassStorageBuffer) { - builder.addExtension(spv::E_SPV_KHR_8bit_storage); + builder.addIncorporatedExtension(spv::E_SPV_KHR_8bit_storage, spv::Spv_1_5); builder.addCapability(spv::CapabilityStorageBuffer8BitAccess); } else { builder.addCapability(spv::CapabilityInt8); @@ -3537,7 +3532,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty else { #ifndef GLSLANG_WEB if (!lastBufferBlockMember) { - builder.addExtension("SPV_EXT_descriptor_indexing"); + builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::CapabilityRuntimeDescriptorArrayEXT); } spvType = builder.makeRuntimeArray(spvType); @@ -6278,6 +6273,10 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora case glslang::EOpConvPtrToUint64: convOp = spv::OpConvertPtrToU; break; + case glslang::EOpConvPtrToUvec2: + case glslang::EOpConvUvec2ToPtr: + convOp = spv::OpBitcast; + break; #endif default: @@ -6837,8 +6836,9 @@ spv::Id TGlslangToSpvTraverser::createSubgroupOperation(glslang::TOperator op, s default: assert(0 && "Unhandled subgroup operation!"); } - const bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64; - const bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble; + + const bool isUnsigned = isTypeUnsignedInt(typeProxy); + const bool isFloat = isTypeFloat(typeProxy); const bool isBool = typeProxy == glslang::EbtBool; spv::Op opCode = spv::OpNop; diff --git a/3rdparty/glslang/SPIRV/SpvBuilder.h b/3rdparty/glslang/SPIRV/SpvBuilder.h index a99a0c30b..bef7d3db1 100644 --- a/3rdparty/glslang/SPIRV/SpvBuilder.h +++ b/3rdparty/glslang/SPIRV/SpvBuilder.h @@ -67,6 +67,7 @@ typedef enum { Spv_1_2 = (1 << 16) | (2 << 8), Spv_1_3 = (1 << 16) | (3 << 8), Spv_1_4 = (1 << 16) | (4 << 8), + Spv_1_5 = (1 << 16) | (5 << 8), } SpvVersion; class Builder { @@ -105,6 +106,11 @@ public: void addModuleProcessed(const std::string& p) { moduleProcesses.push_back(p.c_str()); } void setEmitOpLines() { emitOpLines = true; } void addExtension(const char* ext) { extensions.insert(ext); } + void addIncorporatedExtension(const char* ext, SpvVersion incorporatedVersion) + { + if (getSpvVersion() < static_cast(incorporatedVersion)) + addExtension(ext); + } void addInclude(const std::string& name, const std::string& text) { spv::Id incId = getStringId(name); diff --git a/3rdparty/glslang/SPIRV/SpvPostProcess.cpp b/3rdparty/glslang/SPIRV/SpvPostProcess.cpp index 18765a317..832ee3ef7 100644 --- a/3rdparty/glslang/SPIRV/SpvPostProcess.cpp +++ b/3rdparty/glslang/SPIRV/SpvPostProcess.cpp @@ -363,12 +363,12 @@ void Builder::postProcess() Instruction* type = groupedTypes[OpTypePointer][t]; if (type->getImmediateOperand(0) == (unsigned)StorageClassPhysicalStorageBufferEXT) { if (containsType(type->getIdOperand(1), OpTypeInt, 8)) { - addExtension(spv::E_SPV_KHR_8bit_storage); + addIncorporatedExtension(spv::E_SPV_KHR_8bit_storage, spv::Spv_1_5); addCapability(spv::CapabilityStorageBuffer8BitAccess); } if (containsType(type->getIdOperand(1), OpTypeInt, 16) || containsType(type->getIdOperand(1), OpTypeFloat, 16)) { - addExtension(spv::E_SPV_KHR_16bit_storage); + addIncorporatedExtension(spv::E_SPV_KHR_16bit_storage, spv::Spv_1_3); addCapability(spv::CapabilityStorageBuffer16BitAccess); } } diff --git a/3rdparty/glslang/SPIRV/spirv.hpp b/3rdparty/glslang/SPIRV/spirv.hpp index 59fdecee8..1e96f7b4a 100644 --- a/3rdparty/glslang/SPIRV/spirv.hpp +++ b/3rdparty/glslang/SPIRV/spirv.hpp @@ -91,6 +91,7 @@ enum AddressingModel { AddressingModelLogical = 0, AddressingModelPhysical32 = 1, AddressingModelPhysical64 = 2, + AddressingModelPhysicalStorageBuffer64 = 5348, AddressingModelPhysicalStorageBuffer64EXT = 5348, AddressingModelMax = 0x7fffffff, }; @@ -99,6 +100,7 @@ enum MemoryModel { MemoryModelSimple = 0, MemoryModelGLSL450 = 1, MemoryModelOpenCL = 2, + MemoryModelVulkan = 3, MemoryModelVulkanKHR = 3, MemoryModelMax = 0x7fffffff, }; @@ -183,6 +185,7 @@ enum StorageClass { StorageClassHitAttributeNV = 5339, StorageClassIncomingRayPayloadNV = 5342, StorageClassShaderRecordBufferNV = 5343, + StorageClassPhysicalStorageBuffer = 5349, StorageClassPhysicalStorageBufferEXT = 5349, StorageClassMax = 0x7fffffff, }; @@ -311,9 +314,13 @@ enum ImageOperandsShift { ImageOperandsConstOffsetsShift = 5, ImageOperandsSampleShift = 6, ImageOperandsMinLodShift = 7, + ImageOperandsMakeTexelAvailableShift = 8, ImageOperandsMakeTexelAvailableKHRShift = 8, + ImageOperandsMakeTexelVisibleShift = 9, ImageOperandsMakeTexelVisibleKHRShift = 9, + ImageOperandsNonPrivateTexelShift = 10, ImageOperandsNonPrivateTexelKHRShift = 10, + ImageOperandsVolatileTexelShift = 11, ImageOperandsVolatileTexelKHRShift = 11, ImageOperandsSignExtendShift = 12, ImageOperandsZeroExtendShift = 13, @@ -330,9 +337,13 @@ enum ImageOperandsMask { ImageOperandsConstOffsetsMask = 0x00000020, ImageOperandsSampleMask = 0x00000040, ImageOperandsMinLodMask = 0x00000080, + ImageOperandsMakeTexelAvailableMask = 0x00000100, ImageOperandsMakeTexelAvailableKHRMask = 0x00000100, + ImageOperandsMakeTexelVisibleMask = 0x00000200, ImageOperandsMakeTexelVisibleKHRMask = 0x00000200, + ImageOperandsNonPrivateTexelMask = 0x00000400, ImageOperandsNonPrivateTexelKHRMask = 0x00000400, + ImageOperandsVolatileTexelMask = 0x00000800, ImageOperandsVolatileTexelKHRMask = 0x00000800, ImageOperandsSignExtendMask = 0x00001000, ImageOperandsZeroExtendMask = 0x00002000, @@ -448,8 +459,11 @@ enum Decoration { DecorationPerViewNV = 5272, DecorationPerTaskNV = 5273, DecorationPerVertexNV = 5285, + DecorationNonUniform = 5300, DecorationNonUniformEXT = 5300, + DecorationRestrictPointer = 5355, DecorationRestrictPointerEXT = 5355, + DecorationAliasedPointer = 5356, DecorationAliasedPointerEXT = 5356, DecorationCounterBuffer = 5634, DecorationHlslCounterBufferGOOGLE = 5634, @@ -630,8 +644,11 @@ enum MemorySemanticsShift { MemorySemanticsCrossWorkgroupMemoryShift = 9, MemorySemanticsAtomicCounterMemoryShift = 10, MemorySemanticsImageMemoryShift = 11, + MemorySemanticsOutputMemoryShift = 12, MemorySemanticsOutputMemoryKHRShift = 12, + MemorySemanticsMakeAvailableShift = 13, MemorySemanticsMakeAvailableKHRShift = 13, + MemorySemanticsMakeVisibleShift = 14, MemorySemanticsMakeVisibleKHRShift = 14, MemorySemanticsVolatileShift = 15, MemorySemanticsMax = 0x7fffffff, @@ -649,8 +666,11 @@ enum MemorySemanticsMask { MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200, MemorySemanticsAtomicCounterMemoryMask = 0x00000400, MemorySemanticsImageMemoryMask = 0x00000800, + MemorySemanticsOutputMemoryMask = 0x00001000, MemorySemanticsOutputMemoryKHRMask = 0x00001000, + MemorySemanticsMakeAvailableMask = 0x00002000, MemorySemanticsMakeAvailableKHRMask = 0x00002000, + MemorySemanticsMakeVisibleMask = 0x00004000, MemorySemanticsMakeVisibleKHRMask = 0x00004000, MemorySemanticsVolatileMask = 0x00008000, }; @@ -659,8 +679,11 @@ enum MemoryAccessShift { MemoryAccessVolatileShift = 0, MemoryAccessAlignedShift = 1, MemoryAccessNontemporalShift = 2, + MemoryAccessMakePointerAvailableShift = 3, MemoryAccessMakePointerAvailableKHRShift = 3, + MemoryAccessMakePointerVisibleShift = 4, MemoryAccessMakePointerVisibleKHRShift = 4, + MemoryAccessNonPrivatePointerShift = 5, MemoryAccessNonPrivatePointerKHRShift = 5, MemoryAccessMax = 0x7fffffff, }; @@ -670,8 +693,11 @@ enum MemoryAccessMask { MemoryAccessVolatileMask = 0x00000001, MemoryAccessAlignedMask = 0x00000002, MemoryAccessNontemporalMask = 0x00000004, + MemoryAccessMakePointerAvailableMask = 0x00000008, MemoryAccessMakePointerAvailableKHRMask = 0x00000008, + MemoryAccessMakePointerVisibleMask = 0x00000010, MemoryAccessMakePointerVisibleKHRMask = 0x00000010, + MemoryAccessNonPrivatePointerMask = 0x00000020, MemoryAccessNonPrivatePointerKHRMask = 0x00000020, }; @@ -681,6 +707,7 @@ enum Scope { ScopeWorkgroup = 2, ScopeSubgroup = 3, ScopeInvocation = 4, + ScopeQueueFamily = 5, ScopeQueueFamilyKHR = 5, ScopeMax = 0x7fffffff, }; @@ -781,6 +808,8 @@ enum Capability { CapabilityGroupNonUniformShuffleRelative = 66, CapabilityGroupNonUniformClustered = 67, CapabilityGroupNonUniformQuad = 68, + CapabilityShaderLayer = 69, + CapabilityShaderViewportIndex = 70, CapabilitySubgroupBallotKHR = 4423, CapabilityDrawParameters = 4427, CapabilitySubgroupVoteKHR = 4431, @@ -825,21 +854,36 @@ enum Capability { CapabilityFragmentDensityEXT = 5291, CapabilityShadingRateNV = 5291, CapabilityGroupNonUniformPartitionedNV = 5297, + CapabilityShaderNonUniform = 5301, CapabilityShaderNonUniformEXT = 5301, + CapabilityRuntimeDescriptorArray = 5302, CapabilityRuntimeDescriptorArrayEXT = 5302, + CapabilityInputAttachmentArrayDynamicIndexing = 5303, CapabilityInputAttachmentArrayDynamicIndexingEXT = 5303, + CapabilityUniformTexelBufferArrayDynamicIndexing = 5304, CapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304, + CapabilityStorageTexelBufferArrayDynamicIndexing = 5305, CapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305, + CapabilityUniformBufferArrayNonUniformIndexing = 5306, CapabilityUniformBufferArrayNonUniformIndexingEXT = 5306, + CapabilitySampledImageArrayNonUniformIndexing = 5307, CapabilitySampledImageArrayNonUniformIndexingEXT = 5307, + CapabilityStorageBufferArrayNonUniformIndexing = 5308, CapabilityStorageBufferArrayNonUniformIndexingEXT = 5308, + CapabilityStorageImageArrayNonUniformIndexing = 5309, CapabilityStorageImageArrayNonUniformIndexingEXT = 5309, + CapabilityInputAttachmentArrayNonUniformIndexing = 5310, CapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310, + CapabilityUniformTexelBufferArrayNonUniformIndexing = 5311, CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311, + CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312, CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312, CapabilityRayTracingNV = 5340, + CapabilityVulkanMemoryModel = 5345, CapabilityVulkanMemoryModelKHR = 5345, + CapabilityVulkanMemoryModelDeviceScope = 5346, CapabilityVulkanMemoryModelDeviceScopeKHR = 5346, + CapabilityPhysicalStorageBufferAddresses = 5347, CapabilityPhysicalStorageBufferAddressesEXT = 5347, CapabilityComputeDerivativeGroupLinearNV = 5350, CapabilityCooperativeMatrixNV = 5357, diff --git a/3rdparty/glslang/StandAlone/StandAlone.cpp b/3rdparty/glslang/StandAlone/StandAlone.cpp index 9fa311bce..4be3a4f47 100644 --- a/3rdparty/glslang/StandAlone/StandAlone.cpp +++ b/3rdparty/glslang/StandAlone/StandAlone.cpp @@ -615,8 +615,12 @@ void ProcessArguments(std::vector>& workItem } else if (strcmp(argv[1], "spirv1.4") == 0) { TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_4; + } else if (strcmp(argv[1], "spirv1.5") == 0) { + TargetLanguage = glslang::EShTargetSpv; + TargetVersion = glslang::EShTargetSpv_1_5; } else - Error("--target-env expected one of: vulkan1.0, vulkan1.1, opengl, spirv1.0, spirv1.1, spirv1.2, or spirv1.3"); + Error("--target-env expected one of: vulkan1.0, vulkan1.1, opengl,\n" + "spirv1.0, spirv1.1, spirv1.2, spirv1.3, spirv1.4, or spirv1.5"); } bumpArg(); } else if (lowerword == "variable-name" || // synonyms @@ -1618,7 +1622,7 @@ void usage() " --stdin read from stdin instead of from a file;\n" " requires providing the shader stage using -S\n" " --target-env {vulkan1.0 | vulkan1.1 | opengl | \n" - " spirv1.0 | spirv1.1 | spirv1.2 | spirv1.3}\n" + " spirv1.0 | spirv1.1 | spirv1.2 | spirv1.3 | spirv1.4 | spirv1.5}\n" " set execution environment that emitted code\n" " will execute in (versus source language\n" " semantics selected by --client) defaults:\n" diff --git a/3rdparty/glslang/Test/430.comp b/3rdparty/glslang/Test/430.comp index 0929432ba..178b9942d 100644 --- a/3rdparty/glslang/Test/430.comp +++ b/3rdparty/glslang/Test/430.comp @@ -48,6 +48,9 @@ shared vec4 s; layout(location = 2) shared vec4 sl; // ERROR shared float fs = 4.2; // ERROR +layout(local_size_y = 1) in; +layout(local_size_y = 2) in; // ERROR, changing +layout(local_size_y = 1) in; layout(local_size_x = 2, local_size_y = 3, local_size_z = 4) out; // ERROR int arrX[gl_WorkGroupSize.x]; diff --git a/3rdparty/glslang/Test/baseResults/430.comp.out b/3rdparty/glslang/Test/baseResults/430.comp.out index ef8d19e1f..55c82388f 100644 --- a/3rdparty/glslang/Test/baseResults/430.comp.out +++ b/3rdparty/glslang/Test/baseResults/430.comp.out @@ -8,14 +8,15 @@ ERROR: 0:45: 'out' : global storage output qualifier cannot be used in a compute ERROR: 0:48: 'shared' : cannot apply layout qualifiers to a shared variable ERROR: 0:48: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers ERROR: 0:49: 'shared' : cannot initialize this type of qualifier -ERROR: 0:51: 'local_size' : can only apply to 'in' -ERROR: 0:51: 'local_size' : can only apply to 'in' -ERROR: 0:51: 'local_size' : can only apply to 'in' -ERROR: 0:65: 'assign' : l-value required "ro" (can't modify a readonly buffer) -ERROR: 0:77: '=' : cannot convert from ' temp double' to ' temp int' -ERROR: 0:81: 'input block' : not supported in this stage: compute -ERROR: 0:85: 'output block' : not supported in this stage: compute -ERROR: 16 compilation errors. No code generated. +ERROR: 0:52: 'local_size' : cannot change previously set size +ERROR: 0:54: 'local_size' : can only apply to 'in' +ERROR: 0:54: 'local_size' : can only apply to 'in' +ERROR: 0:54: 'local_size' : can only apply to 'in' +ERROR: 0:68: 'assign' : l-value required "ro" (can't modify a readonly buffer) +ERROR: 0:80: '=' : cannot convert from ' temp double' to ' temp int' +ERROR: 0:84: 'input block' : not supported in this stage: compute +ERROR: 0:88: 'output block' : not supported in this stage: compute +ERROR: 17 compilation errors. No code generated. Shader version: 430 @@ -51,77 +52,77 @@ ERROR: node is still EOpNull! 0:39 10 (const int) 0:39 true case 0:40 Barrier ( global void) -0:63 Function Definition: foo( ( global void) -0:63 Function Parameters: -0:65 Sequence -0:65 move second child to first child ( temp float) -0:65 direct index (layout( column_major shared) readonly temp float) -0:65 values: direct index for structure (layout( column_major shared) readonly buffer unsized 3-element array of float) -0:65 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer int value, layout( column_major shared) readonly buffer unsized 3-element array of float values}) -0:65 Constant: -0:65 1 (const int) -0:65 Constant: -0:65 2 (const int) -0:65 Constant: -0:65 4.700000 -0:66 array length ( temp int) -0:66 values: direct index for structure (layout( column_major shared) readonly buffer unsized 3-element array of float) -0:66 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer int value, layout( column_major shared) readonly buffer unsized 3-element array of float values}) -0:66 Constant: -0:66 1 (const int) -0:67 Barrier ( global void) -0:72 Function Definition: fooaoeu( ( global void) -0:72 Function Parameters: -0:73 Sequence -0:73 Sequence -0:73 move second child to first child ( temp 2-component vector of int) -0:73 'storePos' ( temp 2-component vector of int) -0:73 Convert uint to int ( temp 2-component vector of int) -0:73 vector swizzle ( temp 2-component vector of uint) -0:73 'gl_GlobalInvocationID' ( in 3-component vector of uint GlobalInvocationID) -0:73 Sequence -0:73 Constant: -0:73 0 (const int) -0:73 Constant: -0:73 1 (const int) -0:74 Sequence -0:74 move second child to first child ( temp double) -0:74 'localCoef' ( temp double) -0:74 Convert float to double ( temp double) -0:74 length ( global float) -0:74 divide ( temp 2-component vector of float) -0:74 Convert int to float ( temp 2-component vector of float) -0:74 subtract ( temp 2-component vector of int) -0:74 Convert uint to int ( temp 2-component vector of int) -0:74 vector swizzle ( temp 2-component vector of uint) -0:74 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) -0:74 Sequence -0:74 Constant: -0:74 0 (const int) -0:74 Constant: -0:74 1 (const int) -0:74 Constant: -0:74 8 (const int) -0:74 Constant: -0:74 8.000000 -0:75 Sequence -0:75 move second child to first child ( temp 4-component vector of double) -0:75 'aa' ( temp 4-component vector of double) -0:75 Constant: -0:75 0.400000 -0:75 0.200000 -0:75 0.300000 -0:75 0.400000 +0:66 Function Definition: foo( ( global void) +0:66 Function Parameters: +0:68 Sequence +0:68 move second child to first child ( temp float) +0:68 direct index (layout( column_major shared) readonly temp float) +0:68 values: direct index for structure (layout( column_major shared) readonly buffer unsized 3-element array of float) +0:68 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer int value, layout( column_major shared) readonly buffer unsized 3-element array of float values}) +0:68 Constant: +0:68 1 (const int) +0:68 Constant: +0:68 2 (const int) +0:68 Constant: +0:68 4.700000 +0:69 array length ( temp int) +0:69 values: direct index for structure (layout( column_major shared) readonly buffer unsized 3-element array of float) +0:69 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer int value, layout( column_major shared) readonly buffer unsized 3-element array of float values}) +0:69 Constant: +0:69 1 (const int) +0:70 Barrier ( global void) +0:75 Function Definition: fooaoeu( ( global void) +0:75 Function Parameters: +0:76 Sequence 0:76 Sequence -0:76 move second child to first child ( temp double) -0:76 'globalCoef' ( temp double) -0:76 Constant: -0:76 1.000000 +0:76 move second child to first child ( temp 2-component vector of int) +0:76 'storePos' ( temp 2-component vector of int) +0:76 Convert uint to int ( temp 2-component vector of int) +0:76 vector swizzle ( temp 2-component vector of uint) +0:76 'gl_GlobalInvocationID' ( in 3-component vector of uint GlobalInvocationID) +0:76 Sequence +0:76 Constant: +0:76 0 (const int) +0:76 Constant: +0:76 1 (const int) +0:77 Sequence +0:77 move second child to first child ( temp double) +0:77 'localCoef' ( temp double) +0:77 Convert float to double ( temp double) +0:77 length ( global float) +0:77 divide ( temp 2-component vector of float) +0:77 Convert int to float ( temp 2-component vector of float) +0:77 subtract ( temp 2-component vector of int) +0:77 Convert uint to int ( temp 2-component vector of int) +0:77 vector swizzle ( temp 2-component vector of uint) +0:77 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) +0:77 Sequence +0:77 Constant: +0:77 0 (const int) +0:77 Constant: +0:77 1 (const int) +0:77 Constant: +0:77 8 (const int) +0:77 Constant: +0:77 8.000000 0:78 Sequence -0:78 move second child to first child ( temp double) -0:78 'di' ( temp double) -0:78 Convert int to double ( temp double) -0:78 'i' ( temp int) +0:78 move second child to first child ( temp 4-component vector of double) +0:78 'aa' ( temp 4-component vector of double) +0:78 Constant: +0:78 0.400000 +0:78 0.200000 +0:78 0.300000 +0:78 0.400000 +0:79 Sequence +0:79 move second child to first child ( temp double) +0:79 'globalCoef' ( temp double) +0:79 Constant: +0:79 1.000000 +0:81 Sequence +0:81 move second child to first child ( temp double) +0:81 'di' ( temp double) +0:81 Convert int to double ( temp double) +0:81 'i' ( temp int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 2 (const uint) diff --git a/3rdparty/glslang/Test/baseResults/nonuniform.frag.out b/3rdparty/glslang/Test/baseResults/nonuniform.frag.out index 0df8cfc39..9054c2ca2 100644 --- a/3rdparty/glslang/Test/baseResults/nonuniform.frag.out +++ b/3rdparty/glslang/Test/baseResults/nonuniform.frag.out @@ -40,6 +40,13 @@ ERROR: node is still EOpNull! 0:27 2 (const int) 0:28 'nu_li' ( nonuniform temp int) 0:29 'nu_li' ( nonuniform temp int) +0:30 move second child to first child ( temp int) +0:30 'nu_li' ( nonuniform temp int) +0:30 indirect index ( nonuniform temp int) +0:30 'table' ( temp 5-element array of int) +0:30 copy object ( nonuniform temp int) +0:30 Constant: +0:30 3 (const int) 0:? Linker Objects 0:? 'nonuniformEXT' ( global int) 0:? 'nu_inv4' ( smooth nonuniform in 4-component vector of float) @@ -83,6 +90,13 @@ ERROR: node is still EOpNull! 0:27 2 (const int) 0:28 'nu_li' ( nonuniform temp int) 0:29 'nu_li' ( nonuniform temp int) +0:30 move second child to first child ( temp int) +0:30 'nu_li' ( nonuniform temp int) +0:30 indirect index ( nonuniform temp int) +0:30 'table' ( temp 5-element array of int) +0:30 copy object ( nonuniform temp int) +0:30 Constant: +0:30 3 (const int) 0:? Linker Objects 0:? 'nonuniformEXT' ( global int) 0:? 'nu_inv4' ( smooth nonuniform in 4-component vector of float) diff --git a/3rdparty/glslang/Test/baseResults/spv.bufferhandle1.frag.out b/3rdparty/glslang/Test/baseResults/spv.bufferhandle1.frag.out index 6e50c7052..8457eaca8 100644 --- a/3rdparty/glslang/Test/baseResults/spv.bufferhandle1.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.bufferhandle1.frag.out @@ -6,7 +6,7 @@ spv.bufferhandle1.frag Capability Shader Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" diff --git a/3rdparty/glslang/Test/baseResults/spv.bufferhandle10.frag.out b/3rdparty/glslang/Test/baseResults/spv.bufferhandle10.frag.out index a95dc7197..871b0177b 100644 --- a/3rdparty/glslang/Test/baseResults/spv.bufferhandle10.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.bufferhandle10.frag.out @@ -6,7 +6,7 @@ spv.bufferhandle10.frag Capability Shader Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" diff --git a/3rdparty/glslang/Test/baseResults/spv.bufferhandle11.frag.out b/3rdparty/glslang/Test/baseResults/spv.bufferhandle11.frag.out index 3469715be..6f3cbe158 100644 --- a/3rdparty/glslang/Test/baseResults/spv.bufferhandle11.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.bufferhandle11.frag.out @@ -9,8 +9,8 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to Capability Shader Capability StorageBuffer8BitAccess Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_8bit_storage" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/3rdparty/glslang/Test/baseResults/spv.bufferhandle12.frag.out b/3rdparty/glslang/Test/baseResults/spv.bufferhandle12.frag.out index 6c20f02c8..1808c5fad 100644 --- a/3rdparty/glslang/Test/baseResults/spv.bufferhandle12.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.bufferhandle12.frag.out @@ -9,8 +9,8 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to Capability Shader Capability StorageUniformBufferBlock16 Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_16bit_storage" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/3rdparty/glslang/Test/baseResults/spv.bufferhandle13.frag.out b/3rdparty/glslang/Test/baseResults/spv.bufferhandle13.frag.out index 1231cf679..7b83210a2 100644 --- a/3rdparty/glslang/Test/baseResults/spv.bufferhandle13.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.bufferhandle13.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle13.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/3rdparty/glslang/Test/baseResults/spv.bufferhandle14.frag.out b/3rdparty/glslang/Test/baseResults/spv.bufferhandle14.frag.out index 940793d3a..b44391a3e 100644 --- a/3rdparty/glslang/Test/baseResults/spv.bufferhandle14.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.bufferhandle14.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle14.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" diff --git a/3rdparty/glslang/Test/baseResults/spv.bufferhandle15.frag.out b/3rdparty/glslang/Test/baseResults/spv.bufferhandle15.frag.out index ec7064d9d..2eae28b29 100644 --- a/3rdparty/glslang/Test/baseResults/spv.bufferhandle15.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.bufferhandle15.frag.out @@ -8,7 +8,7 @@ WARNING: 0:16: '' : all default precisions are highp; use precision statements t Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/3rdparty/glslang/Test/baseResults/spv.bufferhandle16.frag.out b/3rdparty/glslang/Test/baseResults/spv.bufferhandle16.frag.out index 16e69d1d2..235559183 100644 --- a/3rdparty/glslang/Test/baseResults/spv.bufferhandle16.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.bufferhandle16.frag.out @@ -6,7 +6,7 @@ spv.bufferhandle16.frag Capability Shader Capability Int64 Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" diff --git a/3rdparty/glslang/Test/baseResults/spv.bufferhandle18.frag.out b/3rdparty/glslang/Test/baseResults/spv.bufferhandle18.frag.out index 567295d30..6d2178df7 100644 --- a/3rdparty/glslang/Test/baseResults/spv.bufferhandle18.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.bufferhandle18.frag.out @@ -6,7 +6,7 @@ spv.bufferhandle18.frag Capability Shader Capability Int64 Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" diff --git a/3rdparty/glslang/Test/baseResults/spv.bufferhandle2.frag.out b/3rdparty/glslang/Test/baseResults/spv.bufferhandle2.frag.out index 8fee6db6b..728bee383 100644 --- a/3rdparty/glslang/Test/baseResults/spv.bufferhandle2.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.bufferhandle2.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle2.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/3rdparty/glslang/Test/baseResults/spv.bufferhandle3.frag.out b/3rdparty/glslang/Test/baseResults/spv.bufferhandle3.frag.out index c02c34cf8..b888fe422 100644 --- a/3rdparty/glslang/Test/baseResults/spv.bufferhandle3.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.bufferhandle3.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle3.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/3rdparty/glslang/Test/baseResults/spv.bufferhandle4.frag.out b/3rdparty/glslang/Test/baseResults/spv.bufferhandle4.frag.out index 3f568b0f0..e5a4f5d3c 100644 --- a/3rdparty/glslang/Test/baseResults/spv.bufferhandle4.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.bufferhandle4.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle4.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/3rdparty/glslang/Test/baseResults/spv.bufferhandle5.frag.out b/3rdparty/glslang/Test/baseResults/spv.bufferhandle5.frag.out index 3f1d21412..c663c42d7 100644 --- a/3rdparty/glslang/Test/baseResults/spv.bufferhandle5.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.bufferhandle5.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle5.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" diff --git a/3rdparty/glslang/Test/baseResults/spv.bufferhandle6.frag.out b/3rdparty/glslang/Test/baseResults/spv.bufferhandle6.frag.out index 866741f94..2a9b484cb 100644 --- a/3rdparty/glslang/Test/baseResults/spv.bufferhandle6.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.bufferhandle6.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle6.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/3rdparty/glslang/Test/baseResults/spv.bufferhandle7.frag.out b/3rdparty/glslang/Test/baseResults/spv.bufferhandle7.frag.out index d09eded3c..c5bbc5d47 100644 --- a/3rdparty/glslang/Test/baseResults/spv.bufferhandle7.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.bufferhandle7.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle7.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/3rdparty/glslang/Test/baseResults/spv.bufferhandle8.frag.out b/3rdparty/glslang/Test/baseResults/spv.bufferhandle8.frag.out index c37fa3fe6..3219734af 100644 --- a/3rdparty/glslang/Test/baseResults/spv.bufferhandle8.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.bufferhandle8.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle8.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/3rdparty/glslang/Test/baseResults/spv.bufferhandle9.frag.out b/3rdparty/glslang/Test/baseResults/spv.bufferhandle9.frag.out index 5b91eda91..df2b677c7 100644 --- a/3rdparty/glslang/Test/baseResults/spv.bufferhandle9.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.bufferhandle9.frag.out @@ -6,7 +6,7 @@ spv.bufferhandle9.frag Capability Shader Capability Int64 Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/3rdparty/glslang/Test/baseResults/spv.bufferhandleUvec2.frag.out b/3rdparty/glslang/Test/baseResults/spv.bufferhandleUvec2.frag.out new file mode 100755 index 000000000..1e0cbcd30 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.bufferhandleUvec2.frag.out @@ -0,0 +1,133 @@ +spv.bufferhandleUvec2.frag +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 71 + + Capability Shader + Capability PhysicalStorageBufferAddressesEXT + Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_KHR_storage_buffer_storage_class" + 1: ExtInstImport "GLSL.std.450" + MemoryModel PhysicalStorageBuffer64EXT GLSL450 + EntryPoint Fragment 4 "main" 16 19 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_EXT_buffer_reference" + SourceExtension "GL_EXT_buffer_reference_uvec2" + Name 4 "main" + Name 8 "blockType" + MemberName 8(blockType) 0 "a" + MemberName 8(blockType) 1 "b" + MemberName 8(blockType) 2 "c" + MemberName 8(blockType) 3 "d" + MemberName 8(blockType) 4 "e" + Name 13 "b1" + Name 16 "h" + Name 19 "i" + Name 34 "b2" + Name 37 "b3" + Name 46 "j" + Name 54 "carry" + Name 55 "ResType" + Name 68 "t2" + MemberName 68(t2) 0 "f" + MemberName 68(t2) 1 "g" + Name 70 "t" + MemberDecorate 8(blockType) 0 Offset 0 + MemberDecorate 8(blockType) 1 Offset 4 + MemberDecorate 8(blockType) 2 Offset 8 + MemberDecorate 8(blockType) 3 Offset 12 + MemberDecorate 8(blockType) 4 Offset 16 + Decorate 8(blockType) Block + Decorate 13(b1) DecorationAliasedPointerEXT + Decorate 16(h) Flat + Decorate 19(i) Flat + Decorate 34(b2) DecorationAliasedPointerEXT + Decorate 37(b3) DecorationAliasedPointerEXT + MemberDecorate 68(t2) 0 Offset 0 + MemberDecorate 68(t2) 1 Offset 8 + Decorate 68(t2) Block + Decorate 70(t) DescriptorSet 0 + Decorate 70(t) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + TypeForwardPointer 6 PhysicalStorageBufferEXT + 7: TypeInt 32 1 + 8(blockType): TypeStruct 7(int) 7(int) 7(int) 7(int) 7(int) + 6: TypePointer PhysicalStorageBufferEXT 8(blockType) + 9: TypeInt 32 0 + 10: 9(int) Constant 2 + 11: TypeArray 6(ptr) 10 + 12: TypePointer Function 11 + 14: TypeVector 9(int) 2 + 15: TypePointer Input 14(ivec2) + 16(h): 15(ptr) Variable Input + 19(i): 15(ptr) Variable Input + 23: 7(int) Constant 0 + 24: TypePointer Function 6(ptr) + 27: 7(int) Constant 1 + 30: TypePointer PhysicalStorageBufferEXT 7(int) + 45: TypePointer Function 14(ivec2) + 49: 9(int) Constant 0 + 50: TypePointer Function 9(int) + 53: 9(int) Constant 256 + 55(ResType): TypeStruct 9(int) 9(int) + 61: 9(int) Constant 1 + 68(t2): TypeStruct 6(ptr) 6(ptr) + 69: TypePointer StorageBuffer 68(t2) + 70(t): 69(ptr) Variable StorageBuffer + 4(main): 2 Function None 3 + 5: Label + 13(b1): 12(ptr) Variable Function + 34(b2): 24(ptr) Variable Function + 37(b3): 24(ptr) Variable Function + 46(j): 45(ptr) Variable Function + 54(carry): 50(ptr) Variable Function + 17: 14(ivec2) Load 16(h) + 18: 6(ptr) Bitcast 17 + 20: 14(ivec2) Load 19(i) + 21: 6(ptr) Bitcast 20 + 22: 11 CompositeConstruct 18 21 + Store 13(b1) 22 + 25: 24(ptr) AccessChain 13(b1) 23 + 26: 6(ptr) Load 25 + 28: 24(ptr) AccessChain 13(b1) 27 + 29: 6(ptr) Load 28 + 31: 30(ptr) AccessChain 29 27 + 32: 7(int) Load 31 Aligned 4 + 33: 30(ptr) AccessChain 26 23 + Store 33 32 Aligned 16 + 35: 14(ivec2) Load 16(h) + 36: 6(ptr) Bitcast 35 + Store 34(b2) 36 + 38: 14(ivec2) Load 19(i) + 39: 6(ptr) Bitcast 38 + Store 37(b3) 39 + 40: 6(ptr) Load 34(b2) + 41: 6(ptr) Load 37(b3) + 42: 30(ptr) AccessChain 41 27 + 43: 7(int) Load 42 Aligned 4 + 44: 30(ptr) AccessChain 40 23 + Store 44 43 Aligned 16 + 47: 6(ptr) Load 34(b2) + 48: 14(ivec2) Bitcast 47 + Store 46(j) 48 + 51: 50(ptr) AccessChain 46(j) 49 + 52: 9(int) Load 51 + 56: 55(ResType) IAddCarry 52 53 + 57: 9(int) CompositeExtract 56 1 + Store 54(carry) 57 + 58: 9(int) CompositeExtract 56 0 + 59: 50(ptr) AccessChain 46(j) 49 + Store 59 58 + 60: 9(int) Load 54(carry) + 62: 50(ptr) AccessChain 46(j) 61 + 63: 9(int) Load 62 + 64: 9(int) IAdd 63 60 + 65: 50(ptr) AccessChain 46(j) 61 + Store 65 64 + 66: 14(ivec2) Load 46(j) + 67: 6(ptr) Bitcast 66 + Store 34(b2) 67 + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/spv.coopmat.comp.out b/3rdparty/glslang/Test/baseResults/spv.coopmat.comp.out index acdcbc4fc..976c59f47 100644 --- a/3rdparty/glslang/Test/baseResults/spv.coopmat.comp.out +++ b/3rdparty/glslang/Test/baseResults/spv.coopmat.comp.out @@ -9,8 +9,8 @@ spv.coopmat.comp Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT Capability CooperativeMatrixNV - Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_16bit_storage" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" Extension "SPV_KHR_vulkan_memory_model" Extension "SPV_NV_cooperative_matrix" diff --git a/3rdparty/glslang/Test/baseResults/spv.intcoopmat.comp.out b/3rdparty/glslang/Test/baseResults/spv.intcoopmat.comp.out index 06f5623d3..a854ed553 100644 --- a/3rdparty/glslang/Test/baseResults/spv.intcoopmat.comp.out +++ b/3rdparty/glslang/Test/baseResults/spv.intcoopmat.comp.out @@ -10,8 +10,8 @@ spv.intcoopmat.comp Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT Capability CooperativeMatrixNV - Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_8bit_storage" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" Extension "SPV_KHR_vulkan_memory_model" Extension "SPV_NV_cooperative_matrix" diff --git a/3rdparty/glslang/Test/baseResults/spv.specConstant.vert.out b/3rdparty/glslang/Test/baseResults/spv.specConstant.vert.out index 931ba8d89..49bcca692 100644 --- a/3rdparty/glslang/Test/baseResults/spv.specConstant.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.specConstant.vert.out @@ -11,7 +11,7 @@ spv.specConstant.vert Source GLSL 400 Name 4 "main" Name 9 "arraySize" - Name 14 "foo(vf4[s2769];" + Name 14 "foo(vf4[s4393];" Name 13 "p" Name 17 "builtin_spec_constant(" Name 20 "color" @@ -102,10 +102,10 @@ spv.specConstant.vert Store 20(color) 46 48: 10 Load 22(ucol) Store 47(param) 48 - 49: 2 FunctionCall 14(foo(vf4[s2769];) 47(param) + 49: 2 FunctionCall 14(foo(vf4[s4393];) 47(param) Return FunctionEnd -14(foo(vf4[s2769];): 2 Function None 12 +14(foo(vf4[s4393];): 2 Function None 12 13(p): 11(ptr) FunctionParameter 15: Label 54: 24(ptr) AccessChain 53(dupUcol) 23 diff --git a/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out new file mode 100644 index 000000000..453d6fc81 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out @@ -0,0 +1,4280 @@ +spv.subgroupExtendedTypesArithmetic.comp +// Module Version 10300 +// Generated by (magic number): 80007 +// Id's are bound by 3665 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + Capability GroupNonUniform + Capability GroupNonUniformArithmetic + Capability StorageUniformBufferBlock16 + Capability StorageBuffer8BitAccess + Extension "SPV_KHR_8bit_storage" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 10 12 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" + SourceExtension "GL_KHR_shader_subgroup_arithmetic" + SourceExtension "GL_KHR_shader_subgroup_basic" + Name 4 "main" + Name 8 "invocation" + Name 10 "gl_SubgroupInvocationID" + Name 12 "gl_SubgroupSize" + Name 31 "Buffers" + MemberName 31(Buffers) 0 "i8" + MemberName 31(Buffers) 1 "u8" + MemberName 31(Buffers) 2 "i16" + MemberName 31(Buffers) 3 "u16" + MemberName 31(Buffers) 4 "i64" + MemberName 31(Buffers) 5 "u64" + MemberName 31(Buffers) 6 "f16" + Name 34 "data" + Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 11 RelaxedPrecision + Decorate 12(gl_SubgroupSize) RelaxedPrecision + Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 13 RelaxedPrecision + Decorate 14 RelaxedPrecision + Decorate 16 RelaxedPrecision + MemberDecorate 31(Buffers) 0 Offset 0 + MemberDecorate 31(Buffers) 1 Offset 4 + MemberDecorate 31(Buffers) 2 Offset 8 + MemberDecorate 31(Buffers) 3 Offset 16 + MemberDecorate 31(Buffers) 4 Offset 32 + MemberDecorate 31(Buffers) 5 Offset 64 + MemberDecorate 31(Buffers) 6 Offset 96 + Decorate 31(Buffers) Block + Decorate 34(data) DescriptorSet 0 + Decorate 34(data) Binding 0 + Decorate 3664 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypePointer Input 6(int) +10(gl_SubgroupInvocationID): 9(ptr) Variable Input +12(gl_SubgroupSize): 9(ptr) Variable Input + 15: 6(int) Constant 4 + 17: TypeInt 8 1 + 18: TypeVector 17(int8_t) 4 + 19: TypeInt 8 0 + 20: TypeVector 19(int8_t) 4 + 21: TypeInt 16 1 + 22: TypeVector 21(int16_t) 4 + 23: TypeInt 16 0 + 24: TypeVector 23(int16_t) 4 + 25: TypeInt 64 1 + 26: TypeVector 25(int64_t) 4 + 27: TypeInt 64 0 + 28: TypeVector 27(int64_t) 4 + 29: TypeFloat 16 + 30: TypeVector 29(float16_t) 4 + 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) + 32: TypeArray 31(Buffers) 15 + 33: TypePointer StorageBuffer 32 + 34(data): 33(ptr) Variable StorageBuffer + 36: TypeInt 32 1 + 37: 36(int) Constant 0 + 38: 6(int) Constant 0 + 39: TypePointer StorageBuffer 17(int8_t) + 42: 6(int) Constant 3 + 46: 36(int) Constant 1 + 47: TypeVector 17(int8_t) 2 + 48: TypePointer StorageBuffer 18(i8vec4) + 57: 36(int) Constant 2 + 58: TypeVector 17(int8_t) 3 + 67: 36(int) Constant 3 + 593: TypePointer StorageBuffer 19(int8_t) + 599: TypeVector 19(int8_t) 2 + 600: TypePointer StorageBuffer 20(i8vec4) + 609: TypeVector 19(int8_t) 3 + 1143: TypePointer StorageBuffer 21(int16_t) + 1149: TypeVector 21(int16_t) 2 + 1150: TypePointer StorageBuffer 22(i16vec4) + 1159: TypeVector 21(int16_t) 3 + 1693: TypePointer StorageBuffer 23(int16_t) + 1699: TypeVector 23(int16_t) 2 + 1700: TypePointer StorageBuffer 24(i16vec4) + 1709: TypeVector 23(int16_t) 3 + 2243: 36(int) Constant 4 + 2244: TypePointer StorageBuffer 25(int64_t) + 2250: TypeVector 25(int64_t) 2 + 2251: TypePointer StorageBuffer 26(i64vec4) + 2260: TypeVector 25(int64_t) 3 + 2794: 36(int) Constant 5 + 2795: TypePointer StorageBuffer 27(int64_t) + 2801: TypeVector 27(int64_t) 2 + 2802: TypePointer StorageBuffer 28(i64vec4) + 2811: TypeVector 27(int64_t) 3 + 3345: 36(int) Constant 6 + 3346: TypePointer StorageBuffer 29(float16_t) + 3352: TypeVector 29(float16_t) 2 + 3353: TypePointer StorageBuffer 30(f16vec4) + 3362: TypeVector 29(float16_t) 3 + 3661: TypeVector 6(int) 3 + 3662: 6(int) Constant 8 + 3663: 6(int) Constant 1 + 3664: 3661(ivec3) ConstantComposite 3662 3663 3663 + 4(main): 2 Function None 3 + 5: Label + 8(invocation): 7(ptr) Variable Function + 11: 6(int) Load 10(gl_SubgroupInvocationID) + 13: 6(int) Load 12(gl_SubgroupSize) + 14: 6(int) IAdd 11 13 + 16: 6(int) UMod 14 15 + Store 8(invocation) 16 + 35: 6(int) Load 8(invocation) + 40: 39(ptr) AccessChain 34(data) 37 37 38 + 41: 17(int8_t) Load 40 + 43: 17(int8_t) GroupNonUniformIAdd 42 Reduce 41 + 44: 39(ptr) AccessChain 34(data) 35 37 38 + Store 44 43 + 45: 6(int) Load 8(invocation) + 49: 48(ptr) AccessChain 34(data) 46 37 + 50: 18(i8vec4) Load 49 + 51: 47(i8vec2) VectorShuffle 50 50 0 1 + 52: 47(i8vec2) GroupNonUniformIAdd 42 Reduce 51 + 53: 48(ptr) AccessChain 34(data) 45 37 + 54: 18(i8vec4) Load 53 + 55: 18(i8vec4) VectorShuffle 54 52 4 5 2 3 + Store 53 55 + 56: 6(int) Load 8(invocation) + 59: 48(ptr) AccessChain 34(data) 57 37 + 60: 18(i8vec4) Load 59 + 61: 58(i8vec3) VectorShuffle 60 60 0 1 2 + 62: 58(i8vec3) GroupNonUniformIAdd 42 Reduce 61 + 63: 48(ptr) AccessChain 34(data) 56 37 + 64: 18(i8vec4) Load 63 + 65: 18(i8vec4) VectorShuffle 64 62 4 5 6 3 + Store 63 65 + 66: 6(int) Load 8(invocation) + 68: 48(ptr) AccessChain 34(data) 67 37 + 69: 18(i8vec4) Load 68 + 70: 18(i8vec4) GroupNonUniformIAdd 42 Reduce 69 + 71: 48(ptr) AccessChain 34(data) 66 37 + Store 71 70 + 72: 6(int) Load 8(invocation) + 73: 39(ptr) AccessChain 34(data) 37 37 38 + 74: 17(int8_t) Load 73 + 75: 17(int8_t) GroupNonUniformIMul 42 Reduce 74 + 76: 39(ptr) AccessChain 34(data) 72 37 38 + Store 76 75 + 77: 6(int) Load 8(invocation) + 78: 48(ptr) AccessChain 34(data) 46 37 + 79: 18(i8vec4) Load 78 + 80: 47(i8vec2) VectorShuffle 79 79 0 1 + 81: 47(i8vec2) GroupNonUniformIMul 42 Reduce 80 + 82: 48(ptr) AccessChain 34(data) 77 37 + 83: 18(i8vec4) Load 82 + 84: 18(i8vec4) VectorShuffle 83 81 4 5 2 3 + Store 82 84 + 85: 6(int) Load 8(invocation) + 86: 48(ptr) AccessChain 34(data) 57 37 + 87: 18(i8vec4) Load 86 + 88: 58(i8vec3) VectorShuffle 87 87 0 1 2 + 89: 58(i8vec3) GroupNonUniformIMul 42 Reduce 88 + 90: 48(ptr) AccessChain 34(data) 85 37 + 91: 18(i8vec4) Load 90 + 92: 18(i8vec4) VectorShuffle 91 89 4 5 6 3 + Store 90 92 + 93: 6(int) Load 8(invocation) + 94: 48(ptr) AccessChain 34(data) 67 37 + 95: 18(i8vec4) Load 94 + 96: 18(i8vec4) GroupNonUniformIMul 42 Reduce 95 + 97: 48(ptr) AccessChain 34(data) 93 37 + Store 97 96 + 98: 6(int) Load 8(invocation) + 99: 39(ptr) AccessChain 34(data) 37 37 38 + 100: 17(int8_t) Load 99 + 101: 17(int8_t) GroupNonUniformSMin 42 Reduce 100 + 102: 39(ptr) AccessChain 34(data) 98 37 38 + Store 102 101 + 103: 6(int) Load 8(invocation) + 104: 48(ptr) AccessChain 34(data) 46 37 + 105: 18(i8vec4) Load 104 + 106: 47(i8vec2) VectorShuffle 105 105 0 1 + 107: 47(i8vec2) GroupNonUniformSMin 42 Reduce 106 + 108: 48(ptr) AccessChain 34(data) 103 37 + 109: 18(i8vec4) Load 108 + 110: 18(i8vec4) VectorShuffle 109 107 4 5 2 3 + Store 108 110 + 111: 6(int) Load 8(invocation) + 112: 48(ptr) AccessChain 34(data) 57 37 + 113: 18(i8vec4) Load 112 + 114: 58(i8vec3) VectorShuffle 113 113 0 1 2 + 115: 58(i8vec3) GroupNonUniformSMin 42 Reduce 114 + 116: 48(ptr) AccessChain 34(data) 111 37 + 117: 18(i8vec4) Load 116 + 118: 18(i8vec4) VectorShuffle 117 115 4 5 6 3 + Store 116 118 + 119: 6(int) Load 8(invocation) + 120: 48(ptr) AccessChain 34(data) 67 37 + 121: 18(i8vec4) Load 120 + 122: 18(i8vec4) GroupNonUniformSMin 42 Reduce 121 + 123: 48(ptr) AccessChain 34(data) 119 37 + Store 123 122 + 124: 6(int) Load 8(invocation) + 125: 39(ptr) AccessChain 34(data) 37 37 38 + 126: 17(int8_t) Load 125 + 127: 17(int8_t) GroupNonUniformSMax 42 Reduce 126 + 128: 39(ptr) AccessChain 34(data) 124 37 38 + Store 128 127 + 129: 6(int) Load 8(invocation) + 130: 48(ptr) AccessChain 34(data) 46 37 + 131: 18(i8vec4) Load 130 + 132: 47(i8vec2) VectorShuffle 131 131 0 1 + 133: 47(i8vec2) GroupNonUniformSMax 42 Reduce 132 + 134: 48(ptr) AccessChain 34(data) 129 37 + 135: 18(i8vec4) Load 134 + 136: 18(i8vec4) VectorShuffle 135 133 4 5 2 3 + Store 134 136 + 137: 6(int) Load 8(invocation) + 138: 48(ptr) AccessChain 34(data) 57 37 + 139: 18(i8vec4) Load 138 + 140: 58(i8vec3) VectorShuffle 139 139 0 1 2 + 141: 58(i8vec3) GroupNonUniformSMax 42 Reduce 140 + 142: 48(ptr) AccessChain 34(data) 137 37 + 143: 18(i8vec4) Load 142 + 144: 18(i8vec4) VectorShuffle 143 141 4 5 6 3 + Store 142 144 + 145: 6(int) Load 8(invocation) + 146: 48(ptr) AccessChain 34(data) 67 37 + 147: 18(i8vec4) Load 146 + 148: 18(i8vec4) GroupNonUniformSMax 42 Reduce 147 + 149: 48(ptr) AccessChain 34(data) 145 37 + Store 149 148 + 150: 6(int) Load 8(invocation) + 151: 39(ptr) AccessChain 34(data) 37 37 38 + 152: 17(int8_t) Load 151 + 153: 17(int8_t) GroupNonUniformBitwiseAnd 42 Reduce 152 + 154: 39(ptr) AccessChain 34(data) 150 37 38 + Store 154 153 + 155: 6(int) Load 8(invocation) + 156: 48(ptr) AccessChain 34(data) 46 37 + 157: 18(i8vec4) Load 156 + 158: 47(i8vec2) VectorShuffle 157 157 0 1 + 159: 47(i8vec2) GroupNonUniformBitwiseAnd 42 Reduce 158 + 160: 48(ptr) AccessChain 34(data) 155 37 + 161: 18(i8vec4) Load 160 + 162: 18(i8vec4) VectorShuffle 161 159 4 5 2 3 + Store 160 162 + 163: 6(int) Load 8(invocation) + 164: 48(ptr) AccessChain 34(data) 57 37 + 165: 18(i8vec4) Load 164 + 166: 58(i8vec3) VectorShuffle 165 165 0 1 2 + 167: 58(i8vec3) GroupNonUniformBitwiseAnd 42 Reduce 166 + 168: 48(ptr) AccessChain 34(data) 163 37 + 169: 18(i8vec4) Load 168 + 170: 18(i8vec4) VectorShuffle 169 167 4 5 6 3 + Store 168 170 + 171: 6(int) Load 8(invocation) + 172: 48(ptr) AccessChain 34(data) 67 37 + 173: 18(i8vec4) Load 172 + 174: 18(i8vec4) GroupNonUniformBitwiseAnd 42 Reduce 173 + 175: 48(ptr) AccessChain 34(data) 171 37 + Store 175 174 + 176: 6(int) Load 8(invocation) + 177: 39(ptr) AccessChain 34(data) 37 37 38 + 178: 17(int8_t) Load 177 + 179: 17(int8_t) GroupNonUniformBitwiseOr 42 Reduce 178 + 180: 39(ptr) AccessChain 34(data) 176 37 38 + Store 180 179 + 181: 6(int) Load 8(invocation) + 182: 48(ptr) AccessChain 34(data) 46 37 + 183: 18(i8vec4) Load 182 + 184: 47(i8vec2) VectorShuffle 183 183 0 1 + 185: 47(i8vec2) GroupNonUniformBitwiseOr 42 Reduce 184 + 186: 48(ptr) AccessChain 34(data) 181 37 + 187: 18(i8vec4) Load 186 + 188: 18(i8vec4) VectorShuffle 187 185 4 5 2 3 + Store 186 188 + 189: 6(int) Load 8(invocation) + 190: 48(ptr) AccessChain 34(data) 57 37 + 191: 18(i8vec4) Load 190 + 192: 58(i8vec3) VectorShuffle 191 191 0 1 2 + 193: 58(i8vec3) GroupNonUniformBitwiseOr 42 Reduce 192 + 194: 48(ptr) AccessChain 34(data) 189 37 + 195: 18(i8vec4) Load 194 + 196: 18(i8vec4) VectorShuffle 195 193 4 5 6 3 + Store 194 196 + 197: 6(int) Load 8(invocation) + 198: 48(ptr) AccessChain 34(data) 67 37 + 199: 18(i8vec4) Load 198 + 200: 18(i8vec4) GroupNonUniformBitwiseOr 42 Reduce 199 + 201: 48(ptr) AccessChain 34(data) 197 37 + Store 201 200 + 202: 6(int) Load 8(invocation) + 203: 39(ptr) AccessChain 34(data) 37 37 38 + 204: 17(int8_t) Load 203 + 205: 17(int8_t) GroupNonUniformBitwiseXor 42 Reduce 204 + 206: 39(ptr) AccessChain 34(data) 202 37 38 + Store 206 205 + 207: 6(int) Load 8(invocation) + 208: 48(ptr) AccessChain 34(data) 46 37 + 209: 18(i8vec4) Load 208 + 210: 47(i8vec2) VectorShuffle 209 209 0 1 + 211: 47(i8vec2) GroupNonUniformBitwiseXor 42 Reduce 210 + 212: 48(ptr) AccessChain 34(data) 207 37 + 213: 18(i8vec4) Load 212 + 214: 18(i8vec4) VectorShuffle 213 211 4 5 2 3 + Store 212 214 + 215: 6(int) Load 8(invocation) + 216: 48(ptr) AccessChain 34(data) 57 37 + 217: 18(i8vec4) Load 216 + 218: 58(i8vec3) VectorShuffle 217 217 0 1 2 + 219: 58(i8vec3) GroupNonUniformBitwiseXor 42 Reduce 218 + 220: 48(ptr) AccessChain 34(data) 215 37 + 221: 18(i8vec4) Load 220 + 222: 18(i8vec4) VectorShuffle 221 219 4 5 6 3 + Store 220 222 + 223: 6(int) Load 8(invocation) + 224: 48(ptr) AccessChain 34(data) 67 37 + 225: 18(i8vec4) Load 224 + 226: 18(i8vec4) GroupNonUniformBitwiseXor 42 Reduce 225 + 227: 48(ptr) AccessChain 34(data) 223 37 + Store 227 226 + 228: 6(int) Load 8(invocation) + 229: 39(ptr) AccessChain 34(data) 37 37 38 + 230: 17(int8_t) Load 229 + 231: 17(int8_t) GroupNonUniformIAdd 42 InclusiveScan 230 + 232: 39(ptr) AccessChain 34(data) 228 37 38 + Store 232 231 + 233: 6(int) Load 8(invocation) + 234: 48(ptr) AccessChain 34(data) 46 37 + 235: 18(i8vec4) Load 234 + 236: 47(i8vec2) VectorShuffle 235 235 0 1 + 237: 47(i8vec2) GroupNonUniformIAdd 42 InclusiveScan 236 + 238: 48(ptr) AccessChain 34(data) 233 37 + 239: 18(i8vec4) Load 238 + 240: 18(i8vec4) VectorShuffle 239 237 4 5 2 3 + Store 238 240 + 241: 6(int) Load 8(invocation) + 242: 48(ptr) AccessChain 34(data) 57 37 + 243: 18(i8vec4) Load 242 + 244: 58(i8vec3) VectorShuffle 243 243 0 1 2 + 245: 58(i8vec3) GroupNonUniformIAdd 42 InclusiveScan 244 + 246: 48(ptr) AccessChain 34(data) 241 37 + 247: 18(i8vec4) Load 246 + 248: 18(i8vec4) VectorShuffle 247 245 4 5 6 3 + Store 246 248 + 249: 6(int) Load 8(invocation) + 250: 48(ptr) AccessChain 34(data) 67 37 + 251: 18(i8vec4) Load 250 + 252: 18(i8vec4) GroupNonUniformIAdd 42 InclusiveScan 251 + 253: 48(ptr) AccessChain 34(data) 249 37 + Store 253 252 + 254: 6(int) Load 8(invocation) + 255: 39(ptr) AccessChain 34(data) 37 37 38 + 256: 17(int8_t) Load 255 + 257: 17(int8_t) GroupNonUniformIMul 42 InclusiveScan 256 + 258: 39(ptr) AccessChain 34(data) 254 37 38 + Store 258 257 + 259: 6(int) Load 8(invocation) + 260: 48(ptr) AccessChain 34(data) 46 37 + 261: 18(i8vec4) Load 260 + 262: 47(i8vec2) VectorShuffle 261 261 0 1 + 263: 47(i8vec2) GroupNonUniformIMul 42 InclusiveScan 262 + 264: 48(ptr) AccessChain 34(data) 259 37 + 265: 18(i8vec4) Load 264 + 266: 18(i8vec4) VectorShuffle 265 263 4 5 2 3 + Store 264 266 + 267: 6(int) Load 8(invocation) + 268: 48(ptr) AccessChain 34(data) 57 37 + 269: 18(i8vec4) Load 268 + 270: 58(i8vec3) VectorShuffle 269 269 0 1 2 + 271: 58(i8vec3) GroupNonUniformIMul 42 InclusiveScan 270 + 272: 48(ptr) AccessChain 34(data) 267 37 + 273: 18(i8vec4) Load 272 + 274: 18(i8vec4) VectorShuffle 273 271 4 5 6 3 + Store 272 274 + 275: 6(int) Load 8(invocation) + 276: 48(ptr) AccessChain 34(data) 67 37 + 277: 18(i8vec4) Load 276 + 278: 18(i8vec4) GroupNonUniformIMul 42 InclusiveScan 277 + 279: 48(ptr) AccessChain 34(data) 275 37 + Store 279 278 + 280: 6(int) Load 8(invocation) + 281: 39(ptr) AccessChain 34(data) 37 37 38 + 282: 17(int8_t) Load 281 + 283: 17(int8_t) GroupNonUniformSMin 42 InclusiveScan 282 + 284: 39(ptr) AccessChain 34(data) 280 37 38 + Store 284 283 + 285: 6(int) Load 8(invocation) + 286: 48(ptr) AccessChain 34(data) 46 37 + 287: 18(i8vec4) Load 286 + 288: 47(i8vec2) VectorShuffle 287 287 0 1 + 289: 47(i8vec2) GroupNonUniformSMin 42 InclusiveScan 288 + 290: 48(ptr) AccessChain 34(data) 285 37 + 291: 18(i8vec4) Load 290 + 292: 18(i8vec4) VectorShuffle 291 289 4 5 2 3 + Store 290 292 + 293: 6(int) Load 8(invocation) + 294: 48(ptr) AccessChain 34(data) 57 37 + 295: 18(i8vec4) Load 294 + 296: 58(i8vec3) VectorShuffle 295 295 0 1 2 + 297: 58(i8vec3) GroupNonUniformSMin 42 InclusiveScan 296 + 298: 48(ptr) AccessChain 34(data) 293 37 + 299: 18(i8vec4) Load 298 + 300: 18(i8vec4) VectorShuffle 299 297 4 5 6 3 + Store 298 300 + 301: 6(int) Load 8(invocation) + 302: 48(ptr) AccessChain 34(data) 67 37 + 303: 18(i8vec4) Load 302 + 304: 18(i8vec4) GroupNonUniformSMin 42 InclusiveScan 303 + 305: 48(ptr) AccessChain 34(data) 301 37 + Store 305 304 + 306: 6(int) Load 8(invocation) + 307: 39(ptr) AccessChain 34(data) 37 37 38 + 308: 17(int8_t) Load 307 + 309: 17(int8_t) GroupNonUniformSMax 42 InclusiveScan 308 + 310: 39(ptr) AccessChain 34(data) 306 37 38 + Store 310 309 + 311: 6(int) Load 8(invocation) + 312: 48(ptr) AccessChain 34(data) 46 37 + 313: 18(i8vec4) Load 312 + 314: 47(i8vec2) VectorShuffle 313 313 0 1 + 315: 47(i8vec2) GroupNonUniformSMax 42 InclusiveScan 314 + 316: 48(ptr) AccessChain 34(data) 311 37 + 317: 18(i8vec4) Load 316 + 318: 18(i8vec4) VectorShuffle 317 315 4 5 2 3 + Store 316 318 + 319: 6(int) Load 8(invocation) + 320: 48(ptr) AccessChain 34(data) 57 37 + 321: 18(i8vec4) Load 320 + 322: 58(i8vec3) VectorShuffle 321 321 0 1 2 + 323: 58(i8vec3) GroupNonUniformSMax 42 InclusiveScan 322 + 324: 48(ptr) AccessChain 34(data) 319 37 + 325: 18(i8vec4) Load 324 + 326: 18(i8vec4) VectorShuffle 325 323 4 5 6 3 + Store 324 326 + 327: 6(int) Load 8(invocation) + 328: 48(ptr) AccessChain 34(data) 67 37 + 329: 18(i8vec4) Load 328 + 330: 18(i8vec4) GroupNonUniformSMax 42 InclusiveScan 329 + 331: 48(ptr) AccessChain 34(data) 327 37 + Store 331 330 + 332: 6(int) Load 8(invocation) + 333: 39(ptr) AccessChain 34(data) 37 37 38 + 334: 17(int8_t) Load 333 + 335: 17(int8_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 334 + 336: 39(ptr) AccessChain 34(data) 332 37 38 + Store 336 335 + 337: 6(int) Load 8(invocation) + 338: 48(ptr) AccessChain 34(data) 46 37 + 339: 18(i8vec4) Load 338 + 340: 47(i8vec2) VectorShuffle 339 339 0 1 + 341: 47(i8vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 340 + 342: 48(ptr) AccessChain 34(data) 337 37 + 343: 18(i8vec4) Load 342 + 344: 18(i8vec4) VectorShuffle 343 341 4 5 2 3 + Store 342 344 + 345: 6(int) Load 8(invocation) + 346: 48(ptr) AccessChain 34(data) 57 37 + 347: 18(i8vec4) Load 346 + 348: 58(i8vec3) VectorShuffle 347 347 0 1 2 + 349: 58(i8vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 348 + 350: 48(ptr) AccessChain 34(data) 345 37 + 351: 18(i8vec4) Load 350 + 352: 18(i8vec4) VectorShuffle 351 349 4 5 6 3 + Store 350 352 + 353: 6(int) Load 8(invocation) + 354: 48(ptr) AccessChain 34(data) 67 37 + 355: 18(i8vec4) Load 354 + 356: 18(i8vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 355 + 357: 48(ptr) AccessChain 34(data) 353 37 + Store 357 356 + 358: 6(int) Load 8(invocation) + 359: 39(ptr) AccessChain 34(data) 37 37 38 + 360: 17(int8_t) Load 359 + 361: 17(int8_t) GroupNonUniformBitwiseOr 42 InclusiveScan 360 + 362: 39(ptr) AccessChain 34(data) 358 37 38 + Store 362 361 + 363: 6(int) Load 8(invocation) + 364: 48(ptr) AccessChain 34(data) 46 37 + 365: 18(i8vec4) Load 364 + 366: 47(i8vec2) VectorShuffle 365 365 0 1 + 367: 47(i8vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 366 + 368: 48(ptr) AccessChain 34(data) 363 37 + 369: 18(i8vec4) Load 368 + 370: 18(i8vec4) VectorShuffle 369 367 4 5 2 3 + Store 368 370 + 371: 6(int) Load 8(invocation) + 372: 48(ptr) AccessChain 34(data) 57 37 + 373: 18(i8vec4) Load 372 + 374: 58(i8vec3) VectorShuffle 373 373 0 1 2 + 375: 58(i8vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 374 + 376: 48(ptr) AccessChain 34(data) 371 37 + 377: 18(i8vec4) Load 376 + 378: 18(i8vec4) VectorShuffle 377 375 4 5 6 3 + Store 376 378 + 379: 6(int) Load 8(invocation) + 380: 48(ptr) AccessChain 34(data) 67 37 + 381: 18(i8vec4) Load 380 + 382: 18(i8vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 381 + 383: 48(ptr) AccessChain 34(data) 379 37 + Store 383 382 + 384: 6(int) Load 8(invocation) + 385: 39(ptr) AccessChain 34(data) 37 37 38 + 386: 17(int8_t) Load 385 + 387: 17(int8_t) GroupNonUniformBitwiseXor 42 InclusiveScan 386 + 388: 39(ptr) AccessChain 34(data) 384 37 38 + Store 388 387 + 389: 6(int) Load 8(invocation) + 390: 48(ptr) AccessChain 34(data) 46 37 + 391: 18(i8vec4) Load 390 + 392: 47(i8vec2) VectorShuffle 391 391 0 1 + 393: 47(i8vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 392 + 394: 48(ptr) AccessChain 34(data) 389 37 + 395: 18(i8vec4) Load 394 + 396: 18(i8vec4) VectorShuffle 395 393 4 5 2 3 + Store 394 396 + 397: 6(int) Load 8(invocation) + 398: 48(ptr) AccessChain 34(data) 57 37 + 399: 18(i8vec4) Load 398 + 400: 58(i8vec3) VectorShuffle 399 399 0 1 2 + 401: 58(i8vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 400 + 402: 48(ptr) AccessChain 34(data) 397 37 + 403: 18(i8vec4) Load 402 + 404: 18(i8vec4) VectorShuffle 403 401 4 5 6 3 + Store 402 404 + 405: 6(int) Load 8(invocation) + 406: 48(ptr) AccessChain 34(data) 67 37 + 407: 18(i8vec4) Load 406 + 408: 18(i8vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 407 + 409: 48(ptr) AccessChain 34(data) 405 37 + Store 409 408 + 410: 6(int) Load 8(invocation) + 411: 39(ptr) AccessChain 34(data) 37 37 38 + 412: 17(int8_t) Load 411 + 413: 17(int8_t) GroupNonUniformIAdd 42 ExclusiveScan 412 + 414: 39(ptr) AccessChain 34(data) 410 37 38 + Store 414 413 + 415: 6(int) Load 8(invocation) + 416: 48(ptr) AccessChain 34(data) 46 37 + 417: 18(i8vec4) Load 416 + 418: 47(i8vec2) VectorShuffle 417 417 0 1 + 419: 47(i8vec2) GroupNonUniformIAdd 42 ExclusiveScan 418 + 420: 48(ptr) AccessChain 34(data) 415 37 + 421: 18(i8vec4) Load 420 + 422: 18(i8vec4) VectorShuffle 421 419 4 5 2 3 + Store 420 422 + 423: 6(int) Load 8(invocation) + 424: 48(ptr) AccessChain 34(data) 57 37 + 425: 18(i8vec4) Load 424 + 426: 58(i8vec3) VectorShuffle 425 425 0 1 2 + 427: 58(i8vec3) GroupNonUniformIAdd 42 ExclusiveScan 426 + 428: 48(ptr) AccessChain 34(data) 423 37 + 429: 18(i8vec4) Load 428 + 430: 18(i8vec4) VectorShuffle 429 427 4 5 6 3 + Store 428 430 + 431: 6(int) Load 8(invocation) + 432: 48(ptr) AccessChain 34(data) 67 37 + 433: 18(i8vec4) Load 432 + 434: 18(i8vec4) GroupNonUniformIAdd 42 ExclusiveScan 433 + 435: 48(ptr) AccessChain 34(data) 431 37 + Store 435 434 + 436: 6(int) Load 8(invocation) + 437: 39(ptr) AccessChain 34(data) 37 37 38 + 438: 17(int8_t) Load 437 + 439: 17(int8_t) GroupNonUniformIMul 42 ExclusiveScan 438 + 440: 39(ptr) AccessChain 34(data) 436 37 38 + Store 440 439 + 441: 6(int) Load 8(invocation) + 442: 48(ptr) AccessChain 34(data) 46 37 + 443: 18(i8vec4) Load 442 + 444: 47(i8vec2) VectorShuffle 443 443 0 1 + 445: 47(i8vec2) GroupNonUniformIMul 42 ExclusiveScan 444 + 446: 48(ptr) AccessChain 34(data) 441 37 + 447: 18(i8vec4) Load 446 + 448: 18(i8vec4) VectorShuffle 447 445 4 5 2 3 + Store 446 448 + 449: 6(int) Load 8(invocation) + 450: 48(ptr) AccessChain 34(data) 57 37 + 451: 18(i8vec4) Load 450 + 452: 58(i8vec3) VectorShuffle 451 451 0 1 2 + 453: 58(i8vec3) GroupNonUniformIMul 42 ExclusiveScan 452 + 454: 48(ptr) AccessChain 34(data) 449 37 + 455: 18(i8vec4) Load 454 + 456: 18(i8vec4) VectorShuffle 455 453 4 5 6 3 + Store 454 456 + 457: 6(int) Load 8(invocation) + 458: 48(ptr) AccessChain 34(data) 67 37 + 459: 18(i8vec4) Load 458 + 460: 18(i8vec4) GroupNonUniformIMul 42 ExclusiveScan 459 + 461: 48(ptr) AccessChain 34(data) 457 37 + Store 461 460 + 462: 6(int) Load 8(invocation) + 463: 39(ptr) AccessChain 34(data) 37 37 38 + 464: 17(int8_t) Load 463 + 465: 17(int8_t) GroupNonUniformSMin 42 ExclusiveScan 464 + 466: 39(ptr) AccessChain 34(data) 462 37 38 + Store 466 465 + 467: 6(int) Load 8(invocation) + 468: 48(ptr) AccessChain 34(data) 46 37 + 469: 18(i8vec4) Load 468 + 470: 47(i8vec2) VectorShuffle 469 469 0 1 + 471: 47(i8vec2) GroupNonUniformSMin 42 ExclusiveScan 470 + 472: 48(ptr) AccessChain 34(data) 467 37 + 473: 18(i8vec4) Load 472 + 474: 18(i8vec4) VectorShuffle 473 471 4 5 2 3 + Store 472 474 + 475: 6(int) Load 8(invocation) + 476: 48(ptr) AccessChain 34(data) 57 37 + 477: 18(i8vec4) Load 476 + 478: 58(i8vec3) VectorShuffle 477 477 0 1 2 + 479: 58(i8vec3) GroupNonUniformSMin 42 ExclusiveScan 478 + 480: 48(ptr) AccessChain 34(data) 475 37 + 481: 18(i8vec4) Load 480 + 482: 18(i8vec4) VectorShuffle 481 479 4 5 6 3 + Store 480 482 + 483: 6(int) Load 8(invocation) + 484: 48(ptr) AccessChain 34(data) 67 37 + 485: 18(i8vec4) Load 484 + 486: 18(i8vec4) GroupNonUniformSMin 42 ExclusiveScan 485 + 487: 48(ptr) AccessChain 34(data) 483 37 + Store 487 486 + 488: 6(int) Load 8(invocation) + 489: 39(ptr) AccessChain 34(data) 37 37 38 + 490: 17(int8_t) Load 489 + 491: 17(int8_t) GroupNonUniformSMax 42 ExclusiveScan 490 + 492: 39(ptr) AccessChain 34(data) 488 37 38 + Store 492 491 + 493: 6(int) Load 8(invocation) + 494: 48(ptr) AccessChain 34(data) 46 37 + 495: 18(i8vec4) Load 494 + 496: 47(i8vec2) VectorShuffle 495 495 0 1 + 497: 47(i8vec2) GroupNonUniformSMax 42 ExclusiveScan 496 + 498: 48(ptr) AccessChain 34(data) 493 37 + 499: 18(i8vec4) Load 498 + 500: 18(i8vec4) VectorShuffle 499 497 4 5 2 3 + Store 498 500 + 501: 6(int) Load 8(invocation) + 502: 48(ptr) AccessChain 34(data) 57 37 + 503: 18(i8vec4) Load 502 + 504: 58(i8vec3) VectorShuffle 503 503 0 1 2 + 505: 58(i8vec3) GroupNonUniformSMax 42 ExclusiveScan 504 + 506: 48(ptr) AccessChain 34(data) 501 37 + 507: 18(i8vec4) Load 506 + 508: 18(i8vec4) VectorShuffle 507 505 4 5 6 3 + Store 506 508 + 509: 6(int) Load 8(invocation) + 510: 48(ptr) AccessChain 34(data) 67 37 + 511: 18(i8vec4) Load 510 + 512: 18(i8vec4) GroupNonUniformSMax 42 ExclusiveScan 511 + 513: 48(ptr) AccessChain 34(data) 509 37 + Store 513 512 + 514: 6(int) Load 8(invocation) + 515: 39(ptr) AccessChain 34(data) 37 37 38 + 516: 17(int8_t) Load 515 + 517: 17(int8_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 516 + 518: 39(ptr) AccessChain 34(data) 514 37 38 + Store 518 517 + 519: 6(int) Load 8(invocation) + 520: 48(ptr) AccessChain 34(data) 46 37 + 521: 18(i8vec4) Load 520 + 522: 47(i8vec2) VectorShuffle 521 521 0 1 + 523: 47(i8vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 522 + 524: 48(ptr) AccessChain 34(data) 519 37 + 525: 18(i8vec4) Load 524 + 526: 18(i8vec4) VectorShuffle 525 523 4 5 2 3 + Store 524 526 + 527: 6(int) Load 8(invocation) + 528: 48(ptr) AccessChain 34(data) 57 37 + 529: 18(i8vec4) Load 528 + 530: 58(i8vec3) VectorShuffle 529 529 0 1 2 + 531: 58(i8vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 530 + 532: 48(ptr) AccessChain 34(data) 527 37 + 533: 18(i8vec4) Load 532 + 534: 18(i8vec4) VectorShuffle 533 531 4 5 6 3 + Store 532 534 + 535: 6(int) Load 8(invocation) + 536: 48(ptr) AccessChain 34(data) 67 37 + 537: 18(i8vec4) Load 536 + 538: 18(i8vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 537 + 539: 48(ptr) AccessChain 34(data) 535 37 + Store 539 538 + 540: 6(int) Load 8(invocation) + 541: 39(ptr) AccessChain 34(data) 37 37 38 + 542: 17(int8_t) Load 541 + 543: 17(int8_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 542 + 544: 39(ptr) AccessChain 34(data) 540 37 38 + Store 544 543 + 545: 6(int) Load 8(invocation) + 546: 48(ptr) AccessChain 34(data) 46 37 + 547: 18(i8vec4) Load 546 + 548: 47(i8vec2) VectorShuffle 547 547 0 1 + 549: 47(i8vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 548 + 550: 48(ptr) AccessChain 34(data) 545 37 + 551: 18(i8vec4) Load 550 + 552: 18(i8vec4) VectorShuffle 551 549 4 5 2 3 + Store 550 552 + 553: 6(int) Load 8(invocation) + 554: 48(ptr) AccessChain 34(data) 57 37 + 555: 18(i8vec4) Load 554 + 556: 58(i8vec3) VectorShuffle 555 555 0 1 2 + 557: 58(i8vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 556 + 558: 48(ptr) AccessChain 34(data) 553 37 + 559: 18(i8vec4) Load 558 + 560: 18(i8vec4) VectorShuffle 559 557 4 5 6 3 + Store 558 560 + 561: 6(int) Load 8(invocation) + 562: 48(ptr) AccessChain 34(data) 67 37 + 563: 18(i8vec4) Load 562 + 564: 18(i8vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 563 + 565: 48(ptr) AccessChain 34(data) 561 37 + Store 565 564 + 566: 6(int) Load 8(invocation) + 567: 39(ptr) AccessChain 34(data) 37 37 38 + 568: 17(int8_t) Load 567 + 569: 17(int8_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 568 + 570: 39(ptr) AccessChain 34(data) 566 37 38 + Store 570 569 + 571: 6(int) Load 8(invocation) + 572: 48(ptr) AccessChain 34(data) 46 37 + 573: 18(i8vec4) Load 572 + 574: 47(i8vec2) VectorShuffle 573 573 0 1 + 575: 47(i8vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 574 + 576: 48(ptr) AccessChain 34(data) 571 37 + 577: 18(i8vec4) Load 576 + 578: 18(i8vec4) VectorShuffle 577 575 4 5 2 3 + Store 576 578 + 579: 6(int) Load 8(invocation) + 580: 48(ptr) AccessChain 34(data) 57 37 + 581: 18(i8vec4) Load 580 + 582: 58(i8vec3) VectorShuffle 581 581 0 1 2 + 583: 58(i8vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 582 + 584: 48(ptr) AccessChain 34(data) 579 37 + 585: 18(i8vec4) Load 584 + 586: 18(i8vec4) VectorShuffle 585 583 4 5 6 3 + Store 584 586 + 587: 6(int) Load 8(invocation) + 588: 48(ptr) AccessChain 34(data) 67 37 + 589: 18(i8vec4) Load 588 + 590: 18(i8vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 589 + 591: 48(ptr) AccessChain 34(data) 587 37 + Store 591 590 + 592: 6(int) Load 8(invocation) + 594: 593(ptr) AccessChain 34(data) 37 46 38 + 595: 19(int8_t) Load 594 + 596: 19(int8_t) GroupNonUniformIAdd 42 Reduce 595 + 597: 593(ptr) AccessChain 34(data) 592 46 38 + Store 597 596 + 598: 6(int) Load 8(invocation) + 601: 600(ptr) AccessChain 34(data) 46 46 + 602: 20(i8vec4) Load 601 + 603: 599(i8vec2) VectorShuffle 602 602 0 1 + 604: 599(i8vec2) GroupNonUniformIAdd 42 Reduce 603 + 605: 600(ptr) AccessChain 34(data) 598 46 + 606: 20(i8vec4) Load 605 + 607: 20(i8vec4) VectorShuffle 606 604 4 5 2 3 + Store 605 607 + 608: 6(int) Load 8(invocation) + 610: 600(ptr) AccessChain 34(data) 57 46 + 611: 20(i8vec4) Load 610 + 612: 609(i8vec3) VectorShuffle 611 611 0 1 2 + 613: 609(i8vec3) GroupNonUniformIAdd 42 Reduce 612 + 614: 600(ptr) AccessChain 34(data) 608 46 + 615: 20(i8vec4) Load 614 + 616: 20(i8vec4) VectorShuffle 615 613 4 5 6 3 + Store 614 616 + 617: 6(int) Load 8(invocation) + 618: 600(ptr) AccessChain 34(data) 67 46 + 619: 20(i8vec4) Load 618 + 620: 20(i8vec4) GroupNonUniformIAdd 42 Reduce 619 + 621: 600(ptr) AccessChain 34(data) 617 46 + Store 621 620 + 622: 6(int) Load 8(invocation) + 623: 593(ptr) AccessChain 34(data) 37 46 38 + 624: 19(int8_t) Load 623 + 625: 19(int8_t) GroupNonUniformIMul 42 Reduce 624 + 626: 593(ptr) AccessChain 34(data) 622 46 38 + Store 626 625 + 627: 6(int) Load 8(invocation) + 628: 600(ptr) AccessChain 34(data) 46 46 + 629: 20(i8vec4) Load 628 + 630: 599(i8vec2) VectorShuffle 629 629 0 1 + 631: 599(i8vec2) GroupNonUniformIMul 42 Reduce 630 + 632: 600(ptr) AccessChain 34(data) 627 46 + 633: 20(i8vec4) Load 632 + 634: 20(i8vec4) VectorShuffle 633 631 4 5 2 3 + Store 632 634 + 635: 6(int) Load 8(invocation) + 636: 600(ptr) AccessChain 34(data) 57 46 + 637: 20(i8vec4) Load 636 + 638: 609(i8vec3) VectorShuffle 637 637 0 1 2 + 639: 609(i8vec3) GroupNonUniformIMul 42 Reduce 638 + 640: 600(ptr) AccessChain 34(data) 635 46 + 641: 20(i8vec4) Load 640 + 642: 20(i8vec4) VectorShuffle 641 639 4 5 6 3 + Store 640 642 + 643: 6(int) Load 8(invocation) + 644: 600(ptr) AccessChain 34(data) 67 46 + 645: 20(i8vec4) Load 644 + 646: 20(i8vec4) GroupNonUniformIMul 42 Reduce 645 + 647: 600(ptr) AccessChain 34(data) 643 46 + Store 647 646 + 648: 6(int) Load 8(invocation) + 649: 593(ptr) AccessChain 34(data) 37 46 38 + 650: 19(int8_t) Load 649 + 651: 19(int8_t) GroupNonUniformUMin 42 Reduce 650 + 652: 593(ptr) AccessChain 34(data) 648 46 38 + Store 652 651 + 653: 6(int) Load 8(invocation) + 654: 600(ptr) AccessChain 34(data) 46 46 + 655: 20(i8vec4) Load 654 + 656: 599(i8vec2) VectorShuffle 655 655 0 1 + 657: 599(i8vec2) GroupNonUniformUMin 42 Reduce 656 + 658: 600(ptr) AccessChain 34(data) 653 46 + 659: 20(i8vec4) Load 658 + 660: 20(i8vec4) VectorShuffle 659 657 4 5 2 3 + Store 658 660 + 661: 6(int) Load 8(invocation) + 662: 600(ptr) AccessChain 34(data) 57 46 + 663: 20(i8vec4) Load 662 + 664: 609(i8vec3) VectorShuffle 663 663 0 1 2 + 665: 609(i8vec3) GroupNonUniformUMin 42 Reduce 664 + 666: 600(ptr) AccessChain 34(data) 661 46 + 667: 20(i8vec4) Load 666 + 668: 20(i8vec4) VectorShuffle 667 665 4 5 6 3 + Store 666 668 + 669: 6(int) Load 8(invocation) + 670: 600(ptr) AccessChain 34(data) 67 46 + 671: 20(i8vec4) Load 670 + 672: 20(i8vec4) GroupNonUniformUMin 42 Reduce 671 + 673: 600(ptr) AccessChain 34(data) 669 46 + Store 673 672 + 674: 6(int) Load 8(invocation) + 675: 593(ptr) AccessChain 34(data) 37 46 38 + 676: 19(int8_t) Load 675 + 677: 19(int8_t) GroupNonUniformUMax 42 Reduce 676 + 678: 593(ptr) AccessChain 34(data) 674 46 38 + Store 678 677 + 679: 6(int) Load 8(invocation) + 680: 600(ptr) AccessChain 34(data) 46 46 + 681: 20(i8vec4) Load 680 + 682: 599(i8vec2) VectorShuffle 681 681 0 1 + 683: 599(i8vec2) GroupNonUniformUMax 42 Reduce 682 + 684: 600(ptr) AccessChain 34(data) 679 46 + 685: 20(i8vec4) Load 684 + 686: 20(i8vec4) VectorShuffle 685 683 4 5 2 3 + Store 684 686 + 687: 6(int) Load 8(invocation) + 688: 600(ptr) AccessChain 34(data) 57 46 + 689: 20(i8vec4) Load 688 + 690: 609(i8vec3) VectorShuffle 689 689 0 1 2 + 691: 609(i8vec3) GroupNonUniformUMax 42 Reduce 690 + 692: 600(ptr) AccessChain 34(data) 687 46 + 693: 20(i8vec4) Load 692 + 694: 20(i8vec4) VectorShuffle 693 691 4 5 6 3 + Store 692 694 + 695: 6(int) Load 8(invocation) + 696: 600(ptr) AccessChain 34(data) 67 46 + 697: 20(i8vec4) Load 696 + 698: 20(i8vec4) GroupNonUniformUMax 42 Reduce 697 + 699: 600(ptr) AccessChain 34(data) 695 46 + Store 699 698 + 700: 6(int) Load 8(invocation) + 701: 593(ptr) AccessChain 34(data) 37 46 38 + 702: 19(int8_t) Load 701 + 703: 19(int8_t) GroupNonUniformBitwiseAnd 42 Reduce 702 + 704: 593(ptr) AccessChain 34(data) 700 46 38 + Store 704 703 + 705: 6(int) Load 8(invocation) + 706: 600(ptr) AccessChain 34(data) 46 46 + 707: 20(i8vec4) Load 706 + 708: 599(i8vec2) VectorShuffle 707 707 0 1 + 709: 599(i8vec2) GroupNonUniformBitwiseAnd 42 Reduce 708 + 710: 600(ptr) AccessChain 34(data) 705 46 + 711: 20(i8vec4) Load 710 + 712: 20(i8vec4) VectorShuffle 711 709 4 5 2 3 + Store 710 712 + 713: 6(int) Load 8(invocation) + 714: 600(ptr) AccessChain 34(data) 57 46 + 715: 20(i8vec4) Load 714 + 716: 609(i8vec3) VectorShuffle 715 715 0 1 2 + 717: 609(i8vec3) GroupNonUniformBitwiseAnd 42 Reduce 716 + 718: 600(ptr) AccessChain 34(data) 713 46 + 719: 20(i8vec4) Load 718 + 720: 20(i8vec4) VectorShuffle 719 717 4 5 6 3 + Store 718 720 + 721: 6(int) Load 8(invocation) + 722: 600(ptr) AccessChain 34(data) 67 46 + 723: 20(i8vec4) Load 722 + 724: 20(i8vec4) GroupNonUniformBitwiseAnd 42 Reduce 723 + 725: 600(ptr) AccessChain 34(data) 721 46 + Store 725 724 + 726: 6(int) Load 8(invocation) + 727: 593(ptr) AccessChain 34(data) 37 46 38 + 728: 19(int8_t) Load 727 + 729: 19(int8_t) GroupNonUniformBitwiseOr 42 Reduce 728 + 730: 593(ptr) AccessChain 34(data) 726 46 38 + Store 730 729 + 731: 6(int) Load 8(invocation) + 732: 600(ptr) AccessChain 34(data) 46 46 + 733: 20(i8vec4) Load 732 + 734: 599(i8vec2) VectorShuffle 733 733 0 1 + 735: 599(i8vec2) GroupNonUniformBitwiseOr 42 Reduce 734 + 736: 600(ptr) AccessChain 34(data) 731 46 + 737: 20(i8vec4) Load 736 + 738: 20(i8vec4) VectorShuffle 737 735 4 5 2 3 + Store 736 738 + 739: 6(int) Load 8(invocation) + 740: 600(ptr) AccessChain 34(data) 57 46 + 741: 20(i8vec4) Load 740 + 742: 609(i8vec3) VectorShuffle 741 741 0 1 2 + 743: 609(i8vec3) GroupNonUniformBitwiseOr 42 Reduce 742 + 744: 600(ptr) AccessChain 34(data) 739 46 + 745: 20(i8vec4) Load 744 + 746: 20(i8vec4) VectorShuffle 745 743 4 5 6 3 + Store 744 746 + 747: 6(int) Load 8(invocation) + 748: 600(ptr) AccessChain 34(data) 67 46 + 749: 20(i8vec4) Load 748 + 750: 20(i8vec4) GroupNonUniformBitwiseOr 42 Reduce 749 + 751: 600(ptr) AccessChain 34(data) 747 46 + Store 751 750 + 752: 6(int) Load 8(invocation) + 753: 593(ptr) AccessChain 34(data) 37 46 38 + 754: 19(int8_t) Load 753 + 755: 19(int8_t) GroupNonUniformBitwiseXor 42 Reduce 754 + 756: 593(ptr) AccessChain 34(data) 752 46 38 + Store 756 755 + 757: 6(int) Load 8(invocation) + 758: 600(ptr) AccessChain 34(data) 46 46 + 759: 20(i8vec4) Load 758 + 760: 599(i8vec2) VectorShuffle 759 759 0 1 + 761: 599(i8vec2) GroupNonUniformBitwiseXor 42 Reduce 760 + 762: 600(ptr) AccessChain 34(data) 757 46 + 763: 20(i8vec4) Load 762 + 764: 20(i8vec4) VectorShuffle 763 761 4 5 2 3 + Store 762 764 + 765: 6(int) Load 8(invocation) + 766: 600(ptr) AccessChain 34(data) 57 46 + 767: 20(i8vec4) Load 766 + 768: 609(i8vec3) VectorShuffle 767 767 0 1 2 + 769: 609(i8vec3) GroupNonUniformBitwiseXor 42 Reduce 768 + 770: 600(ptr) AccessChain 34(data) 765 46 + 771: 20(i8vec4) Load 770 + 772: 20(i8vec4) VectorShuffle 771 769 4 5 6 3 + Store 770 772 + 773: 6(int) Load 8(invocation) + 774: 600(ptr) AccessChain 34(data) 67 46 + 775: 20(i8vec4) Load 774 + 776: 20(i8vec4) GroupNonUniformBitwiseXor 42 Reduce 775 + 777: 600(ptr) AccessChain 34(data) 773 46 + Store 777 776 + 778: 6(int) Load 8(invocation) + 779: 593(ptr) AccessChain 34(data) 37 46 38 + 780: 19(int8_t) Load 779 + 781: 19(int8_t) GroupNonUniformIAdd 42 InclusiveScan 780 + 782: 593(ptr) AccessChain 34(data) 778 46 38 + Store 782 781 + 783: 6(int) Load 8(invocation) + 784: 600(ptr) AccessChain 34(data) 46 46 + 785: 20(i8vec4) Load 784 + 786: 599(i8vec2) VectorShuffle 785 785 0 1 + 787: 599(i8vec2) GroupNonUniformIAdd 42 InclusiveScan 786 + 788: 600(ptr) AccessChain 34(data) 783 46 + 789: 20(i8vec4) Load 788 + 790: 20(i8vec4) VectorShuffle 789 787 4 5 2 3 + Store 788 790 + 791: 6(int) Load 8(invocation) + 792: 600(ptr) AccessChain 34(data) 57 46 + 793: 20(i8vec4) Load 792 + 794: 609(i8vec3) VectorShuffle 793 793 0 1 2 + 795: 609(i8vec3) GroupNonUniformIAdd 42 InclusiveScan 794 + 796: 600(ptr) AccessChain 34(data) 791 46 + 797: 20(i8vec4) Load 796 + 798: 20(i8vec4) VectorShuffle 797 795 4 5 6 3 + Store 796 798 + 799: 6(int) Load 8(invocation) + 800: 600(ptr) AccessChain 34(data) 67 46 + 801: 20(i8vec4) Load 800 + 802: 20(i8vec4) GroupNonUniformIAdd 42 InclusiveScan 801 + 803: 600(ptr) AccessChain 34(data) 799 46 + Store 803 802 + 804: 6(int) Load 8(invocation) + 805: 593(ptr) AccessChain 34(data) 37 46 38 + 806: 19(int8_t) Load 805 + 807: 19(int8_t) GroupNonUniformIMul 42 InclusiveScan 806 + 808: 593(ptr) AccessChain 34(data) 804 46 38 + Store 808 807 + 809: 6(int) Load 8(invocation) + 810: 600(ptr) AccessChain 34(data) 46 46 + 811: 20(i8vec4) Load 810 + 812: 599(i8vec2) VectorShuffle 811 811 0 1 + 813: 599(i8vec2) GroupNonUniformIMul 42 InclusiveScan 812 + 814: 600(ptr) AccessChain 34(data) 809 46 + 815: 20(i8vec4) Load 814 + 816: 20(i8vec4) VectorShuffle 815 813 4 5 2 3 + Store 814 816 + 817: 6(int) Load 8(invocation) + 818: 600(ptr) AccessChain 34(data) 57 46 + 819: 20(i8vec4) Load 818 + 820: 609(i8vec3) VectorShuffle 819 819 0 1 2 + 821: 609(i8vec3) GroupNonUniformIMul 42 InclusiveScan 820 + 822: 600(ptr) AccessChain 34(data) 817 46 + 823: 20(i8vec4) Load 822 + 824: 20(i8vec4) VectorShuffle 823 821 4 5 6 3 + Store 822 824 + 825: 6(int) Load 8(invocation) + 826: 600(ptr) AccessChain 34(data) 67 46 + 827: 20(i8vec4) Load 826 + 828: 20(i8vec4) GroupNonUniformIMul 42 InclusiveScan 827 + 829: 600(ptr) AccessChain 34(data) 825 46 + Store 829 828 + 830: 6(int) Load 8(invocation) + 831: 593(ptr) AccessChain 34(data) 37 46 38 + 832: 19(int8_t) Load 831 + 833: 19(int8_t) GroupNonUniformUMin 42 InclusiveScan 832 + 834: 593(ptr) AccessChain 34(data) 830 46 38 + Store 834 833 + 835: 6(int) Load 8(invocation) + 836: 600(ptr) AccessChain 34(data) 46 46 + 837: 20(i8vec4) Load 836 + 838: 599(i8vec2) VectorShuffle 837 837 0 1 + 839: 599(i8vec2) GroupNonUniformUMin 42 InclusiveScan 838 + 840: 600(ptr) AccessChain 34(data) 835 46 + 841: 20(i8vec4) Load 840 + 842: 20(i8vec4) VectorShuffle 841 839 4 5 2 3 + Store 840 842 + 843: 6(int) Load 8(invocation) + 844: 600(ptr) AccessChain 34(data) 57 46 + 845: 20(i8vec4) Load 844 + 846: 609(i8vec3) VectorShuffle 845 845 0 1 2 + 847: 609(i8vec3) GroupNonUniformUMin 42 InclusiveScan 846 + 848: 600(ptr) AccessChain 34(data) 843 46 + 849: 20(i8vec4) Load 848 + 850: 20(i8vec4) VectorShuffle 849 847 4 5 6 3 + Store 848 850 + 851: 6(int) Load 8(invocation) + 852: 600(ptr) AccessChain 34(data) 67 46 + 853: 20(i8vec4) Load 852 + 854: 20(i8vec4) GroupNonUniformUMin 42 InclusiveScan 853 + 855: 600(ptr) AccessChain 34(data) 851 46 + Store 855 854 + 856: 6(int) Load 8(invocation) + 857: 593(ptr) AccessChain 34(data) 37 46 38 + 858: 19(int8_t) Load 857 + 859: 19(int8_t) GroupNonUniformUMax 42 InclusiveScan 858 + 860: 593(ptr) AccessChain 34(data) 856 46 38 + Store 860 859 + 861: 6(int) Load 8(invocation) + 862: 600(ptr) AccessChain 34(data) 46 46 + 863: 20(i8vec4) Load 862 + 864: 599(i8vec2) VectorShuffle 863 863 0 1 + 865: 599(i8vec2) GroupNonUniformUMax 42 InclusiveScan 864 + 866: 600(ptr) AccessChain 34(data) 861 46 + 867: 20(i8vec4) Load 866 + 868: 20(i8vec4) VectorShuffle 867 865 4 5 2 3 + Store 866 868 + 869: 6(int) Load 8(invocation) + 870: 600(ptr) AccessChain 34(data) 57 46 + 871: 20(i8vec4) Load 870 + 872: 609(i8vec3) VectorShuffle 871 871 0 1 2 + 873: 609(i8vec3) GroupNonUniformUMax 42 InclusiveScan 872 + 874: 600(ptr) AccessChain 34(data) 869 46 + 875: 20(i8vec4) Load 874 + 876: 20(i8vec4) VectorShuffle 875 873 4 5 6 3 + Store 874 876 + 877: 6(int) Load 8(invocation) + 878: 600(ptr) AccessChain 34(data) 67 46 + 879: 20(i8vec4) Load 878 + 880: 20(i8vec4) GroupNonUniformUMax 42 InclusiveScan 879 + 881: 600(ptr) AccessChain 34(data) 877 46 + Store 881 880 + 882: 6(int) Load 8(invocation) + 883: 593(ptr) AccessChain 34(data) 37 46 38 + 884: 19(int8_t) Load 883 + 885: 19(int8_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 884 + 886: 593(ptr) AccessChain 34(data) 882 46 38 + Store 886 885 + 887: 6(int) Load 8(invocation) + 888: 600(ptr) AccessChain 34(data) 46 46 + 889: 20(i8vec4) Load 888 + 890: 599(i8vec2) VectorShuffle 889 889 0 1 + 891: 599(i8vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 890 + 892: 600(ptr) AccessChain 34(data) 887 46 + 893: 20(i8vec4) Load 892 + 894: 20(i8vec4) VectorShuffle 893 891 4 5 2 3 + Store 892 894 + 895: 6(int) Load 8(invocation) + 896: 600(ptr) AccessChain 34(data) 57 46 + 897: 20(i8vec4) Load 896 + 898: 609(i8vec3) VectorShuffle 897 897 0 1 2 + 899: 609(i8vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 898 + 900: 600(ptr) AccessChain 34(data) 895 46 + 901: 20(i8vec4) Load 900 + 902: 20(i8vec4) VectorShuffle 901 899 4 5 6 3 + Store 900 902 + 903: 6(int) Load 8(invocation) + 904: 600(ptr) AccessChain 34(data) 67 46 + 905: 20(i8vec4) Load 904 + 906: 20(i8vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 905 + 907: 600(ptr) AccessChain 34(data) 903 46 + Store 907 906 + 908: 6(int) Load 8(invocation) + 909: 593(ptr) AccessChain 34(data) 37 46 38 + 910: 19(int8_t) Load 909 + 911: 19(int8_t) GroupNonUniformBitwiseOr 42 InclusiveScan 910 + 912: 593(ptr) AccessChain 34(data) 908 46 38 + Store 912 911 + 913: 6(int) Load 8(invocation) + 914: 600(ptr) AccessChain 34(data) 46 46 + 915: 20(i8vec4) Load 914 + 916: 599(i8vec2) VectorShuffle 915 915 0 1 + 917: 599(i8vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 916 + 918: 600(ptr) AccessChain 34(data) 913 46 + 919: 20(i8vec4) Load 918 + 920: 20(i8vec4) VectorShuffle 919 917 4 5 2 3 + Store 918 920 + 921: 6(int) Load 8(invocation) + 922: 600(ptr) AccessChain 34(data) 57 46 + 923: 20(i8vec4) Load 922 + 924: 609(i8vec3) VectorShuffle 923 923 0 1 2 + 925: 609(i8vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 924 + 926: 600(ptr) AccessChain 34(data) 921 46 + 927: 20(i8vec4) Load 926 + 928: 20(i8vec4) VectorShuffle 927 925 4 5 6 3 + Store 926 928 + 929: 6(int) Load 8(invocation) + 930: 600(ptr) AccessChain 34(data) 67 46 + 931: 20(i8vec4) Load 930 + 932: 20(i8vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 931 + 933: 600(ptr) AccessChain 34(data) 929 46 + Store 933 932 + 934: 6(int) Load 8(invocation) + 935: 593(ptr) AccessChain 34(data) 37 46 38 + 936: 19(int8_t) Load 935 + 937: 19(int8_t) GroupNonUniformBitwiseXor 42 InclusiveScan 936 + 938: 593(ptr) AccessChain 34(data) 934 46 38 + Store 938 937 + 939: 6(int) Load 8(invocation) + 940: 600(ptr) AccessChain 34(data) 46 46 + 941: 20(i8vec4) Load 940 + 942: 599(i8vec2) VectorShuffle 941 941 0 1 + 943: 599(i8vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 942 + 944: 600(ptr) AccessChain 34(data) 939 46 + 945: 20(i8vec4) Load 944 + 946: 20(i8vec4) VectorShuffle 945 943 4 5 2 3 + Store 944 946 + 947: 6(int) Load 8(invocation) + 948: 600(ptr) AccessChain 34(data) 57 46 + 949: 20(i8vec4) Load 948 + 950: 609(i8vec3) VectorShuffle 949 949 0 1 2 + 951: 609(i8vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 950 + 952: 600(ptr) AccessChain 34(data) 947 46 + 953: 20(i8vec4) Load 952 + 954: 20(i8vec4) VectorShuffle 953 951 4 5 6 3 + Store 952 954 + 955: 6(int) Load 8(invocation) + 956: 600(ptr) AccessChain 34(data) 67 46 + 957: 20(i8vec4) Load 956 + 958: 20(i8vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 957 + 959: 600(ptr) AccessChain 34(data) 955 46 + Store 959 958 + 960: 6(int) Load 8(invocation) + 961: 593(ptr) AccessChain 34(data) 37 46 38 + 962: 19(int8_t) Load 961 + 963: 19(int8_t) GroupNonUniformIAdd 42 ExclusiveScan 962 + 964: 593(ptr) AccessChain 34(data) 960 46 38 + Store 964 963 + 965: 6(int) Load 8(invocation) + 966: 600(ptr) AccessChain 34(data) 46 46 + 967: 20(i8vec4) Load 966 + 968: 599(i8vec2) VectorShuffle 967 967 0 1 + 969: 599(i8vec2) GroupNonUniformIAdd 42 ExclusiveScan 968 + 970: 600(ptr) AccessChain 34(data) 965 46 + 971: 20(i8vec4) Load 970 + 972: 20(i8vec4) VectorShuffle 971 969 4 5 2 3 + Store 970 972 + 973: 6(int) Load 8(invocation) + 974: 600(ptr) AccessChain 34(data) 57 46 + 975: 20(i8vec4) Load 974 + 976: 609(i8vec3) VectorShuffle 975 975 0 1 2 + 977: 609(i8vec3) GroupNonUniformIAdd 42 ExclusiveScan 976 + 978: 600(ptr) AccessChain 34(data) 973 46 + 979: 20(i8vec4) Load 978 + 980: 20(i8vec4) VectorShuffle 979 977 4 5 6 3 + Store 978 980 + 981: 6(int) Load 8(invocation) + 982: 600(ptr) AccessChain 34(data) 67 46 + 983: 20(i8vec4) Load 982 + 984: 20(i8vec4) GroupNonUniformIAdd 42 ExclusiveScan 983 + 985: 600(ptr) AccessChain 34(data) 981 46 + Store 985 984 + 986: 6(int) Load 8(invocation) + 987: 593(ptr) AccessChain 34(data) 37 46 38 + 988: 19(int8_t) Load 987 + 989: 19(int8_t) GroupNonUniformIMul 42 ExclusiveScan 988 + 990: 593(ptr) AccessChain 34(data) 986 46 38 + Store 990 989 + 991: 6(int) Load 8(invocation) + 992: 600(ptr) AccessChain 34(data) 46 46 + 993: 20(i8vec4) Load 992 + 994: 599(i8vec2) VectorShuffle 993 993 0 1 + 995: 599(i8vec2) GroupNonUniformIMul 42 ExclusiveScan 994 + 996: 600(ptr) AccessChain 34(data) 991 46 + 997: 20(i8vec4) Load 996 + 998: 20(i8vec4) VectorShuffle 997 995 4 5 2 3 + Store 996 998 + 999: 6(int) Load 8(invocation) + 1000: 600(ptr) AccessChain 34(data) 57 46 + 1001: 20(i8vec4) Load 1000 + 1002: 609(i8vec3) VectorShuffle 1001 1001 0 1 2 + 1003: 609(i8vec3) GroupNonUniformIMul 42 ExclusiveScan 1002 + 1004: 600(ptr) AccessChain 34(data) 999 46 + 1005: 20(i8vec4) Load 1004 + 1006: 20(i8vec4) VectorShuffle 1005 1003 4 5 6 3 + Store 1004 1006 + 1007: 6(int) Load 8(invocation) + 1008: 600(ptr) AccessChain 34(data) 67 46 + 1009: 20(i8vec4) Load 1008 + 1010: 20(i8vec4) GroupNonUniformIMul 42 ExclusiveScan 1009 + 1011: 600(ptr) AccessChain 34(data) 1007 46 + Store 1011 1010 + 1012: 6(int) Load 8(invocation) + 1013: 593(ptr) AccessChain 34(data) 37 46 38 + 1014: 19(int8_t) Load 1013 + 1015: 19(int8_t) GroupNonUniformUMin 42 ExclusiveScan 1014 + 1016: 593(ptr) AccessChain 34(data) 1012 46 38 + Store 1016 1015 + 1017: 6(int) Load 8(invocation) + 1018: 600(ptr) AccessChain 34(data) 46 46 + 1019: 20(i8vec4) Load 1018 + 1020: 599(i8vec2) VectorShuffle 1019 1019 0 1 + 1021: 599(i8vec2) GroupNonUniformUMin 42 ExclusiveScan 1020 + 1022: 600(ptr) AccessChain 34(data) 1017 46 + 1023: 20(i8vec4) Load 1022 + 1024: 20(i8vec4) VectorShuffle 1023 1021 4 5 2 3 + Store 1022 1024 + 1025: 6(int) Load 8(invocation) + 1026: 600(ptr) AccessChain 34(data) 57 46 + 1027: 20(i8vec4) Load 1026 + 1028: 609(i8vec3) VectorShuffle 1027 1027 0 1 2 + 1029: 609(i8vec3) GroupNonUniformUMin 42 ExclusiveScan 1028 + 1030: 600(ptr) AccessChain 34(data) 1025 46 + 1031: 20(i8vec4) Load 1030 + 1032: 20(i8vec4) VectorShuffle 1031 1029 4 5 6 3 + Store 1030 1032 + 1033: 6(int) Load 8(invocation) + 1034: 600(ptr) AccessChain 34(data) 67 46 + 1035: 20(i8vec4) Load 1034 + 1036: 20(i8vec4) GroupNonUniformUMin 42 ExclusiveScan 1035 + 1037: 600(ptr) AccessChain 34(data) 1033 46 + Store 1037 1036 + 1038: 6(int) Load 8(invocation) + 1039: 593(ptr) AccessChain 34(data) 37 46 38 + 1040: 19(int8_t) Load 1039 + 1041: 19(int8_t) GroupNonUniformUMax 42 ExclusiveScan 1040 + 1042: 593(ptr) AccessChain 34(data) 1038 46 38 + Store 1042 1041 + 1043: 6(int) Load 8(invocation) + 1044: 600(ptr) AccessChain 34(data) 46 46 + 1045: 20(i8vec4) Load 1044 + 1046: 599(i8vec2) VectorShuffle 1045 1045 0 1 + 1047: 599(i8vec2) GroupNonUniformUMax 42 ExclusiveScan 1046 + 1048: 600(ptr) AccessChain 34(data) 1043 46 + 1049: 20(i8vec4) Load 1048 + 1050: 20(i8vec4) VectorShuffle 1049 1047 4 5 2 3 + Store 1048 1050 + 1051: 6(int) Load 8(invocation) + 1052: 600(ptr) AccessChain 34(data) 57 46 + 1053: 20(i8vec4) Load 1052 + 1054: 609(i8vec3) VectorShuffle 1053 1053 0 1 2 + 1055: 609(i8vec3) GroupNonUniformUMax 42 ExclusiveScan 1054 + 1056: 600(ptr) AccessChain 34(data) 1051 46 + 1057: 20(i8vec4) Load 1056 + 1058: 20(i8vec4) VectorShuffle 1057 1055 4 5 6 3 + Store 1056 1058 + 1059: 6(int) Load 8(invocation) + 1060: 600(ptr) AccessChain 34(data) 67 46 + 1061: 20(i8vec4) Load 1060 + 1062: 20(i8vec4) GroupNonUniformUMax 42 ExclusiveScan 1061 + 1063: 600(ptr) AccessChain 34(data) 1059 46 + Store 1063 1062 + 1064: 6(int) Load 8(invocation) + 1065: 593(ptr) AccessChain 34(data) 37 46 38 + 1066: 19(int8_t) Load 1065 + 1067: 19(int8_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1066 + 1068: 593(ptr) AccessChain 34(data) 1064 46 38 + Store 1068 1067 + 1069: 6(int) Load 8(invocation) + 1070: 600(ptr) AccessChain 34(data) 46 46 + 1071: 20(i8vec4) Load 1070 + 1072: 599(i8vec2) VectorShuffle 1071 1071 0 1 + 1073: 599(i8vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1072 + 1074: 600(ptr) AccessChain 34(data) 1069 46 + 1075: 20(i8vec4) Load 1074 + 1076: 20(i8vec4) VectorShuffle 1075 1073 4 5 2 3 + Store 1074 1076 + 1077: 6(int) Load 8(invocation) + 1078: 600(ptr) AccessChain 34(data) 57 46 + 1079: 20(i8vec4) Load 1078 + 1080: 609(i8vec3) VectorShuffle 1079 1079 0 1 2 + 1081: 609(i8vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1080 + 1082: 600(ptr) AccessChain 34(data) 1077 46 + 1083: 20(i8vec4) Load 1082 + 1084: 20(i8vec4) VectorShuffle 1083 1081 4 5 6 3 + Store 1082 1084 + 1085: 6(int) Load 8(invocation) + 1086: 600(ptr) AccessChain 34(data) 67 46 + 1087: 20(i8vec4) Load 1086 + 1088: 20(i8vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1087 + 1089: 600(ptr) AccessChain 34(data) 1085 46 + Store 1089 1088 + 1090: 6(int) Load 8(invocation) + 1091: 593(ptr) AccessChain 34(data) 37 46 38 + 1092: 19(int8_t) Load 1091 + 1093: 19(int8_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 1092 + 1094: 593(ptr) AccessChain 34(data) 1090 46 38 + Store 1094 1093 + 1095: 6(int) Load 8(invocation) + 1096: 600(ptr) AccessChain 34(data) 46 46 + 1097: 20(i8vec4) Load 1096 + 1098: 599(i8vec2) VectorShuffle 1097 1097 0 1 + 1099: 599(i8vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 1098 + 1100: 600(ptr) AccessChain 34(data) 1095 46 + 1101: 20(i8vec4) Load 1100 + 1102: 20(i8vec4) VectorShuffle 1101 1099 4 5 2 3 + Store 1100 1102 + 1103: 6(int) Load 8(invocation) + 1104: 600(ptr) AccessChain 34(data) 57 46 + 1105: 20(i8vec4) Load 1104 + 1106: 609(i8vec3) VectorShuffle 1105 1105 0 1 2 + 1107: 609(i8vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 1106 + 1108: 600(ptr) AccessChain 34(data) 1103 46 + 1109: 20(i8vec4) Load 1108 + 1110: 20(i8vec4) VectorShuffle 1109 1107 4 5 6 3 + Store 1108 1110 + 1111: 6(int) Load 8(invocation) + 1112: 600(ptr) AccessChain 34(data) 67 46 + 1113: 20(i8vec4) Load 1112 + 1114: 20(i8vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 1113 + 1115: 600(ptr) AccessChain 34(data) 1111 46 + Store 1115 1114 + 1116: 6(int) Load 8(invocation) + 1117: 593(ptr) AccessChain 34(data) 37 46 38 + 1118: 19(int8_t) Load 1117 + 1119: 19(int8_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 1118 + 1120: 593(ptr) AccessChain 34(data) 1116 46 38 + Store 1120 1119 + 1121: 6(int) Load 8(invocation) + 1122: 600(ptr) AccessChain 34(data) 46 46 + 1123: 20(i8vec4) Load 1122 + 1124: 599(i8vec2) VectorShuffle 1123 1123 0 1 + 1125: 599(i8vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 1124 + 1126: 600(ptr) AccessChain 34(data) 1121 46 + 1127: 20(i8vec4) Load 1126 + 1128: 20(i8vec4) VectorShuffle 1127 1125 4 5 2 3 + Store 1126 1128 + 1129: 6(int) Load 8(invocation) + 1130: 600(ptr) AccessChain 34(data) 57 46 + 1131: 20(i8vec4) Load 1130 + 1132: 609(i8vec3) VectorShuffle 1131 1131 0 1 2 + 1133: 609(i8vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 1132 + 1134: 600(ptr) AccessChain 34(data) 1129 46 + 1135: 20(i8vec4) Load 1134 + 1136: 20(i8vec4) VectorShuffle 1135 1133 4 5 6 3 + Store 1134 1136 + 1137: 6(int) Load 8(invocation) + 1138: 600(ptr) AccessChain 34(data) 67 46 + 1139: 20(i8vec4) Load 1138 + 1140: 20(i8vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 1139 + 1141: 600(ptr) AccessChain 34(data) 1137 46 + Store 1141 1140 + 1142: 6(int) Load 8(invocation) + 1144: 1143(ptr) AccessChain 34(data) 37 57 38 + 1145: 21(int16_t) Load 1144 + 1146: 21(int16_t) GroupNonUniformIAdd 42 Reduce 1145 + 1147: 1143(ptr) AccessChain 34(data) 1142 57 38 + Store 1147 1146 + 1148: 6(int) Load 8(invocation) + 1151: 1150(ptr) AccessChain 34(data) 46 57 + 1152: 22(i16vec4) Load 1151 + 1153:1149(i16vec2) VectorShuffle 1152 1152 0 1 + 1154:1149(i16vec2) GroupNonUniformIAdd 42 Reduce 1153 + 1155: 1150(ptr) AccessChain 34(data) 1148 57 + 1156: 22(i16vec4) Load 1155 + 1157: 22(i16vec4) VectorShuffle 1156 1154 4 5 2 3 + Store 1155 1157 + 1158: 6(int) Load 8(invocation) + 1160: 1150(ptr) AccessChain 34(data) 57 57 + 1161: 22(i16vec4) Load 1160 + 1162:1159(i16vec3) VectorShuffle 1161 1161 0 1 2 + 1163:1159(i16vec3) GroupNonUniformIAdd 42 Reduce 1162 + 1164: 1150(ptr) AccessChain 34(data) 1158 57 + 1165: 22(i16vec4) Load 1164 + 1166: 22(i16vec4) VectorShuffle 1165 1163 4 5 6 3 + Store 1164 1166 + 1167: 6(int) Load 8(invocation) + 1168: 1150(ptr) AccessChain 34(data) 67 57 + 1169: 22(i16vec4) Load 1168 + 1170: 22(i16vec4) GroupNonUniformIAdd 42 Reduce 1169 + 1171: 1150(ptr) AccessChain 34(data) 1167 57 + Store 1171 1170 + 1172: 6(int) Load 8(invocation) + 1173: 1143(ptr) AccessChain 34(data) 37 57 38 + 1174: 21(int16_t) Load 1173 + 1175: 21(int16_t) GroupNonUniformIMul 42 Reduce 1174 + 1176: 1143(ptr) AccessChain 34(data) 1172 57 38 + Store 1176 1175 + 1177: 6(int) Load 8(invocation) + 1178: 1150(ptr) AccessChain 34(data) 46 57 + 1179: 22(i16vec4) Load 1178 + 1180:1149(i16vec2) VectorShuffle 1179 1179 0 1 + 1181:1149(i16vec2) GroupNonUniformIMul 42 Reduce 1180 + 1182: 1150(ptr) AccessChain 34(data) 1177 57 + 1183: 22(i16vec4) Load 1182 + 1184: 22(i16vec4) VectorShuffle 1183 1181 4 5 2 3 + Store 1182 1184 + 1185: 6(int) Load 8(invocation) + 1186: 1150(ptr) AccessChain 34(data) 57 57 + 1187: 22(i16vec4) Load 1186 + 1188:1159(i16vec3) VectorShuffle 1187 1187 0 1 2 + 1189:1159(i16vec3) GroupNonUniformIMul 42 Reduce 1188 + 1190: 1150(ptr) AccessChain 34(data) 1185 57 + 1191: 22(i16vec4) Load 1190 + 1192: 22(i16vec4) VectorShuffle 1191 1189 4 5 6 3 + Store 1190 1192 + 1193: 6(int) Load 8(invocation) + 1194: 1150(ptr) AccessChain 34(data) 67 57 + 1195: 22(i16vec4) Load 1194 + 1196: 22(i16vec4) GroupNonUniformIMul 42 Reduce 1195 + 1197: 1150(ptr) AccessChain 34(data) 1193 57 + Store 1197 1196 + 1198: 6(int) Load 8(invocation) + 1199: 1143(ptr) AccessChain 34(data) 37 57 38 + 1200: 21(int16_t) Load 1199 + 1201: 21(int16_t) GroupNonUniformSMin 42 Reduce 1200 + 1202: 1143(ptr) AccessChain 34(data) 1198 57 38 + Store 1202 1201 + 1203: 6(int) Load 8(invocation) + 1204: 1150(ptr) AccessChain 34(data) 46 57 + 1205: 22(i16vec4) Load 1204 + 1206:1149(i16vec2) VectorShuffle 1205 1205 0 1 + 1207:1149(i16vec2) GroupNonUniformSMin 42 Reduce 1206 + 1208: 1150(ptr) AccessChain 34(data) 1203 57 + 1209: 22(i16vec4) Load 1208 + 1210: 22(i16vec4) VectorShuffle 1209 1207 4 5 2 3 + Store 1208 1210 + 1211: 6(int) Load 8(invocation) + 1212: 1150(ptr) AccessChain 34(data) 57 57 + 1213: 22(i16vec4) Load 1212 + 1214:1159(i16vec3) VectorShuffle 1213 1213 0 1 2 + 1215:1159(i16vec3) GroupNonUniformSMin 42 Reduce 1214 + 1216: 1150(ptr) AccessChain 34(data) 1211 57 + 1217: 22(i16vec4) Load 1216 + 1218: 22(i16vec4) VectorShuffle 1217 1215 4 5 6 3 + Store 1216 1218 + 1219: 6(int) Load 8(invocation) + 1220: 1150(ptr) AccessChain 34(data) 67 57 + 1221: 22(i16vec4) Load 1220 + 1222: 22(i16vec4) GroupNonUniformSMin 42 Reduce 1221 + 1223: 1150(ptr) AccessChain 34(data) 1219 57 + Store 1223 1222 + 1224: 6(int) Load 8(invocation) + 1225: 1143(ptr) AccessChain 34(data) 37 57 38 + 1226: 21(int16_t) Load 1225 + 1227: 21(int16_t) GroupNonUniformSMax 42 Reduce 1226 + 1228: 1143(ptr) AccessChain 34(data) 1224 57 38 + Store 1228 1227 + 1229: 6(int) Load 8(invocation) + 1230: 1150(ptr) AccessChain 34(data) 46 57 + 1231: 22(i16vec4) Load 1230 + 1232:1149(i16vec2) VectorShuffle 1231 1231 0 1 + 1233:1149(i16vec2) GroupNonUniformSMax 42 Reduce 1232 + 1234: 1150(ptr) AccessChain 34(data) 1229 57 + 1235: 22(i16vec4) Load 1234 + 1236: 22(i16vec4) VectorShuffle 1235 1233 4 5 2 3 + Store 1234 1236 + 1237: 6(int) Load 8(invocation) + 1238: 1150(ptr) AccessChain 34(data) 57 57 + 1239: 22(i16vec4) Load 1238 + 1240:1159(i16vec3) VectorShuffle 1239 1239 0 1 2 + 1241:1159(i16vec3) GroupNonUniformSMax 42 Reduce 1240 + 1242: 1150(ptr) AccessChain 34(data) 1237 57 + 1243: 22(i16vec4) Load 1242 + 1244: 22(i16vec4) VectorShuffle 1243 1241 4 5 6 3 + Store 1242 1244 + 1245: 6(int) Load 8(invocation) + 1246: 1150(ptr) AccessChain 34(data) 67 57 + 1247: 22(i16vec4) Load 1246 + 1248: 22(i16vec4) GroupNonUniformSMax 42 Reduce 1247 + 1249: 1150(ptr) AccessChain 34(data) 1245 57 + Store 1249 1248 + 1250: 6(int) Load 8(invocation) + 1251: 1143(ptr) AccessChain 34(data) 37 57 38 + 1252: 21(int16_t) Load 1251 + 1253: 21(int16_t) GroupNonUniformBitwiseAnd 42 Reduce 1252 + 1254: 1143(ptr) AccessChain 34(data) 1250 57 38 + Store 1254 1253 + 1255: 6(int) Load 8(invocation) + 1256: 1150(ptr) AccessChain 34(data) 46 57 + 1257: 22(i16vec4) Load 1256 + 1258:1149(i16vec2) VectorShuffle 1257 1257 0 1 + 1259:1149(i16vec2) GroupNonUniformBitwiseAnd 42 Reduce 1258 + 1260: 1150(ptr) AccessChain 34(data) 1255 57 + 1261: 22(i16vec4) Load 1260 + 1262: 22(i16vec4) VectorShuffle 1261 1259 4 5 2 3 + Store 1260 1262 + 1263: 6(int) Load 8(invocation) + 1264: 1150(ptr) AccessChain 34(data) 57 57 + 1265: 22(i16vec4) Load 1264 + 1266:1159(i16vec3) VectorShuffle 1265 1265 0 1 2 + 1267:1159(i16vec3) GroupNonUniformBitwiseAnd 42 Reduce 1266 + 1268: 1150(ptr) AccessChain 34(data) 1263 57 + 1269: 22(i16vec4) Load 1268 + 1270: 22(i16vec4) VectorShuffle 1269 1267 4 5 6 3 + Store 1268 1270 + 1271: 6(int) Load 8(invocation) + 1272: 1150(ptr) AccessChain 34(data) 67 57 + 1273: 22(i16vec4) Load 1272 + 1274: 22(i16vec4) GroupNonUniformBitwiseAnd 42 Reduce 1273 + 1275: 1150(ptr) AccessChain 34(data) 1271 57 + Store 1275 1274 + 1276: 6(int) Load 8(invocation) + 1277: 1143(ptr) AccessChain 34(data) 37 57 38 + 1278: 21(int16_t) Load 1277 + 1279: 21(int16_t) GroupNonUniformBitwiseOr 42 Reduce 1278 + 1280: 1143(ptr) AccessChain 34(data) 1276 57 38 + Store 1280 1279 + 1281: 6(int) Load 8(invocation) + 1282: 1150(ptr) AccessChain 34(data) 46 57 + 1283: 22(i16vec4) Load 1282 + 1284:1149(i16vec2) VectorShuffle 1283 1283 0 1 + 1285:1149(i16vec2) GroupNonUniformBitwiseOr 42 Reduce 1284 + 1286: 1150(ptr) AccessChain 34(data) 1281 57 + 1287: 22(i16vec4) Load 1286 + 1288: 22(i16vec4) VectorShuffle 1287 1285 4 5 2 3 + Store 1286 1288 + 1289: 6(int) Load 8(invocation) + 1290: 1150(ptr) AccessChain 34(data) 57 57 + 1291: 22(i16vec4) Load 1290 + 1292:1159(i16vec3) VectorShuffle 1291 1291 0 1 2 + 1293:1159(i16vec3) GroupNonUniformBitwiseOr 42 Reduce 1292 + 1294: 1150(ptr) AccessChain 34(data) 1289 57 + 1295: 22(i16vec4) Load 1294 + 1296: 22(i16vec4) VectorShuffle 1295 1293 4 5 6 3 + Store 1294 1296 + 1297: 6(int) Load 8(invocation) + 1298: 1150(ptr) AccessChain 34(data) 67 57 + 1299: 22(i16vec4) Load 1298 + 1300: 22(i16vec4) GroupNonUniformBitwiseOr 42 Reduce 1299 + 1301: 1150(ptr) AccessChain 34(data) 1297 57 + Store 1301 1300 + 1302: 6(int) Load 8(invocation) + 1303: 1143(ptr) AccessChain 34(data) 37 57 38 + 1304: 21(int16_t) Load 1303 + 1305: 21(int16_t) GroupNonUniformBitwiseXor 42 Reduce 1304 + 1306: 1143(ptr) AccessChain 34(data) 1302 57 38 + Store 1306 1305 + 1307: 6(int) Load 8(invocation) + 1308: 1150(ptr) AccessChain 34(data) 46 57 + 1309: 22(i16vec4) Load 1308 + 1310:1149(i16vec2) VectorShuffle 1309 1309 0 1 + 1311:1149(i16vec2) GroupNonUniformBitwiseXor 42 Reduce 1310 + 1312: 1150(ptr) AccessChain 34(data) 1307 57 + 1313: 22(i16vec4) Load 1312 + 1314: 22(i16vec4) VectorShuffle 1313 1311 4 5 2 3 + Store 1312 1314 + 1315: 6(int) Load 8(invocation) + 1316: 1150(ptr) AccessChain 34(data) 57 57 + 1317: 22(i16vec4) Load 1316 + 1318:1159(i16vec3) VectorShuffle 1317 1317 0 1 2 + 1319:1159(i16vec3) GroupNonUniformBitwiseXor 42 Reduce 1318 + 1320: 1150(ptr) AccessChain 34(data) 1315 57 + 1321: 22(i16vec4) Load 1320 + 1322: 22(i16vec4) VectorShuffle 1321 1319 4 5 6 3 + Store 1320 1322 + 1323: 6(int) Load 8(invocation) + 1324: 1150(ptr) AccessChain 34(data) 67 57 + 1325: 22(i16vec4) Load 1324 + 1326: 22(i16vec4) GroupNonUniformBitwiseXor 42 Reduce 1325 + 1327: 1150(ptr) AccessChain 34(data) 1323 57 + Store 1327 1326 + 1328: 6(int) Load 8(invocation) + 1329: 1143(ptr) AccessChain 34(data) 37 57 38 + 1330: 21(int16_t) Load 1329 + 1331: 21(int16_t) GroupNonUniformIAdd 42 InclusiveScan 1330 + 1332: 1143(ptr) AccessChain 34(data) 1328 57 38 + Store 1332 1331 + 1333: 6(int) Load 8(invocation) + 1334: 1150(ptr) AccessChain 34(data) 46 57 + 1335: 22(i16vec4) Load 1334 + 1336:1149(i16vec2) VectorShuffle 1335 1335 0 1 + 1337:1149(i16vec2) GroupNonUniformIAdd 42 InclusiveScan 1336 + 1338: 1150(ptr) AccessChain 34(data) 1333 57 + 1339: 22(i16vec4) Load 1338 + 1340: 22(i16vec4) VectorShuffle 1339 1337 4 5 2 3 + Store 1338 1340 + 1341: 6(int) Load 8(invocation) + 1342: 1150(ptr) AccessChain 34(data) 57 57 + 1343: 22(i16vec4) Load 1342 + 1344:1159(i16vec3) VectorShuffle 1343 1343 0 1 2 + 1345:1159(i16vec3) GroupNonUniformIAdd 42 InclusiveScan 1344 + 1346: 1150(ptr) AccessChain 34(data) 1341 57 + 1347: 22(i16vec4) Load 1346 + 1348: 22(i16vec4) VectorShuffle 1347 1345 4 5 6 3 + Store 1346 1348 + 1349: 6(int) Load 8(invocation) + 1350: 1150(ptr) AccessChain 34(data) 67 57 + 1351: 22(i16vec4) Load 1350 + 1352: 22(i16vec4) GroupNonUniformIAdd 42 InclusiveScan 1351 + 1353: 1150(ptr) AccessChain 34(data) 1349 57 + Store 1353 1352 + 1354: 6(int) Load 8(invocation) + 1355: 1143(ptr) AccessChain 34(data) 37 57 38 + 1356: 21(int16_t) Load 1355 + 1357: 21(int16_t) GroupNonUniformIMul 42 InclusiveScan 1356 + 1358: 1143(ptr) AccessChain 34(data) 1354 57 38 + Store 1358 1357 + 1359: 6(int) Load 8(invocation) + 1360: 1150(ptr) AccessChain 34(data) 46 57 + 1361: 22(i16vec4) Load 1360 + 1362:1149(i16vec2) VectorShuffle 1361 1361 0 1 + 1363:1149(i16vec2) GroupNonUniformIMul 42 InclusiveScan 1362 + 1364: 1150(ptr) AccessChain 34(data) 1359 57 + 1365: 22(i16vec4) Load 1364 + 1366: 22(i16vec4) VectorShuffle 1365 1363 4 5 2 3 + Store 1364 1366 + 1367: 6(int) Load 8(invocation) + 1368: 1150(ptr) AccessChain 34(data) 57 57 + 1369: 22(i16vec4) Load 1368 + 1370:1159(i16vec3) VectorShuffle 1369 1369 0 1 2 + 1371:1159(i16vec3) GroupNonUniformIMul 42 InclusiveScan 1370 + 1372: 1150(ptr) AccessChain 34(data) 1367 57 + 1373: 22(i16vec4) Load 1372 + 1374: 22(i16vec4) VectorShuffle 1373 1371 4 5 6 3 + Store 1372 1374 + 1375: 6(int) Load 8(invocation) + 1376: 1150(ptr) AccessChain 34(data) 67 57 + 1377: 22(i16vec4) Load 1376 + 1378: 22(i16vec4) GroupNonUniformIMul 42 InclusiveScan 1377 + 1379: 1150(ptr) AccessChain 34(data) 1375 57 + Store 1379 1378 + 1380: 6(int) Load 8(invocation) + 1381: 1143(ptr) AccessChain 34(data) 37 57 38 + 1382: 21(int16_t) Load 1381 + 1383: 21(int16_t) GroupNonUniformSMin 42 InclusiveScan 1382 + 1384: 1143(ptr) AccessChain 34(data) 1380 57 38 + Store 1384 1383 + 1385: 6(int) Load 8(invocation) + 1386: 1150(ptr) AccessChain 34(data) 46 57 + 1387: 22(i16vec4) Load 1386 + 1388:1149(i16vec2) VectorShuffle 1387 1387 0 1 + 1389:1149(i16vec2) GroupNonUniformSMin 42 InclusiveScan 1388 + 1390: 1150(ptr) AccessChain 34(data) 1385 57 + 1391: 22(i16vec4) Load 1390 + 1392: 22(i16vec4) VectorShuffle 1391 1389 4 5 2 3 + Store 1390 1392 + 1393: 6(int) Load 8(invocation) + 1394: 1150(ptr) AccessChain 34(data) 57 57 + 1395: 22(i16vec4) Load 1394 + 1396:1159(i16vec3) VectorShuffle 1395 1395 0 1 2 + 1397:1159(i16vec3) GroupNonUniformSMin 42 InclusiveScan 1396 + 1398: 1150(ptr) AccessChain 34(data) 1393 57 + 1399: 22(i16vec4) Load 1398 + 1400: 22(i16vec4) VectorShuffle 1399 1397 4 5 6 3 + Store 1398 1400 + 1401: 6(int) Load 8(invocation) + 1402: 1150(ptr) AccessChain 34(data) 67 57 + 1403: 22(i16vec4) Load 1402 + 1404: 22(i16vec4) GroupNonUniformSMin 42 InclusiveScan 1403 + 1405: 1150(ptr) AccessChain 34(data) 1401 57 + Store 1405 1404 + 1406: 6(int) Load 8(invocation) + 1407: 1143(ptr) AccessChain 34(data) 37 57 38 + 1408: 21(int16_t) Load 1407 + 1409: 21(int16_t) GroupNonUniformSMax 42 InclusiveScan 1408 + 1410: 1143(ptr) AccessChain 34(data) 1406 57 38 + Store 1410 1409 + 1411: 6(int) Load 8(invocation) + 1412: 1150(ptr) AccessChain 34(data) 46 57 + 1413: 22(i16vec4) Load 1412 + 1414:1149(i16vec2) VectorShuffle 1413 1413 0 1 + 1415:1149(i16vec2) GroupNonUniformSMax 42 InclusiveScan 1414 + 1416: 1150(ptr) AccessChain 34(data) 1411 57 + 1417: 22(i16vec4) Load 1416 + 1418: 22(i16vec4) VectorShuffle 1417 1415 4 5 2 3 + Store 1416 1418 + 1419: 6(int) Load 8(invocation) + 1420: 1150(ptr) AccessChain 34(data) 57 57 + 1421: 22(i16vec4) Load 1420 + 1422:1159(i16vec3) VectorShuffle 1421 1421 0 1 2 + 1423:1159(i16vec3) GroupNonUniformSMax 42 InclusiveScan 1422 + 1424: 1150(ptr) AccessChain 34(data) 1419 57 + 1425: 22(i16vec4) Load 1424 + 1426: 22(i16vec4) VectorShuffle 1425 1423 4 5 6 3 + Store 1424 1426 + 1427: 6(int) Load 8(invocation) + 1428: 1150(ptr) AccessChain 34(data) 67 57 + 1429: 22(i16vec4) Load 1428 + 1430: 22(i16vec4) GroupNonUniformSMax 42 InclusiveScan 1429 + 1431: 1150(ptr) AccessChain 34(data) 1427 57 + Store 1431 1430 + 1432: 6(int) Load 8(invocation) + 1433: 1143(ptr) AccessChain 34(data) 37 57 38 + 1434: 21(int16_t) Load 1433 + 1435: 21(int16_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 1434 + 1436: 1143(ptr) AccessChain 34(data) 1432 57 38 + Store 1436 1435 + 1437: 6(int) Load 8(invocation) + 1438: 1150(ptr) AccessChain 34(data) 46 57 + 1439: 22(i16vec4) Load 1438 + 1440:1149(i16vec2) VectorShuffle 1439 1439 0 1 + 1441:1149(i16vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 1440 + 1442: 1150(ptr) AccessChain 34(data) 1437 57 + 1443: 22(i16vec4) Load 1442 + 1444: 22(i16vec4) VectorShuffle 1443 1441 4 5 2 3 + Store 1442 1444 + 1445: 6(int) Load 8(invocation) + 1446: 1150(ptr) AccessChain 34(data) 57 57 + 1447: 22(i16vec4) Load 1446 + 1448:1159(i16vec3) VectorShuffle 1447 1447 0 1 2 + 1449:1159(i16vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 1448 + 1450: 1150(ptr) AccessChain 34(data) 1445 57 + 1451: 22(i16vec4) Load 1450 + 1452: 22(i16vec4) VectorShuffle 1451 1449 4 5 6 3 + Store 1450 1452 + 1453: 6(int) Load 8(invocation) + 1454: 1150(ptr) AccessChain 34(data) 67 57 + 1455: 22(i16vec4) Load 1454 + 1456: 22(i16vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 1455 + 1457: 1150(ptr) AccessChain 34(data) 1453 57 + Store 1457 1456 + 1458: 6(int) Load 8(invocation) + 1459: 1143(ptr) AccessChain 34(data) 37 57 38 + 1460: 21(int16_t) Load 1459 + 1461: 21(int16_t) GroupNonUniformBitwiseOr 42 InclusiveScan 1460 + 1462: 1143(ptr) AccessChain 34(data) 1458 57 38 + Store 1462 1461 + 1463: 6(int) Load 8(invocation) + 1464: 1150(ptr) AccessChain 34(data) 46 57 + 1465: 22(i16vec4) Load 1464 + 1466:1149(i16vec2) VectorShuffle 1465 1465 0 1 + 1467:1149(i16vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 1466 + 1468: 1150(ptr) AccessChain 34(data) 1463 57 + 1469: 22(i16vec4) Load 1468 + 1470: 22(i16vec4) VectorShuffle 1469 1467 4 5 2 3 + Store 1468 1470 + 1471: 6(int) Load 8(invocation) + 1472: 1150(ptr) AccessChain 34(data) 57 57 + 1473: 22(i16vec4) Load 1472 + 1474:1159(i16vec3) VectorShuffle 1473 1473 0 1 2 + 1475:1159(i16vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 1474 + 1476: 1150(ptr) AccessChain 34(data) 1471 57 + 1477: 22(i16vec4) Load 1476 + 1478: 22(i16vec4) VectorShuffle 1477 1475 4 5 6 3 + Store 1476 1478 + 1479: 6(int) Load 8(invocation) + 1480: 1150(ptr) AccessChain 34(data) 67 57 + 1481: 22(i16vec4) Load 1480 + 1482: 22(i16vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 1481 + 1483: 1150(ptr) AccessChain 34(data) 1479 57 + Store 1483 1482 + 1484: 6(int) Load 8(invocation) + 1485: 1143(ptr) AccessChain 34(data) 37 57 38 + 1486: 21(int16_t) Load 1485 + 1487: 21(int16_t) GroupNonUniformBitwiseXor 42 InclusiveScan 1486 + 1488: 1143(ptr) AccessChain 34(data) 1484 57 38 + Store 1488 1487 + 1489: 6(int) Load 8(invocation) + 1490: 1150(ptr) AccessChain 34(data) 46 57 + 1491: 22(i16vec4) Load 1490 + 1492:1149(i16vec2) VectorShuffle 1491 1491 0 1 + 1493:1149(i16vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 1492 + 1494: 1150(ptr) AccessChain 34(data) 1489 57 + 1495: 22(i16vec4) Load 1494 + 1496: 22(i16vec4) VectorShuffle 1495 1493 4 5 2 3 + Store 1494 1496 + 1497: 6(int) Load 8(invocation) + 1498: 1150(ptr) AccessChain 34(data) 57 57 + 1499: 22(i16vec4) Load 1498 + 1500:1159(i16vec3) VectorShuffle 1499 1499 0 1 2 + 1501:1159(i16vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 1500 + 1502: 1150(ptr) AccessChain 34(data) 1497 57 + 1503: 22(i16vec4) Load 1502 + 1504: 22(i16vec4) VectorShuffle 1503 1501 4 5 6 3 + Store 1502 1504 + 1505: 6(int) Load 8(invocation) + 1506: 1150(ptr) AccessChain 34(data) 67 57 + 1507: 22(i16vec4) Load 1506 + 1508: 22(i16vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 1507 + 1509: 1150(ptr) AccessChain 34(data) 1505 57 + Store 1509 1508 + 1510: 6(int) Load 8(invocation) + 1511: 1143(ptr) AccessChain 34(data) 37 57 38 + 1512: 21(int16_t) Load 1511 + 1513: 21(int16_t) GroupNonUniformIAdd 42 ExclusiveScan 1512 + 1514: 1143(ptr) AccessChain 34(data) 1510 57 38 + Store 1514 1513 + 1515: 6(int) Load 8(invocation) + 1516: 1150(ptr) AccessChain 34(data) 46 57 + 1517: 22(i16vec4) Load 1516 + 1518:1149(i16vec2) VectorShuffle 1517 1517 0 1 + 1519:1149(i16vec2) GroupNonUniformIAdd 42 ExclusiveScan 1518 + 1520: 1150(ptr) AccessChain 34(data) 1515 57 + 1521: 22(i16vec4) Load 1520 + 1522: 22(i16vec4) VectorShuffle 1521 1519 4 5 2 3 + Store 1520 1522 + 1523: 6(int) Load 8(invocation) + 1524: 1150(ptr) AccessChain 34(data) 57 57 + 1525: 22(i16vec4) Load 1524 + 1526:1159(i16vec3) VectorShuffle 1525 1525 0 1 2 + 1527:1159(i16vec3) GroupNonUniformIAdd 42 ExclusiveScan 1526 + 1528: 1150(ptr) AccessChain 34(data) 1523 57 + 1529: 22(i16vec4) Load 1528 + 1530: 22(i16vec4) VectorShuffle 1529 1527 4 5 6 3 + Store 1528 1530 + 1531: 6(int) Load 8(invocation) + 1532: 1150(ptr) AccessChain 34(data) 67 57 + 1533: 22(i16vec4) Load 1532 + 1534: 22(i16vec4) GroupNonUniformIAdd 42 ExclusiveScan 1533 + 1535: 1150(ptr) AccessChain 34(data) 1531 57 + Store 1535 1534 + 1536: 6(int) Load 8(invocation) + 1537: 1143(ptr) AccessChain 34(data) 37 57 38 + 1538: 21(int16_t) Load 1537 + 1539: 21(int16_t) GroupNonUniformIMul 42 ExclusiveScan 1538 + 1540: 1143(ptr) AccessChain 34(data) 1536 57 38 + Store 1540 1539 + 1541: 6(int) Load 8(invocation) + 1542: 1150(ptr) AccessChain 34(data) 46 57 + 1543: 22(i16vec4) Load 1542 + 1544:1149(i16vec2) VectorShuffle 1543 1543 0 1 + 1545:1149(i16vec2) GroupNonUniformIMul 42 ExclusiveScan 1544 + 1546: 1150(ptr) AccessChain 34(data) 1541 57 + 1547: 22(i16vec4) Load 1546 + 1548: 22(i16vec4) VectorShuffle 1547 1545 4 5 2 3 + Store 1546 1548 + 1549: 6(int) Load 8(invocation) + 1550: 1150(ptr) AccessChain 34(data) 57 57 + 1551: 22(i16vec4) Load 1550 + 1552:1159(i16vec3) VectorShuffle 1551 1551 0 1 2 + 1553:1159(i16vec3) GroupNonUniformIMul 42 ExclusiveScan 1552 + 1554: 1150(ptr) AccessChain 34(data) 1549 57 + 1555: 22(i16vec4) Load 1554 + 1556: 22(i16vec4) VectorShuffle 1555 1553 4 5 6 3 + Store 1554 1556 + 1557: 6(int) Load 8(invocation) + 1558: 1150(ptr) AccessChain 34(data) 67 57 + 1559: 22(i16vec4) Load 1558 + 1560: 22(i16vec4) GroupNonUniformIMul 42 ExclusiveScan 1559 + 1561: 1150(ptr) AccessChain 34(data) 1557 57 + Store 1561 1560 + 1562: 6(int) Load 8(invocation) + 1563: 1143(ptr) AccessChain 34(data) 37 57 38 + 1564: 21(int16_t) Load 1563 + 1565: 21(int16_t) GroupNonUniformSMin 42 ExclusiveScan 1564 + 1566: 1143(ptr) AccessChain 34(data) 1562 57 38 + Store 1566 1565 + 1567: 6(int) Load 8(invocation) + 1568: 1150(ptr) AccessChain 34(data) 46 57 + 1569: 22(i16vec4) Load 1568 + 1570:1149(i16vec2) VectorShuffle 1569 1569 0 1 + 1571:1149(i16vec2) GroupNonUniformSMin 42 ExclusiveScan 1570 + 1572: 1150(ptr) AccessChain 34(data) 1567 57 + 1573: 22(i16vec4) Load 1572 + 1574: 22(i16vec4) VectorShuffle 1573 1571 4 5 2 3 + Store 1572 1574 + 1575: 6(int) Load 8(invocation) + 1576: 1150(ptr) AccessChain 34(data) 57 57 + 1577: 22(i16vec4) Load 1576 + 1578:1159(i16vec3) VectorShuffle 1577 1577 0 1 2 + 1579:1159(i16vec3) GroupNonUniformSMin 42 ExclusiveScan 1578 + 1580: 1150(ptr) AccessChain 34(data) 1575 57 + 1581: 22(i16vec4) Load 1580 + 1582: 22(i16vec4) VectorShuffle 1581 1579 4 5 6 3 + Store 1580 1582 + 1583: 6(int) Load 8(invocation) + 1584: 1150(ptr) AccessChain 34(data) 67 57 + 1585: 22(i16vec4) Load 1584 + 1586: 22(i16vec4) GroupNonUniformSMin 42 ExclusiveScan 1585 + 1587: 1150(ptr) AccessChain 34(data) 1583 57 + Store 1587 1586 + 1588: 6(int) Load 8(invocation) + 1589: 1143(ptr) AccessChain 34(data) 37 57 38 + 1590: 21(int16_t) Load 1589 + 1591: 21(int16_t) GroupNonUniformSMax 42 ExclusiveScan 1590 + 1592: 1143(ptr) AccessChain 34(data) 1588 57 38 + Store 1592 1591 + 1593: 6(int) Load 8(invocation) + 1594: 1150(ptr) AccessChain 34(data) 46 57 + 1595: 22(i16vec4) Load 1594 + 1596:1149(i16vec2) VectorShuffle 1595 1595 0 1 + 1597:1149(i16vec2) GroupNonUniformSMax 42 ExclusiveScan 1596 + 1598: 1150(ptr) AccessChain 34(data) 1593 57 + 1599: 22(i16vec4) Load 1598 + 1600: 22(i16vec4) VectorShuffle 1599 1597 4 5 2 3 + Store 1598 1600 + 1601: 6(int) Load 8(invocation) + 1602: 1150(ptr) AccessChain 34(data) 57 57 + 1603: 22(i16vec4) Load 1602 + 1604:1159(i16vec3) VectorShuffle 1603 1603 0 1 2 + 1605:1159(i16vec3) GroupNonUniformSMax 42 ExclusiveScan 1604 + 1606: 1150(ptr) AccessChain 34(data) 1601 57 + 1607: 22(i16vec4) Load 1606 + 1608: 22(i16vec4) VectorShuffle 1607 1605 4 5 6 3 + Store 1606 1608 + 1609: 6(int) Load 8(invocation) + 1610: 1150(ptr) AccessChain 34(data) 67 57 + 1611: 22(i16vec4) Load 1610 + 1612: 22(i16vec4) GroupNonUniformSMax 42 ExclusiveScan 1611 + 1613: 1150(ptr) AccessChain 34(data) 1609 57 + Store 1613 1612 + 1614: 6(int) Load 8(invocation) + 1615: 1143(ptr) AccessChain 34(data) 37 57 38 + 1616: 21(int16_t) Load 1615 + 1617: 21(int16_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1616 + 1618: 1143(ptr) AccessChain 34(data) 1614 57 38 + Store 1618 1617 + 1619: 6(int) Load 8(invocation) + 1620: 1150(ptr) AccessChain 34(data) 46 57 + 1621: 22(i16vec4) Load 1620 + 1622:1149(i16vec2) VectorShuffle 1621 1621 0 1 + 1623:1149(i16vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1622 + 1624: 1150(ptr) AccessChain 34(data) 1619 57 + 1625: 22(i16vec4) Load 1624 + 1626: 22(i16vec4) VectorShuffle 1625 1623 4 5 2 3 + Store 1624 1626 + 1627: 6(int) Load 8(invocation) + 1628: 1150(ptr) AccessChain 34(data) 57 57 + 1629: 22(i16vec4) Load 1628 + 1630:1159(i16vec3) VectorShuffle 1629 1629 0 1 2 + 1631:1159(i16vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1630 + 1632: 1150(ptr) AccessChain 34(data) 1627 57 + 1633: 22(i16vec4) Load 1632 + 1634: 22(i16vec4) VectorShuffle 1633 1631 4 5 6 3 + Store 1632 1634 + 1635: 6(int) Load 8(invocation) + 1636: 1150(ptr) AccessChain 34(data) 67 57 + 1637: 22(i16vec4) Load 1636 + 1638: 22(i16vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1637 + 1639: 1150(ptr) AccessChain 34(data) 1635 57 + Store 1639 1638 + 1640: 6(int) Load 8(invocation) + 1641: 1143(ptr) AccessChain 34(data) 37 57 38 + 1642: 21(int16_t) Load 1641 + 1643: 21(int16_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 1642 + 1644: 1143(ptr) AccessChain 34(data) 1640 57 38 + Store 1644 1643 + 1645: 6(int) Load 8(invocation) + 1646: 1150(ptr) AccessChain 34(data) 46 57 + 1647: 22(i16vec4) Load 1646 + 1648:1149(i16vec2) VectorShuffle 1647 1647 0 1 + 1649:1149(i16vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 1648 + 1650: 1150(ptr) AccessChain 34(data) 1645 57 + 1651: 22(i16vec4) Load 1650 + 1652: 22(i16vec4) VectorShuffle 1651 1649 4 5 2 3 + Store 1650 1652 + 1653: 6(int) Load 8(invocation) + 1654: 1150(ptr) AccessChain 34(data) 57 57 + 1655: 22(i16vec4) Load 1654 + 1656:1159(i16vec3) VectorShuffle 1655 1655 0 1 2 + 1657:1159(i16vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 1656 + 1658: 1150(ptr) AccessChain 34(data) 1653 57 + 1659: 22(i16vec4) Load 1658 + 1660: 22(i16vec4) VectorShuffle 1659 1657 4 5 6 3 + Store 1658 1660 + 1661: 6(int) Load 8(invocation) + 1662: 1150(ptr) AccessChain 34(data) 67 57 + 1663: 22(i16vec4) Load 1662 + 1664: 22(i16vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 1663 + 1665: 1150(ptr) AccessChain 34(data) 1661 57 + Store 1665 1664 + 1666: 6(int) Load 8(invocation) + 1667: 1143(ptr) AccessChain 34(data) 37 57 38 + 1668: 21(int16_t) Load 1667 + 1669: 21(int16_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 1668 + 1670: 1143(ptr) AccessChain 34(data) 1666 57 38 + Store 1670 1669 + 1671: 6(int) Load 8(invocation) + 1672: 1150(ptr) AccessChain 34(data) 46 57 + 1673: 22(i16vec4) Load 1672 + 1674:1149(i16vec2) VectorShuffle 1673 1673 0 1 + 1675:1149(i16vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 1674 + 1676: 1150(ptr) AccessChain 34(data) 1671 57 + 1677: 22(i16vec4) Load 1676 + 1678: 22(i16vec4) VectorShuffle 1677 1675 4 5 2 3 + Store 1676 1678 + 1679: 6(int) Load 8(invocation) + 1680: 1150(ptr) AccessChain 34(data) 57 57 + 1681: 22(i16vec4) Load 1680 + 1682:1159(i16vec3) VectorShuffle 1681 1681 0 1 2 + 1683:1159(i16vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 1682 + 1684: 1150(ptr) AccessChain 34(data) 1679 57 + 1685: 22(i16vec4) Load 1684 + 1686: 22(i16vec4) VectorShuffle 1685 1683 4 5 6 3 + Store 1684 1686 + 1687: 6(int) Load 8(invocation) + 1688: 1150(ptr) AccessChain 34(data) 67 57 + 1689: 22(i16vec4) Load 1688 + 1690: 22(i16vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 1689 + 1691: 1150(ptr) AccessChain 34(data) 1687 57 + Store 1691 1690 + 1692: 6(int) Load 8(invocation) + 1694: 1693(ptr) AccessChain 34(data) 37 67 38 + 1695: 23(int16_t) Load 1694 + 1696: 23(int16_t) GroupNonUniformIAdd 42 Reduce 1695 + 1697: 1693(ptr) AccessChain 34(data) 1692 67 38 + Store 1697 1696 + 1698: 6(int) Load 8(invocation) + 1701: 1700(ptr) AccessChain 34(data) 46 67 + 1702: 24(i16vec4) Load 1701 + 1703:1699(i16vec2) VectorShuffle 1702 1702 0 1 + 1704:1699(i16vec2) GroupNonUniformIAdd 42 Reduce 1703 + 1705: 1700(ptr) AccessChain 34(data) 1698 67 + 1706: 24(i16vec4) Load 1705 + 1707: 24(i16vec4) VectorShuffle 1706 1704 4 5 2 3 + Store 1705 1707 + 1708: 6(int) Load 8(invocation) + 1710: 1700(ptr) AccessChain 34(data) 57 67 + 1711: 24(i16vec4) Load 1710 + 1712:1709(i16vec3) VectorShuffle 1711 1711 0 1 2 + 1713:1709(i16vec3) GroupNonUniformIAdd 42 Reduce 1712 + 1714: 1700(ptr) AccessChain 34(data) 1708 67 + 1715: 24(i16vec4) Load 1714 + 1716: 24(i16vec4) VectorShuffle 1715 1713 4 5 6 3 + Store 1714 1716 + 1717: 6(int) Load 8(invocation) + 1718: 1700(ptr) AccessChain 34(data) 67 67 + 1719: 24(i16vec4) Load 1718 + 1720: 24(i16vec4) GroupNonUniformIAdd 42 Reduce 1719 + 1721: 1700(ptr) AccessChain 34(data) 1717 67 + Store 1721 1720 + 1722: 6(int) Load 8(invocation) + 1723: 1693(ptr) AccessChain 34(data) 37 67 38 + 1724: 23(int16_t) Load 1723 + 1725: 23(int16_t) GroupNonUniformIMul 42 Reduce 1724 + 1726: 1693(ptr) AccessChain 34(data) 1722 67 38 + Store 1726 1725 + 1727: 6(int) Load 8(invocation) + 1728: 1700(ptr) AccessChain 34(data) 46 67 + 1729: 24(i16vec4) Load 1728 + 1730:1699(i16vec2) VectorShuffle 1729 1729 0 1 + 1731:1699(i16vec2) GroupNonUniformIMul 42 Reduce 1730 + 1732: 1700(ptr) AccessChain 34(data) 1727 67 + 1733: 24(i16vec4) Load 1732 + 1734: 24(i16vec4) VectorShuffle 1733 1731 4 5 2 3 + Store 1732 1734 + 1735: 6(int) Load 8(invocation) + 1736: 1700(ptr) AccessChain 34(data) 57 67 + 1737: 24(i16vec4) Load 1736 + 1738:1709(i16vec3) VectorShuffle 1737 1737 0 1 2 + 1739:1709(i16vec3) GroupNonUniformIMul 42 Reduce 1738 + 1740: 1700(ptr) AccessChain 34(data) 1735 67 + 1741: 24(i16vec4) Load 1740 + 1742: 24(i16vec4) VectorShuffle 1741 1739 4 5 6 3 + Store 1740 1742 + 1743: 6(int) Load 8(invocation) + 1744: 1700(ptr) AccessChain 34(data) 67 67 + 1745: 24(i16vec4) Load 1744 + 1746: 24(i16vec4) GroupNonUniformIMul 42 Reduce 1745 + 1747: 1700(ptr) AccessChain 34(data) 1743 67 + Store 1747 1746 + 1748: 6(int) Load 8(invocation) + 1749: 1693(ptr) AccessChain 34(data) 37 67 38 + 1750: 23(int16_t) Load 1749 + 1751: 23(int16_t) GroupNonUniformUMin 42 Reduce 1750 + 1752: 1693(ptr) AccessChain 34(data) 1748 67 38 + Store 1752 1751 + 1753: 6(int) Load 8(invocation) + 1754: 1700(ptr) AccessChain 34(data) 46 67 + 1755: 24(i16vec4) Load 1754 + 1756:1699(i16vec2) VectorShuffle 1755 1755 0 1 + 1757:1699(i16vec2) GroupNonUniformUMin 42 Reduce 1756 + 1758: 1700(ptr) AccessChain 34(data) 1753 67 + 1759: 24(i16vec4) Load 1758 + 1760: 24(i16vec4) VectorShuffle 1759 1757 4 5 2 3 + Store 1758 1760 + 1761: 6(int) Load 8(invocation) + 1762: 1700(ptr) AccessChain 34(data) 57 67 + 1763: 24(i16vec4) Load 1762 + 1764:1709(i16vec3) VectorShuffle 1763 1763 0 1 2 + 1765:1709(i16vec3) GroupNonUniformUMin 42 Reduce 1764 + 1766: 1700(ptr) AccessChain 34(data) 1761 67 + 1767: 24(i16vec4) Load 1766 + 1768: 24(i16vec4) VectorShuffle 1767 1765 4 5 6 3 + Store 1766 1768 + 1769: 6(int) Load 8(invocation) + 1770: 1700(ptr) AccessChain 34(data) 67 67 + 1771: 24(i16vec4) Load 1770 + 1772: 24(i16vec4) GroupNonUniformUMin 42 Reduce 1771 + 1773: 1700(ptr) AccessChain 34(data) 1769 67 + Store 1773 1772 + 1774: 6(int) Load 8(invocation) + 1775: 1693(ptr) AccessChain 34(data) 37 67 38 + 1776: 23(int16_t) Load 1775 + 1777: 23(int16_t) GroupNonUniformUMax 42 Reduce 1776 + 1778: 1693(ptr) AccessChain 34(data) 1774 67 38 + Store 1778 1777 + 1779: 6(int) Load 8(invocation) + 1780: 1700(ptr) AccessChain 34(data) 46 67 + 1781: 24(i16vec4) Load 1780 + 1782:1699(i16vec2) VectorShuffle 1781 1781 0 1 + 1783:1699(i16vec2) GroupNonUniformUMax 42 Reduce 1782 + 1784: 1700(ptr) AccessChain 34(data) 1779 67 + 1785: 24(i16vec4) Load 1784 + 1786: 24(i16vec4) VectorShuffle 1785 1783 4 5 2 3 + Store 1784 1786 + 1787: 6(int) Load 8(invocation) + 1788: 1700(ptr) AccessChain 34(data) 57 67 + 1789: 24(i16vec4) Load 1788 + 1790:1709(i16vec3) VectorShuffle 1789 1789 0 1 2 + 1791:1709(i16vec3) GroupNonUniformUMax 42 Reduce 1790 + 1792: 1700(ptr) AccessChain 34(data) 1787 67 + 1793: 24(i16vec4) Load 1792 + 1794: 24(i16vec4) VectorShuffle 1793 1791 4 5 6 3 + Store 1792 1794 + 1795: 6(int) Load 8(invocation) + 1796: 1700(ptr) AccessChain 34(data) 67 67 + 1797: 24(i16vec4) Load 1796 + 1798: 24(i16vec4) GroupNonUniformUMax 42 Reduce 1797 + 1799: 1700(ptr) AccessChain 34(data) 1795 67 + Store 1799 1798 + 1800: 6(int) Load 8(invocation) + 1801: 1693(ptr) AccessChain 34(data) 37 67 38 + 1802: 23(int16_t) Load 1801 + 1803: 23(int16_t) GroupNonUniformBitwiseAnd 42 Reduce 1802 + 1804: 1693(ptr) AccessChain 34(data) 1800 67 38 + Store 1804 1803 + 1805: 6(int) Load 8(invocation) + 1806: 1700(ptr) AccessChain 34(data) 46 67 + 1807: 24(i16vec4) Load 1806 + 1808:1699(i16vec2) VectorShuffle 1807 1807 0 1 + 1809:1699(i16vec2) GroupNonUniformBitwiseAnd 42 Reduce 1808 + 1810: 1700(ptr) AccessChain 34(data) 1805 67 + 1811: 24(i16vec4) Load 1810 + 1812: 24(i16vec4) VectorShuffle 1811 1809 4 5 2 3 + Store 1810 1812 + 1813: 6(int) Load 8(invocation) + 1814: 1700(ptr) AccessChain 34(data) 57 67 + 1815: 24(i16vec4) Load 1814 + 1816:1709(i16vec3) VectorShuffle 1815 1815 0 1 2 + 1817:1709(i16vec3) GroupNonUniformBitwiseAnd 42 Reduce 1816 + 1818: 1700(ptr) AccessChain 34(data) 1813 67 + 1819: 24(i16vec4) Load 1818 + 1820: 24(i16vec4) VectorShuffle 1819 1817 4 5 6 3 + Store 1818 1820 + 1821: 6(int) Load 8(invocation) + 1822: 1700(ptr) AccessChain 34(data) 67 67 + 1823: 24(i16vec4) Load 1822 + 1824: 24(i16vec4) GroupNonUniformBitwiseAnd 42 Reduce 1823 + 1825: 1700(ptr) AccessChain 34(data) 1821 67 + Store 1825 1824 + 1826: 6(int) Load 8(invocation) + 1827: 1693(ptr) AccessChain 34(data) 37 67 38 + 1828: 23(int16_t) Load 1827 + 1829: 23(int16_t) GroupNonUniformBitwiseOr 42 Reduce 1828 + 1830: 1693(ptr) AccessChain 34(data) 1826 67 38 + Store 1830 1829 + 1831: 6(int) Load 8(invocation) + 1832: 1700(ptr) AccessChain 34(data) 46 67 + 1833: 24(i16vec4) Load 1832 + 1834:1699(i16vec2) VectorShuffle 1833 1833 0 1 + 1835:1699(i16vec2) GroupNonUniformBitwiseOr 42 Reduce 1834 + 1836: 1700(ptr) AccessChain 34(data) 1831 67 + 1837: 24(i16vec4) Load 1836 + 1838: 24(i16vec4) VectorShuffle 1837 1835 4 5 2 3 + Store 1836 1838 + 1839: 6(int) Load 8(invocation) + 1840: 1700(ptr) AccessChain 34(data) 57 67 + 1841: 24(i16vec4) Load 1840 + 1842:1709(i16vec3) VectorShuffle 1841 1841 0 1 2 + 1843:1709(i16vec3) GroupNonUniformBitwiseOr 42 Reduce 1842 + 1844: 1700(ptr) AccessChain 34(data) 1839 67 + 1845: 24(i16vec4) Load 1844 + 1846: 24(i16vec4) VectorShuffle 1845 1843 4 5 6 3 + Store 1844 1846 + 1847: 6(int) Load 8(invocation) + 1848: 1700(ptr) AccessChain 34(data) 67 67 + 1849: 24(i16vec4) Load 1848 + 1850: 24(i16vec4) GroupNonUniformBitwiseOr 42 Reduce 1849 + 1851: 1700(ptr) AccessChain 34(data) 1847 67 + Store 1851 1850 + 1852: 6(int) Load 8(invocation) + 1853: 1693(ptr) AccessChain 34(data) 37 67 38 + 1854: 23(int16_t) Load 1853 + 1855: 23(int16_t) GroupNonUniformBitwiseXor 42 Reduce 1854 + 1856: 1693(ptr) AccessChain 34(data) 1852 67 38 + Store 1856 1855 + 1857: 6(int) Load 8(invocation) + 1858: 1700(ptr) AccessChain 34(data) 46 67 + 1859: 24(i16vec4) Load 1858 + 1860:1699(i16vec2) VectorShuffle 1859 1859 0 1 + 1861:1699(i16vec2) GroupNonUniformBitwiseXor 42 Reduce 1860 + 1862: 1700(ptr) AccessChain 34(data) 1857 67 + 1863: 24(i16vec4) Load 1862 + 1864: 24(i16vec4) VectorShuffle 1863 1861 4 5 2 3 + Store 1862 1864 + 1865: 6(int) Load 8(invocation) + 1866: 1700(ptr) AccessChain 34(data) 57 67 + 1867: 24(i16vec4) Load 1866 + 1868:1709(i16vec3) VectorShuffle 1867 1867 0 1 2 + 1869:1709(i16vec3) GroupNonUniformBitwiseXor 42 Reduce 1868 + 1870: 1700(ptr) AccessChain 34(data) 1865 67 + 1871: 24(i16vec4) Load 1870 + 1872: 24(i16vec4) VectorShuffle 1871 1869 4 5 6 3 + Store 1870 1872 + 1873: 6(int) Load 8(invocation) + 1874: 1700(ptr) AccessChain 34(data) 67 67 + 1875: 24(i16vec4) Load 1874 + 1876: 24(i16vec4) GroupNonUniformBitwiseXor 42 Reduce 1875 + 1877: 1700(ptr) AccessChain 34(data) 1873 67 + Store 1877 1876 + 1878: 6(int) Load 8(invocation) + 1879: 1693(ptr) AccessChain 34(data) 37 67 38 + 1880: 23(int16_t) Load 1879 + 1881: 23(int16_t) GroupNonUniformIAdd 42 InclusiveScan 1880 + 1882: 1693(ptr) AccessChain 34(data) 1878 67 38 + Store 1882 1881 + 1883: 6(int) Load 8(invocation) + 1884: 1700(ptr) AccessChain 34(data) 46 67 + 1885: 24(i16vec4) Load 1884 + 1886:1699(i16vec2) VectorShuffle 1885 1885 0 1 + 1887:1699(i16vec2) GroupNonUniformIAdd 42 InclusiveScan 1886 + 1888: 1700(ptr) AccessChain 34(data) 1883 67 + 1889: 24(i16vec4) Load 1888 + 1890: 24(i16vec4) VectorShuffle 1889 1887 4 5 2 3 + Store 1888 1890 + 1891: 6(int) Load 8(invocation) + 1892: 1700(ptr) AccessChain 34(data) 57 67 + 1893: 24(i16vec4) Load 1892 + 1894:1709(i16vec3) VectorShuffle 1893 1893 0 1 2 + 1895:1709(i16vec3) GroupNonUniformIAdd 42 InclusiveScan 1894 + 1896: 1700(ptr) AccessChain 34(data) 1891 67 + 1897: 24(i16vec4) Load 1896 + 1898: 24(i16vec4) VectorShuffle 1897 1895 4 5 6 3 + Store 1896 1898 + 1899: 6(int) Load 8(invocation) + 1900: 1700(ptr) AccessChain 34(data) 67 67 + 1901: 24(i16vec4) Load 1900 + 1902: 24(i16vec4) GroupNonUniformIAdd 42 InclusiveScan 1901 + 1903: 1700(ptr) AccessChain 34(data) 1899 67 + Store 1903 1902 + 1904: 6(int) Load 8(invocation) + 1905: 1693(ptr) AccessChain 34(data) 37 67 38 + 1906: 23(int16_t) Load 1905 + 1907: 23(int16_t) GroupNonUniformIMul 42 InclusiveScan 1906 + 1908: 1693(ptr) AccessChain 34(data) 1904 67 38 + Store 1908 1907 + 1909: 6(int) Load 8(invocation) + 1910: 1700(ptr) AccessChain 34(data) 46 67 + 1911: 24(i16vec4) Load 1910 + 1912:1699(i16vec2) VectorShuffle 1911 1911 0 1 + 1913:1699(i16vec2) GroupNonUniformIMul 42 InclusiveScan 1912 + 1914: 1700(ptr) AccessChain 34(data) 1909 67 + 1915: 24(i16vec4) Load 1914 + 1916: 24(i16vec4) VectorShuffle 1915 1913 4 5 2 3 + Store 1914 1916 + 1917: 6(int) Load 8(invocation) + 1918: 1700(ptr) AccessChain 34(data) 57 67 + 1919: 24(i16vec4) Load 1918 + 1920:1709(i16vec3) VectorShuffle 1919 1919 0 1 2 + 1921:1709(i16vec3) GroupNonUniformIMul 42 InclusiveScan 1920 + 1922: 1700(ptr) AccessChain 34(data) 1917 67 + 1923: 24(i16vec4) Load 1922 + 1924: 24(i16vec4) VectorShuffle 1923 1921 4 5 6 3 + Store 1922 1924 + 1925: 6(int) Load 8(invocation) + 1926: 1700(ptr) AccessChain 34(data) 67 67 + 1927: 24(i16vec4) Load 1926 + 1928: 24(i16vec4) GroupNonUniformIMul 42 InclusiveScan 1927 + 1929: 1700(ptr) AccessChain 34(data) 1925 67 + Store 1929 1928 + 1930: 6(int) Load 8(invocation) + 1931: 1693(ptr) AccessChain 34(data) 37 67 38 + 1932: 23(int16_t) Load 1931 + 1933: 23(int16_t) GroupNonUniformUMin 42 InclusiveScan 1932 + 1934: 1693(ptr) AccessChain 34(data) 1930 67 38 + Store 1934 1933 + 1935: 6(int) Load 8(invocation) + 1936: 1700(ptr) AccessChain 34(data) 46 67 + 1937: 24(i16vec4) Load 1936 + 1938:1699(i16vec2) VectorShuffle 1937 1937 0 1 + 1939:1699(i16vec2) GroupNonUniformUMin 42 InclusiveScan 1938 + 1940: 1700(ptr) AccessChain 34(data) 1935 67 + 1941: 24(i16vec4) Load 1940 + 1942: 24(i16vec4) VectorShuffle 1941 1939 4 5 2 3 + Store 1940 1942 + 1943: 6(int) Load 8(invocation) + 1944: 1700(ptr) AccessChain 34(data) 57 67 + 1945: 24(i16vec4) Load 1944 + 1946:1709(i16vec3) VectorShuffle 1945 1945 0 1 2 + 1947:1709(i16vec3) GroupNonUniformUMin 42 InclusiveScan 1946 + 1948: 1700(ptr) AccessChain 34(data) 1943 67 + 1949: 24(i16vec4) Load 1948 + 1950: 24(i16vec4) VectorShuffle 1949 1947 4 5 6 3 + Store 1948 1950 + 1951: 6(int) Load 8(invocation) + 1952: 1700(ptr) AccessChain 34(data) 67 67 + 1953: 24(i16vec4) Load 1952 + 1954: 24(i16vec4) GroupNonUniformUMin 42 InclusiveScan 1953 + 1955: 1700(ptr) AccessChain 34(data) 1951 67 + Store 1955 1954 + 1956: 6(int) Load 8(invocation) + 1957: 1693(ptr) AccessChain 34(data) 37 67 38 + 1958: 23(int16_t) Load 1957 + 1959: 23(int16_t) GroupNonUniformUMax 42 InclusiveScan 1958 + 1960: 1693(ptr) AccessChain 34(data) 1956 67 38 + Store 1960 1959 + 1961: 6(int) Load 8(invocation) + 1962: 1700(ptr) AccessChain 34(data) 46 67 + 1963: 24(i16vec4) Load 1962 + 1964:1699(i16vec2) VectorShuffle 1963 1963 0 1 + 1965:1699(i16vec2) GroupNonUniformUMax 42 InclusiveScan 1964 + 1966: 1700(ptr) AccessChain 34(data) 1961 67 + 1967: 24(i16vec4) Load 1966 + 1968: 24(i16vec4) VectorShuffle 1967 1965 4 5 2 3 + Store 1966 1968 + 1969: 6(int) Load 8(invocation) + 1970: 1700(ptr) AccessChain 34(data) 57 67 + 1971: 24(i16vec4) Load 1970 + 1972:1709(i16vec3) VectorShuffle 1971 1971 0 1 2 + 1973:1709(i16vec3) GroupNonUniformUMax 42 InclusiveScan 1972 + 1974: 1700(ptr) AccessChain 34(data) 1969 67 + 1975: 24(i16vec4) Load 1974 + 1976: 24(i16vec4) VectorShuffle 1975 1973 4 5 6 3 + Store 1974 1976 + 1977: 6(int) Load 8(invocation) + 1978: 1700(ptr) AccessChain 34(data) 67 67 + 1979: 24(i16vec4) Load 1978 + 1980: 24(i16vec4) GroupNonUniformUMax 42 InclusiveScan 1979 + 1981: 1700(ptr) AccessChain 34(data) 1977 67 + Store 1981 1980 + 1982: 6(int) Load 8(invocation) + 1983: 1693(ptr) AccessChain 34(data) 37 67 38 + 1984: 23(int16_t) Load 1983 + 1985: 23(int16_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 1984 + 1986: 1693(ptr) AccessChain 34(data) 1982 67 38 + Store 1986 1985 + 1987: 6(int) Load 8(invocation) + 1988: 1700(ptr) AccessChain 34(data) 46 67 + 1989: 24(i16vec4) Load 1988 + 1990:1699(i16vec2) VectorShuffle 1989 1989 0 1 + 1991:1699(i16vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 1990 + 1992: 1700(ptr) AccessChain 34(data) 1987 67 + 1993: 24(i16vec4) Load 1992 + 1994: 24(i16vec4) VectorShuffle 1993 1991 4 5 2 3 + Store 1992 1994 + 1995: 6(int) Load 8(invocation) + 1996: 1700(ptr) AccessChain 34(data) 57 67 + 1997: 24(i16vec4) Load 1996 + 1998:1709(i16vec3) VectorShuffle 1997 1997 0 1 2 + 1999:1709(i16vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 1998 + 2000: 1700(ptr) AccessChain 34(data) 1995 67 + 2001: 24(i16vec4) Load 2000 + 2002: 24(i16vec4) VectorShuffle 2001 1999 4 5 6 3 + Store 2000 2002 + 2003: 6(int) Load 8(invocation) + 2004: 1700(ptr) AccessChain 34(data) 67 67 + 2005: 24(i16vec4) Load 2004 + 2006: 24(i16vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 2005 + 2007: 1700(ptr) AccessChain 34(data) 2003 67 + Store 2007 2006 + 2008: 6(int) Load 8(invocation) + 2009: 1693(ptr) AccessChain 34(data) 37 67 38 + 2010: 23(int16_t) Load 2009 + 2011: 23(int16_t) GroupNonUniformBitwiseOr 42 InclusiveScan 2010 + 2012: 1693(ptr) AccessChain 34(data) 2008 67 38 + Store 2012 2011 + 2013: 6(int) Load 8(invocation) + 2014: 1700(ptr) AccessChain 34(data) 46 67 + 2015: 24(i16vec4) Load 2014 + 2016:1699(i16vec2) VectorShuffle 2015 2015 0 1 + 2017:1699(i16vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 2016 + 2018: 1700(ptr) AccessChain 34(data) 2013 67 + 2019: 24(i16vec4) Load 2018 + 2020: 24(i16vec4) VectorShuffle 2019 2017 4 5 2 3 + Store 2018 2020 + 2021: 6(int) Load 8(invocation) + 2022: 1700(ptr) AccessChain 34(data) 57 67 + 2023: 24(i16vec4) Load 2022 + 2024:1709(i16vec3) VectorShuffle 2023 2023 0 1 2 + 2025:1709(i16vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 2024 + 2026: 1700(ptr) AccessChain 34(data) 2021 67 + 2027: 24(i16vec4) Load 2026 + 2028: 24(i16vec4) VectorShuffle 2027 2025 4 5 6 3 + Store 2026 2028 + 2029: 6(int) Load 8(invocation) + 2030: 1700(ptr) AccessChain 34(data) 67 67 + 2031: 24(i16vec4) Load 2030 + 2032: 24(i16vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 2031 + 2033: 1700(ptr) AccessChain 34(data) 2029 67 + Store 2033 2032 + 2034: 6(int) Load 8(invocation) + 2035: 1693(ptr) AccessChain 34(data) 37 67 38 + 2036: 23(int16_t) Load 2035 + 2037: 23(int16_t) GroupNonUniformBitwiseXor 42 InclusiveScan 2036 + 2038: 1693(ptr) AccessChain 34(data) 2034 67 38 + Store 2038 2037 + 2039: 6(int) Load 8(invocation) + 2040: 1700(ptr) AccessChain 34(data) 46 67 + 2041: 24(i16vec4) Load 2040 + 2042:1699(i16vec2) VectorShuffle 2041 2041 0 1 + 2043:1699(i16vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 2042 + 2044: 1700(ptr) AccessChain 34(data) 2039 67 + 2045: 24(i16vec4) Load 2044 + 2046: 24(i16vec4) VectorShuffle 2045 2043 4 5 2 3 + Store 2044 2046 + 2047: 6(int) Load 8(invocation) + 2048: 1700(ptr) AccessChain 34(data) 57 67 + 2049: 24(i16vec4) Load 2048 + 2050:1709(i16vec3) VectorShuffle 2049 2049 0 1 2 + 2051:1709(i16vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 2050 + 2052: 1700(ptr) AccessChain 34(data) 2047 67 + 2053: 24(i16vec4) Load 2052 + 2054: 24(i16vec4) VectorShuffle 2053 2051 4 5 6 3 + Store 2052 2054 + 2055: 6(int) Load 8(invocation) + 2056: 1700(ptr) AccessChain 34(data) 67 67 + 2057: 24(i16vec4) Load 2056 + 2058: 24(i16vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 2057 + 2059: 1700(ptr) AccessChain 34(data) 2055 67 + Store 2059 2058 + 2060: 6(int) Load 8(invocation) + 2061: 1693(ptr) AccessChain 34(data) 37 67 38 + 2062: 23(int16_t) Load 2061 + 2063: 23(int16_t) GroupNonUniformIAdd 42 ExclusiveScan 2062 + 2064: 1693(ptr) AccessChain 34(data) 2060 67 38 + Store 2064 2063 + 2065: 6(int) Load 8(invocation) + 2066: 1700(ptr) AccessChain 34(data) 46 67 + 2067: 24(i16vec4) Load 2066 + 2068:1699(i16vec2) VectorShuffle 2067 2067 0 1 + 2069:1699(i16vec2) GroupNonUniformIAdd 42 ExclusiveScan 2068 + 2070: 1700(ptr) AccessChain 34(data) 2065 67 + 2071: 24(i16vec4) Load 2070 + 2072: 24(i16vec4) VectorShuffle 2071 2069 4 5 2 3 + Store 2070 2072 + 2073: 6(int) Load 8(invocation) + 2074: 1700(ptr) AccessChain 34(data) 57 67 + 2075: 24(i16vec4) Load 2074 + 2076:1709(i16vec3) VectorShuffle 2075 2075 0 1 2 + 2077:1709(i16vec3) GroupNonUniformIAdd 42 ExclusiveScan 2076 + 2078: 1700(ptr) AccessChain 34(data) 2073 67 + 2079: 24(i16vec4) Load 2078 + 2080: 24(i16vec4) VectorShuffle 2079 2077 4 5 6 3 + Store 2078 2080 + 2081: 6(int) Load 8(invocation) + 2082: 1700(ptr) AccessChain 34(data) 67 67 + 2083: 24(i16vec4) Load 2082 + 2084: 24(i16vec4) GroupNonUniformIAdd 42 ExclusiveScan 2083 + 2085: 1700(ptr) AccessChain 34(data) 2081 67 + Store 2085 2084 + 2086: 6(int) Load 8(invocation) + 2087: 1693(ptr) AccessChain 34(data) 37 67 38 + 2088: 23(int16_t) Load 2087 + 2089: 23(int16_t) GroupNonUniformIMul 42 ExclusiveScan 2088 + 2090: 1693(ptr) AccessChain 34(data) 2086 67 38 + Store 2090 2089 + 2091: 6(int) Load 8(invocation) + 2092: 1700(ptr) AccessChain 34(data) 46 67 + 2093: 24(i16vec4) Load 2092 + 2094:1699(i16vec2) VectorShuffle 2093 2093 0 1 + 2095:1699(i16vec2) GroupNonUniformIMul 42 ExclusiveScan 2094 + 2096: 1700(ptr) AccessChain 34(data) 2091 67 + 2097: 24(i16vec4) Load 2096 + 2098: 24(i16vec4) VectorShuffle 2097 2095 4 5 2 3 + Store 2096 2098 + 2099: 6(int) Load 8(invocation) + 2100: 1700(ptr) AccessChain 34(data) 57 67 + 2101: 24(i16vec4) Load 2100 + 2102:1709(i16vec3) VectorShuffle 2101 2101 0 1 2 + 2103:1709(i16vec3) GroupNonUniformIMul 42 ExclusiveScan 2102 + 2104: 1700(ptr) AccessChain 34(data) 2099 67 + 2105: 24(i16vec4) Load 2104 + 2106: 24(i16vec4) VectorShuffle 2105 2103 4 5 6 3 + Store 2104 2106 + 2107: 6(int) Load 8(invocation) + 2108: 1700(ptr) AccessChain 34(data) 67 67 + 2109: 24(i16vec4) Load 2108 + 2110: 24(i16vec4) GroupNonUniformIMul 42 ExclusiveScan 2109 + 2111: 1700(ptr) AccessChain 34(data) 2107 67 + Store 2111 2110 + 2112: 6(int) Load 8(invocation) + 2113: 1693(ptr) AccessChain 34(data) 37 67 38 + 2114: 23(int16_t) Load 2113 + 2115: 23(int16_t) GroupNonUniformUMin 42 ExclusiveScan 2114 + 2116: 1693(ptr) AccessChain 34(data) 2112 67 38 + Store 2116 2115 + 2117: 6(int) Load 8(invocation) + 2118: 1700(ptr) AccessChain 34(data) 46 67 + 2119: 24(i16vec4) Load 2118 + 2120:1699(i16vec2) VectorShuffle 2119 2119 0 1 + 2121:1699(i16vec2) GroupNonUniformUMin 42 ExclusiveScan 2120 + 2122: 1700(ptr) AccessChain 34(data) 2117 67 + 2123: 24(i16vec4) Load 2122 + 2124: 24(i16vec4) VectorShuffle 2123 2121 4 5 2 3 + Store 2122 2124 + 2125: 6(int) Load 8(invocation) + 2126: 1700(ptr) AccessChain 34(data) 57 67 + 2127: 24(i16vec4) Load 2126 + 2128:1709(i16vec3) VectorShuffle 2127 2127 0 1 2 + 2129:1709(i16vec3) GroupNonUniformUMin 42 ExclusiveScan 2128 + 2130: 1700(ptr) AccessChain 34(data) 2125 67 + 2131: 24(i16vec4) Load 2130 + 2132: 24(i16vec4) VectorShuffle 2131 2129 4 5 6 3 + Store 2130 2132 + 2133: 6(int) Load 8(invocation) + 2134: 1700(ptr) AccessChain 34(data) 67 67 + 2135: 24(i16vec4) Load 2134 + 2136: 24(i16vec4) GroupNonUniformUMin 42 ExclusiveScan 2135 + 2137: 1700(ptr) AccessChain 34(data) 2133 67 + Store 2137 2136 + 2138: 6(int) Load 8(invocation) + 2139: 1693(ptr) AccessChain 34(data) 37 67 38 + 2140: 23(int16_t) Load 2139 + 2141: 23(int16_t) GroupNonUniformUMax 42 ExclusiveScan 2140 + 2142: 1693(ptr) AccessChain 34(data) 2138 67 38 + Store 2142 2141 + 2143: 6(int) Load 8(invocation) + 2144: 1700(ptr) AccessChain 34(data) 46 67 + 2145: 24(i16vec4) Load 2144 + 2146:1699(i16vec2) VectorShuffle 2145 2145 0 1 + 2147:1699(i16vec2) GroupNonUniformUMax 42 ExclusiveScan 2146 + 2148: 1700(ptr) AccessChain 34(data) 2143 67 + 2149: 24(i16vec4) Load 2148 + 2150: 24(i16vec4) VectorShuffle 2149 2147 4 5 2 3 + Store 2148 2150 + 2151: 6(int) Load 8(invocation) + 2152: 1700(ptr) AccessChain 34(data) 57 67 + 2153: 24(i16vec4) Load 2152 + 2154:1709(i16vec3) VectorShuffle 2153 2153 0 1 2 + 2155:1709(i16vec3) GroupNonUniformUMax 42 ExclusiveScan 2154 + 2156: 1700(ptr) AccessChain 34(data) 2151 67 + 2157: 24(i16vec4) Load 2156 + 2158: 24(i16vec4) VectorShuffle 2157 2155 4 5 6 3 + Store 2156 2158 + 2159: 6(int) Load 8(invocation) + 2160: 1700(ptr) AccessChain 34(data) 67 67 + 2161: 24(i16vec4) Load 2160 + 2162: 24(i16vec4) GroupNonUniformUMax 42 ExclusiveScan 2161 + 2163: 1700(ptr) AccessChain 34(data) 2159 67 + Store 2163 2162 + 2164: 6(int) Load 8(invocation) + 2165: 1693(ptr) AccessChain 34(data) 37 67 38 + 2166: 23(int16_t) Load 2165 + 2167: 23(int16_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2166 + 2168: 1693(ptr) AccessChain 34(data) 2164 67 38 + Store 2168 2167 + 2169: 6(int) Load 8(invocation) + 2170: 1700(ptr) AccessChain 34(data) 46 67 + 2171: 24(i16vec4) Load 2170 + 2172:1699(i16vec2) VectorShuffle 2171 2171 0 1 + 2173:1699(i16vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2172 + 2174: 1700(ptr) AccessChain 34(data) 2169 67 + 2175: 24(i16vec4) Load 2174 + 2176: 24(i16vec4) VectorShuffle 2175 2173 4 5 2 3 + Store 2174 2176 + 2177: 6(int) Load 8(invocation) + 2178: 1700(ptr) AccessChain 34(data) 57 67 + 2179: 24(i16vec4) Load 2178 + 2180:1709(i16vec3) VectorShuffle 2179 2179 0 1 2 + 2181:1709(i16vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2180 + 2182: 1700(ptr) AccessChain 34(data) 2177 67 + 2183: 24(i16vec4) Load 2182 + 2184: 24(i16vec4) VectorShuffle 2183 2181 4 5 6 3 + Store 2182 2184 + 2185: 6(int) Load 8(invocation) + 2186: 1700(ptr) AccessChain 34(data) 67 67 + 2187: 24(i16vec4) Load 2186 + 2188: 24(i16vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2187 + 2189: 1700(ptr) AccessChain 34(data) 2185 67 + Store 2189 2188 + 2190: 6(int) Load 8(invocation) + 2191: 1693(ptr) AccessChain 34(data) 37 67 38 + 2192: 23(int16_t) Load 2191 + 2193: 23(int16_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 2192 + 2194: 1693(ptr) AccessChain 34(data) 2190 67 38 + Store 2194 2193 + 2195: 6(int) Load 8(invocation) + 2196: 1700(ptr) AccessChain 34(data) 46 67 + 2197: 24(i16vec4) Load 2196 + 2198:1699(i16vec2) VectorShuffle 2197 2197 0 1 + 2199:1699(i16vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 2198 + 2200: 1700(ptr) AccessChain 34(data) 2195 67 + 2201: 24(i16vec4) Load 2200 + 2202: 24(i16vec4) VectorShuffle 2201 2199 4 5 2 3 + Store 2200 2202 + 2203: 6(int) Load 8(invocation) + 2204: 1700(ptr) AccessChain 34(data) 57 67 + 2205: 24(i16vec4) Load 2204 + 2206:1709(i16vec3) VectorShuffle 2205 2205 0 1 2 + 2207:1709(i16vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 2206 + 2208: 1700(ptr) AccessChain 34(data) 2203 67 + 2209: 24(i16vec4) Load 2208 + 2210: 24(i16vec4) VectorShuffle 2209 2207 4 5 6 3 + Store 2208 2210 + 2211: 6(int) Load 8(invocation) + 2212: 1700(ptr) AccessChain 34(data) 67 67 + 2213: 24(i16vec4) Load 2212 + 2214: 24(i16vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 2213 + 2215: 1700(ptr) AccessChain 34(data) 2211 67 + Store 2215 2214 + 2216: 6(int) Load 8(invocation) + 2217: 1693(ptr) AccessChain 34(data) 37 67 38 + 2218: 23(int16_t) Load 2217 + 2219: 23(int16_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 2218 + 2220: 1693(ptr) AccessChain 34(data) 2216 67 38 + Store 2220 2219 + 2221: 6(int) Load 8(invocation) + 2222: 1700(ptr) AccessChain 34(data) 46 67 + 2223: 24(i16vec4) Load 2222 + 2224:1699(i16vec2) VectorShuffle 2223 2223 0 1 + 2225:1699(i16vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 2224 + 2226: 1700(ptr) AccessChain 34(data) 2221 67 + 2227: 24(i16vec4) Load 2226 + 2228: 24(i16vec4) VectorShuffle 2227 2225 4 5 2 3 + Store 2226 2228 + 2229: 6(int) Load 8(invocation) + 2230: 1700(ptr) AccessChain 34(data) 57 67 + 2231: 24(i16vec4) Load 2230 + 2232:1709(i16vec3) VectorShuffle 2231 2231 0 1 2 + 2233:1709(i16vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 2232 + 2234: 1700(ptr) AccessChain 34(data) 2229 67 + 2235: 24(i16vec4) Load 2234 + 2236: 24(i16vec4) VectorShuffle 2235 2233 4 5 6 3 + Store 2234 2236 + 2237: 6(int) Load 8(invocation) + 2238: 1700(ptr) AccessChain 34(data) 67 67 + 2239: 24(i16vec4) Load 2238 + 2240: 24(i16vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 2239 + 2241: 1700(ptr) AccessChain 34(data) 2237 67 + Store 2241 2240 + 2242: 6(int) Load 8(invocation) + 2245: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2246: 25(int64_t) Load 2245 + 2247: 25(int64_t) GroupNonUniformIAdd 42 Reduce 2246 + 2248: 2244(ptr) AccessChain 34(data) 2242 2243 38 + Store 2248 2247 + 2249: 6(int) Load 8(invocation) + 2252: 2251(ptr) AccessChain 34(data) 46 2243 + 2253: 26(i64vec4) Load 2252 + 2254:2250(i64vec2) VectorShuffle 2253 2253 0 1 + 2255:2250(i64vec2) GroupNonUniformIAdd 42 Reduce 2254 + 2256: 2251(ptr) AccessChain 34(data) 2249 2243 + 2257: 26(i64vec4) Load 2256 + 2258: 26(i64vec4) VectorShuffle 2257 2255 4 5 2 3 + Store 2256 2258 + 2259: 6(int) Load 8(invocation) + 2261: 2251(ptr) AccessChain 34(data) 57 2243 + 2262: 26(i64vec4) Load 2261 + 2263:2260(i64vec3) VectorShuffle 2262 2262 0 1 2 + 2264:2260(i64vec3) GroupNonUniformIAdd 42 Reduce 2263 + 2265: 2251(ptr) AccessChain 34(data) 2259 2243 + 2266: 26(i64vec4) Load 2265 + 2267: 26(i64vec4) VectorShuffle 2266 2264 4 5 6 3 + Store 2265 2267 + 2268: 6(int) Load 8(invocation) + 2269: 2251(ptr) AccessChain 34(data) 67 2243 + 2270: 26(i64vec4) Load 2269 + 2271: 26(i64vec4) GroupNonUniformIAdd 42 Reduce 2270 + 2272: 2251(ptr) AccessChain 34(data) 2268 2243 + Store 2272 2271 + 2273: 6(int) Load 8(invocation) + 2274: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2275: 25(int64_t) Load 2274 + 2276: 25(int64_t) GroupNonUniformIMul 42 Reduce 2275 + 2277: 2244(ptr) AccessChain 34(data) 2273 2243 38 + Store 2277 2276 + 2278: 6(int) Load 8(invocation) + 2279: 2251(ptr) AccessChain 34(data) 46 2243 + 2280: 26(i64vec4) Load 2279 + 2281:2250(i64vec2) VectorShuffle 2280 2280 0 1 + 2282:2250(i64vec2) GroupNonUniformIMul 42 Reduce 2281 + 2283: 2251(ptr) AccessChain 34(data) 2278 2243 + 2284: 26(i64vec4) Load 2283 + 2285: 26(i64vec4) VectorShuffle 2284 2282 4 5 2 3 + Store 2283 2285 + 2286: 6(int) Load 8(invocation) + 2287: 2251(ptr) AccessChain 34(data) 57 2243 + 2288: 26(i64vec4) Load 2287 + 2289:2260(i64vec3) VectorShuffle 2288 2288 0 1 2 + 2290:2260(i64vec3) GroupNonUniformIMul 42 Reduce 2289 + 2291: 2251(ptr) AccessChain 34(data) 2286 2243 + 2292: 26(i64vec4) Load 2291 + 2293: 26(i64vec4) VectorShuffle 2292 2290 4 5 6 3 + Store 2291 2293 + 2294: 6(int) Load 8(invocation) + 2295: 2251(ptr) AccessChain 34(data) 67 2243 + 2296: 26(i64vec4) Load 2295 + 2297: 26(i64vec4) GroupNonUniformIMul 42 Reduce 2296 + 2298: 2251(ptr) AccessChain 34(data) 2294 2243 + Store 2298 2297 + 2299: 6(int) Load 8(invocation) + 2300: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2301: 25(int64_t) Load 2300 + 2302: 25(int64_t) GroupNonUniformSMin 42 Reduce 2301 + 2303: 2244(ptr) AccessChain 34(data) 2299 2243 38 + Store 2303 2302 + 2304: 6(int) Load 8(invocation) + 2305: 2251(ptr) AccessChain 34(data) 46 2243 + 2306: 26(i64vec4) Load 2305 + 2307:2250(i64vec2) VectorShuffle 2306 2306 0 1 + 2308:2250(i64vec2) GroupNonUniformSMin 42 Reduce 2307 + 2309: 2251(ptr) AccessChain 34(data) 2304 2243 + 2310: 26(i64vec4) Load 2309 + 2311: 26(i64vec4) VectorShuffle 2310 2308 4 5 2 3 + Store 2309 2311 + 2312: 6(int) Load 8(invocation) + 2313: 2251(ptr) AccessChain 34(data) 57 2243 + 2314: 26(i64vec4) Load 2313 + 2315:2260(i64vec3) VectorShuffle 2314 2314 0 1 2 + 2316:2260(i64vec3) GroupNonUniformSMin 42 Reduce 2315 + 2317: 2251(ptr) AccessChain 34(data) 2312 2243 + 2318: 26(i64vec4) Load 2317 + 2319: 26(i64vec4) VectorShuffle 2318 2316 4 5 6 3 + Store 2317 2319 + 2320: 6(int) Load 8(invocation) + 2321: 2251(ptr) AccessChain 34(data) 67 2243 + 2322: 26(i64vec4) Load 2321 + 2323: 26(i64vec4) GroupNonUniformSMin 42 Reduce 2322 + 2324: 2251(ptr) AccessChain 34(data) 2320 2243 + Store 2324 2323 + 2325: 6(int) Load 8(invocation) + 2326: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2327: 25(int64_t) Load 2326 + 2328: 25(int64_t) GroupNonUniformSMax 42 Reduce 2327 + 2329: 2244(ptr) AccessChain 34(data) 2325 2243 38 + Store 2329 2328 + 2330: 6(int) Load 8(invocation) + 2331: 2251(ptr) AccessChain 34(data) 46 2243 + 2332: 26(i64vec4) Load 2331 + 2333:2250(i64vec2) VectorShuffle 2332 2332 0 1 + 2334:2250(i64vec2) GroupNonUniformSMax 42 Reduce 2333 + 2335: 2251(ptr) AccessChain 34(data) 2330 2243 + 2336: 26(i64vec4) Load 2335 + 2337: 26(i64vec4) VectorShuffle 2336 2334 4 5 2 3 + Store 2335 2337 + 2338: 6(int) Load 8(invocation) + 2339: 2251(ptr) AccessChain 34(data) 57 2243 + 2340: 26(i64vec4) Load 2339 + 2341:2260(i64vec3) VectorShuffle 2340 2340 0 1 2 + 2342:2260(i64vec3) GroupNonUniformSMax 42 Reduce 2341 + 2343: 2251(ptr) AccessChain 34(data) 2338 2243 + 2344: 26(i64vec4) Load 2343 + 2345: 26(i64vec4) VectorShuffle 2344 2342 4 5 6 3 + Store 2343 2345 + 2346: 6(int) Load 8(invocation) + 2347: 2251(ptr) AccessChain 34(data) 67 2243 + 2348: 26(i64vec4) Load 2347 + 2349: 26(i64vec4) GroupNonUniformSMax 42 Reduce 2348 + 2350: 2251(ptr) AccessChain 34(data) 2346 2243 + Store 2350 2349 + 2351: 6(int) Load 8(invocation) + 2352: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2353: 25(int64_t) Load 2352 + 2354: 25(int64_t) GroupNonUniformBitwiseAnd 42 Reduce 2353 + 2355: 2244(ptr) AccessChain 34(data) 2351 2243 38 + Store 2355 2354 + 2356: 6(int) Load 8(invocation) + 2357: 2251(ptr) AccessChain 34(data) 46 2243 + 2358: 26(i64vec4) Load 2357 + 2359:2250(i64vec2) VectorShuffle 2358 2358 0 1 + 2360:2250(i64vec2) GroupNonUniformBitwiseAnd 42 Reduce 2359 + 2361: 2251(ptr) AccessChain 34(data) 2356 2243 + 2362: 26(i64vec4) Load 2361 + 2363: 26(i64vec4) VectorShuffle 2362 2360 4 5 2 3 + Store 2361 2363 + 2364: 6(int) Load 8(invocation) + 2365: 2251(ptr) AccessChain 34(data) 57 2243 + 2366: 26(i64vec4) Load 2365 + 2367:2260(i64vec3) VectorShuffle 2366 2366 0 1 2 + 2368:2260(i64vec3) GroupNonUniformBitwiseAnd 42 Reduce 2367 + 2369: 2251(ptr) AccessChain 34(data) 2364 2243 + 2370: 26(i64vec4) Load 2369 + 2371: 26(i64vec4) VectorShuffle 2370 2368 4 5 6 3 + Store 2369 2371 + 2372: 6(int) Load 8(invocation) + 2373: 2251(ptr) AccessChain 34(data) 67 2243 + 2374: 26(i64vec4) Load 2373 + 2375: 26(i64vec4) GroupNonUniformBitwiseAnd 42 Reduce 2374 + 2376: 2251(ptr) AccessChain 34(data) 2372 2243 + Store 2376 2375 + 2377: 6(int) Load 8(invocation) + 2378: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2379: 25(int64_t) Load 2378 + 2380: 25(int64_t) GroupNonUniformBitwiseOr 42 Reduce 2379 + 2381: 2244(ptr) AccessChain 34(data) 2377 2243 38 + Store 2381 2380 + 2382: 6(int) Load 8(invocation) + 2383: 2251(ptr) AccessChain 34(data) 46 2243 + 2384: 26(i64vec4) Load 2383 + 2385:2250(i64vec2) VectorShuffle 2384 2384 0 1 + 2386:2250(i64vec2) GroupNonUniformBitwiseOr 42 Reduce 2385 + 2387: 2251(ptr) AccessChain 34(data) 2382 2243 + 2388: 26(i64vec4) Load 2387 + 2389: 26(i64vec4) VectorShuffle 2388 2386 4 5 2 3 + Store 2387 2389 + 2390: 6(int) Load 8(invocation) + 2391: 2251(ptr) AccessChain 34(data) 57 2243 + 2392: 26(i64vec4) Load 2391 + 2393:2260(i64vec3) VectorShuffle 2392 2392 0 1 2 + 2394:2260(i64vec3) GroupNonUniformBitwiseOr 42 Reduce 2393 + 2395: 2251(ptr) AccessChain 34(data) 2390 2243 + 2396: 26(i64vec4) Load 2395 + 2397: 26(i64vec4) VectorShuffle 2396 2394 4 5 6 3 + Store 2395 2397 + 2398: 6(int) Load 8(invocation) + 2399: 2251(ptr) AccessChain 34(data) 67 2243 + 2400: 26(i64vec4) Load 2399 + 2401: 26(i64vec4) GroupNonUniformBitwiseOr 42 Reduce 2400 + 2402: 2251(ptr) AccessChain 34(data) 2398 2243 + Store 2402 2401 + 2403: 6(int) Load 8(invocation) + 2404: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2405: 25(int64_t) Load 2404 + 2406: 25(int64_t) GroupNonUniformBitwiseXor 42 Reduce 2405 + 2407: 2244(ptr) AccessChain 34(data) 2403 2243 38 + Store 2407 2406 + 2408: 6(int) Load 8(invocation) + 2409: 2251(ptr) AccessChain 34(data) 46 2243 + 2410: 26(i64vec4) Load 2409 + 2411:2250(i64vec2) VectorShuffle 2410 2410 0 1 + 2412:2250(i64vec2) GroupNonUniformBitwiseXor 42 Reduce 2411 + 2413: 2251(ptr) AccessChain 34(data) 2408 2243 + 2414: 26(i64vec4) Load 2413 + 2415: 26(i64vec4) VectorShuffle 2414 2412 4 5 2 3 + Store 2413 2415 + 2416: 6(int) Load 8(invocation) + 2417: 2251(ptr) AccessChain 34(data) 57 2243 + 2418: 26(i64vec4) Load 2417 + 2419:2260(i64vec3) VectorShuffle 2418 2418 0 1 2 + 2420:2260(i64vec3) GroupNonUniformBitwiseXor 42 Reduce 2419 + 2421: 2251(ptr) AccessChain 34(data) 2416 2243 + 2422: 26(i64vec4) Load 2421 + 2423: 26(i64vec4) VectorShuffle 2422 2420 4 5 6 3 + Store 2421 2423 + 2424: 6(int) Load 8(invocation) + 2425: 2251(ptr) AccessChain 34(data) 67 2243 + 2426: 26(i64vec4) Load 2425 + 2427: 26(i64vec4) GroupNonUniformBitwiseXor 42 Reduce 2426 + 2428: 2251(ptr) AccessChain 34(data) 2424 2243 + Store 2428 2427 + 2429: 6(int) Load 8(invocation) + 2430: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2431: 25(int64_t) Load 2430 + 2432: 25(int64_t) GroupNonUniformIAdd 42 InclusiveScan 2431 + 2433: 2244(ptr) AccessChain 34(data) 2429 2243 38 + Store 2433 2432 + 2434: 6(int) Load 8(invocation) + 2435: 2251(ptr) AccessChain 34(data) 46 2243 + 2436: 26(i64vec4) Load 2435 + 2437:2250(i64vec2) VectorShuffle 2436 2436 0 1 + 2438:2250(i64vec2) GroupNonUniformIAdd 42 InclusiveScan 2437 + 2439: 2251(ptr) AccessChain 34(data) 2434 2243 + 2440: 26(i64vec4) Load 2439 + 2441: 26(i64vec4) VectorShuffle 2440 2438 4 5 2 3 + Store 2439 2441 + 2442: 6(int) Load 8(invocation) + 2443: 2251(ptr) AccessChain 34(data) 57 2243 + 2444: 26(i64vec4) Load 2443 + 2445:2260(i64vec3) VectorShuffle 2444 2444 0 1 2 + 2446:2260(i64vec3) GroupNonUniformIAdd 42 InclusiveScan 2445 + 2447: 2251(ptr) AccessChain 34(data) 2442 2243 + 2448: 26(i64vec4) Load 2447 + 2449: 26(i64vec4) VectorShuffle 2448 2446 4 5 6 3 + Store 2447 2449 + 2450: 6(int) Load 8(invocation) + 2451: 2251(ptr) AccessChain 34(data) 67 2243 + 2452: 26(i64vec4) Load 2451 + 2453: 26(i64vec4) GroupNonUniformIAdd 42 InclusiveScan 2452 + 2454: 2251(ptr) AccessChain 34(data) 2450 2243 + Store 2454 2453 + 2455: 6(int) Load 8(invocation) + 2456: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2457: 25(int64_t) Load 2456 + 2458: 25(int64_t) GroupNonUniformIMul 42 InclusiveScan 2457 + 2459: 2244(ptr) AccessChain 34(data) 2455 2243 38 + Store 2459 2458 + 2460: 6(int) Load 8(invocation) + 2461: 2251(ptr) AccessChain 34(data) 46 2243 + 2462: 26(i64vec4) Load 2461 + 2463:2250(i64vec2) VectorShuffle 2462 2462 0 1 + 2464:2250(i64vec2) GroupNonUniformIMul 42 InclusiveScan 2463 + 2465: 2251(ptr) AccessChain 34(data) 2460 2243 + 2466: 26(i64vec4) Load 2465 + 2467: 26(i64vec4) VectorShuffle 2466 2464 4 5 2 3 + Store 2465 2467 + 2468: 6(int) Load 8(invocation) + 2469: 2251(ptr) AccessChain 34(data) 57 2243 + 2470: 26(i64vec4) Load 2469 + 2471:2260(i64vec3) VectorShuffle 2470 2470 0 1 2 + 2472:2260(i64vec3) GroupNonUniformIMul 42 InclusiveScan 2471 + 2473: 2251(ptr) AccessChain 34(data) 2468 2243 + 2474: 26(i64vec4) Load 2473 + 2475: 26(i64vec4) VectorShuffle 2474 2472 4 5 6 3 + Store 2473 2475 + 2476: 6(int) Load 8(invocation) + 2477: 2251(ptr) AccessChain 34(data) 67 2243 + 2478: 26(i64vec4) Load 2477 + 2479: 26(i64vec4) GroupNonUniformIMul 42 InclusiveScan 2478 + 2480: 2251(ptr) AccessChain 34(data) 2476 2243 + Store 2480 2479 + 2481: 6(int) Load 8(invocation) + 2482: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2483: 25(int64_t) Load 2482 + 2484: 25(int64_t) GroupNonUniformSMin 42 InclusiveScan 2483 + 2485: 2244(ptr) AccessChain 34(data) 2481 2243 38 + Store 2485 2484 + 2486: 6(int) Load 8(invocation) + 2487: 2251(ptr) AccessChain 34(data) 46 2243 + 2488: 26(i64vec4) Load 2487 + 2489:2250(i64vec2) VectorShuffle 2488 2488 0 1 + 2490:2250(i64vec2) GroupNonUniformSMin 42 InclusiveScan 2489 + 2491: 2251(ptr) AccessChain 34(data) 2486 2243 + 2492: 26(i64vec4) Load 2491 + 2493: 26(i64vec4) VectorShuffle 2492 2490 4 5 2 3 + Store 2491 2493 + 2494: 6(int) Load 8(invocation) + 2495: 2251(ptr) AccessChain 34(data) 57 2243 + 2496: 26(i64vec4) Load 2495 + 2497:2260(i64vec3) VectorShuffle 2496 2496 0 1 2 + 2498:2260(i64vec3) GroupNonUniformSMin 42 InclusiveScan 2497 + 2499: 2251(ptr) AccessChain 34(data) 2494 2243 + 2500: 26(i64vec4) Load 2499 + 2501: 26(i64vec4) VectorShuffle 2500 2498 4 5 6 3 + Store 2499 2501 + 2502: 6(int) Load 8(invocation) + 2503: 2251(ptr) AccessChain 34(data) 67 2243 + 2504: 26(i64vec4) Load 2503 + 2505: 26(i64vec4) GroupNonUniformSMin 42 InclusiveScan 2504 + 2506: 2251(ptr) AccessChain 34(data) 2502 2243 + Store 2506 2505 + 2507: 6(int) Load 8(invocation) + 2508: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2509: 25(int64_t) Load 2508 + 2510: 25(int64_t) GroupNonUniformSMax 42 InclusiveScan 2509 + 2511: 2244(ptr) AccessChain 34(data) 2507 2243 38 + Store 2511 2510 + 2512: 6(int) Load 8(invocation) + 2513: 2251(ptr) AccessChain 34(data) 46 2243 + 2514: 26(i64vec4) Load 2513 + 2515:2250(i64vec2) VectorShuffle 2514 2514 0 1 + 2516:2250(i64vec2) GroupNonUniformSMax 42 InclusiveScan 2515 + 2517: 2251(ptr) AccessChain 34(data) 2512 2243 + 2518: 26(i64vec4) Load 2517 + 2519: 26(i64vec4) VectorShuffle 2518 2516 4 5 2 3 + Store 2517 2519 + 2520: 6(int) Load 8(invocation) + 2521: 2251(ptr) AccessChain 34(data) 57 2243 + 2522: 26(i64vec4) Load 2521 + 2523:2260(i64vec3) VectorShuffle 2522 2522 0 1 2 + 2524:2260(i64vec3) GroupNonUniformSMax 42 InclusiveScan 2523 + 2525: 2251(ptr) AccessChain 34(data) 2520 2243 + 2526: 26(i64vec4) Load 2525 + 2527: 26(i64vec4) VectorShuffle 2526 2524 4 5 6 3 + Store 2525 2527 + 2528: 6(int) Load 8(invocation) + 2529: 2251(ptr) AccessChain 34(data) 67 2243 + 2530: 26(i64vec4) Load 2529 + 2531: 26(i64vec4) GroupNonUniformSMax 42 InclusiveScan 2530 + 2532: 2251(ptr) AccessChain 34(data) 2528 2243 + Store 2532 2531 + 2533: 6(int) Load 8(invocation) + 2534: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2535: 25(int64_t) Load 2534 + 2536: 25(int64_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 2535 + 2537: 2244(ptr) AccessChain 34(data) 2533 2243 38 + Store 2537 2536 + 2538: 6(int) Load 8(invocation) + 2539: 2251(ptr) AccessChain 34(data) 46 2243 + 2540: 26(i64vec4) Load 2539 + 2541:2250(i64vec2) VectorShuffle 2540 2540 0 1 + 2542:2250(i64vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 2541 + 2543: 2251(ptr) AccessChain 34(data) 2538 2243 + 2544: 26(i64vec4) Load 2543 + 2545: 26(i64vec4) VectorShuffle 2544 2542 4 5 2 3 + Store 2543 2545 + 2546: 6(int) Load 8(invocation) + 2547: 2251(ptr) AccessChain 34(data) 57 2243 + 2548: 26(i64vec4) Load 2547 + 2549:2260(i64vec3) VectorShuffle 2548 2548 0 1 2 + 2550:2260(i64vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 2549 + 2551: 2251(ptr) AccessChain 34(data) 2546 2243 + 2552: 26(i64vec4) Load 2551 + 2553: 26(i64vec4) VectorShuffle 2552 2550 4 5 6 3 + Store 2551 2553 + 2554: 6(int) Load 8(invocation) + 2555: 2251(ptr) AccessChain 34(data) 67 2243 + 2556: 26(i64vec4) Load 2555 + 2557: 26(i64vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 2556 + 2558: 2251(ptr) AccessChain 34(data) 2554 2243 + Store 2558 2557 + 2559: 6(int) Load 8(invocation) + 2560: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2561: 25(int64_t) Load 2560 + 2562: 25(int64_t) GroupNonUniformBitwiseOr 42 InclusiveScan 2561 + 2563: 2244(ptr) AccessChain 34(data) 2559 2243 38 + Store 2563 2562 + 2564: 6(int) Load 8(invocation) + 2565: 2251(ptr) AccessChain 34(data) 46 2243 + 2566: 26(i64vec4) Load 2565 + 2567:2250(i64vec2) VectorShuffle 2566 2566 0 1 + 2568:2250(i64vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 2567 + 2569: 2251(ptr) AccessChain 34(data) 2564 2243 + 2570: 26(i64vec4) Load 2569 + 2571: 26(i64vec4) VectorShuffle 2570 2568 4 5 2 3 + Store 2569 2571 + 2572: 6(int) Load 8(invocation) + 2573: 2251(ptr) AccessChain 34(data) 57 2243 + 2574: 26(i64vec4) Load 2573 + 2575:2260(i64vec3) VectorShuffle 2574 2574 0 1 2 + 2576:2260(i64vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 2575 + 2577: 2251(ptr) AccessChain 34(data) 2572 2243 + 2578: 26(i64vec4) Load 2577 + 2579: 26(i64vec4) VectorShuffle 2578 2576 4 5 6 3 + Store 2577 2579 + 2580: 6(int) Load 8(invocation) + 2581: 2251(ptr) AccessChain 34(data) 67 2243 + 2582: 26(i64vec4) Load 2581 + 2583: 26(i64vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 2582 + 2584: 2251(ptr) AccessChain 34(data) 2580 2243 + Store 2584 2583 + 2585: 6(int) Load 8(invocation) + 2586: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2587: 25(int64_t) Load 2586 + 2588: 25(int64_t) GroupNonUniformBitwiseXor 42 InclusiveScan 2587 + 2589: 2244(ptr) AccessChain 34(data) 2585 2243 38 + Store 2589 2588 + 2590: 6(int) Load 8(invocation) + 2591: 2251(ptr) AccessChain 34(data) 46 2243 + 2592: 26(i64vec4) Load 2591 + 2593:2250(i64vec2) VectorShuffle 2592 2592 0 1 + 2594:2250(i64vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 2593 + 2595: 2251(ptr) AccessChain 34(data) 2590 2243 + 2596: 26(i64vec4) Load 2595 + 2597: 26(i64vec4) VectorShuffle 2596 2594 4 5 2 3 + Store 2595 2597 + 2598: 6(int) Load 8(invocation) + 2599: 2251(ptr) AccessChain 34(data) 57 2243 + 2600: 26(i64vec4) Load 2599 + 2601:2260(i64vec3) VectorShuffle 2600 2600 0 1 2 + 2602:2260(i64vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 2601 + 2603: 2251(ptr) AccessChain 34(data) 2598 2243 + 2604: 26(i64vec4) Load 2603 + 2605: 26(i64vec4) VectorShuffle 2604 2602 4 5 6 3 + Store 2603 2605 + 2606: 6(int) Load 8(invocation) + 2607: 2251(ptr) AccessChain 34(data) 67 2243 + 2608: 26(i64vec4) Load 2607 + 2609: 26(i64vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 2608 + 2610: 2251(ptr) AccessChain 34(data) 2606 2243 + Store 2610 2609 + 2611: 6(int) Load 8(invocation) + 2612: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2613: 25(int64_t) Load 2612 + 2614: 25(int64_t) GroupNonUniformIAdd 42 ExclusiveScan 2613 + 2615: 2244(ptr) AccessChain 34(data) 2611 2243 38 + Store 2615 2614 + 2616: 6(int) Load 8(invocation) + 2617: 2251(ptr) AccessChain 34(data) 46 2243 + 2618: 26(i64vec4) Load 2617 + 2619:2250(i64vec2) VectorShuffle 2618 2618 0 1 + 2620:2250(i64vec2) GroupNonUniformIAdd 42 ExclusiveScan 2619 + 2621: 2251(ptr) AccessChain 34(data) 2616 2243 + 2622: 26(i64vec4) Load 2621 + 2623: 26(i64vec4) VectorShuffle 2622 2620 4 5 2 3 + Store 2621 2623 + 2624: 6(int) Load 8(invocation) + 2625: 2251(ptr) AccessChain 34(data) 57 2243 + 2626: 26(i64vec4) Load 2625 + 2627:2260(i64vec3) VectorShuffle 2626 2626 0 1 2 + 2628:2260(i64vec3) GroupNonUniformIAdd 42 ExclusiveScan 2627 + 2629: 2251(ptr) AccessChain 34(data) 2624 2243 + 2630: 26(i64vec4) Load 2629 + 2631: 26(i64vec4) VectorShuffle 2630 2628 4 5 6 3 + Store 2629 2631 + 2632: 6(int) Load 8(invocation) + 2633: 2251(ptr) AccessChain 34(data) 67 2243 + 2634: 26(i64vec4) Load 2633 + 2635: 26(i64vec4) GroupNonUniformIAdd 42 ExclusiveScan 2634 + 2636: 2251(ptr) AccessChain 34(data) 2632 2243 + Store 2636 2635 + 2637: 6(int) Load 8(invocation) + 2638: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2639: 25(int64_t) Load 2638 + 2640: 25(int64_t) GroupNonUniformIMul 42 ExclusiveScan 2639 + 2641: 2244(ptr) AccessChain 34(data) 2637 2243 38 + Store 2641 2640 + 2642: 6(int) Load 8(invocation) + 2643: 2251(ptr) AccessChain 34(data) 46 2243 + 2644: 26(i64vec4) Load 2643 + 2645:2250(i64vec2) VectorShuffle 2644 2644 0 1 + 2646:2250(i64vec2) GroupNonUniformIMul 42 ExclusiveScan 2645 + 2647: 2251(ptr) AccessChain 34(data) 2642 2243 + 2648: 26(i64vec4) Load 2647 + 2649: 26(i64vec4) VectorShuffle 2648 2646 4 5 2 3 + Store 2647 2649 + 2650: 6(int) Load 8(invocation) + 2651: 2251(ptr) AccessChain 34(data) 57 2243 + 2652: 26(i64vec4) Load 2651 + 2653:2260(i64vec3) VectorShuffle 2652 2652 0 1 2 + 2654:2260(i64vec3) GroupNonUniformIMul 42 ExclusiveScan 2653 + 2655: 2251(ptr) AccessChain 34(data) 2650 2243 + 2656: 26(i64vec4) Load 2655 + 2657: 26(i64vec4) VectorShuffle 2656 2654 4 5 6 3 + Store 2655 2657 + 2658: 6(int) Load 8(invocation) + 2659: 2251(ptr) AccessChain 34(data) 67 2243 + 2660: 26(i64vec4) Load 2659 + 2661: 26(i64vec4) GroupNonUniformIMul 42 ExclusiveScan 2660 + 2662: 2251(ptr) AccessChain 34(data) 2658 2243 + Store 2662 2661 + 2663: 6(int) Load 8(invocation) + 2664: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2665: 25(int64_t) Load 2664 + 2666: 25(int64_t) GroupNonUniformSMin 42 ExclusiveScan 2665 + 2667: 2244(ptr) AccessChain 34(data) 2663 2243 38 + Store 2667 2666 + 2668: 6(int) Load 8(invocation) + 2669: 2251(ptr) AccessChain 34(data) 46 2243 + 2670: 26(i64vec4) Load 2669 + 2671:2250(i64vec2) VectorShuffle 2670 2670 0 1 + 2672:2250(i64vec2) GroupNonUniformSMin 42 ExclusiveScan 2671 + 2673: 2251(ptr) AccessChain 34(data) 2668 2243 + 2674: 26(i64vec4) Load 2673 + 2675: 26(i64vec4) VectorShuffle 2674 2672 4 5 2 3 + Store 2673 2675 + 2676: 6(int) Load 8(invocation) + 2677: 2251(ptr) AccessChain 34(data) 57 2243 + 2678: 26(i64vec4) Load 2677 + 2679:2260(i64vec3) VectorShuffle 2678 2678 0 1 2 + 2680:2260(i64vec3) GroupNonUniformSMin 42 ExclusiveScan 2679 + 2681: 2251(ptr) AccessChain 34(data) 2676 2243 + 2682: 26(i64vec4) Load 2681 + 2683: 26(i64vec4) VectorShuffle 2682 2680 4 5 6 3 + Store 2681 2683 + 2684: 6(int) Load 8(invocation) + 2685: 2251(ptr) AccessChain 34(data) 67 2243 + 2686: 26(i64vec4) Load 2685 + 2687: 26(i64vec4) GroupNonUniformSMin 42 ExclusiveScan 2686 + 2688: 2251(ptr) AccessChain 34(data) 2684 2243 + Store 2688 2687 + 2689: 6(int) Load 8(invocation) + 2690: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2691: 25(int64_t) Load 2690 + 2692: 25(int64_t) GroupNonUniformSMax 42 ExclusiveScan 2691 + 2693: 2244(ptr) AccessChain 34(data) 2689 2243 38 + Store 2693 2692 + 2694: 6(int) Load 8(invocation) + 2695: 2251(ptr) AccessChain 34(data) 46 2243 + 2696: 26(i64vec4) Load 2695 + 2697:2250(i64vec2) VectorShuffle 2696 2696 0 1 + 2698:2250(i64vec2) GroupNonUniformSMax 42 ExclusiveScan 2697 + 2699: 2251(ptr) AccessChain 34(data) 2694 2243 + 2700: 26(i64vec4) Load 2699 + 2701: 26(i64vec4) VectorShuffle 2700 2698 4 5 2 3 + Store 2699 2701 + 2702: 6(int) Load 8(invocation) + 2703: 2251(ptr) AccessChain 34(data) 57 2243 + 2704: 26(i64vec4) Load 2703 + 2705:2260(i64vec3) VectorShuffle 2704 2704 0 1 2 + 2706:2260(i64vec3) GroupNonUniformSMax 42 ExclusiveScan 2705 + 2707: 2251(ptr) AccessChain 34(data) 2702 2243 + 2708: 26(i64vec4) Load 2707 + 2709: 26(i64vec4) VectorShuffle 2708 2706 4 5 6 3 + Store 2707 2709 + 2710: 6(int) Load 8(invocation) + 2711: 2251(ptr) AccessChain 34(data) 67 2243 + 2712: 26(i64vec4) Load 2711 + 2713: 26(i64vec4) GroupNonUniformSMax 42 ExclusiveScan 2712 + 2714: 2251(ptr) AccessChain 34(data) 2710 2243 + Store 2714 2713 + 2715: 6(int) Load 8(invocation) + 2716: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2717: 25(int64_t) Load 2716 + 2718: 25(int64_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2717 + 2719: 2244(ptr) AccessChain 34(data) 2715 2243 38 + Store 2719 2718 + 2720: 6(int) Load 8(invocation) + 2721: 2251(ptr) AccessChain 34(data) 46 2243 + 2722: 26(i64vec4) Load 2721 + 2723:2250(i64vec2) VectorShuffle 2722 2722 0 1 + 2724:2250(i64vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2723 + 2725: 2251(ptr) AccessChain 34(data) 2720 2243 + 2726: 26(i64vec4) Load 2725 + 2727: 26(i64vec4) VectorShuffle 2726 2724 4 5 2 3 + Store 2725 2727 + 2728: 6(int) Load 8(invocation) + 2729: 2251(ptr) AccessChain 34(data) 57 2243 + 2730: 26(i64vec4) Load 2729 + 2731:2260(i64vec3) VectorShuffle 2730 2730 0 1 2 + 2732:2260(i64vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2731 + 2733: 2251(ptr) AccessChain 34(data) 2728 2243 + 2734: 26(i64vec4) Load 2733 + 2735: 26(i64vec4) VectorShuffle 2734 2732 4 5 6 3 + Store 2733 2735 + 2736: 6(int) Load 8(invocation) + 2737: 2251(ptr) AccessChain 34(data) 67 2243 + 2738: 26(i64vec4) Load 2737 + 2739: 26(i64vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2738 + 2740: 2251(ptr) AccessChain 34(data) 2736 2243 + Store 2740 2739 + 2741: 6(int) Load 8(invocation) + 2742: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2743: 25(int64_t) Load 2742 + 2744: 25(int64_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 2743 + 2745: 2244(ptr) AccessChain 34(data) 2741 2243 38 + Store 2745 2744 + 2746: 6(int) Load 8(invocation) + 2747: 2251(ptr) AccessChain 34(data) 46 2243 + 2748: 26(i64vec4) Load 2747 + 2749:2250(i64vec2) VectorShuffle 2748 2748 0 1 + 2750:2250(i64vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 2749 + 2751: 2251(ptr) AccessChain 34(data) 2746 2243 + 2752: 26(i64vec4) Load 2751 + 2753: 26(i64vec4) VectorShuffle 2752 2750 4 5 2 3 + Store 2751 2753 + 2754: 6(int) Load 8(invocation) + 2755: 2251(ptr) AccessChain 34(data) 57 2243 + 2756: 26(i64vec4) Load 2755 + 2757:2260(i64vec3) VectorShuffle 2756 2756 0 1 2 + 2758:2260(i64vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 2757 + 2759: 2251(ptr) AccessChain 34(data) 2754 2243 + 2760: 26(i64vec4) Load 2759 + 2761: 26(i64vec4) VectorShuffle 2760 2758 4 5 6 3 + Store 2759 2761 + 2762: 6(int) Load 8(invocation) + 2763: 2251(ptr) AccessChain 34(data) 67 2243 + 2764: 26(i64vec4) Load 2763 + 2765: 26(i64vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 2764 + 2766: 2251(ptr) AccessChain 34(data) 2762 2243 + Store 2766 2765 + 2767: 6(int) Load 8(invocation) + 2768: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2769: 25(int64_t) Load 2768 + 2770: 25(int64_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 2769 + 2771: 2244(ptr) AccessChain 34(data) 2767 2243 38 + Store 2771 2770 + 2772: 6(int) Load 8(invocation) + 2773: 2251(ptr) AccessChain 34(data) 46 2243 + 2774: 26(i64vec4) Load 2773 + 2775:2250(i64vec2) VectorShuffle 2774 2774 0 1 + 2776:2250(i64vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 2775 + 2777: 2251(ptr) AccessChain 34(data) 2772 2243 + 2778: 26(i64vec4) Load 2777 + 2779: 26(i64vec4) VectorShuffle 2778 2776 4 5 2 3 + Store 2777 2779 + 2780: 6(int) Load 8(invocation) + 2781: 2251(ptr) AccessChain 34(data) 57 2243 + 2782: 26(i64vec4) Load 2781 + 2783:2260(i64vec3) VectorShuffle 2782 2782 0 1 2 + 2784:2260(i64vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 2783 + 2785: 2251(ptr) AccessChain 34(data) 2780 2243 + 2786: 26(i64vec4) Load 2785 + 2787: 26(i64vec4) VectorShuffle 2786 2784 4 5 6 3 + Store 2785 2787 + 2788: 6(int) Load 8(invocation) + 2789: 2251(ptr) AccessChain 34(data) 67 2243 + 2790: 26(i64vec4) Load 2789 + 2791: 26(i64vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 2790 + 2792: 2251(ptr) AccessChain 34(data) 2788 2243 + Store 2792 2791 + 2793: 6(int) Load 8(invocation) + 2796: 2795(ptr) AccessChain 34(data) 37 2794 38 + 2797: 27(int64_t) Load 2796 + 2798: 27(int64_t) GroupNonUniformIAdd 42 Reduce 2797 + 2799: 2795(ptr) AccessChain 34(data) 2793 2794 38 + Store 2799 2798 + 2800: 6(int) Load 8(invocation) + 2803: 2802(ptr) AccessChain 34(data) 46 2794 + 2804: 28(i64vec4) Load 2803 + 2805:2801(i64vec2) VectorShuffle 2804 2804 0 1 + 2806:2801(i64vec2) GroupNonUniformIAdd 42 Reduce 2805 + 2807: 2802(ptr) AccessChain 34(data) 2800 2794 + 2808: 28(i64vec4) Load 2807 + 2809: 28(i64vec4) VectorShuffle 2808 2806 4 5 2 3 + Store 2807 2809 + 2810: 6(int) Load 8(invocation) + 2812: 2802(ptr) AccessChain 34(data) 57 2794 + 2813: 28(i64vec4) Load 2812 + 2814:2811(i64vec3) VectorShuffle 2813 2813 0 1 2 + 2815:2811(i64vec3) GroupNonUniformIAdd 42 Reduce 2814 + 2816: 2802(ptr) AccessChain 34(data) 2810 2794 + 2817: 28(i64vec4) Load 2816 + 2818: 28(i64vec4) VectorShuffle 2817 2815 4 5 6 3 + Store 2816 2818 + 2819: 6(int) Load 8(invocation) + 2820: 2802(ptr) AccessChain 34(data) 67 2794 + 2821: 28(i64vec4) Load 2820 + 2822: 28(i64vec4) GroupNonUniformIAdd 42 Reduce 2821 + 2823: 2802(ptr) AccessChain 34(data) 2819 2794 + Store 2823 2822 + 2824: 6(int) Load 8(invocation) + 2825: 2795(ptr) AccessChain 34(data) 37 2794 38 + 2826: 27(int64_t) Load 2825 + 2827: 27(int64_t) GroupNonUniformIMul 42 Reduce 2826 + 2828: 2795(ptr) AccessChain 34(data) 2824 2794 38 + Store 2828 2827 + 2829: 6(int) Load 8(invocation) + 2830: 2802(ptr) AccessChain 34(data) 46 2794 + 2831: 28(i64vec4) Load 2830 + 2832:2801(i64vec2) VectorShuffle 2831 2831 0 1 + 2833:2801(i64vec2) GroupNonUniformIMul 42 Reduce 2832 + 2834: 2802(ptr) AccessChain 34(data) 2829 2794 + 2835: 28(i64vec4) Load 2834 + 2836: 28(i64vec4) VectorShuffle 2835 2833 4 5 2 3 + Store 2834 2836 + 2837: 6(int) Load 8(invocation) + 2838: 2802(ptr) AccessChain 34(data) 57 2794 + 2839: 28(i64vec4) Load 2838 + 2840:2811(i64vec3) VectorShuffle 2839 2839 0 1 2 + 2841:2811(i64vec3) GroupNonUniformIMul 42 Reduce 2840 + 2842: 2802(ptr) AccessChain 34(data) 2837 2794 + 2843: 28(i64vec4) Load 2842 + 2844: 28(i64vec4) VectorShuffle 2843 2841 4 5 6 3 + Store 2842 2844 + 2845: 6(int) Load 8(invocation) + 2846: 2802(ptr) AccessChain 34(data) 67 2794 + 2847: 28(i64vec4) Load 2846 + 2848: 28(i64vec4) GroupNonUniformIMul 42 Reduce 2847 + 2849: 2802(ptr) AccessChain 34(data) 2845 2794 + Store 2849 2848 + 2850: 6(int) Load 8(invocation) + 2851: 2795(ptr) AccessChain 34(data) 37 2794 38 + 2852: 27(int64_t) Load 2851 + 2853: 27(int64_t) GroupNonUniformUMin 42 Reduce 2852 + 2854: 2795(ptr) AccessChain 34(data) 2850 2794 38 + Store 2854 2853 + 2855: 6(int) Load 8(invocation) + 2856: 2802(ptr) AccessChain 34(data) 46 2794 + 2857: 28(i64vec4) Load 2856 + 2858:2801(i64vec2) VectorShuffle 2857 2857 0 1 + 2859:2801(i64vec2) GroupNonUniformUMin 42 Reduce 2858 + 2860: 2802(ptr) AccessChain 34(data) 2855 2794 + 2861: 28(i64vec4) Load 2860 + 2862: 28(i64vec4) VectorShuffle 2861 2859 4 5 2 3 + Store 2860 2862 + 2863: 6(int) Load 8(invocation) + 2864: 2802(ptr) AccessChain 34(data) 57 2794 + 2865: 28(i64vec4) Load 2864 + 2866:2811(i64vec3) VectorShuffle 2865 2865 0 1 2 + 2867:2811(i64vec3) GroupNonUniformUMin 42 Reduce 2866 + 2868: 2802(ptr) AccessChain 34(data) 2863 2794 + 2869: 28(i64vec4) Load 2868 + 2870: 28(i64vec4) VectorShuffle 2869 2867 4 5 6 3 + Store 2868 2870 + 2871: 6(int) Load 8(invocation) + 2872: 2802(ptr) AccessChain 34(data) 67 2794 + 2873: 28(i64vec4) Load 2872 + 2874: 28(i64vec4) GroupNonUniformUMin 42 Reduce 2873 + 2875: 2802(ptr) AccessChain 34(data) 2871 2794 + Store 2875 2874 + 2876: 6(int) Load 8(invocation) + 2877: 2795(ptr) AccessChain 34(data) 37 2794 38 + 2878: 27(int64_t) Load 2877 + 2879: 27(int64_t) GroupNonUniformUMax 42 Reduce 2878 + 2880: 2795(ptr) AccessChain 34(data) 2876 2794 38 + Store 2880 2879 + 2881: 6(int) Load 8(invocation) + 2882: 2802(ptr) AccessChain 34(data) 46 2794 + 2883: 28(i64vec4) Load 2882 + 2884:2801(i64vec2) VectorShuffle 2883 2883 0 1 + 2885:2801(i64vec2) GroupNonUniformUMax 42 Reduce 2884 + 2886: 2802(ptr) AccessChain 34(data) 2881 2794 + 2887: 28(i64vec4) Load 2886 + 2888: 28(i64vec4) VectorShuffle 2887 2885 4 5 2 3 + Store 2886 2888 + 2889: 6(int) Load 8(invocation) + 2890: 2802(ptr) AccessChain 34(data) 57 2794 + 2891: 28(i64vec4) Load 2890 + 2892:2811(i64vec3) VectorShuffle 2891 2891 0 1 2 + 2893:2811(i64vec3) GroupNonUniformUMax 42 Reduce 2892 + 2894: 2802(ptr) AccessChain 34(data) 2889 2794 + 2895: 28(i64vec4) Load 2894 + 2896: 28(i64vec4) VectorShuffle 2895 2893 4 5 6 3 + Store 2894 2896 + 2897: 6(int) Load 8(invocation) + 2898: 2802(ptr) AccessChain 34(data) 67 2794 + 2899: 28(i64vec4) Load 2898 + 2900: 28(i64vec4) GroupNonUniformUMax 42 Reduce 2899 + 2901: 2802(ptr) AccessChain 34(data) 2897 2794 + Store 2901 2900 + 2902: 6(int) Load 8(invocation) + 2903: 2795(ptr) AccessChain 34(data) 37 2794 38 + 2904: 27(int64_t) Load 2903 + 2905: 27(int64_t) GroupNonUniformBitwiseAnd 42 Reduce 2904 + 2906: 2795(ptr) AccessChain 34(data) 2902 2794 38 + Store 2906 2905 + 2907: 6(int) Load 8(invocation) + 2908: 2802(ptr) AccessChain 34(data) 46 2794 + 2909: 28(i64vec4) Load 2908 + 2910:2801(i64vec2) VectorShuffle 2909 2909 0 1 + 2911:2801(i64vec2) GroupNonUniformBitwiseAnd 42 Reduce 2910 + 2912: 2802(ptr) AccessChain 34(data) 2907 2794 + 2913: 28(i64vec4) Load 2912 + 2914: 28(i64vec4) VectorShuffle 2913 2911 4 5 2 3 + Store 2912 2914 + 2915: 6(int) Load 8(invocation) + 2916: 2802(ptr) AccessChain 34(data) 57 2794 + 2917: 28(i64vec4) Load 2916 + 2918:2811(i64vec3) VectorShuffle 2917 2917 0 1 2 + 2919:2811(i64vec3) GroupNonUniformBitwiseAnd 42 Reduce 2918 + 2920: 2802(ptr) AccessChain 34(data) 2915 2794 + 2921: 28(i64vec4) Load 2920 + 2922: 28(i64vec4) VectorShuffle 2921 2919 4 5 6 3 + Store 2920 2922 + 2923: 6(int) Load 8(invocation) + 2924: 2802(ptr) AccessChain 34(data) 67 2794 + 2925: 28(i64vec4) Load 2924 + 2926: 28(i64vec4) GroupNonUniformBitwiseAnd 42 Reduce 2925 + 2927: 2802(ptr) AccessChain 34(data) 2923 2794 + Store 2927 2926 + 2928: 6(int) Load 8(invocation) + 2929: 2795(ptr) AccessChain 34(data) 37 2794 38 + 2930: 27(int64_t) Load 2929 + 2931: 27(int64_t) GroupNonUniformBitwiseOr 42 Reduce 2930 + 2932: 2795(ptr) AccessChain 34(data) 2928 2794 38 + Store 2932 2931 + 2933: 6(int) Load 8(invocation) + 2934: 2802(ptr) AccessChain 34(data) 46 2794 + 2935: 28(i64vec4) Load 2934 + 2936:2801(i64vec2) VectorShuffle 2935 2935 0 1 + 2937:2801(i64vec2) GroupNonUniformBitwiseOr 42 Reduce 2936 + 2938: 2802(ptr) AccessChain 34(data) 2933 2794 + 2939: 28(i64vec4) Load 2938 + 2940: 28(i64vec4) VectorShuffle 2939 2937 4 5 2 3 + Store 2938 2940 + 2941: 6(int) Load 8(invocation) + 2942: 2802(ptr) AccessChain 34(data) 57 2794 + 2943: 28(i64vec4) Load 2942 + 2944:2811(i64vec3) VectorShuffle 2943 2943 0 1 2 + 2945:2811(i64vec3) GroupNonUniformBitwiseOr 42 Reduce 2944 + 2946: 2802(ptr) AccessChain 34(data) 2941 2794 + 2947: 28(i64vec4) Load 2946 + 2948: 28(i64vec4) VectorShuffle 2947 2945 4 5 6 3 + Store 2946 2948 + 2949: 6(int) Load 8(invocation) + 2950: 2802(ptr) AccessChain 34(data) 67 2794 + 2951: 28(i64vec4) Load 2950 + 2952: 28(i64vec4) GroupNonUniformBitwiseOr 42 Reduce 2951 + 2953: 2802(ptr) AccessChain 34(data) 2949 2794 + Store 2953 2952 + 2954: 6(int) Load 8(invocation) + 2955: 2795(ptr) AccessChain 34(data) 37 2794 38 + 2956: 27(int64_t) Load 2955 + 2957: 27(int64_t) GroupNonUniformBitwiseXor 42 Reduce 2956 + 2958: 2795(ptr) AccessChain 34(data) 2954 2794 38 + Store 2958 2957 + 2959: 6(int) Load 8(invocation) + 2960: 2802(ptr) AccessChain 34(data) 46 2794 + 2961: 28(i64vec4) Load 2960 + 2962:2801(i64vec2) VectorShuffle 2961 2961 0 1 + 2963:2801(i64vec2) GroupNonUniformBitwiseXor 42 Reduce 2962 + 2964: 2802(ptr) AccessChain 34(data) 2959 2794 + 2965: 28(i64vec4) Load 2964 + 2966: 28(i64vec4) VectorShuffle 2965 2963 4 5 2 3 + Store 2964 2966 + 2967: 6(int) Load 8(invocation) + 2968: 2802(ptr) AccessChain 34(data) 57 2794 + 2969: 28(i64vec4) Load 2968 + 2970:2811(i64vec3) VectorShuffle 2969 2969 0 1 2 + 2971:2811(i64vec3) GroupNonUniformBitwiseXor 42 Reduce 2970 + 2972: 2802(ptr) AccessChain 34(data) 2967 2794 + 2973: 28(i64vec4) Load 2972 + 2974: 28(i64vec4) VectorShuffle 2973 2971 4 5 6 3 + Store 2972 2974 + 2975: 6(int) Load 8(invocation) + 2976: 2802(ptr) AccessChain 34(data) 67 2794 + 2977: 28(i64vec4) Load 2976 + 2978: 28(i64vec4) GroupNonUniformBitwiseXor 42 Reduce 2977 + 2979: 2802(ptr) AccessChain 34(data) 2975 2794 + Store 2979 2978 + 2980: 6(int) Load 8(invocation) + 2981: 2795(ptr) AccessChain 34(data) 37 2794 38 + 2982: 27(int64_t) Load 2981 + 2983: 27(int64_t) GroupNonUniformIAdd 42 InclusiveScan 2982 + 2984: 2795(ptr) AccessChain 34(data) 2980 2794 38 + Store 2984 2983 + 2985: 6(int) Load 8(invocation) + 2986: 2802(ptr) AccessChain 34(data) 46 2794 + 2987: 28(i64vec4) Load 2986 + 2988:2801(i64vec2) VectorShuffle 2987 2987 0 1 + 2989:2801(i64vec2) GroupNonUniformIAdd 42 InclusiveScan 2988 + 2990: 2802(ptr) AccessChain 34(data) 2985 2794 + 2991: 28(i64vec4) Load 2990 + 2992: 28(i64vec4) VectorShuffle 2991 2989 4 5 2 3 + Store 2990 2992 + 2993: 6(int) Load 8(invocation) + 2994: 2802(ptr) AccessChain 34(data) 57 2794 + 2995: 28(i64vec4) Load 2994 + 2996:2811(i64vec3) VectorShuffle 2995 2995 0 1 2 + 2997:2811(i64vec3) GroupNonUniformIAdd 42 InclusiveScan 2996 + 2998: 2802(ptr) AccessChain 34(data) 2993 2794 + 2999: 28(i64vec4) Load 2998 + 3000: 28(i64vec4) VectorShuffle 2999 2997 4 5 6 3 + Store 2998 3000 + 3001: 6(int) Load 8(invocation) + 3002: 2802(ptr) AccessChain 34(data) 67 2794 + 3003: 28(i64vec4) Load 3002 + 3004: 28(i64vec4) GroupNonUniformIAdd 42 InclusiveScan 3003 + 3005: 2802(ptr) AccessChain 34(data) 3001 2794 + Store 3005 3004 + 3006: 6(int) Load 8(invocation) + 3007: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3008: 27(int64_t) Load 3007 + 3009: 27(int64_t) GroupNonUniformIMul 42 InclusiveScan 3008 + 3010: 2795(ptr) AccessChain 34(data) 3006 2794 38 + Store 3010 3009 + 3011: 6(int) Load 8(invocation) + 3012: 2802(ptr) AccessChain 34(data) 46 2794 + 3013: 28(i64vec4) Load 3012 + 3014:2801(i64vec2) VectorShuffle 3013 3013 0 1 + 3015:2801(i64vec2) GroupNonUniformIMul 42 InclusiveScan 3014 + 3016: 2802(ptr) AccessChain 34(data) 3011 2794 + 3017: 28(i64vec4) Load 3016 + 3018: 28(i64vec4) VectorShuffle 3017 3015 4 5 2 3 + Store 3016 3018 + 3019: 6(int) Load 8(invocation) + 3020: 2802(ptr) AccessChain 34(data) 57 2794 + 3021: 28(i64vec4) Load 3020 + 3022:2811(i64vec3) VectorShuffle 3021 3021 0 1 2 + 3023:2811(i64vec3) GroupNonUniformIMul 42 InclusiveScan 3022 + 3024: 2802(ptr) AccessChain 34(data) 3019 2794 + 3025: 28(i64vec4) Load 3024 + 3026: 28(i64vec4) VectorShuffle 3025 3023 4 5 6 3 + Store 3024 3026 + 3027: 6(int) Load 8(invocation) + 3028: 2802(ptr) AccessChain 34(data) 67 2794 + 3029: 28(i64vec4) Load 3028 + 3030: 28(i64vec4) GroupNonUniformIMul 42 InclusiveScan 3029 + 3031: 2802(ptr) AccessChain 34(data) 3027 2794 + Store 3031 3030 + 3032: 6(int) Load 8(invocation) + 3033: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3034: 27(int64_t) Load 3033 + 3035: 27(int64_t) GroupNonUniformUMin 42 InclusiveScan 3034 + 3036: 2795(ptr) AccessChain 34(data) 3032 2794 38 + Store 3036 3035 + 3037: 6(int) Load 8(invocation) + 3038: 2802(ptr) AccessChain 34(data) 46 2794 + 3039: 28(i64vec4) Load 3038 + 3040:2801(i64vec2) VectorShuffle 3039 3039 0 1 + 3041:2801(i64vec2) GroupNonUniformUMin 42 InclusiveScan 3040 + 3042: 2802(ptr) AccessChain 34(data) 3037 2794 + 3043: 28(i64vec4) Load 3042 + 3044: 28(i64vec4) VectorShuffle 3043 3041 4 5 2 3 + Store 3042 3044 + 3045: 6(int) Load 8(invocation) + 3046: 2802(ptr) AccessChain 34(data) 57 2794 + 3047: 28(i64vec4) Load 3046 + 3048:2811(i64vec3) VectorShuffle 3047 3047 0 1 2 + 3049:2811(i64vec3) GroupNonUniformUMin 42 InclusiveScan 3048 + 3050: 2802(ptr) AccessChain 34(data) 3045 2794 + 3051: 28(i64vec4) Load 3050 + 3052: 28(i64vec4) VectorShuffle 3051 3049 4 5 6 3 + Store 3050 3052 + 3053: 6(int) Load 8(invocation) + 3054: 2802(ptr) AccessChain 34(data) 67 2794 + 3055: 28(i64vec4) Load 3054 + 3056: 28(i64vec4) GroupNonUniformUMin 42 InclusiveScan 3055 + 3057: 2802(ptr) AccessChain 34(data) 3053 2794 + Store 3057 3056 + 3058: 6(int) Load 8(invocation) + 3059: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3060: 27(int64_t) Load 3059 + 3061: 27(int64_t) GroupNonUniformUMax 42 InclusiveScan 3060 + 3062: 2795(ptr) AccessChain 34(data) 3058 2794 38 + Store 3062 3061 + 3063: 6(int) Load 8(invocation) + 3064: 2802(ptr) AccessChain 34(data) 46 2794 + 3065: 28(i64vec4) Load 3064 + 3066:2801(i64vec2) VectorShuffle 3065 3065 0 1 + 3067:2801(i64vec2) GroupNonUniformUMax 42 InclusiveScan 3066 + 3068: 2802(ptr) AccessChain 34(data) 3063 2794 + 3069: 28(i64vec4) Load 3068 + 3070: 28(i64vec4) VectorShuffle 3069 3067 4 5 2 3 + Store 3068 3070 + 3071: 6(int) Load 8(invocation) + 3072: 2802(ptr) AccessChain 34(data) 57 2794 + 3073: 28(i64vec4) Load 3072 + 3074:2811(i64vec3) VectorShuffle 3073 3073 0 1 2 + 3075:2811(i64vec3) GroupNonUniformUMax 42 InclusiveScan 3074 + 3076: 2802(ptr) AccessChain 34(data) 3071 2794 + 3077: 28(i64vec4) Load 3076 + 3078: 28(i64vec4) VectorShuffle 3077 3075 4 5 6 3 + Store 3076 3078 + 3079: 6(int) Load 8(invocation) + 3080: 2802(ptr) AccessChain 34(data) 67 2794 + 3081: 28(i64vec4) Load 3080 + 3082: 28(i64vec4) GroupNonUniformUMax 42 InclusiveScan 3081 + 3083: 2802(ptr) AccessChain 34(data) 3079 2794 + Store 3083 3082 + 3084: 6(int) Load 8(invocation) + 3085: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3086: 27(int64_t) Load 3085 + 3087: 27(int64_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 3086 + 3088: 2795(ptr) AccessChain 34(data) 3084 2794 38 + Store 3088 3087 + 3089: 6(int) Load 8(invocation) + 3090: 2802(ptr) AccessChain 34(data) 46 2794 + 3091: 28(i64vec4) Load 3090 + 3092:2801(i64vec2) VectorShuffle 3091 3091 0 1 + 3093:2801(i64vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 3092 + 3094: 2802(ptr) AccessChain 34(data) 3089 2794 + 3095: 28(i64vec4) Load 3094 + 3096: 28(i64vec4) VectorShuffle 3095 3093 4 5 2 3 + Store 3094 3096 + 3097: 6(int) Load 8(invocation) + 3098: 2802(ptr) AccessChain 34(data) 57 2794 + 3099: 28(i64vec4) Load 3098 + 3100:2811(i64vec3) VectorShuffle 3099 3099 0 1 2 + 3101:2811(i64vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 3100 + 3102: 2802(ptr) AccessChain 34(data) 3097 2794 + 3103: 28(i64vec4) Load 3102 + 3104: 28(i64vec4) VectorShuffle 3103 3101 4 5 6 3 + Store 3102 3104 + 3105: 6(int) Load 8(invocation) + 3106: 2802(ptr) AccessChain 34(data) 67 2794 + 3107: 28(i64vec4) Load 3106 + 3108: 28(i64vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 3107 + 3109: 2802(ptr) AccessChain 34(data) 3105 2794 + Store 3109 3108 + 3110: 6(int) Load 8(invocation) + 3111: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3112: 27(int64_t) Load 3111 + 3113: 27(int64_t) GroupNonUniformBitwiseOr 42 InclusiveScan 3112 + 3114: 2795(ptr) AccessChain 34(data) 3110 2794 38 + Store 3114 3113 + 3115: 6(int) Load 8(invocation) + 3116: 2802(ptr) AccessChain 34(data) 46 2794 + 3117: 28(i64vec4) Load 3116 + 3118:2801(i64vec2) VectorShuffle 3117 3117 0 1 + 3119:2801(i64vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 3118 + 3120: 2802(ptr) AccessChain 34(data) 3115 2794 + 3121: 28(i64vec4) Load 3120 + 3122: 28(i64vec4) VectorShuffle 3121 3119 4 5 2 3 + Store 3120 3122 + 3123: 6(int) Load 8(invocation) + 3124: 2802(ptr) AccessChain 34(data) 57 2794 + 3125: 28(i64vec4) Load 3124 + 3126:2811(i64vec3) VectorShuffle 3125 3125 0 1 2 + 3127:2811(i64vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 3126 + 3128: 2802(ptr) AccessChain 34(data) 3123 2794 + 3129: 28(i64vec4) Load 3128 + 3130: 28(i64vec4) VectorShuffle 3129 3127 4 5 6 3 + Store 3128 3130 + 3131: 6(int) Load 8(invocation) + 3132: 2802(ptr) AccessChain 34(data) 67 2794 + 3133: 28(i64vec4) Load 3132 + 3134: 28(i64vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 3133 + 3135: 2802(ptr) AccessChain 34(data) 3131 2794 + Store 3135 3134 + 3136: 6(int) Load 8(invocation) + 3137: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3138: 27(int64_t) Load 3137 + 3139: 27(int64_t) GroupNonUniformBitwiseXor 42 InclusiveScan 3138 + 3140: 2795(ptr) AccessChain 34(data) 3136 2794 38 + Store 3140 3139 + 3141: 6(int) Load 8(invocation) + 3142: 2802(ptr) AccessChain 34(data) 46 2794 + 3143: 28(i64vec4) Load 3142 + 3144:2801(i64vec2) VectorShuffle 3143 3143 0 1 + 3145:2801(i64vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 3144 + 3146: 2802(ptr) AccessChain 34(data) 3141 2794 + 3147: 28(i64vec4) Load 3146 + 3148: 28(i64vec4) VectorShuffle 3147 3145 4 5 2 3 + Store 3146 3148 + 3149: 6(int) Load 8(invocation) + 3150: 2802(ptr) AccessChain 34(data) 57 2794 + 3151: 28(i64vec4) Load 3150 + 3152:2811(i64vec3) VectorShuffle 3151 3151 0 1 2 + 3153:2811(i64vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 3152 + 3154: 2802(ptr) AccessChain 34(data) 3149 2794 + 3155: 28(i64vec4) Load 3154 + 3156: 28(i64vec4) VectorShuffle 3155 3153 4 5 6 3 + Store 3154 3156 + 3157: 6(int) Load 8(invocation) + 3158: 2802(ptr) AccessChain 34(data) 67 2794 + 3159: 28(i64vec4) Load 3158 + 3160: 28(i64vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 3159 + 3161: 2802(ptr) AccessChain 34(data) 3157 2794 + Store 3161 3160 + 3162: 6(int) Load 8(invocation) + 3163: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3164: 27(int64_t) Load 3163 + 3165: 27(int64_t) GroupNonUniformIAdd 42 ExclusiveScan 3164 + 3166: 2795(ptr) AccessChain 34(data) 3162 2794 38 + Store 3166 3165 + 3167: 6(int) Load 8(invocation) + 3168: 2802(ptr) AccessChain 34(data) 46 2794 + 3169: 28(i64vec4) Load 3168 + 3170:2801(i64vec2) VectorShuffle 3169 3169 0 1 + 3171:2801(i64vec2) GroupNonUniformIAdd 42 ExclusiveScan 3170 + 3172: 2802(ptr) AccessChain 34(data) 3167 2794 + 3173: 28(i64vec4) Load 3172 + 3174: 28(i64vec4) VectorShuffle 3173 3171 4 5 2 3 + Store 3172 3174 + 3175: 6(int) Load 8(invocation) + 3176: 2802(ptr) AccessChain 34(data) 57 2794 + 3177: 28(i64vec4) Load 3176 + 3178:2811(i64vec3) VectorShuffle 3177 3177 0 1 2 + 3179:2811(i64vec3) GroupNonUniformIAdd 42 ExclusiveScan 3178 + 3180: 2802(ptr) AccessChain 34(data) 3175 2794 + 3181: 28(i64vec4) Load 3180 + 3182: 28(i64vec4) VectorShuffle 3181 3179 4 5 6 3 + Store 3180 3182 + 3183: 6(int) Load 8(invocation) + 3184: 2802(ptr) AccessChain 34(data) 67 2794 + 3185: 28(i64vec4) Load 3184 + 3186: 28(i64vec4) GroupNonUniformIAdd 42 ExclusiveScan 3185 + 3187: 2802(ptr) AccessChain 34(data) 3183 2794 + Store 3187 3186 + 3188: 6(int) Load 8(invocation) + 3189: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3190: 27(int64_t) Load 3189 + 3191: 27(int64_t) GroupNonUniformIMul 42 ExclusiveScan 3190 + 3192: 2795(ptr) AccessChain 34(data) 3188 2794 38 + Store 3192 3191 + 3193: 6(int) Load 8(invocation) + 3194: 2802(ptr) AccessChain 34(data) 46 2794 + 3195: 28(i64vec4) Load 3194 + 3196:2801(i64vec2) VectorShuffle 3195 3195 0 1 + 3197:2801(i64vec2) GroupNonUniformIMul 42 ExclusiveScan 3196 + 3198: 2802(ptr) AccessChain 34(data) 3193 2794 + 3199: 28(i64vec4) Load 3198 + 3200: 28(i64vec4) VectorShuffle 3199 3197 4 5 2 3 + Store 3198 3200 + 3201: 6(int) Load 8(invocation) + 3202: 2802(ptr) AccessChain 34(data) 57 2794 + 3203: 28(i64vec4) Load 3202 + 3204:2811(i64vec3) VectorShuffle 3203 3203 0 1 2 + 3205:2811(i64vec3) GroupNonUniformIMul 42 ExclusiveScan 3204 + 3206: 2802(ptr) AccessChain 34(data) 3201 2794 + 3207: 28(i64vec4) Load 3206 + 3208: 28(i64vec4) VectorShuffle 3207 3205 4 5 6 3 + Store 3206 3208 + 3209: 6(int) Load 8(invocation) + 3210: 2802(ptr) AccessChain 34(data) 67 2794 + 3211: 28(i64vec4) Load 3210 + 3212: 28(i64vec4) GroupNonUniformIMul 42 ExclusiveScan 3211 + 3213: 2802(ptr) AccessChain 34(data) 3209 2794 + Store 3213 3212 + 3214: 6(int) Load 8(invocation) + 3215: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3216: 27(int64_t) Load 3215 + 3217: 27(int64_t) GroupNonUniformUMin 42 ExclusiveScan 3216 + 3218: 2795(ptr) AccessChain 34(data) 3214 2794 38 + Store 3218 3217 + 3219: 6(int) Load 8(invocation) + 3220: 2802(ptr) AccessChain 34(data) 46 2794 + 3221: 28(i64vec4) Load 3220 + 3222:2801(i64vec2) VectorShuffle 3221 3221 0 1 + 3223:2801(i64vec2) GroupNonUniformUMin 42 ExclusiveScan 3222 + 3224: 2802(ptr) AccessChain 34(data) 3219 2794 + 3225: 28(i64vec4) Load 3224 + 3226: 28(i64vec4) VectorShuffle 3225 3223 4 5 2 3 + Store 3224 3226 + 3227: 6(int) Load 8(invocation) + 3228: 2802(ptr) AccessChain 34(data) 57 2794 + 3229: 28(i64vec4) Load 3228 + 3230:2811(i64vec3) VectorShuffle 3229 3229 0 1 2 + 3231:2811(i64vec3) GroupNonUniformUMin 42 ExclusiveScan 3230 + 3232: 2802(ptr) AccessChain 34(data) 3227 2794 + 3233: 28(i64vec4) Load 3232 + 3234: 28(i64vec4) VectorShuffle 3233 3231 4 5 6 3 + Store 3232 3234 + 3235: 6(int) Load 8(invocation) + 3236: 2802(ptr) AccessChain 34(data) 67 2794 + 3237: 28(i64vec4) Load 3236 + 3238: 28(i64vec4) GroupNonUniformUMin 42 ExclusiveScan 3237 + 3239: 2802(ptr) AccessChain 34(data) 3235 2794 + Store 3239 3238 + 3240: 6(int) Load 8(invocation) + 3241: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3242: 27(int64_t) Load 3241 + 3243: 27(int64_t) GroupNonUniformUMax 42 ExclusiveScan 3242 + 3244: 2795(ptr) AccessChain 34(data) 3240 2794 38 + Store 3244 3243 + 3245: 6(int) Load 8(invocation) + 3246: 2802(ptr) AccessChain 34(data) 46 2794 + 3247: 28(i64vec4) Load 3246 + 3248:2801(i64vec2) VectorShuffle 3247 3247 0 1 + 3249:2801(i64vec2) GroupNonUniformUMax 42 ExclusiveScan 3248 + 3250: 2802(ptr) AccessChain 34(data) 3245 2794 + 3251: 28(i64vec4) Load 3250 + 3252: 28(i64vec4) VectorShuffle 3251 3249 4 5 2 3 + Store 3250 3252 + 3253: 6(int) Load 8(invocation) + 3254: 2802(ptr) AccessChain 34(data) 57 2794 + 3255: 28(i64vec4) Load 3254 + 3256:2811(i64vec3) VectorShuffle 3255 3255 0 1 2 + 3257:2811(i64vec3) GroupNonUniformUMax 42 ExclusiveScan 3256 + 3258: 2802(ptr) AccessChain 34(data) 3253 2794 + 3259: 28(i64vec4) Load 3258 + 3260: 28(i64vec4) VectorShuffle 3259 3257 4 5 6 3 + Store 3258 3260 + 3261: 6(int) Load 8(invocation) + 3262: 2802(ptr) AccessChain 34(data) 67 2794 + 3263: 28(i64vec4) Load 3262 + 3264: 28(i64vec4) GroupNonUniformUMax 42 ExclusiveScan 3263 + 3265: 2802(ptr) AccessChain 34(data) 3261 2794 + Store 3265 3264 + 3266: 6(int) Load 8(invocation) + 3267: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3268: 27(int64_t) Load 3267 + 3269: 27(int64_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3268 + 3270: 2795(ptr) AccessChain 34(data) 3266 2794 38 + Store 3270 3269 + 3271: 6(int) Load 8(invocation) + 3272: 2802(ptr) AccessChain 34(data) 46 2794 + 3273: 28(i64vec4) Load 3272 + 3274:2801(i64vec2) VectorShuffle 3273 3273 0 1 + 3275:2801(i64vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3274 + 3276: 2802(ptr) AccessChain 34(data) 3271 2794 + 3277: 28(i64vec4) Load 3276 + 3278: 28(i64vec4) VectorShuffle 3277 3275 4 5 2 3 + Store 3276 3278 + 3279: 6(int) Load 8(invocation) + 3280: 2802(ptr) AccessChain 34(data) 57 2794 + 3281: 28(i64vec4) Load 3280 + 3282:2811(i64vec3) VectorShuffle 3281 3281 0 1 2 + 3283:2811(i64vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3282 + 3284: 2802(ptr) AccessChain 34(data) 3279 2794 + 3285: 28(i64vec4) Load 3284 + 3286: 28(i64vec4) VectorShuffle 3285 3283 4 5 6 3 + Store 3284 3286 + 3287: 6(int) Load 8(invocation) + 3288: 2802(ptr) AccessChain 34(data) 67 2794 + 3289: 28(i64vec4) Load 3288 + 3290: 28(i64vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3289 + 3291: 2802(ptr) AccessChain 34(data) 3287 2794 + Store 3291 3290 + 3292: 6(int) Load 8(invocation) + 3293: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3294: 27(int64_t) Load 3293 + 3295: 27(int64_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 3294 + 3296: 2795(ptr) AccessChain 34(data) 3292 2794 38 + Store 3296 3295 + 3297: 6(int) Load 8(invocation) + 3298: 2802(ptr) AccessChain 34(data) 46 2794 + 3299: 28(i64vec4) Load 3298 + 3300:2801(i64vec2) VectorShuffle 3299 3299 0 1 + 3301:2801(i64vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 3300 + 3302: 2802(ptr) AccessChain 34(data) 3297 2794 + 3303: 28(i64vec4) Load 3302 + 3304: 28(i64vec4) VectorShuffle 3303 3301 4 5 2 3 + Store 3302 3304 + 3305: 6(int) Load 8(invocation) + 3306: 2802(ptr) AccessChain 34(data) 57 2794 + 3307: 28(i64vec4) Load 3306 + 3308:2811(i64vec3) VectorShuffle 3307 3307 0 1 2 + 3309:2811(i64vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 3308 + 3310: 2802(ptr) AccessChain 34(data) 3305 2794 + 3311: 28(i64vec4) Load 3310 + 3312: 28(i64vec4) VectorShuffle 3311 3309 4 5 6 3 + Store 3310 3312 + 3313: 6(int) Load 8(invocation) + 3314: 2802(ptr) AccessChain 34(data) 67 2794 + 3315: 28(i64vec4) Load 3314 + 3316: 28(i64vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 3315 + 3317: 2802(ptr) AccessChain 34(data) 3313 2794 + Store 3317 3316 + 3318: 6(int) Load 8(invocation) + 3319: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3320: 27(int64_t) Load 3319 + 3321: 27(int64_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 3320 + 3322: 2795(ptr) AccessChain 34(data) 3318 2794 38 + Store 3322 3321 + 3323: 6(int) Load 8(invocation) + 3324: 2802(ptr) AccessChain 34(data) 46 2794 + 3325: 28(i64vec4) Load 3324 + 3326:2801(i64vec2) VectorShuffle 3325 3325 0 1 + 3327:2801(i64vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 3326 + 3328: 2802(ptr) AccessChain 34(data) 3323 2794 + 3329: 28(i64vec4) Load 3328 + 3330: 28(i64vec4) VectorShuffle 3329 3327 4 5 2 3 + Store 3328 3330 + 3331: 6(int) Load 8(invocation) + 3332: 2802(ptr) AccessChain 34(data) 57 2794 + 3333: 28(i64vec4) Load 3332 + 3334:2811(i64vec3) VectorShuffle 3333 3333 0 1 2 + 3335:2811(i64vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 3334 + 3336: 2802(ptr) AccessChain 34(data) 3331 2794 + 3337: 28(i64vec4) Load 3336 + 3338: 28(i64vec4) VectorShuffle 3337 3335 4 5 6 3 + Store 3336 3338 + 3339: 6(int) Load 8(invocation) + 3340: 2802(ptr) AccessChain 34(data) 67 2794 + 3341: 28(i64vec4) Load 3340 + 3342: 28(i64vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 3341 + 3343: 2802(ptr) AccessChain 34(data) 3339 2794 + Store 3343 3342 + 3344: 6(int) Load 8(invocation) + 3347: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3348:29(float16_t) Load 3347 + 3349:29(float16_t) GroupNonUniformFAdd 42 Reduce 3348 + 3350: 3346(ptr) AccessChain 34(data) 3344 3345 38 + Store 3350 3349 + 3351: 6(int) Load 8(invocation) + 3354: 3353(ptr) AccessChain 34(data) 46 3345 + 3355: 30(f16vec4) Load 3354 + 3356:3352(f16vec2) VectorShuffle 3355 3355 0 1 + 3357:3352(f16vec2) GroupNonUniformFAdd 42 Reduce 3356 + 3358: 3353(ptr) AccessChain 34(data) 3351 3345 + 3359: 30(f16vec4) Load 3358 + 3360: 30(f16vec4) VectorShuffle 3359 3357 4 5 2 3 + Store 3358 3360 + 3361: 6(int) Load 8(invocation) + 3363: 3353(ptr) AccessChain 34(data) 57 3345 + 3364: 30(f16vec4) Load 3363 + 3365:3362(f16vec3) VectorShuffle 3364 3364 0 1 2 + 3366:3362(f16vec3) GroupNonUniformFAdd 42 Reduce 3365 + 3367: 3353(ptr) AccessChain 34(data) 3361 3345 + 3368: 30(f16vec4) Load 3367 + 3369: 30(f16vec4) VectorShuffle 3368 3366 4 5 6 3 + Store 3367 3369 + 3370: 6(int) Load 8(invocation) + 3371: 3353(ptr) AccessChain 34(data) 67 3345 + 3372: 30(f16vec4) Load 3371 + 3373: 30(f16vec4) GroupNonUniformFAdd 42 Reduce 3372 + 3374: 3353(ptr) AccessChain 34(data) 3370 3345 + Store 3374 3373 + 3375: 6(int) Load 8(invocation) + 3376: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3377:29(float16_t) Load 3376 + 3378:29(float16_t) GroupNonUniformFMul 42 Reduce 3377 + 3379: 3346(ptr) AccessChain 34(data) 3375 3345 38 + Store 3379 3378 + 3380: 6(int) Load 8(invocation) + 3381: 3353(ptr) AccessChain 34(data) 46 3345 + 3382: 30(f16vec4) Load 3381 + 3383:3352(f16vec2) VectorShuffle 3382 3382 0 1 + 3384:3352(f16vec2) GroupNonUniformFMul 42 Reduce 3383 + 3385: 3353(ptr) AccessChain 34(data) 3380 3345 + 3386: 30(f16vec4) Load 3385 + 3387: 30(f16vec4) VectorShuffle 3386 3384 4 5 2 3 + Store 3385 3387 + 3388: 6(int) Load 8(invocation) + 3389: 3353(ptr) AccessChain 34(data) 57 3345 + 3390: 30(f16vec4) Load 3389 + 3391:3362(f16vec3) VectorShuffle 3390 3390 0 1 2 + 3392:3362(f16vec3) GroupNonUniformFMul 42 Reduce 3391 + 3393: 3353(ptr) AccessChain 34(data) 3388 3345 + 3394: 30(f16vec4) Load 3393 + 3395: 30(f16vec4) VectorShuffle 3394 3392 4 5 6 3 + Store 3393 3395 + 3396: 6(int) Load 8(invocation) + 3397: 3353(ptr) AccessChain 34(data) 67 3345 + 3398: 30(f16vec4) Load 3397 + 3399: 30(f16vec4) GroupNonUniformFMul 42 Reduce 3398 + 3400: 3353(ptr) AccessChain 34(data) 3396 3345 + Store 3400 3399 + 3401: 6(int) Load 8(invocation) + 3402: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3403:29(float16_t) Load 3402 + 3404:29(float16_t) GroupNonUniformFMin 42 Reduce 3403 + 3405: 3346(ptr) AccessChain 34(data) 3401 3345 38 + Store 3405 3404 + 3406: 6(int) Load 8(invocation) + 3407: 3353(ptr) AccessChain 34(data) 46 3345 + 3408: 30(f16vec4) Load 3407 + 3409:3352(f16vec2) VectorShuffle 3408 3408 0 1 + 3410:3352(f16vec2) GroupNonUniformFMin 42 Reduce 3409 + 3411: 3353(ptr) AccessChain 34(data) 3406 3345 + 3412: 30(f16vec4) Load 3411 + 3413: 30(f16vec4) VectorShuffle 3412 3410 4 5 2 3 + Store 3411 3413 + 3414: 6(int) Load 8(invocation) + 3415: 3353(ptr) AccessChain 34(data) 57 3345 + 3416: 30(f16vec4) Load 3415 + 3417:3362(f16vec3) VectorShuffle 3416 3416 0 1 2 + 3418:3362(f16vec3) GroupNonUniformFMin 42 Reduce 3417 + 3419: 3353(ptr) AccessChain 34(data) 3414 3345 + 3420: 30(f16vec4) Load 3419 + 3421: 30(f16vec4) VectorShuffle 3420 3418 4 5 6 3 + Store 3419 3421 + 3422: 6(int) Load 8(invocation) + 3423: 3353(ptr) AccessChain 34(data) 67 3345 + 3424: 30(f16vec4) Load 3423 + 3425: 30(f16vec4) GroupNonUniformFMin 42 Reduce 3424 + 3426: 3353(ptr) AccessChain 34(data) 3422 3345 + Store 3426 3425 + 3427: 6(int) Load 8(invocation) + 3428: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3429:29(float16_t) Load 3428 + 3430:29(float16_t) GroupNonUniformFMax 42 Reduce 3429 + 3431: 3346(ptr) AccessChain 34(data) 3427 3345 38 + Store 3431 3430 + 3432: 6(int) Load 8(invocation) + 3433: 3353(ptr) AccessChain 34(data) 46 3345 + 3434: 30(f16vec4) Load 3433 + 3435:3352(f16vec2) VectorShuffle 3434 3434 0 1 + 3436:3352(f16vec2) GroupNonUniformFMax 42 Reduce 3435 + 3437: 3353(ptr) AccessChain 34(data) 3432 3345 + 3438: 30(f16vec4) Load 3437 + 3439: 30(f16vec4) VectorShuffle 3438 3436 4 5 2 3 + Store 3437 3439 + 3440: 6(int) Load 8(invocation) + 3441: 3353(ptr) AccessChain 34(data) 57 3345 + 3442: 30(f16vec4) Load 3441 + 3443:3362(f16vec3) VectorShuffle 3442 3442 0 1 2 + 3444:3362(f16vec3) GroupNonUniformFMax 42 Reduce 3443 + 3445: 3353(ptr) AccessChain 34(data) 3440 3345 + 3446: 30(f16vec4) Load 3445 + 3447: 30(f16vec4) VectorShuffle 3446 3444 4 5 6 3 + Store 3445 3447 + 3448: 6(int) Load 8(invocation) + 3449: 3353(ptr) AccessChain 34(data) 67 3345 + 3450: 30(f16vec4) Load 3449 + 3451: 30(f16vec4) GroupNonUniformFMax 42 Reduce 3450 + 3452: 3353(ptr) AccessChain 34(data) 3448 3345 + Store 3452 3451 + 3453: 6(int) Load 8(invocation) + 3454: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3455:29(float16_t) Load 3454 + 3456:29(float16_t) GroupNonUniformFAdd 42 InclusiveScan 3455 + 3457: 3346(ptr) AccessChain 34(data) 3453 3345 38 + Store 3457 3456 + 3458: 6(int) Load 8(invocation) + 3459: 3353(ptr) AccessChain 34(data) 46 3345 + 3460: 30(f16vec4) Load 3459 + 3461:3352(f16vec2) VectorShuffle 3460 3460 0 1 + 3462:3352(f16vec2) GroupNonUniformFAdd 42 InclusiveScan 3461 + 3463: 3353(ptr) AccessChain 34(data) 3458 3345 + 3464: 30(f16vec4) Load 3463 + 3465: 30(f16vec4) VectorShuffle 3464 3462 4 5 2 3 + Store 3463 3465 + 3466: 6(int) Load 8(invocation) + 3467: 3353(ptr) AccessChain 34(data) 57 3345 + 3468: 30(f16vec4) Load 3467 + 3469:3362(f16vec3) VectorShuffle 3468 3468 0 1 2 + 3470:3362(f16vec3) GroupNonUniformFAdd 42 InclusiveScan 3469 + 3471: 3353(ptr) AccessChain 34(data) 3466 3345 + 3472: 30(f16vec4) Load 3471 + 3473: 30(f16vec4) VectorShuffle 3472 3470 4 5 6 3 + Store 3471 3473 + 3474: 6(int) Load 8(invocation) + 3475: 3353(ptr) AccessChain 34(data) 67 3345 + 3476: 30(f16vec4) Load 3475 + 3477: 30(f16vec4) GroupNonUniformFAdd 42 InclusiveScan 3476 + 3478: 3353(ptr) AccessChain 34(data) 3474 3345 + Store 3478 3477 + 3479: 6(int) Load 8(invocation) + 3480: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3481:29(float16_t) Load 3480 + 3482:29(float16_t) GroupNonUniformFMul 42 InclusiveScan 3481 + 3483: 3346(ptr) AccessChain 34(data) 3479 3345 38 + Store 3483 3482 + 3484: 6(int) Load 8(invocation) + 3485: 3353(ptr) AccessChain 34(data) 46 3345 + 3486: 30(f16vec4) Load 3485 + 3487:3352(f16vec2) VectorShuffle 3486 3486 0 1 + 3488:3352(f16vec2) GroupNonUniformFMul 42 InclusiveScan 3487 + 3489: 3353(ptr) AccessChain 34(data) 3484 3345 + 3490: 30(f16vec4) Load 3489 + 3491: 30(f16vec4) VectorShuffle 3490 3488 4 5 2 3 + Store 3489 3491 + 3492: 6(int) Load 8(invocation) + 3493: 3353(ptr) AccessChain 34(data) 57 3345 + 3494: 30(f16vec4) Load 3493 + 3495:3362(f16vec3) VectorShuffle 3494 3494 0 1 2 + 3496:3362(f16vec3) GroupNonUniformFMul 42 InclusiveScan 3495 + 3497: 3353(ptr) AccessChain 34(data) 3492 3345 + 3498: 30(f16vec4) Load 3497 + 3499: 30(f16vec4) VectorShuffle 3498 3496 4 5 6 3 + Store 3497 3499 + 3500: 6(int) Load 8(invocation) + 3501: 3353(ptr) AccessChain 34(data) 67 3345 + 3502: 30(f16vec4) Load 3501 + 3503: 30(f16vec4) GroupNonUniformFMul 42 InclusiveScan 3502 + 3504: 3353(ptr) AccessChain 34(data) 3500 3345 + Store 3504 3503 + 3505: 6(int) Load 8(invocation) + 3506: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3507:29(float16_t) Load 3506 + 3508:29(float16_t) GroupNonUniformFMin 42 InclusiveScan 3507 + 3509: 3346(ptr) AccessChain 34(data) 3505 3345 38 + Store 3509 3508 + 3510: 6(int) Load 8(invocation) + 3511: 3353(ptr) AccessChain 34(data) 46 3345 + 3512: 30(f16vec4) Load 3511 + 3513:3352(f16vec2) VectorShuffle 3512 3512 0 1 + 3514:3352(f16vec2) GroupNonUniformFMin 42 InclusiveScan 3513 + 3515: 3353(ptr) AccessChain 34(data) 3510 3345 + 3516: 30(f16vec4) Load 3515 + 3517: 30(f16vec4) VectorShuffle 3516 3514 4 5 2 3 + Store 3515 3517 + 3518: 6(int) Load 8(invocation) + 3519: 3353(ptr) AccessChain 34(data) 57 3345 + 3520: 30(f16vec4) Load 3519 + 3521:3362(f16vec3) VectorShuffle 3520 3520 0 1 2 + 3522:3362(f16vec3) GroupNonUniformFMin 42 InclusiveScan 3521 + 3523: 3353(ptr) AccessChain 34(data) 3518 3345 + 3524: 30(f16vec4) Load 3523 + 3525: 30(f16vec4) VectorShuffle 3524 3522 4 5 6 3 + Store 3523 3525 + 3526: 6(int) Load 8(invocation) + 3527: 3353(ptr) AccessChain 34(data) 67 3345 + 3528: 30(f16vec4) Load 3527 + 3529: 30(f16vec4) GroupNonUniformFMin 42 InclusiveScan 3528 + 3530: 3353(ptr) AccessChain 34(data) 3526 3345 + Store 3530 3529 + 3531: 6(int) Load 8(invocation) + 3532: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3533:29(float16_t) Load 3532 + 3534:29(float16_t) GroupNonUniformFMax 42 InclusiveScan 3533 + 3535: 3346(ptr) AccessChain 34(data) 3531 3345 38 + Store 3535 3534 + 3536: 6(int) Load 8(invocation) + 3537: 3353(ptr) AccessChain 34(data) 46 3345 + 3538: 30(f16vec4) Load 3537 + 3539:3352(f16vec2) VectorShuffle 3538 3538 0 1 + 3540:3352(f16vec2) GroupNonUniformFMax 42 InclusiveScan 3539 + 3541: 3353(ptr) AccessChain 34(data) 3536 3345 + 3542: 30(f16vec4) Load 3541 + 3543: 30(f16vec4) VectorShuffle 3542 3540 4 5 2 3 + Store 3541 3543 + 3544: 6(int) Load 8(invocation) + 3545: 3353(ptr) AccessChain 34(data) 57 3345 + 3546: 30(f16vec4) Load 3545 + 3547:3362(f16vec3) VectorShuffle 3546 3546 0 1 2 + 3548:3362(f16vec3) GroupNonUniformFMax 42 InclusiveScan 3547 + 3549: 3353(ptr) AccessChain 34(data) 3544 3345 + 3550: 30(f16vec4) Load 3549 + 3551: 30(f16vec4) VectorShuffle 3550 3548 4 5 6 3 + Store 3549 3551 + 3552: 6(int) Load 8(invocation) + 3553: 3353(ptr) AccessChain 34(data) 67 3345 + 3554: 30(f16vec4) Load 3553 + 3555: 30(f16vec4) GroupNonUniformFMax 42 InclusiveScan 3554 + 3556: 3353(ptr) AccessChain 34(data) 3552 3345 + Store 3556 3555 + 3557: 6(int) Load 8(invocation) + 3558: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3559:29(float16_t) Load 3558 + 3560:29(float16_t) GroupNonUniformFAdd 42 ExclusiveScan 3559 + 3561: 3346(ptr) AccessChain 34(data) 3557 3345 38 + Store 3561 3560 + 3562: 6(int) Load 8(invocation) + 3563: 3353(ptr) AccessChain 34(data) 46 3345 + 3564: 30(f16vec4) Load 3563 + 3565:3352(f16vec2) VectorShuffle 3564 3564 0 1 + 3566:3352(f16vec2) GroupNonUniformFAdd 42 ExclusiveScan 3565 + 3567: 3353(ptr) AccessChain 34(data) 3562 3345 + 3568: 30(f16vec4) Load 3567 + 3569: 30(f16vec4) VectorShuffle 3568 3566 4 5 2 3 + Store 3567 3569 + 3570: 6(int) Load 8(invocation) + 3571: 3353(ptr) AccessChain 34(data) 57 3345 + 3572: 30(f16vec4) Load 3571 + 3573:3362(f16vec3) VectorShuffle 3572 3572 0 1 2 + 3574:3362(f16vec3) GroupNonUniformFAdd 42 ExclusiveScan 3573 + 3575: 3353(ptr) AccessChain 34(data) 3570 3345 + 3576: 30(f16vec4) Load 3575 + 3577: 30(f16vec4) VectorShuffle 3576 3574 4 5 6 3 + Store 3575 3577 + 3578: 6(int) Load 8(invocation) + 3579: 3353(ptr) AccessChain 34(data) 67 3345 + 3580: 30(f16vec4) Load 3579 + 3581: 30(f16vec4) GroupNonUniformFAdd 42 ExclusiveScan 3580 + 3582: 3353(ptr) AccessChain 34(data) 3578 3345 + Store 3582 3581 + 3583: 6(int) Load 8(invocation) + 3584: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3585:29(float16_t) Load 3584 + 3586:29(float16_t) GroupNonUniformFMul 42 ExclusiveScan 3585 + 3587: 3346(ptr) AccessChain 34(data) 3583 3345 38 + Store 3587 3586 + 3588: 6(int) Load 8(invocation) + 3589: 3353(ptr) AccessChain 34(data) 46 3345 + 3590: 30(f16vec4) Load 3589 + 3591:3352(f16vec2) VectorShuffle 3590 3590 0 1 + 3592:3352(f16vec2) GroupNonUniformFMul 42 ExclusiveScan 3591 + 3593: 3353(ptr) AccessChain 34(data) 3588 3345 + 3594: 30(f16vec4) Load 3593 + 3595: 30(f16vec4) VectorShuffle 3594 3592 4 5 2 3 + Store 3593 3595 + 3596: 6(int) Load 8(invocation) + 3597: 3353(ptr) AccessChain 34(data) 57 3345 + 3598: 30(f16vec4) Load 3597 + 3599:3362(f16vec3) VectorShuffle 3598 3598 0 1 2 + 3600:3362(f16vec3) GroupNonUniformFMul 42 ExclusiveScan 3599 + 3601: 3353(ptr) AccessChain 34(data) 3596 3345 + 3602: 30(f16vec4) Load 3601 + 3603: 30(f16vec4) VectorShuffle 3602 3600 4 5 6 3 + Store 3601 3603 + 3604: 6(int) Load 8(invocation) + 3605: 3353(ptr) AccessChain 34(data) 67 3345 + 3606: 30(f16vec4) Load 3605 + 3607: 30(f16vec4) GroupNonUniformFMul 42 ExclusiveScan 3606 + 3608: 3353(ptr) AccessChain 34(data) 3604 3345 + Store 3608 3607 + 3609: 6(int) Load 8(invocation) + 3610: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3611:29(float16_t) Load 3610 + 3612:29(float16_t) GroupNonUniformFMin 42 ExclusiveScan 3611 + 3613: 3346(ptr) AccessChain 34(data) 3609 3345 38 + Store 3613 3612 + 3614: 6(int) Load 8(invocation) + 3615: 3353(ptr) AccessChain 34(data) 46 3345 + 3616: 30(f16vec4) Load 3615 + 3617:3352(f16vec2) VectorShuffle 3616 3616 0 1 + 3618:3352(f16vec2) GroupNonUniformFMin 42 ExclusiveScan 3617 + 3619: 3353(ptr) AccessChain 34(data) 3614 3345 + 3620: 30(f16vec4) Load 3619 + 3621: 30(f16vec4) VectorShuffle 3620 3618 4 5 2 3 + Store 3619 3621 + 3622: 6(int) Load 8(invocation) + 3623: 3353(ptr) AccessChain 34(data) 57 3345 + 3624: 30(f16vec4) Load 3623 + 3625:3362(f16vec3) VectorShuffle 3624 3624 0 1 2 + 3626:3362(f16vec3) GroupNonUniformFMin 42 ExclusiveScan 3625 + 3627: 3353(ptr) AccessChain 34(data) 3622 3345 + 3628: 30(f16vec4) Load 3627 + 3629: 30(f16vec4) VectorShuffle 3628 3626 4 5 6 3 + Store 3627 3629 + 3630: 6(int) Load 8(invocation) + 3631: 3353(ptr) AccessChain 34(data) 67 3345 + 3632: 30(f16vec4) Load 3631 + 3633: 30(f16vec4) GroupNonUniformFMin 42 ExclusiveScan 3632 + 3634: 3353(ptr) AccessChain 34(data) 3630 3345 + Store 3634 3633 + 3635: 6(int) Load 8(invocation) + 3636: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3637:29(float16_t) Load 3636 + 3638:29(float16_t) GroupNonUniformFMax 42 ExclusiveScan 3637 + 3639: 3346(ptr) AccessChain 34(data) 3635 3345 38 + Store 3639 3638 + 3640: 6(int) Load 8(invocation) + 3641: 3353(ptr) AccessChain 34(data) 46 3345 + 3642: 30(f16vec4) Load 3641 + 3643:3352(f16vec2) VectorShuffle 3642 3642 0 1 + 3644:3352(f16vec2) GroupNonUniformFMax 42 ExclusiveScan 3643 + 3645: 3353(ptr) AccessChain 34(data) 3640 3345 + 3646: 30(f16vec4) Load 3645 + 3647: 30(f16vec4) VectorShuffle 3646 3644 4 5 2 3 + Store 3645 3647 + 3648: 6(int) Load 8(invocation) + 3649: 3353(ptr) AccessChain 34(data) 57 3345 + 3650: 30(f16vec4) Load 3649 + 3651:3362(f16vec3) VectorShuffle 3650 3650 0 1 2 + 3652:3362(f16vec3) GroupNonUniformFMax 42 ExclusiveScan 3651 + 3653: 3353(ptr) AccessChain 34(data) 3648 3345 + 3654: 30(f16vec4) Load 3653 + 3655: 30(f16vec4) VectorShuffle 3654 3652 4 5 6 3 + Store 3653 3655 + 3656: 6(int) Load 8(invocation) + 3657: 3353(ptr) AccessChain 34(data) 67 3345 + 3658: 30(f16vec4) Load 3657 + 3659: 30(f16vec4) GroupNonUniformFMax 42 ExclusiveScan 3658 + 3660: 3353(ptr) AccessChain 34(data) 3656 3345 + Store 3660 3659 + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesArithmeticNeg.comp.out b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesArithmeticNeg.comp.out new file mode 100644 index 000000000..47505596b --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesArithmeticNeg.comp.out @@ -0,0 +1,557 @@ +spv.subgroupExtendedTypesArithmeticNeg.comp +ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:36: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:37: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:38: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:41: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:42: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:43: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:46: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:47: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:48: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:51: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:52: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:53: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:56: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:57: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:58: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:61: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:62: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:63: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:66: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:67: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:68: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:71: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:72: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:73: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:76: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:77: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:78: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:81: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:82: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:83: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:86: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:87: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:88: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:89: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:91: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:92: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:93: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:94: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:96: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:97: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:98: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:99: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:101: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:102: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:103: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:104: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:106: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:107: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:108: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:109: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:111: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:112: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:113: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:114: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:116: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:117: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:118: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:119: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:121: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:122: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:123: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:124: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:126: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:127: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:128: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:129: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:131: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:132: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:133: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:134: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:136: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:137: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:138: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:139: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:141: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:142: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:143: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:144: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:146: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:147: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:148: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:149: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:151: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:152: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:153: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:154: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:156: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:157: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:158: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:159: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:161: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:162: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:163: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:164: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:166: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:167: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:168: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:169: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:171: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:172: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:173: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:174: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:176: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:177: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:178: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:179: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:181: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:182: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:183: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:184: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:186: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:187: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:188: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:189: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:191: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:192: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:193: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:194: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:196: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:197: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:198: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:199: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:201: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:202: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:203: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:204: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:206: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:207: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:208: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:209: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:211: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:212: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:213: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:214: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:216: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:217: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:218: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:219: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:221: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:222: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:223: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:224: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:226: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:227: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:228: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:229: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:231: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:232: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:233: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:234: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:236: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:237: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:238: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:239: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:241: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:242: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:243: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:244: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:246: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:247: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:248: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:249: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:251: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:252: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:253: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:254: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:256: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:257: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:258: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:259: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:261: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:262: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:263: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:264: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:266: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:267: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:268: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:269: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:271: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:272: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:273: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:274: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:276: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:277: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:278: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:279: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:281: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:282: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:283: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:284: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:286: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:287: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:288: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:289: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:291: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:292: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:293: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:294: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:296: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:297: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:298: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:299: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:301: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:302: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:303: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:304: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:306: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:307: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:308: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:309: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:311: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:312: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:313: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:314: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:316: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:317: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:318: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:319: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:321: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:322: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:323: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:324: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:326: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:327: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:328: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:329: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:331: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:332: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:333: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:334: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:336: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:337: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:338: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:339: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:341: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:342: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:343: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:344: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:346: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:347: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:348: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:349: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:351: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:352: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:353: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:354: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:356: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:357: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:358: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:359: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:361: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:362: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:363: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:364: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:366: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:367: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:368: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:369: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:371: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:372: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:373: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:374: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:376: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:377: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:378: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:379: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:381: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:382: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:383: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:384: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:386: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:387: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:388: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:389: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:391: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:392: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:393: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:394: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:396: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:397: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:398: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:399: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:401: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:402: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:403: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:404: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:406: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:407: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:408: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:409: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:411: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:412: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:413: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:414: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:416: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:417: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:418: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:419: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:421: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:422: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:423: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:424: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:426: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:427: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:428: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:429: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:431: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:432: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:433: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:434: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:436: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:437: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:438: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:439: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:441: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:442: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:443: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:444: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:446: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:447: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:448: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:449: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:451: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:452: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:453: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:454: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:456: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:457: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:458: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:459: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:461: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:462: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:463: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:464: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:466: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:467: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:468: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:469: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:471: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:472: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:473: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:474: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:476: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:477: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:478: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:479: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:481: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:482: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:483: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:484: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:486: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:487: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:488: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:489: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:491: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:492: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:493: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:494: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:496: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:497: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:498: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:499: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:501: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:502: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:503: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:504: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:506: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:507: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:508: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:509: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:511: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:512: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:513: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:514: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:516: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:517: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:518: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:519: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:521: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:522: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:523: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:524: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:526: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:527: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:528: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:529: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:531: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:532: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:533: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:534: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:536: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:537: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:538: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:539: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:541: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:542: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:543: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:544: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:546: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:547: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:548: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:549: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:551: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:552: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:553: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:554: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:556: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:557: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:558: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:559: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:561: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:562: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:563: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:564: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:566: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:567: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:568: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:569: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:571: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:572: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:573: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:574: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:576: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:577: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:578: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:579: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:581: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:582: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:583: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:584: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:586: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:587: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:588: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:589: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:591: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:592: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:593: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:594: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:596: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:597: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:598: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:599: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:601: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:602: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:603: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:604: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:606: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:607: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:608: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:609: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:611: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:612: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:613: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:614: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:616: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:617: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:618: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:619: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:621: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:622: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:623: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:624: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:626: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:627: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:628: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:629: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:631: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:632: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:633: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:634: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:636: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:637: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:638: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:639: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:641: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:642: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:643: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:644: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:646: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:647: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:648: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:649: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:651: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:652: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:653: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:654: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:656: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:657: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:658: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:659: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:661: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:662: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:663: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:664: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:666: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:667: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:668: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:669: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:671: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:672: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:673: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:674: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:676: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:677: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:678: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:679: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:681: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:682: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:683: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:684: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:686: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:687: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:688: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:689: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:691: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:692: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:693: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:694: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:696: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:697: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:698: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:699: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:701: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:702: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:703: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:704: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:706: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:707: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:708: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:709: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:711: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:712: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:713: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:714: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 552 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out new file mode 100644 index 000000000..4e1b2dc19 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out @@ -0,0 +1,560 @@ +spv.subgroupExtendedTypesBallot.comp +// Module Version 10300 +// Generated by (magic number): 80007 +// Id's are bound by 441 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + Capability GroupNonUniform + Capability GroupNonUniformBallot + Capability StorageUniformBufferBlock16 + Capability StorageBuffer8BitAccess + Extension "SPV_KHR_8bit_storage" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 10 12 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" + SourceExtension "GL_KHR_shader_subgroup_ballot" + SourceExtension "GL_KHR_shader_subgroup_basic" + Name 4 "main" + Name 8 "invocation" + Name 10 "gl_SubgroupInvocationID" + Name 12 "gl_SubgroupSize" + Name 31 "Buffers" + MemberName 31(Buffers) 0 "i8" + MemberName 31(Buffers) 1 "u8" + MemberName 31(Buffers) 2 "i16" + MemberName 31(Buffers) 3 "u16" + MemberName 31(Buffers) 4 "i64" + MemberName 31(Buffers) 5 "u64" + MemberName 31(Buffers) 6 "f16" + Name 34 "data" + Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 11 RelaxedPrecision + Decorate 12(gl_SubgroupSize) RelaxedPrecision + Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 13 RelaxedPrecision + Decorate 14 RelaxedPrecision + Decorate 16 RelaxedPrecision + MemberDecorate 31(Buffers) 0 Offset 0 + MemberDecorate 31(Buffers) 1 Offset 4 + MemberDecorate 31(Buffers) 2 Offset 8 + MemberDecorate 31(Buffers) 3 Offset 16 + MemberDecorate 31(Buffers) 4 Offset 32 + MemberDecorate 31(Buffers) 5 Offset 64 + MemberDecorate 31(Buffers) 6 Offset 96 + Decorate 31(Buffers) Block + Decorate 34(data) DescriptorSet 0 + Decorate 34(data) Binding 0 + Decorate 440 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypePointer Input 6(int) +10(gl_SubgroupInvocationID): 9(ptr) Variable Input +12(gl_SubgroupSize): 9(ptr) Variable Input + 15: 6(int) Constant 4 + 17: TypeInt 8 1 + 18: TypeVector 17(int8_t) 4 + 19: TypeInt 8 0 + 20: TypeVector 19(int8_t) 4 + 21: TypeInt 16 1 + 22: TypeVector 21(int16_t) 4 + 23: TypeInt 16 0 + 24: TypeVector 23(int16_t) 4 + 25: TypeInt 64 1 + 26: TypeVector 25(int64_t) 4 + 27: TypeInt 64 0 + 28: TypeVector 27(int64_t) 4 + 29: TypeFloat 16 + 30: TypeVector 29(float16_t) 4 + 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) + 32: TypeArray 31(Buffers) 15 + 33: TypePointer StorageBuffer 32 + 34(data): 33(ptr) Variable StorageBuffer + 36: TypeInt 32 1 + 37: 36(int) Constant 0 + 38: 6(int) Constant 0 + 39: TypePointer StorageBuffer 17(int8_t) + 42: 6(int) Constant 3 + 46: 36(int) Constant 1 + 47: TypeVector 17(int8_t) 2 + 48: TypePointer StorageBuffer 18(i8vec4) + 57: 36(int) Constant 2 + 58: TypeVector 17(int8_t) 3 + 67: 36(int) Constant 3 + 99: TypePointer StorageBuffer 19(int8_t) + 105: TypeVector 19(int8_t) 2 + 106: TypePointer StorageBuffer 20(i8vec4) + 115: TypeVector 19(int8_t) 3 + 155: TypePointer StorageBuffer 21(int16_t) + 161: TypeVector 21(int16_t) 2 + 162: TypePointer StorageBuffer 22(i16vec4) + 171: TypeVector 21(int16_t) 3 + 211: TypePointer StorageBuffer 23(int16_t) + 217: TypeVector 23(int16_t) 2 + 218: TypePointer StorageBuffer 24(i16vec4) + 227: TypeVector 23(int16_t) 3 + 267: 36(int) Constant 4 + 268: TypePointer StorageBuffer 25(int64_t) + 274: TypeVector 25(int64_t) 2 + 275: TypePointer StorageBuffer 26(i64vec4) + 284: TypeVector 25(int64_t) 3 + 324: 36(int) Constant 5 + 325: TypePointer StorageBuffer 27(int64_t) + 331: TypeVector 27(int64_t) 2 + 332: TypePointer StorageBuffer 28(i64vec4) + 341: TypeVector 27(int64_t) 3 + 381: 36(int) Constant 6 + 382: TypePointer StorageBuffer 29(float16_t) + 388: TypeVector 29(float16_t) 2 + 389: TypePointer StorageBuffer 30(f16vec4) + 398: TypeVector 29(float16_t) 3 + 437: TypeVector 6(int) 3 + 438: 6(int) Constant 8 + 439: 6(int) Constant 1 + 440: 437(ivec3) ConstantComposite 438 439 439 + 4(main): 2 Function None 3 + 5: Label + 8(invocation): 7(ptr) Variable Function + 11: 6(int) Load 10(gl_SubgroupInvocationID) + 13: 6(int) Load 12(gl_SubgroupSize) + 14: 6(int) IAdd 11 13 + 16: 6(int) UMod 14 15 + Store 8(invocation) 16 + 35: 6(int) Load 8(invocation) + 40: 39(ptr) AccessChain 34(data) 37 37 38 + 41: 17(int8_t) Load 40 + 43: 17(int8_t) GroupNonUniformBroadcast 42 41 42 + 44: 39(ptr) AccessChain 34(data) 35 37 38 + Store 44 43 + 45: 6(int) Load 8(invocation) + 49: 48(ptr) AccessChain 34(data) 46 37 + 50: 18(i8vec4) Load 49 + 51: 47(i8vec2) VectorShuffle 50 50 0 1 + 52: 47(i8vec2) GroupNonUniformBroadcast 42 51 42 + 53: 48(ptr) AccessChain 34(data) 45 37 + 54: 18(i8vec4) Load 53 + 55: 18(i8vec4) VectorShuffle 54 52 4 5 2 3 + Store 53 55 + 56: 6(int) Load 8(invocation) + 59: 48(ptr) AccessChain 34(data) 57 37 + 60: 18(i8vec4) Load 59 + 61: 58(i8vec3) VectorShuffle 60 60 0 1 2 + 62: 58(i8vec3) GroupNonUniformBroadcast 42 61 42 + 63: 48(ptr) AccessChain 34(data) 56 37 + 64: 18(i8vec4) Load 63 + 65: 18(i8vec4) VectorShuffle 64 62 4 5 6 3 + Store 63 65 + 66: 6(int) Load 8(invocation) + 68: 48(ptr) AccessChain 34(data) 67 37 + 69: 18(i8vec4) Load 68 + 70: 18(i8vec4) GroupNonUniformBroadcast 42 69 42 + 71: 48(ptr) AccessChain 34(data) 66 37 + Store 71 70 + 72: 6(int) Load 8(invocation) + 73: 39(ptr) AccessChain 34(data) 37 37 38 + 74: 17(int8_t) Load 73 + 75: 17(int8_t) GroupNonUniformBroadcastFirst 42 74 + 76: 39(ptr) AccessChain 34(data) 72 37 38 + Store 76 75 + 77: 6(int) Load 8(invocation) + 78: 48(ptr) AccessChain 34(data) 46 37 + 79: 18(i8vec4) Load 78 + 80: 47(i8vec2) VectorShuffle 79 79 0 1 + 81: 47(i8vec2) GroupNonUniformBroadcastFirst 42 80 + 82: 48(ptr) AccessChain 34(data) 77 37 + 83: 18(i8vec4) Load 82 + 84: 18(i8vec4) VectorShuffle 83 81 4 5 2 3 + Store 82 84 + 85: 6(int) Load 8(invocation) + 86: 48(ptr) AccessChain 34(data) 57 37 + 87: 18(i8vec4) Load 86 + 88: 58(i8vec3) VectorShuffle 87 87 0 1 2 + 89: 58(i8vec3) GroupNonUniformBroadcastFirst 42 88 + 90: 48(ptr) AccessChain 34(data) 85 37 + 91: 18(i8vec4) Load 90 + 92: 18(i8vec4) VectorShuffle 91 89 4 5 6 3 + Store 90 92 + 93: 6(int) Load 8(invocation) + 94: 48(ptr) AccessChain 34(data) 67 37 + 95: 18(i8vec4) Load 94 + 96: 18(i8vec4) GroupNonUniformBroadcastFirst 42 95 + 97: 48(ptr) AccessChain 34(data) 93 37 + Store 97 96 + 98: 6(int) Load 8(invocation) + 100: 99(ptr) AccessChain 34(data) 37 46 38 + 101: 19(int8_t) Load 100 + 102: 19(int8_t) GroupNonUniformBroadcast 42 101 42 + 103: 99(ptr) AccessChain 34(data) 98 46 38 + Store 103 102 + 104: 6(int) Load 8(invocation) + 107: 106(ptr) AccessChain 34(data) 46 46 + 108: 20(i8vec4) Load 107 + 109: 105(i8vec2) VectorShuffle 108 108 0 1 + 110: 105(i8vec2) GroupNonUniformBroadcast 42 109 42 + 111: 106(ptr) AccessChain 34(data) 104 46 + 112: 20(i8vec4) Load 111 + 113: 20(i8vec4) VectorShuffle 112 110 4 5 2 3 + Store 111 113 + 114: 6(int) Load 8(invocation) + 116: 106(ptr) AccessChain 34(data) 57 46 + 117: 20(i8vec4) Load 116 + 118: 115(i8vec3) VectorShuffle 117 117 0 1 2 + 119: 115(i8vec3) GroupNonUniformBroadcast 42 118 42 + 120: 106(ptr) AccessChain 34(data) 114 46 + 121: 20(i8vec4) Load 120 + 122: 20(i8vec4) VectorShuffle 121 119 4 5 6 3 + Store 120 122 + 123: 6(int) Load 8(invocation) + 124: 106(ptr) AccessChain 34(data) 67 46 + 125: 20(i8vec4) Load 124 + 126: 20(i8vec4) GroupNonUniformBroadcast 42 125 42 + 127: 106(ptr) AccessChain 34(data) 123 46 + Store 127 126 + 128: 6(int) Load 8(invocation) + 129: 99(ptr) AccessChain 34(data) 37 46 38 + 130: 19(int8_t) Load 129 + 131: 19(int8_t) GroupNonUniformBroadcastFirst 42 130 + 132: 99(ptr) AccessChain 34(data) 128 46 38 + Store 132 131 + 133: 6(int) Load 8(invocation) + 134: 106(ptr) AccessChain 34(data) 46 46 + 135: 20(i8vec4) Load 134 + 136: 105(i8vec2) VectorShuffle 135 135 0 1 + 137: 105(i8vec2) GroupNonUniformBroadcastFirst 42 136 + 138: 106(ptr) AccessChain 34(data) 133 46 + 139: 20(i8vec4) Load 138 + 140: 20(i8vec4) VectorShuffle 139 137 4 5 2 3 + Store 138 140 + 141: 6(int) Load 8(invocation) + 142: 106(ptr) AccessChain 34(data) 57 46 + 143: 20(i8vec4) Load 142 + 144: 115(i8vec3) VectorShuffle 143 143 0 1 2 + 145: 115(i8vec3) GroupNonUniformBroadcastFirst 42 144 + 146: 106(ptr) AccessChain 34(data) 141 46 + 147: 20(i8vec4) Load 146 + 148: 20(i8vec4) VectorShuffle 147 145 4 5 6 3 + Store 146 148 + 149: 6(int) Load 8(invocation) + 150: 106(ptr) AccessChain 34(data) 67 46 + 151: 20(i8vec4) Load 150 + 152: 20(i8vec4) GroupNonUniformBroadcastFirst 42 151 + 153: 106(ptr) AccessChain 34(data) 149 46 + Store 153 152 + 154: 6(int) Load 8(invocation) + 156: 155(ptr) AccessChain 34(data) 37 57 38 + 157: 21(int16_t) Load 156 + 158: 21(int16_t) GroupNonUniformBroadcast 42 157 42 + 159: 155(ptr) AccessChain 34(data) 154 57 38 + Store 159 158 + 160: 6(int) Load 8(invocation) + 163: 162(ptr) AccessChain 34(data) 46 57 + 164: 22(i16vec4) Load 163 + 165:161(i16vec2) VectorShuffle 164 164 0 1 + 166:161(i16vec2) GroupNonUniformBroadcast 42 165 42 + 167: 162(ptr) AccessChain 34(data) 160 57 + 168: 22(i16vec4) Load 167 + 169: 22(i16vec4) VectorShuffle 168 166 4 5 2 3 + Store 167 169 + 170: 6(int) Load 8(invocation) + 172: 162(ptr) AccessChain 34(data) 57 57 + 173: 22(i16vec4) Load 172 + 174:171(i16vec3) VectorShuffle 173 173 0 1 2 + 175:171(i16vec3) GroupNonUniformBroadcast 42 174 42 + 176: 162(ptr) AccessChain 34(data) 170 57 + 177: 22(i16vec4) Load 176 + 178: 22(i16vec4) VectorShuffle 177 175 4 5 6 3 + Store 176 178 + 179: 6(int) Load 8(invocation) + 180: 162(ptr) AccessChain 34(data) 67 57 + 181: 22(i16vec4) Load 180 + 182: 22(i16vec4) GroupNonUniformBroadcast 42 181 42 + 183: 162(ptr) AccessChain 34(data) 179 57 + Store 183 182 + 184: 6(int) Load 8(invocation) + 185: 155(ptr) AccessChain 34(data) 37 57 38 + 186: 21(int16_t) Load 185 + 187: 21(int16_t) GroupNonUniformBroadcastFirst 42 186 + 188: 155(ptr) AccessChain 34(data) 184 57 38 + Store 188 187 + 189: 6(int) Load 8(invocation) + 190: 162(ptr) AccessChain 34(data) 46 57 + 191: 22(i16vec4) Load 190 + 192:161(i16vec2) VectorShuffle 191 191 0 1 + 193:161(i16vec2) GroupNonUniformBroadcastFirst 42 192 + 194: 162(ptr) AccessChain 34(data) 189 57 + 195: 22(i16vec4) Load 194 + 196: 22(i16vec4) VectorShuffle 195 193 4 5 2 3 + Store 194 196 + 197: 6(int) Load 8(invocation) + 198: 162(ptr) AccessChain 34(data) 57 57 + 199: 22(i16vec4) Load 198 + 200:171(i16vec3) VectorShuffle 199 199 0 1 2 + 201:171(i16vec3) GroupNonUniformBroadcastFirst 42 200 + 202: 162(ptr) AccessChain 34(data) 197 57 + 203: 22(i16vec4) Load 202 + 204: 22(i16vec4) VectorShuffle 203 201 4 5 6 3 + Store 202 204 + 205: 6(int) Load 8(invocation) + 206: 162(ptr) AccessChain 34(data) 67 57 + 207: 22(i16vec4) Load 206 + 208: 22(i16vec4) GroupNonUniformBroadcastFirst 42 207 + 209: 162(ptr) AccessChain 34(data) 205 57 + Store 209 208 + 210: 6(int) Load 8(invocation) + 212: 211(ptr) AccessChain 34(data) 37 67 38 + 213: 23(int16_t) Load 212 + 214: 23(int16_t) GroupNonUniformBroadcast 42 213 42 + 215: 211(ptr) AccessChain 34(data) 210 67 38 + Store 215 214 + 216: 6(int) Load 8(invocation) + 219: 218(ptr) AccessChain 34(data) 46 67 + 220: 24(i16vec4) Load 219 + 221:217(i16vec2) VectorShuffle 220 220 0 1 + 222:217(i16vec2) GroupNonUniformBroadcast 42 221 42 + 223: 218(ptr) AccessChain 34(data) 216 67 + 224: 24(i16vec4) Load 223 + 225: 24(i16vec4) VectorShuffle 224 222 4 5 2 3 + Store 223 225 + 226: 6(int) Load 8(invocation) + 228: 218(ptr) AccessChain 34(data) 57 67 + 229: 24(i16vec4) Load 228 + 230:227(i16vec3) VectorShuffle 229 229 0 1 2 + 231:227(i16vec3) GroupNonUniformBroadcast 42 230 42 + 232: 218(ptr) AccessChain 34(data) 226 67 + 233: 24(i16vec4) Load 232 + 234: 24(i16vec4) VectorShuffle 233 231 4 5 6 3 + Store 232 234 + 235: 6(int) Load 8(invocation) + 236: 218(ptr) AccessChain 34(data) 67 67 + 237: 24(i16vec4) Load 236 + 238: 24(i16vec4) GroupNonUniformBroadcast 42 237 42 + 239: 218(ptr) AccessChain 34(data) 235 67 + Store 239 238 + 240: 6(int) Load 8(invocation) + 241: 211(ptr) AccessChain 34(data) 37 67 38 + 242: 23(int16_t) Load 241 + 243: 23(int16_t) GroupNonUniformBroadcastFirst 42 242 + 244: 211(ptr) AccessChain 34(data) 240 67 38 + Store 244 243 + 245: 6(int) Load 8(invocation) + 246: 218(ptr) AccessChain 34(data) 46 67 + 247: 24(i16vec4) Load 246 + 248:217(i16vec2) VectorShuffle 247 247 0 1 + 249:217(i16vec2) GroupNonUniformBroadcastFirst 42 248 + 250: 218(ptr) AccessChain 34(data) 245 67 + 251: 24(i16vec4) Load 250 + 252: 24(i16vec4) VectorShuffle 251 249 4 5 2 3 + Store 250 252 + 253: 6(int) Load 8(invocation) + 254: 218(ptr) AccessChain 34(data) 57 67 + 255: 24(i16vec4) Load 254 + 256:227(i16vec3) VectorShuffle 255 255 0 1 2 + 257:227(i16vec3) GroupNonUniformBroadcastFirst 42 256 + 258: 218(ptr) AccessChain 34(data) 253 67 + 259: 24(i16vec4) Load 258 + 260: 24(i16vec4) VectorShuffle 259 257 4 5 6 3 + Store 258 260 + 261: 6(int) Load 8(invocation) + 262: 218(ptr) AccessChain 34(data) 67 67 + 263: 24(i16vec4) Load 262 + 264: 24(i16vec4) GroupNonUniformBroadcastFirst 42 263 + 265: 218(ptr) AccessChain 34(data) 261 67 + Store 265 264 + 266: 6(int) Load 8(invocation) + 269: 268(ptr) AccessChain 34(data) 37 267 38 + 270: 25(int64_t) Load 269 + 271: 25(int64_t) GroupNonUniformBroadcast 42 270 42 + 272: 268(ptr) AccessChain 34(data) 266 267 38 + Store 272 271 + 273: 6(int) Load 8(invocation) + 276: 275(ptr) AccessChain 34(data) 46 267 + 277: 26(i64vec4) Load 276 + 278:274(i64vec2) VectorShuffle 277 277 0 1 + 279:274(i64vec2) GroupNonUniformBroadcast 42 278 42 + 280: 275(ptr) AccessChain 34(data) 273 267 + 281: 26(i64vec4) Load 280 + 282: 26(i64vec4) VectorShuffle 281 279 4 5 2 3 + Store 280 282 + 283: 6(int) Load 8(invocation) + 285: 275(ptr) AccessChain 34(data) 57 267 + 286: 26(i64vec4) Load 285 + 287:284(i64vec3) VectorShuffle 286 286 0 1 2 + 288:284(i64vec3) GroupNonUniformBroadcast 42 287 42 + 289: 275(ptr) AccessChain 34(data) 283 267 + 290: 26(i64vec4) Load 289 + 291: 26(i64vec4) VectorShuffle 290 288 4 5 6 3 + Store 289 291 + 292: 6(int) Load 8(invocation) + 293: 275(ptr) AccessChain 34(data) 67 267 + 294: 26(i64vec4) Load 293 + 295: 26(i64vec4) GroupNonUniformBroadcast 42 294 42 + 296: 275(ptr) AccessChain 34(data) 292 267 + Store 296 295 + 297: 6(int) Load 8(invocation) + 298: 268(ptr) AccessChain 34(data) 37 267 38 + 299: 25(int64_t) Load 298 + 300: 25(int64_t) GroupNonUniformBroadcastFirst 42 299 + 301: 268(ptr) AccessChain 34(data) 297 267 38 + Store 301 300 + 302: 6(int) Load 8(invocation) + 303: 275(ptr) AccessChain 34(data) 46 267 + 304: 26(i64vec4) Load 303 + 305:274(i64vec2) VectorShuffle 304 304 0 1 + 306:274(i64vec2) GroupNonUniformBroadcastFirst 42 305 + 307: 275(ptr) AccessChain 34(data) 302 267 + 308: 26(i64vec4) Load 307 + 309: 26(i64vec4) VectorShuffle 308 306 4 5 2 3 + Store 307 309 + 310: 6(int) Load 8(invocation) + 311: 275(ptr) AccessChain 34(data) 57 267 + 312: 26(i64vec4) Load 311 + 313:284(i64vec3) VectorShuffle 312 312 0 1 2 + 314:284(i64vec3) GroupNonUniformBroadcastFirst 42 313 + 315: 275(ptr) AccessChain 34(data) 310 267 + 316: 26(i64vec4) Load 315 + 317: 26(i64vec4) VectorShuffle 316 314 4 5 6 3 + Store 315 317 + 318: 6(int) Load 8(invocation) + 319: 275(ptr) AccessChain 34(data) 67 267 + 320: 26(i64vec4) Load 319 + 321: 26(i64vec4) GroupNonUniformBroadcastFirst 42 320 + 322: 275(ptr) AccessChain 34(data) 318 267 + Store 322 321 + 323: 6(int) Load 8(invocation) + 326: 325(ptr) AccessChain 34(data) 37 324 38 + 327: 27(int64_t) Load 326 + 328: 27(int64_t) GroupNonUniformBroadcast 42 327 42 + 329: 325(ptr) AccessChain 34(data) 323 324 38 + Store 329 328 + 330: 6(int) Load 8(invocation) + 333: 332(ptr) AccessChain 34(data) 46 324 + 334: 28(i64vec4) Load 333 + 335:331(i64vec2) VectorShuffle 334 334 0 1 + 336:331(i64vec2) GroupNonUniformBroadcast 42 335 42 + 337: 332(ptr) AccessChain 34(data) 330 324 + 338: 28(i64vec4) Load 337 + 339: 28(i64vec4) VectorShuffle 338 336 4 5 2 3 + Store 337 339 + 340: 6(int) Load 8(invocation) + 342: 332(ptr) AccessChain 34(data) 57 324 + 343: 28(i64vec4) Load 342 + 344:341(i64vec3) VectorShuffle 343 343 0 1 2 + 345:341(i64vec3) GroupNonUniformBroadcast 42 344 42 + 346: 332(ptr) AccessChain 34(data) 340 324 + 347: 28(i64vec4) Load 346 + 348: 28(i64vec4) VectorShuffle 347 345 4 5 6 3 + Store 346 348 + 349: 6(int) Load 8(invocation) + 350: 332(ptr) AccessChain 34(data) 67 324 + 351: 28(i64vec4) Load 350 + 352: 28(i64vec4) GroupNonUniformBroadcast 42 351 42 + 353: 332(ptr) AccessChain 34(data) 349 324 + Store 353 352 + 354: 6(int) Load 8(invocation) + 355: 325(ptr) AccessChain 34(data) 37 324 38 + 356: 27(int64_t) Load 355 + 357: 27(int64_t) GroupNonUniformBroadcastFirst 42 356 + 358: 325(ptr) AccessChain 34(data) 354 324 38 + Store 358 357 + 359: 6(int) Load 8(invocation) + 360: 332(ptr) AccessChain 34(data) 46 324 + 361: 28(i64vec4) Load 360 + 362:331(i64vec2) VectorShuffle 361 361 0 1 + 363:331(i64vec2) GroupNonUniformBroadcastFirst 42 362 + 364: 332(ptr) AccessChain 34(data) 359 324 + 365: 28(i64vec4) Load 364 + 366: 28(i64vec4) VectorShuffle 365 363 4 5 2 3 + Store 364 366 + 367: 6(int) Load 8(invocation) + 368: 332(ptr) AccessChain 34(data) 57 324 + 369: 28(i64vec4) Load 368 + 370:341(i64vec3) VectorShuffle 369 369 0 1 2 + 371:341(i64vec3) GroupNonUniformBroadcastFirst 42 370 + 372: 332(ptr) AccessChain 34(data) 367 324 + 373: 28(i64vec4) Load 372 + 374: 28(i64vec4) VectorShuffle 373 371 4 5 6 3 + Store 372 374 + 375: 6(int) Load 8(invocation) + 376: 332(ptr) AccessChain 34(data) 67 324 + 377: 28(i64vec4) Load 376 + 378: 28(i64vec4) GroupNonUniformBroadcastFirst 42 377 + 379: 332(ptr) AccessChain 34(data) 375 324 + Store 379 378 + 380: 6(int) Load 8(invocation) + 383: 382(ptr) AccessChain 34(data) 37 381 38 + 384:29(float16_t) Load 383 + 385:29(float16_t) GroupNonUniformBroadcast 42 384 42 + 386: 382(ptr) AccessChain 34(data) 380 381 38 + Store 386 385 + 387: 6(int) Load 8(invocation) + 390: 389(ptr) AccessChain 34(data) 46 381 + 391: 30(f16vec4) Load 390 + 392:388(f16vec2) VectorShuffle 391 391 0 1 + 393:388(f16vec2) GroupNonUniformBroadcast 42 392 42 + 394: 389(ptr) AccessChain 34(data) 387 381 + 395: 30(f16vec4) Load 394 + 396: 30(f16vec4) VectorShuffle 395 393 4 5 2 3 + Store 394 396 + 397: 6(int) Load 8(invocation) + 399: 389(ptr) AccessChain 34(data) 57 381 + 400: 30(f16vec4) Load 399 + 401:398(f16vec3) VectorShuffle 400 400 0 1 2 + 402:398(f16vec3) GroupNonUniformBroadcast 42 401 42 + 403: 389(ptr) AccessChain 34(data) 397 381 + 404: 30(f16vec4) Load 403 + 405: 30(f16vec4) VectorShuffle 404 402 4 5 6 3 + Store 403 405 + 406: 6(int) Load 8(invocation) + 407: 389(ptr) AccessChain 34(data) 67 381 + 408: 30(f16vec4) Load 407 + 409: 30(f16vec4) GroupNonUniformBroadcast 42 408 42 + 410: 389(ptr) AccessChain 34(data) 406 381 + Store 410 409 + 411: 6(int) Load 8(invocation) + 412: 382(ptr) AccessChain 34(data) 37 381 38 + 413:29(float16_t) Load 412 + 414:29(float16_t) GroupNonUniformBroadcastFirst 42 413 + 415: 382(ptr) AccessChain 34(data) 411 381 38 + Store 415 414 + 416: 6(int) Load 8(invocation) + 417: 389(ptr) AccessChain 34(data) 46 381 + 418: 30(f16vec4) Load 417 + 419:388(f16vec2) VectorShuffle 418 418 0 1 + 420:388(f16vec2) GroupNonUniformBroadcastFirst 42 419 + 421: 389(ptr) AccessChain 34(data) 416 381 + 422: 30(f16vec4) Load 421 + 423: 30(f16vec4) VectorShuffle 422 420 4 5 2 3 + Store 421 423 + 424: 6(int) Load 8(invocation) + 425: 389(ptr) AccessChain 34(data) 57 381 + 426: 30(f16vec4) Load 425 + 427:398(f16vec3) VectorShuffle 426 426 0 1 2 + 428:398(f16vec3) GroupNonUniformBroadcastFirst 42 427 + 429: 389(ptr) AccessChain 34(data) 424 381 + 430: 30(f16vec4) Load 429 + 431: 30(f16vec4) VectorShuffle 430 428 4 5 6 3 + Store 429 431 + 432: 6(int) Load 8(invocation) + 433: 389(ptr) AccessChain 34(data) 67 381 + 434: 30(f16vec4) Load 433 + 435: 30(f16vec4) GroupNonUniformBroadcastFirst 42 434 + 436: 389(ptr) AccessChain 34(data) 432 381 + Store 436 435 + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesBallotNeg.comp.out b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesBallotNeg.comp.out new file mode 100644 index 000000000..534560d85 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesBallotNeg.comp.out @@ -0,0 +1,61 @@ +spv.subgroupExtendedTypesBallotNeg.comp +ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:30: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:31: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:32: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:33: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:35: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:36: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:37: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:38: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:39: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:40: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:41: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:42: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:44: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:45: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:46: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:47: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:48: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:49: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:50: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:51: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:53: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:54: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:55: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:56: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:57: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:58: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:59: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:60: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:62: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:63: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:64: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:65: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:66: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:67: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:68: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:71: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:72: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:73: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:75: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:76: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:77: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:78: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:80: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:81: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:82: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:83: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:84: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:85: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:86: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:87: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 56 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesBasic.comp.out b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesBasic.comp.out new file mode 100644 index 000000000..63196977c --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesBasic.comp.out @@ -0,0 +1,9 @@ +spv.subgroupExtendedTypesBasic.comp +ERROR: #version: compute shaders require es profile with version 310 or above, or non-es profile with version 420 or above +ERROR: #version: statement must appear first in es-profile shader; before comments or newlines +ERROR: 1 compilation errors. No code generated. + + +ERROR: Linking compute stage: Missing entry point: Each stage requires one entry point + +SPIR-V is not generated for failed compile or link diff --git a/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out new file mode 100644 index 000000000..b0b94b502 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out @@ -0,0 +1,1520 @@ +spv.subgroupExtendedTypesClustered.comp +// Module Version 10300 +// Generated by (magic number): 80007 +// Id's are bound by 1273 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + Capability GroupNonUniform + Capability GroupNonUniformClustered + Capability StorageUniformBufferBlock16 + Capability StorageBuffer8BitAccess + Extension "SPV_KHR_8bit_storage" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 10 12 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_KHR_shader_subgroup_clustered" + Name 4 "main" + Name 8 "invocation" + Name 10 "gl_SubgroupInvocationID" + Name 12 "gl_SubgroupSize" + Name 31 "Buffers" + MemberName 31(Buffers) 0 "i8" + MemberName 31(Buffers) 1 "u8" + MemberName 31(Buffers) 2 "i16" + MemberName 31(Buffers) 3 "u16" + MemberName 31(Buffers) 4 "i64" + MemberName 31(Buffers) 5 "u64" + MemberName 31(Buffers) 6 "f16" + Name 34 "data" + Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 11 RelaxedPrecision + Decorate 12(gl_SubgroupSize) RelaxedPrecision + Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 13 RelaxedPrecision + Decorate 14 RelaxedPrecision + Decorate 16 RelaxedPrecision + MemberDecorate 31(Buffers) 0 Offset 0 + MemberDecorate 31(Buffers) 1 Offset 4 + MemberDecorate 31(Buffers) 2 Offset 8 + MemberDecorate 31(Buffers) 3 Offset 16 + MemberDecorate 31(Buffers) 4 Offset 32 + MemberDecorate 31(Buffers) 5 Offset 64 + MemberDecorate 31(Buffers) 6 Offset 96 + Decorate 31(Buffers) Block + Decorate 34(data) DescriptorSet 0 + Decorate 34(data) Binding 0 + Decorate 1272 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypePointer Input 6(int) +10(gl_SubgroupInvocationID): 9(ptr) Variable Input +12(gl_SubgroupSize): 9(ptr) Variable Input + 15: 6(int) Constant 4 + 17: TypeInt 8 1 + 18: TypeVector 17(int8_t) 4 + 19: TypeInt 8 0 + 20: TypeVector 19(int8_t) 4 + 21: TypeInt 16 1 + 22: TypeVector 21(int16_t) 4 + 23: TypeInt 16 0 + 24: TypeVector 23(int16_t) 4 + 25: TypeInt 64 1 + 26: TypeVector 25(int64_t) 4 + 27: TypeInt 64 0 + 28: TypeVector 27(int64_t) 4 + 29: TypeFloat 16 + 30: TypeVector 29(float16_t) 4 + 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) + 32: TypeArray 31(Buffers) 15 + 33: TypePointer StorageBuffer 32 + 34(data): 33(ptr) Variable StorageBuffer + 36: TypeInt 32 1 + 37: 36(int) Constant 0 + 38: 6(int) Constant 0 + 39: TypePointer StorageBuffer 17(int8_t) + 42: 6(int) Constant 1 + 43: 6(int) Constant 3 + 47: 36(int) Constant 1 + 48: TypeVector 17(int8_t) 2 + 49: TypePointer StorageBuffer 18(i8vec4) + 58: 36(int) Constant 2 + 59: TypeVector 17(int8_t) 3 + 68: 36(int) Constant 3 + 230: TypePointer StorageBuffer 19(int8_t) + 236: TypeVector 19(int8_t) 2 + 237: TypePointer StorageBuffer 20(i8vec4) + 246: TypeVector 19(int8_t) 3 + 416: TypePointer StorageBuffer 21(int16_t) + 422: TypeVector 21(int16_t) 2 + 423: TypePointer StorageBuffer 22(i16vec4) + 432: TypeVector 21(int16_t) 3 + 602: TypePointer StorageBuffer 23(int16_t) + 608: TypeVector 23(int16_t) 2 + 609: TypePointer StorageBuffer 24(i16vec4) + 618: TypeVector 23(int16_t) 3 + 788: 36(int) Constant 4 + 789: TypePointer StorageBuffer 25(int64_t) + 795: TypeVector 25(int64_t) 2 + 796: TypePointer StorageBuffer 26(i64vec4) + 805: TypeVector 25(int64_t) 3 + 975: 36(int) Constant 5 + 976: TypePointer StorageBuffer 27(int64_t) + 982: TypeVector 27(int64_t) 2 + 983: TypePointer StorageBuffer 28(i64vec4) + 992: TypeVector 27(int64_t) 3 + 1162: 36(int) Constant 6 + 1163: TypePointer StorageBuffer 29(float16_t) + 1169: TypeVector 29(float16_t) 2 + 1170: TypePointer StorageBuffer 30(f16vec4) + 1179: TypeVector 29(float16_t) 3 + 1270: TypeVector 6(int) 3 + 1271: 6(int) Constant 8 + 1272: 1270(ivec3) ConstantComposite 1271 42 42 + 4(main): 2 Function None 3 + 5: Label + 8(invocation): 7(ptr) Variable Function + 11: 6(int) Load 10(gl_SubgroupInvocationID) + 13: 6(int) Load 12(gl_SubgroupSize) + 14: 6(int) IAdd 11 13 + 16: 6(int) UMod 14 15 + Store 8(invocation) 16 + 35: 6(int) Load 8(invocation) + 40: 39(ptr) AccessChain 34(data) 37 37 38 + 41: 17(int8_t) Load 40 + 44: 17(int8_t) GroupNonUniformIAdd 43 ClusteredReduce 41 42 + 45: 39(ptr) AccessChain 34(data) 35 37 38 + Store 45 44 + 46: 6(int) Load 8(invocation) + 50: 49(ptr) AccessChain 34(data) 47 37 + 51: 18(i8vec4) Load 50 + 52: 48(i8vec2) VectorShuffle 51 51 0 1 + 53: 48(i8vec2) GroupNonUniformIAdd 43 ClusteredReduce 52 42 + 54: 49(ptr) AccessChain 34(data) 46 37 + 55: 18(i8vec4) Load 54 + 56: 18(i8vec4) VectorShuffle 55 53 4 5 2 3 + Store 54 56 + 57: 6(int) Load 8(invocation) + 60: 49(ptr) AccessChain 34(data) 58 37 + 61: 18(i8vec4) Load 60 + 62: 59(i8vec3) VectorShuffle 61 61 0 1 2 + 63: 59(i8vec3) GroupNonUniformIAdd 43 ClusteredReduce 62 42 + 64: 49(ptr) AccessChain 34(data) 57 37 + 65: 18(i8vec4) Load 64 + 66: 18(i8vec4) VectorShuffle 65 63 4 5 6 3 + Store 64 66 + 67: 6(int) Load 8(invocation) + 69: 49(ptr) AccessChain 34(data) 68 37 + 70: 18(i8vec4) Load 69 + 71: 18(i8vec4) GroupNonUniformIAdd 43 ClusteredReduce 70 42 + 72: 49(ptr) AccessChain 34(data) 67 37 + Store 72 71 + 73: 6(int) Load 8(invocation) + 74: 39(ptr) AccessChain 34(data) 37 37 38 + 75: 17(int8_t) Load 74 + 76: 17(int8_t) GroupNonUniformIMul 43 ClusteredReduce 75 42 + 77: 39(ptr) AccessChain 34(data) 73 37 38 + Store 77 76 + 78: 6(int) Load 8(invocation) + 79: 49(ptr) AccessChain 34(data) 47 37 + 80: 18(i8vec4) Load 79 + 81: 48(i8vec2) VectorShuffle 80 80 0 1 + 82: 48(i8vec2) GroupNonUniformIMul 43 ClusteredReduce 81 42 + 83: 49(ptr) AccessChain 34(data) 78 37 + 84: 18(i8vec4) Load 83 + 85: 18(i8vec4) VectorShuffle 84 82 4 5 2 3 + Store 83 85 + 86: 6(int) Load 8(invocation) + 87: 49(ptr) AccessChain 34(data) 58 37 + 88: 18(i8vec4) Load 87 + 89: 59(i8vec3) VectorShuffle 88 88 0 1 2 + 90: 59(i8vec3) GroupNonUniformIMul 43 ClusteredReduce 89 42 + 91: 49(ptr) AccessChain 34(data) 86 37 + 92: 18(i8vec4) Load 91 + 93: 18(i8vec4) VectorShuffle 92 90 4 5 6 3 + Store 91 93 + 94: 6(int) Load 8(invocation) + 95: 49(ptr) AccessChain 34(data) 68 37 + 96: 18(i8vec4) Load 95 + 97: 18(i8vec4) GroupNonUniformIMul 43 ClusteredReduce 96 42 + 98: 49(ptr) AccessChain 34(data) 94 37 + Store 98 97 + 99: 6(int) Load 8(invocation) + 100: 39(ptr) AccessChain 34(data) 37 37 38 + 101: 17(int8_t) Load 100 + 102: 17(int8_t) GroupNonUniformSMin 43 ClusteredReduce 101 42 + 103: 39(ptr) AccessChain 34(data) 99 37 38 + Store 103 102 + 104: 6(int) Load 8(invocation) + 105: 49(ptr) AccessChain 34(data) 47 37 + 106: 18(i8vec4) Load 105 + 107: 48(i8vec2) VectorShuffle 106 106 0 1 + 108: 48(i8vec2) GroupNonUniformSMin 43 ClusteredReduce 107 42 + 109: 49(ptr) AccessChain 34(data) 104 37 + 110: 18(i8vec4) Load 109 + 111: 18(i8vec4) VectorShuffle 110 108 4 5 2 3 + Store 109 111 + 112: 6(int) Load 8(invocation) + 113: 49(ptr) AccessChain 34(data) 58 37 + 114: 18(i8vec4) Load 113 + 115: 59(i8vec3) VectorShuffle 114 114 0 1 2 + 116: 59(i8vec3) GroupNonUniformSMin 43 ClusteredReduce 115 42 + 117: 49(ptr) AccessChain 34(data) 112 37 + 118: 18(i8vec4) Load 117 + 119: 18(i8vec4) VectorShuffle 118 116 4 5 6 3 + Store 117 119 + 120: 6(int) Load 8(invocation) + 121: 49(ptr) AccessChain 34(data) 68 37 + 122: 18(i8vec4) Load 121 + 123: 18(i8vec4) GroupNonUniformSMin 43 ClusteredReduce 122 42 + 124: 49(ptr) AccessChain 34(data) 120 37 + Store 124 123 + 125: 6(int) Load 8(invocation) + 126: 39(ptr) AccessChain 34(data) 37 37 38 + 127: 17(int8_t) Load 126 + 128: 17(int8_t) GroupNonUniformSMax 43 ClusteredReduce 127 42 + 129: 39(ptr) AccessChain 34(data) 125 37 38 + Store 129 128 + 130: 6(int) Load 8(invocation) + 131: 49(ptr) AccessChain 34(data) 47 37 + 132: 18(i8vec4) Load 131 + 133: 48(i8vec2) VectorShuffle 132 132 0 1 + 134: 48(i8vec2) GroupNonUniformSMax 43 ClusteredReduce 133 42 + 135: 49(ptr) AccessChain 34(data) 130 37 + 136: 18(i8vec4) Load 135 + 137: 18(i8vec4) VectorShuffle 136 134 4 5 2 3 + Store 135 137 + 138: 6(int) Load 8(invocation) + 139: 49(ptr) AccessChain 34(data) 58 37 + 140: 18(i8vec4) Load 139 + 141: 59(i8vec3) VectorShuffle 140 140 0 1 2 + 142: 59(i8vec3) GroupNonUniformSMax 43 ClusteredReduce 141 42 + 143: 49(ptr) AccessChain 34(data) 138 37 + 144: 18(i8vec4) Load 143 + 145: 18(i8vec4) VectorShuffle 144 142 4 5 6 3 + Store 143 145 + 146: 6(int) Load 8(invocation) + 147: 49(ptr) AccessChain 34(data) 68 37 + 148: 18(i8vec4) Load 147 + 149: 18(i8vec4) GroupNonUniformSMax 43 ClusteredReduce 148 42 + 150: 49(ptr) AccessChain 34(data) 146 37 + Store 150 149 + 151: 6(int) Load 8(invocation) + 152: 39(ptr) AccessChain 34(data) 37 37 38 + 153: 17(int8_t) Load 152 + 154: 17(int8_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 153 42 + 155: 39(ptr) AccessChain 34(data) 151 37 38 + Store 155 154 + 156: 6(int) Load 8(invocation) + 157: 49(ptr) AccessChain 34(data) 47 37 + 158: 18(i8vec4) Load 157 + 159: 48(i8vec2) VectorShuffle 158 158 0 1 + 160: 48(i8vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 159 42 + 161: 49(ptr) AccessChain 34(data) 156 37 + 162: 18(i8vec4) Load 161 + 163: 18(i8vec4) VectorShuffle 162 160 4 5 2 3 + Store 161 163 + 164: 6(int) Load 8(invocation) + 165: 49(ptr) AccessChain 34(data) 58 37 + 166: 18(i8vec4) Load 165 + 167: 59(i8vec3) VectorShuffle 166 166 0 1 2 + 168: 59(i8vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 167 42 + 169: 49(ptr) AccessChain 34(data) 164 37 + 170: 18(i8vec4) Load 169 + 171: 18(i8vec4) VectorShuffle 170 168 4 5 6 3 + Store 169 171 + 172: 6(int) Load 8(invocation) + 173: 49(ptr) AccessChain 34(data) 68 37 + 174: 18(i8vec4) Load 173 + 175: 18(i8vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 174 42 + 176: 49(ptr) AccessChain 34(data) 172 37 + Store 176 175 + 177: 6(int) Load 8(invocation) + 178: 39(ptr) AccessChain 34(data) 37 37 38 + 179: 17(int8_t) Load 178 + 180: 17(int8_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 179 42 + 181: 39(ptr) AccessChain 34(data) 177 37 38 + Store 181 180 + 182: 6(int) Load 8(invocation) + 183: 49(ptr) AccessChain 34(data) 47 37 + 184: 18(i8vec4) Load 183 + 185: 48(i8vec2) VectorShuffle 184 184 0 1 + 186: 48(i8vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 185 42 + 187: 49(ptr) AccessChain 34(data) 182 37 + 188: 18(i8vec4) Load 187 + 189: 18(i8vec4) VectorShuffle 188 186 4 5 2 3 + Store 187 189 + 190: 6(int) Load 8(invocation) + 191: 49(ptr) AccessChain 34(data) 58 37 + 192: 18(i8vec4) Load 191 + 193: 59(i8vec3) VectorShuffle 192 192 0 1 2 + 194: 59(i8vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 193 42 + 195: 49(ptr) AccessChain 34(data) 190 37 + 196: 18(i8vec4) Load 195 + 197: 18(i8vec4) VectorShuffle 196 194 4 5 6 3 + Store 195 197 + 198: 6(int) Load 8(invocation) + 199: 49(ptr) AccessChain 34(data) 68 37 + 200: 18(i8vec4) Load 199 + 201: 18(i8vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 200 42 + 202: 49(ptr) AccessChain 34(data) 198 37 + Store 202 201 + 203: 6(int) Load 8(invocation) + 204: 39(ptr) AccessChain 34(data) 37 37 38 + 205: 17(int8_t) Load 204 + 206: 17(int8_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 205 42 + 207: 39(ptr) AccessChain 34(data) 203 37 38 + Store 207 206 + 208: 6(int) Load 8(invocation) + 209: 49(ptr) AccessChain 34(data) 47 37 + 210: 18(i8vec4) Load 209 + 211: 48(i8vec2) VectorShuffle 210 210 0 1 + 212: 48(i8vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 211 42 + 213: 49(ptr) AccessChain 34(data) 208 37 + 214: 18(i8vec4) Load 213 + 215: 18(i8vec4) VectorShuffle 214 212 4 5 2 3 + Store 213 215 + 216: 6(int) Load 8(invocation) + 217: 49(ptr) AccessChain 34(data) 58 37 + 218: 18(i8vec4) Load 217 + 219: 59(i8vec3) VectorShuffle 218 218 0 1 2 + 220: 59(i8vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 219 42 + 221: 49(ptr) AccessChain 34(data) 216 37 + 222: 18(i8vec4) Load 221 + 223: 18(i8vec4) VectorShuffle 222 220 4 5 6 3 + Store 221 223 + 224: 6(int) Load 8(invocation) + 225: 49(ptr) AccessChain 34(data) 68 37 + 226: 18(i8vec4) Load 225 + 227: 18(i8vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 226 42 + 228: 49(ptr) AccessChain 34(data) 224 37 + Store 228 227 + 229: 6(int) Load 8(invocation) + 231: 230(ptr) AccessChain 34(data) 37 47 38 + 232: 19(int8_t) Load 231 + 233: 19(int8_t) GroupNonUniformIAdd 43 ClusteredReduce 232 42 + 234: 230(ptr) AccessChain 34(data) 229 47 38 + Store 234 233 + 235: 6(int) Load 8(invocation) + 238: 237(ptr) AccessChain 34(data) 47 47 + 239: 20(i8vec4) Load 238 + 240: 236(i8vec2) VectorShuffle 239 239 0 1 + 241: 236(i8vec2) GroupNonUniformIAdd 43 ClusteredReduce 240 42 + 242: 237(ptr) AccessChain 34(data) 235 47 + 243: 20(i8vec4) Load 242 + 244: 20(i8vec4) VectorShuffle 243 241 4 5 2 3 + Store 242 244 + 245: 6(int) Load 8(invocation) + 247: 237(ptr) AccessChain 34(data) 58 47 + 248: 20(i8vec4) Load 247 + 249: 246(i8vec3) VectorShuffle 248 248 0 1 2 + 250: 246(i8vec3) GroupNonUniformIAdd 43 ClusteredReduce 249 42 + 251: 237(ptr) AccessChain 34(data) 245 47 + 252: 20(i8vec4) Load 251 + 253: 20(i8vec4) VectorShuffle 252 250 4 5 6 3 + Store 251 253 + 254: 6(int) Load 8(invocation) + 255: 237(ptr) AccessChain 34(data) 68 47 + 256: 20(i8vec4) Load 255 + 257: 20(i8vec4) GroupNonUniformIAdd 43 ClusteredReduce 256 42 + 258: 237(ptr) AccessChain 34(data) 254 47 + Store 258 257 + 259: 6(int) Load 8(invocation) + 260: 230(ptr) AccessChain 34(data) 37 47 38 + 261: 19(int8_t) Load 260 + 262: 19(int8_t) GroupNonUniformIMul 43 ClusteredReduce 261 42 + 263: 230(ptr) AccessChain 34(data) 259 47 38 + Store 263 262 + 264: 6(int) Load 8(invocation) + 265: 237(ptr) AccessChain 34(data) 47 47 + 266: 20(i8vec4) Load 265 + 267: 236(i8vec2) VectorShuffle 266 266 0 1 + 268: 236(i8vec2) GroupNonUniformIMul 43 ClusteredReduce 267 42 + 269: 237(ptr) AccessChain 34(data) 264 47 + 270: 20(i8vec4) Load 269 + 271: 20(i8vec4) VectorShuffle 270 268 4 5 2 3 + Store 269 271 + 272: 6(int) Load 8(invocation) + 273: 237(ptr) AccessChain 34(data) 58 47 + 274: 20(i8vec4) Load 273 + 275: 246(i8vec3) VectorShuffle 274 274 0 1 2 + 276: 246(i8vec3) GroupNonUniformIMul 43 ClusteredReduce 275 42 + 277: 237(ptr) AccessChain 34(data) 272 47 + 278: 20(i8vec4) Load 277 + 279: 20(i8vec4) VectorShuffle 278 276 4 5 6 3 + Store 277 279 + 280: 6(int) Load 8(invocation) + 281: 237(ptr) AccessChain 34(data) 68 47 + 282: 20(i8vec4) Load 281 + 283: 20(i8vec4) GroupNonUniformIMul 43 ClusteredReduce 282 42 + 284: 237(ptr) AccessChain 34(data) 280 47 + Store 284 283 + 285: 6(int) Load 8(invocation) + 286: 230(ptr) AccessChain 34(data) 37 47 38 + 287: 19(int8_t) Load 286 + 288: 19(int8_t) GroupNonUniformUMin 43 ClusteredReduce 287 42 + 289: 230(ptr) AccessChain 34(data) 285 47 38 + Store 289 288 + 290: 6(int) Load 8(invocation) + 291: 237(ptr) AccessChain 34(data) 47 47 + 292: 20(i8vec4) Load 291 + 293: 236(i8vec2) VectorShuffle 292 292 0 1 + 294: 236(i8vec2) GroupNonUniformUMin 43 ClusteredReduce 293 42 + 295: 237(ptr) AccessChain 34(data) 290 47 + 296: 20(i8vec4) Load 295 + 297: 20(i8vec4) VectorShuffle 296 294 4 5 2 3 + Store 295 297 + 298: 6(int) Load 8(invocation) + 299: 237(ptr) AccessChain 34(data) 58 47 + 300: 20(i8vec4) Load 299 + 301: 246(i8vec3) VectorShuffle 300 300 0 1 2 + 302: 246(i8vec3) GroupNonUniformUMin 43 ClusteredReduce 301 42 + 303: 237(ptr) AccessChain 34(data) 298 47 + 304: 20(i8vec4) Load 303 + 305: 20(i8vec4) VectorShuffle 304 302 4 5 6 3 + Store 303 305 + 306: 6(int) Load 8(invocation) + 307: 237(ptr) AccessChain 34(data) 68 47 + 308: 20(i8vec4) Load 307 + 309: 20(i8vec4) GroupNonUniformUMin 43 ClusteredReduce 308 42 + 310: 237(ptr) AccessChain 34(data) 306 47 + Store 310 309 + 311: 6(int) Load 8(invocation) + 312: 230(ptr) AccessChain 34(data) 37 47 38 + 313: 19(int8_t) Load 312 + 314: 19(int8_t) GroupNonUniformUMax 43 ClusteredReduce 313 42 + 315: 230(ptr) AccessChain 34(data) 311 47 38 + Store 315 314 + 316: 6(int) Load 8(invocation) + 317: 237(ptr) AccessChain 34(data) 47 47 + 318: 20(i8vec4) Load 317 + 319: 236(i8vec2) VectorShuffle 318 318 0 1 + 320: 236(i8vec2) GroupNonUniformUMax 43 ClusteredReduce 319 42 + 321: 237(ptr) AccessChain 34(data) 316 47 + 322: 20(i8vec4) Load 321 + 323: 20(i8vec4) VectorShuffle 322 320 4 5 2 3 + Store 321 323 + 324: 6(int) Load 8(invocation) + 325: 237(ptr) AccessChain 34(data) 58 47 + 326: 20(i8vec4) Load 325 + 327: 246(i8vec3) VectorShuffle 326 326 0 1 2 + 328: 246(i8vec3) GroupNonUniformUMax 43 ClusteredReduce 327 42 + 329: 237(ptr) AccessChain 34(data) 324 47 + 330: 20(i8vec4) Load 329 + 331: 20(i8vec4) VectorShuffle 330 328 4 5 6 3 + Store 329 331 + 332: 6(int) Load 8(invocation) + 333: 237(ptr) AccessChain 34(data) 68 47 + 334: 20(i8vec4) Load 333 + 335: 20(i8vec4) GroupNonUniformUMax 43 ClusteredReduce 334 42 + 336: 237(ptr) AccessChain 34(data) 332 47 + Store 336 335 + 337: 6(int) Load 8(invocation) + 338: 230(ptr) AccessChain 34(data) 37 47 38 + 339: 19(int8_t) Load 338 + 340: 19(int8_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 339 42 + 341: 230(ptr) AccessChain 34(data) 337 47 38 + Store 341 340 + 342: 6(int) Load 8(invocation) + 343: 237(ptr) AccessChain 34(data) 47 47 + 344: 20(i8vec4) Load 343 + 345: 236(i8vec2) VectorShuffle 344 344 0 1 + 346: 236(i8vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 345 42 + 347: 237(ptr) AccessChain 34(data) 342 47 + 348: 20(i8vec4) Load 347 + 349: 20(i8vec4) VectorShuffle 348 346 4 5 2 3 + Store 347 349 + 350: 6(int) Load 8(invocation) + 351: 237(ptr) AccessChain 34(data) 58 47 + 352: 20(i8vec4) Load 351 + 353: 246(i8vec3) VectorShuffle 352 352 0 1 2 + 354: 246(i8vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 353 42 + 355: 237(ptr) AccessChain 34(data) 350 47 + 356: 20(i8vec4) Load 355 + 357: 20(i8vec4) VectorShuffle 356 354 4 5 6 3 + Store 355 357 + 358: 6(int) Load 8(invocation) + 359: 237(ptr) AccessChain 34(data) 68 47 + 360: 20(i8vec4) Load 359 + 361: 20(i8vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 360 42 + 362: 237(ptr) AccessChain 34(data) 358 47 + Store 362 361 + 363: 6(int) Load 8(invocation) + 364: 230(ptr) AccessChain 34(data) 37 47 38 + 365: 19(int8_t) Load 364 + 366: 19(int8_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 365 42 + 367: 230(ptr) AccessChain 34(data) 363 47 38 + Store 367 366 + 368: 6(int) Load 8(invocation) + 369: 237(ptr) AccessChain 34(data) 47 47 + 370: 20(i8vec4) Load 369 + 371: 236(i8vec2) VectorShuffle 370 370 0 1 + 372: 236(i8vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 371 42 + 373: 237(ptr) AccessChain 34(data) 368 47 + 374: 20(i8vec4) Load 373 + 375: 20(i8vec4) VectorShuffle 374 372 4 5 2 3 + Store 373 375 + 376: 6(int) Load 8(invocation) + 377: 237(ptr) AccessChain 34(data) 58 47 + 378: 20(i8vec4) Load 377 + 379: 246(i8vec3) VectorShuffle 378 378 0 1 2 + 380: 246(i8vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 379 42 + 381: 237(ptr) AccessChain 34(data) 376 47 + 382: 20(i8vec4) Load 381 + 383: 20(i8vec4) VectorShuffle 382 380 4 5 6 3 + Store 381 383 + 384: 6(int) Load 8(invocation) + 385: 237(ptr) AccessChain 34(data) 68 47 + 386: 20(i8vec4) Load 385 + 387: 20(i8vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 386 42 + 388: 237(ptr) AccessChain 34(data) 384 47 + Store 388 387 + 389: 6(int) Load 8(invocation) + 390: 230(ptr) AccessChain 34(data) 37 47 38 + 391: 19(int8_t) Load 390 + 392: 19(int8_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 391 42 + 393: 230(ptr) AccessChain 34(data) 389 47 38 + Store 393 392 + 394: 6(int) Load 8(invocation) + 395: 237(ptr) AccessChain 34(data) 47 47 + 396: 20(i8vec4) Load 395 + 397: 236(i8vec2) VectorShuffle 396 396 0 1 + 398: 236(i8vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 397 42 + 399: 237(ptr) AccessChain 34(data) 394 47 + 400: 20(i8vec4) Load 399 + 401: 20(i8vec4) VectorShuffle 400 398 4 5 2 3 + Store 399 401 + 402: 6(int) Load 8(invocation) + 403: 237(ptr) AccessChain 34(data) 58 47 + 404: 20(i8vec4) Load 403 + 405: 246(i8vec3) VectorShuffle 404 404 0 1 2 + 406: 246(i8vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 405 42 + 407: 237(ptr) AccessChain 34(data) 402 47 + 408: 20(i8vec4) Load 407 + 409: 20(i8vec4) VectorShuffle 408 406 4 5 6 3 + Store 407 409 + 410: 6(int) Load 8(invocation) + 411: 237(ptr) AccessChain 34(data) 68 47 + 412: 20(i8vec4) Load 411 + 413: 20(i8vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 412 42 + 414: 237(ptr) AccessChain 34(data) 410 47 + Store 414 413 + 415: 6(int) Load 8(invocation) + 417: 416(ptr) AccessChain 34(data) 37 58 38 + 418: 21(int16_t) Load 417 + 419: 21(int16_t) GroupNonUniformIAdd 43 ClusteredReduce 418 42 + 420: 416(ptr) AccessChain 34(data) 415 58 38 + Store 420 419 + 421: 6(int) Load 8(invocation) + 424: 423(ptr) AccessChain 34(data) 47 58 + 425: 22(i16vec4) Load 424 + 426:422(i16vec2) VectorShuffle 425 425 0 1 + 427:422(i16vec2) GroupNonUniformIAdd 43 ClusteredReduce 426 42 + 428: 423(ptr) AccessChain 34(data) 421 58 + 429: 22(i16vec4) Load 428 + 430: 22(i16vec4) VectorShuffle 429 427 4 5 2 3 + Store 428 430 + 431: 6(int) Load 8(invocation) + 433: 423(ptr) AccessChain 34(data) 58 58 + 434: 22(i16vec4) Load 433 + 435:432(i16vec3) VectorShuffle 434 434 0 1 2 + 436:432(i16vec3) GroupNonUniformIAdd 43 ClusteredReduce 435 42 + 437: 423(ptr) AccessChain 34(data) 431 58 + 438: 22(i16vec4) Load 437 + 439: 22(i16vec4) VectorShuffle 438 436 4 5 6 3 + Store 437 439 + 440: 6(int) Load 8(invocation) + 441: 423(ptr) AccessChain 34(data) 68 58 + 442: 22(i16vec4) Load 441 + 443: 22(i16vec4) GroupNonUniformIAdd 43 ClusteredReduce 442 42 + 444: 423(ptr) AccessChain 34(data) 440 58 + Store 444 443 + 445: 6(int) Load 8(invocation) + 446: 416(ptr) AccessChain 34(data) 37 58 38 + 447: 21(int16_t) Load 446 + 448: 21(int16_t) GroupNonUniformIMul 43 ClusteredReduce 447 42 + 449: 416(ptr) AccessChain 34(data) 445 58 38 + Store 449 448 + 450: 6(int) Load 8(invocation) + 451: 423(ptr) AccessChain 34(data) 47 58 + 452: 22(i16vec4) Load 451 + 453:422(i16vec2) VectorShuffle 452 452 0 1 + 454:422(i16vec2) GroupNonUniformIMul 43 ClusteredReduce 453 42 + 455: 423(ptr) AccessChain 34(data) 450 58 + 456: 22(i16vec4) Load 455 + 457: 22(i16vec4) VectorShuffle 456 454 4 5 2 3 + Store 455 457 + 458: 6(int) Load 8(invocation) + 459: 423(ptr) AccessChain 34(data) 58 58 + 460: 22(i16vec4) Load 459 + 461:432(i16vec3) VectorShuffle 460 460 0 1 2 + 462:432(i16vec3) GroupNonUniformIMul 43 ClusteredReduce 461 42 + 463: 423(ptr) AccessChain 34(data) 458 58 + 464: 22(i16vec4) Load 463 + 465: 22(i16vec4) VectorShuffle 464 462 4 5 6 3 + Store 463 465 + 466: 6(int) Load 8(invocation) + 467: 423(ptr) AccessChain 34(data) 68 58 + 468: 22(i16vec4) Load 467 + 469: 22(i16vec4) GroupNonUniformIMul 43 ClusteredReduce 468 42 + 470: 423(ptr) AccessChain 34(data) 466 58 + Store 470 469 + 471: 6(int) Load 8(invocation) + 472: 416(ptr) AccessChain 34(data) 37 58 38 + 473: 21(int16_t) Load 472 + 474: 21(int16_t) GroupNonUniformSMin 43 ClusteredReduce 473 42 + 475: 416(ptr) AccessChain 34(data) 471 58 38 + Store 475 474 + 476: 6(int) Load 8(invocation) + 477: 423(ptr) AccessChain 34(data) 47 58 + 478: 22(i16vec4) Load 477 + 479:422(i16vec2) VectorShuffle 478 478 0 1 + 480:422(i16vec2) GroupNonUniformSMin 43 ClusteredReduce 479 42 + 481: 423(ptr) AccessChain 34(data) 476 58 + 482: 22(i16vec4) Load 481 + 483: 22(i16vec4) VectorShuffle 482 480 4 5 2 3 + Store 481 483 + 484: 6(int) Load 8(invocation) + 485: 423(ptr) AccessChain 34(data) 58 58 + 486: 22(i16vec4) Load 485 + 487:432(i16vec3) VectorShuffle 486 486 0 1 2 + 488:432(i16vec3) GroupNonUniformSMin 43 ClusteredReduce 487 42 + 489: 423(ptr) AccessChain 34(data) 484 58 + 490: 22(i16vec4) Load 489 + 491: 22(i16vec4) VectorShuffle 490 488 4 5 6 3 + Store 489 491 + 492: 6(int) Load 8(invocation) + 493: 423(ptr) AccessChain 34(data) 68 58 + 494: 22(i16vec4) Load 493 + 495: 22(i16vec4) GroupNonUniformSMin 43 ClusteredReduce 494 42 + 496: 423(ptr) AccessChain 34(data) 492 58 + Store 496 495 + 497: 6(int) Load 8(invocation) + 498: 416(ptr) AccessChain 34(data) 37 58 38 + 499: 21(int16_t) Load 498 + 500: 21(int16_t) GroupNonUniformSMax 43 ClusteredReduce 499 42 + 501: 416(ptr) AccessChain 34(data) 497 58 38 + Store 501 500 + 502: 6(int) Load 8(invocation) + 503: 423(ptr) AccessChain 34(data) 47 58 + 504: 22(i16vec4) Load 503 + 505:422(i16vec2) VectorShuffle 504 504 0 1 + 506:422(i16vec2) GroupNonUniformSMax 43 ClusteredReduce 505 42 + 507: 423(ptr) AccessChain 34(data) 502 58 + 508: 22(i16vec4) Load 507 + 509: 22(i16vec4) VectorShuffle 508 506 4 5 2 3 + Store 507 509 + 510: 6(int) Load 8(invocation) + 511: 423(ptr) AccessChain 34(data) 58 58 + 512: 22(i16vec4) Load 511 + 513:432(i16vec3) VectorShuffle 512 512 0 1 2 + 514:432(i16vec3) GroupNonUniformSMax 43 ClusteredReduce 513 42 + 515: 423(ptr) AccessChain 34(data) 510 58 + 516: 22(i16vec4) Load 515 + 517: 22(i16vec4) VectorShuffle 516 514 4 5 6 3 + Store 515 517 + 518: 6(int) Load 8(invocation) + 519: 423(ptr) AccessChain 34(data) 68 58 + 520: 22(i16vec4) Load 519 + 521: 22(i16vec4) GroupNonUniformSMax 43 ClusteredReduce 520 42 + 522: 423(ptr) AccessChain 34(data) 518 58 + Store 522 521 + 523: 6(int) Load 8(invocation) + 524: 416(ptr) AccessChain 34(data) 37 58 38 + 525: 21(int16_t) Load 524 + 526: 21(int16_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 525 42 + 527: 416(ptr) AccessChain 34(data) 523 58 38 + Store 527 526 + 528: 6(int) Load 8(invocation) + 529: 423(ptr) AccessChain 34(data) 47 58 + 530: 22(i16vec4) Load 529 + 531:422(i16vec2) VectorShuffle 530 530 0 1 + 532:422(i16vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 531 42 + 533: 423(ptr) AccessChain 34(data) 528 58 + 534: 22(i16vec4) Load 533 + 535: 22(i16vec4) VectorShuffle 534 532 4 5 2 3 + Store 533 535 + 536: 6(int) Load 8(invocation) + 537: 423(ptr) AccessChain 34(data) 58 58 + 538: 22(i16vec4) Load 537 + 539:432(i16vec3) VectorShuffle 538 538 0 1 2 + 540:432(i16vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 539 42 + 541: 423(ptr) AccessChain 34(data) 536 58 + 542: 22(i16vec4) Load 541 + 543: 22(i16vec4) VectorShuffle 542 540 4 5 6 3 + Store 541 543 + 544: 6(int) Load 8(invocation) + 545: 423(ptr) AccessChain 34(data) 68 58 + 546: 22(i16vec4) Load 545 + 547: 22(i16vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 546 42 + 548: 423(ptr) AccessChain 34(data) 544 58 + Store 548 547 + 549: 6(int) Load 8(invocation) + 550: 416(ptr) AccessChain 34(data) 37 58 38 + 551: 21(int16_t) Load 550 + 552: 21(int16_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 551 42 + 553: 416(ptr) AccessChain 34(data) 549 58 38 + Store 553 552 + 554: 6(int) Load 8(invocation) + 555: 423(ptr) AccessChain 34(data) 47 58 + 556: 22(i16vec4) Load 555 + 557:422(i16vec2) VectorShuffle 556 556 0 1 + 558:422(i16vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 557 42 + 559: 423(ptr) AccessChain 34(data) 554 58 + 560: 22(i16vec4) Load 559 + 561: 22(i16vec4) VectorShuffle 560 558 4 5 2 3 + Store 559 561 + 562: 6(int) Load 8(invocation) + 563: 423(ptr) AccessChain 34(data) 58 58 + 564: 22(i16vec4) Load 563 + 565:432(i16vec3) VectorShuffle 564 564 0 1 2 + 566:432(i16vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 565 42 + 567: 423(ptr) AccessChain 34(data) 562 58 + 568: 22(i16vec4) Load 567 + 569: 22(i16vec4) VectorShuffle 568 566 4 5 6 3 + Store 567 569 + 570: 6(int) Load 8(invocation) + 571: 423(ptr) AccessChain 34(data) 68 58 + 572: 22(i16vec4) Load 571 + 573: 22(i16vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 572 42 + 574: 423(ptr) AccessChain 34(data) 570 58 + Store 574 573 + 575: 6(int) Load 8(invocation) + 576: 416(ptr) AccessChain 34(data) 37 58 38 + 577: 21(int16_t) Load 576 + 578: 21(int16_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 577 42 + 579: 416(ptr) AccessChain 34(data) 575 58 38 + Store 579 578 + 580: 6(int) Load 8(invocation) + 581: 423(ptr) AccessChain 34(data) 47 58 + 582: 22(i16vec4) Load 581 + 583:422(i16vec2) VectorShuffle 582 582 0 1 + 584:422(i16vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 583 42 + 585: 423(ptr) AccessChain 34(data) 580 58 + 586: 22(i16vec4) Load 585 + 587: 22(i16vec4) VectorShuffle 586 584 4 5 2 3 + Store 585 587 + 588: 6(int) Load 8(invocation) + 589: 423(ptr) AccessChain 34(data) 58 58 + 590: 22(i16vec4) Load 589 + 591:432(i16vec3) VectorShuffle 590 590 0 1 2 + 592:432(i16vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 591 42 + 593: 423(ptr) AccessChain 34(data) 588 58 + 594: 22(i16vec4) Load 593 + 595: 22(i16vec4) VectorShuffle 594 592 4 5 6 3 + Store 593 595 + 596: 6(int) Load 8(invocation) + 597: 423(ptr) AccessChain 34(data) 68 58 + 598: 22(i16vec4) Load 597 + 599: 22(i16vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 598 42 + 600: 423(ptr) AccessChain 34(data) 596 58 + Store 600 599 + 601: 6(int) Load 8(invocation) + 603: 602(ptr) AccessChain 34(data) 37 68 38 + 604: 23(int16_t) Load 603 + 605: 23(int16_t) GroupNonUniformIAdd 43 ClusteredReduce 604 42 + 606: 602(ptr) AccessChain 34(data) 601 68 38 + Store 606 605 + 607: 6(int) Load 8(invocation) + 610: 609(ptr) AccessChain 34(data) 47 68 + 611: 24(i16vec4) Load 610 + 612:608(i16vec2) VectorShuffle 611 611 0 1 + 613:608(i16vec2) GroupNonUniformIAdd 43 ClusteredReduce 612 42 + 614: 609(ptr) AccessChain 34(data) 607 68 + 615: 24(i16vec4) Load 614 + 616: 24(i16vec4) VectorShuffle 615 613 4 5 2 3 + Store 614 616 + 617: 6(int) Load 8(invocation) + 619: 609(ptr) AccessChain 34(data) 58 68 + 620: 24(i16vec4) Load 619 + 621:618(i16vec3) VectorShuffle 620 620 0 1 2 + 622:618(i16vec3) GroupNonUniformIAdd 43 ClusteredReduce 621 42 + 623: 609(ptr) AccessChain 34(data) 617 68 + 624: 24(i16vec4) Load 623 + 625: 24(i16vec4) VectorShuffle 624 622 4 5 6 3 + Store 623 625 + 626: 6(int) Load 8(invocation) + 627: 609(ptr) AccessChain 34(data) 68 68 + 628: 24(i16vec4) Load 627 + 629: 24(i16vec4) GroupNonUniformIAdd 43 ClusteredReduce 628 42 + 630: 609(ptr) AccessChain 34(data) 626 68 + Store 630 629 + 631: 6(int) Load 8(invocation) + 632: 602(ptr) AccessChain 34(data) 37 68 38 + 633: 23(int16_t) Load 632 + 634: 23(int16_t) GroupNonUniformIMul 43 ClusteredReduce 633 42 + 635: 602(ptr) AccessChain 34(data) 631 68 38 + Store 635 634 + 636: 6(int) Load 8(invocation) + 637: 609(ptr) AccessChain 34(data) 47 68 + 638: 24(i16vec4) Load 637 + 639:608(i16vec2) VectorShuffle 638 638 0 1 + 640:608(i16vec2) GroupNonUniformIMul 43 ClusteredReduce 639 42 + 641: 609(ptr) AccessChain 34(data) 636 68 + 642: 24(i16vec4) Load 641 + 643: 24(i16vec4) VectorShuffle 642 640 4 5 2 3 + Store 641 643 + 644: 6(int) Load 8(invocation) + 645: 609(ptr) AccessChain 34(data) 58 68 + 646: 24(i16vec4) Load 645 + 647:618(i16vec3) VectorShuffle 646 646 0 1 2 + 648:618(i16vec3) GroupNonUniformIMul 43 ClusteredReduce 647 42 + 649: 609(ptr) AccessChain 34(data) 644 68 + 650: 24(i16vec4) Load 649 + 651: 24(i16vec4) VectorShuffle 650 648 4 5 6 3 + Store 649 651 + 652: 6(int) Load 8(invocation) + 653: 609(ptr) AccessChain 34(data) 68 68 + 654: 24(i16vec4) Load 653 + 655: 24(i16vec4) GroupNonUniformIMul 43 ClusteredReduce 654 42 + 656: 609(ptr) AccessChain 34(data) 652 68 + Store 656 655 + 657: 6(int) Load 8(invocation) + 658: 602(ptr) AccessChain 34(data) 37 68 38 + 659: 23(int16_t) Load 658 + 660: 23(int16_t) GroupNonUniformUMin 43 ClusteredReduce 659 42 + 661: 602(ptr) AccessChain 34(data) 657 68 38 + Store 661 660 + 662: 6(int) Load 8(invocation) + 663: 609(ptr) AccessChain 34(data) 47 68 + 664: 24(i16vec4) Load 663 + 665:608(i16vec2) VectorShuffle 664 664 0 1 + 666:608(i16vec2) GroupNonUniformUMin 43 ClusteredReduce 665 42 + 667: 609(ptr) AccessChain 34(data) 662 68 + 668: 24(i16vec4) Load 667 + 669: 24(i16vec4) VectorShuffle 668 666 4 5 2 3 + Store 667 669 + 670: 6(int) Load 8(invocation) + 671: 609(ptr) AccessChain 34(data) 58 68 + 672: 24(i16vec4) Load 671 + 673:618(i16vec3) VectorShuffle 672 672 0 1 2 + 674:618(i16vec3) GroupNonUniformUMin 43 ClusteredReduce 673 42 + 675: 609(ptr) AccessChain 34(data) 670 68 + 676: 24(i16vec4) Load 675 + 677: 24(i16vec4) VectorShuffle 676 674 4 5 6 3 + Store 675 677 + 678: 6(int) Load 8(invocation) + 679: 609(ptr) AccessChain 34(data) 68 68 + 680: 24(i16vec4) Load 679 + 681: 24(i16vec4) GroupNonUniformUMin 43 ClusteredReduce 680 42 + 682: 609(ptr) AccessChain 34(data) 678 68 + Store 682 681 + 683: 6(int) Load 8(invocation) + 684: 602(ptr) AccessChain 34(data) 37 68 38 + 685: 23(int16_t) Load 684 + 686: 23(int16_t) GroupNonUniformUMax 43 ClusteredReduce 685 42 + 687: 602(ptr) AccessChain 34(data) 683 68 38 + Store 687 686 + 688: 6(int) Load 8(invocation) + 689: 609(ptr) AccessChain 34(data) 47 68 + 690: 24(i16vec4) Load 689 + 691:608(i16vec2) VectorShuffle 690 690 0 1 + 692:608(i16vec2) GroupNonUniformUMax 43 ClusteredReduce 691 42 + 693: 609(ptr) AccessChain 34(data) 688 68 + 694: 24(i16vec4) Load 693 + 695: 24(i16vec4) VectorShuffle 694 692 4 5 2 3 + Store 693 695 + 696: 6(int) Load 8(invocation) + 697: 609(ptr) AccessChain 34(data) 58 68 + 698: 24(i16vec4) Load 697 + 699:618(i16vec3) VectorShuffle 698 698 0 1 2 + 700:618(i16vec3) GroupNonUniformUMax 43 ClusteredReduce 699 42 + 701: 609(ptr) AccessChain 34(data) 696 68 + 702: 24(i16vec4) Load 701 + 703: 24(i16vec4) VectorShuffle 702 700 4 5 6 3 + Store 701 703 + 704: 6(int) Load 8(invocation) + 705: 609(ptr) AccessChain 34(data) 68 68 + 706: 24(i16vec4) Load 705 + 707: 24(i16vec4) GroupNonUniformUMax 43 ClusteredReduce 706 42 + 708: 609(ptr) AccessChain 34(data) 704 68 + Store 708 707 + 709: 6(int) Load 8(invocation) + 710: 602(ptr) AccessChain 34(data) 37 68 38 + 711: 23(int16_t) Load 710 + 712: 23(int16_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 711 42 + 713: 602(ptr) AccessChain 34(data) 709 68 38 + Store 713 712 + 714: 6(int) Load 8(invocation) + 715: 609(ptr) AccessChain 34(data) 47 68 + 716: 24(i16vec4) Load 715 + 717:608(i16vec2) VectorShuffle 716 716 0 1 + 718:608(i16vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 717 42 + 719: 609(ptr) AccessChain 34(data) 714 68 + 720: 24(i16vec4) Load 719 + 721: 24(i16vec4) VectorShuffle 720 718 4 5 2 3 + Store 719 721 + 722: 6(int) Load 8(invocation) + 723: 609(ptr) AccessChain 34(data) 58 68 + 724: 24(i16vec4) Load 723 + 725:618(i16vec3) VectorShuffle 724 724 0 1 2 + 726:618(i16vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 725 42 + 727: 609(ptr) AccessChain 34(data) 722 68 + 728: 24(i16vec4) Load 727 + 729: 24(i16vec4) VectorShuffle 728 726 4 5 6 3 + Store 727 729 + 730: 6(int) Load 8(invocation) + 731: 609(ptr) AccessChain 34(data) 68 68 + 732: 24(i16vec4) Load 731 + 733: 24(i16vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 732 42 + 734: 609(ptr) AccessChain 34(data) 730 68 + Store 734 733 + 735: 6(int) Load 8(invocation) + 736: 602(ptr) AccessChain 34(data) 37 68 38 + 737: 23(int16_t) Load 736 + 738: 23(int16_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 737 42 + 739: 602(ptr) AccessChain 34(data) 735 68 38 + Store 739 738 + 740: 6(int) Load 8(invocation) + 741: 609(ptr) AccessChain 34(data) 47 68 + 742: 24(i16vec4) Load 741 + 743:608(i16vec2) VectorShuffle 742 742 0 1 + 744:608(i16vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 743 42 + 745: 609(ptr) AccessChain 34(data) 740 68 + 746: 24(i16vec4) Load 745 + 747: 24(i16vec4) VectorShuffle 746 744 4 5 2 3 + Store 745 747 + 748: 6(int) Load 8(invocation) + 749: 609(ptr) AccessChain 34(data) 58 68 + 750: 24(i16vec4) Load 749 + 751:618(i16vec3) VectorShuffle 750 750 0 1 2 + 752:618(i16vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 751 42 + 753: 609(ptr) AccessChain 34(data) 748 68 + 754: 24(i16vec4) Load 753 + 755: 24(i16vec4) VectorShuffle 754 752 4 5 6 3 + Store 753 755 + 756: 6(int) Load 8(invocation) + 757: 609(ptr) AccessChain 34(data) 68 68 + 758: 24(i16vec4) Load 757 + 759: 24(i16vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 758 42 + 760: 609(ptr) AccessChain 34(data) 756 68 + Store 760 759 + 761: 6(int) Load 8(invocation) + 762: 602(ptr) AccessChain 34(data) 37 68 38 + 763: 23(int16_t) Load 762 + 764: 23(int16_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 763 42 + 765: 602(ptr) AccessChain 34(data) 761 68 38 + Store 765 764 + 766: 6(int) Load 8(invocation) + 767: 609(ptr) AccessChain 34(data) 47 68 + 768: 24(i16vec4) Load 767 + 769:608(i16vec2) VectorShuffle 768 768 0 1 + 770:608(i16vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 769 42 + 771: 609(ptr) AccessChain 34(data) 766 68 + 772: 24(i16vec4) Load 771 + 773: 24(i16vec4) VectorShuffle 772 770 4 5 2 3 + Store 771 773 + 774: 6(int) Load 8(invocation) + 775: 609(ptr) AccessChain 34(data) 58 68 + 776: 24(i16vec4) Load 775 + 777:618(i16vec3) VectorShuffle 776 776 0 1 2 + 778:618(i16vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 777 42 + 779: 609(ptr) AccessChain 34(data) 774 68 + 780: 24(i16vec4) Load 779 + 781: 24(i16vec4) VectorShuffle 780 778 4 5 6 3 + Store 779 781 + 782: 6(int) Load 8(invocation) + 783: 609(ptr) AccessChain 34(data) 68 68 + 784: 24(i16vec4) Load 783 + 785: 24(i16vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 784 42 + 786: 609(ptr) AccessChain 34(data) 782 68 + Store 786 785 + 787: 6(int) Load 8(invocation) + 790: 789(ptr) AccessChain 34(data) 37 788 38 + 791: 25(int64_t) Load 790 + 792: 25(int64_t) GroupNonUniformIAdd 43 ClusteredReduce 791 42 + 793: 789(ptr) AccessChain 34(data) 787 788 38 + Store 793 792 + 794: 6(int) Load 8(invocation) + 797: 796(ptr) AccessChain 34(data) 47 788 + 798: 26(i64vec4) Load 797 + 799:795(i64vec2) VectorShuffle 798 798 0 1 + 800:795(i64vec2) GroupNonUniformIAdd 43 ClusteredReduce 799 42 + 801: 796(ptr) AccessChain 34(data) 794 788 + 802: 26(i64vec4) Load 801 + 803: 26(i64vec4) VectorShuffle 802 800 4 5 2 3 + Store 801 803 + 804: 6(int) Load 8(invocation) + 806: 796(ptr) AccessChain 34(data) 58 788 + 807: 26(i64vec4) Load 806 + 808:805(i64vec3) VectorShuffle 807 807 0 1 2 + 809:805(i64vec3) GroupNonUniformIAdd 43 ClusteredReduce 808 42 + 810: 796(ptr) AccessChain 34(data) 804 788 + 811: 26(i64vec4) Load 810 + 812: 26(i64vec4) VectorShuffle 811 809 4 5 6 3 + Store 810 812 + 813: 6(int) Load 8(invocation) + 814: 796(ptr) AccessChain 34(data) 68 788 + 815: 26(i64vec4) Load 814 + 816: 26(i64vec4) GroupNonUniformIAdd 43 ClusteredReduce 815 42 + 817: 796(ptr) AccessChain 34(data) 813 788 + Store 817 816 + 818: 6(int) Load 8(invocation) + 819: 789(ptr) AccessChain 34(data) 37 788 38 + 820: 25(int64_t) Load 819 + 821: 25(int64_t) GroupNonUniformIMul 43 ClusteredReduce 820 42 + 822: 789(ptr) AccessChain 34(data) 818 788 38 + Store 822 821 + 823: 6(int) Load 8(invocation) + 824: 796(ptr) AccessChain 34(data) 47 788 + 825: 26(i64vec4) Load 824 + 826:795(i64vec2) VectorShuffle 825 825 0 1 + 827:795(i64vec2) GroupNonUniformIMul 43 ClusteredReduce 826 42 + 828: 796(ptr) AccessChain 34(data) 823 788 + 829: 26(i64vec4) Load 828 + 830: 26(i64vec4) VectorShuffle 829 827 4 5 2 3 + Store 828 830 + 831: 6(int) Load 8(invocation) + 832: 796(ptr) AccessChain 34(data) 58 788 + 833: 26(i64vec4) Load 832 + 834:805(i64vec3) VectorShuffle 833 833 0 1 2 + 835:805(i64vec3) GroupNonUniformIMul 43 ClusteredReduce 834 42 + 836: 796(ptr) AccessChain 34(data) 831 788 + 837: 26(i64vec4) Load 836 + 838: 26(i64vec4) VectorShuffle 837 835 4 5 6 3 + Store 836 838 + 839: 6(int) Load 8(invocation) + 840: 796(ptr) AccessChain 34(data) 68 788 + 841: 26(i64vec4) Load 840 + 842: 26(i64vec4) GroupNonUniformIMul 43 ClusteredReduce 841 42 + 843: 796(ptr) AccessChain 34(data) 839 788 + Store 843 842 + 844: 6(int) Load 8(invocation) + 845: 789(ptr) AccessChain 34(data) 37 788 38 + 846: 25(int64_t) Load 845 + 847: 25(int64_t) GroupNonUniformSMin 43 ClusteredReduce 846 42 + 848: 789(ptr) AccessChain 34(data) 844 788 38 + Store 848 847 + 849: 6(int) Load 8(invocation) + 850: 796(ptr) AccessChain 34(data) 47 788 + 851: 26(i64vec4) Load 850 + 852:795(i64vec2) VectorShuffle 851 851 0 1 + 853:795(i64vec2) GroupNonUniformSMin 43 ClusteredReduce 852 42 + 854: 796(ptr) AccessChain 34(data) 849 788 + 855: 26(i64vec4) Load 854 + 856: 26(i64vec4) VectorShuffle 855 853 4 5 2 3 + Store 854 856 + 857: 6(int) Load 8(invocation) + 858: 796(ptr) AccessChain 34(data) 58 788 + 859: 26(i64vec4) Load 858 + 860:805(i64vec3) VectorShuffle 859 859 0 1 2 + 861:805(i64vec3) GroupNonUniformSMin 43 ClusteredReduce 860 42 + 862: 796(ptr) AccessChain 34(data) 857 788 + 863: 26(i64vec4) Load 862 + 864: 26(i64vec4) VectorShuffle 863 861 4 5 6 3 + Store 862 864 + 865: 6(int) Load 8(invocation) + 866: 796(ptr) AccessChain 34(data) 68 788 + 867: 26(i64vec4) Load 866 + 868: 26(i64vec4) GroupNonUniformSMin 43 ClusteredReduce 867 42 + 869: 796(ptr) AccessChain 34(data) 865 788 + Store 869 868 + 870: 6(int) Load 8(invocation) + 871: 789(ptr) AccessChain 34(data) 37 788 38 + 872: 25(int64_t) Load 871 + 873: 25(int64_t) GroupNonUniformSMax 43 ClusteredReduce 872 42 + 874: 789(ptr) AccessChain 34(data) 870 788 38 + Store 874 873 + 875: 6(int) Load 8(invocation) + 876: 796(ptr) AccessChain 34(data) 47 788 + 877: 26(i64vec4) Load 876 + 878:795(i64vec2) VectorShuffle 877 877 0 1 + 879:795(i64vec2) GroupNonUniformSMax 43 ClusteredReduce 878 42 + 880: 796(ptr) AccessChain 34(data) 875 788 + 881: 26(i64vec4) Load 880 + 882: 26(i64vec4) VectorShuffle 881 879 4 5 2 3 + Store 880 882 + 883: 6(int) Load 8(invocation) + 884: 796(ptr) AccessChain 34(data) 58 788 + 885: 26(i64vec4) Load 884 + 886:805(i64vec3) VectorShuffle 885 885 0 1 2 + 887:805(i64vec3) GroupNonUniformSMax 43 ClusteredReduce 886 42 + 888: 796(ptr) AccessChain 34(data) 883 788 + 889: 26(i64vec4) Load 888 + 890: 26(i64vec4) VectorShuffle 889 887 4 5 6 3 + Store 888 890 + 891: 6(int) Load 8(invocation) + 892: 796(ptr) AccessChain 34(data) 68 788 + 893: 26(i64vec4) Load 892 + 894: 26(i64vec4) GroupNonUniformSMax 43 ClusteredReduce 893 42 + 895: 796(ptr) AccessChain 34(data) 891 788 + Store 895 894 + 896: 6(int) Load 8(invocation) + 897: 789(ptr) AccessChain 34(data) 37 788 38 + 898: 25(int64_t) Load 897 + 899: 25(int64_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 898 42 + 900: 789(ptr) AccessChain 34(data) 896 788 38 + Store 900 899 + 901: 6(int) Load 8(invocation) + 902: 796(ptr) AccessChain 34(data) 47 788 + 903: 26(i64vec4) Load 902 + 904:795(i64vec2) VectorShuffle 903 903 0 1 + 905:795(i64vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 904 42 + 906: 796(ptr) AccessChain 34(data) 901 788 + 907: 26(i64vec4) Load 906 + 908: 26(i64vec4) VectorShuffle 907 905 4 5 2 3 + Store 906 908 + 909: 6(int) Load 8(invocation) + 910: 796(ptr) AccessChain 34(data) 58 788 + 911: 26(i64vec4) Load 910 + 912:805(i64vec3) VectorShuffle 911 911 0 1 2 + 913:805(i64vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 912 42 + 914: 796(ptr) AccessChain 34(data) 909 788 + 915: 26(i64vec4) Load 914 + 916: 26(i64vec4) VectorShuffle 915 913 4 5 6 3 + Store 914 916 + 917: 6(int) Load 8(invocation) + 918: 796(ptr) AccessChain 34(data) 68 788 + 919: 26(i64vec4) Load 918 + 920: 26(i64vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 919 42 + 921: 796(ptr) AccessChain 34(data) 917 788 + Store 921 920 + 922: 6(int) Load 8(invocation) + 923: 789(ptr) AccessChain 34(data) 37 788 38 + 924: 25(int64_t) Load 923 + 925: 25(int64_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 924 42 + 926: 789(ptr) AccessChain 34(data) 922 788 38 + Store 926 925 + 927: 6(int) Load 8(invocation) + 928: 796(ptr) AccessChain 34(data) 47 788 + 929: 26(i64vec4) Load 928 + 930:795(i64vec2) VectorShuffle 929 929 0 1 + 931:795(i64vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 930 42 + 932: 796(ptr) AccessChain 34(data) 927 788 + 933: 26(i64vec4) Load 932 + 934: 26(i64vec4) VectorShuffle 933 931 4 5 2 3 + Store 932 934 + 935: 6(int) Load 8(invocation) + 936: 796(ptr) AccessChain 34(data) 58 788 + 937: 26(i64vec4) Load 936 + 938:805(i64vec3) VectorShuffle 937 937 0 1 2 + 939:805(i64vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 938 42 + 940: 796(ptr) AccessChain 34(data) 935 788 + 941: 26(i64vec4) Load 940 + 942: 26(i64vec4) VectorShuffle 941 939 4 5 6 3 + Store 940 942 + 943: 6(int) Load 8(invocation) + 944: 796(ptr) AccessChain 34(data) 68 788 + 945: 26(i64vec4) Load 944 + 946: 26(i64vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 945 42 + 947: 796(ptr) AccessChain 34(data) 943 788 + Store 947 946 + 948: 6(int) Load 8(invocation) + 949: 789(ptr) AccessChain 34(data) 37 788 38 + 950: 25(int64_t) Load 949 + 951: 25(int64_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 950 42 + 952: 789(ptr) AccessChain 34(data) 948 788 38 + Store 952 951 + 953: 6(int) Load 8(invocation) + 954: 796(ptr) AccessChain 34(data) 47 788 + 955: 26(i64vec4) Load 954 + 956:795(i64vec2) VectorShuffle 955 955 0 1 + 957:795(i64vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 956 42 + 958: 796(ptr) AccessChain 34(data) 953 788 + 959: 26(i64vec4) Load 958 + 960: 26(i64vec4) VectorShuffle 959 957 4 5 2 3 + Store 958 960 + 961: 6(int) Load 8(invocation) + 962: 796(ptr) AccessChain 34(data) 58 788 + 963: 26(i64vec4) Load 962 + 964:805(i64vec3) VectorShuffle 963 963 0 1 2 + 965:805(i64vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 964 42 + 966: 796(ptr) AccessChain 34(data) 961 788 + 967: 26(i64vec4) Load 966 + 968: 26(i64vec4) VectorShuffle 967 965 4 5 6 3 + Store 966 968 + 969: 6(int) Load 8(invocation) + 970: 796(ptr) AccessChain 34(data) 68 788 + 971: 26(i64vec4) Load 970 + 972: 26(i64vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 971 42 + 973: 796(ptr) AccessChain 34(data) 969 788 + Store 973 972 + 974: 6(int) Load 8(invocation) + 977: 976(ptr) AccessChain 34(data) 37 975 38 + 978: 27(int64_t) Load 977 + 979: 27(int64_t) GroupNonUniformIAdd 43 ClusteredReduce 978 42 + 980: 976(ptr) AccessChain 34(data) 974 975 38 + Store 980 979 + 981: 6(int) Load 8(invocation) + 984: 983(ptr) AccessChain 34(data) 47 975 + 985: 28(i64vec4) Load 984 + 986:982(i64vec2) VectorShuffle 985 985 0 1 + 987:982(i64vec2) GroupNonUniformIAdd 43 ClusteredReduce 986 42 + 988: 983(ptr) AccessChain 34(data) 981 975 + 989: 28(i64vec4) Load 988 + 990: 28(i64vec4) VectorShuffle 989 987 4 5 2 3 + Store 988 990 + 991: 6(int) Load 8(invocation) + 993: 983(ptr) AccessChain 34(data) 58 975 + 994: 28(i64vec4) Load 993 + 995:992(i64vec3) VectorShuffle 994 994 0 1 2 + 996:992(i64vec3) GroupNonUniformIAdd 43 ClusteredReduce 995 42 + 997: 983(ptr) AccessChain 34(data) 991 975 + 998: 28(i64vec4) Load 997 + 999: 28(i64vec4) VectorShuffle 998 996 4 5 6 3 + Store 997 999 + 1000: 6(int) Load 8(invocation) + 1001: 983(ptr) AccessChain 34(data) 68 975 + 1002: 28(i64vec4) Load 1001 + 1003: 28(i64vec4) GroupNonUniformIAdd 43 ClusteredReduce 1002 42 + 1004: 983(ptr) AccessChain 34(data) 1000 975 + Store 1004 1003 + 1005: 6(int) Load 8(invocation) + 1006: 976(ptr) AccessChain 34(data) 37 975 38 + 1007: 27(int64_t) Load 1006 + 1008: 27(int64_t) GroupNonUniformIMul 43 ClusteredReduce 1007 42 + 1009: 976(ptr) AccessChain 34(data) 1005 975 38 + Store 1009 1008 + 1010: 6(int) Load 8(invocation) + 1011: 983(ptr) AccessChain 34(data) 47 975 + 1012: 28(i64vec4) Load 1011 + 1013:982(i64vec2) VectorShuffle 1012 1012 0 1 + 1014:982(i64vec2) GroupNonUniformIMul 43 ClusteredReduce 1013 42 + 1015: 983(ptr) AccessChain 34(data) 1010 975 + 1016: 28(i64vec4) Load 1015 + 1017: 28(i64vec4) VectorShuffle 1016 1014 4 5 2 3 + Store 1015 1017 + 1018: 6(int) Load 8(invocation) + 1019: 983(ptr) AccessChain 34(data) 58 975 + 1020: 28(i64vec4) Load 1019 + 1021:992(i64vec3) VectorShuffle 1020 1020 0 1 2 + 1022:992(i64vec3) GroupNonUniformIMul 43 ClusteredReduce 1021 42 + 1023: 983(ptr) AccessChain 34(data) 1018 975 + 1024: 28(i64vec4) Load 1023 + 1025: 28(i64vec4) VectorShuffle 1024 1022 4 5 6 3 + Store 1023 1025 + 1026: 6(int) Load 8(invocation) + 1027: 983(ptr) AccessChain 34(data) 68 975 + 1028: 28(i64vec4) Load 1027 + 1029: 28(i64vec4) GroupNonUniformIMul 43 ClusteredReduce 1028 42 + 1030: 983(ptr) AccessChain 34(data) 1026 975 + Store 1030 1029 + 1031: 6(int) Load 8(invocation) + 1032: 976(ptr) AccessChain 34(data) 37 975 38 + 1033: 27(int64_t) Load 1032 + 1034: 27(int64_t) GroupNonUniformUMin 43 ClusteredReduce 1033 42 + 1035: 976(ptr) AccessChain 34(data) 1031 975 38 + Store 1035 1034 + 1036: 6(int) Load 8(invocation) + 1037: 983(ptr) AccessChain 34(data) 47 975 + 1038: 28(i64vec4) Load 1037 + 1039:982(i64vec2) VectorShuffle 1038 1038 0 1 + 1040:982(i64vec2) GroupNonUniformUMin 43 ClusteredReduce 1039 42 + 1041: 983(ptr) AccessChain 34(data) 1036 975 + 1042: 28(i64vec4) Load 1041 + 1043: 28(i64vec4) VectorShuffle 1042 1040 4 5 2 3 + Store 1041 1043 + 1044: 6(int) Load 8(invocation) + 1045: 983(ptr) AccessChain 34(data) 58 975 + 1046: 28(i64vec4) Load 1045 + 1047:992(i64vec3) VectorShuffle 1046 1046 0 1 2 + 1048:992(i64vec3) GroupNonUniformUMin 43 ClusteredReduce 1047 42 + 1049: 983(ptr) AccessChain 34(data) 1044 975 + 1050: 28(i64vec4) Load 1049 + 1051: 28(i64vec4) VectorShuffle 1050 1048 4 5 6 3 + Store 1049 1051 + 1052: 6(int) Load 8(invocation) + 1053: 983(ptr) AccessChain 34(data) 68 975 + 1054: 28(i64vec4) Load 1053 + 1055: 28(i64vec4) GroupNonUniformUMin 43 ClusteredReduce 1054 42 + 1056: 983(ptr) AccessChain 34(data) 1052 975 + Store 1056 1055 + 1057: 6(int) Load 8(invocation) + 1058: 976(ptr) AccessChain 34(data) 37 975 38 + 1059: 27(int64_t) Load 1058 + 1060: 27(int64_t) GroupNonUniformUMax 43 ClusteredReduce 1059 42 + 1061: 976(ptr) AccessChain 34(data) 1057 975 38 + Store 1061 1060 + 1062: 6(int) Load 8(invocation) + 1063: 983(ptr) AccessChain 34(data) 47 975 + 1064: 28(i64vec4) Load 1063 + 1065:982(i64vec2) VectorShuffle 1064 1064 0 1 + 1066:982(i64vec2) GroupNonUniformUMax 43 ClusteredReduce 1065 42 + 1067: 983(ptr) AccessChain 34(data) 1062 975 + 1068: 28(i64vec4) Load 1067 + 1069: 28(i64vec4) VectorShuffle 1068 1066 4 5 2 3 + Store 1067 1069 + 1070: 6(int) Load 8(invocation) + 1071: 983(ptr) AccessChain 34(data) 58 975 + 1072: 28(i64vec4) Load 1071 + 1073:992(i64vec3) VectorShuffle 1072 1072 0 1 2 + 1074:992(i64vec3) GroupNonUniformUMax 43 ClusteredReduce 1073 42 + 1075: 983(ptr) AccessChain 34(data) 1070 975 + 1076: 28(i64vec4) Load 1075 + 1077: 28(i64vec4) VectorShuffle 1076 1074 4 5 6 3 + Store 1075 1077 + 1078: 6(int) Load 8(invocation) + 1079: 983(ptr) AccessChain 34(data) 68 975 + 1080: 28(i64vec4) Load 1079 + 1081: 28(i64vec4) GroupNonUniformUMax 43 ClusteredReduce 1080 42 + 1082: 983(ptr) AccessChain 34(data) 1078 975 + Store 1082 1081 + 1083: 6(int) Load 8(invocation) + 1084: 976(ptr) AccessChain 34(data) 37 975 38 + 1085: 27(int64_t) Load 1084 + 1086: 27(int64_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1085 42 + 1087: 976(ptr) AccessChain 34(data) 1083 975 38 + Store 1087 1086 + 1088: 6(int) Load 8(invocation) + 1089: 983(ptr) AccessChain 34(data) 47 975 + 1090: 28(i64vec4) Load 1089 + 1091:982(i64vec2) VectorShuffle 1090 1090 0 1 + 1092:982(i64vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1091 42 + 1093: 983(ptr) AccessChain 34(data) 1088 975 + 1094: 28(i64vec4) Load 1093 + 1095: 28(i64vec4) VectorShuffle 1094 1092 4 5 2 3 + Store 1093 1095 + 1096: 6(int) Load 8(invocation) + 1097: 983(ptr) AccessChain 34(data) 58 975 + 1098: 28(i64vec4) Load 1097 + 1099:992(i64vec3) VectorShuffle 1098 1098 0 1 2 + 1100:992(i64vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1099 42 + 1101: 983(ptr) AccessChain 34(data) 1096 975 + 1102: 28(i64vec4) Load 1101 + 1103: 28(i64vec4) VectorShuffle 1102 1100 4 5 6 3 + Store 1101 1103 + 1104: 6(int) Load 8(invocation) + 1105: 983(ptr) AccessChain 34(data) 68 975 + 1106: 28(i64vec4) Load 1105 + 1107: 28(i64vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1106 42 + 1108: 983(ptr) AccessChain 34(data) 1104 975 + Store 1108 1107 + 1109: 6(int) Load 8(invocation) + 1110: 976(ptr) AccessChain 34(data) 37 975 38 + 1111: 27(int64_t) Load 1110 + 1112: 27(int64_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 1111 42 + 1113: 976(ptr) AccessChain 34(data) 1109 975 38 + Store 1113 1112 + 1114: 6(int) Load 8(invocation) + 1115: 983(ptr) AccessChain 34(data) 47 975 + 1116: 28(i64vec4) Load 1115 + 1117:982(i64vec2) VectorShuffle 1116 1116 0 1 + 1118:982(i64vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 1117 42 + 1119: 983(ptr) AccessChain 34(data) 1114 975 + 1120: 28(i64vec4) Load 1119 + 1121: 28(i64vec4) VectorShuffle 1120 1118 4 5 2 3 + Store 1119 1121 + 1122: 6(int) Load 8(invocation) + 1123: 983(ptr) AccessChain 34(data) 58 975 + 1124: 28(i64vec4) Load 1123 + 1125:992(i64vec3) VectorShuffle 1124 1124 0 1 2 + 1126:992(i64vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 1125 42 + 1127: 983(ptr) AccessChain 34(data) 1122 975 + 1128: 28(i64vec4) Load 1127 + 1129: 28(i64vec4) VectorShuffle 1128 1126 4 5 6 3 + Store 1127 1129 + 1130: 6(int) Load 8(invocation) + 1131: 983(ptr) AccessChain 34(data) 68 975 + 1132: 28(i64vec4) Load 1131 + 1133: 28(i64vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 1132 42 + 1134: 983(ptr) AccessChain 34(data) 1130 975 + Store 1134 1133 + 1135: 6(int) Load 8(invocation) + 1136: 976(ptr) AccessChain 34(data) 37 975 38 + 1137: 27(int64_t) Load 1136 + 1138: 27(int64_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 1137 42 + 1139: 976(ptr) AccessChain 34(data) 1135 975 38 + Store 1139 1138 + 1140: 6(int) Load 8(invocation) + 1141: 983(ptr) AccessChain 34(data) 47 975 + 1142: 28(i64vec4) Load 1141 + 1143:982(i64vec2) VectorShuffle 1142 1142 0 1 + 1144:982(i64vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 1143 42 + 1145: 983(ptr) AccessChain 34(data) 1140 975 + 1146: 28(i64vec4) Load 1145 + 1147: 28(i64vec4) VectorShuffle 1146 1144 4 5 2 3 + Store 1145 1147 + 1148: 6(int) Load 8(invocation) + 1149: 983(ptr) AccessChain 34(data) 58 975 + 1150: 28(i64vec4) Load 1149 + 1151:992(i64vec3) VectorShuffle 1150 1150 0 1 2 + 1152:992(i64vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 1151 42 + 1153: 983(ptr) AccessChain 34(data) 1148 975 + 1154: 28(i64vec4) Load 1153 + 1155: 28(i64vec4) VectorShuffle 1154 1152 4 5 6 3 + Store 1153 1155 + 1156: 6(int) Load 8(invocation) + 1157: 983(ptr) AccessChain 34(data) 68 975 + 1158: 28(i64vec4) Load 1157 + 1159: 28(i64vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 1158 42 + 1160: 983(ptr) AccessChain 34(data) 1156 975 + Store 1160 1159 + 1161: 6(int) Load 8(invocation) + 1164: 1163(ptr) AccessChain 34(data) 37 1162 38 + 1165:29(float16_t) Load 1164 + 1166:29(float16_t) GroupNonUniformFAdd 43 ClusteredReduce 1165 42 + 1167: 1163(ptr) AccessChain 34(data) 1161 1162 38 + Store 1167 1166 + 1168: 6(int) Load 8(invocation) + 1171: 1170(ptr) AccessChain 34(data) 47 1162 + 1172: 30(f16vec4) Load 1171 + 1173:1169(f16vec2) VectorShuffle 1172 1172 0 1 + 1174:1169(f16vec2) GroupNonUniformFAdd 43 ClusteredReduce 1173 42 + 1175: 1170(ptr) AccessChain 34(data) 1168 1162 + 1176: 30(f16vec4) Load 1175 + 1177: 30(f16vec4) VectorShuffle 1176 1174 4 5 2 3 + Store 1175 1177 + 1178: 6(int) Load 8(invocation) + 1180: 1170(ptr) AccessChain 34(data) 58 1162 + 1181: 30(f16vec4) Load 1180 + 1182:1179(f16vec3) VectorShuffle 1181 1181 0 1 2 + 1183:1179(f16vec3) GroupNonUniformFAdd 43 ClusteredReduce 1182 42 + 1184: 1170(ptr) AccessChain 34(data) 1178 1162 + 1185: 30(f16vec4) Load 1184 + 1186: 30(f16vec4) VectorShuffle 1185 1183 4 5 6 3 + Store 1184 1186 + 1187: 6(int) Load 8(invocation) + 1188: 1170(ptr) AccessChain 34(data) 68 1162 + 1189: 30(f16vec4) Load 1188 + 1190: 30(f16vec4) GroupNonUniformFAdd 43 ClusteredReduce 1189 42 + 1191: 1170(ptr) AccessChain 34(data) 1187 1162 + Store 1191 1190 + 1192: 6(int) Load 8(invocation) + 1193: 1163(ptr) AccessChain 34(data) 37 1162 38 + 1194:29(float16_t) Load 1193 + 1195:29(float16_t) GroupNonUniformFMul 43 ClusteredReduce 1194 42 + 1196: 1163(ptr) AccessChain 34(data) 1192 1162 38 + Store 1196 1195 + 1197: 6(int) Load 8(invocation) + 1198: 1170(ptr) AccessChain 34(data) 47 1162 + 1199: 30(f16vec4) Load 1198 + 1200:1169(f16vec2) VectorShuffle 1199 1199 0 1 + 1201:1169(f16vec2) GroupNonUniformFMul 43 ClusteredReduce 1200 42 + 1202: 1170(ptr) AccessChain 34(data) 1197 1162 + 1203: 30(f16vec4) Load 1202 + 1204: 30(f16vec4) VectorShuffle 1203 1201 4 5 2 3 + Store 1202 1204 + 1205: 6(int) Load 8(invocation) + 1206: 1170(ptr) AccessChain 34(data) 58 1162 + 1207: 30(f16vec4) Load 1206 + 1208:1179(f16vec3) VectorShuffle 1207 1207 0 1 2 + 1209:1179(f16vec3) GroupNonUniformFMul 43 ClusteredReduce 1208 42 + 1210: 1170(ptr) AccessChain 34(data) 1205 1162 + 1211: 30(f16vec4) Load 1210 + 1212: 30(f16vec4) VectorShuffle 1211 1209 4 5 6 3 + Store 1210 1212 + 1213: 6(int) Load 8(invocation) + 1214: 1170(ptr) AccessChain 34(data) 68 1162 + 1215: 30(f16vec4) Load 1214 + 1216: 30(f16vec4) GroupNonUniformFMul 43 ClusteredReduce 1215 42 + 1217: 1170(ptr) AccessChain 34(data) 1213 1162 + Store 1217 1216 + 1218: 6(int) Load 8(invocation) + 1219: 1163(ptr) AccessChain 34(data) 37 1162 38 + 1220:29(float16_t) Load 1219 + 1221:29(float16_t) GroupNonUniformFMin 43 ClusteredReduce 1220 42 + 1222: 1163(ptr) AccessChain 34(data) 1218 1162 38 + Store 1222 1221 + 1223: 6(int) Load 8(invocation) + 1224: 1170(ptr) AccessChain 34(data) 47 1162 + 1225: 30(f16vec4) Load 1224 + 1226:1169(f16vec2) VectorShuffle 1225 1225 0 1 + 1227:1169(f16vec2) GroupNonUniformFMin 43 ClusteredReduce 1226 42 + 1228: 1170(ptr) AccessChain 34(data) 1223 1162 + 1229: 30(f16vec4) Load 1228 + 1230: 30(f16vec4) VectorShuffle 1229 1227 4 5 2 3 + Store 1228 1230 + 1231: 6(int) Load 8(invocation) + 1232: 1170(ptr) AccessChain 34(data) 58 1162 + 1233: 30(f16vec4) Load 1232 + 1234:1179(f16vec3) VectorShuffle 1233 1233 0 1 2 + 1235:1179(f16vec3) GroupNonUniformFMin 43 ClusteredReduce 1234 42 + 1236: 1170(ptr) AccessChain 34(data) 1231 1162 + 1237: 30(f16vec4) Load 1236 + 1238: 30(f16vec4) VectorShuffle 1237 1235 4 5 6 3 + Store 1236 1238 + 1239: 6(int) Load 8(invocation) + 1240: 1170(ptr) AccessChain 34(data) 68 1162 + 1241: 30(f16vec4) Load 1240 + 1242: 30(f16vec4) GroupNonUniformFMin 43 ClusteredReduce 1241 42 + 1243: 1170(ptr) AccessChain 34(data) 1239 1162 + Store 1243 1242 + 1244: 6(int) Load 8(invocation) + 1245: 1163(ptr) AccessChain 34(data) 37 1162 38 + 1246:29(float16_t) Load 1245 + 1247:29(float16_t) GroupNonUniformFMax 43 ClusteredReduce 1246 42 + 1248: 1163(ptr) AccessChain 34(data) 1244 1162 38 + Store 1248 1247 + 1249: 6(int) Load 8(invocation) + 1250: 1170(ptr) AccessChain 34(data) 47 1162 + 1251: 30(f16vec4) Load 1250 + 1252:1169(f16vec2) VectorShuffle 1251 1251 0 1 + 1253:1169(f16vec2) GroupNonUniformFMax 43 ClusteredReduce 1252 42 + 1254: 1170(ptr) AccessChain 34(data) 1249 1162 + 1255: 30(f16vec4) Load 1254 + 1256: 30(f16vec4) VectorShuffle 1255 1253 4 5 2 3 + Store 1254 1256 + 1257: 6(int) Load 8(invocation) + 1258: 1170(ptr) AccessChain 34(data) 58 1162 + 1259: 30(f16vec4) Load 1258 + 1260:1179(f16vec3) VectorShuffle 1259 1259 0 1 2 + 1261:1179(f16vec3) GroupNonUniformFMax 43 ClusteredReduce 1260 42 + 1262: 1170(ptr) AccessChain 34(data) 1257 1162 + 1263: 30(f16vec4) Load 1262 + 1264: 30(f16vec4) VectorShuffle 1263 1261 4 5 6 3 + Store 1262 1264 + 1265: 6(int) Load 8(invocation) + 1266: 1170(ptr) AccessChain 34(data) 68 1162 + 1267: 30(f16vec4) Load 1266 + 1268: 30(f16vec4) GroupNonUniformFMax 43 ClusteredReduce 1267 42 + 1269: 1170(ptr) AccessChain 34(data) 1265 1162 + Store 1269 1268 + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesClusteredNeg.comp.out b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesClusteredNeg.comp.out new file mode 100644 index 000000000..fd01ef392 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesClusteredNeg.comp.out @@ -0,0 +1,189 @@ +spv.subgroupExtendedTypesClusteredNeg.comp +ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:36: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:37: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:38: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:41: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:42: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:43: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:46: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:47: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:48: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:51: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:52: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:53: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:56: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:57: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:58: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:61: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:62: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:63: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:66: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:67: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:68: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:71: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:72: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:73: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:76: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:77: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:78: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:81: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:82: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:83: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:86: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:87: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:88: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:89: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:91: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:92: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:93: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:94: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:96: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:97: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:98: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:99: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:101: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:102: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:103: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:104: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:106: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:107: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:108: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:109: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:111: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:112: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:113: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:114: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:116: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:117: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:118: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:119: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:121: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:122: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:123: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:124: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:126: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:127: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:128: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:129: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:131: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:132: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:133: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:134: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:136: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:137: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:138: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:139: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:141: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:142: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:143: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:144: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:146: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:147: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:148: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:149: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:151: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:152: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:153: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:154: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:156: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:157: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:158: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:159: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:161: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:162: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:163: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:164: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:166: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:167: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:168: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:169: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:171: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:172: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:173: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:174: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:176: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:177: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:178: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:179: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:181: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:182: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:183: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:184: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:186: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:187: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:188: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:189: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:191: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:192: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:193: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:194: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:196: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:197: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:198: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:199: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:201: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:202: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:203: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:204: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:206: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:207: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:208: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:209: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:211: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:212: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:213: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:214: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:216: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:217: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:218: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:219: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:221: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:222: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:223: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:224: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:226: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:227: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:228: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:229: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:231: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:232: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:233: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:234: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:236: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:237: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:238: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:239: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:241: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:242: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:243: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:244: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:246: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:247: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:248: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:249: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:251: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:252: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:253: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:254: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 184 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out new file mode 100644 index 000000000..2f5a5703e --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out @@ -0,0 +1,1835 @@ +spv.subgroupExtendedTypesPartitioned.comp +// Module Version 10300 +// Generated by (magic number): 80007 +// Id's are bound by 1558 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + Capability GroupNonUniform + Capability StorageUniformBufferBlock16 + Capability StorageBuffer8BitAccess + Capability GroupNonUniformPartitionedNV + Extension "SPV_KHR_8bit_storage" + Extension "SPV_NV_shader_subgroup_partitioned" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 10 12 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_NV_shader_subgroup_partitioned" + Name 4 "main" + Name 8 "invocation" + Name 10 "gl_SubgroupInvocationID" + Name 12 "gl_SubgroupSize" + Name 19 "ballot" + Name 34 "Buffers" + MemberName 34(Buffers) 0 "i8" + MemberName 34(Buffers) 1 "u8" + MemberName 34(Buffers) 2 "i16" + MemberName 34(Buffers) 3 "u16" + MemberName 34(Buffers) 4 "i64" + MemberName 34(Buffers) 5 "u64" + MemberName 34(Buffers) 6 "f16" + Name 37 "data" + Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 11 RelaxedPrecision + Decorate 12(gl_SubgroupSize) RelaxedPrecision + Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 13 RelaxedPrecision + Decorate 14 RelaxedPrecision + Decorate 16 RelaxedPrecision + MemberDecorate 34(Buffers) 0 Offset 0 + MemberDecorate 34(Buffers) 1 Offset 4 + MemberDecorate 34(Buffers) 2 Offset 8 + MemberDecorate 34(Buffers) 3 Offset 16 + MemberDecorate 34(Buffers) 4 Offset 32 + MemberDecorate 34(Buffers) 5 Offset 64 + MemberDecorate 34(Buffers) 6 Offset 96 + Decorate 34(Buffers) Block + Decorate 37(data) DescriptorSet 0 + Decorate 37(data) Binding 0 + Decorate 1557 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypePointer Input 6(int) +10(gl_SubgroupInvocationID): 9(ptr) Variable Input +12(gl_SubgroupSize): 9(ptr) Variable Input + 15: 6(int) Constant 4 + 17: TypeVector 6(int) 4 + 18: TypePointer Function 17(ivec4) + 20: TypeInt 8 1 + 21: TypeVector 20(int8_t) 4 + 22: TypeInt 8 0 + 23: TypeVector 22(int8_t) 4 + 24: TypeInt 16 1 + 25: TypeVector 24(int16_t) 4 + 26: TypeInt 16 0 + 27: TypeVector 26(int16_t) 4 + 28: TypeInt 64 1 + 29: TypeVector 28(int64_t) 4 + 30: TypeInt 64 0 + 31: TypeVector 30(int64_t) 4 + 32: TypeFloat 16 + 33: TypeVector 32(float16_t) 4 + 34(Buffers): TypeStruct 21(i8vec4) 23(i8vec4) 25(i16vec4) 27(i16vec4) 29(i64vec4) 31(i64vec4) 33(f16vec4) + 35: TypeArray 34(Buffers) 15 + 36: TypePointer StorageBuffer 35 + 37(data): 36(ptr) Variable StorageBuffer + 38: TypeInt 32 1 + 39: 38(int) Constant 0 + 40: 6(int) Constant 0 + 41: TypePointer StorageBuffer 20(int8_t) + 45: 38(int) Constant 1 + 46: TypeVector 20(int8_t) 2 + 47: TypePointer StorageBuffer 21(i8vec4) + 52: 38(int) Constant 2 + 53: TypeVector 20(int8_t) 3 + 58: 38(int) Constant 3 + 62: TypePointer StorageBuffer 22(int8_t) + 66: TypeVector 22(int8_t) 2 + 67: TypePointer StorageBuffer 23(i8vec4) + 72: TypeVector 22(int8_t) 3 + 80: TypePointer StorageBuffer 24(int16_t) + 84: TypeVector 24(int16_t) 2 + 85: TypePointer StorageBuffer 25(i16vec4) + 90: TypeVector 24(int16_t) 3 + 98: TypePointer StorageBuffer 26(int16_t) + 102: TypeVector 26(int16_t) 2 + 103: TypePointer StorageBuffer 27(i16vec4) + 108: TypeVector 26(int16_t) 3 + 116: 38(int) Constant 4 + 117: TypePointer StorageBuffer 28(int64_t) + 121: TypeVector 28(int64_t) 2 + 122: TypePointer StorageBuffer 29(i64vec4) + 127: TypeVector 28(int64_t) 3 + 135: 38(int) Constant 5 + 136: TypePointer StorageBuffer 30(int64_t) + 140: TypeVector 30(int64_t) 2 + 141: TypePointer StorageBuffer 31(i64vec4) + 146: TypeVector 30(int64_t) 3 + 154: 38(int) Constant 6 + 155: TypePointer StorageBuffer 32(float16_t) + 159: TypeVector 32(float16_t) 2 + 160: TypePointer StorageBuffer 33(f16vec4) + 165: TypeVector 32(float16_t) 3 + 177: 6(int) Constant 3 + 1554: TypeVector 6(int) 3 + 1555: 6(int) Constant 8 + 1556: 6(int) Constant 1 + 1557: 1554(ivec3) ConstantComposite 1555 1556 1556 + 4(main): 2 Function None 3 + 5: Label + 8(invocation): 7(ptr) Variable Function + 19(ballot): 18(ptr) Variable Function + 11: 6(int) Load 10(gl_SubgroupInvocationID) + 13: 6(int) Load 12(gl_SubgroupSize) + 14: 6(int) IAdd 11 13 + 16: 6(int) UMod 14 15 + Store 8(invocation) 16 + 42: 41(ptr) AccessChain 37(data) 39 39 40 + 43: 20(int8_t) Load 42 + 44: 17(ivec4) GroupNonUniformPartitionNV 43 + Store 19(ballot) 44 + 48: 47(ptr) AccessChain 37(data) 45 39 + 49: 21(i8vec4) Load 48 + 50: 46(i8vec2) VectorShuffle 49 49 0 1 + 51: 17(ivec4) GroupNonUniformPartitionNV 50 + Store 19(ballot) 51 + 54: 47(ptr) AccessChain 37(data) 52 39 + 55: 21(i8vec4) Load 54 + 56: 53(i8vec3) VectorShuffle 55 55 0 1 2 + 57: 17(ivec4) GroupNonUniformPartitionNV 56 + Store 19(ballot) 57 + 59: 47(ptr) AccessChain 37(data) 58 39 + 60: 21(i8vec4) Load 59 + 61: 17(ivec4) GroupNonUniformPartitionNV 60 + Store 19(ballot) 61 + 63: 62(ptr) AccessChain 37(data) 39 45 40 + 64: 22(int8_t) Load 63 + 65: 17(ivec4) GroupNonUniformPartitionNV 64 + Store 19(ballot) 65 + 68: 67(ptr) AccessChain 37(data) 45 45 + 69: 23(i8vec4) Load 68 + 70: 66(i8vec2) VectorShuffle 69 69 0 1 + 71: 17(ivec4) GroupNonUniformPartitionNV 70 + Store 19(ballot) 71 + 73: 67(ptr) AccessChain 37(data) 52 45 + 74: 23(i8vec4) Load 73 + 75: 72(i8vec3) VectorShuffle 74 74 0 1 2 + 76: 17(ivec4) GroupNonUniformPartitionNV 75 + Store 19(ballot) 76 + 77: 67(ptr) AccessChain 37(data) 58 45 + 78: 23(i8vec4) Load 77 + 79: 17(ivec4) GroupNonUniformPartitionNV 78 + Store 19(ballot) 79 + 81: 80(ptr) AccessChain 37(data) 39 52 40 + 82: 24(int16_t) Load 81 + 83: 17(ivec4) GroupNonUniformPartitionNV 82 + Store 19(ballot) 83 + 86: 85(ptr) AccessChain 37(data) 45 52 + 87: 25(i16vec4) Load 86 + 88: 84(i16vec2) VectorShuffle 87 87 0 1 + 89: 17(ivec4) GroupNonUniformPartitionNV 88 + Store 19(ballot) 89 + 91: 85(ptr) AccessChain 37(data) 52 52 + 92: 25(i16vec4) Load 91 + 93: 90(i16vec3) VectorShuffle 92 92 0 1 2 + 94: 17(ivec4) GroupNonUniformPartitionNV 93 + Store 19(ballot) 94 + 95: 85(ptr) AccessChain 37(data) 58 52 + 96: 25(i16vec4) Load 95 + 97: 17(ivec4) GroupNonUniformPartitionNV 96 + Store 19(ballot) 97 + 99: 98(ptr) AccessChain 37(data) 39 58 40 + 100: 26(int16_t) Load 99 + 101: 17(ivec4) GroupNonUniformPartitionNV 100 + Store 19(ballot) 101 + 104: 103(ptr) AccessChain 37(data) 45 58 + 105: 27(i16vec4) Load 104 + 106:102(i16vec2) VectorShuffle 105 105 0 1 + 107: 17(ivec4) GroupNonUniformPartitionNV 106 + Store 19(ballot) 107 + 109: 103(ptr) AccessChain 37(data) 52 58 + 110: 27(i16vec4) Load 109 + 111:108(i16vec3) VectorShuffle 110 110 0 1 2 + 112: 17(ivec4) GroupNonUniformPartitionNV 111 + Store 19(ballot) 112 + 113: 103(ptr) AccessChain 37(data) 58 58 + 114: 27(i16vec4) Load 113 + 115: 17(ivec4) GroupNonUniformPartitionNV 114 + Store 19(ballot) 115 + 118: 117(ptr) AccessChain 37(data) 39 116 40 + 119: 28(int64_t) Load 118 + 120: 17(ivec4) GroupNonUniformPartitionNV 119 + Store 19(ballot) 120 + 123: 122(ptr) AccessChain 37(data) 45 116 + 124: 29(i64vec4) Load 123 + 125:121(i64vec2) VectorShuffle 124 124 0 1 + 126: 17(ivec4) GroupNonUniformPartitionNV 125 + Store 19(ballot) 126 + 128: 122(ptr) AccessChain 37(data) 52 116 + 129: 29(i64vec4) Load 128 + 130:127(i64vec3) VectorShuffle 129 129 0 1 2 + 131: 17(ivec4) GroupNonUniformPartitionNV 130 + Store 19(ballot) 131 + 132: 122(ptr) AccessChain 37(data) 58 116 + 133: 29(i64vec4) Load 132 + 134: 17(ivec4) GroupNonUniformPartitionNV 133 + Store 19(ballot) 134 + 137: 136(ptr) AccessChain 37(data) 39 135 40 + 138: 30(int64_t) Load 137 + 139: 17(ivec4) GroupNonUniformPartitionNV 138 + Store 19(ballot) 139 + 142: 141(ptr) AccessChain 37(data) 45 135 + 143: 31(i64vec4) Load 142 + 144:140(i64vec2) VectorShuffle 143 143 0 1 + 145: 17(ivec4) GroupNonUniformPartitionNV 144 + Store 19(ballot) 145 + 147: 141(ptr) AccessChain 37(data) 52 135 + 148: 31(i64vec4) Load 147 + 149:146(i64vec3) VectorShuffle 148 148 0 1 2 + 150: 17(ivec4) GroupNonUniformPartitionNV 149 + Store 19(ballot) 150 + 151: 141(ptr) AccessChain 37(data) 58 135 + 152: 31(i64vec4) Load 151 + 153: 17(ivec4) GroupNonUniformPartitionNV 152 + Store 19(ballot) 153 + 156: 155(ptr) AccessChain 37(data) 39 154 40 + 157:32(float16_t) Load 156 + 158: 17(ivec4) GroupNonUniformPartitionNV 157 + Store 19(ballot) 158 + 161: 160(ptr) AccessChain 37(data) 45 154 + 162: 33(f16vec4) Load 161 + 163:159(f16vec2) VectorShuffle 162 162 0 1 + 164: 17(ivec4) GroupNonUniformPartitionNV 163 + Store 19(ballot) 164 + 166: 160(ptr) AccessChain 37(data) 52 154 + 167: 33(f16vec4) Load 166 + 168:165(f16vec3) VectorShuffle 167 167 0 1 2 + 169: 17(ivec4) GroupNonUniformPartitionNV 168 + Store 19(ballot) 169 + 170: 160(ptr) AccessChain 37(data) 58 154 + 171: 33(f16vec4) Load 170 + 172: 17(ivec4) GroupNonUniformPartitionNV 171 + Store 19(ballot) 172 + 173: 6(int) Load 8(invocation) + 174: 41(ptr) AccessChain 37(data) 39 39 40 + 175: 20(int8_t) Load 174 + 176: 17(ivec4) Load 19(ballot) + 178: 20(int8_t) GroupNonUniformIAdd 177 PartitionedReduceNV 175 176 + 179: 41(ptr) AccessChain 37(data) 173 39 40 + Store 179 178 + 180: 6(int) Load 8(invocation) + 181: 47(ptr) AccessChain 37(data) 45 39 + 182: 21(i8vec4) Load 181 + 183: 46(i8vec2) VectorShuffle 182 182 0 1 + 184: 17(ivec4) Load 19(ballot) + 185: 46(i8vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 183 184 + 186: 47(ptr) AccessChain 37(data) 180 39 + 187: 21(i8vec4) Load 186 + 188: 21(i8vec4) VectorShuffle 187 185 4 5 2 3 + Store 186 188 + 189: 6(int) Load 8(invocation) + 190: 47(ptr) AccessChain 37(data) 52 39 + 191: 21(i8vec4) Load 190 + 192: 53(i8vec3) VectorShuffle 191 191 0 1 2 + 193: 17(ivec4) Load 19(ballot) + 194: 53(i8vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 192 193 + 195: 47(ptr) AccessChain 37(data) 189 39 + 196: 21(i8vec4) Load 195 + 197: 21(i8vec4) VectorShuffle 196 194 4 5 6 3 + Store 195 197 + 198: 6(int) Load 8(invocation) + 199: 47(ptr) AccessChain 37(data) 58 39 + 200: 21(i8vec4) Load 199 + 201: 17(ivec4) Load 19(ballot) + 202: 21(i8vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 200 201 + 203: 47(ptr) AccessChain 37(data) 198 39 + Store 203 202 + 204: 6(int) Load 8(invocation) + 205: 41(ptr) AccessChain 37(data) 39 39 40 + 206: 20(int8_t) Load 205 + 207: 17(ivec4) Load 19(ballot) + 208: 20(int8_t) GroupNonUniformIMul 177 PartitionedReduceNV 206 207 + 209: 41(ptr) AccessChain 37(data) 204 39 40 + Store 209 208 + 210: 6(int) Load 8(invocation) + 211: 47(ptr) AccessChain 37(data) 45 39 + 212: 21(i8vec4) Load 211 + 213: 46(i8vec2) VectorShuffle 212 212 0 1 + 214: 17(ivec4) Load 19(ballot) + 215: 46(i8vec2) GroupNonUniformIMul 177 PartitionedReduceNV 213 214 + 216: 47(ptr) AccessChain 37(data) 210 39 + 217: 21(i8vec4) Load 216 + 218: 21(i8vec4) VectorShuffle 217 215 4 5 2 3 + Store 216 218 + 219: 6(int) Load 8(invocation) + 220: 47(ptr) AccessChain 37(data) 52 39 + 221: 21(i8vec4) Load 220 + 222: 53(i8vec3) VectorShuffle 221 221 0 1 2 + 223: 17(ivec4) Load 19(ballot) + 224: 53(i8vec3) GroupNonUniformIMul 177 PartitionedReduceNV 222 223 + 225: 47(ptr) AccessChain 37(data) 219 39 + 226: 21(i8vec4) Load 225 + 227: 21(i8vec4) VectorShuffle 226 224 4 5 6 3 + Store 225 227 + 228: 6(int) Load 8(invocation) + 229: 47(ptr) AccessChain 37(data) 58 39 + 230: 21(i8vec4) Load 229 + 231: 17(ivec4) Load 19(ballot) + 232: 21(i8vec4) GroupNonUniformIMul 177 PartitionedReduceNV 230 231 + 233: 47(ptr) AccessChain 37(data) 228 39 + Store 233 232 + 234: 6(int) Load 8(invocation) + 235: 41(ptr) AccessChain 37(data) 39 39 40 + 236: 20(int8_t) Load 235 + 237: 17(ivec4) Load 19(ballot) + 238: 20(int8_t) GroupNonUniformSMin 177 PartitionedReduceNV 236 237 + 239: 41(ptr) AccessChain 37(data) 234 39 40 + Store 239 238 + 240: 6(int) Load 8(invocation) + 241: 47(ptr) AccessChain 37(data) 45 39 + 242: 21(i8vec4) Load 241 + 243: 46(i8vec2) VectorShuffle 242 242 0 1 + 244: 17(ivec4) Load 19(ballot) + 245: 46(i8vec2) GroupNonUniformSMin 177 PartitionedReduceNV 243 244 + 246: 47(ptr) AccessChain 37(data) 240 39 + 247: 21(i8vec4) Load 246 + 248: 21(i8vec4) VectorShuffle 247 245 4 5 2 3 + Store 246 248 + 249: 6(int) Load 8(invocation) + 250: 47(ptr) AccessChain 37(data) 52 39 + 251: 21(i8vec4) Load 250 + 252: 53(i8vec3) VectorShuffle 251 251 0 1 2 + 253: 17(ivec4) Load 19(ballot) + 254: 53(i8vec3) GroupNonUniformSMin 177 PartitionedReduceNV 252 253 + 255: 47(ptr) AccessChain 37(data) 249 39 + 256: 21(i8vec4) Load 255 + 257: 21(i8vec4) VectorShuffle 256 254 4 5 6 3 + Store 255 257 + 258: 6(int) Load 8(invocation) + 259: 47(ptr) AccessChain 37(data) 58 39 + 260: 21(i8vec4) Load 259 + 261: 17(ivec4) Load 19(ballot) + 262: 21(i8vec4) GroupNonUniformSMin 177 PartitionedReduceNV 260 261 + 263: 47(ptr) AccessChain 37(data) 258 39 + Store 263 262 + 264: 6(int) Load 8(invocation) + 265: 41(ptr) AccessChain 37(data) 39 39 40 + 266: 20(int8_t) Load 265 + 267: 17(ivec4) Load 19(ballot) + 268: 20(int8_t) GroupNonUniformSMax 177 PartitionedReduceNV 266 267 + 269: 41(ptr) AccessChain 37(data) 264 39 40 + Store 269 268 + 270: 6(int) Load 8(invocation) + 271: 47(ptr) AccessChain 37(data) 45 39 + 272: 21(i8vec4) Load 271 + 273: 46(i8vec2) VectorShuffle 272 272 0 1 + 274: 17(ivec4) Load 19(ballot) + 275: 46(i8vec2) GroupNonUniformSMax 177 PartitionedReduceNV 273 274 + 276: 47(ptr) AccessChain 37(data) 270 39 + 277: 21(i8vec4) Load 276 + 278: 21(i8vec4) VectorShuffle 277 275 4 5 2 3 + Store 276 278 + 279: 6(int) Load 8(invocation) + 280: 47(ptr) AccessChain 37(data) 52 39 + 281: 21(i8vec4) Load 280 + 282: 53(i8vec3) VectorShuffle 281 281 0 1 2 + 283: 17(ivec4) Load 19(ballot) + 284: 53(i8vec3) GroupNonUniformSMax 177 PartitionedReduceNV 282 283 + 285: 47(ptr) AccessChain 37(data) 279 39 + 286: 21(i8vec4) Load 285 + 287: 21(i8vec4) VectorShuffle 286 284 4 5 6 3 + Store 285 287 + 288: 6(int) Load 8(invocation) + 289: 47(ptr) AccessChain 37(data) 58 39 + 290: 21(i8vec4) Load 289 + 291: 17(ivec4) Load 19(ballot) + 292: 21(i8vec4) GroupNonUniformSMax 177 PartitionedReduceNV 290 291 + 293: 47(ptr) AccessChain 37(data) 288 39 + Store 293 292 + 294: 6(int) Load 8(invocation) + 295: 41(ptr) AccessChain 37(data) 39 39 40 + 296: 20(int8_t) Load 295 + 297: 17(ivec4) Load 19(ballot) + 298: 20(int8_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 296 297 + 299: 41(ptr) AccessChain 37(data) 294 39 40 + Store 299 298 + 300: 6(int) Load 8(invocation) + 301: 47(ptr) AccessChain 37(data) 45 39 + 302: 21(i8vec4) Load 301 + 303: 46(i8vec2) VectorShuffle 302 302 0 1 + 304: 17(ivec4) Load 19(ballot) + 305: 46(i8vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 303 304 + 306: 47(ptr) AccessChain 37(data) 300 39 + 307: 21(i8vec4) Load 306 + 308: 21(i8vec4) VectorShuffle 307 305 4 5 2 3 + Store 306 308 + 309: 6(int) Load 8(invocation) + 310: 47(ptr) AccessChain 37(data) 52 39 + 311: 21(i8vec4) Load 310 + 312: 53(i8vec3) VectorShuffle 311 311 0 1 2 + 313: 17(ivec4) Load 19(ballot) + 314: 53(i8vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 312 313 + 315: 47(ptr) AccessChain 37(data) 309 39 + 316: 21(i8vec4) Load 315 + 317: 21(i8vec4) VectorShuffle 316 314 4 5 6 3 + Store 315 317 + 318: 6(int) Load 8(invocation) + 319: 47(ptr) AccessChain 37(data) 58 39 + 320: 21(i8vec4) Load 319 + 321: 17(ivec4) Load 19(ballot) + 322: 21(i8vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 320 321 + 323: 47(ptr) AccessChain 37(data) 318 39 + Store 323 322 + 324: 6(int) Load 8(invocation) + 325: 41(ptr) AccessChain 37(data) 39 39 40 + 326: 20(int8_t) Load 325 + 327: 17(ivec4) Load 19(ballot) + 328: 20(int8_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 326 327 + 329: 41(ptr) AccessChain 37(data) 324 39 40 + Store 329 328 + 330: 6(int) Load 8(invocation) + 331: 47(ptr) AccessChain 37(data) 45 39 + 332: 21(i8vec4) Load 331 + 333: 46(i8vec2) VectorShuffle 332 332 0 1 + 334: 17(ivec4) Load 19(ballot) + 335: 46(i8vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 333 334 + 336: 47(ptr) AccessChain 37(data) 330 39 + 337: 21(i8vec4) Load 336 + 338: 21(i8vec4) VectorShuffle 337 335 4 5 2 3 + Store 336 338 + 339: 6(int) Load 8(invocation) + 340: 47(ptr) AccessChain 37(data) 52 39 + 341: 21(i8vec4) Load 340 + 342: 53(i8vec3) VectorShuffle 341 341 0 1 2 + 343: 17(ivec4) Load 19(ballot) + 344: 53(i8vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 342 343 + 345: 47(ptr) AccessChain 37(data) 339 39 + 346: 21(i8vec4) Load 345 + 347: 21(i8vec4) VectorShuffle 346 344 4 5 6 3 + Store 345 347 + 348: 6(int) Load 8(invocation) + 349: 47(ptr) AccessChain 37(data) 58 39 + 350: 21(i8vec4) Load 349 + 351: 17(ivec4) Load 19(ballot) + 352: 21(i8vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 350 351 + 353: 47(ptr) AccessChain 37(data) 348 39 + Store 353 352 + 354: 6(int) Load 8(invocation) + 355: 41(ptr) AccessChain 37(data) 39 39 40 + 356: 20(int8_t) Load 355 + 357: 17(ivec4) Load 19(ballot) + 358: 20(int8_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 356 357 + 359: 41(ptr) AccessChain 37(data) 354 39 40 + Store 359 358 + 360: 6(int) Load 8(invocation) + 361: 47(ptr) AccessChain 37(data) 45 39 + 362: 21(i8vec4) Load 361 + 363: 46(i8vec2) VectorShuffle 362 362 0 1 + 364: 17(ivec4) Load 19(ballot) + 365: 46(i8vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 363 364 + 366: 47(ptr) AccessChain 37(data) 360 39 + 367: 21(i8vec4) Load 366 + 368: 21(i8vec4) VectorShuffle 367 365 4 5 2 3 + Store 366 368 + 369: 6(int) Load 8(invocation) + 370: 47(ptr) AccessChain 37(data) 52 39 + 371: 21(i8vec4) Load 370 + 372: 53(i8vec3) VectorShuffle 371 371 0 1 2 + 373: 17(ivec4) Load 19(ballot) + 374: 53(i8vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 372 373 + 375: 47(ptr) AccessChain 37(data) 369 39 + 376: 21(i8vec4) Load 375 + 377: 21(i8vec4) VectorShuffle 376 374 4 5 6 3 + Store 375 377 + 378: 6(int) Load 8(invocation) + 379: 47(ptr) AccessChain 37(data) 58 39 + 380: 21(i8vec4) Load 379 + 381: 17(ivec4) Load 19(ballot) + 382: 21(i8vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 380 381 + 383: 47(ptr) AccessChain 37(data) 378 39 + Store 383 382 + 384: 6(int) Load 8(invocation) + 385: 62(ptr) AccessChain 37(data) 39 45 40 + 386: 22(int8_t) Load 385 + 387: 17(ivec4) Load 19(ballot) + 388: 22(int8_t) GroupNonUniformIAdd 177 PartitionedReduceNV 386 387 + 389: 62(ptr) AccessChain 37(data) 384 45 40 + Store 389 388 + 390: 6(int) Load 8(invocation) + 391: 67(ptr) AccessChain 37(data) 45 45 + 392: 23(i8vec4) Load 391 + 393: 66(i8vec2) VectorShuffle 392 392 0 1 + 394: 17(ivec4) Load 19(ballot) + 395: 66(i8vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 393 394 + 396: 67(ptr) AccessChain 37(data) 390 45 + 397: 23(i8vec4) Load 396 + 398: 23(i8vec4) VectorShuffle 397 395 4 5 2 3 + Store 396 398 + 399: 6(int) Load 8(invocation) + 400: 67(ptr) AccessChain 37(data) 52 45 + 401: 23(i8vec4) Load 400 + 402: 72(i8vec3) VectorShuffle 401 401 0 1 2 + 403: 17(ivec4) Load 19(ballot) + 404: 72(i8vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 402 403 + 405: 67(ptr) AccessChain 37(data) 399 45 + 406: 23(i8vec4) Load 405 + 407: 23(i8vec4) VectorShuffle 406 404 4 5 6 3 + Store 405 407 + 408: 6(int) Load 8(invocation) + 409: 67(ptr) AccessChain 37(data) 58 45 + 410: 23(i8vec4) Load 409 + 411: 17(ivec4) Load 19(ballot) + 412: 23(i8vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 410 411 + 413: 67(ptr) AccessChain 37(data) 408 45 + Store 413 412 + 414: 6(int) Load 8(invocation) + 415: 62(ptr) AccessChain 37(data) 39 45 40 + 416: 22(int8_t) Load 415 + 417: 17(ivec4) Load 19(ballot) + 418: 22(int8_t) GroupNonUniformIMul 177 PartitionedReduceNV 416 417 + 419: 62(ptr) AccessChain 37(data) 414 45 40 + Store 419 418 + 420: 6(int) Load 8(invocation) + 421: 67(ptr) AccessChain 37(data) 45 45 + 422: 23(i8vec4) Load 421 + 423: 66(i8vec2) VectorShuffle 422 422 0 1 + 424: 17(ivec4) Load 19(ballot) + 425: 66(i8vec2) GroupNonUniformIMul 177 PartitionedReduceNV 423 424 + 426: 67(ptr) AccessChain 37(data) 420 45 + 427: 23(i8vec4) Load 426 + 428: 23(i8vec4) VectorShuffle 427 425 4 5 2 3 + Store 426 428 + 429: 6(int) Load 8(invocation) + 430: 67(ptr) AccessChain 37(data) 52 45 + 431: 23(i8vec4) Load 430 + 432: 72(i8vec3) VectorShuffle 431 431 0 1 2 + 433: 17(ivec4) Load 19(ballot) + 434: 72(i8vec3) GroupNonUniformIMul 177 PartitionedReduceNV 432 433 + 435: 67(ptr) AccessChain 37(data) 429 45 + 436: 23(i8vec4) Load 435 + 437: 23(i8vec4) VectorShuffle 436 434 4 5 6 3 + Store 435 437 + 438: 6(int) Load 8(invocation) + 439: 67(ptr) AccessChain 37(data) 58 45 + 440: 23(i8vec4) Load 439 + 441: 17(ivec4) Load 19(ballot) + 442: 23(i8vec4) GroupNonUniformIMul 177 PartitionedReduceNV 440 441 + 443: 67(ptr) AccessChain 37(data) 438 45 + Store 443 442 + 444: 6(int) Load 8(invocation) + 445: 62(ptr) AccessChain 37(data) 39 45 40 + 446: 22(int8_t) Load 445 + 447: 17(ivec4) Load 19(ballot) + 448: 22(int8_t) GroupNonUniformUMin 177 PartitionedReduceNV 446 447 + 449: 62(ptr) AccessChain 37(data) 444 45 40 + Store 449 448 + 450: 6(int) Load 8(invocation) + 451: 67(ptr) AccessChain 37(data) 45 45 + 452: 23(i8vec4) Load 451 + 453: 66(i8vec2) VectorShuffle 452 452 0 1 + 454: 17(ivec4) Load 19(ballot) + 455: 66(i8vec2) GroupNonUniformUMin 177 PartitionedReduceNV 453 454 + 456: 67(ptr) AccessChain 37(data) 450 45 + 457: 23(i8vec4) Load 456 + 458: 23(i8vec4) VectorShuffle 457 455 4 5 2 3 + Store 456 458 + 459: 6(int) Load 8(invocation) + 460: 67(ptr) AccessChain 37(data) 52 45 + 461: 23(i8vec4) Load 460 + 462: 72(i8vec3) VectorShuffle 461 461 0 1 2 + 463: 17(ivec4) Load 19(ballot) + 464: 72(i8vec3) GroupNonUniformUMin 177 PartitionedReduceNV 462 463 + 465: 67(ptr) AccessChain 37(data) 459 45 + 466: 23(i8vec4) Load 465 + 467: 23(i8vec4) VectorShuffle 466 464 4 5 6 3 + Store 465 467 + 468: 6(int) Load 8(invocation) + 469: 67(ptr) AccessChain 37(data) 58 45 + 470: 23(i8vec4) Load 469 + 471: 17(ivec4) Load 19(ballot) + 472: 23(i8vec4) GroupNonUniformUMin 177 PartitionedReduceNV 470 471 + 473: 67(ptr) AccessChain 37(data) 468 45 + Store 473 472 + 474: 6(int) Load 8(invocation) + 475: 62(ptr) AccessChain 37(data) 39 45 40 + 476: 22(int8_t) Load 475 + 477: 17(ivec4) Load 19(ballot) + 478: 22(int8_t) GroupNonUniformUMax 177 PartitionedReduceNV 476 477 + 479: 62(ptr) AccessChain 37(data) 474 45 40 + Store 479 478 + 480: 6(int) Load 8(invocation) + 481: 67(ptr) AccessChain 37(data) 45 45 + 482: 23(i8vec4) Load 481 + 483: 66(i8vec2) VectorShuffle 482 482 0 1 + 484: 17(ivec4) Load 19(ballot) + 485: 66(i8vec2) GroupNonUniformUMax 177 PartitionedReduceNV 483 484 + 486: 67(ptr) AccessChain 37(data) 480 45 + 487: 23(i8vec4) Load 486 + 488: 23(i8vec4) VectorShuffle 487 485 4 5 2 3 + Store 486 488 + 489: 6(int) Load 8(invocation) + 490: 67(ptr) AccessChain 37(data) 52 45 + 491: 23(i8vec4) Load 490 + 492: 72(i8vec3) VectorShuffle 491 491 0 1 2 + 493: 17(ivec4) Load 19(ballot) + 494: 72(i8vec3) GroupNonUniformUMax 177 PartitionedReduceNV 492 493 + 495: 67(ptr) AccessChain 37(data) 489 45 + 496: 23(i8vec4) Load 495 + 497: 23(i8vec4) VectorShuffle 496 494 4 5 6 3 + Store 495 497 + 498: 6(int) Load 8(invocation) + 499: 67(ptr) AccessChain 37(data) 58 45 + 500: 23(i8vec4) Load 499 + 501: 17(ivec4) Load 19(ballot) + 502: 23(i8vec4) GroupNonUniformUMax 177 PartitionedReduceNV 500 501 + 503: 67(ptr) AccessChain 37(data) 498 45 + Store 503 502 + 504: 6(int) Load 8(invocation) + 505: 62(ptr) AccessChain 37(data) 39 45 40 + 506: 22(int8_t) Load 505 + 507: 17(ivec4) Load 19(ballot) + 508: 22(int8_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 506 507 + 509: 62(ptr) AccessChain 37(data) 504 45 40 + Store 509 508 + 510: 6(int) Load 8(invocation) + 511: 67(ptr) AccessChain 37(data) 45 45 + 512: 23(i8vec4) Load 511 + 513: 66(i8vec2) VectorShuffle 512 512 0 1 + 514: 17(ivec4) Load 19(ballot) + 515: 66(i8vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 513 514 + 516: 67(ptr) AccessChain 37(data) 510 45 + 517: 23(i8vec4) Load 516 + 518: 23(i8vec4) VectorShuffle 517 515 4 5 2 3 + Store 516 518 + 519: 6(int) Load 8(invocation) + 520: 67(ptr) AccessChain 37(data) 52 45 + 521: 23(i8vec4) Load 520 + 522: 72(i8vec3) VectorShuffle 521 521 0 1 2 + 523: 17(ivec4) Load 19(ballot) + 524: 72(i8vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 522 523 + 525: 67(ptr) AccessChain 37(data) 519 45 + 526: 23(i8vec4) Load 525 + 527: 23(i8vec4) VectorShuffle 526 524 4 5 6 3 + Store 525 527 + 528: 6(int) Load 8(invocation) + 529: 67(ptr) AccessChain 37(data) 58 45 + 530: 23(i8vec4) Load 529 + 531: 17(ivec4) Load 19(ballot) + 532: 23(i8vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 530 531 + 533: 67(ptr) AccessChain 37(data) 528 45 + Store 533 532 + 534: 6(int) Load 8(invocation) + 535: 62(ptr) AccessChain 37(data) 39 45 40 + 536: 22(int8_t) Load 535 + 537: 17(ivec4) Load 19(ballot) + 538: 22(int8_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 536 537 + 539: 62(ptr) AccessChain 37(data) 534 45 40 + Store 539 538 + 540: 6(int) Load 8(invocation) + 541: 67(ptr) AccessChain 37(data) 45 45 + 542: 23(i8vec4) Load 541 + 543: 66(i8vec2) VectorShuffle 542 542 0 1 + 544: 17(ivec4) Load 19(ballot) + 545: 66(i8vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 543 544 + 546: 67(ptr) AccessChain 37(data) 540 45 + 547: 23(i8vec4) Load 546 + 548: 23(i8vec4) VectorShuffle 547 545 4 5 2 3 + Store 546 548 + 549: 6(int) Load 8(invocation) + 550: 67(ptr) AccessChain 37(data) 52 45 + 551: 23(i8vec4) Load 550 + 552: 72(i8vec3) VectorShuffle 551 551 0 1 2 + 553: 17(ivec4) Load 19(ballot) + 554: 72(i8vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 552 553 + 555: 67(ptr) AccessChain 37(data) 549 45 + 556: 23(i8vec4) Load 555 + 557: 23(i8vec4) VectorShuffle 556 554 4 5 6 3 + Store 555 557 + 558: 6(int) Load 8(invocation) + 559: 67(ptr) AccessChain 37(data) 58 45 + 560: 23(i8vec4) Load 559 + 561: 17(ivec4) Load 19(ballot) + 562: 23(i8vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 560 561 + 563: 67(ptr) AccessChain 37(data) 558 45 + Store 563 562 + 564: 6(int) Load 8(invocation) + 565: 62(ptr) AccessChain 37(data) 39 45 40 + 566: 22(int8_t) Load 565 + 567: 17(ivec4) Load 19(ballot) + 568: 22(int8_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 566 567 + 569: 62(ptr) AccessChain 37(data) 564 45 40 + Store 569 568 + 570: 6(int) Load 8(invocation) + 571: 67(ptr) AccessChain 37(data) 45 45 + 572: 23(i8vec4) Load 571 + 573: 66(i8vec2) VectorShuffle 572 572 0 1 + 574: 17(ivec4) Load 19(ballot) + 575: 66(i8vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 573 574 + 576: 67(ptr) AccessChain 37(data) 570 45 + 577: 23(i8vec4) Load 576 + 578: 23(i8vec4) VectorShuffle 577 575 4 5 2 3 + Store 576 578 + 579: 6(int) Load 8(invocation) + 580: 67(ptr) AccessChain 37(data) 52 45 + 581: 23(i8vec4) Load 580 + 582: 72(i8vec3) VectorShuffle 581 581 0 1 2 + 583: 17(ivec4) Load 19(ballot) + 584: 72(i8vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 582 583 + 585: 67(ptr) AccessChain 37(data) 579 45 + 586: 23(i8vec4) Load 585 + 587: 23(i8vec4) VectorShuffle 586 584 4 5 6 3 + Store 585 587 + 588: 6(int) Load 8(invocation) + 589: 67(ptr) AccessChain 37(data) 58 45 + 590: 23(i8vec4) Load 589 + 591: 17(ivec4) Load 19(ballot) + 592: 23(i8vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 590 591 + 593: 67(ptr) AccessChain 37(data) 588 45 + Store 593 592 + 594: 6(int) Load 8(invocation) + 595: 80(ptr) AccessChain 37(data) 39 52 40 + 596: 24(int16_t) Load 595 + 597: 17(ivec4) Load 19(ballot) + 598: 24(int16_t) GroupNonUniformIAdd 177 PartitionedReduceNV 596 597 + 599: 80(ptr) AccessChain 37(data) 594 52 40 + Store 599 598 + 600: 6(int) Load 8(invocation) + 601: 85(ptr) AccessChain 37(data) 45 52 + 602: 25(i16vec4) Load 601 + 603: 84(i16vec2) VectorShuffle 602 602 0 1 + 604: 17(ivec4) Load 19(ballot) + 605: 84(i16vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 603 604 + 606: 85(ptr) AccessChain 37(data) 600 52 + 607: 25(i16vec4) Load 606 + 608: 25(i16vec4) VectorShuffle 607 605 4 5 2 3 + Store 606 608 + 609: 6(int) Load 8(invocation) + 610: 85(ptr) AccessChain 37(data) 52 52 + 611: 25(i16vec4) Load 610 + 612: 90(i16vec3) VectorShuffle 611 611 0 1 2 + 613: 17(ivec4) Load 19(ballot) + 614: 90(i16vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 612 613 + 615: 85(ptr) AccessChain 37(data) 609 52 + 616: 25(i16vec4) Load 615 + 617: 25(i16vec4) VectorShuffle 616 614 4 5 6 3 + Store 615 617 + 618: 6(int) Load 8(invocation) + 619: 85(ptr) AccessChain 37(data) 58 52 + 620: 25(i16vec4) Load 619 + 621: 17(ivec4) Load 19(ballot) + 622: 25(i16vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 620 621 + 623: 85(ptr) AccessChain 37(data) 618 52 + Store 623 622 + 624: 6(int) Load 8(invocation) + 625: 80(ptr) AccessChain 37(data) 39 52 40 + 626: 24(int16_t) Load 625 + 627: 17(ivec4) Load 19(ballot) + 628: 24(int16_t) GroupNonUniformIMul 177 PartitionedReduceNV 626 627 + 629: 80(ptr) AccessChain 37(data) 624 52 40 + Store 629 628 + 630: 6(int) Load 8(invocation) + 631: 85(ptr) AccessChain 37(data) 45 52 + 632: 25(i16vec4) Load 631 + 633: 84(i16vec2) VectorShuffle 632 632 0 1 + 634: 17(ivec4) Load 19(ballot) + 635: 84(i16vec2) GroupNonUniformIMul 177 PartitionedReduceNV 633 634 + 636: 85(ptr) AccessChain 37(data) 630 52 + 637: 25(i16vec4) Load 636 + 638: 25(i16vec4) VectorShuffle 637 635 4 5 2 3 + Store 636 638 + 639: 6(int) Load 8(invocation) + 640: 85(ptr) AccessChain 37(data) 52 52 + 641: 25(i16vec4) Load 640 + 642: 90(i16vec3) VectorShuffle 641 641 0 1 2 + 643: 17(ivec4) Load 19(ballot) + 644: 90(i16vec3) GroupNonUniformIMul 177 PartitionedReduceNV 642 643 + 645: 85(ptr) AccessChain 37(data) 639 52 + 646: 25(i16vec4) Load 645 + 647: 25(i16vec4) VectorShuffle 646 644 4 5 6 3 + Store 645 647 + 648: 6(int) Load 8(invocation) + 649: 85(ptr) AccessChain 37(data) 58 52 + 650: 25(i16vec4) Load 649 + 651: 17(ivec4) Load 19(ballot) + 652: 25(i16vec4) GroupNonUniformIMul 177 PartitionedReduceNV 650 651 + 653: 85(ptr) AccessChain 37(data) 648 52 + Store 653 652 + 654: 6(int) Load 8(invocation) + 655: 80(ptr) AccessChain 37(data) 39 52 40 + 656: 24(int16_t) Load 655 + 657: 17(ivec4) Load 19(ballot) + 658: 24(int16_t) GroupNonUniformSMin 177 PartitionedReduceNV 656 657 + 659: 80(ptr) AccessChain 37(data) 654 52 40 + Store 659 658 + 660: 6(int) Load 8(invocation) + 661: 85(ptr) AccessChain 37(data) 45 52 + 662: 25(i16vec4) Load 661 + 663: 84(i16vec2) VectorShuffle 662 662 0 1 + 664: 17(ivec4) Load 19(ballot) + 665: 84(i16vec2) GroupNonUniformSMin 177 PartitionedReduceNV 663 664 + 666: 85(ptr) AccessChain 37(data) 660 52 + 667: 25(i16vec4) Load 666 + 668: 25(i16vec4) VectorShuffle 667 665 4 5 2 3 + Store 666 668 + 669: 6(int) Load 8(invocation) + 670: 85(ptr) AccessChain 37(data) 52 52 + 671: 25(i16vec4) Load 670 + 672: 90(i16vec3) VectorShuffle 671 671 0 1 2 + 673: 17(ivec4) Load 19(ballot) + 674: 90(i16vec3) GroupNonUniformSMin 177 PartitionedReduceNV 672 673 + 675: 85(ptr) AccessChain 37(data) 669 52 + 676: 25(i16vec4) Load 675 + 677: 25(i16vec4) VectorShuffle 676 674 4 5 6 3 + Store 675 677 + 678: 6(int) Load 8(invocation) + 679: 85(ptr) AccessChain 37(data) 58 52 + 680: 25(i16vec4) Load 679 + 681: 17(ivec4) Load 19(ballot) + 682: 25(i16vec4) GroupNonUniformSMin 177 PartitionedReduceNV 680 681 + 683: 85(ptr) AccessChain 37(data) 678 52 + Store 683 682 + 684: 6(int) Load 8(invocation) + 685: 80(ptr) AccessChain 37(data) 39 52 40 + 686: 24(int16_t) Load 685 + 687: 17(ivec4) Load 19(ballot) + 688: 24(int16_t) GroupNonUniformSMax 177 PartitionedReduceNV 686 687 + 689: 80(ptr) AccessChain 37(data) 684 52 40 + Store 689 688 + 690: 6(int) Load 8(invocation) + 691: 85(ptr) AccessChain 37(data) 45 52 + 692: 25(i16vec4) Load 691 + 693: 84(i16vec2) VectorShuffle 692 692 0 1 + 694: 17(ivec4) Load 19(ballot) + 695: 84(i16vec2) GroupNonUniformSMax 177 PartitionedReduceNV 693 694 + 696: 85(ptr) AccessChain 37(data) 690 52 + 697: 25(i16vec4) Load 696 + 698: 25(i16vec4) VectorShuffle 697 695 4 5 2 3 + Store 696 698 + 699: 6(int) Load 8(invocation) + 700: 85(ptr) AccessChain 37(data) 52 52 + 701: 25(i16vec4) Load 700 + 702: 90(i16vec3) VectorShuffle 701 701 0 1 2 + 703: 17(ivec4) Load 19(ballot) + 704: 90(i16vec3) GroupNonUniformSMax 177 PartitionedReduceNV 702 703 + 705: 85(ptr) AccessChain 37(data) 699 52 + 706: 25(i16vec4) Load 705 + 707: 25(i16vec4) VectorShuffle 706 704 4 5 6 3 + Store 705 707 + 708: 6(int) Load 8(invocation) + 709: 85(ptr) AccessChain 37(data) 58 52 + 710: 25(i16vec4) Load 709 + 711: 17(ivec4) Load 19(ballot) + 712: 25(i16vec4) GroupNonUniformSMax 177 PartitionedReduceNV 710 711 + 713: 85(ptr) AccessChain 37(data) 708 52 + Store 713 712 + 714: 6(int) Load 8(invocation) + 715: 80(ptr) AccessChain 37(data) 39 52 40 + 716: 24(int16_t) Load 715 + 717: 17(ivec4) Load 19(ballot) + 718: 24(int16_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 716 717 + 719: 80(ptr) AccessChain 37(data) 714 52 40 + Store 719 718 + 720: 6(int) Load 8(invocation) + 721: 85(ptr) AccessChain 37(data) 45 52 + 722: 25(i16vec4) Load 721 + 723: 84(i16vec2) VectorShuffle 722 722 0 1 + 724: 17(ivec4) Load 19(ballot) + 725: 84(i16vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 723 724 + 726: 85(ptr) AccessChain 37(data) 720 52 + 727: 25(i16vec4) Load 726 + 728: 25(i16vec4) VectorShuffle 727 725 4 5 2 3 + Store 726 728 + 729: 6(int) Load 8(invocation) + 730: 85(ptr) AccessChain 37(data) 52 52 + 731: 25(i16vec4) Load 730 + 732: 90(i16vec3) VectorShuffle 731 731 0 1 2 + 733: 17(ivec4) Load 19(ballot) + 734: 90(i16vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 732 733 + 735: 85(ptr) AccessChain 37(data) 729 52 + 736: 25(i16vec4) Load 735 + 737: 25(i16vec4) VectorShuffle 736 734 4 5 6 3 + Store 735 737 + 738: 6(int) Load 8(invocation) + 739: 85(ptr) AccessChain 37(data) 58 52 + 740: 25(i16vec4) Load 739 + 741: 17(ivec4) Load 19(ballot) + 742: 25(i16vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 740 741 + 743: 85(ptr) AccessChain 37(data) 738 52 + Store 743 742 + 744: 6(int) Load 8(invocation) + 745: 80(ptr) AccessChain 37(data) 39 52 40 + 746: 24(int16_t) Load 745 + 747: 17(ivec4) Load 19(ballot) + 748: 24(int16_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 746 747 + 749: 80(ptr) AccessChain 37(data) 744 52 40 + Store 749 748 + 750: 6(int) Load 8(invocation) + 751: 85(ptr) AccessChain 37(data) 45 52 + 752: 25(i16vec4) Load 751 + 753: 84(i16vec2) VectorShuffle 752 752 0 1 + 754: 17(ivec4) Load 19(ballot) + 755: 84(i16vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 753 754 + 756: 85(ptr) AccessChain 37(data) 750 52 + 757: 25(i16vec4) Load 756 + 758: 25(i16vec4) VectorShuffle 757 755 4 5 2 3 + Store 756 758 + 759: 6(int) Load 8(invocation) + 760: 85(ptr) AccessChain 37(data) 52 52 + 761: 25(i16vec4) Load 760 + 762: 90(i16vec3) VectorShuffle 761 761 0 1 2 + 763: 17(ivec4) Load 19(ballot) + 764: 90(i16vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 762 763 + 765: 85(ptr) AccessChain 37(data) 759 52 + 766: 25(i16vec4) Load 765 + 767: 25(i16vec4) VectorShuffle 766 764 4 5 6 3 + Store 765 767 + 768: 6(int) Load 8(invocation) + 769: 85(ptr) AccessChain 37(data) 58 52 + 770: 25(i16vec4) Load 769 + 771: 17(ivec4) Load 19(ballot) + 772: 25(i16vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 770 771 + 773: 85(ptr) AccessChain 37(data) 768 52 + Store 773 772 + 774: 6(int) Load 8(invocation) + 775: 80(ptr) AccessChain 37(data) 39 52 40 + 776: 24(int16_t) Load 775 + 777: 17(ivec4) Load 19(ballot) + 778: 24(int16_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 776 777 + 779: 80(ptr) AccessChain 37(data) 774 52 40 + Store 779 778 + 780: 6(int) Load 8(invocation) + 781: 85(ptr) AccessChain 37(data) 45 52 + 782: 25(i16vec4) Load 781 + 783: 84(i16vec2) VectorShuffle 782 782 0 1 + 784: 17(ivec4) Load 19(ballot) + 785: 84(i16vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 783 784 + 786: 85(ptr) AccessChain 37(data) 780 52 + 787: 25(i16vec4) Load 786 + 788: 25(i16vec4) VectorShuffle 787 785 4 5 2 3 + Store 786 788 + 789: 6(int) Load 8(invocation) + 790: 85(ptr) AccessChain 37(data) 52 52 + 791: 25(i16vec4) Load 790 + 792: 90(i16vec3) VectorShuffle 791 791 0 1 2 + 793: 17(ivec4) Load 19(ballot) + 794: 90(i16vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 792 793 + 795: 85(ptr) AccessChain 37(data) 789 52 + 796: 25(i16vec4) Load 795 + 797: 25(i16vec4) VectorShuffle 796 794 4 5 6 3 + Store 795 797 + 798: 6(int) Load 8(invocation) + 799: 85(ptr) AccessChain 37(data) 58 52 + 800: 25(i16vec4) Load 799 + 801: 17(ivec4) Load 19(ballot) + 802: 25(i16vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 800 801 + 803: 85(ptr) AccessChain 37(data) 798 52 + Store 803 802 + 804: 6(int) Load 8(invocation) + 805: 98(ptr) AccessChain 37(data) 39 58 40 + 806: 26(int16_t) Load 805 + 807: 17(ivec4) Load 19(ballot) + 808: 26(int16_t) GroupNonUniformIAdd 177 PartitionedReduceNV 806 807 + 809: 98(ptr) AccessChain 37(data) 804 58 40 + Store 809 808 + 810: 6(int) Load 8(invocation) + 811: 103(ptr) AccessChain 37(data) 45 58 + 812: 27(i16vec4) Load 811 + 813:102(i16vec2) VectorShuffle 812 812 0 1 + 814: 17(ivec4) Load 19(ballot) + 815:102(i16vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 813 814 + 816: 103(ptr) AccessChain 37(data) 810 58 + 817: 27(i16vec4) Load 816 + 818: 27(i16vec4) VectorShuffle 817 815 4 5 2 3 + Store 816 818 + 819: 6(int) Load 8(invocation) + 820: 103(ptr) AccessChain 37(data) 52 58 + 821: 27(i16vec4) Load 820 + 822:108(i16vec3) VectorShuffle 821 821 0 1 2 + 823: 17(ivec4) Load 19(ballot) + 824:108(i16vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 822 823 + 825: 103(ptr) AccessChain 37(data) 819 58 + 826: 27(i16vec4) Load 825 + 827: 27(i16vec4) VectorShuffle 826 824 4 5 6 3 + Store 825 827 + 828: 6(int) Load 8(invocation) + 829: 103(ptr) AccessChain 37(data) 58 58 + 830: 27(i16vec4) Load 829 + 831: 17(ivec4) Load 19(ballot) + 832: 27(i16vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 830 831 + 833: 103(ptr) AccessChain 37(data) 828 58 + Store 833 832 + 834: 6(int) Load 8(invocation) + 835: 98(ptr) AccessChain 37(data) 39 58 40 + 836: 26(int16_t) Load 835 + 837: 17(ivec4) Load 19(ballot) + 838: 26(int16_t) GroupNonUniformIMul 177 PartitionedReduceNV 836 837 + 839: 98(ptr) AccessChain 37(data) 834 58 40 + Store 839 838 + 840: 6(int) Load 8(invocation) + 841: 103(ptr) AccessChain 37(data) 45 58 + 842: 27(i16vec4) Load 841 + 843:102(i16vec2) VectorShuffle 842 842 0 1 + 844: 17(ivec4) Load 19(ballot) + 845:102(i16vec2) GroupNonUniformIMul 177 PartitionedReduceNV 843 844 + 846: 103(ptr) AccessChain 37(data) 840 58 + 847: 27(i16vec4) Load 846 + 848: 27(i16vec4) VectorShuffle 847 845 4 5 2 3 + Store 846 848 + 849: 6(int) Load 8(invocation) + 850: 103(ptr) AccessChain 37(data) 52 58 + 851: 27(i16vec4) Load 850 + 852:108(i16vec3) VectorShuffle 851 851 0 1 2 + 853: 17(ivec4) Load 19(ballot) + 854:108(i16vec3) GroupNonUniformIMul 177 PartitionedReduceNV 852 853 + 855: 103(ptr) AccessChain 37(data) 849 58 + 856: 27(i16vec4) Load 855 + 857: 27(i16vec4) VectorShuffle 856 854 4 5 6 3 + Store 855 857 + 858: 6(int) Load 8(invocation) + 859: 103(ptr) AccessChain 37(data) 58 58 + 860: 27(i16vec4) Load 859 + 861: 17(ivec4) Load 19(ballot) + 862: 27(i16vec4) GroupNonUniformIMul 177 PartitionedReduceNV 860 861 + 863: 103(ptr) AccessChain 37(data) 858 58 + Store 863 862 + 864: 6(int) Load 8(invocation) + 865: 98(ptr) AccessChain 37(data) 39 58 40 + 866: 26(int16_t) Load 865 + 867: 17(ivec4) Load 19(ballot) + 868: 26(int16_t) GroupNonUniformUMin 177 PartitionedReduceNV 866 867 + 869: 98(ptr) AccessChain 37(data) 864 58 40 + Store 869 868 + 870: 6(int) Load 8(invocation) + 871: 103(ptr) AccessChain 37(data) 45 58 + 872: 27(i16vec4) Load 871 + 873:102(i16vec2) VectorShuffle 872 872 0 1 + 874: 17(ivec4) Load 19(ballot) + 875:102(i16vec2) GroupNonUniformUMin 177 PartitionedReduceNV 873 874 + 876: 103(ptr) AccessChain 37(data) 870 58 + 877: 27(i16vec4) Load 876 + 878: 27(i16vec4) VectorShuffle 877 875 4 5 2 3 + Store 876 878 + 879: 6(int) Load 8(invocation) + 880: 103(ptr) AccessChain 37(data) 52 58 + 881: 27(i16vec4) Load 880 + 882:108(i16vec3) VectorShuffle 881 881 0 1 2 + 883: 17(ivec4) Load 19(ballot) + 884:108(i16vec3) GroupNonUniformUMin 177 PartitionedReduceNV 882 883 + 885: 103(ptr) AccessChain 37(data) 879 58 + 886: 27(i16vec4) Load 885 + 887: 27(i16vec4) VectorShuffle 886 884 4 5 6 3 + Store 885 887 + 888: 6(int) Load 8(invocation) + 889: 103(ptr) AccessChain 37(data) 58 58 + 890: 27(i16vec4) Load 889 + 891: 17(ivec4) Load 19(ballot) + 892: 27(i16vec4) GroupNonUniformUMin 177 PartitionedReduceNV 890 891 + 893: 103(ptr) AccessChain 37(data) 888 58 + Store 893 892 + 894: 6(int) Load 8(invocation) + 895: 98(ptr) AccessChain 37(data) 39 58 40 + 896: 26(int16_t) Load 895 + 897: 17(ivec4) Load 19(ballot) + 898: 26(int16_t) GroupNonUniformUMax 177 PartitionedReduceNV 896 897 + 899: 98(ptr) AccessChain 37(data) 894 58 40 + Store 899 898 + 900: 6(int) Load 8(invocation) + 901: 103(ptr) AccessChain 37(data) 45 58 + 902: 27(i16vec4) Load 901 + 903:102(i16vec2) VectorShuffle 902 902 0 1 + 904: 17(ivec4) Load 19(ballot) + 905:102(i16vec2) GroupNonUniformUMax 177 PartitionedReduceNV 903 904 + 906: 103(ptr) AccessChain 37(data) 900 58 + 907: 27(i16vec4) Load 906 + 908: 27(i16vec4) VectorShuffle 907 905 4 5 2 3 + Store 906 908 + 909: 6(int) Load 8(invocation) + 910: 103(ptr) AccessChain 37(data) 52 58 + 911: 27(i16vec4) Load 910 + 912:108(i16vec3) VectorShuffle 911 911 0 1 2 + 913: 17(ivec4) Load 19(ballot) + 914:108(i16vec3) GroupNonUniformUMax 177 PartitionedReduceNV 912 913 + 915: 103(ptr) AccessChain 37(data) 909 58 + 916: 27(i16vec4) Load 915 + 917: 27(i16vec4) VectorShuffle 916 914 4 5 6 3 + Store 915 917 + 918: 6(int) Load 8(invocation) + 919: 103(ptr) AccessChain 37(data) 58 58 + 920: 27(i16vec4) Load 919 + 921: 17(ivec4) Load 19(ballot) + 922: 27(i16vec4) GroupNonUniformUMax 177 PartitionedReduceNV 920 921 + 923: 103(ptr) AccessChain 37(data) 918 58 + Store 923 922 + 924: 6(int) Load 8(invocation) + 925: 98(ptr) AccessChain 37(data) 39 58 40 + 926: 26(int16_t) Load 925 + 927: 17(ivec4) Load 19(ballot) + 928: 26(int16_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 926 927 + 929: 98(ptr) AccessChain 37(data) 924 58 40 + Store 929 928 + 930: 6(int) Load 8(invocation) + 931: 103(ptr) AccessChain 37(data) 45 58 + 932: 27(i16vec4) Load 931 + 933:102(i16vec2) VectorShuffle 932 932 0 1 + 934: 17(ivec4) Load 19(ballot) + 935:102(i16vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 933 934 + 936: 103(ptr) AccessChain 37(data) 930 58 + 937: 27(i16vec4) Load 936 + 938: 27(i16vec4) VectorShuffle 937 935 4 5 2 3 + Store 936 938 + 939: 6(int) Load 8(invocation) + 940: 103(ptr) AccessChain 37(data) 52 58 + 941: 27(i16vec4) Load 940 + 942:108(i16vec3) VectorShuffle 941 941 0 1 2 + 943: 17(ivec4) Load 19(ballot) + 944:108(i16vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 942 943 + 945: 103(ptr) AccessChain 37(data) 939 58 + 946: 27(i16vec4) Load 945 + 947: 27(i16vec4) VectorShuffle 946 944 4 5 6 3 + Store 945 947 + 948: 6(int) Load 8(invocation) + 949: 103(ptr) AccessChain 37(data) 58 58 + 950: 27(i16vec4) Load 949 + 951: 17(ivec4) Load 19(ballot) + 952: 27(i16vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 950 951 + 953: 103(ptr) AccessChain 37(data) 948 58 + Store 953 952 + 954: 6(int) Load 8(invocation) + 955: 98(ptr) AccessChain 37(data) 39 58 40 + 956: 26(int16_t) Load 955 + 957: 17(ivec4) Load 19(ballot) + 958: 26(int16_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 956 957 + 959: 98(ptr) AccessChain 37(data) 954 58 40 + Store 959 958 + 960: 6(int) Load 8(invocation) + 961: 103(ptr) AccessChain 37(data) 45 58 + 962: 27(i16vec4) Load 961 + 963:102(i16vec2) VectorShuffle 962 962 0 1 + 964: 17(ivec4) Load 19(ballot) + 965:102(i16vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 963 964 + 966: 103(ptr) AccessChain 37(data) 960 58 + 967: 27(i16vec4) Load 966 + 968: 27(i16vec4) VectorShuffle 967 965 4 5 2 3 + Store 966 968 + 969: 6(int) Load 8(invocation) + 970: 103(ptr) AccessChain 37(data) 52 58 + 971: 27(i16vec4) Load 970 + 972:108(i16vec3) VectorShuffle 971 971 0 1 2 + 973: 17(ivec4) Load 19(ballot) + 974:108(i16vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 972 973 + 975: 103(ptr) AccessChain 37(data) 969 58 + 976: 27(i16vec4) Load 975 + 977: 27(i16vec4) VectorShuffle 976 974 4 5 6 3 + Store 975 977 + 978: 6(int) Load 8(invocation) + 979: 103(ptr) AccessChain 37(data) 58 58 + 980: 27(i16vec4) Load 979 + 981: 17(ivec4) Load 19(ballot) + 982: 27(i16vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 980 981 + 983: 103(ptr) AccessChain 37(data) 978 58 + Store 983 982 + 984: 6(int) Load 8(invocation) + 985: 98(ptr) AccessChain 37(data) 39 58 40 + 986: 26(int16_t) Load 985 + 987: 17(ivec4) Load 19(ballot) + 988: 26(int16_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 986 987 + 989: 98(ptr) AccessChain 37(data) 984 58 40 + Store 989 988 + 990: 6(int) Load 8(invocation) + 991: 103(ptr) AccessChain 37(data) 45 58 + 992: 27(i16vec4) Load 991 + 993:102(i16vec2) VectorShuffle 992 992 0 1 + 994: 17(ivec4) Load 19(ballot) + 995:102(i16vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 993 994 + 996: 103(ptr) AccessChain 37(data) 990 58 + 997: 27(i16vec4) Load 996 + 998: 27(i16vec4) VectorShuffle 997 995 4 5 2 3 + Store 996 998 + 999: 6(int) Load 8(invocation) + 1000: 103(ptr) AccessChain 37(data) 52 58 + 1001: 27(i16vec4) Load 1000 + 1002:108(i16vec3) VectorShuffle 1001 1001 0 1 2 + 1003: 17(ivec4) Load 19(ballot) + 1004:108(i16vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1002 1003 + 1005: 103(ptr) AccessChain 37(data) 999 58 + 1006: 27(i16vec4) Load 1005 + 1007: 27(i16vec4) VectorShuffle 1006 1004 4 5 6 3 + Store 1005 1007 + 1008: 6(int) Load 8(invocation) + 1009: 103(ptr) AccessChain 37(data) 58 58 + 1010: 27(i16vec4) Load 1009 + 1011: 17(ivec4) Load 19(ballot) + 1012: 27(i16vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1010 1011 + 1013: 103(ptr) AccessChain 37(data) 1008 58 + Store 1013 1012 + 1014: 6(int) Load 8(invocation) + 1015: 117(ptr) AccessChain 37(data) 39 116 40 + 1016: 28(int64_t) Load 1015 + 1017: 17(ivec4) Load 19(ballot) + 1018: 28(int64_t) GroupNonUniformIAdd 177 PartitionedReduceNV 1016 1017 + 1019: 117(ptr) AccessChain 37(data) 1014 116 40 + Store 1019 1018 + 1020: 6(int) Load 8(invocation) + 1021: 122(ptr) AccessChain 37(data) 45 116 + 1022: 29(i64vec4) Load 1021 + 1023:121(i64vec2) VectorShuffle 1022 1022 0 1 + 1024: 17(ivec4) Load 19(ballot) + 1025:121(i64vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 1023 1024 + 1026: 122(ptr) AccessChain 37(data) 1020 116 + 1027: 29(i64vec4) Load 1026 + 1028: 29(i64vec4) VectorShuffle 1027 1025 4 5 2 3 + Store 1026 1028 + 1029: 6(int) Load 8(invocation) + 1030: 122(ptr) AccessChain 37(data) 52 116 + 1031: 29(i64vec4) Load 1030 + 1032:127(i64vec3) VectorShuffle 1031 1031 0 1 2 + 1033: 17(ivec4) Load 19(ballot) + 1034:127(i64vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 1032 1033 + 1035: 122(ptr) AccessChain 37(data) 1029 116 + 1036: 29(i64vec4) Load 1035 + 1037: 29(i64vec4) VectorShuffle 1036 1034 4 5 6 3 + Store 1035 1037 + 1038: 6(int) Load 8(invocation) + 1039: 122(ptr) AccessChain 37(data) 58 116 + 1040: 29(i64vec4) Load 1039 + 1041: 17(ivec4) Load 19(ballot) + 1042: 29(i64vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 1040 1041 + 1043: 122(ptr) AccessChain 37(data) 1038 116 + Store 1043 1042 + 1044: 6(int) Load 8(invocation) + 1045: 117(ptr) AccessChain 37(data) 39 116 40 + 1046: 28(int64_t) Load 1045 + 1047: 17(ivec4) Load 19(ballot) + 1048: 28(int64_t) GroupNonUniformIMul 177 PartitionedReduceNV 1046 1047 + 1049: 117(ptr) AccessChain 37(data) 1044 116 40 + Store 1049 1048 + 1050: 6(int) Load 8(invocation) + 1051: 122(ptr) AccessChain 37(data) 45 116 + 1052: 29(i64vec4) Load 1051 + 1053:121(i64vec2) VectorShuffle 1052 1052 0 1 + 1054: 17(ivec4) Load 19(ballot) + 1055:121(i64vec2) GroupNonUniformIMul 177 PartitionedReduceNV 1053 1054 + 1056: 122(ptr) AccessChain 37(data) 1050 116 + 1057: 29(i64vec4) Load 1056 + 1058: 29(i64vec4) VectorShuffle 1057 1055 4 5 2 3 + Store 1056 1058 + 1059: 6(int) Load 8(invocation) + 1060: 122(ptr) AccessChain 37(data) 52 116 + 1061: 29(i64vec4) Load 1060 + 1062:127(i64vec3) VectorShuffle 1061 1061 0 1 2 + 1063: 17(ivec4) Load 19(ballot) + 1064:127(i64vec3) GroupNonUniformIMul 177 PartitionedReduceNV 1062 1063 + 1065: 122(ptr) AccessChain 37(data) 1059 116 + 1066: 29(i64vec4) Load 1065 + 1067: 29(i64vec4) VectorShuffle 1066 1064 4 5 6 3 + Store 1065 1067 + 1068: 6(int) Load 8(invocation) + 1069: 122(ptr) AccessChain 37(data) 58 116 + 1070: 29(i64vec4) Load 1069 + 1071: 17(ivec4) Load 19(ballot) + 1072: 29(i64vec4) GroupNonUniformIMul 177 PartitionedReduceNV 1070 1071 + 1073: 122(ptr) AccessChain 37(data) 1068 116 + Store 1073 1072 + 1074: 6(int) Load 8(invocation) + 1075: 117(ptr) AccessChain 37(data) 39 116 40 + 1076: 28(int64_t) Load 1075 + 1077: 17(ivec4) Load 19(ballot) + 1078: 28(int64_t) GroupNonUniformSMin 177 PartitionedReduceNV 1076 1077 + 1079: 117(ptr) AccessChain 37(data) 1074 116 40 + Store 1079 1078 + 1080: 6(int) Load 8(invocation) + 1081: 122(ptr) AccessChain 37(data) 45 116 + 1082: 29(i64vec4) Load 1081 + 1083:121(i64vec2) VectorShuffle 1082 1082 0 1 + 1084: 17(ivec4) Load 19(ballot) + 1085:121(i64vec2) GroupNonUniformSMin 177 PartitionedReduceNV 1083 1084 + 1086: 122(ptr) AccessChain 37(data) 1080 116 + 1087: 29(i64vec4) Load 1086 + 1088: 29(i64vec4) VectorShuffle 1087 1085 4 5 2 3 + Store 1086 1088 + 1089: 6(int) Load 8(invocation) + 1090: 122(ptr) AccessChain 37(data) 52 116 + 1091: 29(i64vec4) Load 1090 + 1092:127(i64vec3) VectorShuffle 1091 1091 0 1 2 + 1093: 17(ivec4) Load 19(ballot) + 1094:127(i64vec3) GroupNonUniformSMin 177 PartitionedReduceNV 1092 1093 + 1095: 122(ptr) AccessChain 37(data) 1089 116 + 1096: 29(i64vec4) Load 1095 + 1097: 29(i64vec4) VectorShuffle 1096 1094 4 5 6 3 + Store 1095 1097 + 1098: 6(int) Load 8(invocation) + 1099: 122(ptr) AccessChain 37(data) 58 116 + 1100: 29(i64vec4) Load 1099 + 1101: 17(ivec4) Load 19(ballot) + 1102: 29(i64vec4) GroupNonUniformSMin 177 PartitionedReduceNV 1100 1101 + 1103: 122(ptr) AccessChain 37(data) 1098 116 + Store 1103 1102 + 1104: 6(int) Load 8(invocation) + 1105: 117(ptr) AccessChain 37(data) 39 116 40 + 1106: 28(int64_t) Load 1105 + 1107: 17(ivec4) Load 19(ballot) + 1108: 28(int64_t) GroupNonUniformSMax 177 PartitionedReduceNV 1106 1107 + 1109: 117(ptr) AccessChain 37(data) 1104 116 40 + Store 1109 1108 + 1110: 6(int) Load 8(invocation) + 1111: 122(ptr) AccessChain 37(data) 45 116 + 1112: 29(i64vec4) Load 1111 + 1113:121(i64vec2) VectorShuffle 1112 1112 0 1 + 1114: 17(ivec4) Load 19(ballot) + 1115:121(i64vec2) GroupNonUniformSMax 177 PartitionedReduceNV 1113 1114 + 1116: 122(ptr) AccessChain 37(data) 1110 116 + 1117: 29(i64vec4) Load 1116 + 1118: 29(i64vec4) VectorShuffle 1117 1115 4 5 2 3 + Store 1116 1118 + 1119: 6(int) Load 8(invocation) + 1120: 122(ptr) AccessChain 37(data) 52 116 + 1121: 29(i64vec4) Load 1120 + 1122:127(i64vec3) VectorShuffle 1121 1121 0 1 2 + 1123: 17(ivec4) Load 19(ballot) + 1124:127(i64vec3) GroupNonUniformSMax 177 PartitionedReduceNV 1122 1123 + 1125: 122(ptr) AccessChain 37(data) 1119 116 + 1126: 29(i64vec4) Load 1125 + 1127: 29(i64vec4) VectorShuffle 1126 1124 4 5 6 3 + Store 1125 1127 + 1128: 6(int) Load 8(invocation) + 1129: 122(ptr) AccessChain 37(data) 58 116 + 1130: 29(i64vec4) Load 1129 + 1131: 17(ivec4) Load 19(ballot) + 1132: 29(i64vec4) GroupNonUniformSMax 177 PartitionedReduceNV 1130 1131 + 1133: 122(ptr) AccessChain 37(data) 1128 116 + Store 1133 1132 + 1134: 6(int) Load 8(invocation) + 1135: 117(ptr) AccessChain 37(data) 39 116 40 + 1136: 28(int64_t) Load 1135 + 1137: 17(ivec4) Load 19(ballot) + 1138: 28(int64_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1136 1137 + 1139: 117(ptr) AccessChain 37(data) 1134 116 40 + Store 1139 1138 + 1140: 6(int) Load 8(invocation) + 1141: 122(ptr) AccessChain 37(data) 45 116 + 1142: 29(i64vec4) Load 1141 + 1143:121(i64vec2) VectorShuffle 1142 1142 0 1 + 1144: 17(ivec4) Load 19(ballot) + 1145:121(i64vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1143 1144 + 1146: 122(ptr) AccessChain 37(data) 1140 116 + 1147: 29(i64vec4) Load 1146 + 1148: 29(i64vec4) VectorShuffle 1147 1145 4 5 2 3 + Store 1146 1148 + 1149: 6(int) Load 8(invocation) + 1150: 122(ptr) AccessChain 37(data) 52 116 + 1151: 29(i64vec4) Load 1150 + 1152:127(i64vec3) VectorShuffle 1151 1151 0 1 2 + 1153: 17(ivec4) Load 19(ballot) + 1154:127(i64vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1152 1153 + 1155: 122(ptr) AccessChain 37(data) 1149 116 + 1156: 29(i64vec4) Load 1155 + 1157: 29(i64vec4) VectorShuffle 1156 1154 4 5 6 3 + Store 1155 1157 + 1158: 6(int) Load 8(invocation) + 1159: 122(ptr) AccessChain 37(data) 58 116 + 1160: 29(i64vec4) Load 1159 + 1161: 17(ivec4) Load 19(ballot) + 1162: 29(i64vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1160 1161 + 1163: 122(ptr) AccessChain 37(data) 1158 116 + Store 1163 1162 + 1164: 6(int) Load 8(invocation) + 1165: 117(ptr) AccessChain 37(data) 39 116 40 + 1166: 28(int64_t) Load 1165 + 1167: 17(ivec4) Load 19(ballot) + 1168: 28(int64_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1166 1167 + 1169: 117(ptr) AccessChain 37(data) 1164 116 40 + Store 1169 1168 + 1170: 6(int) Load 8(invocation) + 1171: 122(ptr) AccessChain 37(data) 45 116 + 1172: 29(i64vec4) Load 1171 + 1173:121(i64vec2) VectorShuffle 1172 1172 0 1 + 1174: 17(ivec4) Load 19(ballot) + 1175:121(i64vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1173 1174 + 1176: 122(ptr) AccessChain 37(data) 1170 116 + 1177: 29(i64vec4) Load 1176 + 1178: 29(i64vec4) VectorShuffle 1177 1175 4 5 2 3 + Store 1176 1178 + 1179: 6(int) Load 8(invocation) + 1180: 122(ptr) AccessChain 37(data) 52 116 + 1181: 29(i64vec4) Load 1180 + 1182:127(i64vec3) VectorShuffle 1181 1181 0 1 2 + 1183: 17(ivec4) Load 19(ballot) + 1184:127(i64vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1182 1183 + 1185: 122(ptr) AccessChain 37(data) 1179 116 + 1186: 29(i64vec4) Load 1185 + 1187: 29(i64vec4) VectorShuffle 1186 1184 4 5 6 3 + Store 1185 1187 + 1188: 6(int) Load 8(invocation) + 1189: 122(ptr) AccessChain 37(data) 58 116 + 1190: 29(i64vec4) Load 1189 + 1191: 17(ivec4) Load 19(ballot) + 1192: 29(i64vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1190 1191 + 1193: 122(ptr) AccessChain 37(data) 1188 116 + Store 1193 1192 + 1194: 6(int) Load 8(invocation) + 1195: 117(ptr) AccessChain 37(data) 39 116 40 + 1196: 28(int64_t) Load 1195 + 1197: 17(ivec4) Load 19(ballot) + 1198: 28(int64_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1196 1197 + 1199: 117(ptr) AccessChain 37(data) 1194 116 40 + Store 1199 1198 + 1200: 6(int) Load 8(invocation) + 1201: 122(ptr) AccessChain 37(data) 45 116 + 1202: 29(i64vec4) Load 1201 + 1203:121(i64vec2) VectorShuffle 1202 1202 0 1 + 1204: 17(ivec4) Load 19(ballot) + 1205:121(i64vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1203 1204 + 1206: 122(ptr) AccessChain 37(data) 1200 116 + 1207: 29(i64vec4) Load 1206 + 1208: 29(i64vec4) VectorShuffle 1207 1205 4 5 2 3 + Store 1206 1208 + 1209: 6(int) Load 8(invocation) + 1210: 122(ptr) AccessChain 37(data) 52 116 + 1211: 29(i64vec4) Load 1210 + 1212:127(i64vec3) VectorShuffle 1211 1211 0 1 2 + 1213: 17(ivec4) Load 19(ballot) + 1214:127(i64vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1212 1213 + 1215: 122(ptr) AccessChain 37(data) 1209 116 + 1216: 29(i64vec4) Load 1215 + 1217: 29(i64vec4) VectorShuffle 1216 1214 4 5 6 3 + Store 1215 1217 + 1218: 6(int) Load 8(invocation) + 1219: 122(ptr) AccessChain 37(data) 58 116 + 1220: 29(i64vec4) Load 1219 + 1221: 17(ivec4) Load 19(ballot) + 1222: 29(i64vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1220 1221 + 1223: 122(ptr) AccessChain 37(data) 1218 116 + Store 1223 1222 + 1224: 6(int) Load 8(invocation) + 1225: 136(ptr) AccessChain 37(data) 39 135 40 + 1226: 30(int64_t) Load 1225 + 1227: 17(ivec4) Load 19(ballot) + 1228: 30(int64_t) GroupNonUniformIAdd 177 PartitionedReduceNV 1226 1227 + 1229: 136(ptr) AccessChain 37(data) 1224 135 40 + Store 1229 1228 + 1230: 6(int) Load 8(invocation) + 1231: 141(ptr) AccessChain 37(data) 45 135 + 1232: 31(i64vec4) Load 1231 + 1233:140(i64vec2) VectorShuffle 1232 1232 0 1 + 1234: 17(ivec4) Load 19(ballot) + 1235:140(i64vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 1233 1234 + 1236: 141(ptr) AccessChain 37(data) 1230 135 + 1237: 31(i64vec4) Load 1236 + 1238: 31(i64vec4) VectorShuffle 1237 1235 4 5 2 3 + Store 1236 1238 + 1239: 6(int) Load 8(invocation) + 1240: 141(ptr) AccessChain 37(data) 52 135 + 1241: 31(i64vec4) Load 1240 + 1242:146(i64vec3) VectorShuffle 1241 1241 0 1 2 + 1243: 17(ivec4) Load 19(ballot) + 1244:146(i64vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 1242 1243 + 1245: 141(ptr) AccessChain 37(data) 1239 135 + 1246: 31(i64vec4) Load 1245 + 1247: 31(i64vec4) VectorShuffle 1246 1244 4 5 6 3 + Store 1245 1247 + 1248: 6(int) Load 8(invocation) + 1249: 141(ptr) AccessChain 37(data) 58 135 + 1250: 31(i64vec4) Load 1249 + 1251: 17(ivec4) Load 19(ballot) + 1252: 31(i64vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 1250 1251 + 1253: 141(ptr) AccessChain 37(data) 1248 135 + Store 1253 1252 + 1254: 6(int) Load 8(invocation) + 1255: 136(ptr) AccessChain 37(data) 39 135 40 + 1256: 30(int64_t) Load 1255 + 1257: 17(ivec4) Load 19(ballot) + 1258: 30(int64_t) GroupNonUniformIMul 177 PartitionedReduceNV 1256 1257 + 1259: 136(ptr) AccessChain 37(data) 1254 135 40 + Store 1259 1258 + 1260: 6(int) Load 8(invocation) + 1261: 141(ptr) AccessChain 37(data) 45 135 + 1262: 31(i64vec4) Load 1261 + 1263:140(i64vec2) VectorShuffle 1262 1262 0 1 + 1264: 17(ivec4) Load 19(ballot) + 1265:140(i64vec2) GroupNonUniformIMul 177 PartitionedReduceNV 1263 1264 + 1266: 141(ptr) AccessChain 37(data) 1260 135 + 1267: 31(i64vec4) Load 1266 + 1268: 31(i64vec4) VectorShuffle 1267 1265 4 5 2 3 + Store 1266 1268 + 1269: 6(int) Load 8(invocation) + 1270: 141(ptr) AccessChain 37(data) 52 135 + 1271: 31(i64vec4) Load 1270 + 1272:146(i64vec3) VectorShuffle 1271 1271 0 1 2 + 1273: 17(ivec4) Load 19(ballot) + 1274:146(i64vec3) GroupNonUniformIMul 177 PartitionedReduceNV 1272 1273 + 1275: 141(ptr) AccessChain 37(data) 1269 135 + 1276: 31(i64vec4) Load 1275 + 1277: 31(i64vec4) VectorShuffle 1276 1274 4 5 6 3 + Store 1275 1277 + 1278: 6(int) Load 8(invocation) + 1279: 141(ptr) AccessChain 37(data) 58 135 + 1280: 31(i64vec4) Load 1279 + 1281: 17(ivec4) Load 19(ballot) + 1282: 31(i64vec4) GroupNonUniformIMul 177 PartitionedReduceNV 1280 1281 + 1283: 141(ptr) AccessChain 37(data) 1278 135 + Store 1283 1282 + 1284: 6(int) Load 8(invocation) + 1285: 136(ptr) AccessChain 37(data) 39 135 40 + 1286: 30(int64_t) Load 1285 + 1287: 17(ivec4) Load 19(ballot) + 1288: 30(int64_t) GroupNonUniformUMin 177 PartitionedReduceNV 1286 1287 + 1289: 136(ptr) AccessChain 37(data) 1284 135 40 + Store 1289 1288 + 1290: 6(int) Load 8(invocation) + 1291: 141(ptr) AccessChain 37(data) 45 135 + 1292: 31(i64vec4) Load 1291 + 1293:140(i64vec2) VectorShuffle 1292 1292 0 1 + 1294: 17(ivec4) Load 19(ballot) + 1295:140(i64vec2) GroupNonUniformUMin 177 PartitionedReduceNV 1293 1294 + 1296: 141(ptr) AccessChain 37(data) 1290 135 + 1297: 31(i64vec4) Load 1296 + 1298: 31(i64vec4) VectorShuffle 1297 1295 4 5 2 3 + Store 1296 1298 + 1299: 6(int) Load 8(invocation) + 1300: 141(ptr) AccessChain 37(data) 52 135 + 1301: 31(i64vec4) Load 1300 + 1302:146(i64vec3) VectorShuffle 1301 1301 0 1 2 + 1303: 17(ivec4) Load 19(ballot) + 1304:146(i64vec3) GroupNonUniformUMin 177 PartitionedReduceNV 1302 1303 + 1305: 141(ptr) AccessChain 37(data) 1299 135 + 1306: 31(i64vec4) Load 1305 + 1307: 31(i64vec4) VectorShuffle 1306 1304 4 5 6 3 + Store 1305 1307 + 1308: 6(int) Load 8(invocation) + 1309: 141(ptr) AccessChain 37(data) 58 135 + 1310: 31(i64vec4) Load 1309 + 1311: 17(ivec4) Load 19(ballot) + 1312: 31(i64vec4) GroupNonUniformUMin 177 PartitionedReduceNV 1310 1311 + 1313: 141(ptr) AccessChain 37(data) 1308 135 + Store 1313 1312 + 1314: 6(int) Load 8(invocation) + 1315: 136(ptr) AccessChain 37(data) 39 135 40 + 1316: 30(int64_t) Load 1315 + 1317: 17(ivec4) Load 19(ballot) + 1318: 30(int64_t) GroupNonUniformUMax 177 PartitionedReduceNV 1316 1317 + 1319: 136(ptr) AccessChain 37(data) 1314 135 40 + Store 1319 1318 + 1320: 6(int) Load 8(invocation) + 1321: 141(ptr) AccessChain 37(data) 45 135 + 1322: 31(i64vec4) Load 1321 + 1323:140(i64vec2) VectorShuffle 1322 1322 0 1 + 1324: 17(ivec4) Load 19(ballot) + 1325:140(i64vec2) GroupNonUniformUMax 177 PartitionedReduceNV 1323 1324 + 1326: 141(ptr) AccessChain 37(data) 1320 135 + 1327: 31(i64vec4) Load 1326 + 1328: 31(i64vec4) VectorShuffle 1327 1325 4 5 2 3 + Store 1326 1328 + 1329: 6(int) Load 8(invocation) + 1330: 141(ptr) AccessChain 37(data) 52 135 + 1331: 31(i64vec4) Load 1330 + 1332:146(i64vec3) VectorShuffle 1331 1331 0 1 2 + 1333: 17(ivec4) Load 19(ballot) + 1334:146(i64vec3) GroupNonUniformUMax 177 PartitionedReduceNV 1332 1333 + 1335: 141(ptr) AccessChain 37(data) 1329 135 + 1336: 31(i64vec4) Load 1335 + 1337: 31(i64vec4) VectorShuffle 1336 1334 4 5 6 3 + Store 1335 1337 + 1338: 6(int) Load 8(invocation) + 1339: 141(ptr) AccessChain 37(data) 58 135 + 1340: 31(i64vec4) Load 1339 + 1341: 17(ivec4) Load 19(ballot) + 1342: 31(i64vec4) GroupNonUniformUMax 177 PartitionedReduceNV 1340 1341 + 1343: 141(ptr) AccessChain 37(data) 1338 135 + Store 1343 1342 + 1344: 6(int) Load 8(invocation) + 1345: 136(ptr) AccessChain 37(data) 39 135 40 + 1346: 30(int64_t) Load 1345 + 1347: 17(ivec4) Load 19(ballot) + 1348: 30(int64_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1346 1347 + 1349: 136(ptr) AccessChain 37(data) 1344 135 40 + Store 1349 1348 + 1350: 6(int) Load 8(invocation) + 1351: 141(ptr) AccessChain 37(data) 45 135 + 1352: 31(i64vec4) Load 1351 + 1353:140(i64vec2) VectorShuffle 1352 1352 0 1 + 1354: 17(ivec4) Load 19(ballot) + 1355:140(i64vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1353 1354 + 1356: 141(ptr) AccessChain 37(data) 1350 135 + 1357: 31(i64vec4) Load 1356 + 1358: 31(i64vec4) VectorShuffle 1357 1355 4 5 2 3 + Store 1356 1358 + 1359: 6(int) Load 8(invocation) + 1360: 141(ptr) AccessChain 37(data) 52 135 + 1361: 31(i64vec4) Load 1360 + 1362:146(i64vec3) VectorShuffle 1361 1361 0 1 2 + 1363: 17(ivec4) Load 19(ballot) + 1364:146(i64vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1362 1363 + 1365: 141(ptr) AccessChain 37(data) 1359 135 + 1366: 31(i64vec4) Load 1365 + 1367: 31(i64vec4) VectorShuffle 1366 1364 4 5 6 3 + Store 1365 1367 + 1368: 6(int) Load 8(invocation) + 1369: 141(ptr) AccessChain 37(data) 58 135 + 1370: 31(i64vec4) Load 1369 + 1371: 17(ivec4) Load 19(ballot) + 1372: 31(i64vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1370 1371 + 1373: 141(ptr) AccessChain 37(data) 1368 135 + Store 1373 1372 + 1374: 6(int) Load 8(invocation) + 1375: 136(ptr) AccessChain 37(data) 39 135 40 + 1376: 30(int64_t) Load 1375 + 1377: 17(ivec4) Load 19(ballot) + 1378: 30(int64_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1376 1377 + 1379: 136(ptr) AccessChain 37(data) 1374 135 40 + Store 1379 1378 + 1380: 6(int) Load 8(invocation) + 1381: 141(ptr) AccessChain 37(data) 45 135 + 1382: 31(i64vec4) Load 1381 + 1383:140(i64vec2) VectorShuffle 1382 1382 0 1 + 1384: 17(ivec4) Load 19(ballot) + 1385:140(i64vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1383 1384 + 1386: 141(ptr) AccessChain 37(data) 1380 135 + 1387: 31(i64vec4) Load 1386 + 1388: 31(i64vec4) VectorShuffle 1387 1385 4 5 2 3 + Store 1386 1388 + 1389: 6(int) Load 8(invocation) + 1390: 141(ptr) AccessChain 37(data) 52 135 + 1391: 31(i64vec4) Load 1390 + 1392:146(i64vec3) VectorShuffle 1391 1391 0 1 2 + 1393: 17(ivec4) Load 19(ballot) + 1394:146(i64vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1392 1393 + 1395: 141(ptr) AccessChain 37(data) 1389 135 + 1396: 31(i64vec4) Load 1395 + 1397: 31(i64vec4) VectorShuffle 1396 1394 4 5 6 3 + Store 1395 1397 + 1398: 6(int) Load 8(invocation) + 1399: 141(ptr) AccessChain 37(data) 58 135 + 1400: 31(i64vec4) Load 1399 + 1401: 17(ivec4) Load 19(ballot) + 1402: 31(i64vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1400 1401 + 1403: 141(ptr) AccessChain 37(data) 1398 135 + Store 1403 1402 + 1404: 6(int) Load 8(invocation) + 1405: 136(ptr) AccessChain 37(data) 39 135 40 + 1406: 30(int64_t) Load 1405 + 1407: 17(ivec4) Load 19(ballot) + 1408: 30(int64_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1406 1407 + 1409: 136(ptr) AccessChain 37(data) 1404 135 40 + Store 1409 1408 + 1410: 6(int) Load 8(invocation) + 1411: 141(ptr) AccessChain 37(data) 45 135 + 1412: 31(i64vec4) Load 1411 + 1413:140(i64vec2) VectorShuffle 1412 1412 0 1 + 1414: 17(ivec4) Load 19(ballot) + 1415:140(i64vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1413 1414 + 1416: 141(ptr) AccessChain 37(data) 1410 135 + 1417: 31(i64vec4) Load 1416 + 1418: 31(i64vec4) VectorShuffle 1417 1415 4 5 2 3 + Store 1416 1418 + 1419: 6(int) Load 8(invocation) + 1420: 141(ptr) AccessChain 37(data) 52 135 + 1421: 31(i64vec4) Load 1420 + 1422:146(i64vec3) VectorShuffle 1421 1421 0 1 2 + 1423: 17(ivec4) Load 19(ballot) + 1424:146(i64vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1422 1423 + 1425: 141(ptr) AccessChain 37(data) 1419 135 + 1426: 31(i64vec4) Load 1425 + 1427: 31(i64vec4) VectorShuffle 1426 1424 4 5 6 3 + Store 1425 1427 + 1428: 6(int) Load 8(invocation) + 1429: 141(ptr) AccessChain 37(data) 58 135 + 1430: 31(i64vec4) Load 1429 + 1431: 17(ivec4) Load 19(ballot) + 1432: 31(i64vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1430 1431 + 1433: 141(ptr) AccessChain 37(data) 1428 135 + Store 1433 1432 + 1434: 6(int) Load 8(invocation) + 1435: 155(ptr) AccessChain 37(data) 39 154 40 + 1436:32(float16_t) Load 1435 + 1437: 17(ivec4) Load 19(ballot) + 1438:32(float16_t) GroupNonUniformFAdd 177 PartitionedReduceNV 1436 1437 + 1439: 155(ptr) AccessChain 37(data) 1434 154 40 + Store 1439 1438 + 1440: 6(int) Load 8(invocation) + 1441: 160(ptr) AccessChain 37(data) 45 154 + 1442: 33(f16vec4) Load 1441 + 1443:159(f16vec2) VectorShuffle 1442 1442 0 1 + 1444: 17(ivec4) Load 19(ballot) + 1445:159(f16vec2) GroupNonUniformFAdd 177 PartitionedReduceNV 1443 1444 + 1446: 160(ptr) AccessChain 37(data) 1440 154 + 1447: 33(f16vec4) Load 1446 + 1448: 33(f16vec4) VectorShuffle 1447 1445 4 5 2 3 + Store 1446 1448 + 1449: 6(int) Load 8(invocation) + 1450: 160(ptr) AccessChain 37(data) 52 154 + 1451: 33(f16vec4) Load 1450 + 1452:165(f16vec3) VectorShuffle 1451 1451 0 1 2 + 1453: 17(ivec4) Load 19(ballot) + 1454:165(f16vec3) GroupNonUniformFAdd 177 PartitionedReduceNV 1452 1453 + 1455: 160(ptr) AccessChain 37(data) 1449 154 + 1456: 33(f16vec4) Load 1455 + 1457: 33(f16vec4) VectorShuffle 1456 1454 4 5 6 3 + Store 1455 1457 + 1458: 6(int) Load 8(invocation) + 1459: 160(ptr) AccessChain 37(data) 58 154 + 1460: 33(f16vec4) Load 1459 + 1461: 17(ivec4) Load 19(ballot) + 1462: 33(f16vec4) GroupNonUniformFAdd 177 PartitionedReduceNV 1460 1461 + 1463: 160(ptr) AccessChain 37(data) 1458 154 + Store 1463 1462 + 1464: 6(int) Load 8(invocation) + 1465: 155(ptr) AccessChain 37(data) 39 154 40 + 1466:32(float16_t) Load 1465 + 1467: 17(ivec4) Load 19(ballot) + 1468:32(float16_t) GroupNonUniformFMul 177 PartitionedReduceNV 1466 1467 + 1469: 155(ptr) AccessChain 37(data) 1464 154 40 + Store 1469 1468 + 1470: 6(int) Load 8(invocation) + 1471: 160(ptr) AccessChain 37(data) 45 154 + 1472: 33(f16vec4) Load 1471 + 1473:159(f16vec2) VectorShuffle 1472 1472 0 1 + 1474: 17(ivec4) Load 19(ballot) + 1475:159(f16vec2) GroupNonUniformFMul 177 PartitionedReduceNV 1473 1474 + 1476: 160(ptr) AccessChain 37(data) 1470 154 + 1477: 33(f16vec4) Load 1476 + 1478: 33(f16vec4) VectorShuffle 1477 1475 4 5 2 3 + Store 1476 1478 + 1479: 6(int) Load 8(invocation) + 1480: 160(ptr) AccessChain 37(data) 52 154 + 1481: 33(f16vec4) Load 1480 + 1482:165(f16vec3) VectorShuffle 1481 1481 0 1 2 + 1483: 17(ivec4) Load 19(ballot) + 1484:165(f16vec3) GroupNonUniformFMul 177 PartitionedReduceNV 1482 1483 + 1485: 160(ptr) AccessChain 37(data) 1479 154 + 1486: 33(f16vec4) Load 1485 + 1487: 33(f16vec4) VectorShuffle 1486 1484 4 5 6 3 + Store 1485 1487 + 1488: 6(int) Load 8(invocation) + 1489: 160(ptr) AccessChain 37(data) 58 154 + 1490: 33(f16vec4) Load 1489 + 1491: 17(ivec4) Load 19(ballot) + 1492: 33(f16vec4) GroupNonUniformFMul 177 PartitionedReduceNV 1490 1491 + 1493: 160(ptr) AccessChain 37(data) 1488 154 + Store 1493 1492 + 1494: 6(int) Load 8(invocation) + 1495: 155(ptr) AccessChain 37(data) 39 154 40 + 1496:32(float16_t) Load 1495 + 1497: 17(ivec4) Load 19(ballot) + 1498:32(float16_t) GroupNonUniformFMin 177 PartitionedReduceNV 1496 1497 + 1499: 155(ptr) AccessChain 37(data) 1494 154 40 + Store 1499 1498 + 1500: 6(int) Load 8(invocation) + 1501: 160(ptr) AccessChain 37(data) 45 154 + 1502: 33(f16vec4) Load 1501 + 1503:159(f16vec2) VectorShuffle 1502 1502 0 1 + 1504: 17(ivec4) Load 19(ballot) + 1505:159(f16vec2) GroupNonUniformFMin 177 PartitionedReduceNV 1503 1504 + 1506: 160(ptr) AccessChain 37(data) 1500 154 + 1507: 33(f16vec4) Load 1506 + 1508: 33(f16vec4) VectorShuffle 1507 1505 4 5 2 3 + Store 1506 1508 + 1509: 6(int) Load 8(invocation) + 1510: 160(ptr) AccessChain 37(data) 52 154 + 1511: 33(f16vec4) Load 1510 + 1512:165(f16vec3) VectorShuffle 1511 1511 0 1 2 + 1513: 17(ivec4) Load 19(ballot) + 1514:165(f16vec3) GroupNonUniformFMin 177 PartitionedReduceNV 1512 1513 + 1515: 160(ptr) AccessChain 37(data) 1509 154 + 1516: 33(f16vec4) Load 1515 + 1517: 33(f16vec4) VectorShuffle 1516 1514 4 5 6 3 + Store 1515 1517 + 1518: 6(int) Load 8(invocation) + 1519: 160(ptr) AccessChain 37(data) 58 154 + 1520: 33(f16vec4) Load 1519 + 1521: 17(ivec4) Load 19(ballot) + 1522: 33(f16vec4) GroupNonUniformFMin 177 PartitionedReduceNV 1520 1521 + 1523: 160(ptr) AccessChain 37(data) 1518 154 + Store 1523 1522 + 1524: 6(int) Load 8(invocation) + 1525: 155(ptr) AccessChain 37(data) 39 154 40 + 1526:32(float16_t) Load 1525 + 1527: 17(ivec4) Load 19(ballot) + 1528:32(float16_t) GroupNonUniformFMax 177 PartitionedReduceNV 1526 1527 + 1529: 155(ptr) AccessChain 37(data) 1524 154 40 + Store 1529 1528 + 1530: 6(int) Load 8(invocation) + 1531: 160(ptr) AccessChain 37(data) 45 154 + 1532: 33(f16vec4) Load 1531 + 1533:159(f16vec2) VectorShuffle 1532 1532 0 1 + 1534: 17(ivec4) Load 19(ballot) + 1535:159(f16vec2) GroupNonUniformFMax 177 PartitionedReduceNV 1533 1534 + 1536: 160(ptr) AccessChain 37(data) 1530 154 + 1537: 33(f16vec4) Load 1536 + 1538: 33(f16vec4) VectorShuffle 1537 1535 4 5 2 3 + Store 1536 1538 + 1539: 6(int) Load 8(invocation) + 1540: 160(ptr) AccessChain 37(data) 52 154 + 1541: 33(f16vec4) Load 1540 + 1542:165(f16vec3) VectorShuffle 1541 1541 0 1 2 + 1543: 17(ivec4) Load 19(ballot) + 1544:165(f16vec3) GroupNonUniformFMax 177 PartitionedReduceNV 1542 1543 + 1545: 160(ptr) AccessChain 37(data) 1539 154 + 1546: 33(f16vec4) Load 1545 + 1547: 33(f16vec4) VectorShuffle 1546 1544 4 5 6 3 + Store 1545 1547 + 1548: 6(int) Load 8(invocation) + 1549: 160(ptr) AccessChain 37(data) 58 154 + 1550: 33(f16vec4) Load 1549 + 1551: 17(ivec4) Load 19(ballot) + 1552: 33(f16vec4) GroupNonUniformFMax 177 PartitionedReduceNV 1550 1551 + 1553: 160(ptr) AccessChain 37(data) 1548 154 + Store 1553 1552 + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesPartitionedNeg.comp.out b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesPartitionedNeg.comp.out new file mode 100644 index 000000000..c029617f1 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesPartitionedNeg.comp.out @@ -0,0 +1,217 @@ +spv.subgroupExtendedTypesPartitionedNeg.comp +ERROR: 0:27: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:28: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:29: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:30: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:32: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:33: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:34: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:35: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:37: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:38: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:39: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:40: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:42: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:43: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:44: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:45: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:47: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:48: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:49: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:50: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:52: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:53: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:54: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:55: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:57: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:58: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:59: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:60: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:62: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:63: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:64: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:65: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:67: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:68: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:69: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:70: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:72: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:73: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:74: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:75: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:77: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:78: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:79: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:80: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:82: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:83: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:84: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:85: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:87: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:88: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:89: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:90: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:92: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:93: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:94: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:95: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:97: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:98: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:99: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:100: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:102: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:103: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:104: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:105: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:107: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:108: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:109: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:110: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:112: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:113: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:114: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:115: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:117: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:118: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:119: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:120: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:122: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:123: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:124: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:125: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:127: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:128: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:129: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:130: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:132: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:133: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:134: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:135: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:137: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:138: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:139: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:140: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:142: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:143: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:144: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:145: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:147: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:148: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:149: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:150: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:152: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:153: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:154: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:155: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:157: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:158: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:159: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:160: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:162: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:163: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:164: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:165: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:167: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:168: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:169: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:170: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:172: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:173: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:174: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:175: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:177: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:178: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:179: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:180: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:182: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:183: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:184: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:185: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:187: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:188: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:189: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:190: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:192: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:193: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:194: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:195: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:197: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:198: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:199: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:200: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:202: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:203: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:204: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:205: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:207: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:208: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:209: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:210: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:212: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:213: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:214: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:215: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:217: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:218: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:219: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:220: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:222: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:223: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:224: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:225: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:227: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:228: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:229: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:230: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:232: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:233: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:234: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:235: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:237: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:238: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:239: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:240: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:242: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:243: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:244: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:245: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:247: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:248: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:249: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:250: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:252: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:253: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:254: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:255: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:257: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:258: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:259: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:260: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:262: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:263: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:264: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:265: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:267: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:268: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:269: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:270: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:272: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:273: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:274: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:275: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:277: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:278: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:279: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:280: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:282: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:283: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:284: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:285: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:287: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:288: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:289: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:290: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 212 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out new file mode 100644 index 000000000..7d37a410d --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out @@ -0,0 +1,981 @@ +spv.subgroupExtendedTypesQuad.comp +// Module Version 10300 +// Generated by (magic number): 80007 +// Id's are bound by 806 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + Capability GroupNonUniform + Capability GroupNonUniformQuad + Capability StorageUniformBufferBlock16 + Capability StorageBuffer8BitAccess + Extension "SPV_KHR_8bit_storage" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 10 12 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_KHR_shader_subgroup_quad" + Name 4 "main" + Name 8 "invocation" + Name 10 "gl_SubgroupInvocationID" + Name 12 "gl_SubgroupSize" + Name 31 "Buffers" + MemberName 31(Buffers) 0 "i8" + MemberName 31(Buffers) 1 "u8" + MemberName 31(Buffers) 2 "i16" + MemberName 31(Buffers) 3 "u16" + MemberName 31(Buffers) 4 "i64" + MemberName 31(Buffers) 5 "u64" + MemberName 31(Buffers) 6 "f16" + Name 34 "data" + Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 11 RelaxedPrecision + Decorate 12(gl_SubgroupSize) RelaxedPrecision + Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 13 RelaxedPrecision + Decorate 14 RelaxedPrecision + Decorate 16 RelaxedPrecision + MemberDecorate 31(Buffers) 0 Offset 0 + MemberDecorate 31(Buffers) 1 Offset 4 + MemberDecorate 31(Buffers) 2 Offset 8 + MemberDecorate 31(Buffers) 3 Offset 16 + MemberDecorate 31(Buffers) 4 Offset 32 + MemberDecorate 31(Buffers) 5 Offset 64 + MemberDecorate 31(Buffers) 6 Offset 96 + Decorate 31(Buffers) Block + Decorate 34(data) DescriptorSet 0 + Decorate 34(data) Binding 0 + Decorate 805 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypePointer Input 6(int) +10(gl_SubgroupInvocationID): 9(ptr) Variable Input +12(gl_SubgroupSize): 9(ptr) Variable Input + 15: 6(int) Constant 4 + 17: TypeInt 8 1 + 18: TypeVector 17(int8_t) 4 + 19: TypeInt 8 0 + 20: TypeVector 19(int8_t) 4 + 21: TypeInt 16 1 + 22: TypeVector 21(int16_t) 4 + 23: TypeInt 16 0 + 24: TypeVector 23(int16_t) 4 + 25: TypeInt 64 1 + 26: TypeVector 25(int64_t) 4 + 27: TypeInt 64 0 + 28: TypeVector 27(int64_t) 4 + 29: TypeFloat 16 + 30: TypeVector 29(float16_t) 4 + 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) + 32: TypeArray 31(Buffers) 15 + 33: TypePointer StorageBuffer 32 + 34(data): 33(ptr) Variable StorageBuffer + 36: TypeInt 32 1 + 37: 36(int) Constant 0 + 38: 6(int) Constant 0 + 39: TypePointer StorageBuffer 17(int8_t) + 42: 6(int) Constant 1 + 43: 6(int) Constant 3 + 47: 36(int) Constant 1 + 48: TypeVector 17(int8_t) 2 + 49: TypePointer StorageBuffer 18(i8vec4) + 58: 36(int) Constant 2 + 59: TypeVector 17(int8_t) 3 + 68: 36(int) Constant 3 + 128: 6(int) Constant 2 + 153: TypePointer StorageBuffer 19(int8_t) + 159: TypeVector 19(int8_t) 2 + 160: TypePointer StorageBuffer 20(i8vec4) + 169: TypeVector 19(int8_t) 3 + 261: TypePointer StorageBuffer 21(int16_t) + 267: TypeVector 21(int16_t) 2 + 268: TypePointer StorageBuffer 22(i16vec4) + 277: TypeVector 21(int16_t) 3 + 369: TypePointer StorageBuffer 23(int16_t) + 375: TypeVector 23(int16_t) 2 + 376: TypePointer StorageBuffer 24(i16vec4) + 385: TypeVector 23(int16_t) 3 + 477: 36(int) Constant 4 + 478: TypePointer StorageBuffer 25(int64_t) + 484: TypeVector 25(int64_t) 2 + 485: TypePointer StorageBuffer 26(i64vec4) + 494: TypeVector 25(int64_t) 3 + 586: 36(int) Constant 5 + 587: TypePointer StorageBuffer 27(int64_t) + 593: TypeVector 27(int64_t) 2 + 594: TypePointer StorageBuffer 28(i64vec4) + 603: TypeVector 27(int64_t) 3 + 695: 36(int) Constant 6 + 696: TypePointer StorageBuffer 29(float16_t) + 702: TypeVector 29(float16_t) 2 + 703: TypePointer StorageBuffer 30(f16vec4) + 712: TypeVector 29(float16_t) 3 + 803: TypeVector 6(int) 3 + 804: 6(int) Constant 8 + 805: 803(ivec3) ConstantComposite 804 42 42 + 4(main): 2 Function None 3 + 5: Label + 8(invocation): 7(ptr) Variable Function + 11: 6(int) Load 10(gl_SubgroupInvocationID) + 13: 6(int) Load 12(gl_SubgroupSize) + 14: 6(int) IAdd 11 13 + 16: 6(int) UMod 14 15 + Store 8(invocation) 16 + 35: 6(int) Load 8(invocation) + 40: 39(ptr) AccessChain 34(data) 37 37 38 + 41: 17(int8_t) Load 40 + 44: 17(int8_t) GroupNonUniformQuadBroadcast 43 41 42 + 45: 39(ptr) AccessChain 34(data) 35 37 38 + Store 45 44 + 46: 6(int) Load 8(invocation) + 50: 49(ptr) AccessChain 34(data) 47 37 + 51: 18(i8vec4) Load 50 + 52: 48(i8vec2) VectorShuffle 51 51 0 1 + 53: 48(i8vec2) GroupNonUniformQuadBroadcast 43 52 42 + 54: 49(ptr) AccessChain 34(data) 46 37 + 55: 18(i8vec4) Load 54 + 56: 18(i8vec4) VectorShuffle 55 53 4 5 2 3 + Store 54 56 + 57: 6(int) Load 8(invocation) + 60: 49(ptr) AccessChain 34(data) 58 37 + 61: 18(i8vec4) Load 60 + 62: 59(i8vec3) VectorShuffle 61 61 0 1 2 + 63: 59(i8vec3) GroupNonUniformQuadBroadcast 43 62 42 + 64: 49(ptr) AccessChain 34(data) 57 37 + 65: 18(i8vec4) Load 64 + 66: 18(i8vec4) VectorShuffle 65 63 4 5 6 3 + Store 64 66 + 67: 6(int) Load 8(invocation) + 69: 49(ptr) AccessChain 34(data) 68 37 + 70: 18(i8vec4) Load 69 + 71: 18(i8vec4) GroupNonUniformQuadBroadcast 43 70 42 + 72: 49(ptr) AccessChain 34(data) 67 37 + Store 72 71 + 73: 6(int) Load 8(invocation) + 74: 39(ptr) AccessChain 34(data) 37 37 38 + 75: 17(int8_t) Load 74 + 76: 17(int8_t) GroupNonUniformQuadSwap 43 75 38 + 77: 39(ptr) AccessChain 34(data) 73 37 38 + Store 77 76 + 78: 6(int) Load 8(invocation) + 79: 49(ptr) AccessChain 34(data) 47 37 + 80: 18(i8vec4) Load 79 + 81: 48(i8vec2) VectorShuffle 80 80 0 1 + 82: 48(i8vec2) GroupNonUniformQuadSwap 43 81 38 + 83: 49(ptr) AccessChain 34(data) 78 37 + 84: 18(i8vec4) Load 83 + 85: 18(i8vec4) VectorShuffle 84 82 4 5 2 3 + Store 83 85 + 86: 6(int) Load 8(invocation) + 87: 49(ptr) AccessChain 34(data) 58 37 + 88: 18(i8vec4) Load 87 + 89: 59(i8vec3) VectorShuffle 88 88 0 1 2 + 90: 59(i8vec3) GroupNonUniformQuadSwap 43 89 38 + 91: 49(ptr) AccessChain 34(data) 86 37 + 92: 18(i8vec4) Load 91 + 93: 18(i8vec4) VectorShuffle 92 90 4 5 6 3 + Store 91 93 + 94: 6(int) Load 8(invocation) + 95: 49(ptr) AccessChain 34(data) 68 37 + 96: 18(i8vec4) Load 95 + 97: 18(i8vec4) GroupNonUniformQuadSwap 43 96 38 + 98: 49(ptr) AccessChain 34(data) 94 37 + Store 98 97 + 99: 6(int) Load 8(invocation) + 100: 39(ptr) AccessChain 34(data) 37 37 38 + 101: 17(int8_t) Load 100 + 102: 17(int8_t) GroupNonUniformQuadSwap 43 101 42 + 103: 39(ptr) AccessChain 34(data) 99 37 38 + Store 103 102 + 104: 6(int) Load 8(invocation) + 105: 49(ptr) AccessChain 34(data) 47 37 + 106: 18(i8vec4) Load 105 + 107: 48(i8vec2) VectorShuffle 106 106 0 1 + 108: 48(i8vec2) GroupNonUniformQuadSwap 43 107 42 + 109: 49(ptr) AccessChain 34(data) 104 37 + 110: 18(i8vec4) Load 109 + 111: 18(i8vec4) VectorShuffle 110 108 4 5 2 3 + Store 109 111 + 112: 6(int) Load 8(invocation) + 113: 49(ptr) AccessChain 34(data) 58 37 + 114: 18(i8vec4) Load 113 + 115: 59(i8vec3) VectorShuffle 114 114 0 1 2 + 116: 59(i8vec3) GroupNonUniformQuadSwap 43 115 42 + 117: 49(ptr) AccessChain 34(data) 112 37 + 118: 18(i8vec4) Load 117 + 119: 18(i8vec4) VectorShuffle 118 116 4 5 6 3 + Store 117 119 + 120: 6(int) Load 8(invocation) + 121: 49(ptr) AccessChain 34(data) 68 37 + 122: 18(i8vec4) Load 121 + 123: 18(i8vec4) GroupNonUniformQuadSwap 43 122 42 + 124: 49(ptr) AccessChain 34(data) 120 37 + Store 124 123 + 125: 6(int) Load 8(invocation) + 126: 39(ptr) AccessChain 34(data) 37 37 38 + 127: 17(int8_t) Load 126 + 129: 17(int8_t) GroupNonUniformQuadSwap 43 127 128 + 130: 39(ptr) AccessChain 34(data) 125 37 38 + Store 130 129 + 131: 6(int) Load 8(invocation) + 132: 49(ptr) AccessChain 34(data) 47 37 + 133: 18(i8vec4) Load 132 + 134: 48(i8vec2) VectorShuffle 133 133 0 1 + 135: 48(i8vec2) GroupNonUniformQuadSwap 43 134 128 + 136: 49(ptr) AccessChain 34(data) 131 37 + 137: 18(i8vec4) Load 136 + 138: 18(i8vec4) VectorShuffle 137 135 4 5 2 3 + Store 136 138 + 139: 6(int) Load 8(invocation) + 140: 49(ptr) AccessChain 34(data) 58 37 + 141: 18(i8vec4) Load 140 + 142: 59(i8vec3) VectorShuffle 141 141 0 1 2 + 143: 59(i8vec3) GroupNonUniformQuadSwap 43 142 128 + 144: 49(ptr) AccessChain 34(data) 139 37 + 145: 18(i8vec4) Load 144 + 146: 18(i8vec4) VectorShuffle 145 143 4 5 6 3 + Store 144 146 + 147: 6(int) Load 8(invocation) + 148: 49(ptr) AccessChain 34(data) 68 37 + 149: 18(i8vec4) Load 148 + 150: 18(i8vec4) GroupNonUniformQuadSwap 43 149 128 + 151: 49(ptr) AccessChain 34(data) 147 37 + Store 151 150 + 152: 6(int) Load 8(invocation) + 154: 153(ptr) AccessChain 34(data) 37 47 38 + 155: 19(int8_t) Load 154 + 156: 19(int8_t) GroupNonUniformQuadBroadcast 43 155 42 + 157: 153(ptr) AccessChain 34(data) 152 47 38 + Store 157 156 + 158: 6(int) Load 8(invocation) + 161: 160(ptr) AccessChain 34(data) 47 47 + 162: 20(i8vec4) Load 161 + 163: 159(i8vec2) VectorShuffle 162 162 0 1 + 164: 159(i8vec2) GroupNonUniformQuadBroadcast 43 163 42 + 165: 160(ptr) AccessChain 34(data) 158 47 + 166: 20(i8vec4) Load 165 + 167: 20(i8vec4) VectorShuffle 166 164 4 5 2 3 + Store 165 167 + 168: 6(int) Load 8(invocation) + 170: 160(ptr) AccessChain 34(data) 58 47 + 171: 20(i8vec4) Load 170 + 172: 169(i8vec3) VectorShuffle 171 171 0 1 2 + 173: 169(i8vec3) GroupNonUniformQuadBroadcast 43 172 42 + 174: 160(ptr) AccessChain 34(data) 168 47 + 175: 20(i8vec4) Load 174 + 176: 20(i8vec4) VectorShuffle 175 173 4 5 6 3 + Store 174 176 + 177: 6(int) Load 8(invocation) + 178: 160(ptr) AccessChain 34(data) 68 47 + 179: 20(i8vec4) Load 178 + 180: 20(i8vec4) GroupNonUniformQuadBroadcast 43 179 42 + 181: 160(ptr) AccessChain 34(data) 177 47 + Store 181 180 + 182: 6(int) Load 8(invocation) + 183: 153(ptr) AccessChain 34(data) 37 47 38 + 184: 19(int8_t) Load 183 + 185: 19(int8_t) GroupNonUniformQuadSwap 43 184 38 + 186: 153(ptr) AccessChain 34(data) 182 47 38 + Store 186 185 + 187: 6(int) Load 8(invocation) + 188: 160(ptr) AccessChain 34(data) 47 47 + 189: 20(i8vec4) Load 188 + 190: 159(i8vec2) VectorShuffle 189 189 0 1 + 191: 159(i8vec2) GroupNonUniformQuadSwap 43 190 38 + 192: 160(ptr) AccessChain 34(data) 187 47 + 193: 20(i8vec4) Load 192 + 194: 20(i8vec4) VectorShuffle 193 191 4 5 2 3 + Store 192 194 + 195: 6(int) Load 8(invocation) + 196: 160(ptr) AccessChain 34(data) 58 47 + 197: 20(i8vec4) Load 196 + 198: 169(i8vec3) VectorShuffle 197 197 0 1 2 + 199: 169(i8vec3) GroupNonUniformQuadSwap 43 198 38 + 200: 160(ptr) AccessChain 34(data) 195 47 + 201: 20(i8vec4) Load 200 + 202: 20(i8vec4) VectorShuffle 201 199 4 5 6 3 + Store 200 202 + 203: 6(int) Load 8(invocation) + 204: 160(ptr) AccessChain 34(data) 68 47 + 205: 20(i8vec4) Load 204 + 206: 20(i8vec4) GroupNonUniformQuadSwap 43 205 38 + 207: 160(ptr) AccessChain 34(data) 203 47 + Store 207 206 + 208: 6(int) Load 8(invocation) + 209: 153(ptr) AccessChain 34(data) 37 47 38 + 210: 19(int8_t) Load 209 + 211: 19(int8_t) GroupNonUniformQuadSwap 43 210 42 + 212: 153(ptr) AccessChain 34(data) 208 47 38 + Store 212 211 + 213: 6(int) Load 8(invocation) + 214: 160(ptr) AccessChain 34(data) 47 47 + 215: 20(i8vec4) Load 214 + 216: 159(i8vec2) VectorShuffle 215 215 0 1 + 217: 159(i8vec2) GroupNonUniformQuadSwap 43 216 42 + 218: 160(ptr) AccessChain 34(data) 213 47 + 219: 20(i8vec4) Load 218 + 220: 20(i8vec4) VectorShuffle 219 217 4 5 2 3 + Store 218 220 + 221: 6(int) Load 8(invocation) + 222: 160(ptr) AccessChain 34(data) 58 47 + 223: 20(i8vec4) Load 222 + 224: 169(i8vec3) VectorShuffle 223 223 0 1 2 + 225: 169(i8vec3) GroupNonUniformQuadSwap 43 224 42 + 226: 160(ptr) AccessChain 34(data) 221 47 + 227: 20(i8vec4) Load 226 + 228: 20(i8vec4) VectorShuffle 227 225 4 5 6 3 + Store 226 228 + 229: 6(int) Load 8(invocation) + 230: 160(ptr) AccessChain 34(data) 68 47 + 231: 20(i8vec4) Load 230 + 232: 20(i8vec4) GroupNonUniformQuadSwap 43 231 42 + 233: 160(ptr) AccessChain 34(data) 229 47 + Store 233 232 + 234: 6(int) Load 8(invocation) + 235: 153(ptr) AccessChain 34(data) 37 47 38 + 236: 19(int8_t) Load 235 + 237: 19(int8_t) GroupNonUniformQuadSwap 43 236 128 + 238: 153(ptr) AccessChain 34(data) 234 47 38 + Store 238 237 + 239: 6(int) Load 8(invocation) + 240: 160(ptr) AccessChain 34(data) 47 47 + 241: 20(i8vec4) Load 240 + 242: 159(i8vec2) VectorShuffle 241 241 0 1 + 243: 159(i8vec2) GroupNonUniformQuadSwap 43 242 128 + 244: 160(ptr) AccessChain 34(data) 239 47 + 245: 20(i8vec4) Load 244 + 246: 20(i8vec4) VectorShuffle 245 243 4 5 2 3 + Store 244 246 + 247: 6(int) Load 8(invocation) + 248: 160(ptr) AccessChain 34(data) 58 47 + 249: 20(i8vec4) Load 248 + 250: 169(i8vec3) VectorShuffle 249 249 0 1 2 + 251: 169(i8vec3) GroupNonUniformQuadSwap 43 250 128 + 252: 160(ptr) AccessChain 34(data) 247 47 + 253: 20(i8vec4) Load 252 + 254: 20(i8vec4) VectorShuffle 253 251 4 5 6 3 + Store 252 254 + 255: 6(int) Load 8(invocation) + 256: 160(ptr) AccessChain 34(data) 68 47 + 257: 20(i8vec4) Load 256 + 258: 20(i8vec4) GroupNonUniformQuadSwap 43 257 128 + 259: 160(ptr) AccessChain 34(data) 255 47 + Store 259 258 + 260: 6(int) Load 8(invocation) + 262: 261(ptr) AccessChain 34(data) 37 58 38 + 263: 21(int16_t) Load 262 + 264: 21(int16_t) GroupNonUniformQuadBroadcast 43 263 42 + 265: 261(ptr) AccessChain 34(data) 260 58 38 + Store 265 264 + 266: 6(int) Load 8(invocation) + 269: 268(ptr) AccessChain 34(data) 47 58 + 270: 22(i16vec4) Load 269 + 271:267(i16vec2) VectorShuffle 270 270 0 1 + 272:267(i16vec2) GroupNonUniformQuadBroadcast 43 271 42 + 273: 268(ptr) AccessChain 34(data) 266 58 + 274: 22(i16vec4) Load 273 + 275: 22(i16vec4) VectorShuffle 274 272 4 5 2 3 + Store 273 275 + 276: 6(int) Load 8(invocation) + 278: 268(ptr) AccessChain 34(data) 58 58 + 279: 22(i16vec4) Load 278 + 280:277(i16vec3) VectorShuffle 279 279 0 1 2 + 281:277(i16vec3) GroupNonUniformQuadBroadcast 43 280 42 + 282: 268(ptr) AccessChain 34(data) 276 58 + 283: 22(i16vec4) Load 282 + 284: 22(i16vec4) VectorShuffle 283 281 4 5 6 3 + Store 282 284 + 285: 6(int) Load 8(invocation) + 286: 268(ptr) AccessChain 34(data) 68 58 + 287: 22(i16vec4) Load 286 + 288: 22(i16vec4) GroupNonUniformQuadBroadcast 43 287 42 + 289: 268(ptr) AccessChain 34(data) 285 58 + Store 289 288 + 290: 6(int) Load 8(invocation) + 291: 261(ptr) AccessChain 34(data) 37 58 38 + 292: 21(int16_t) Load 291 + 293: 21(int16_t) GroupNonUniformQuadSwap 43 292 38 + 294: 261(ptr) AccessChain 34(data) 290 58 38 + Store 294 293 + 295: 6(int) Load 8(invocation) + 296: 268(ptr) AccessChain 34(data) 47 58 + 297: 22(i16vec4) Load 296 + 298:267(i16vec2) VectorShuffle 297 297 0 1 + 299:267(i16vec2) GroupNonUniformQuadSwap 43 298 38 + 300: 268(ptr) AccessChain 34(data) 295 58 + 301: 22(i16vec4) Load 300 + 302: 22(i16vec4) VectorShuffle 301 299 4 5 2 3 + Store 300 302 + 303: 6(int) Load 8(invocation) + 304: 268(ptr) AccessChain 34(data) 58 58 + 305: 22(i16vec4) Load 304 + 306:277(i16vec3) VectorShuffle 305 305 0 1 2 + 307:277(i16vec3) GroupNonUniformQuadSwap 43 306 38 + 308: 268(ptr) AccessChain 34(data) 303 58 + 309: 22(i16vec4) Load 308 + 310: 22(i16vec4) VectorShuffle 309 307 4 5 6 3 + Store 308 310 + 311: 6(int) Load 8(invocation) + 312: 268(ptr) AccessChain 34(data) 68 58 + 313: 22(i16vec4) Load 312 + 314: 22(i16vec4) GroupNonUniformQuadSwap 43 313 38 + 315: 268(ptr) AccessChain 34(data) 311 58 + Store 315 314 + 316: 6(int) Load 8(invocation) + 317: 261(ptr) AccessChain 34(data) 37 58 38 + 318: 21(int16_t) Load 317 + 319: 21(int16_t) GroupNonUniformQuadSwap 43 318 42 + 320: 261(ptr) AccessChain 34(data) 316 58 38 + Store 320 319 + 321: 6(int) Load 8(invocation) + 322: 268(ptr) AccessChain 34(data) 47 58 + 323: 22(i16vec4) Load 322 + 324:267(i16vec2) VectorShuffle 323 323 0 1 + 325:267(i16vec2) GroupNonUniformQuadSwap 43 324 42 + 326: 268(ptr) AccessChain 34(data) 321 58 + 327: 22(i16vec4) Load 326 + 328: 22(i16vec4) VectorShuffle 327 325 4 5 2 3 + Store 326 328 + 329: 6(int) Load 8(invocation) + 330: 268(ptr) AccessChain 34(data) 58 58 + 331: 22(i16vec4) Load 330 + 332:277(i16vec3) VectorShuffle 331 331 0 1 2 + 333:277(i16vec3) GroupNonUniformQuadSwap 43 332 42 + 334: 268(ptr) AccessChain 34(data) 329 58 + 335: 22(i16vec4) Load 334 + 336: 22(i16vec4) VectorShuffle 335 333 4 5 6 3 + Store 334 336 + 337: 6(int) Load 8(invocation) + 338: 268(ptr) AccessChain 34(data) 68 58 + 339: 22(i16vec4) Load 338 + 340: 22(i16vec4) GroupNonUniformQuadSwap 43 339 42 + 341: 268(ptr) AccessChain 34(data) 337 58 + Store 341 340 + 342: 6(int) Load 8(invocation) + 343: 261(ptr) AccessChain 34(data) 37 58 38 + 344: 21(int16_t) Load 343 + 345: 21(int16_t) GroupNonUniformQuadSwap 43 344 128 + 346: 261(ptr) AccessChain 34(data) 342 58 38 + Store 346 345 + 347: 6(int) Load 8(invocation) + 348: 268(ptr) AccessChain 34(data) 47 58 + 349: 22(i16vec4) Load 348 + 350:267(i16vec2) VectorShuffle 349 349 0 1 + 351:267(i16vec2) GroupNonUniformQuadSwap 43 350 128 + 352: 268(ptr) AccessChain 34(data) 347 58 + 353: 22(i16vec4) Load 352 + 354: 22(i16vec4) VectorShuffle 353 351 4 5 2 3 + Store 352 354 + 355: 6(int) Load 8(invocation) + 356: 268(ptr) AccessChain 34(data) 58 58 + 357: 22(i16vec4) Load 356 + 358:277(i16vec3) VectorShuffle 357 357 0 1 2 + 359:277(i16vec3) GroupNonUniformQuadSwap 43 358 128 + 360: 268(ptr) AccessChain 34(data) 355 58 + 361: 22(i16vec4) Load 360 + 362: 22(i16vec4) VectorShuffle 361 359 4 5 6 3 + Store 360 362 + 363: 6(int) Load 8(invocation) + 364: 268(ptr) AccessChain 34(data) 68 58 + 365: 22(i16vec4) Load 364 + 366: 22(i16vec4) GroupNonUniformQuadSwap 43 365 128 + 367: 268(ptr) AccessChain 34(data) 363 58 + Store 367 366 + 368: 6(int) Load 8(invocation) + 370: 369(ptr) AccessChain 34(data) 37 68 38 + 371: 23(int16_t) Load 370 + 372: 23(int16_t) GroupNonUniformQuadBroadcast 43 371 42 + 373: 369(ptr) AccessChain 34(data) 368 68 38 + Store 373 372 + 374: 6(int) Load 8(invocation) + 377: 376(ptr) AccessChain 34(data) 47 68 + 378: 24(i16vec4) Load 377 + 379:375(i16vec2) VectorShuffle 378 378 0 1 + 380:375(i16vec2) GroupNonUniformQuadBroadcast 43 379 42 + 381: 376(ptr) AccessChain 34(data) 374 68 + 382: 24(i16vec4) Load 381 + 383: 24(i16vec4) VectorShuffle 382 380 4 5 2 3 + Store 381 383 + 384: 6(int) Load 8(invocation) + 386: 376(ptr) AccessChain 34(data) 58 68 + 387: 24(i16vec4) Load 386 + 388:385(i16vec3) VectorShuffle 387 387 0 1 2 + 389:385(i16vec3) GroupNonUniformQuadBroadcast 43 388 42 + 390: 376(ptr) AccessChain 34(data) 384 68 + 391: 24(i16vec4) Load 390 + 392: 24(i16vec4) VectorShuffle 391 389 4 5 6 3 + Store 390 392 + 393: 6(int) Load 8(invocation) + 394: 376(ptr) AccessChain 34(data) 68 68 + 395: 24(i16vec4) Load 394 + 396: 24(i16vec4) GroupNonUniformQuadBroadcast 43 395 42 + 397: 376(ptr) AccessChain 34(data) 393 68 + Store 397 396 + 398: 6(int) Load 8(invocation) + 399: 369(ptr) AccessChain 34(data) 37 68 38 + 400: 23(int16_t) Load 399 + 401: 23(int16_t) GroupNonUniformQuadSwap 43 400 38 + 402: 369(ptr) AccessChain 34(data) 398 68 38 + Store 402 401 + 403: 6(int) Load 8(invocation) + 404: 376(ptr) AccessChain 34(data) 47 68 + 405: 24(i16vec4) Load 404 + 406:375(i16vec2) VectorShuffle 405 405 0 1 + 407:375(i16vec2) GroupNonUniformQuadSwap 43 406 38 + 408: 376(ptr) AccessChain 34(data) 403 68 + 409: 24(i16vec4) Load 408 + 410: 24(i16vec4) VectorShuffle 409 407 4 5 2 3 + Store 408 410 + 411: 6(int) Load 8(invocation) + 412: 376(ptr) AccessChain 34(data) 58 68 + 413: 24(i16vec4) Load 412 + 414:385(i16vec3) VectorShuffle 413 413 0 1 2 + 415:385(i16vec3) GroupNonUniformQuadSwap 43 414 38 + 416: 376(ptr) AccessChain 34(data) 411 68 + 417: 24(i16vec4) Load 416 + 418: 24(i16vec4) VectorShuffle 417 415 4 5 6 3 + Store 416 418 + 419: 6(int) Load 8(invocation) + 420: 376(ptr) AccessChain 34(data) 68 68 + 421: 24(i16vec4) Load 420 + 422: 24(i16vec4) GroupNonUniformQuadSwap 43 421 38 + 423: 376(ptr) AccessChain 34(data) 419 68 + Store 423 422 + 424: 6(int) Load 8(invocation) + 425: 369(ptr) AccessChain 34(data) 37 68 38 + 426: 23(int16_t) Load 425 + 427: 23(int16_t) GroupNonUniformQuadSwap 43 426 42 + 428: 369(ptr) AccessChain 34(data) 424 68 38 + Store 428 427 + 429: 6(int) Load 8(invocation) + 430: 376(ptr) AccessChain 34(data) 47 68 + 431: 24(i16vec4) Load 430 + 432:375(i16vec2) VectorShuffle 431 431 0 1 + 433:375(i16vec2) GroupNonUniformQuadSwap 43 432 42 + 434: 376(ptr) AccessChain 34(data) 429 68 + 435: 24(i16vec4) Load 434 + 436: 24(i16vec4) VectorShuffle 435 433 4 5 2 3 + Store 434 436 + 437: 6(int) Load 8(invocation) + 438: 376(ptr) AccessChain 34(data) 58 68 + 439: 24(i16vec4) Load 438 + 440:385(i16vec3) VectorShuffle 439 439 0 1 2 + 441:385(i16vec3) GroupNonUniformQuadSwap 43 440 42 + 442: 376(ptr) AccessChain 34(data) 437 68 + 443: 24(i16vec4) Load 442 + 444: 24(i16vec4) VectorShuffle 443 441 4 5 6 3 + Store 442 444 + 445: 6(int) Load 8(invocation) + 446: 376(ptr) AccessChain 34(data) 68 68 + 447: 24(i16vec4) Load 446 + 448: 24(i16vec4) GroupNonUniformQuadSwap 43 447 42 + 449: 376(ptr) AccessChain 34(data) 445 68 + Store 449 448 + 450: 6(int) Load 8(invocation) + 451: 369(ptr) AccessChain 34(data) 37 68 38 + 452: 23(int16_t) Load 451 + 453: 23(int16_t) GroupNonUniformQuadSwap 43 452 128 + 454: 369(ptr) AccessChain 34(data) 450 68 38 + Store 454 453 + 455: 6(int) Load 8(invocation) + 456: 376(ptr) AccessChain 34(data) 47 68 + 457: 24(i16vec4) Load 456 + 458:375(i16vec2) VectorShuffle 457 457 0 1 + 459:375(i16vec2) GroupNonUniformQuadSwap 43 458 128 + 460: 376(ptr) AccessChain 34(data) 455 68 + 461: 24(i16vec4) Load 460 + 462: 24(i16vec4) VectorShuffle 461 459 4 5 2 3 + Store 460 462 + 463: 6(int) Load 8(invocation) + 464: 376(ptr) AccessChain 34(data) 58 68 + 465: 24(i16vec4) Load 464 + 466:385(i16vec3) VectorShuffle 465 465 0 1 2 + 467:385(i16vec3) GroupNonUniformQuadSwap 43 466 128 + 468: 376(ptr) AccessChain 34(data) 463 68 + 469: 24(i16vec4) Load 468 + 470: 24(i16vec4) VectorShuffle 469 467 4 5 6 3 + Store 468 470 + 471: 6(int) Load 8(invocation) + 472: 376(ptr) AccessChain 34(data) 68 68 + 473: 24(i16vec4) Load 472 + 474: 24(i16vec4) GroupNonUniformQuadSwap 43 473 128 + 475: 376(ptr) AccessChain 34(data) 471 68 + Store 475 474 + 476: 6(int) Load 8(invocation) + 479: 478(ptr) AccessChain 34(data) 37 477 38 + 480: 25(int64_t) Load 479 + 481: 25(int64_t) GroupNonUniformQuadBroadcast 43 480 42 + 482: 478(ptr) AccessChain 34(data) 476 477 38 + Store 482 481 + 483: 6(int) Load 8(invocation) + 486: 485(ptr) AccessChain 34(data) 47 477 + 487: 26(i64vec4) Load 486 + 488:484(i64vec2) VectorShuffle 487 487 0 1 + 489:484(i64vec2) GroupNonUniformQuadBroadcast 43 488 42 + 490: 485(ptr) AccessChain 34(data) 483 477 + 491: 26(i64vec4) Load 490 + 492: 26(i64vec4) VectorShuffle 491 489 4 5 2 3 + Store 490 492 + 493: 6(int) Load 8(invocation) + 495: 485(ptr) AccessChain 34(data) 58 477 + 496: 26(i64vec4) Load 495 + 497:494(i64vec3) VectorShuffle 496 496 0 1 2 + 498:494(i64vec3) GroupNonUniformQuadBroadcast 43 497 42 + 499: 485(ptr) AccessChain 34(data) 493 477 + 500: 26(i64vec4) Load 499 + 501: 26(i64vec4) VectorShuffle 500 498 4 5 6 3 + Store 499 501 + 502: 6(int) Load 8(invocation) + 503: 485(ptr) AccessChain 34(data) 68 477 + 504: 26(i64vec4) Load 503 + 505: 26(i64vec4) GroupNonUniformQuadBroadcast 43 504 42 + 506: 485(ptr) AccessChain 34(data) 502 477 + Store 506 505 + 507: 6(int) Load 8(invocation) + 508: 478(ptr) AccessChain 34(data) 37 477 38 + 509: 25(int64_t) Load 508 + 510: 25(int64_t) GroupNonUniformQuadSwap 43 509 38 + 511: 478(ptr) AccessChain 34(data) 507 477 38 + Store 511 510 + 512: 6(int) Load 8(invocation) + 513: 485(ptr) AccessChain 34(data) 47 477 + 514: 26(i64vec4) Load 513 + 515:484(i64vec2) VectorShuffle 514 514 0 1 + 516:484(i64vec2) GroupNonUniformQuadSwap 43 515 38 + 517: 485(ptr) AccessChain 34(data) 512 477 + 518: 26(i64vec4) Load 517 + 519: 26(i64vec4) VectorShuffle 518 516 4 5 2 3 + Store 517 519 + 520: 6(int) Load 8(invocation) + 521: 485(ptr) AccessChain 34(data) 58 477 + 522: 26(i64vec4) Load 521 + 523:494(i64vec3) VectorShuffle 522 522 0 1 2 + 524:494(i64vec3) GroupNonUniformQuadSwap 43 523 38 + 525: 485(ptr) AccessChain 34(data) 520 477 + 526: 26(i64vec4) Load 525 + 527: 26(i64vec4) VectorShuffle 526 524 4 5 6 3 + Store 525 527 + 528: 6(int) Load 8(invocation) + 529: 485(ptr) AccessChain 34(data) 68 477 + 530: 26(i64vec4) Load 529 + 531: 26(i64vec4) GroupNonUniformQuadSwap 43 530 38 + 532: 485(ptr) AccessChain 34(data) 528 477 + Store 532 531 + 533: 6(int) Load 8(invocation) + 534: 478(ptr) AccessChain 34(data) 37 477 38 + 535: 25(int64_t) Load 534 + 536: 25(int64_t) GroupNonUniformQuadSwap 43 535 42 + 537: 478(ptr) AccessChain 34(data) 533 477 38 + Store 537 536 + 538: 6(int) Load 8(invocation) + 539: 485(ptr) AccessChain 34(data) 47 477 + 540: 26(i64vec4) Load 539 + 541:484(i64vec2) VectorShuffle 540 540 0 1 + 542:484(i64vec2) GroupNonUniformQuadSwap 43 541 42 + 543: 485(ptr) AccessChain 34(data) 538 477 + 544: 26(i64vec4) Load 543 + 545: 26(i64vec4) VectorShuffle 544 542 4 5 2 3 + Store 543 545 + 546: 6(int) Load 8(invocation) + 547: 485(ptr) AccessChain 34(data) 58 477 + 548: 26(i64vec4) Load 547 + 549:494(i64vec3) VectorShuffle 548 548 0 1 2 + 550:494(i64vec3) GroupNonUniformQuadSwap 43 549 42 + 551: 485(ptr) AccessChain 34(data) 546 477 + 552: 26(i64vec4) Load 551 + 553: 26(i64vec4) VectorShuffle 552 550 4 5 6 3 + Store 551 553 + 554: 6(int) Load 8(invocation) + 555: 485(ptr) AccessChain 34(data) 68 477 + 556: 26(i64vec4) Load 555 + 557: 26(i64vec4) GroupNonUniformQuadSwap 43 556 42 + 558: 485(ptr) AccessChain 34(data) 554 477 + Store 558 557 + 559: 6(int) Load 8(invocation) + 560: 478(ptr) AccessChain 34(data) 37 477 38 + 561: 25(int64_t) Load 560 + 562: 25(int64_t) GroupNonUniformQuadSwap 43 561 128 + 563: 478(ptr) AccessChain 34(data) 559 477 38 + Store 563 562 + 564: 6(int) Load 8(invocation) + 565: 485(ptr) AccessChain 34(data) 47 477 + 566: 26(i64vec4) Load 565 + 567:484(i64vec2) VectorShuffle 566 566 0 1 + 568:484(i64vec2) GroupNonUniformQuadSwap 43 567 128 + 569: 485(ptr) AccessChain 34(data) 564 477 + 570: 26(i64vec4) Load 569 + 571: 26(i64vec4) VectorShuffle 570 568 4 5 2 3 + Store 569 571 + 572: 6(int) Load 8(invocation) + 573: 485(ptr) AccessChain 34(data) 58 477 + 574: 26(i64vec4) Load 573 + 575:494(i64vec3) VectorShuffle 574 574 0 1 2 + 576:494(i64vec3) GroupNonUniformQuadSwap 43 575 128 + 577: 485(ptr) AccessChain 34(data) 572 477 + 578: 26(i64vec4) Load 577 + 579: 26(i64vec4) VectorShuffle 578 576 4 5 6 3 + Store 577 579 + 580: 6(int) Load 8(invocation) + 581: 485(ptr) AccessChain 34(data) 68 477 + 582: 26(i64vec4) Load 581 + 583: 26(i64vec4) GroupNonUniformQuadSwap 43 582 128 + 584: 485(ptr) AccessChain 34(data) 580 477 + Store 584 583 + 585: 6(int) Load 8(invocation) + 588: 587(ptr) AccessChain 34(data) 37 586 38 + 589: 27(int64_t) Load 588 + 590: 27(int64_t) GroupNonUniformQuadBroadcast 43 589 42 + 591: 587(ptr) AccessChain 34(data) 585 586 38 + Store 591 590 + 592: 6(int) Load 8(invocation) + 595: 594(ptr) AccessChain 34(data) 47 586 + 596: 28(i64vec4) Load 595 + 597:593(i64vec2) VectorShuffle 596 596 0 1 + 598:593(i64vec2) GroupNonUniformQuadBroadcast 43 597 42 + 599: 594(ptr) AccessChain 34(data) 592 586 + 600: 28(i64vec4) Load 599 + 601: 28(i64vec4) VectorShuffle 600 598 4 5 2 3 + Store 599 601 + 602: 6(int) Load 8(invocation) + 604: 594(ptr) AccessChain 34(data) 58 586 + 605: 28(i64vec4) Load 604 + 606:603(i64vec3) VectorShuffle 605 605 0 1 2 + 607:603(i64vec3) GroupNonUniformQuadBroadcast 43 606 42 + 608: 594(ptr) AccessChain 34(data) 602 586 + 609: 28(i64vec4) Load 608 + 610: 28(i64vec4) VectorShuffle 609 607 4 5 6 3 + Store 608 610 + 611: 6(int) Load 8(invocation) + 612: 594(ptr) AccessChain 34(data) 68 586 + 613: 28(i64vec4) Load 612 + 614: 28(i64vec4) GroupNonUniformQuadBroadcast 43 613 42 + 615: 594(ptr) AccessChain 34(data) 611 586 + Store 615 614 + 616: 6(int) Load 8(invocation) + 617: 587(ptr) AccessChain 34(data) 37 586 38 + 618: 27(int64_t) Load 617 + 619: 27(int64_t) GroupNonUniformQuadSwap 43 618 38 + 620: 587(ptr) AccessChain 34(data) 616 586 38 + Store 620 619 + 621: 6(int) Load 8(invocation) + 622: 594(ptr) AccessChain 34(data) 47 586 + 623: 28(i64vec4) Load 622 + 624:593(i64vec2) VectorShuffle 623 623 0 1 + 625:593(i64vec2) GroupNonUniformQuadSwap 43 624 38 + 626: 594(ptr) AccessChain 34(data) 621 586 + 627: 28(i64vec4) Load 626 + 628: 28(i64vec4) VectorShuffle 627 625 4 5 2 3 + Store 626 628 + 629: 6(int) Load 8(invocation) + 630: 594(ptr) AccessChain 34(data) 58 586 + 631: 28(i64vec4) Load 630 + 632:603(i64vec3) VectorShuffle 631 631 0 1 2 + 633:603(i64vec3) GroupNonUniformQuadSwap 43 632 38 + 634: 594(ptr) AccessChain 34(data) 629 586 + 635: 28(i64vec4) Load 634 + 636: 28(i64vec4) VectorShuffle 635 633 4 5 6 3 + Store 634 636 + 637: 6(int) Load 8(invocation) + 638: 594(ptr) AccessChain 34(data) 68 586 + 639: 28(i64vec4) Load 638 + 640: 28(i64vec4) GroupNonUniformQuadSwap 43 639 38 + 641: 594(ptr) AccessChain 34(data) 637 586 + Store 641 640 + 642: 6(int) Load 8(invocation) + 643: 587(ptr) AccessChain 34(data) 37 586 38 + 644: 27(int64_t) Load 643 + 645: 27(int64_t) GroupNonUniformQuadSwap 43 644 42 + 646: 587(ptr) AccessChain 34(data) 642 586 38 + Store 646 645 + 647: 6(int) Load 8(invocation) + 648: 594(ptr) AccessChain 34(data) 47 586 + 649: 28(i64vec4) Load 648 + 650:593(i64vec2) VectorShuffle 649 649 0 1 + 651:593(i64vec2) GroupNonUniformQuadSwap 43 650 42 + 652: 594(ptr) AccessChain 34(data) 647 586 + 653: 28(i64vec4) Load 652 + 654: 28(i64vec4) VectorShuffle 653 651 4 5 2 3 + Store 652 654 + 655: 6(int) Load 8(invocation) + 656: 594(ptr) AccessChain 34(data) 58 586 + 657: 28(i64vec4) Load 656 + 658:603(i64vec3) VectorShuffle 657 657 0 1 2 + 659:603(i64vec3) GroupNonUniformQuadSwap 43 658 42 + 660: 594(ptr) AccessChain 34(data) 655 586 + 661: 28(i64vec4) Load 660 + 662: 28(i64vec4) VectorShuffle 661 659 4 5 6 3 + Store 660 662 + 663: 6(int) Load 8(invocation) + 664: 594(ptr) AccessChain 34(data) 68 586 + 665: 28(i64vec4) Load 664 + 666: 28(i64vec4) GroupNonUniformQuadSwap 43 665 42 + 667: 594(ptr) AccessChain 34(data) 663 586 + Store 667 666 + 668: 6(int) Load 8(invocation) + 669: 587(ptr) AccessChain 34(data) 37 586 38 + 670: 27(int64_t) Load 669 + 671: 27(int64_t) GroupNonUniformQuadSwap 43 670 128 + 672: 587(ptr) AccessChain 34(data) 668 586 38 + Store 672 671 + 673: 6(int) Load 8(invocation) + 674: 594(ptr) AccessChain 34(data) 47 586 + 675: 28(i64vec4) Load 674 + 676:593(i64vec2) VectorShuffle 675 675 0 1 + 677:593(i64vec2) GroupNonUniformQuadSwap 43 676 128 + 678: 594(ptr) AccessChain 34(data) 673 586 + 679: 28(i64vec4) Load 678 + 680: 28(i64vec4) VectorShuffle 679 677 4 5 2 3 + Store 678 680 + 681: 6(int) Load 8(invocation) + 682: 594(ptr) AccessChain 34(data) 58 586 + 683: 28(i64vec4) Load 682 + 684:603(i64vec3) VectorShuffle 683 683 0 1 2 + 685:603(i64vec3) GroupNonUniformQuadSwap 43 684 128 + 686: 594(ptr) AccessChain 34(data) 681 586 + 687: 28(i64vec4) Load 686 + 688: 28(i64vec4) VectorShuffle 687 685 4 5 6 3 + Store 686 688 + 689: 6(int) Load 8(invocation) + 690: 594(ptr) AccessChain 34(data) 68 586 + 691: 28(i64vec4) Load 690 + 692: 28(i64vec4) GroupNonUniformQuadSwap 43 691 128 + 693: 594(ptr) AccessChain 34(data) 689 586 + Store 693 692 + 694: 6(int) Load 8(invocation) + 697: 696(ptr) AccessChain 34(data) 37 695 38 + 698:29(float16_t) Load 697 + 699:29(float16_t) GroupNonUniformQuadBroadcast 43 698 42 + 700: 696(ptr) AccessChain 34(data) 694 695 38 + Store 700 699 + 701: 6(int) Load 8(invocation) + 704: 703(ptr) AccessChain 34(data) 47 695 + 705: 30(f16vec4) Load 704 + 706:702(f16vec2) VectorShuffle 705 705 0 1 + 707:702(f16vec2) GroupNonUniformQuadBroadcast 43 706 42 + 708: 703(ptr) AccessChain 34(data) 701 695 + 709: 30(f16vec4) Load 708 + 710: 30(f16vec4) VectorShuffle 709 707 4 5 2 3 + Store 708 710 + 711: 6(int) Load 8(invocation) + 713: 703(ptr) AccessChain 34(data) 58 695 + 714: 30(f16vec4) Load 713 + 715:712(f16vec3) VectorShuffle 714 714 0 1 2 + 716:712(f16vec3) GroupNonUniformQuadBroadcast 43 715 42 + 717: 703(ptr) AccessChain 34(data) 711 695 + 718: 30(f16vec4) Load 717 + 719: 30(f16vec4) VectorShuffle 718 716 4 5 6 3 + Store 717 719 + 720: 6(int) Load 8(invocation) + 721: 703(ptr) AccessChain 34(data) 68 695 + 722: 30(f16vec4) Load 721 + 723: 30(f16vec4) GroupNonUniformQuadBroadcast 43 722 42 + 724: 703(ptr) AccessChain 34(data) 720 695 + Store 724 723 + 725: 6(int) Load 8(invocation) + 726: 696(ptr) AccessChain 34(data) 37 695 38 + 727:29(float16_t) Load 726 + 728:29(float16_t) GroupNonUniformQuadSwap 43 727 38 + 729: 696(ptr) AccessChain 34(data) 725 695 38 + Store 729 728 + 730: 6(int) Load 8(invocation) + 731: 703(ptr) AccessChain 34(data) 47 695 + 732: 30(f16vec4) Load 731 + 733:702(f16vec2) VectorShuffle 732 732 0 1 + 734:702(f16vec2) GroupNonUniformQuadSwap 43 733 38 + 735: 703(ptr) AccessChain 34(data) 730 695 + 736: 30(f16vec4) Load 735 + 737: 30(f16vec4) VectorShuffle 736 734 4 5 2 3 + Store 735 737 + 738: 6(int) Load 8(invocation) + 739: 703(ptr) AccessChain 34(data) 58 695 + 740: 30(f16vec4) Load 739 + 741:712(f16vec3) VectorShuffle 740 740 0 1 2 + 742:712(f16vec3) GroupNonUniformQuadSwap 43 741 38 + 743: 703(ptr) AccessChain 34(data) 738 695 + 744: 30(f16vec4) Load 743 + 745: 30(f16vec4) VectorShuffle 744 742 4 5 6 3 + Store 743 745 + 746: 6(int) Load 8(invocation) + 747: 703(ptr) AccessChain 34(data) 68 695 + 748: 30(f16vec4) Load 747 + 749: 30(f16vec4) GroupNonUniformQuadSwap 43 748 38 + 750: 703(ptr) AccessChain 34(data) 746 695 + Store 750 749 + 751: 6(int) Load 8(invocation) + 752: 696(ptr) AccessChain 34(data) 37 695 38 + 753:29(float16_t) Load 752 + 754:29(float16_t) GroupNonUniformQuadSwap 43 753 42 + 755: 696(ptr) AccessChain 34(data) 751 695 38 + Store 755 754 + 756: 6(int) Load 8(invocation) + 757: 703(ptr) AccessChain 34(data) 47 695 + 758: 30(f16vec4) Load 757 + 759:702(f16vec2) VectorShuffle 758 758 0 1 + 760:702(f16vec2) GroupNonUniformQuadSwap 43 759 42 + 761: 703(ptr) AccessChain 34(data) 756 695 + 762: 30(f16vec4) Load 761 + 763: 30(f16vec4) VectorShuffle 762 760 4 5 2 3 + Store 761 763 + 764: 6(int) Load 8(invocation) + 765: 703(ptr) AccessChain 34(data) 58 695 + 766: 30(f16vec4) Load 765 + 767:712(f16vec3) VectorShuffle 766 766 0 1 2 + 768:712(f16vec3) GroupNonUniformQuadSwap 43 767 42 + 769: 703(ptr) AccessChain 34(data) 764 695 + 770: 30(f16vec4) Load 769 + 771: 30(f16vec4) VectorShuffle 770 768 4 5 6 3 + Store 769 771 + 772: 6(int) Load 8(invocation) + 773: 703(ptr) AccessChain 34(data) 68 695 + 774: 30(f16vec4) Load 773 + 775: 30(f16vec4) GroupNonUniformQuadSwap 43 774 42 + 776: 703(ptr) AccessChain 34(data) 772 695 + Store 776 775 + 777: 6(int) Load 8(invocation) + 778: 696(ptr) AccessChain 34(data) 37 695 38 + 779:29(float16_t) Load 778 + 780:29(float16_t) GroupNonUniformQuadSwap 43 779 128 + 781: 696(ptr) AccessChain 34(data) 777 695 38 + Store 781 780 + 782: 6(int) Load 8(invocation) + 783: 703(ptr) AccessChain 34(data) 47 695 + 784: 30(f16vec4) Load 783 + 785:702(f16vec2) VectorShuffle 784 784 0 1 + 786:702(f16vec2) GroupNonUniformQuadSwap 43 785 128 + 787: 703(ptr) AccessChain 34(data) 782 695 + 788: 30(f16vec4) Load 787 + 789: 30(f16vec4) VectorShuffle 788 786 4 5 2 3 + Store 787 789 + 790: 6(int) Load 8(invocation) + 791: 703(ptr) AccessChain 34(data) 58 695 + 792: 30(f16vec4) Load 791 + 793:712(f16vec3) VectorShuffle 792 792 0 1 2 + 794:712(f16vec3) GroupNonUniformQuadSwap 43 793 128 + 795: 703(ptr) AccessChain 34(data) 790 695 + 796: 30(f16vec4) Load 795 + 797: 30(f16vec4) VectorShuffle 796 794 4 5 6 3 + Store 795 797 + 798: 6(int) Load 8(invocation) + 799: 703(ptr) AccessChain 34(data) 68 695 + 800: 30(f16vec4) Load 799 + 801: 30(f16vec4) GroupNonUniformQuadSwap 43 800 128 + 802: 703(ptr) AccessChain 34(data) 798 695 + Store 802 801 + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesQuadNeg.comp.out b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesQuadNeg.comp.out new file mode 100644 index 000000000..73b1597eb --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesQuadNeg.comp.out @@ -0,0 +1,117 @@ +spv.subgroupExtendedTypesQuadNeg.comp +ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:36: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:37: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:38: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:41: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:42: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:43: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:46: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:47: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:48: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:51: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:52: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:53: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:56: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:57: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:58: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:61: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:62: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:63: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:66: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:67: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:68: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:71: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:72: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:73: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:76: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:77: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:78: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:81: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:82: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:83: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:86: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:87: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:88: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:89: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:91: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:92: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:93: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:94: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:96: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:97: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:98: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:99: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:101: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:102: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:103: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:104: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:106: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:107: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:108: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:109: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:111: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:112: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:113: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:114: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:116: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:117: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:118: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:119: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:121: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:122: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:123: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:124: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:126: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:127: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:128: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:129: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:131: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:132: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:133: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:134: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:136: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:137: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:138: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:139: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:141: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:142: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:143: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:144: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:146: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:147: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:148: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:149: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:151: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:152: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:153: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:154: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:156: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:157: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:158: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:159: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:161: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:162: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:163: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:164: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 112 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out new file mode 100644 index 000000000..d647ded5e --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out @@ -0,0 +1,616 @@ +spv.subgroupExtendedTypesShuffle.comp +// Module Version 10300 +// Generated by (magic number): 80007 +// Id's are bound by 497 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + Capability GroupNonUniform + Capability GroupNonUniformShuffle + Capability StorageUniformBufferBlock16 + Capability StorageBuffer8BitAccess + Extension "SPV_KHR_8bit_storage" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 10 12 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_KHR_shader_subgroup_shuffle" + Name 4 "main" + Name 8 "invocation" + Name 10 "gl_SubgroupInvocationID" + Name 12 "gl_SubgroupSize" + Name 31 "Buffers" + MemberName 31(Buffers) 0 "i8" + MemberName 31(Buffers) 1 "u8" + MemberName 31(Buffers) 2 "i16" + MemberName 31(Buffers) 3 "u16" + MemberName 31(Buffers) 4 "i64" + MemberName 31(Buffers) 5 "u64" + MemberName 31(Buffers) 6 "f16" + Name 34 "data" + Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 11 RelaxedPrecision + Decorate 12(gl_SubgroupSize) RelaxedPrecision + Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 13 RelaxedPrecision + Decorate 14 RelaxedPrecision + Decorate 16 RelaxedPrecision + MemberDecorate 31(Buffers) 0 Offset 0 + MemberDecorate 31(Buffers) 1 Offset 4 + MemberDecorate 31(Buffers) 2 Offset 8 + MemberDecorate 31(Buffers) 3 Offset 16 + MemberDecorate 31(Buffers) 4 Offset 32 + MemberDecorate 31(Buffers) 5 Offset 64 + MemberDecorate 31(Buffers) 6 Offset 96 + Decorate 31(Buffers) Block + Decorate 34(data) DescriptorSet 0 + Decorate 34(data) Binding 0 + Decorate 496 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypePointer Input 6(int) +10(gl_SubgroupInvocationID): 9(ptr) Variable Input +12(gl_SubgroupSize): 9(ptr) Variable Input + 15: 6(int) Constant 4 + 17: TypeInt 8 1 + 18: TypeVector 17(int8_t) 4 + 19: TypeInt 8 0 + 20: TypeVector 19(int8_t) 4 + 21: TypeInt 16 1 + 22: TypeVector 21(int16_t) 4 + 23: TypeInt 16 0 + 24: TypeVector 23(int16_t) 4 + 25: TypeInt 64 1 + 26: TypeVector 25(int64_t) 4 + 27: TypeInt 64 0 + 28: TypeVector 27(int64_t) 4 + 29: TypeFloat 16 + 30: TypeVector 29(float16_t) 4 + 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) + 32: TypeArray 31(Buffers) 15 + 33: TypePointer StorageBuffer 32 + 34(data): 33(ptr) Variable StorageBuffer + 36: TypeInt 32 1 + 37: 36(int) Constant 0 + 38: 6(int) Constant 0 + 39: TypePointer StorageBuffer 17(int8_t) + 43: 6(int) Constant 3 + 47: 36(int) Constant 1 + 48: TypeVector 17(int8_t) 2 + 49: TypePointer StorageBuffer 18(i8vec4) + 59: 36(int) Constant 2 + 60: TypeVector 17(int8_t) 3 + 70: 36(int) Constant 3 + 107: TypePointer StorageBuffer 19(int8_t) + 114: TypeVector 19(int8_t) 2 + 115: TypePointer StorageBuffer 20(i8vec4) + 125: TypeVector 19(int8_t) 3 + 171: TypePointer StorageBuffer 21(int16_t) + 178: TypeVector 21(int16_t) 2 + 179: TypePointer StorageBuffer 22(i16vec4) + 189: TypeVector 21(int16_t) 3 + 235: TypePointer StorageBuffer 23(int16_t) + 242: TypeVector 23(int16_t) 2 + 243: TypePointer StorageBuffer 24(i16vec4) + 253: TypeVector 23(int16_t) 3 + 299: 36(int) Constant 4 + 300: TypePointer StorageBuffer 25(int64_t) + 307: TypeVector 25(int64_t) 2 + 308: TypePointer StorageBuffer 26(i64vec4) + 318: TypeVector 25(int64_t) 3 + 364: 36(int) Constant 5 + 365: TypePointer StorageBuffer 27(int64_t) + 372: TypeVector 27(int64_t) 2 + 373: TypePointer StorageBuffer 28(i64vec4) + 383: TypeVector 27(int64_t) 3 + 429: 36(int) Constant 6 + 430: TypePointer StorageBuffer 29(float16_t) + 437: TypeVector 29(float16_t) 2 + 438: TypePointer StorageBuffer 30(f16vec4) + 448: TypeVector 29(float16_t) 3 + 493: TypeVector 6(int) 3 + 494: 6(int) Constant 8 + 495: 6(int) Constant 1 + 496: 493(ivec3) ConstantComposite 494 495 495 + 4(main): 2 Function None 3 + 5: Label + 8(invocation): 7(ptr) Variable Function + 11: 6(int) Load 10(gl_SubgroupInvocationID) + 13: 6(int) Load 12(gl_SubgroupSize) + 14: 6(int) IAdd 11 13 + 16: 6(int) UMod 14 15 + Store 8(invocation) 16 + 35: 6(int) Load 8(invocation) + 40: 39(ptr) AccessChain 34(data) 37 37 38 + 41: 17(int8_t) Load 40 + 42: 6(int) Load 8(invocation) + 44: 17(int8_t) GroupNonUniformShuffle 43 41 42 + 45: 39(ptr) AccessChain 34(data) 35 37 38 + Store 45 44 + 46: 6(int) Load 8(invocation) + 50: 49(ptr) AccessChain 34(data) 47 37 + 51: 18(i8vec4) Load 50 + 52: 48(i8vec2) VectorShuffle 51 51 0 1 + 53: 6(int) Load 8(invocation) + 54: 48(i8vec2) GroupNonUniformShuffle 43 52 53 + 55: 49(ptr) AccessChain 34(data) 46 37 + 56: 18(i8vec4) Load 55 + 57: 18(i8vec4) VectorShuffle 56 54 4 5 2 3 + Store 55 57 + 58: 6(int) Load 8(invocation) + 61: 49(ptr) AccessChain 34(data) 59 37 + 62: 18(i8vec4) Load 61 + 63: 60(i8vec3) VectorShuffle 62 62 0 1 2 + 64: 6(int) Load 8(invocation) + 65: 60(i8vec3) GroupNonUniformShuffle 43 63 64 + 66: 49(ptr) AccessChain 34(data) 58 37 + 67: 18(i8vec4) Load 66 + 68: 18(i8vec4) VectorShuffle 67 65 4 5 6 3 + Store 66 68 + 69: 6(int) Load 8(invocation) + 71: 49(ptr) AccessChain 34(data) 70 37 + 72: 18(i8vec4) Load 71 + 73: 6(int) Load 8(invocation) + 74: 18(i8vec4) GroupNonUniformShuffle 43 72 73 + 75: 49(ptr) AccessChain 34(data) 69 37 + Store 75 74 + 76: 6(int) Load 8(invocation) + 77: 39(ptr) AccessChain 34(data) 37 37 38 + 78: 17(int8_t) Load 77 + 79: 6(int) Load 8(invocation) + 80: 17(int8_t) GroupNonUniformShuffleXor 43 78 79 + 81: 39(ptr) AccessChain 34(data) 76 37 38 + Store 81 80 + 82: 6(int) Load 8(invocation) + 83: 49(ptr) AccessChain 34(data) 47 37 + 84: 18(i8vec4) Load 83 + 85: 48(i8vec2) VectorShuffle 84 84 0 1 + 86: 6(int) Load 8(invocation) + 87: 48(i8vec2) GroupNonUniformShuffleXor 43 85 86 + 88: 49(ptr) AccessChain 34(data) 82 37 + 89: 18(i8vec4) Load 88 + 90: 18(i8vec4) VectorShuffle 89 87 4 5 2 3 + Store 88 90 + 91: 6(int) Load 8(invocation) + 92: 49(ptr) AccessChain 34(data) 59 37 + 93: 18(i8vec4) Load 92 + 94: 60(i8vec3) VectorShuffle 93 93 0 1 2 + 95: 6(int) Load 8(invocation) + 96: 60(i8vec3) GroupNonUniformShuffleXor 43 94 95 + 97: 49(ptr) AccessChain 34(data) 91 37 + 98: 18(i8vec4) Load 97 + 99: 18(i8vec4) VectorShuffle 98 96 4 5 6 3 + Store 97 99 + 100: 6(int) Load 8(invocation) + 101: 49(ptr) AccessChain 34(data) 70 37 + 102: 18(i8vec4) Load 101 + 103: 6(int) Load 8(invocation) + 104: 18(i8vec4) GroupNonUniformShuffleXor 43 102 103 + 105: 49(ptr) AccessChain 34(data) 100 37 + Store 105 104 + 106: 6(int) Load 8(invocation) + 108: 107(ptr) AccessChain 34(data) 37 47 38 + 109: 19(int8_t) Load 108 + 110: 6(int) Load 8(invocation) + 111: 19(int8_t) GroupNonUniformShuffle 43 109 110 + 112: 107(ptr) AccessChain 34(data) 106 47 38 + Store 112 111 + 113: 6(int) Load 8(invocation) + 116: 115(ptr) AccessChain 34(data) 47 47 + 117: 20(i8vec4) Load 116 + 118: 114(i8vec2) VectorShuffle 117 117 0 1 + 119: 6(int) Load 8(invocation) + 120: 114(i8vec2) GroupNonUniformShuffle 43 118 119 + 121: 115(ptr) AccessChain 34(data) 113 47 + 122: 20(i8vec4) Load 121 + 123: 20(i8vec4) VectorShuffle 122 120 4 5 2 3 + Store 121 123 + 124: 6(int) Load 8(invocation) + 126: 115(ptr) AccessChain 34(data) 59 47 + 127: 20(i8vec4) Load 126 + 128: 125(i8vec3) VectorShuffle 127 127 0 1 2 + 129: 6(int) Load 8(invocation) + 130: 125(i8vec3) GroupNonUniformShuffle 43 128 129 + 131: 115(ptr) AccessChain 34(data) 124 47 + 132: 20(i8vec4) Load 131 + 133: 20(i8vec4) VectorShuffle 132 130 4 5 6 3 + Store 131 133 + 134: 6(int) Load 8(invocation) + 135: 115(ptr) AccessChain 34(data) 70 47 + 136: 20(i8vec4) Load 135 + 137: 6(int) Load 8(invocation) + 138: 20(i8vec4) GroupNonUniformShuffle 43 136 137 + 139: 115(ptr) AccessChain 34(data) 134 47 + Store 139 138 + 140: 6(int) Load 8(invocation) + 141: 107(ptr) AccessChain 34(data) 37 47 38 + 142: 19(int8_t) Load 141 + 143: 6(int) Load 8(invocation) + 144: 19(int8_t) GroupNonUniformShuffleXor 43 142 143 + 145: 107(ptr) AccessChain 34(data) 140 47 38 + Store 145 144 + 146: 6(int) Load 8(invocation) + 147: 115(ptr) AccessChain 34(data) 47 47 + 148: 20(i8vec4) Load 147 + 149: 114(i8vec2) VectorShuffle 148 148 0 1 + 150: 6(int) Load 8(invocation) + 151: 114(i8vec2) GroupNonUniformShuffleXor 43 149 150 + 152: 115(ptr) AccessChain 34(data) 146 47 + 153: 20(i8vec4) Load 152 + 154: 20(i8vec4) VectorShuffle 153 151 4 5 2 3 + Store 152 154 + 155: 6(int) Load 8(invocation) + 156: 115(ptr) AccessChain 34(data) 59 47 + 157: 20(i8vec4) Load 156 + 158: 125(i8vec3) VectorShuffle 157 157 0 1 2 + 159: 6(int) Load 8(invocation) + 160: 125(i8vec3) GroupNonUniformShuffleXor 43 158 159 + 161: 115(ptr) AccessChain 34(data) 155 47 + 162: 20(i8vec4) Load 161 + 163: 20(i8vec4) VectorShuffle 162 160 4 5 6 3 + Store 161 163 + 164: 6(int) Load 8(invocation) + 165: 115(ptr) AccessChain 34(data) 70 47 + 166: 20(i8vec4) Load 165 + 167: 6(int) Load 8(invocation) + 168: 20(i8vec4) GroupNonUniformShuffleXor 43 166 167 + 169: 115(ptr) AccessChain 34(data) 164 47 + Store 169 168 + 170: 6(int) Load 8(invocation) + 172: 171(ptr) AccessChain 34(data) 37 59 38 + 173: 21(int16_t) Load 172 + 174: 6(int) Load 8(invocation) + 175: 21(int16_t) GroupNonUniformShuffle 43 173 174 + 176: 171(ptr) AccessChain 34(data) 170 59 38 + Store 176 175 + 177: 6(int) Load 8(invocation) + 180: 179(ptr) AccessChain 34(data) 47 59 + 181: 22(i16vec4) Load 180 + 182:178(i16vec2) VectorShuffle 181 181 0 1 + 183: 6(int) Load 8(invocation) + 184:178(i16vec2) GroupNonUniformShuffle 43 182 183 + 185: 179(ptr) AccessChain 34(data) 177 59 + 186: 22(i16vec4) Load 185 + 187: 22(i16vec4) VectorShuffle 186 184 4 5 2 3 + Store 185 187 + 188: 6(int) Load 8(invocation) + 190: 179(ptr) AccessChain 34(data) 59 59 + 191: 22(i16vec4) Load 190 + 192:189(i16vec3) VectorShuffle 191 191 0 1 2 + 193: 6(int) Load 8(invocation) + 194:189(i16vec3) GroupNonUniformShuffle 43 192 193 + 195: 179(ptr) AccessChain 34(data) 188 59 + 196: 22(i16vec4) Load 195 + 197: 22(i16vec4) VectorShuffle 196 194 4 5 6 3 + Store 195 197 + 198: 6(int) Load 8(invocation) + 199: 179(ptr) AccessChain 34(data) 70 59 + 200: 22(i16vec4) Load 199 + 201: 6(int) Load 8(invocation) + 202: 22(i16vec4) GroupNonUniformShuffle 43 200 201 + 203: 179(ptr) AccessChain 34(data) 198 59 + Store 203 202 + 204: 6(int) Load 8(invocation) + 205: 171(ptr) AccessChain 34(data) 37 59 38 + 206: 21(int16_t) Load 205 + 207: 6(int) Load 8(invocation) + 208: 21(int16_t) GroupNonUniformShuffleXor 43 206 207 + 209: 171(ptr) AccessChain 34(data) 204 59 38 + Store 209 208 + 210: 6(int) Load 8(invocation) + 211: 179(ptr) AccessChain 34(data) 47 59 + 212: 22(i16vec4) Load 211 + 213:178(i16vec2) VectorShuffle 212 212 0 1 + 214: 6(int) Load 8(invocation) + 215:178(i16vec2) GroupNonUniformShuffleXor 43 213 214 + 216: 179(ptr) AccessChain 34(data) 210 59 + 217: 22(i16vec4) Load 216 + 218: 22(i16vec4) VectorShuffle 217 215 4 5 2 3 + Store 216 218 + 219: 6(int) Load 8(invocation) + 220: 179(ptr) AccessChain 34(data) 59 59 + 221: 22(i16vec4) Load 220 + 222:189(i16vec3) VectorShuffle 221 221 0 1 2 + 223: 6(int) Load 8(invocation) + 224:189(i16vec3) GroupNonUniformShuffleXor 43 222 223 + 225: 179(ptr) AccessChain 34(data) 219 59 + 226: 22(i16vec4) Load 225 + 227: 22(i16vec4) VectorShuffle 226 224 4 5 6 3 + Store 225 227 + 228: 6(int) Load 8(invocation) + 229: 179(ptr) AccessChain 34(data) 70 59 + 230: 22(i16vec4) Load 229 + 231: 6(int) Load 8(invocation) + 232: 22(i16vec4) GroupNonUniformShuffleXor 43 230 231 + 233: 179(ptr) AccessChain 34(data) 228 59 + Store 233 232 + 234: 6(int) Load 8(invocation) + 236: 235(ptr) AccessChain 34(data) 37 70 38 + 237: 23(int16_t) Load 236 + 238: 6(int) Load 8(invocation) + 239: 23(int16_t) GroupNonUniformShuffle 43 237 238 + 240: 235(ptr) AccessChain 34(data) 234 70 38 + Store 240 239 + 241: 6(int) Load 8(invocation) + 244: 243(ptr) AccessChain 34(data) 47 70 + 245: 24(i16vec4) Load 244 + 246:242(i16vec2) VectorShuffle 245 245 0 1 + 247: 6(int) Load 8(invocation) + 248:242(i16vec2) GroupNonUniformShuffle 43 246 247 + 249: 243(ptr) AccessChain 34(data) 241 70 + 250: 24(i16vec4) Load 249 + 251: 24(i16vec4) VectorShuffle 250 248 4 5 2 3 + Store 249 251 + 252: 6(int) Load 8(invocation) + 254: 243(ptr) AccessChain 34(data) 59 70 + 255: 24(i16vec4) Load 254 + 256:253(i16vec3) VectorShuffle 255 255 0 1 2 + 257: 6(int) Load 8(invocation) + 258:253(i16vec3) GroupNonUniformShuffle 43 256 257 + 259: 243(ptr) AccessChain 34(data) 252 70 + 260: 24(i16vec4) Load 259 + 261: 24(i16vec4) VectorShuffle 260 258 4 5 6 3 + Store 259 261 + 262: 6(int) Load 8(invocation) + 263: 243(ptr) AccessChain 34(data) 70 70 + 264: 24(i16vec4) Load 263 + 265: 6(int) Load 8(invocation) + 266: 24(i16vec4) GroupNonUniformShuffle 43 264 265 + 267: 243(ptr) AccessChain 34(data) 262 70 + Store 267 266 + 268: 6(int) Load 8(invocation) + 269: 235(ptr) AccessChain 34(data) 37 70 38 + 270: 23(int16_t) Load 269 + 271: 6(int) Load 8(invocation) + 272: 23(int16_t) GroupNonUniformShuffleXor 43 270 271 + 273: 235(ptr) AccessChain 34(data) 268 70 38 + Store 273 272 + 274: 6(int) Load 8(invocation) + 275: 243(ptr) AccessChain 34(data) 47 70 + 276: 24(i16vec4) Load 275 + 277:242(i16vec2) VectorShuffle 276 276 0 1 + 278: 6(int) Load 8(invocation) + 279:242(i16vec2) GroupNonUniformShuffleXor 43 277 278 + 280: 243(ptr) AccessChain 34(data) 274 70 + 281: 24(i16vec4) Load 280 + 282: 24(i16vec4) VectorShuffle 281 279 4 5 2 3 + Store 280 282 + 283: 6(int) Load 8(invocation) + 284: 243(ptr) AccessChain 34(data) 59 70 + 285: 24(i16vec4) Load 284 + 286:253(i16vec3) VectorShuffle 285 285 0 1 2 + 287: 6(int) Load 8(invocation) + 288:253(i16vec3) GroupNonUniformShuffleXor 43 286 287 + 289: 243(ptr) AccessChain 34(data) 283 70 + 290: 24(i16vec4) Load 289 + 291: 24(i16vec4) VectorShuffle 290 288 4 5 6 3 + Store 289 291 + 292: 6(int) Load 8(invocation) + 293: 243(ptr) AccessChain 34(data) 70 70 + 294: 24(i16vec4) Load 293 + 295: 6(int) Load 8(invocation) + 296: 24(i16vec4) GroupNonUniformShuffleXor 43 294 295 + 297: 243(ptr) AccessChain 34(data) 292 70 + Store 297 296 + 298: 6(int) Load 8(invocation) + 301: 300(ptr) AccessChain 34(data) 37 299 38 + 302: 25(int64_t) Load 301 + 303: 6(int) Load 8(invocation) + 304: 25(int64_t) GroupNonUniformShuffle 43 302 303 + 305: 300(ptr) AccessChain 34(data) 298 299 38 + Store 305 304 + 306: 6(int) Load 8(invocation) + 309: 308(ptr) AccessChain 34(data) 47 299 + 310: 26(i64vec4) Load 309 + 311:307(i64vec2) VectorShuffle 310 310 0 1 + 312: 6(int) Load 8(invocation) + 313:307(i64vec2) GroupNonUniformShuffle 43 311 312 + 314: 308(ptr) AccessChain 34(data) 306 299 + 315: 26(i64vec4) Load 314 + 316: 26(i64vec4) VectorShuffle 315 313 4 5 2 3 + Store 314 316 + 317: 6(int) Load 8(invocation) + 319: 308(ptr) AccessChain 34(data) 59 299 + 320: 26(i64vec4) Load 319 + 321:318(i64vec3) VectorShuffle 320 320 0 1 2 + 322: 6(int) Load 8(invocation) + 323:318(i64vec3) GroupNonUniformShuffle 43 321 322 + 324: 308(ptr) AccessChain 34(data) 317 299 + 325: 26(i64vec4) Load 324 + 326: 26(i64vec4) VectorShuffle 325 323 4 5 6 3 + Store 324 326 + 327: 6(int) Load 8(invocation) + 328: 308(ptr) AccessChain 34(data) 70 299 + 329: 26(i64vec4) Load 328 + 330: 6(int) Load 8(invocation) + 331: 26(i64vec4) GroupNonUniformShuffle 43 329 330 + 332: 308(ptr) AccessChain 34(data) 327 299 + Store 332 331 + 333: 6(int) Load 8(invocation) + 334: 300(ptr) AccessChain 34(data) 37 299 38 + 335: 25(int64_t) Load 334 + 336: 6(int) Load 8(invocation) + 337: 25(int64_t) GroupNonUniformShuffleXor 43 335 336 + 338: 300(ptr) AccessChain 34(data) 333 299 38 + Store 338 337 + 339: 6(int) Load 8(invocation) + 340: 308(ptr) AccessChain 34(data) 47 299 + 341: 26(i64vec4) Load 340 + 342:307(i64vec2) VectorShuffle 341 341 0 1 + 343: 6(int) Load 8(invocation) + 344:307(i64vec2) GroupNonUniformShuffleXor 43 342 343 + 345: 308(ptr) AccessChain 34(data) 339 299 + 346: 26(i64vec4) Load 345 + 347: 26(i64vec4) VectorShuffle 346 344 4 5 2 3 + Store 345 347 + 348: 6(int) Load 8(invocation) + 349: 308(ptr) AccessChain 34(data) 59 299 + 350: 26(i64vec4) Load 349 + 351:318(i64vec3) VectorShuffle 350 350 0 1 2 + 352: 6(int) Load 8(invocation) + 353:318(i64vec3) GroupNonUniformShuffleXor 43 351 352 + 354: 308(ptr) AccessChain 34(data) 348 299 + 355: 26(i64vec4) Load 354 + 356: 26(i64vec4) VectorShuffle 355 353 4 5 6 3 + Store 354 356 + 357: 6(int) Load 8(invocation) + 358: 308(ptr) AccessChain 34(data) 70 299 + 359: 26(i64vec4) Load 358 + 360: 6(int) Load 8(invocation) + 361: 26(i64vec4) GroupNonUniformShuffleXor 43 359 360 + 362: 308(ptr) AccessChain 34(data) 357 299 + Store 362 361 + 363: 6(int) Load 8(invocation) + 366: 365(ptr) AccessChain 34(data) 37 364 38 + 367: 27(int64_t) Load 366 + 368: 6(int) Load 8(invocation) + 369: 27(int64_t) GroupNonUniformShuffle 43 367 368 + 370: 365(ptr) AccessChain 34(data) 363 364 38 + Store 370 369 + 371: 6(int) Load 8(invocation) + 374: 373(ptr) AccessChain 34(data) 47 364 + 375: 28(i64vec4) Load 374 + 376:372(i64vec2) VectorShuffle 375 375 0 1 + 377: 6(int) Load 8(invocation) + 378:372(i64vec2) GroupNonUniformShuffle 43 376 377 + 379: 373(ptr) AccessChain 34(data) 371 364 + 380: 28(i64vec4) Load 379 + 381: 28(i64vec4) VectorShuffle 380 378 4 5 2 3 + Store 379 381 + 382: 6(int) Load 8(invocation) + 384: 373(ptr) AccessChain 34(data) 59 364 + 385: 28(i64vec4) Load 384 + 386:383(i64vec3) VectorShuffle 385 385 0 1 2 + 387: 6(int) Load 8(invocation) + 388:383(i64vec3) GroupNonUniformShuffle 43 386 387 + 389: 373(ptr) AccessChain 34(data) 382 364 + 390: 28(i64vec4) Load 389 + 391: 28(i64vec4) VectorShuffle 390 388 4 5 6 3 + Store 389 391 + 392: 6(int) Load 8(invocation) + 393: 373(ptr) AccessChain 34(data) 70 364 + 394: 28(i64vec4) Load 393 + 395: 6(int) Load 8(invocation) + 396: 28(i64vec4) GroupNonUniformShuffle 43 394 395 + 397: 373(ptr) AccessChain 34(data) 392 364 + Store 397 396 + 398: 6(int) Load 8(invocation) + 399: 365(ptr) AccessChain 34(data) 37 364 38 + 400: 27(int64_t) Load 399 + 401: 6(int) Load 8(invocation) + 402: 27(int64_t) GroupNonUniformShuffleXor 43 400 401 + 403: 365(ptr) AccessChain 34(data) 398 364 38 + Store 403 402 + 404: 6(int) Load 8(invocation) + 405: 373(ptr) AccessChain 34(data) 47 364 + 406: 28(i64vec4) Load 405 + 407:372(i64vec2) VectorShuffle 406 406 0 1 + 408: 6(int) Load 8(invocation) + 409:372(i64vec2) GroupNonUniformShuffleXor 43 407 408 + 410: 373(ptr) AccessChain 34(data) 404 364 + 411: 28(i64vec4) Load 410 + 412: 28(i64vec4) VectorShuffle 411 409 4 5 2 3 + Store 410 412 + 413: 6(int) Load 8(invocation) + 414: 373(ptr) AccessChain 34(data) 59 364 + 415: 28(i64vec4) Load 414 + 416:383(i64vec3) VectorShuffle 415 415 0 1 2 + 417: 6(int) Load 8(invocation) + 418:383(i64vec3) GroupNonUniformShuffleXor 43 416 417 + 419: 373(ptr) AccessChain 34(data) 413 364 + 420: 28(i64vec4) Load 419 + 421: 28(i64vec4) VectorShuffle 420 418 4 5 6 3 + Store 419 421 + 422: 6(int) Load 8(invocation) + 423: 373(ptr) AccessChain 34(data) 70 364 + 424: 28(i64vec4) Load 423 + 425: 6(int) Load 8(invocation) + 426: 28(i64vec4) GroupNonUniformShuffleXor 43 424 425 + 427: 373(ptr) AccessChain 34(data) 422 364 + Store 427 426 + 428: 6(int) Load 8(invocation) + 431: 430(ptr) AccessChain 34(data) 37 429 38 + 432:29(float16_t) Load 431 + 433: 6(int) Load 8(invocation) + 434:29(float16_t) GroupNonUniformShuffle 43 432 433 + 435: 430(ptr) AccessChain 34(data) 428 429 38 + Store 435 434 + 436: 6(int) Load 8(invocation) + 439: 438(ptr) AccessChain 34(data) 47 429 + 440: 30(f16vec4) Load 439 + 441:437(f16vec2) VectorShuffle 440 440 0 1 + 442: 6(int) Load 8(invocation) + 443:437(f16vec2) GroupNonUniformShuffle 43 441 442 + 444: 438(ptr) AccessChain 34(data) 436 429 + 445: 30(f16vec4) Load 444 + 446: 30(f16vec4) VectorShuffle 445 443 4 5 2 3 + Store 444 446 + 447: 6(int) Load 8(invocation) + 449: 438(ptr) AccessChain 34(data) 59 429 + 450: 30(f16vec4) Load 449 + 451:448(f16vec3) VectorShuffle 450 450 0 1 2 + 452: 6(int) Load 8(invocation) + 453:448(f16vec3) GroupNonUniformShuffle 43 451 452 + 454: 438(ptr) AccessChain 34(data) 447 429 + 455: 30(f16vec4) Load 454 + 456: 30(f16vec4) VectorShuffle 455 453 4 5 6 3 + Store 454 456 + 457: 6(int) Load 8(invocation) + 458: 438(ptr) AccessChain 34(data) 70 429 + 459: 30(f16vec4) Load 458 + 460: 6(int) Load 8(invocation) + 461: 30(f16vec4) GroupNonUniformShuffle 43 459 460 + 462: 438(ptr) AccessChain 34(data) 457 429 + Store 462 461 + 463: 6(int) Load 8(invocation) + 464: 430(ptr) AccessChain 34(data) 37 429 38 + 465:29(float16_t) Load 464 + 466: 6(int) Load 8(invocation) + 467:29(float16_t) GroupNonUniformShuffleXor 43 465 466 + 468: 430(ptr) AccessChain 34(data) 463 429 38 + Store 468 467 + 469: 6(int) Load 8(invocation) + 470: 438(ptr) AccessChain 34(data) 47 429 + 471: 30(f16vec4) Load 470 + 472:437(f16vec2) VectorShuffle 471 471 0 1 + 473: 6(int) Load 8(invocation) + 474:437(f16vec2) GroupNonUniformShuffleXor 43 472 473 + 475: 438(ptr) AccessChain 34(data) 469 429 + 476: 30(f16vec4) Load 475 + 477: 30(f16vec4) VectorShuffle 476 474 4 5 2 3 + Store 475 477 + 478: 6(int) Load 8(invocation) + 479: 438(ptr) AccessChain 34(data) 59 429 + 480: 30(f16vec4) Load 479 + 481:448(f16vec3) VectorShuffle 480 480 0 1 2 + 482: 6(int) Load 8(invocation) + 483:448(f16vec3) GroupNonUniformShuffleXor 43 481 482 + 484: 438(ptr) AccessChain 34(data) 478 429 + 485: 30(f16vec4) Load 484 + 486: 30(f16vec4) VectorShuffle 485 483 4 5 6 3 + Store 484 486 + 487: 6(int) Load 8(invocation) + 488: 438(ptr) AccessChain 34(data) 70 429 + 489: 30(f16vec4) Load 488 + 490: 6(int) Load 8(invocation) + 491: 30(f16vec4) GroupNonUniformShuffleXor 43 489 490 + 492: 438(ptr) AccessChain 34(data) 487 429 + Store 492 491 + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesShuffleNeg.comp.out b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesShuffleNeg.comp.out new file mode 100644 index 000000000..df1234b05 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesShuffleNeg.comp.out @@ -0,0 +1,61 @@ +spv.subgroupExtendedTypesShuffleNeg.comp +ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:36: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:37: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:38: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:41: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:42: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:43: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:46: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:47: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:48: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:51: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:52: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:53: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:56: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:57: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:58: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:61: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:62: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:63: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:66: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:67: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:68: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:71: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:72: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:73: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:76: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:77: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:78: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:81: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:82: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:83: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:86: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:87: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:88: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:89: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:91: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:92: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:93: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:94: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 56 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out new file mode 100644 index 000000000..ef5def561 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out @@ -0,0 +1,616 @@ +spv.subgroupExtendedTypesShuffleRelative.comp +// Module Version 10300 +// Generated by (magic number): 80007 +// Id's are bound by 497 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + Capability GroupNonUniform + Capability GroupNonUniformShuffleRelative + Capability StorageUniformBufferBlock16 + Capability StorageBuffer8BitAccess + Extension "SPV_KHR_8bit_storage" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 10 12 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_KHR_shader_subgroup_shuffle_relative" + Name 4 "main" + Name 8 "invocation" + Name 10 "gl_SubgroupInvocationID" + Name 12 "gl_SubgroupSize" + Name 31 "Buffers" + MemberName 31(Buffers) 0 "i8" + MemberName 31(Buffers) 1 "u8" + MemberName 31(Buffers) 2 "i16" + MemberName 31(Buffers) 3 "u16" + MemberName 31(Buffers) 4 "i64" + MemberName 31(Buffers) 5 "u64" + MemberName 31(Buffers) 6 "f16" + Name 34 "data" + Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 11 RelaxedPrecision + Decorate 12(gl_SubgroupSize) RelaxedPrecision + Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 13 RelaxedPrecision + Decorate 14 RelaxedPrecision + Decorate 16 RelaxedPrecision + MemberDecorate 31(Buffers) 0 Offset 0 + MemberDecorate 31(Buffers) 1 Offset 4 + MemberDecorate 31(Buffers) 2 Offset 8 + MemberDecorate 31(Buffers) 3 Offset 16 + MemberDecorate 31(Buffers) 4 Offset 32 + MemberDecorate 31(Buffers) 5 Offset 64 + MemberDecorate 31(Buffers) 6 Offset 96 + Decorate 31(Buffers) Block + Decorate 34(data) DescriptorSet 0 + Decorate 34(data) Binding 0 + Decorate 496 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypePointer Input 6(int) +10(gl_SubgroupInvocationID): 9(ptr) Variable Input +12(gl_SubgroupSize): 9(ptr) Variable Input + 15: 6(int) Constant 4 + 17: TypeInt 8 1 + 18: TypeVector 17(int8_t) 4 + 19: TypeInt 8 0 + 20: TypeVector 19(int8_t) 4 + 21: TypeInt 16 1 + 22: TypeVector 21(int16_t) 4 + 23: TypeInt 16 0 + 24: TypeVector 23(int16_t) 4 + 25: TypeInt 64 1 + 26: TypeVector 25(int64_t) 4 + 27: TypeInt 64 0 + 28: TypeVector 27(int64_t) 4 + 29: TypeFloat 16 + 30: TypeVector 29(float16_t) 4 + 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) + 32: TypeArray 31(Buffers) 15 + 33: TypePointer StorageBuffer 32 + 34(data): 33(ptr) Variable StorageBuffer + 36: TypeInt 32 1 + 37: 36(int) Constant 0 + 38: 6(int) Constant 0 + 39: TypePointer StorageBuffer 17(int8_t) + 43: 6(int) Constant 3 + 47: 36(int) Constant 1 + 48: TypeVector 17(int8_t) 2 + 49: TypePointer StorageBuffer 18(i8vec4) + 59: 36(int) Constant 2 + 60: TypeVector 17(int8_t) 3 + 70: 36(int) Constant 3 + 107: TypePointer StorageBuffer 19(int8_t) + 114: TypeVector 19(int8_t) 2 + 115: TypePointer StorageBuffer 20(i8vec4) + 125: TypeVector 19(int8_t) 3 + 171: TypePointer StorageBuffer 21(int16_t) + 178: TypeVector 21(int16_t) 2 + 179: TypePointer StorageBuffer 22(i16vec4) + 189: TypeVector 21(int16_t) 3 + 235: TypePointer StorageBuffer 23(int16_t) + 242: TypeVector 23(int16_t) 2 + 243: TypePointer StorageBuffer 24(i16vec4) + 253: TypeVector 23(int16_t) 3 + 299: 36(int) Constant 4 + 300: TypePointer StorageBuffer 25(int64_t) + 307: TypeVector 25(int64_t) 2 + 308: TypePointer StorageBuffer 26(i64vec4) + 318: TypeVector 25(int64_t) 3 + 364: 36(int) Constant 5 + 365: TypePointer StorageBuffer 27(int64_t) + 372: TypeVector 27(int64_t) 2 + 373: TypePointer StorageBuffer 28(i64vec4) + 383: TypeVector 27(int64_t) 3 + 429: 36(int) Constant 6 + 430: TypePointer StorageBuffer 29(float16_t) + 437: TypeVector 29(float16_t) 2 + 438: TypePointer StorageBuffer 30(f16vec4) + 448: TypeVector 29(float16_t) 3 + 493: TypeVector 6(int) 3 + 494: 6(int) Constant 8 + 495: 6(int) Constant 1 + 496: 493(ivec3) ConstantComposite 494 495 495 + 4(main): 2 Function None 3 + 5: Label + 8(invocation): 7(ptr) Variable Function + 11: 6(int) Load 10(gl_SubgroupInvocationID) + 13: 6(int) Load 12(gl_SubgroupSize) + 14: 6(int) IAdd 11 13 + 16: 6(int) UMod 14 15 + Store 8(invocation) 16 + 35: 6(int) Load 8(invocation) + 40: 39(ptr) AccessChain 34(data) 37 37 38 + 41: 17(int8_t) Load 40 + 42: 6(int) Load 8(invocation) + 44: 17(int8_t) GroupNonUniformShuffleUp 43 41 42 + 45: 39(ptr) AccessChain 34(data) 35 37 38 + Store 45 44 + 46: 6(int) Load 8(invocation) + 50: 49(ptr) AccessChain 34(data) 47 37 + 51: 18(i8vec4) Load 50 + 52: 48(i8vec2) VectorShuffle 51 51 0 1 + 53: 6(int) Load 8(invocation) + 54: 48(i8vec2) GroupNonUniformShuffleUp 43 52 53 + 55: 49(ptr) AccessChain 34(data) 46 37 + 56: 18(i8vec4) Load 55 + 57: 18(i8vec4) VectorShuffle 56 54 4 5 2 3 + Store 55 57 + 58: 6(int) Load 8(invocation) + 61: 49(ptr) AccessChain 34(data) 59 37 + 62: 18(i8vec4) Load 61 + 63: 60(i8vec3) VectorShuffle 62 62 0 1 2 + 64: 6(int) Load 8(invocation) + 65: 60(i8vec3) GroupNonUniformShuffleUp 43 63 64 + 66: 49(ptr) AccessChain 34(data) 58 37 + 67: 18(i8vec4) Load 66 + 68: 18(i8vec4) VectorShuffle 67 65 4 5 6 3 + Store 66 68 + 69: 6(int) Load 8(invocation) + 71: 49(ptr) AccessChain 34(data) 70 37 + 72: 18(i8vec4) Load 71 + 73: 6(int) Load 8(invocation) + 74: 18(i8vec4) GroupNonUniformShuffleUp 43 72 73 + 75: 49(ptr) AccessChain 34(data) 69 37 + Store 75 74 + 76: 6(int) Load 8(invocation) + 77: 39(ptr) AccessChain 34(data) 37 37 38 + 78: 17(int8_t) Load 77 + 79: 6(int) Load 8(invocation) + 80: 17(int8_t) GroupNonUniformShuffleDown 43 78 79 + 81: 39(ptr) AccessChain 34(data) 76 37 38 + Store 81 80 + 82: 6(int) Load 8(invocation) + 83: 49(ptr) AccessChain 34(data) 47 37 + 84: 18(i8vec4) Load 83 + 85: 48(i8vec2) VectorShuffle 84 84 0 1 + 86: 6(int) Load 8(invocation) + 87: 48(i8vec2) GroupNonUniformShuffleDown 43 85 86 + 88: 49(ptr) AccessChain 34(data) 82 37 + 89: 18(i8vec4) Load 88 + 90: 18(i8vec4) VectorShuffle 89 87 4 5 2 3 + Store 88 90 + 91: 6(int) Load 8(invocation) + 92: 49(ptr) AccessChain 34(data) 59 37 + 93: 18(i8vec4) Load 92 + 94: 60(i8vec3) VectorShuffle 93 93 0 1 2 + 95: 6(int) Load 8(invocation) + 96: 60(i8vec3) GroupNonUniformShuffleDown 43 94 95 + 97: 49(ptr) AccessChain 34(data) 91 37 + 98: 18(i8vec4) Load 97 + 99: 18(i8vec4) VectorShuffle 98 96 4 5 6 3 + Store 97 99 + 100: 6(int) Load 8(invocation) + 101: 49(ptr) AccessChain 34(data) 70 37 + 102: 18(i8vec4) Load 101 + 103: 6(int) Load 8(invocation) + 104: 18(i8vec4) GroupNonUniformShuffleDown 43 102 103 + 105: 49(ptr) AccessChain 34(data) 100 37 + Store 105 104 + 106: 6(int) Load 8(invocation) + 108: 107(ptr) AccessChain 34(data) 37 47 38 + 109: 19(int8_t) Load 108 + 110: 6(int) Load 8(invocation) + 111: 19(int8_t) GroupNonUniformShuffleUp 43 109 110 + 112: 107(ptr) AccessChain 34(data) 106 47 38 + Store 112 111 + 113: 6(int) Load 8(invocation) + 116: 115(ptr) AccessChain 34(data) 47 47 + 117: 20(i8vec4) Load 116 + 118: 114(i8vec2) VectorShuffle 117 117 0 1 + 119: 6(int) Load 8(invocation) + 120: 114(i8vec2) GroupNonUniformShuffleUp 43 118 119 + 121: 115(ptr) AccessChain 34(data) 113 47 + 122: 20(i8vec4) Load 121 + 123: 20(i8vec4) VectorShuffle 122 120 4 5 2 3 + Store 121 123 + 124: 6(int) Load 8(invocation) + 126: 115(ptr) AccessChain 34(data) 59 47 + 127: 20(i8vec4) Load 126 + 128: 125(i8vec3) VectorShuffle 127 127 0 1 2 + 129: 6(int) Load 8(invocation) + 130: 125(i8vec3) GroupNonUniformShuffleUp 43 128 129 + 131: 115(ptr) AccessChain 34(data) 124 47 + 132: 20(i8vec4) Load 131 + 133: 20(i8vec4) VectorShuffle 132 130 4 5 6 3 + Store 131 133 + 134: 6(int) Load 8(invocation) + 135: 115(ptr) AccessChain 34(data) 70 47 + 136: 20(i8vec4) Load 135 + 137: 6(int) Load 8(invocation) + 138: 20(i8vec4) GroupNonUniformShuffleUp 43 136 137 + 139: 115(ptr) AccessChain 34(data) 134 47 + Store 139 138 + 140: 6(int) Load 8(invocation) + 141: 107(ptr) AccessChain 34(data) 37 47 38 + 142: 19(int8_t) Load 141 + 143: 6(int) Load 8(invocation) + 144: 19(int8_t) GroupNonUniformShuffleDown 43 142 143 + 145: 107(ptr) AccessChain 34(data) 140 47 38 + Store 145 144 + 146: 6(int) Load 8(invocation) + 147: 115(ptr) AccessChain 34(data) 47 47 + 148: 20(i8vec4) Load 147 + 149: 114(i8vec2) VectorShuffle 148 148 0 1 + 150: 6(int) Load 8(invocation) + 151: 114(i8vec2) GroupNonUniformShuffleDown 43 149 150 + 152: 115(ptr) AccessChain 34(data) 146 47 + 153: 20(i8vec4) Load 152 + 154: 20(i8vec4) VectorShuffle 153 151 4 5 2 3 + Store 152 154 + 155: 6(int) Load 8(invocation) + 156: 115(ptr) AccessChain 34(data) 59 47 + 157: 20(i8vec4) Load 156 + 158: 125(i8vec3) VectorShuffle 157 157 0 1 2 + 159: 6(int) Load 8(invocation) + 160: 125(i8vec3) GroupNonUniformShuffleDown 43 158 159 + 161: 115(ptr) AccessChain 34(data) 155 47 + 162: 20(i8vec4) Load 161 + 163: 20(i8vec4) VectorShuffle 162 160 4 5 6 3 + Store 161 163 + 164: 6(int) Load 8(invocation) + 165: 115(ptr) AccessChain 34(data) 70 47 + 166: 20(i8vec4) Load 165 + 167: 6(int) Load 8(invocation) + 168: 20(i8vec4) GroupNonUniformShuffleDown 43 166 167 + 169: 115(ptr) AccessChain 34(data) 164 47 + Store 169 168 + 170: 6(int) Load 8(invocation) + 172: 171(ptr) AccessChain 34(data) 37 59 38 + 173: 21(int16_t) Load 172 + 174: 6(int) Load 8(invocation) + 175: 21(int16_t) GroupNonUniformShuffleUp 43 173 174 + 176: 171(ptr) AccessChain 34(data) 170 59 38 + Store 176 175 + 177: 6(int) Load 8(invocation) + 180: 179(ptr) AccessChain 34(data) 47 59 + 181: 22(i16vec4) Load 180 + 182:178(i16vec2) VectorShuffle 181 181 0 1 + 183: 6(int) Load 8(invocation) + 184:178(i16vec2) GroupNonUniformShuffleUp 43 182 183 + 185: 179(ptr) AccessChain 34(data) 177 59 + 186: 22(i16vec4) Load 185 + 187: 22(i16vec4) VectorShuffle 186 184 4 5 2 3 + Store 185 187 + 188: 6(int) Load 8(invocation) + 190: 179(ptr) AccessChain 34(data) 59 59 + 191: 22(i16vec4) Load 190 + 192:189(i16vec3) VectorShuffle 191 191 0 1 2 + 193: 6(int) Load 8(invocation) + 194:189(i16vec3) GroupNonUniformShuffleUp 43 192 193 + 195: 179(ptr) AccessChain 34(data) 188 59 + 196: 22(i16vec4) Load 195 + 197: 22(i16vec4) VectorShuffle 196 194 4 5 6 3 + Store 195 197 + 198: 6(int) Load 8(invocation) + 199: 179(ptr) AccessChain 34(data) 70 59 + 200: 22(i16vec4) Load 199 + 201: 6(int) Load 8(invocation) + 202: 22(i16vec4) GroupNonUniformShuffleUp 43 200 201 + 203: 179(ptr) AccessChain 34(data) 198 59 + Store 203 202 + 204: 6(int) Load 8(invocation) + 205: 171(ptr) AccessChain 34(data) 37 59 38 + 206: 21(int16_t) Load 205 + 207: 6(int) Load 8(invocation) + 208: 21(int16_t) GroupNonUniformShuffleDown 43 206 207 + 209: 171(ptr) AccessChain 34(data) 204 59 38 + Store 209 208 + 210: 6(int) Load 8(invocation) + 211: 179(ptr) AccessChain 34(data) 47 59 + 212: 22(i16vec4) Load 211 + 213:178(i16vec2) VectorShuffle 212 212 0 1 + 214: 6(int) Load 8(invocation) + 215:178(i16vec2) GroupNonUniformShuffleDown 43 213 214 + 216: 179(ptr) AccessChain 34(data) 210 59 + 217: 22(i16vec4) Load 216 + 218: 22(i16vec4) VectorShuffle 217 215 4 5 2 3 + Store 216 218 + 219: 6(int) Load 8(invocation) + 220: 179(ptr) AccessChain 34(data) 59 59 + 221: 22(i16vec4) Load 220 + 222:189(i16vec3) VectorShuffle 221 221 0 1 2 + 223: 6(int) Load 8(invocation) + 224:189(i16vec3) GroupNonUniformShuffleDown 43 222 223 + 225: 179(ptr) AccessChain 34(data) 219 59 + 226: 22(i16vec4) Load 225 + 227: 22(i16vec4) VectorShuffle 226 224 4 5 6 3 + Store 225 227 + 228: 6(int) Load 8(invocation) + 229: 179(ptr) AccessChain 34(data) 70 59 + 230: 22(i16vec4) Load 229 + 231: 6(int) Load 8(invocation) + 232: 22(i16vec4) GroupNonUniformShuffleDown 43 230 231 + 233: 179(ptr) AccessChain 34(data) 228 59 + Store 233 232 + 234: 6(int) Load 8(invocation) + 236: 235(ptr) AccessChain 34(data) 37 70 38 + 237: 23(int16_t) Load 236 + 238: 6(int) Load 8(invocation) + 239: 23(int16_t) GroupNonUniformShuffleUp 43 237 238 + 240: 235(ptr) AccessChain 34(data) 234 70 38 + Store 240 239 + 241: 6(int) Load 8(invocation) + 244: 243(ptr) AccessChain 34(data) 47 70 + 245: 24(i16vec4) Load 244 + 246:242(i16vec2) VectorShuffle 245 245 0 1 + 247: 6(int) Load 8(invocation) + 248:242(i16vec2) GroupNonUniformShuffleUp 43 246 247 + 249: 243(ptr) AccessChain 34(data) 241 70 + 250: 24(i16vec4) Load 249 + 251: 24(i16vec4) VectorShuffle 250 248 4 5 2 3 + Store 249 251 + 252: 6(int) Load 8(invocation) + 254: 243(ptr) AccessChain 34(data) 59 70 + 255: 24(i16vec4) Load 254 + 256:253(i16vec3) VectorShuffle 255 255 0 1 2 + 257: 6(int) Load 8(invocation) + 258:253(i16vec3) GroupNonUniformShuffleUp 43 256 257 + 259: 243(ptr) AccessChain 34(data) 252 70 + 260: 24(i16vec4) Load 259 + 261: 24(i16vec4) VectorShuffle 260 258 4 5 6 3 + Store 259 261 + 262: 6(int) Load 8(invocation) + 263: 243(ptr) AccessChain 34(data) 70 70 + 264: 24(i16vec4) Load 263 + 265: 6(int) Load 8(invocation) + 266: 24(i16vec4) GroupNonUniformShuffleUp 43 264 265 + 267: 243(ptr) AccessChain 34(data) 262 70 + Store 267 266 + 268: 6(int) Load 8(invocation) + 269: 235(ptr) AccessChain 34(data) 37 70 38 + 270: 23(int16_t) Load 269 + 271: 6(int) Load 8(invocation) + 272: 23(int16_t) GroupNonUniformShuffleDown 43 270 271 + 273: 235(ptr) AccessChain 34(data) 268 70 38 + Store 273 272 + 274: 6(int) Load 8(invocation) + 275: 243(ptr) AccessChain 34(data) 47 70 + 276: 24(i16vec4) Load 275 + 277:242(i16vec2) VectorShuffle 276 276 0 1 + 278: 6(int) Load 8(invocation) + 279:242(i16vec2) GroupNonUniformShuffleDown 43 277 278 + 280: 243(ptr) AccessChain 34(data) 274 70 + 281: 24(i16vec4) Load 280 + 282: 24(i16vec4) VectorShuffle 281 279 4 5 2 3 + Store 280 282 + 283: 6(int) Load 8(invocation) + 284: 243(ptr) AccessChain 34(data) 59 70 + 285: 24(i16vec4) Load 284 + 286:253(i16vec3) VectorShuffle 285 285 0 1 2 + 287: 6(int) Load 8(invocation) + 288:253(i16vec3) GroupNonUniformShuffleDown 43 286 287 + 289: 243(ptr) AccessChain 34(data) 283 70 + 290: 24(i16vec4) Load 289 + 291: 24(i16vec4) VectorShuffle 290 288 4 5 6 3 + Store 289 291 + 292: 6(int) Load 8(invocation) + 293: 243(ptr) AccessChain 34(data) 70 70 + 294: 24(i16vec4) Load 293 + 295: 6(int) Load 8(invocation) + 296: 24(i16vec4) GroupNonUniformShuffleDown 43 294 295 + 297: 243(ptr) AccessChain 34(data) 292 70 + Store 297 296 + 298: 6(int) Load 8(invocation) + 301: 300(ptr) AccessChain 34(data) 37 299 38 + 302: 25(int64_t) Load 301 + 303: 6(int) Load 8(invocation) + 304: 25(int64_t) GroupNonUniformShuffleUp 43 302 303 + 305: 300(ptr) AccessChain 34(data) 298 299 38 + Store 305 304 + 306: 6(int) Load 8(invocation) + 309: 308(ptr) AccessChain 34(data) 47 299 + 310: 26(i64vec4) Load 309 + 311:307(i64vec2) VectorShuffle 310 310 0 1 + 312: 6(int) Load 8(invocation) + 313:307(i64vec2) GroupNonUniformShuffleUp 43 311 312 + 314: 308(ptr) AccessChain 34(data) 306 299 + 315: 26(i64vec4) Load 314 + 316: 26(i64vec4) VectorShuffle 315 313 4 5 2 3 + Store 314 316 + 317: 6(int) Load 8(invocation) + 319: 308(ptr) AccessChain 34(data) 59 299 + 320: 26(i64vec4) Load 319 + 321:318(i64vec3) VectorShuffle 320 320 0 1 2 + 322: 6(int) Load 8(invocation) + 323:318(i64vec3) GroupNonUniformShuffleUp 43 321 322 + 324: 308(ptr) AccessChain 34(data) 317 299 + 325: 26(i64vec4) Load 324 + 326: 26(i64vec4) VectorShuffle 325 323 4 5 6 3 + Store 324 326 + 327: 6(int) Load 8(invocation) + 328: 308(ptr) AccessChain 34(data) 70 299 + 329: 26(i64vec4) Load 328 + 330: 6(int) Load 8(invocation) + 331: 26(i64vec4) GroupNonUniformShuffleUp 43 329 330 + 332: 308(ptr) AccessChain 34(data) 327 299 + Store 332 331 + 333: 6(int) Load 8(invocation) + 334: 300(ptr) AccessChain 34(data) 37 299 38 + 335: 25(int64_t) Load 334 + 336: 6(int) Load 8(invocation) + 337: 25(int64_t) GroupNonUniformShuffleDown 43 335 336 + 338: 300(ptr) AccessChain 34(data) 333 299 38 + Store 338 337 + 339: 6(int) Load 8(invocation) + 340: 308(ptr) AccessChain 34(data) 47 299 + 341: 26(i64vec4) Load 340 + 342:307(i64vec2) VectorShuffle 341 341 0 1 + 343: 6(int) Load 8(invocation) + 344:307(i64vec2) GroupNonUniformShuffleDown 43 342 343 + 345: 308(ptr) AccessChain 34(data) 339 299 + 346: 26(i64vec4) Load 345 + 347: 26(i64vec4) VectorShuffle 346 344 4 5 2 3 + Store 345 347 + 348: 6(int) Load 8(invocation) + 349: 308(ptr) AccessChain 34(data) 59 299 + 350: 26(i64vec4) Load 349 + 351:318(i64vec3) VectorShuffle 350 350 0 1 2 + 352: 6(int) Load 8(invocation) + 353:318(i64vec3) GroupNonUniformShuffleDown 43 351 352 + 354: 308(ptr) AccessChain 34(data) 348 299 + 355: 26(i64vec4) Load 354 + 356: 26(i64vec4) VectorShuffle 355 353 4 5 6 3 + Store 354 356 + 357: 6(int) Load 8(invocation) + 358: 308(ptr) AccessChain 34(data) 70 299 + 359: 26(i64vec4) Load 358 + 360: 6(int) Load 8(invocation) + 361: 26(i64vec4) GroupNonUniformShuffleDown 43 359 360 + 362: 308(ptr) AccessChain 34(data) 357 299 + Store 362 361 + 363: 6(int) Load 8(invocation) + 366: 365(ptr) AccessChain 34(data) 37 364 38 + 367: 27(int64_t) Load 366 + 368: 6(int) Load 8(invocation) + 369: 27(int64_t) GroupNonUniformShuffleUp 43 367 368 + 370: 365(ptr) AccessChain 34(data) 363 364 38 + Store 370 369 + 371: 6(int) Load 8(invocation) + 374: 373(ptr) AccessChain 34(data) 47 364 + 375: 28(i64vec4) Load 374 + 376:372(i64vec2) VectorShuffle 375 375 0 1 + 377: 6(int) Load 8(invocation) + 378:372(i64vec2) GroupNonUniformShuffleUp 43 376 377 + 379: 373(ptr) AccessChain 34(data) 371 364 + 380: 28(i64vec4) Load 379 + 381: 28(i64vec4) VectorShuffle 380 378 4 5 2 3 + Store 379 381 + 382: 6(int) Load 8(invocation) + 384: 373(ptr) AccessChain 34(data) 59 364 + 385: 28(i64vec4) Load 384 + 386:383(i64vec3) VectorShuffle 385 385 0 1 2 + 387: 6(int) Load 8(invocation) + 388:383(i64vec3) GroupNonUniformShuffleUp 43 386 387 + 389: 373(ptr) AccessChain 34(data) 382 364 + 390: 28(i64vec4) Load 389 + 391: 28(i64vec4) VectorShuffle 390 388 4 5 6 3 + Store 389 391 + 392: 6(int) Load 8(invocation) + 393: 373(ptr) AccessChain 34(data) 70 364 + 394: 28(i64vec4) Load 393 + 395: 6(int) Load 8(invocation) + 396: 28(i64vec4) GroupNonUniformShuffleUp 43 394 395 + 397: 373(ptr) AccessChain 34(data) 392 364 + Store 397 396 + 398: 6(int) Load 8(invocation) + 399: 365(ptr) AccessChain 34(data) 37 364 38 + 400: 27(int64_t) Load 399 + 401: 6(int) Load 8(invocation) + 402: 27(int64_t) GroupNonUniformShuffleDown 43 400 401 + 403: 365(ptr) AccessChain 34(data) 398 364 38 + Store 403 402 + 404: 6(int) Load 8(invocation) + 405: 373(ptr) AccessChain 34(data) 47 364 + 406: 28(i64vec4) Load 405 + 407:372(i64vec2) VectorShuffle 406 406 0 1 + 408: 6(int) Load 8(invocation) + 409:372(i64vec2) GroupNonUniformShuffleDown 43 407 408 + 410: 373(ptr) AccessChain 34(data) 404 364 + 411: 28(i64vec4) Load 410 + 412: 28(i64vec4) VectorShuffle 411 409 4 5 2 3 + Store 410 412 + 413: 6(int) Load 8(invocation) + 414: 373(ptr) AccessChain 34(data) 59 364 + 415: 28(i64vec4) Load 414 + 416:383(i64vec3) VectorShuffle 415 415 0 1 2 + 417: 6(int) Load 8(invocation) + 418:383(i64vec3) GroupNonUniformShuffleDown 43 416 417 + 419: 373(ptr) AccessChain 34(data) 413 364 + 420: 28(i64vec4) Load 419 + 421: 28(i64vec4) VectorShuffle 420 418 4 5 6 3 + Store 419 421 + 422: 6(int) Load 8(invocation) + 423: 373(ptr) AccessChain 34(data) 70 364 + 424: 28(i64vec4) Load 423 + 425: 6(int) Load 8(invocation) + 426: 28(i64vec4) GroupNonUniformShuffleDown 43 424 425 + 427: 373(ptr) AccessChain 34(data) 422 364 + Store 427 426 + 428: 6(int) Load 8(invocation) + 431: 430(ptr) AccessChain 34(data) 37 429 38 + 432:29(float16_t) Load 431 + 433: 6(int) Load 8(invocation) + 434:29(float16_t) GroupNonUniformShuffleUp 43 432 433 + 435: 430(ptr) AccessChain 34(data) 428 429 38 + Store 435 434 + 436: 6(int) Load 8(invocation) + 439: 438(ptr) AccessChain 34(data) 47 429 + 440: 30(f16vec4) Load 439 + 441:437(f16vec2) VectorShuffle 440 440 0 1 + 442: 6(int) Load 8(invocation) + 443:437(f16vec2) GroupNonUniformShuffleUp 43 441 442 + 444: 438(ptr) AccessChain 34(data) 436 429 + 445: 30(f16vec4) Load 444 + 446: 30(f16vec4) VectorShuffle 445 443 4 5 2 3 + Store 444 446 + 447: 6(int) Load 8(invocation) + 449: 438(ptr) AccessChain 34(data) 59 429 + 450: 30(f16vec4) Load 449 + 451:448(f16vec3) VectorShuffle 450 450 0 1 2 + 452: 6(int) Load 8(invocation) + 453:448(f16vec3) GroupNonUniformShuffleUp 43 451 452 + 454: 438(ptr) AccessChain 34(data) 447 429 + 455: 30(f16vec4) Load 454 + 456: 30(f16vec4) VectorShuffle 455 453 4 5 6 3 + Store 454 456 + 457: 6(int) Load 8(invocation) + 458: 438(ptr) AccessChain 34(data) 70 429 + 459: 30(f16vec4) Load 458 + 460: 6(int) Load 8(invocation) + 461: 30(f16vec4) GroupNonUniformShuffleUp 43 459 460 + 462: 438(ptr) AccessChain 34(data) 457 429 + Store 462 461 + 463: 6(int) Load 8(invocation) + 464: 430(ptr) AccessChain 34(data) 37 429 38 + 465:29(float16_t) Load 464 + 466: 6(int) Load 8(invocation) + 467:29(float16_t) GroupNonUniformShuffleDown 43 465 466 + 468: 430(ptr) AccessChain 34(data) 463 429 38 + Store 468 467 + 469: 6(int) Load 8(invocation) + 470: 438(ptr) AccessChain 34(data) 47 429 + 471: 30(f16vec4) Load 470 + 472:437(f16vec2) VectorShuffle 471 471 0 1 + 473: 6(int) Load 8(invocation) + 474:437(f16vec2) GroupNonUniformShuffleDown 43 472 473 + 475: 438(ptr) AccessChain 34(data) 469 429 + 476: 30(f16vec4) Load 475 + 477: 30(f16vec4) VectorShuffle 476 474 4 5 2 3 + Store 475 477 + 478: 6(int) Load 8(invocation) + 479: 438(ptr) AccessChain 34(data) 59 429 + 480: 30(f16vec4) Load 479 + 481:448(f16vec3) VectorShuffle 480 480 0 1 2 + 482: 6(int) Load 8(invocation) + 483:448(f16vec3) GroupNonUniformShuffleDown 43 481 482 + 484: 438(ptr) AccessChain 34(data) 478 429 + 485: 30(f16vec4) Load 484 + 486: 30(f16vec4) VectorShuffle 485 483 4 5 6 3 + Store 484 486 + 487: 6(int) Load 8(invocation) + 488: 438(ptr) AccessChain 34(data) 70 429 + 489: 30(f16vec4) Load 488 + 490: 6(int) Load 8(invocation) + 491: 30(f16vec4) GroupNonUniformShuffleDown 43 489 490 + 492: 438(ptr) AccessChain 34(data) 487 429 + Store 492 491 + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesShuffleRelativeNeg.comp.out b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesShuffleRelativeNeg.comp.out new file mode 100644 index 000000000..a04371572 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesShuffleRelativeNeg.comp.out @@ -0,0 +1,61 @@ +spv.subgroupExtendedTypesShuffleRelativeNeg.comp +ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:36: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:37: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:38: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:41: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:42: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:43: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:46: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:47: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:48: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:51: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:52: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:53: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:56: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:57: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:58: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:61: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:62: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:63: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:66: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:67: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:68: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:71: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:72: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:73: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:76: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:77: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:78: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:81: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:82: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:83: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:86: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:87: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:88: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:89: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:91: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:92: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:93: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:94: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 56 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out new file mode 100644 index 000000000..a32c25d28 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out @@ -0,0 +1,377 @@ +spv.subgroupExtendedTypesVote.comp +// Module Version 10300 +// Generated by (magic number): 80007 +// Id's are bound by 277 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + Capability GroupNonUniform + Capability GroupNonUniformVote + Capability StorageUniformBufferBlock16 + Capability StorageBuffer8BitAccess + Extension "SPV_KHR_8bit_storage" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 10 12 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_KHR_shader_subgroup_vote" + Name 4 "main" + Name 8 "invocation" + Name 10 "gl_SubgroupInvocationID" + Name 12 "gl_SubgroupSize" + Name 32 "Buffers" + MemberName 32(Buffers) 0 "i8" + MemberName 32(Buffers) 1 "u8" + MemberName 32(Buffers) 2 "i16" + MemberName 32(Buffers) 3 "u16" + MemberName 32(Buffers) 4 "i64" + MemberName 32(Buffers) 5 "u64" + MemberName 32(Buffers) 6 "f16" + MemberName 32(Buffers) 7 "r" + Name 35 "data" + Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 11 RelaxedPrecision + Decorate 12(gl_SubgroupSize) RelaxedPrecision + Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 13 RelaxedPrecision + Decorate 14 RelaxedPrecision + Decorate 16 RelaxedPrecision + MemberDecorate 32(Buffers) 0 Offset 0 + MemberDecorate 32(Buffers) 1 Offset 4 + MemberDecorate 32(Buffers) 2 Offset 8 + MemberDecorate 32(Buffers) 3 Offset 16 + MemberDecorate 32(Buffers) 4 Offset 32 + MemberDecorate 32(Buffers) 5 Offset 64 + MemberDecorate 32(Buffers) 6 Offset 96 + MemberDecorate 32(Buffers) 7 Offset 104 + Decorate 32(Buffers) Block + Decorate 35(data) DescriptorSet 0 + Decorate 35(data) Binding 0 + Decorate 276 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypePointer Input 6(int) +10(gl_SubgroupInvocationID): 9(ptr) Variable Input +12(gl_SubgroupSize): 9(ptr) Variable Input + 15: 6(int) Constant 4 + 17: TypeInt 8 1 + 18: TypeVector 17(int8_t) 4 + 19: TypeInt 8 0 + 20: TypeVector 19(int8_t) 4 + 21: TypeInt 16 1 + 22: TypeVector 21(int16_t) 4 + 23: TypeInt 16 0 + 24: TypeVector 23(int16_t) 4 + 25: TypeInt 64 1 + 26: TypeVector 25(int64_t) 4 + 27: TypeInt 64 0 + 28: TypeVector 27(int64_t) 4 + 29: TypeFloat 16 + 30: TypeVector 29(float16_t) 4 + 31: TypeInt 32 1 + 32(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) 31(int) + 33: TypeArray 32(Buffers) 15 + 34: TypePointer StorageBuffer 33 + 35(data): 34(ptr) Variable StorageBuffer + 37: 31(int) Constant 7 + 38: TypePointer StorageBuffer 31(int) + 41: 31(int) Constant 0 + 42: TypeBool + 44: 6(int) Constant 3 + 49: 6(int) Constant 0 + 50: TypePointer StorageBuffer 17(int8_t) + 54: 31(int) Constant 1 + 58: TypeVector 17(int8_t) 2 + 59: TypePointer StorageBuffer 18(i8vec4) + 67: 31(int) Constant 2 + 68: TypeVector 17(int8_t) 3 + 76: 31(int) Constant 3 + 83: TypePointer StorageBuffer 19(int8_t) + 90: TypeVector 19(int8_t) 2 + 91: TypePointer StorageBuffer 20(i8vec4) + 99: TypeVector 19(int8_t) 3 + 113: TypePointer StorageBuffer 21(int16_t) + 120: TypeVector 21(int16_t) 2 + 121: TypePointer StorageBuffer 22(i16vec4) + 129: TypeVector 21(int16_t) 3 + 143: TypePointer StorageBuffer 23(int16_t) + 150: TypeVector 23(int16_t) 2 + 151: TypePointer StorageBuffer 24(i16vec4) + 159: TypeVector 23(int16_t) 3 + 181: 31(int) Constant 4 + 182: TypePointer StorageBuffer 25(int64_t) + 189: TypeVector 25(int64_t) 2 + 190: TypePointer StorageBuffer 26(i64vec4) + 198: TypeVector 25(int64_t) 3 + 212: 31(int) Constant 5 + 213: TypePointer StorageBuffer 27(int64_t) + 220: TypeVector 27(int64_t) 2 + 221: TypePointer StorageBuffer 28(i64vec4) + 229: TypeVector 27(int64_t) 3 + 243: 31(int) Constant 6 + 244: TypePointer StorageBuffer 29(float16_t) + 251: TypeVector 29(float16_t) 2 + 252: TypePointer StorageBuffer 30(f16vec4) + 260: TypeVector 29(float16_t) 3 + 273: TypeVector 6(int) 3 + 274: 6(int) Constant 8 + 275: 6(int) Constant 1 + 276: 273(ivec3) ConstantComposite 274 275 275 + 4(main): 2 Function None 3 + 5: Label + 8(invocation): 7(ptr) Variable Function + 11: 6(int) Load 10(gl_SubgroupInvocationID) + 13: 6(int) Load 12(gl_SubgroupSize) + 14: 6(int) IAdd 11 13 + 16: 6(int) UMod 14 15 + Store 8(invocation) 16 + 36: 6(int) Load 8(invocation) + 39: 38(ptr) AccessChain 35(data) 36 37 + 40: 31(int) Load 39 + 43: 42(bool) SLessThan 40 41 + 45: 42(bool) GroupNonUniformAll 44 43 + SelectionMerge 47 None + BranchConditional 45 46 172 + 46: Label + 48: 6(int) Load 8(invocation) + 51: 50(ptr) AccessChain 35(data) 41 41 49 + 52: 17(int8_t) Load 51 + 53: 42(bool) GroupNonUniformAllEqual 44 52 + 55: 31(int) Select 53 54 41 + 56: 38(ptr) AccessChain 35(data) 48 37 + Store 56 55 + 57: 6(int) Load 8(invocation) + 60: 59(ptr) AccessChain 35(data) 54 41 + 61: 18(i8vec4) Load 60 + 62: 58(i8vec2) VectorShuffle 61 61 0 1 + 63: 42(bool) GroupNonUniformAllEqual 44 62 + 64: 31(int) Select 63 54 41 + 65: 38(ptr) AccessChain 35(data) 57 37 + Store 65 64 + 66: 6(int) Load 8(invocation) + 69: 59(ptr) AccessChain 35(data) 67 41 + 70: 18(i8vec4) Load 69 + 71: 68(i8vec3) VectorShuffle 70 70 0 1 2 + 72: 42(bool) GroupNonUniformAllEqual 44 71 + 73: 31(int) Select 72 54 41 + 74: 38(ptr) AccessChain 35(data) 66 37 + Store 74 73 + 75: 6(int) Load 8(invocation) + 77: 59(ptr) AccessChain 35(data) 76 41 + 78: 18(i8vec4) Load 77 + 79: 42(bool) GroupNonUniformAllEqual 44 78 + 80: 31(int) Select 79 54 41 + 81: 38(ptr) AccessChain 35(data) 75 37 + Store 81 80 + 82: 6(int) Load 8(invocation) + 84: 83(ptr) AccessChain 35(data) 41 54 49 + 85: 19(int8_t) Load 84 + 86: 42(bool) GroupNonUniformAllEqual 44 85 + 87: 31(int) Select 86 54 41 + 88: 38(ptr) AccessChain 35(data) 82 37 + Store 88 87 + 89: 6(int) Load 8(invocation) + 92: 91(ptr) AccessChain 35(data) 54 54 + 93: 20(i8vec4) Load 92 + 94: 90(i8vec2) VectorShuffle 93 93 0 1 + 95: 42(bool) GroupNonUniformAllEqual 44 94 + 96: 31(int) Select 95 54 41 + 97: 38(ptr) AccessChain 35(data) 89 37 + Store 97 96 + 98: 6(int) Load 8(invocation) + 100: 91(ptr) AccessChain 35(data) 67 54 + 101: 20(i8vec4) Load 100 + 102: 99(i8vec3) VectorShuffle 101 101 0 1 2 + 103: 42(bool) GroupNonUniformAllEqual 44 102 + 104: 31(int) Select 103 54 41 + 105: 38(ptr) AccessChain 35(data) 98 37 + Store 105 104 + 106: 6(int) Load 8(invocation) + 107: 91(ptr) AccessChain 35(data) 76 54 + 108: 20(i8vec4) Load 107 + 109: 42(bool) GroupNonUniformAllEqual 44 108 + 110: 31(int) Select 109 54 41 + 111: 38(ptr) AccessChain 35(data) 106 37 + Store 111 110 + 112: 6(int) Load 8(invocation) + 114: 113(ptr) AccessChain 35(data) 41 67 49 + 115: 21(int16_t) Load 114 + 116: 42(bool) GroupNonUniformAllEqual 44 115 + 117: 31(int) Select 116 54 41 + 118: 38(ptr) AccessChain 35(data) 112 37 + Store 118 117 + 119: 6(int) Load 8(invocation) + 122: 121(ptr) AccessChain 35(data) 54 67 + 123: 22(i16vec4) Load 122 + 124:120(i16vec2) VectorShuffle 123 123 0 1 + 125: 42(bool) GroupNonUniformAllEqual 44 124 + 126: 31(int) Select 125 54 41 + 127: 38(ptr) AccessChain 35(data) 119 37 + Store 127 126 + 128: 6(int) Load 8(invocation) + 130: 121(ptr) AccessChain 35(data) 67 67 + 131: 22(i16vec4) Load 130 + 132:129(i16vec3) VectorShuffle 131 131 0 1 2 + 133: 42(bool) GroupNonUniformAllEqual 44 132 + 134: 31(int) Select 133 54 41 + 135: 38(ptr) AccessChain 35(data) 128 37 + Store 135 134 + 136: 6(int) Load 8(invocation) + 137: 121(ptr) AccessChain 35(data) 76 67 + 138: 22(i16vec4) Load 137 + 139: 42(bool) GroupNonUniformAllEqual 44 138 + 140: 31(int) Select 139 54 41 + 141: 38(ptr) AccessChain 35(data) 136 37 + Store 141 140 + 142: 6(int) Load 8(invocation) + 144: 143(ptr) AccessChain 35(data) 41 76 49 + 145: 23(int16_t) Load 144 + 146: 42(bool) GroupNonUniformAllEqual 44 145 + 147: 31(int) Select 146 54 41 + 148: 38(ptr) AccessChain 35(data) 142 37 + Store 148 147 + 149: 6(int) Load 8(invocation) + 152: 151(ptr) AccessChain 35(data) 54 76 + 153: 24(i16vec4) Load 152 + 154:150(i16vec2) VectorShuffle 153 153 0 1 + 155: 42(bool) GroupNonUniformAllEqual 44 154 + 156: 31(int) Select 155 54 41 + 157: 38(ptr) AccessChain 35(data) 149 37 + Store 157 156 + 158: 6(int) Load 8(invocation) + 160: 151(ptr) AccessChain 35(data) 67 76 + 161: 24(i16vec4) Load 160 + 162:159(i16vec3) VectorShuffle 161 161 0 1 2 + 163: 42(bool) GroupNonUniformAllEqual 44 162 + 164: 31(int) Select 163 54 41 + 165: 38(ptr) AccessChain 35(data) 158 37 + Store 165 164 + 166: 6(int) Load 8(invocation) + 167: 151(ptr) AccessChain 35(data) 76 76 + 168: 24(i16vec4) Load 167 + 169: 42(bool) GroupNonUniformAllEqual 44 168 + 170: 31(int) Select 169 54 41 + 171: 38(ptr) AccessChain 35(data) 166 37 + Store 171 170 + Branch 47 + 172: Label + 173: 6(int) Load 8(invocation) + 174: 38(ptr) AccessChain 35(data) 173 37 + 175: 31(int) Load 174 + 176: 42(bool) SLessThan 175 41 + 177: 42(bool) GroupNonUniformAny 44 176 + SelectionMerge 179 None + BranchConditional 177 178 179 + 178: Label + 180: 6(int) Load 8(invocation) + 183: 182(ptr) AccessChain 35(data) 41 181 49 + 184: 25(int64_t) Load 183 + 185: 42(bool) GroupNonUniformAllEqual 44 184 + 186: 31(int) Select 185 54 41 + 187: 38(ptr) AccessChain 35(data) 180 37 + Store 187 186 + 188: 6(int) Load 8(invocation) + 191: 190(ptr) AccessChain 35(data) 54 181 + 192: 26(i64vec4) Load 191 + 193:189(i64vec2) VectorShuffle 192 192 0 1 + 194: 42(bool) GroupNonUniformAllEqual 44 193 + 195: 31(int) Select 194 54 41 + 196: 38(ptr) AccessChain 35(data) 188 37 + Store 196 195 + 197: 6(int) Load 8(invocation) + 199: 190(ptr) AccessChain 35(data) 67 181 + 200: 26(i64vec4) Load 199 + 201:198(i64vec3) VectorShuffle 200 200 0 1 2 + 202: 42(bool) GroupNonUniformAllEqual 44 201 + 203: 31(int) Select 202 54 41 + 204: 38(ptr) AccessChain 35(data) 197 37 + Store 204 203 + 205: 6(int) Load 8(invocation) + 206: 190(ptr) AccessChain 35(data) 76 181 + 207: 26(i64vec4) Load 206 + 208: 42(bool) GroupNonUniformAllEqual 44 207 + 209: 31(int) Select 208 54 41 + 210: 38(ptr) AccessChain 35(data) 205 37 + Store 210 209 + 211: 6(int) Load 8(invocation) + 214: 213(ptr) AccessChain 35(data) 41 212 49 + 215: 27(int64_t) Load 214 + 216: 42(bool) GroupNonUniformAllEqual 44 215 + 217: 31(int) Select 216 54 41 + 218: 38(ptr) AccessChain 35(data) 211 37 + Store 218 217 + 219: 6(int) Load 8(invocation) + 222: 221(ptr) AccessChain 35(data) 54 212 + 223: 28(i64vec4) Load 222 + 224:220(i64vec2) VectorShuffle 223 223 0 1 + 225: 42(bool) GroupNonUniformAllEqual 44 224 + 226: 31(int) Select 225 54 41 + 227: 38(ptr) AccessChain 35(data) 219 37 + Store 227 226 + 228: 6(int) Load 8(invocation) + 230: 221(ptr) AccessChain 35(data) 67 212 + 231: 28(i64vec4) Load 230 + 232:229(i64vec3) VectorShuffle 231 231 0 1 2 + 233: 42(bool) GroupNonUniformAllEqual 44 232 + 234: 31(int) Select 233 54 41 + 235: 38(ptr) AccessChain 35(data) 228 37 + Store 235 234 + 236: 6(int) Load 8(invocation) + 237: 221(ptr) AccessChain 35(data) 76 212 + 238: 28(i64vec4) Load 237 + 239: 42(bool) GroupNonUniformAllEqual 44 238 + 240: 31(int) Select 239 54 41 + 241: 38(ptr) AccessChain 35(data) 236 37 + Store 241 240 + 242: 6(int) Load 8(invocation) + 245: 244(ptr) AccessChain 35(data) 41 243 49 + 246:29(float16_t) Load 245 + 247: 42(bool) GroupNonUniformAllEqual 44 246 + 248: 31(int) Select 247 54 41 + 249: 38(ptr) AccessChain 35(data) 242 37 + Store 249 248 + 250: 6(int) Load 8(invocation) + 253: 252(ptr) AccessChain 35(data) 54 243 + 254: 30(f16vec4) Load 253 + 255:251(f16vec2) VectorShuffle 254 254 0 1 + 256: 42(bool) GroupNonUniformAllEqual 44 255 + 257: 31(int) Select 256 54 41 + 258: 38(ptr) AccessChain 35(data) 250 37 + Store 258 257 + 259: 6(int) Load 8(invocation) + 261: 252(ptr) AccessChain 35(data) 67 243 + 262: 30(f16vec4) Load 261 + 263:260(f16vec3) VectorShuffle 262 262 0 1 2 + 264: 42(bool) GroupNonUniformAllEqual 44 263 + 265: 31(int) Select 264 54 41 + 266: 38(ptr) AccessChain 35(data) 259 37 + Store 266 265 + 267: 6(int) Load 8(invocation) + 268: 252(ptr) AccessChain 35(data) 76 243 + 269: 30(f16vec4) Load 268 + 270: 42(bool) GroupNonUniformAllEqual 44 269 + 271: 31(int) Select 270 54 41 + 272: 38(ptr) AccessChain 35(data) 267 37 + Store 272 271 + Branch 179 + 179: Label + Branch 47 + 47: Label + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesVoteNeg.comp.out b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesVoteNeg.comp.out new file mode 100644 index 000000000..2197d4172 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.subgroupExtendedTypesVoteNeg.comp.out @@ -0,0 +1,33 @@ +spv.subgroupExtendedTypesVoteNeg.comp +ERROR: 0:29: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:30: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:31: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:32: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:34: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:35: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:36: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:37: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:39: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:40: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:41: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:42: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:44: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:45: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:46: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:47: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:51: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:52: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:53: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:56: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:57: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:58: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:61: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:62: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:63: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 28 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/3rdparty/glslang/Test/nonuniform.frag b/3rdparty/glslang/Test/nonuniform.frag index 3f3dd67a7..e98aacc30 100644 --- a/3rdparty/glslang/Test/nonuniform.frag +++ b/3rdparty/glslang/Test/nonuniform.frag @@ -22,12 +22,12 @@ void main() nonuniformEXT const int nu_ci = 2; // ERROR, const foo(nu_li, nu_li); - + int table[5]; int a; nu_li = nonuniformEXT(a) + nonuniformEXT(a * 2); nu_li = nonuniformEXT(a, a); // ERROR, too many arguments nu_li = nonuniformEXT(); // ERROR, no arguments + nu_li = table[nonuniformEXT(3)]; } - layout(location=1) in struct S { float a; nonuniformEXT float b; } ins; // ERROR, not on member layout(location=3) in inbName { float a; nonuniformEXT float b; } inb; // ERROR, not on member diff --git a/3rdparty/glslang/Test/spv.bufferhandleUvec2.frag b/3rdparty/glslang/Test/spv.bufferhandleUvec2.frag new file mode 100644 index 000000000..bc86822bb --- /dev/null +++ b/3rdparty/glslang/Test/spv.bufferhandleUvec2.frag @@ -0,0 +1,32 @@ +#version 450 + +#extension GL_EXT_buffer_reference_uvec2 : enable + +layout(buffer_reference, std430) buffer blockType { + layout(offset = 0) int a; + layout(offset = 4) int b; + layout(offset = 8) int c; + layout(offset = 12) int d; + layout(offset = 16) int e; +}; + +layout(std430) buffer t2 { + blockType f; + blockType g; +} t; + +flat in uvec2 h, i; + +void main() { + + blockType b1[2] = blockType[2](blockType(h), blockType(i)); + b1[0].a = b1[1].b; + blockType b2 = blockType(h); + blockType b3 = blockType(i); + b2.a = b3.b; + uvec2 j = uvec2(b2); + uint carry; + j.x = uaddCarry(j.x, 256, carry); + j.y += carry; + b2 = blockType(j); +} diff --git a/3rdparty/glslang/Test/spv.subgroupExtendedTypesArithmetic.comp b/3rdparty/glslang/Test/spv.subgroupExtendedTypesArithmetic.comp new file mode 100644 index 000000000..f58268f5f --- /dev/null +++ b/3rdparty/glslang/Test/spv.subgroupExtendedTypesArithmetic.comp @@ -0,0 +1,715 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_arithmetic: enable +#extension GL_EXT_shader_subgroup_extended_types_int8: enable +#extension GL_EXT_shader_subgroup_extended_types_int16: enable +#extension GL_EXT_shader_subgroup_extended_types_int64: enable +#extension GL_EXT_shader_subgroup_extended_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupAdd(data[0].i8.x); + data[invocation].i8.xy = subgroupAdd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupAdd(data[2].i8.xyz); + data[invocation].i8 = subgroupAdd(data[3].i8); + + data[invocation].i8.x = subgroupMul(data[0].i8.x); + data[invocation].i8.xy = subgroupMul(data[1].i8.xy); + data[invocation].i8.xyz = subgroupMul(data[2].i8.xyz); + data[invocation].i8 = subgroupMul(data[3].i8); + + data[invocation].i8.x = subgroupMin(data[0].i8.x); + data[invocation].i8.xy = subgroupMin(data[1].i8.xy); + data[invocation].i8.xyz = subgroupMin(data[2].i8.xyz); + data[invocation].i8 = subgroupMin(data[3].i8); + + data[invocation].i8.x = subgroupMax(data[0].i8.x); + data[invocation].i8.xy = subgroupMax(data[1].i8.xy); + data[invocation].i8.xyz = subgroupMax(data[2].i8.xyz); + data[invocation].i8 = subgroupMax(data[3].i8); + + data[invocation].i8.x = subgroupAnd(data[0].i8.x); + data[invocation].i8.xy = subgroupAnd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupAnd(data[2].i8.xyz); + data[invocation].i8 = subgroupAnd(data[3].i8); + + data[invocation].i8.x = subgroupOr(data[0].i8.x); + data[invocation].i8.xy = subgroupOr(data[1].i8.xy); + data[invocation].i8.xyz = subgroupOr(data[2].i8.xyz); + data[invocation].i8 = subgroupOr(data[3].i8); + + data[invocation].i8.x = subgroupXor(data[0].i8.x); + data[invocation].i8.xy = subgroupXor(data[1].i8.xy); + data[invocation].i8.xyz = subgroupXor(data[2].i8.xyz); + data[invocation].i8 = subgroupXor(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveAdd(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveAdd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveAdd(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveAdd(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveMul(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveMul(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveMul(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveMul(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveMin(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveMin(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveMin(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveMin(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveMax(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveMax(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveMax(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveMax(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveAnd(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveAnd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveAnd(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveAnd(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveOr(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveOr(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveOr(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveOr(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveXor(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveXor(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveXor(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveXor(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveAdd(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveAdd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveAdd(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveAdd(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveMul(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveMul(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveMul(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveMul(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveMin(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveMin(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveMin(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveMin(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveMax(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveMax(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveMax(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveMax(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveAnd(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveAnd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveAnd(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveAnd(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveOr(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveOr(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveOr(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveOr(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveXor(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveXor(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveXor(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveXor(data[3].i8); + + data[invocation].u8.x = subgroupAdd(data[0].u8.x); + data[invocation].u8.xy = subgroupAdd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupAdd(data[2].u8.xyz); + data[invocation].u8 = subgroupAdd(data[3].u8); + + data[invocation].u8.x = subgroupMul(data[0].u8.x); + data[invocation].u8.xy = subgroupMul(data[1].u8.xy); + data[invocation].u8.xyz = subgroupMul(data[2].u8.xyz); + data[invocation].u8 = subgroupMul(data[3].u8); + + data[invocation].u8.x = subgroupMin(data[0].u8.x); + data[invocation].u8.xy = subgroupMin(data[1].u8.xy); + data[invocation].u8.xyz = subgroupMin(data[2].u8.xyz); + data[invocation].u8 = subgroupMin(data[3].u8); + + data[invocation].u8.x = subgroupMax(data[0].u8.x); + data[invocation].u8.xy = subgroupMax(data[1].u8.xy); + data[invocation].u8.xyz = subgroupMax(data[2].u8.xyz); + data[invocation].u8 = subgroupMax(data[3].u8); + + data[invocation].u8.x = subgroupAnd(data[0].u8.x); + data[invocation].u8.xy = subgroupAnd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupAnd(data[2].u8.xyz); + data[invocation].u8 = subgroupAnd(data[3].u8); + + data[invocation].u8.x = subgroupOr(data[0].u8.x); + data[invocation].u8.xy = subgroupOr(data[1].u8.xy); + data[invocation].u8.xyz = subgroupOr(data[2].u8.xyz); + data[invocation].u8 = subgroupOr(data[3].u8); + + data[invocation].u8.x = subgroupXor(data[0].u8.x); + data[invocation].u8.xy = subgroupXor(data[1].u8.xy); + data[invocation].u8.xyz = subgroupXor(data[2].u8.xyz); + data[invocation].u8 = subgroupXor(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveAdd(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveAdd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveAdd(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveAdd(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveMul(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveMul(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveMul(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveMul(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveMin(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveMin(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveMin(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveMin(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveMax(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveMax(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveMax(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveMax(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveAnd(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveAnd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveAnd(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveAnd(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveOr(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveOr(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveOr(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveOr(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveXor(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveXor(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveXor(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveXor(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveAdd(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveAdd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveAdd(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveAdd(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveMul(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveMul(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveMul(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveMul(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveMin(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveMin(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveMin(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveMin(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveMax(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveMax(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveMax(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveMax(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveAnd(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveAnd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveAnd(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveAnd(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveOr(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveOr(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveOr(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveOr(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveXor(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveXor(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveXor(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveXor(data[3].u8); + + data[invocation].i16.x = subgroupAdd(data[0].i16.x); + data[invocation].i16.xy = subgroupAdd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupAdd(data[2].i16.xyz); + data[invocation].i16 = subgroupAdd(data[3].i16); + + data[invocation].i16.x = subgroupMul(data[0].i16.x); + data[invocation].i16.xy = subgroupMul(data[1].i16.xy); + data[invocation].i16.xyz = subgroupMul(data[2].i16.xyz); + data[invocation].i16 = subgroupMul(data[3].i16); + + data[invocation].i16.x = subgroupMin(data[0].i16.x); + data[invocation].i16.xy = subgroupMin(data[1].i16.xy); + data[invocation].i16.xyz = subgroupMin(data[2].i16.xyz); + data[invocation].i16 = subgroupMin(data[3].i16); + + data[invocation].i16.x = subgroupMax(data[0].i16.x); + data[invocation].i16.xy = subgroupMax(data[1].i16.xy); + data[invocation].i16.xyz = subgroupMax(data[2].i16.xyz); + data[invocation].i16 = subgroupMax(data[3].i16); + + data[invocation].i16.x = subgroupAnd(data[0].i16.x); + data[invocation].i16.xy = subgroupAnd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupAnd(data[2].i16.xyz); + data[invocation].i16 = subgroupAnd(data[3].i16); + + data[invocation].i16.x = subgroupOr(data[0].i16.x); + data[invocation].i16.xy = subgroupOr(data[1].i16.xy); + data[invocation].i16.xyz = subgroupOr(data[2].i16.xyz); + data[invocation].i16 = subgroupOr(data[3].i16); + + data[invocation].i16.x = subgroupXor(data[0].i16.x); + data[invocation].i16.xy = subgroupXor(data[1].i16.xy); + data[invocation].i16.xyz = subgroupXor(data[2].i16.xyz); + data[invocation].i16 = subgroupXor(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveAdd(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveAdd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveAdd(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveAdd(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveMul(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveMul(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveMul(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveMul(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveMin(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveMin(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveMin(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveMin(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveMax(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveMax(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveMax(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveMax(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveAnd(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveAnd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveAnd(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveAnd(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveOr(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveOr(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveOr(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveOr(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveXor(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveXor(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveXor(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveXor(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveAdd(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveAdd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveAdd(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveAdd(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveMul(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveMul(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveMul(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveMul(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveMin(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveMin(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveMin(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveMin(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveMax(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveMax(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveMax(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveMax(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveAnd(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveAnd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveAnd(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveAnd(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveOr(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveOr(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveOr(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveOr(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveXor(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveXor(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveXor(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveXor(data[3].i16); + + data[invocation].u16.x = subgroupAdd(data[0].u16.x); + data[invocation].u16.xy = subgroupAdd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupAdd(data[2].u16.xyz); + data[invocation].u16 = subgroupAdd(data[3].u16); + + data[invocation].u16.x = subgroupMul(data[0].u16.x); + data[invocation].u16.xy = subgroupMul(data[1].u16.xy); + data[invocation].u16.xyz = subgroupMul(data[2].u16.xyz); + data[invocation].u16 = subgroupMul(data[3].u16); + + data[invocation].u16.x = subgroupMin(data[0].u16.x); + data[invocation].u16.xy = subgroupMin(data[1].u16.xy); + data[invocation].u16.xyz = subgroupMin(data[2].u16.xyz); + data[invocation].u16 = subgroupMin(data[3].u16); + + data[invocation].u16.x = subgroupMax(data[0].u16.x); + data[invocation].u16.xy = subgroupMax(data[1].u16.xy); + data[invocation].u16.xyz = subgroupMax(data[2].u16.xyz); + data[invocation].u16 = subgroupMax(data[3].u16); + + data[invocation].u16.x = subgroupAnd(data[0].u16.x); + data[invocation].u16.xy = subgroupAnd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupAnd(data[2].u16.xyz); + data[invocation].u16 = subgroupAnd(data[3].u16); + + data[invocation].u16.x = subgroupOr(data[0].u16.x); + data[invocation].u16.xy = subgroupOr(data[1].u16.xy); + data[invocation].u16.xyz = subgroupOr(data[2].u16.xyz); + data[invocation].u16 = subgroupOr(data[3].u16); + + data[invocation].u16.x = subgroupXor(data[0].u16.x); + data[invocation].u16.xy = subgroupXor(data[1].u16.xy); + data[invocation].u16.xyz = subgroupXor(data[2].u16.xyz); + data[invocation].u16 = subgroupXor(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveAdd(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveAdd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveAdd(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveAdd(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveMul(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveMul(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveMul(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveMul(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveMin(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveMin(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveMin(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveMin(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveMax(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveMax(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveMax(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveMax(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveAnd(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveAnd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveAnd(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveAnd(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveOr(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveOr(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveOr(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveOr(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveXor(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveXor(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveXor(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveXor(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveAdd(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveAdd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveAdd(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveAdd(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveMul(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveMul(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveMul(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveMul(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveMin(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveMin(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveMin(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveMin(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveMax(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveMax(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveMax(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveMax(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveAnd(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveAnd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveAnd(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveAnd(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveOr(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveOr(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveOr(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveOr(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveXor(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveXor(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveXor(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveXor(data[3].u16); + + data[invocation].i64.x = subgroupAdd(data[0].i64.x); + data[invocation].i64.xy = subgroupAdd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupAdd(data[2].i64.xyz); + data[invocation].i64 = subgroupAdd(data[3].i64); + + data[invocation].i64.x = subgroupMul(data[0].i64.x); + data[invocation].i64.xy = subgroupMul(data[1].i64.xy); + data[invocation].i64.xyz = subgroupMul(data[2].i64.xyz); + data[invocation].i64 = subgroupMul(data[3].i64); + + data[invocation].i64.x = subgroupMin(data[0].i64.x); + data[invocation].i64.xy = subgroupMin(data[1].i64.xy); + data[invocation].i64.xyz = subgroupMin(data[2].i64.xyz); + data[invocation].i64 = subgroupMin(data[3].i64); + + data[invocation].i64.x = subgroupMax(data[0].i64.x); + data[invocation].i64.xy = subgroupMax(data[1].i64.xy); + data[invocation].i64.xyz = subgroupMax(data[2].i64.xyz); + data[invocation].i64 = subgroupMax(data[3].i64); + + data[invocation].i64.x = subgroupAnd(data[0].i64.x); + data[invocation].i64.xy = subgroupAnd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupAnd(data[2].i64.xyz); + data[invocation].i64 = subgroupAnd(data[3].i64); + + data[invocation].i64.x = subgroupOr(data[0].i64.x); + data[invocation].i64.xy = subgroupOr(data[1].i64.xy); + data[invocation].i64.xyz = subgroupOr(data[2].i64.xyz); + data[invocation].i64 = subgroupOr(data[3].i64); + + data[invocation].i64.x = subgroupXor(data[0].i64.x); + data[invocation].i64.xy = subgroupXor(data[1].i64.xy); + data[invocation].i64.xyz = subgroupXor(data[2].i64.xyz); + data[invocation].i64 = subgroupXor(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveAdd(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveAdd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveAdd(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveAdd(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveMul(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveMul(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveMul(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveMul(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveMin(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveMin(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveMin(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveMin(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveMax(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveMax(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveMax(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveMax(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveAnd(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveAnd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveAnd(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveAnd(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveOr(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveOr(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveOr(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveOr(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveXor(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveXor(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveXor(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveXor(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveAdd(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveAdd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveAdd(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveAdd(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveMul(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveMul(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveMul(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveMul(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveMin(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveMin(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveMin(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveMin(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveMax(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveMax(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveMax(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveMax(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveAnd(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveAnd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveAnd(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveAnd(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveOr(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveOr(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveOr(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveOr(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveXor(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveXor(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveXor(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveXor(data[3].i64); + + data[invocation].u64.x = subgroupAdd(data[0].u64.x); + data[invocation].u64.xy = subgroupAdd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupAdd(data[2].u64.xyz); + data[invocation].u64 = subgroupAdd(data[3].u64); + + data[invocation].u64.x = subgroupMul(data[0].u64.x); + data[invocation].u64.xy = subgroupMul(data[1].u64.xy); + data[invocation].u64.xyz = subgroupMul(data[2].u64.xyz); + data[invocation].u64 = subgroupMul(data[3].u64); + + data[invocation].u64.x = subgroupMin(data[0].u64.x); + data[invocation].u64.xy = subgroupMin(data[1].u64.xy); + data[invocation].u64.xyz = subgroupMin(data[2].u64.xyz); + data[invocation].u64 = subgroupMin(data[3].u64); + + data[invocation].u64.x = subgroupMax(data[0].u64.x); + data[invocation].u64.xy = subgroupMax(data[1].u64.xy); + data[invocation].u64.xyz = subgroupMax(data[2].u64.xyz); + data[invocation].u64 = subgroupMax(data[3].u64); + + data[invocation].u64.x = subgroupAnd(data[0].u64.x); + data[invocation].u64.xy = subgroupAnd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupAnd(data[2].u64.xyz); + data[invocation].u64 = subgroupAnd(data[3].u64); + + data[invocation].u64.x = subgroupOr(data[0].u64.x); + data[invocation].u64.xy = subgroupOr(data[1].u64.xy); + data[invocation].u64.xyz = subgroupOr(data[2].u64.xyz); + data[invocation].u64 = subgroupOr(data[3].u64); + + data[invocation].u64.x = subgroupXor(data[0].u64.x); + data[invocation].u64.xy = subgroupXor(data[1].u64.xy); + data[invocation].u64.xyz = subgroupXor(data[2].u64.xyz); + data[invocation].u64 = subgroupXor(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveAdd(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveAdd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveAdd(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveAdd(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveMul(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveMul(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveMul(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveMul(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveMin(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveMin(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveMin(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveMin(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveMax(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveMax(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveMax(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveMax(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveAnd(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveAnd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveAnd(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveAnd(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveOr(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveOr(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveOr(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveOr(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveXor(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveXor(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveXor(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveXor(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveAdd(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveAdd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveAdd(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveAdd(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveMul(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveMul(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveMul(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveMul(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveMin(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveMin(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveMin(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveMin(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveMax(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveMax(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveMax(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveMax(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveAnd(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveAnd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveAnd(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveAnd(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveOr(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveOr(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveOr(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveOr(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveXor(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveXor(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveXor(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveXor(data[3].u64); + + data[invocation].f16.x = subgroupAdd(data[0].f16.x); + data[invocation].f16.xy = subgroupAdd(data[1].f16.xy); + data[invocation].f16.xyz = subgroupAdd(data[2].f16.xyz); + data[invocation].f16 = subgroupAdd(data[3].f16); + + data[invocation].f16.x = subgroupMul(data[0].f16.x); + data[invocation].f16.xy = subgroupMul(data[1].f16.xy); + data[invocation].f16.xyz = subgroupMul(data[2].f16.xyz); + data[invocation].f16 = subgroupMul(data[3].f16); + + data[invocation].f16.x = subgroupMin(data[0].f16.x); + data[invocation].f16.xy = subgroupMin(data[1].f16.xy); + data[invocation].f16.xyz = subgroupMin(data[2].f16.xyz); + data[invocation].f16 = subgroupMin(data[3].f16); + + data[invocation].f16.x = subgroupMax(data[0].f16.x); + data[invocation].f16.xy = subgroupMax(data[1].f16.xy); + data[invocation].f16.xyz = subgroupMax(data[2].f16.xyz); + data[invocation].f16 = subgroupMax(data[3].f16); + + data[invocation].f16.x = subgroupInclusiveAdd(data[0].f16.x); + data[invocation].f16.xy = subgroupInclusiveAdd(data[1].f16.xy); + data[invocation].f16.xyz = subgroupInclusiveAdd(data[2].f16.xyz); + data[invocation].f16 = subgroupInclusiveAdd(data[3].f16); + + data[invocation].f16.x = subgroupInclusiveMul(data[0].f16.x); + data[invocation].f16.xy = subgroupInclusiveMul(data[1].f16.xy); + data[invocation].f16.xyz = subgroupInclusiveMul(data[2].f16.xyz); + data[invocation].f16 = subgroupInclusiveMul(data[3].f16); + + data[invocation].f16.x = subgroupInclusiveMin(data[0].f16.x); + data[invocation].f16.xy = subgroupInclusiveMin(data[1].f16.xy); + data[invocation].f16.xyz = subgroupInclusiveMin(data[2].f16.xyz); + data[invocation].f16 = subgroupInclusiveMin(data[3].f16); + + data[invocation].f16.x = subgroupInclusiveMax(data[0].f16.x); + data[invocation].f16.xy = subgroupInclusiveMax(data[1].f16.xy); + data[invocation].f16.xyz = subgroupInclusiveMax(data[2].f16.xyz); + data[invocation].f16 = subgroupInclusiveMax(data[3].f16); + + data[invocation].f16.x = subgroupExclusiveAdd(data[0].f16.x); + data[invocation].f16.xy = subgroupExclusiveAdd(data[1].f16.xy); + data[invocation].f16.xyz = subgroupExclusiveAdd(data[2].f16.xyz); + data[invocation].f16 = subgroupExclusiveAdd(data[3].f16); + + data[invocation].f16.x = subgroupExclusiveMul(data[0].f16.x); + data[invocation].f16.xy = subgroupExclusiveMul(data[1].f16.xy); + data[invocation].f16.xyz = subgroupExclusiveMul(data[2].f16.xyz); + data[invocation].f16 = subgroupExclusiveMul(data[3].f16); + + data[invocation].f16.x = subgroupExclusiveMin(data[0].f16.x); + data[invocation].f16.xy = subgroupExclusiveMin(data[1].f16.xy); + data[invocation].f16.xyz = subgroupExclusiveMin(data[2].f16.xyz); + data[invocation].f16 = subgroupExclusiveMin(data[3].f16); + + data[invocation].f16.x = subgroupExclusiveMax(data[0].f16.x); + data[invocation].f16.xy = subgroupExclusiveMax(data[1].f16.xy); + data[invocation].f16.xyz = subgroupExclusiveMax(data[2].f16.xyz); + data[invocation].f16 = subgroupExclusiveMax(data[3].f16); +} diff --git a/3rdparty/glslang/Test/spv.subgroupExtendedTypesArithmeticNeg.comp b/3rdparty/glslang/Test/spv.subgroupExtendedTypesArithmeticNeg.comp new file mode 100644 index 000000000..eb22cabfb --- /dev/null +++ b/3rdparty/glslang/Test/spv.subgroupExtendedTypesArithmeticNeg.comp @@ -0,0 +1,715 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_arithmetic: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupAdd(data[0].i8.x); + data[invocation].i8.xy = subgroupAdd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupAdd(data[2].i8.xyz); + data[invocation].i8 = subgroupAdd(data[3].i8); + + data[invocation].i8.x = subgroupMul(data[0].i8.x); + data[invocation].i8.xy = subgroupMul(data[1].i8.xy); + data[invocation].i8.xyz = subgroupMul(data[2].i8.xyz); + data[invocation].i8 = subgroupMul(data[3].i8); + + data[invocation].i8.x = subgroupMin(data[0].i8.x); + data[invocation].i8.xy = subgroupMin(data[1].i8.xy); + data[invocation].i8.xyz = subgroupMin(data[2].i8.xyz); + data[invocation].i8 = subgroupMin(data[3].i8); + + data[invocation].i8.x = subgroupMax(data[0].i8.x); + data[invocation].i8.xy = subgroupMax(data[1].i8.xy); + data[invocation].i8.xyz = subgroupMax(data[2].i8.xyz); + data[invocation].i8 = subgroupMax(data[3].i8); + + data[invocation].i8.x = subgroupAnd(data[0].i8.x); + data[invocation].i8.xy = subgroupAnd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupAnd(data[2].i8.xyz); + data[invocation].i8 = subgroupAnd(data[3].i8); + + data[invocation].i8.x = subgroupOr(data[0].i8.x); + data[invocation].i8.xy = subgroupOr(data[1].i8.xy); + data[invocation].i8.xyz = subgroupOr(data[2].i8.xyz); + data[invocation].i8 = subgroupOr(data[3].i8); + + data[invocation].i8.x = subgroupXor(data[0].i8.x); + data[invocation].i8.xy = subgroupXor(data[1].i8.xy); + data[invocation].i8.xyz = subgroupXor(data[2].i8.xyz); + data[invocation].i8 = subgroupXor(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveAdd(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveAdd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveAdd(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveAdd(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveMul(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveMul(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveMul(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveMul(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveMin(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveMin(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveMin(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveMin(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveMax(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveMax(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveMax(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveMax(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveAnd(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveAnd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveAnd(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveAnd(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveOr(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveOr(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveOr(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveOr(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveXor(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveXor(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveXor(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveXor(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveAdd(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveAdd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveAdd(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveAdd(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveMul(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveMul(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveMul(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveMul(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveMin(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveMin(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveMin(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveMin(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveMax(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveMax(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveMax(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveMax(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveAnd(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveAnd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveAnd(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveAnd(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveOr(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveOr(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveOr(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveOr(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveXor(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveXor(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveXor(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveXor(data[3].i8); + + data[invocation].u8.x = subgroupAdd(data[0].u8.x); + data[invocation].u8.xy = subgroupAdd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupAdd(data[2].u8.xyz); + data[invocation].u8 = subgroupAdd(data[3].u8); + + data[invocation].u8.x = subgroupMul(data[0].u8.x); + data[invocation].u8.xy = subgroupMul(data[1].u8.xy); + data[invocation].u8.xyz = subgroupMul(data[2].u8.xyz); + data[invocation].u8 = subgroupMul(data[3].u8); + + data[invocation].u8.x = subgroupMin(data[0].u8.x); + data[invocation].u8.xy = subgroupMin(data[1].u8.xy); + data[invocation].u8.xyz = subgroupMin(data[2].u8.xyz); + data[invocation].u8 = subgroupMin(data[3].u8); + + data[invocation].u8.x = subgroupMax(data[0].u8.x); + data[invocation].u8.xy = subgroupMax(data[1].u8.xy); + data[invocation].u8.xyz = subgroupMax(data[2].u8.xyz); + data[invocation].u8 = subgroupMax(data[3].u8); + + data[invocation].u8.x = subgroupAnd(data[0].u8.x); + data[invocation].u8.xy = subgroupAnd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupAnd(data[2].u8.xyz); + data[invocation].u8 = subgroupAnd(data[3].u8); + + data[invocation].u8.x = subgroupOr(data[0].u8.x); + data[invocation].u8.xy = subgroupOr(data[1].u8.xy); + data[invocation].u8.xyz = subgroupOr(data[2].u8.xyz); + data[invocation].u8 = subgroupOr(data[3].u8); + + data[invocation].u8.x = subgroupXor(data[0].u8.x); + data[invocation].u8.xy = subgroupXor(data[1].u8.xy); + data[invocation].u8.xyz = subgroupXor(data[2].u8.xyz); + data[invocation].u8 = subgroupXor(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveAdd(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveAdd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveAdd(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveAdd(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveMul(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveMul(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveMul(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveMul(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveMin(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveMin(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveMin(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveMin(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveMax(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveMax(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveMax(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveMax(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveAnd(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveAnd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveAnd(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveAnd(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveOr(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveOr(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveOr(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveOr(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveXor(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveXor(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveXor(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveXor(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveAdd(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveAdd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveAdd(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveAdd(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveMul(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveMul(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveMul(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveMul(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveMin(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveMin(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveMin(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveMin(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveMax(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveMax(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveMax(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveMax(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveAnd(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveAnd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveAnd(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveAnd(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveOr(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveOr(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveOr(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveOr(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveXor(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveXor(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveXor(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveXor(data[3].u8); + + data[invocation].i16.x = subgroupAdd(data[0].i16.x); + data[invocation].i16.xy = subgroupAdd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupAdd(data[2].i16.xyz); + data[invocation].i16 = subgroupAdd(data[3].i16); + + data[invocation].i16.x = subgroupMul(data[0].i16.x); + data[invocation].i16.xy = subgroupMul(data[1].i16.xy); + data[invocation].i16.xyz = subgroupMul(data[2].i16.xyz); + data[invocation].i16 = subgroupMul(data[3].i16); + + data[invocation].i16.x = subgroupMin(data[0].i16.x); + data[invocation].i16.xy = subgroupMin(data[1].i16.xy); + data[invocation].i16.xyz = subgroupMin(data[2].i16.xyz); + data[invocation].i16 = subgroupMin(data[3].i16); + + data[invocation].i16.x = subgroupMax(data[0].i16.x); + data[invocation].i16.xy = subgroupMax(data[1].i16.xy); + data[invocation].i16.xyz = subgroupMax(data[2].i16.xyz); + data[invocation].i16 = subgroupMax(data[3].i16); + + data[invocation].i16.x = subgroupAnd(data[0].i16.x); + data[invocation].i16.xy = subgroupAnd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupAnd(data[2].i16.xyz); + data[invocation].i16 = subgroupAnd(data[3].i16); + + data[invocation].i16.x = subgroupOr(data[0].i16.x); + data[invocation].i16.xy = subgroupOr(data[1].i16.xy); + data[invocation].i16.xyz = subgroupOr(data[2].i16.xyz); + data[invocation].i16 = subgroupOr(data[3].i16); + + data[invocation].i16.x = subgroupXor(data[0].i16.x); + data[invocation].i16.xy = subgroupXor(data[1].i16.xy); + data[invocation].i16.xyz = subgroupXor(data[2].i16.xyz); + data[invocation].i16 = subgroupXor(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveAdd(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveAdd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveAdd(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveAdd(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveMul(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveMul(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveMul(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveMul(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveMin(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveMin(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveMin(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveMin(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveMax(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveMax(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveMax(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveMax(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveAnd(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveAnd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveAnd(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveAnd(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveOr(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveOr(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveOr(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveOr(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveXor(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveXor(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveXor(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveXor(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveAdd(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveAdd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveAdd(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveAdd(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveMul(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveMul(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveMul(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveMul(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveMin(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveMin(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveMin(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveMin(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveMax(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveMax(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveMax(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveMax(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveAnd(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveAnd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveAnd(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveAnd(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveOr(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveOr(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveOr(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveOr(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveXor(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveXor(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveXor(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveXor(data[3].i16); + + data[invocation].u16.x = subgroupAdd(data[0].u16.x); + data[invocation].u16.xy = subgroupAdd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupAdd(data[2].u16.xyz); + data[invocation].u16 = subgroupAdd(data[3].u16); + + data[invocation].u16.x = subgroupMul(data[0].u16.x); + data[invocation].u16.xy = subgroupMul(data[1].u16.xy); + data[invocation].u16.xyz = subgroupMul(data[2].u16.xyz); + data[invocation].u16 = subgroupMul(data[3].u16); + + data[invocation].u16.x = subgroupMin(data[0].u16.x); + data[invocation].u16.xy = subgroupMin(data[1].u16.xy); + data[invocation].u16.xyz = subgroupMin(data[2].u16.xyz); + data[invocation].u16 = subgroupMin(data[3].u16); + + data[invocation].u16.x = subgroupMax(data[0].u16.x); + data[invocation].u16.xy = subgroupMax(data[1].u16.xy); + data[invocation].u16.xyz = subgroupMax(data[2].u16.xyz); + data[invocation].u16 = subgroupMax(data[3].u16); + + data[invocation].u16.x = subgroupAnd(data[0].u16.x); + data[invocation].u16.xy = subgroupAnd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupAnd(data[2].u16.xyz); + data[invocation].u16 = subgroupAnd(data[3].u16); + + data[invocation].u16.x = subgroupOr(data[0].u16.x); + data[invocation].u16.xy = subgroupOr(data[1].u16.xy); + data[invocation].u16.xyz = subgroupOr(data[2].u16.xyz); + data[invocation].u16 = subgroupOr(data[3].u16); + + data[invocation].u16.x = subgroupXor(data[0].u16.x); + data[invocation].u16.xy = subgroupXor(data[1].u16.xy); + data[invocation].u16.xyz = subgroupXor(data[2].u16.xyz); + data[invocation].u16 = subgroupXor(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveAdd(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveAdd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveAdd(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveAdd(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveMul(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveMul(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveMul(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveMul(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveMin(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveMin(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveMin(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveMin(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveMax(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveMax(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveMax(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveMax(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveAnd(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveAnd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveAnd(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveAnd(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveOr(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveOr(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveOr(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveOr(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveXor(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveXor(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveXor(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveXor(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveAdd(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveAdd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveAdd(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveAdd(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveMul(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveMul(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveMul(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveMul(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveMin(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveMin(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveMin(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveMin(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveMax(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveMax(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveMax(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveMax(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveAnd(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveAnd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveAnd(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveAnd(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveOr(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveOr(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveOr(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveOr(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveXor(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveXor(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveXor(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveXor(data[3].u16); + + data[invocation].i64.x = subgroupAdd(data[0].i64.x); + data[invocation].i64.xy = subgroupAdd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupAdd(data[2].i64.xyz); + data[invocation].i64 = subgroupAdd(data[3].i64); + + data[invocation].i64.x = subgroupMul(data[0].i64.x); + data[invocation].i64.xy = subgroupMul(data[1].i64.xy); + data[invocation].i64.xyz = subgroupMul(data[2].i64.xyz); + data[invocation].i64 = subgroupMul(data[3].i64); + + data[invocation].i64.x = subgroupMin(data[0].i64.x); + data[invocation].i64.xy = subgroupMin(data[1].i64.xy); + data[invocation].i64.xyz = subgroupMin(data[2].i64.xyz); + data[invocation].i64 = subgroupMin(data[3].i64); + + data[invocation].i64.x = subgroupMax(data[0].i64.x); + data[invocation].i64.xy = subgroupMax(data[1].i64.xy); + data[invocation].i64.xyz = subgroupMax(data[2].i64.xyz); + data[invocation].i64 = subgroupMax(data[3].i64); + + data[invocation].i64.x = subgroupAnd(data[0].i64.x); + data[invocation].i64.xy = subgroupAnd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupAnd(data[2].i64.xyz); + data[invocation].i64 = subgroupAnd(data[3].i64); + + data[invocation].i64.x = subgroupOr(data[0].i64.x); + data[invocation].i64.xy = subgroupOr(data[1].i64.xy); + data[invocation].i64.xyz = subgroupOr(data[2].i64.xyz); + data[invocation].i64 = subgroupOr(data[3].i64); + + data[invocation].i64.x = subgroupXor(data[0].i64.x); + data[invocation].i64.xy = subgroupXor(data[1].i64.xy); + data[invocation].i64.xyz = subgroupXor(data[2].i64.xyz); + data[invocation].i64 = subgroupXor(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveAdd(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveAdd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveAdd(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveAdd(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveMul(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveMul(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveMul(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveMul(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveMin(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveMin(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveMin(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveMin(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveMax(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveMax(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveMax(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveMax(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveAnd(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveAnd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveAnd(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveAnd(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveOr(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveOr(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveOr(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveOr(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveXor(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveXor(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveXor(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveXor(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveAdd(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveAdd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveAdd(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveAdd(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveMul(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveMul(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveMul(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveMul(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveMin(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveMin(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveMin(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveMin(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveMax(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveMax(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveMax(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveMax(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveAnd(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveAnd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveAnd(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveAnd(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveOr(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveOr(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveOr(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveOr(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveXor(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveXor(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveXor(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveXor(data[3].i64); + + data[invocation].u64.x = subgroupAdd(data[0].u64.x); + data[invocation].u64.xy = subgroupAdd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupAdd(data[2].u64.xyz); + data[invocation].u64 = subgroupAdd(data[3].u64); + + data[invocation].u64.x = subgroupMul(data[0].u64.x); + data[invocation].u64.xy = subgroupMul(data[1].u64.xy); + data[invocation].u64.xyz = subgroupMul(data[2].u64.xyz); + data[invocation].u64 = subgroupMul(data[3].u64); + + data[invocation].u64.x = subgroupMin(data[0].u64.x); + data[invocation].u64.xy = subgroupMin(data[1].u64.xy); + data[invocation].u64.xyz = subgroupMin(data[2].u64.xyz); + data[invocation].u64 = subgroupMin(data[3].u64); + + data[invocation].u64.x = subgroupMax(data[0].u64.x); + data[invocation].u64.xy = subgroupMax(data[1].u64.xy); + data[invocation].u64.xyz = subgroupMax(data[2].u64.xyz); + data[invocation].u64 = subgroupMax(data[3].u64); + + data[invocation].u64.x = subgroupAnd(data[0].u64.x); + data[invocation].u64.xy = subgroupAnd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupAnd(data[2].u64.xyz); + data[invocation].u64 = subgroupAnd(data[3].u64); + + data[invocation].u64.x = subgroupOr(data[0].u64.x); + data[invocation].u64.xy = subgroupOr(data[1].u64.xy); + data[invocation].u64.xyz = subgroupOr(data[2].u64.xyz); + data[invocation].u64 = subgroupOr(data[3].u64); + + data[invocation].u64.x = subgroupXor(data[0].u64.x); + data[invocation].u64.xy = subgroupXor(data[1].u64.xy); + data[invocation].u64.xyz = subgroupXor(data[2].u64.xyz); + data[invocation].u64 = subgroupXor(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveAdd(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveAdd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveAdd(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveAdd(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveMul(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveMul(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveMul(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveMul(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveMin(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveMin(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveMin(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveMin(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveMax(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveMax(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveMax(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveMax(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveAnd(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveAnd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveAnd(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveAnd(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveOr(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveOr(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveOr(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveOr(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveXor(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveXor(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveXor(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveXor(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveAdd(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveAdd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveAdd(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveAdd(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveMul(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveMul(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveMul(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveMul(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveMin(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveMin(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveMin(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveMin(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveMax(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveMax(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveMax(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveMax(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveAnd(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveAnd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveAnd(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveAnd(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveOr(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveOr(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveOr(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveOr(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveXor(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveXor(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveXor(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveXor(data[3].u64); + + data[invocation].f16.x = subgroupAdd(data[0].f16.x); + data[invocation].f16.xy = subgroupAdd(data[1].f16.xy); + data[invocation].f16.xyz = subgroupAdd(data[2].f16.xyz); + data[invocation].f16 = subgroupAdd(data[3].f16); + + data[invocation].f16.x = subgroupMul(data[0].f16.x); + data[invocation].f16.xy = subgroupMul(data[1].f16.xy); + data[invocation].f16.xyz = subgroupMul(data[2].f16.xyz); + data[invocation].f16 = subgroupMul(data[3].f16); + + data[invocation].f16.x = subgroupMin(data[0].f16.x); + data[invocation].f16.xy = subgroupMin(data[1].f16.xy); + data[invocation].f16.xyz = subgroupMin(data[2].f16.xyz); + data[invocation].f16 = subgroupMin(data[3].f16); + + data[invocation].f16.x = subgroupMax(data[0].f16.x); + data[invocation].f16.xy = subgroupMax(data[1].f16.xy); + data[invocation].f16.xyz = subgroupMax(data[2].f16.xyz); + data[invocation].f16 = subgroupMax(data[3].f16); + + data[invocation].f16.x = subgroupInclusiveAdd(data[0].f16.x); + data[invocation].f16.xy = subgroupInclusiveAdd(data[1].f16.xy); + data[invocation].f16.xyz = subgroupInclusiveAdd(data[2].f16.xyz); + data[invocation].f16 = subgroupInclusiveAdd(data[3].f16); + + data[invocation].f16.x = subgroupInclusiveMul(data[0].f16.x); + data[invocation].f16.xy = subgroupInclusiveMul(data[1].f16.xy); + data[invocation].f16.xyz = subgroupInclusiveMul(data[2].f16.xyz); + data[invocation].f16 = subgroupInclusiveMul(data[3].f16); + + data[invocation].f16.x = subgroupInclusiveMin(data[0].f16.x); + data[invocation].f16.xy = subgroupInclusiveMin(data[1].f16.xy); + data[invocation].f16.xyz = subgroupInclusiveMin(data[2].f16.xyz); + data[invocation].f16 = subgroupInclusiveMin(data[3].f16); + + data[invocation].f16.x = subgroupInclusiveMax(data[0].f16.x); + data[invocation].f16.xy = subgroupInclusiveMax(data[1].f16.xy); + data[invocation].f16.xyz = subgroupInclusiveMax(data[2].f16.xyz); + data[invocation].f16 = subgroupInclusiveMax(data[3].f16); + + data[invocation].f16.x = subgroupExclusiveAdd(data[0].f16.x); + data[invocation].f16.xy = subgroupExclusiveAdd(data[1].f16.xy); + data[invocation].f16.xyz = subgroupExclusiveAdd(data[2].f16.xyz); + data[invocation].f16 = subgroupExclusiveAdd(data[3].f16); + + data[invocation].f16.x = subgroupExclusiveMul(data[0].f16.x); + data[invocation].f16.xy = subgroupExclusiveMul(data[1].f16.xy); + data[invocation].f16.xyz = subgroupExclusiveMul(data[2].f16.xyz); + data[invocation].f16 = subgroupExclusiveMul(data[3].f16); + + data[invocation].f16.x = subgroupExclusiveMin(data[0].f16.x); + data[invocation].f16.xy = subgroupExclusiveMin(data[1].f16.xy); + data[invocation].f16.xyz = subgroupExclusiveMin(data[2].f16.xyz); + data[invocation].f16 = subgroupExclusiveMin(data[3].f16); + + data[invocation].f16.x = subgroupExclusiveMax(data[0].f16.x); + data[invocation].f16.xy = subgroupExclusiveMax(data[1].f16.xy); + data[invocation].f16.xyz = subgroupExclusiveMax(data[2].f16.xyz); + data[invocation].f16 = subgroupExclusiveMax(data[3].f16); +} diff --git a/3rdparty/glslang/Test/spv.subgroupExtendedTypesBallot.comp b/3rdparty/glslang/Test/spv.subgroupExtendedTypesBallot.comp new file mode 100644 index 000000000..22d29cb7c --- /dev/null +++ b/3rdparty/glslang/Test/spv.subgroupExtendedTypesBallot.comp @@ -0,0 +1,88 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_ballot: enable +#extension GL_EXT_shader_subgroup_extended_types_int8: enable +#extension GL_EXT_shader_subgroup_extended_types_int16: enable +#extension GL_EXT_shader_subgroup_extended_types_int64: enable +#extension GL_EXT_shader_subgroup_extended_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupBroadcast(data[0].i8.x, 3); + data[invocation].i8.xy = subgroupBroadcast(data[1].i8.xy, 3); + data[invocation].i8.xyz = subgroupBroadcast(data[2].i8.xyz, 3); + data[invocation].i8 = subgroupBroadcast(data[3].i8, 3); + data[invocation].i8.x = subgroupBroadcastFirst(data[0].i8.x); + data[invocation].i8.xy = subgroupBroadcastFirst(data[1].i8.xy); + data[invocation].i8.xyz = subgroupBroadcastFirst(data[2].i8.xyz); + data[invocation].i8 = subgroupBroadcastFirst(data[3].i8); + + data[invocation].u8.x = subgroupBroadcast(data[0].u8.x, 3); + data[invocation].u8.xy = subgroupBroadcast(data[1].u8.xy, 3); + data[invocation].u8.xyz = subgroupBroadcast(data[2].u8.xyz, 3); + data[invocation].u8 = subgroupBroadcast(data[3].u8, 3); + data[invocation].u8.x = subgroupBroadcastFirst(data[0].u8.x); + data[invocation].u8.xy = subgroupBroadcastFirst(data[1].u8.xy); + data[invocation].u8.xyz = subgroupBroadcastFirst(data[2].u8.xyz); + data[invocation].u8 = subgroupBroadcastFirst(data[3].u8); + + data[invocation].i16.x = subgroupBroadcast(data[0].i16.x, 3); + data[invocation].i16.xy = subgroupBroadcast(data[1].i16.xy, 3); + data[invocation].i16.xyz = subgroupBroadcast(data[2].i16.xyz, 3); + data[invocation].i16 = subgroupBroadcast(data[3].i16, 3); + data[invocation].i16.x = subgroupBroadcastFirst(data[0].i16.x); + data[invocation].i16.xy = subgroupBroadcastFirst(data[1].i16.xy); + data[invocation].i16.xyz = subgroupBroadcastFirst(data[2].i16.xyz); + data[invocation].i16 = subgroupBroadcastFirst(data[3].i16); + + data[invocation].u16.x = subgroupBroadcast(data[0].u16.x, 3); + data[invocation].u16.xy = subgroupBroadcast(data[1].u16.xy, 3); + data[invocation].u16.xyz = subgroupBroadcast(data[2].u16.xyz, 3); + data[invocation].u16 = subgroupBroadcast(data[3].u16, 3); + data[invocation].u16.x = subgroupBroadcastFirst(data[0].u16.x); + data[invocation].u16.xy = subgroupBroadcastFirst(data[1].u16.xy); + data[invocation].u16.xyz = subgroupBroadcastFirst(data[2].u16.xyz); + data[invocation].u16 = subgroupBroadcastFirst(data[3].u16); + + data[invocation].i64.x = subgroupBroadcast(data[0].i64.x, 3); + data[invocation].i64.xy = subgroupBroadcast(data[1].i64.xy, 3); + data[invocation].i64.xyz = subgroupBroadcast(data[2].i64.xyz, 3); + data[invocation].i64 = subgroupBroadcast(data[3].i64, 3); + data[invocation].i64.x = subgroupBroadcastFirst(data[0].i64.x); + data[invocation].i64.xy = subgroupBroadcastFirst(data[1].i64.xy); + data[invocation].i64.xyz = subgroupBroadcastFirst(data[2].i64.xyz); + data[invocation].i64 = subgroupBroadcastFirst(data[3].i64); + + data[invocation].u64.x = subgroupBroadcast(data[0].u64.x, 3); + data[invocation].u64.xy = subgroupBroadcast(data[1].u64.xy, 3); + data[invocation].u64.xyz = subgroupBroadcast(data[2].u64.xyz, 3); + data[invocation].u64 = subgroupBroadcast(data[3].u64, 3); + data[invocation].u64.x = subgroupBroadcastFirst(data[0].u64.x); + data[invocation].u64.xy = subgroupBroadcastFirst(data[1].u64.xy); + data[invocation].u64.xyz = subgroupBroadcastFirst(data[2].u64.xyz); + data[invocation].u64 = subgroupBroadcastFirst(data[3].u64); + + data[invocation].f16.x = subgroupBroadcast(data[0].f16.x, 3); + data[invocation].f16.xy = subgroupBroadcast(data[1].f16.xy, 3); + data[invocation].f16.xyz = subgroupBroadcast(data[2].f16.xyz, 3); + data[invocation].f16 = subgroupBroadcast(data[3].f16, 3); + data[invocation].f16.x = subgroupBroadcastFirst(data[0].f16.x); + data[invocation].f16.xy = subgroupBroadcastFirst(data[1].f16.xy); + data[invocation].f16.xyz = subgroupBroadcastFirst(data[2].f16.xyz); + data[invocation].f16 = subgroupBroadcastFirst(data[3].f16); +} diff --git a/3rdparty/glslang/Test/spv.subgroupExtendedTypesBallotNeg.comp b/3rdparty/glslang/Test/spv.subgroupExtendedTypesBallotNeg.comp new file mode 100644 index 000000000..240ab593f --- /dev/null +++ b/3rdparty/glslang/Test/spv.subgroupExtendedTypesBallotNeg.comp @@ -0,0 +1,88 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_ballot: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupBroadcast(data[0].i8.x, 3); + data[invocation].i8.xy = subgroupBroadcast(data[1].i8.xy, 3); + data[invocation].i8.xyz = subgroupBroadcast(data[2].i8.xyz, 3); + data[invocation].i8 = subgroupBroadcast(data[3].i8, 3); + data[invocation].i8.x = subgroupBroadcastFirst(data[0].i8.x); + data[invocation].i8.xy = subgroupBroadcastFirst(data[1].i8.xy); + data[invocation].i8.xyz = subgroupBroadcastFirst(data[2].i8.xyz); + data[invocation].i8 = subgroupBroadcastFirst(data[3].i8); + + data[invocation].u8.x = subgroupBroadcast(data[0].u8.x, 3); + data[invocation].u8.xy = subgroupBroadcast(data[1].u8.xy, 3); + data[invocation].u8.xyz = subgroupBroadcast(data[2].u8.xyz, 3); + data[invocation].u8 = subgroupBroadcast(data[3].u8, 3); + data[invocation].u8.x = subgroupBroadcastFirst(data[0].u8.x); + data[invocation].u8.xy = subgroupBroadcastFirst(data[1].u8.xy); + data[invocation].u8.xyz = subgroupBroadcastFirst(data[2].u8.xyz); + data[invocation].u8 = subgroupBroadcastFirst(data[3].u8); + + data[invocation].i16.x = subgroupBroadcast(data[0].i16.x, 3); + data[invocation].i16.xy = subgroupBroadcast(data[1].i16.xy, 3); + data[invocation].i16.xyz = subgroupBroadcast(data[2].i16.xyz, 3); + data[invocation].i16 = subgroupBroadcast(data[3].i16, 3); + data[invocation].i16.x = subgroupBroadcastFirst(data[0].i16.x); + data[invocation].i16.xy = subgroupBroadcastFirst(data[1].i16.xy); + data[invocation].i16.xyz = subgroupBroadcastFirst(data[2].i16.xyz); + data[invocation].i16 = subgroupBroadcastFirst(data[3].i16); + + data[invocation].u16.x = subgroupBroadcast(data[0].u16.x, 3); + data[invocation].u16.xy = subgroupBroadcast(data[1].u16.xy, 3); + data[invocation].u16.xyz = subgroupBroadcast(data[2].u16.xyz, 3); + data[invocation].u16 = subgroupBroadcast(data[3].u16, 3); + data[invocation].u16.x = subgroupBroadcastFirst(data[0].u16.x); + data[invocation].u16.xy = subgroupBroadcastFirst(data[1].u16.xy); + data[invocation].u16.xyz = subgroupBroadcastFirst(data[2].u16.xyz); + data[invocation].u16 = subgroupBroadcastFirst(data[3].u16); + + data[invocation].i64.x = subgroupBroadcast(data[0].i64.x, 3); + data[invocation].i64.xy = subgroupBroadcast(data[1].i64.xy, 3); + data[invocation].i64.xyz = subgroupBroadcast(data[2].i64.xyz, 3); + data[invocation].i64 = subgroupBroadcast(data[3].i64, 3); + data[invocation].i64.x = subgroupBroadcastFirst(data[0].i64.x); + data[invocation].i64.xy = subgroupBroadcastFirst(data[1].i64.xy); + data[invocation].i64.xyz = subgroupBroadcastFirst(data[2].i64.xyz); + data[invocation].i64 = subgroupBroadcastFirst(data[3].i64); + + data[invocation].u64.x = subgroupBroadcast(data[0].u64.x, 3); + data[invocation].u64.xy = subgroupBroadcast(data[1].u64.xy, 3); + data[invocation].u64.xyz = subgroupBroadcast(data[2].u64.xyz, 3); + data[invocation].u64 = subgroupBroadcast(data[3].u64, 3); + data[invocation].u64.x = subgroupBroadcastFirst(data[0].u64.x); + data[invocation].u64.xy = subgroupBroadcastFirst(data[1].u64.xy); + data[invocation].u64.xyz = subgroupBroadcastFirst(data[2].u64.xyz); + data[invocation].u64 = subgroupBroadcastFirst(data[3].u64); + + data[invocation].f16.x = subgroupBroadcast(data[0].f16.x, 3); + data[invocation].f16.xy = subgroupBroadcast(data[1].f16.xy, 3); + data[invocation].f16.xyz = subgroupBroadcast(data[2].f16.xyz, 3); + data[invocation].f16 = subgroupBroadcast(data[3].f16, 3); + data[invocation].f16.x = subgroupBroadcastFirst(data[0].f16.x); + data[invocation].f16.xy = subgroupBroadcastFirst(data[1].f16.xy); + data[invocation].f16.xyz = subgroupBroadcastFirst(data[2].f16.xyz); + data[invocation].f16 = subgroupBroadcastFirst(data[3].f16); +} diff --git a/3rdparty/glslang/Test/spv.subgroupExtendedTypesClustered.comp b/3rdparty/glslang/Test/spv.subgroupExtendedTypesClustered.comp new file mode 100644 index 000000000..a215cbf0b --- /dev/null +++ b/3rdparty/glslang/Test/spv.subgroupExtendedTypesClustered.comp @@ -0,0 +1,255 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_clustered: enable +#extension GL_EXT_shader_subgroup_extended_types_int8: enable +#extension GL_EXT_shader_subgroup_extended_types_int16: enable +#extension GL_EXT_shader_subgroup_extended_types_int64: enable +#extension GL_EXT_shader_subgroup_extended_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupClusteredAdd(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredAdd(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredAdd(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredAdd(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredMul(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredMul(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredMul(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredMul(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredMin(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredMin(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredMin(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredMin(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredMax(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredMax(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredMax(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredMax(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredAnd(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredAnd(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredAnd(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredAnd(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredOr(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredOr(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredOr(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredOr(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredXor(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredXor(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredXor(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredXor(data[3].i8, 1); + + data[invocation].u8.x = subgroupClusteredAdd(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredAdd(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredAdd(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredAdd(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredMul(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredMul(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredMul(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredMul(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredMin(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredMin(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredMin(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredMin(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredMax(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredMax(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredMax(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredMax(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredAnd(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredAnd(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredAnd(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredAnd(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredOr(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredOr(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredOr(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredOr(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredXor(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredXor(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredXor(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredXor(data[3].u8, 1); + + data[invocation].i16.x = subgroupClusteredAdd(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredAdd(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredAdd(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredAdd(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredMul(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredMul(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredMul(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredMul(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredMin(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredMin(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredMin(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredMin(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredMax(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredMax(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredMax(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredMax(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredAnd(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredAnd(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredAnd(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredAnd(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredOr(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredOr(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredOr(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredOr(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredXor(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredXor(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredXor(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredXor(data[3].i16, 1); + + data[invocation].u16.x = subgroupClusteredAdd(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredAdd(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredAdd(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredAdd(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredMul(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredMul(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredMul(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredMul(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredMin(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredMin(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredMin(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredMin(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredMax(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredMax(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredMax(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredMax(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredAnd(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredAnd(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredAnd(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredAnd(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredOr(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredOr(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredOr(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredOr(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredXor(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredXor(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredXor(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredXor(data[3].u16, 1); + + data[invocation].i64.x = subgroupClusteredAdd(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredAdd(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredAdd(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredAdd(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredMul(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredMul(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredMul(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredMul(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredMin(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredMin(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredMin(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredMin(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredMax(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredMax(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredMax(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredMax(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredAnd(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredAnd(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredAnd(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredAnd(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredOr(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredOr(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredOr(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredOr(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredXor(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredXor(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredXor(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredXor(data[3].i64, 1); + + data[invocation].u64.x = subgroupClusteredAdd(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredAdd(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredAdd(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredAdd(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredMul(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredMul(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredMul(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredMul(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredMin(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredMin(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredMin(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredMin(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredMax(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredMax(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredMax(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredMax(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredAnd(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredAnd(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredAnd(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredAnd(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredOr(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredOr(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredOr(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredOr(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredXor(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredXor(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredXor(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredXor(data[3].u64, 1); + + data[invocation].f16.x = subgroupClusteredAdd(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupClusteredAdd(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupClusteredAdd(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupClusteredAdd(data[3].f16, 1); + + data[invocation].f16.x = subgroupClusteredMul(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupClusteredMul(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupClusteredMul(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupClusteredMul(data[3].f16, 1); + + data[invocation].f16.x = subgroupClusteredMin(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupClusteredMin(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupClusteredMin(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupClusteredMin(data[3].f16, 1); + + data[invocation].f16.x = subgroupClusteredMax(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupClusteredMax(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupClusteredMax(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupClusteredMax(data[3].f16, 1); +} diff --git a/3rdparty/glslang/Test/spv.subgroupExtendedTypesClusteredNeg.comp b/3rdparty/glslang/Test/spv.subgroupExtendedTypesClusteredNeg.comp new file mode 100644 index 000000000..d5215115f --- /dev/null +++ b/3rdparty/glslang/Test/spv.subgroupExtendedTypesClusteredNeg.comp @@ -0,0 +1,255 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_clustered: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupClusteredAdd(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredAdd(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredAdd(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredAdd(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredMul(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredMul(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredMul(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredMul(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredMin(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredMin(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredMin(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredMin(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredMax(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredMax(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredMax(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredMax(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredAnd(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredAnd(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredAnd(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredAnd(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredOr(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredOr(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredOr(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredOr(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredXor(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredXor(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredXor(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredXor(data[3].i8, 1); + + data[invocation].u8.x = subgroupClusteredAdd(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredAdd(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredAdd(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredAdd(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredMul(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredMul(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredMul(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredMul(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredMin(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredMin(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredMin(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredMin(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredMax(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredMax(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredMax(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredMax(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredAnd(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredAnd(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredAnd(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredAnd(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredOr(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredOr(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredOr(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredOr(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredXor(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredXor(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredXor(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredXor(data[3].u8, 1); + + data[invocation].i16.x = subgroupClusteredAdd(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredAdd(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredAdd(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredAdd(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredMul(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredMul(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredMul(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredMul(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredMin(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredMin(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredMin(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredMin(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredMax(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredMax(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredMax(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredMax(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredAnd(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredAnd(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredAnd(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredAnd(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredOr(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredOr(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredOr(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredOr(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredXor(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredXor(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredXor(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredXor(data[3].i16, 1); + + data[invocation].u16.x = subgroupClusteredAdd(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredAdd(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredAdd(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredAdd(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredMul(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredMul(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredMul(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredMul(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredMin(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredMin(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredMin(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredMin(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredMax(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredMax(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredMax(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredMax(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredAnd(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredAnd(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredAnd(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredAnd(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredOr(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredOr(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredOr(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredOr(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredXor(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredXor(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredXor(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredXor(data[3].u16, 1); + + data[invocation].i64.x = subgroupClusteredAdd(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredAdd(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredAdd(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredAdd(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredMul(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredMul(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredMul(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredMul(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredMin(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredMin(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredMin(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredMin(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredMax(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredMax(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredMax(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredMax(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredAnd(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredAnd(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredAnd(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredAnd(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredOr(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredOr(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredOr(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredOr(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredXor(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredXor(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredXor(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredXor(data[3].i64, 1); + + data[invocation].u64.x = subgroupClusteredAdd(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredAdd(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredAdd(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredAdd(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredMul(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredMul(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredMul(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredMul(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredMin(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredMin(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredMin(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredMin(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredMax(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredMax(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredMax(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredMax(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredAnd(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredAnd(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredAnd(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredAnd(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredOr(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredOr(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredOr(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredOr(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredXor(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredXor(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredXor(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredXor(data[3].u64, 1); + + data[invocation].f16.x = subgroupClusteredAdd(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupClusteredAdd(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupClusteredAdd(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupClusteredAdd(data[3].f16, 1); + + data[invocation].f16.x = subgroupClusteredMul(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupClusteredMul(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupClusteredMul(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupClusteredMul(data[3].f16, 1); + + data[invocation].f16.x = subgroupClusteredMin(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupClusteredMin(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupClusteredMin(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupClusteredMin(data[3].f16, 1); + + data[invocation].f16.x = subgroupClusteredMax(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupClusteredMax(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupClusteredMax(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupClusteredMax(data[3].f16, 1); +} diff --git a/3rdparty/glslang/Test/spv.subgroupExtendedTypesPartitioned.comp b/3rdparty/glslang/Test/spv.subgroupExtendedTypesPartitioned.comp new file mode 100644 index 000000000..382a5b366 --- /dev/null +++ b/3rdparty/glslang/Test/spv.subgroupExtendedTypesPartitioned.comp @@ -0,0 +1,291 @@ +#version 450 + +#extension GL_NV_shader_subgroup_partitioned: enable +#extension GL_EXT_shader_subgroup_extended_types_int8: enable +#extension GL_EXT_shader_subgroup_extended_types_int16: enable +#extension GL_EXT_shader_subgroup_extended_types_int64: enable +#extension GL_EXT_shader_subgroup_extended_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + uvec4 ballot; + ballot = subgroupPartitionNV(data[0].i8.x); + ballot = subgroupPartitionNV(data[1].i8.xy); + ballot = subgroupPartitionNV(data[2].i8.xyz); + ballot = subgroupPartitionNV(data[3].i8); + + ballot = subgroupPartitionNV(data[0].u8.x); + ballot = subgroupPartitionNV(data[1].u8.xy); + ballot = subgroupPartitionNV(data[2].u8.xyz); + ballot = subgroupPartitionNV(data[3].u8); + + ballot = subgroupPartitionNV(data[0].i16.x); + ballot = subgroupPartitionNV(data[1].i16.xy); + ballot = subgroupPartitionNV(data[2].i16.xyz); + ballot = subgroupPartitionNV(data[3].i16); + + ballot = subgroupPartitionNV(data[0].u16.x); + ballot = subgroupPartitionNV(data[1].u16.xy); + ballot = subgroupPartitionNV(data[2].u16.xyz); + ballot = subgroupPartitionNV(data[3].u16); + + ballot = subgroupPartitionNV(data[0].i64.x); + ballot = subgroupPartitionNV(data[1].i64.xy); + ballot = subgroupPartitionNV(data[2].i64.xyz); + ballot = subgroupPartitionNV(data[3].i64); + + ballot = subgroupPartitionNV(data[0].u64.x); + ballot = subgroupPartitionNV(data[1].u64.xy); + ballot = subgroupPartitionNV(data[2].u64.xyz); + ballot = subgroupPartitionNV(data[3].u64); + + ballot = subgroupPartitionNV(data[0].f16.x); + ballot = subgroupPartitionNV(data[1].f16.xy); + ballot = subgroupPartitionNV(data[2].f16.xyz); + ballot = subgroupPartitionNV(data[3].f16); + + data[invocation].i8.x = subgroupPartitionedAddNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedAddNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedAddNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedAddNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedMulNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedMulNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedMulNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedMulNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedMinNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedMinNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedMinNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedMinNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedMaxNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedMaxNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedMaxNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedMaxNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedAndNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedAndNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedAndNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedAndNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedOrNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedOrNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedOrNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedOrNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedXorNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedXorNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedXorNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedXorNV(data[3].i8, ballot); + + data[invocation].u8.x = subgroupPartitionedAddNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedAddNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedAddNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedAddNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedMulNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedMulNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedMulNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedMulNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedMinNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedMinNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedMinNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedMinNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedMaxNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedMaxNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedMaxNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedMaxNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedAndNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedAndNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedAndNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedAndNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedOrNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedOrNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedOrNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedOrNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedXorNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedXorNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedXorNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedXorNV(data[3].u8, ballot); + + data[invocation].i16.x = subgroupPartitionedAddNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedAddNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedAddNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedAddNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedMulNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedMulNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedMulNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedMulNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedMinNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedMinNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedMinNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedMinNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedMaxNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedMaxNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedMaxNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedMaxNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedAndNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedAndNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedAndNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedAndNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedOrNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedOrNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedOrNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedOrNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedXorNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedXorNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedXorNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedXorNV(data[3].i16, ballot); + + data[invocation].u16.x = subgroupPartitionedAddNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedAddNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedAddNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedAddNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedMulNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedMulNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedMulNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedMulNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedMinNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedMinNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedMinNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedMinNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedMaxNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedMaxNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedMaxNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedMaxNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedAndNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedAndNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedAndNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedAndNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedOrNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedOrNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedOrNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedOrNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedXorNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedXorNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedXorNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedXorNV(data[3].u16, ballot); + + data[invocation].i64.x = subgroupPartitionedAddNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedAddNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedAddNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedAddNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedMulNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedMulNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedMulNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedMulNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedMinNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedMinNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedMinNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedMinNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedMaxNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedMaxNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedMaxNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedMaxNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedAndNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedAndNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedAndNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedAndNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedOrNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedOrNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedOrNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedOrNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedXorNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedXorNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedXorNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedXorNV(data[3].i64, ballot); + + data[invocation].u64.x = subgroupPartitionedAddNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedAddNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedAddNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedAddNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedMulNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedMulNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedMulNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedMulNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedMinNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedMinNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedMinNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedMinNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedMaxNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedMaxNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedMaxNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedMaxNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedAndNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedAndNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedAndNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedAndNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedOrNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedOrNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedOrNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedOrNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedXorNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedXorNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedXorNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedXorNV(data[3].u64, ballot); + + data[invocation].f16.x = subgroupPartitionedAddNV(data[0].f16.x, ballot); + data[invocation].f16.xy = subgroupPartitionedAddNV(data[1].f16.xy, ballot); + data[invocation].f16.xyz = subgroupPartitionedAddNV(data[2].f16.xyz, ballot); + data[invocation].f16 = subgroupPartitionedAddNV(data[3].f16, ballot); + + data[invocation].f16.x = subgroupPartitionedMulNV(data[0].f16.x, ballot); + data[invocation].f16.xy = subgroupPartitionedMulNV(data[1].f16.xy, ballot); + data[invocation].f16.xyz = subgroupPartitionedMulNV(data[2].f16.xyz, ballot); + data[invocation].f16 = subgroupPartitionedMulNV(data[3].f16, ballot); + + data[invocation].f16.x = subgroupPartitionedMinNV(data[0].f16.x, ballot); + data[invocation].f16.xy = subgroupPartitionedMinNV(data[1].f16.xy, ballot); + data[invocation].f16.xyz = subgroupPartitionedMinNV(data[2].f16.xyz, ballot); + data[invocation].f16 = subgroupPartitionedMinNV(data[3].f16, ballot); + + data[invocation].f16.x = subgroupPartitionedMaxNV(data[0].f16.x, ballot); + data[invocation].f16.xy = subgroupPartitionedMaxNV(data[1].f16.xy, ballot); + data[invocation].f16.xyz = subgroupPartitionedMaxNV(data[2].f16.xyz, ballot); + data[invocation].f16 = subgroupPartitionedMaxNV(data[3].f16, ballot); +} diff --git a/3rdparty/glslang/Test/spv.subgroupExtendedTypesPartitionedNeg.comp b/3rdparty/glslang/Test/spv.subgroupExtendedTypesPartitionedNeg.comp new file mode 100644 index 000000000..ad94e35de --- /dev/null +++ b/3rdparty/glslang/Test/spv.subgroupExtendedTypesPartitionedNeg.comp @@ -0,0 +1,291 @@ +#version 450 + +#extension GL_NV_shader_subgroup_partitioned: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + uvec4 ballot; + ballot = subgroupPartitionNV(data[0].i8.x); + ballot = subgroupPartitionNV(data[1].i8.xy); + ballot = subgroupPartitionNV(data[2].i8.xyz); + ballot = subgroupPartitionNV(data[3].i8); + + ballot = subgroupPartitionNV(data[0].u8.x); + ballot = subgroupPartitionNV(data[1].u8.xy); + ballot = subgroupPartitionNV(data[2].u8.xyz); + ballot = subgroupPartitionNV(data[3].u8); + + ballot = subgroupPartitionNV(data[0].i16.x); + ballot = subgroupPartitionNV(data[1].i16.xy); + ballot = subgroupPartitionNV(data[2].i16.xyz); + ballot = subgroupPartitionNV(data[3].i16); + + ballot = subgroupPartitionNV(data[0].u16.x); + ballot = subgroupPartitionNV(data[1].u16.xy); + ballot = subgroupPartitionNV(data[2].u16.xyz); + ballot = subgroupPartitionNV(data[3].u16); + + ballot = subgroupPartitionNV(data[0].i64.x); + ballot = subgroupPartitionNV(data[1].i64.xy); + ballot = subgroupPartitionNV(data[2].i64.xyz); + ballot = subgroupPartitionNV(data[3].i64); + + ballot = subgroupPartitionNV(data[0].u64.x); + ballot = subgroupPartitionNV(data[1].u64.xy); + ballot = subgroupPartitionNV(data[2].u64.xyz); + ballot = subgroupPartitionNV(data[3].u64); + + ballot = subgroupPartitionNV(data[0].f16.x); + ballot = subgroupPartitionNV(data[1].f16.xy); + ballot = subgroupPartitionNV(data[2].f16.xyz); + ballot = subgroupPartitionNV(data[3].f16); + + data[invocation].i8.x = subgroupPartitionedAddNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedAddNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedAddNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedAddNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedMulNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedMulNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedMulNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedMulNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedMinNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedMinNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedMinNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedMinNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedMaxNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedMaxNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedMaxNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedMaxNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedAndNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedAndNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedAndNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedAndNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedOrNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedOrNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedOrNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedOrNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedXorNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedXorNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedXorNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedXorNV(data[3].i8, ballot); + + data[invocation].u8.x = subgroupPartitionedAddNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedAddNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedAddNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedAddNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedMulNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedMulNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedMulNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedMulNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedMinNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedMinNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedMinNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedMinNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedMaxNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedMaxNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedMaxNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedMaxNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedAndNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedAndNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedAndNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedAndNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedOrNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedOrNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedOrNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedOrNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedXorNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedXorNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedXorNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedXorNV(data[3].u8, ballot); + + data[invocation].i16.x = subgroupPartitionedAddNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedAddNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedAddNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedAddNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedMulNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedMulNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedMulNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedMulNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedMinNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedMinNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedMinNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedMinNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedMaxNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedMaxNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedMaxNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedMaxNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedAndNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedAndNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedAndNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedAndNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedOrNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedOrNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedOrNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedOrNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedXorNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedXorNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedXorNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedXorNV(data[3].i16, ballot); + + data[invocation].u16.x = subgroupPartitionedAddNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedAddNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedAddNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedAddNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedMulNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedMulNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedMulNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedMulNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedMinNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedMinNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedMinNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedMinNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedMaxNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedMaxNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedMaxNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedMaxNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedAndNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedAndNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedAndNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedAndNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedOrNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedOrNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedOrNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedOrNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedXorNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedXorNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedXorNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedXorNV(data[3].u16, ballot); + + data[invocation].i64.x = subgroupPartitionedAddNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedAddNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedAddNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedAddNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedMulNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedMulNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedMulNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedMulNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedMinNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedMinNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedMinNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedMinNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedMaxNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedMaxNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedMaxNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedMaxNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedAndNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedAndNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedAndNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedAndNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedOrNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedOrNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedOrNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedOrNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedXorNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedXorNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedXorNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedXorNV(data[3].i64, ballot); + + data[invocation].u64.x = subgroupPartitionedAddNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedAddNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedAddNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedAddNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedMulNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedMulNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedMulNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedMulNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedMinNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedMinNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedMinNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedMinNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedMaxNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedMaxNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedMaxNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedMaxNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedAndNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedAndNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedAndNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedAndNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedOrNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedOrNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedOrNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedOrNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedXorNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedXorNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedXorNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedXorNV(data[3].u64, ballot); + + data[invocation].f16.x = subgroupPartitionedAddNV(data[0].f16.x, ballot); + data[invocation].f16.xy = subgroupPartitionedAddNV(data[1].f16.xy, ballot); + data[invocation].f16.xyz = subgroupPartitionedAddNV(data[2].f16.xyz, ballot); + data[invocation].f16 = subgroupPartitionedAddNV(data[3].f16, ballot); + + data[invocation].f16.x = subgroupPartitionedMulNV(data[0].f16.x, ballot); + data[invocation].f16.xy = subgroupPartitionedMulNV(data[1].f16.xy, ballot); + data[invocation].f16.xyz = subgroupPartitionedMulNV(data[2].f16.xyz, ballot); + data[invocation].f16 = subgroupPartitionedMulNV(data[3].f16, ballot); + + data[invocation].f16.x = subgroupPartitionedMinNV(data[0].f16.x, ballot); + data[invocation].f16.xy = subgroupPartitionedMinNV(data[1].f16.xy, ballot); + data[invocation].f16.xyz = subgroupPartitionedMinNV(data[2].f16.xyz, ballot); + data[invocation].f16 = subgroupPartitionedMinNV(data[3].f16, ballot); + + data[invocation].f16.x = subgroupPartitionedMaxNV(data[0].f16.x, ballot); + data[invocation].f16.xy = subgroupPartitionedMaxNV(data[1].f16.xy, ballot); + data[invocation].f16.xyz = subgroupPartitionedMaxNV(data[2].f16.xyz, ballot); + data[invocation].f16 = subgroupPartitionedMaxNV(data[3].f16, ballot); +} diff --git a/3rdparty/glslang/Test/spv.subgroupExtendedTypesQuad.comp b/3rdparty/glslang/Test/spv.subgroupExtendedTypesQuad.comp new file mode 100644 index 000000000..1ef2ecf97 --- /dev/null +++ b/3rdparty/glslang/Test/spv.subgroupExtendedTypesQuad.comp @@ -0,0 +1,165 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_quad: enable +#extension GL_EXT_shader_subgroup_extended_types_int8: enable +#extension GL_EXT_shader_subgroup_extended_types_int16: enable +#extension GL_EXT_shader_subgroup_extended_types_int64: enable +#extension GL_EXT_shader_subgroup_extended_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupQuadBroadcast(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupQuadBroadcast(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupQuadBroadcast(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupQuadBroadcast(data[3].i8, 1); + + data[invocation].i8.x = subgroupQuadSwapHorizontal(data[0].i8.x); + data[invocation].i8.xy = subgroupQuadSwapHorizontal(data[1].i8.xy); + data[invocation].i8.xyz = subgroupQuadSwapHorizontal(data[2].i8.xyz); + data[invocation].i8 = subgroupQuadSwapHorizontal(data[3].i8); + + data[invocation].i8.x = subgroupQuadSwapVertical(data[0].i8.x); + data[invocation].i8.xy = subgroupQuadSwapVertical(data[1].i8.xy); + data[invocation].i8.xyz = subgroupQuadSwapVertical(data[2].i8.xyz); + data[invocation].i8 = subgroupQuadSwapVertical(data[3].i8); + + data[invocation].i8.x = subgroupQuadSwapDiagonal(data[0].i8.x); + data[invocation].i8.xy = subgroupQuadSwapDiagonal(data[1].i8.xy); + data[invocation].i8.xyz = subgroupQuadSwapDiagonal(data[2].i8.xyz); + data[invocation].i8 = subgroupQuadSwapDiagonal(data[3].i8); + + data[invocation].u8.x = subgroupQuadBroadcast(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupQuadBroadcast(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupQuadBroadcast(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupQuadBroadcast(data[3].u8, 1); + + data[invocation].u8.x = subgroupQuadSwapHorizontal(data[0].u8.x); + data[invocation].u8.xy = subgroupQuadSwapHorizontal(data[1].u8.xy); + data[invocation].u8.xyz = subgroupQuadSwapHorizontal(data[2].u8.xyz); + data[invocation].u8 = subgroupQuadSwapHorizontal(data[3].u8); + + data[invocation].u8.x = subgroupQuadSwapVertical(data[0].u8.x); + data[invocation].u8.xy = subgroupQuadSwapVertical(data[1].u8.xy); + data[invocation].u8.xyz = subgroupQuadSwapVertical(data[2].u8.xyz); + data[invocation].u8 = subgroupQuadSwapVertical(data[3].u8); + + data[invocation].u8.x = subgroupQuadSwapDiagonal(data[0].u8.x); + data[invocation].u8.xy = subgroupQuadSwapDiagonal(data[1].u8.xy); + data[invocation].u8.xyz = subgroupQuadSwapDiagonal(data[2].u8.xyz); + data[invocation].u8 = subgroupQuadSwapDiagonal(data[3].u8); + + data[invocation].i16.x = subgroupQuadBroadcast(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupQuadBroadcast(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupQuadBroadcast(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupQuadBroadcast(data[3].i16, 1); + + data[invocation].i16.x = subgroupQuadSwapHorizontal(data[0].i16.x); + data[invocation].i16.xy = subgroupQuadSwapHorizontal(data[1].i16.xy); + data[invocation].i16.xyz = subgroupQuadSwapHorizontal(data[2].i16.xyz); + data[invocation].i16 = subgroupQuadSwapHorizontal(data[3].i16); + + data[invocation].i16.x = subgroupQuadSwapVertical(data[0].i16.x); + data[invocation].i16.xy = subgroupQuadSwapVertical(data[1].i16.xy); + data[invocation].i16.xyz = subgroupQuadSwapVertical(data[2].i16.xyz); + data[invocation].i16 = subgroupQuadSwapVertical(data[3].i16); + + data[invocation].i16.x = subgroupQuadSwapDiagonal(data[0].i16.x); + data[invocation].i16.xy = subgroupQuadSwapDiagonal(data[1].i16.xy); + data[invocation].i16.xyz = subgroupQuadSwapDiagonal(data[2].i16.xyz); + data[invocation].i16 = subgroupQuadSwapDiagonal(data[3].i16); + + data[invocation].u16.x = subgroupQuadBroadcast(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupQuadBroadcast(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupQuadBroadcast(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupQuadBroadcast(data[3].u16, 1); + + data[invocation].u16.x = subgroupQuadSwapHorizontal(data[0].u16.x); + data[invocation].u16.xy = subgroupQuadSwapHorizontal(data[1].u16.xy); + data[invocation].u16.xyz = subgroupQuadSwapHorizontal(data[2].u16.xyz); + data[invocation].u16 = subgroupQuadSwapHorizontal(data[3].u16); + + data[invocation].u16.x = subgroupQuadSwapVertical(data[0].u16.x); + data[invocation].u16.xy = subgroupQuadSwapVertical(data[1].u16.xy); + data[invocation].u16.xyz = subgroupQuadSwapVertical(data[2].u16.xyz); + data[invocation].u16 = subgroupQuadSwapVertical(data[3].u16); + + data[invocation].u16.x = subgroupQuadSwapDiagonal(data[0].u16.x); + data[invocation].u16.xy = subgroupQuadSwapDiagonal(data[1].u16.xy); + data[invocation].u16.xyz = subgroupQuadSwapDiagonal(data[2].u16.xyz); + data[invocation].u16 = subgroupQuadSwapDiagonal(data[3].u16); + + data[invocation].i64.x = subgroupQuadBroadcast(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupQuadBroadcast(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupQuadBroadcast(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupQuadBroadcast(data[3].i64, 1); + + data[invocation].i64.x = subgroupQuadSwapHorizontal(data[0].i64.x); + data[invocation].i64.xy = subgroupQuadSwapHorizontal(data[1].i64.xy); + data[invocation].i64.xyz = subgroupQuadSwapHorizontal(data[2].i64.xyz); + data[invocation].i64 = subgroupQuadSwapHorizontal(data[3].i64); + + data[invocation].i64.x = subgroupQuadSwapVertical(data[0].i64.x); + data[invocation].i64.xy = subgroupQuadSwapVertical(data[1].i64.xy); + data[invocation].i64.xyz = subgroupQuadSwapVertical(data[2].i64.xyz); + data[invocation].i64 = subgroupQuadSwapVertical(data[3].i64); + + data[invocation].i64.x = subgroupQuadSwapDiagonal(data[0].i64.x); + data[invocation].i64.xy = subgroupQuadSwapDiagonal(data[1].i64.xy); + data[invocation].i64.xyz = subgroupQuadSwapDiagonal(data[2].i64.xyz); + data[invocation].i64 = subgroupQuadSwapDiagonal(data[3].i64); + + data[invocation].u64.x = subgroupQuadBroadcast(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupQuadBroadcast(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupQuadBroadcast(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupQuadBroadcast(data[3].u64, 1); + + data[invocation].u64.x = subgroupQuadSwapHorizontal(data[0].u64.x); + data[invocation].u64.xy = subgroupQuadSwapHorizontal(data[1].u64.xy); + data[invocation].u64.xyz = subgroupQuadSwapHorizontal(data[2].u64.xyz); + data[invocation].u64 = subgroupQuadSwapHorizontal(data[3].u64); + + data[invocation].u64.x = subgroupQuadSwapVertical(data[0].u64.x); + data[invocation].u64.xy = subgroupQuadSwapVertical(data[1].u64.xy); + data[invocation].u64.xyz = subgroupQuadSwapVertical(data[2].u64.xyz); + data[invocation].u64 = subgroupQuadSwapVertical(data[3].u64); + + data[invocation].u64.x = subgroupQuadSwapDiagonal(data[0].u64.x); + data[invocation].u64.xy = subgroupQuadSwapDiagonal(data[1].u64.xy); + data[invocation].u64.xyz = subgroupQuadSwapDiagonal(data[2].u64.xyz); + data[invocation].u64 = subgroupQuadSwapDiagonal(data[3].u64); + + data[invocation].f16.x = subgroupQuadBroadcast(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupQuadBroadcast(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupQuadBroadcast(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupQuadBroadcast(data[3].f16, 1); + + data[invocation].f16.x = subgroupQuadSwapHorizontal(data[0].f16.x); + data[invocation].f16.xy = subgroupQuadSwapHorizontal(data[1].f16.xy); + data[invocation].f16.xyz = subgroupQuadSwapHorizontal(data[2].f16.xyz); + data[invocation].f16 = subgroupQuadSwapHorizontal(data[3].f16); + + data[invocation].f16.x = subgroupQuadSwapVertical(data[0].f16.x); + data[invocation].f16.xy = subgroupQuadSwapVertical(data[1].f16.xy); + data[invocation].f16.xyz = subgroupQuadSwapVertical(data[2].f16.xyz); + data[invocation].f16 = subgroupQuadSwapVertical(data[3].f16); + + data[invocation].f16.x = subgroupQuadSwapDiagonal(data[0].f16.x); + data[invocation].f16.xy = subgroupQuadSwapDiagonal(data[1].f16.xy); + data[invocation].f16.xyz = subgroupQuadSwapDiagonal(data[2].f16.xyz); + data[invocation].f16 = subgroupQuadSwapDiagonal(data[3].f16); +} diff --git a/3rdparty/glslang/Test/spv.subgroupExtendedTypesQuadNeg.comp b/3rdparty/glslang/Test/spv.subgroupExtendedTypesQuadNeg.comp new file mode 100644 index 000000000..07247767b --- /dev/null +++ b/3rdparty/glslang/Test/spv.subgroupExtendedTypesQuadNeg.comp @@ -0,0 +1,165 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_quad: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupQuadBroadcast(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupQuadBroadcast(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupQuadBroadcast(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupQuadBroadcast(data[3].i8, 1); + + data[invocation].i8.x = subgroupQuadSwapHorizontal(data[0].i8.x); + data[invocation].i8.xy = subgroupQuadSwapHorizontal(data[1].i8.xy); + data[invocation].i8.xyz = subgroupQuadSwapHorizontal(data[2].i8.xyz); + data[invocation].i8 = subgroupQuadSwapHorizontal(data[3].i8); + + data[invocation].i8.x = subgroupQuadSwapVertical(data[0].i8.x); + data[invocation].i8.xy = subgroupQuadSwapVertical(data[1].i8.xy); + data[invocation].i8.xyz = subgroupQuadSwapVertical(data[2].i8.xyz); + data[invocation].i8 = subgroupQuadSwapVertical(data[3].i8); + + data[invocation].i8.x = subgroupQuadSwapDiagonal(data[0].i8.x); + data[invocation].i8.xy = subgroupQuadSwapDiagonal(data[1].i8.xy); + data[invocation].i8.xyz = subgroupQuadSwapDiagonal(data[2].i8.xyz); + data[invocation].i8 = subgroupQuadSwapDiagonal(data[3].i8); + + data[invocation].u8.x = subgroupQuadBroadcast(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupQuadBroadcast(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupQuadBroadcast(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupQuadBroadcast(data[3].u8, 1); + + data[invocation].u8.x = subgroupQuadSwapHorizontal(data[0].u8.x); + data[invocation].u8.xy = subgroupQuadSwapHorizontal(data[1].u8.xy); + data[invocation].u8.xyz = subgroupQuadSwapHorizontal(data[2].u8.xyz); + data[invocation].u8 = subgroupQuadSwapHorizontal(data[3].u8); + + data[invocation].u8.x = subgroupQuadSwapVertical(data[0].u8.x); + data[invocation].u8.xy = subgroupQuadSwapVertical(data[1].u8.xy); + data[invocation].u8.xyz = subgroupQuadSwapVertical(data[2].u8.xyz); + data[invocation].u8 = subgroupQuadSwapVertical(data[3].u8); + + data[invocation].u8.x = subgroupQuadSwapDiagonal(data[0].u8.x); + data[invocation].u8.xy = subgroupQuadSwapDiagonal(data[1].u8.xy); + data[invocation].u8.xyz = subgroupQuadSwapDiagonal(data[2].u8.xyz); + data[invocation].u8 = subgroupQuadSwapDiagonal(data[3].u8); + + data[invocation].i16.x = subgroupQuadBroadcast(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupQuadBroadcast(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupQuadBroadcast(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupQuadBroadcast(data[3].i16, 1); + + data[invocation].i16.x = subgroupQuadSwapHorizontal(data[0].i16.x); + data[invocation].i16.xy = subgroupQuadSwapHorizontal(data[1].i16.xy); + data[invocation].i16.xyz = subgroupQuadSwapHorizontal(data[2].i16.xyz); + data[invocation].i16 = subgroupQuadSwapHorizontal(data[3].i16); + + data[invocation].i16.x = subgroupQuadSwapVertical(data[0].i16.x); + data[invocation].i16.xy = subgroupQuadSwapVertical(data[1].i16.xy); + data[invocation].i16.xyz = subgroupQuadSwapVertical(data[2].i16.xyz); + data[invocation].i16 = subgroupQuadSwapVertical(data[3].i16); + + data[invocation].i16.x = subgroupQuadSwapDiagonal(data[0].i16.x); + data[invocation].i16.xy = subgroupQuadSwapDiagonal(data[1].i16.xy); + data[invocation].i16.xyz = subgroupQuadSwapDiagonal(data[2].i16.xyz); + data[invocation].i16 = subgroupQuadSwapDiagonal(data[3].i16); + + data[invocation].u16.x = subgroupQuadBroadcast(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupQuadBroadcast(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupQuadBroadcast(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupQuadBroadcast(data[3].u16, 1); + + data[invocation].u16.x = subgroupQuadSwapHorizontal(data[0].u16.x); + data[invocation].u16.xy = subgroupQuadSwapHorizontal(data[1].u16.xy); + data[invocation].u16.xyz = subgroupQuadSwapHorizontal(data[2].u16.xyz); + data[invocation].u16 = subgroupQuadSwapHorizontal(data[3].u16); + + data[invocation].u16.x = subgroupQuadSwapVertical(data[0].u16.x); + data[invocation].u16.xy = subgroupQuadSwapVertical(data[1].u16.xy); + data[invocation].u16.xyz = subgroupQuadSwapVertical(data[2].u16.xyz); + data[invocation].u16 = subgroupQuadSwapVertical(data[3].u16); + + data[invocation].u16.x = subgroupQuadSwapDiagonal(data[0].u16.x); + data[invocation].u16.xy = subgroupQuadSwapDiagonal(data[1].u16.xy); + data[invocation].u16.xyz = subgroupQuadSwapDiagonal(data[2].u16.xyz); + data[invocation].u16 = subgroupQuadSwapDiagonal(data[3].u16); + + data[invocation].i64.x = subgroupQuadBroadcast(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupQuadBroadcast(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupQuadBroadcast(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupQuadBroadcast(data[3].i64, 1); + + data[invocation].i64.x = subgroupQuadSwapHorizontal(data[0].i64.x); + data[invocation].i64.xy = subgroupQuadSwapHorizontal(data[1].i64.xy); + data[invocation].i64.xyz = subgroupQuadSwapHorizontal(data[2].i64.xyz); + data[invocation].i64 = subgroupQuadSwapHorizontal(data[3].i64); + + data[invocation].i64.x = subgroupQuadSwapVertical(data[0].i64.x); + data[invocation].i64.xy = subgroupQuadSwapVertical(data[1].i64.xy); + data[invocation].i64.xyz = subgroupQuadSwapVertical(data[2].i64.xyz); + data[invocation].i64 = subgroupQuadSwapVertical(data[3].i64); + + data[invocation].i64.x = subgroupQuadSwapDiagonal(data[0].i64.x); + data[invocation].i64.xy = subgroupQuadSwapDiagonal(data[1].i64.xy); + data[invocation].i64.xyz = subgroupQuadSwapDiagonal(data[2].i64.xyz); + data[invocation].i64 = subgroupQuadSwapDiagonal(data[3].i64); + + data[invocation].u64.x = subgroupQuadBroadcast(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupQuadBroadcast(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupQuadBroadcast(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupQuadBroadcast(data[3].u64, 1); + + data[invocation].u64.x = subgroupQuadSwapHorizontal(data[0].u64.x); + data[invocation].u64.xy = subgroupQuadSwapHorizontal(data[1].u64.xy); + data[invocation].u64.xyz = subgroupQuadSwapHorizontal(data[2].u64.xyz); + data[invocation].u64 = subgroupQuadSwapHorizontal(data[3].u64); + + data[invocation].u64.x = subgroupQuadSwapVertical(data[0].u64.x); + data[invocation].u64.xy = subgroupQuadSwapVertical(data[1].u64.xy); + data[invocation].u64.xyz = subgroupQuadSwapVertical(data[2].u64.xyz); + data[invocation].u64 = subgroupQuadSwapVertical(data[3].u64); + + data[invocation].u64.x = subgroupQuadSwapDiagonal(data[0].u64.x); + data[invocation].u64.xy = subgroupQuadSwapDiagonal(data[1].u64.xy); + data[invocation].u64.xyz = subgroupQuadSwapDiagonal(data[2].u64.xyz); + data[invocation].u64 = subgroupQuadSwapDiagonal(data[3].u64); + + data[invocation].f16.x = subgroupQuadBroadcast(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupQuadBroadcast(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupQuadBroadcast(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupQuadBroadcast(data[3].f16, 1); + + data[invocation].f16.x = subgroupQuadSwapHorizontal(data[0].f16.x); + data[invocation].f16.xy = subgroupQuadSwapHorizontal(data[1].f16.xy); + data[invocation].f16.xyz = subgroupQuadSwapHorizontal(data[2].f16.xyz); + data[invocation].f16 = subgroupQuadSwapHorizontal(data[3].f16); + + data[invocation].f16.x = subgroupQuadSwapVertical(data[0].f16.x); + data[invocation].f16.xy = subgroupQuadSwapVertical(data[1].f16.xy); + data[invocation].f16.xyz = subgroupQuadSwapVertical(data[2].f16.xyz); + data[invocation].f16 = subgroupQuadSwapVertical(data[3].f16); + + data[invocation].f16.x = subgroupQuadSwapDiagonal(data[0].f16.x); + data[invocation].f16.xy = subgroupQuadSwapDiagonal(data[1].f16.xy); + data[invocation].f16.xyz = subgroupQuadSwapDiagonal(data[2].f16.xyz); + data[invocation].f16 = subgroupQuadSwapDiagonal(data[3].f16); +} diff --git a/3rdparty/glslang/Test/spv.subgroupExtendedTypesShuffle.comp b/3rdparty/glslang/Test/spv.subgroupExtendedTypesShuffle.comp new file mode 100644 index 000000000..de733e6c6 --- /dev/null +++ b/3rdparty/glslang/Test/spv.subgroupExtendedTypesShuffle.comp @@ -0,0 +1,95 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_shuffle: enable +#extension GL_EXT_shader_subgroup_extended_types_int8: enable +#extension GL_EXT_shader_subgroup_extended_types_int16: enable +#extension GL_EXT_shader_subgroup_extended_types_int64: enable +#extension GL_EXT_shader_subgroup_extended_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupShuffle(data[0].i8.x, invocation); + data[invocation].i8.xy = subgroupShuffle(data[1].i8.xy, invocation); + data[invocation].i8.xyz = subgroupShuffle(data[2].i8.xyz, invocation); + data[invocation].i8 = subgroupShuffle(data[3].i8, invocation); + + data[invocation].i8.x = subgroupShuffleXor(data[0].i8.x, invocation); + data[invocation].i8.xy = subgroupShuffleXor(data[1].i8.xy, invocation); + data[invocation].i8.xyz = subgroupShuffleXor(data[2].i8.xyz, invocation); + data[invocation].i8 = subgroupShuffleXor(data[3].i8, invocation); + + data[invocation].u8.x = subgroupShuffle(data[0].u8.x, invocation); + data[invocation].u8.xy = subgroupShuffle(data[1].u8.xy, invocation); + data[invocation].u8.xyz = subgroupShuffle(data[2].u8.xyz, invocation); + data[invocation].u8 = subgroupShuffle(data[3].u8, invocation); + + data[invocation].u8.x = subgroupShuffleXor(data[0].u8.x, invocation); + data[invocation].u8.xy = subgroupShuffleXor(data[1].u8.xy, invocation); + data[invocation].u8.xyz = subgroupShuffleXor(data[2].u8.xyz, invocation); + data[invocation].u8 = subgroupShuffleXor(data[3].u8, invocation); + + data[invocation].i16.x = subgroupShuffle(data[0].i16.x, invocation); + data[invocation].i16.xy = subgroupShuffle(data[1].i16.xy, invocation); + data[invocation].i16.xyz = subgroupShuffle(data[2].i16.xyz, invocation); + data[invocation].i16 = subgroupShuffle(data[3].i16, invocation); + + data[invocation].i16.x = subgroupShuffleXor(data[0].i16.x, invocation); + data[invocation].i16.xy = subgroupShuffleXor(data[1].i16.xy, invocation); + data[invocation].i16.xyz = subgroupShuffleXor(data[2].i16.xyz, invocation); + data[invocation].i16 = subgroupShuffleXor(data[3].i16, invocation); + + data[invocation].u16.x = subgroupShuffle(data[0].u16.x, invocation); + data[invocation].u16.xy = subgroupShuffle(data[1].u16.xy, invocation); + data[invocation].u16.xyz = subgroupShuffle(data[2].u16.xyz, invocation); + data[invocation].u16 = subgroupShuffle(data[3].u16, invocation); + + data[invocation].u16.x = subgroupShuffleXor(data[0].u16.x, invocation); + data[invocation].u16.xy = subgroupShuffleXor(data[1].u16.xy, invocation); + data[invocation].u16.xyz = subgroupShuffleXor(data[2].u16.xyz, invocation); + data[invocation].u16 = subgroupShuffleXor(data[3].u16, invocation); + + data[invocation].i64.x = subgroupShuffle(data[0].i64.x, invocation); + data[invocation].i64.xy = subgroupShuffle(data[1].i64.xy, invocation); + data[invocation].i64.xyz = subgroupShuffle(data[2].i64.xyz, invocation); + data[invocation].i64 = subgroupShuffle(data[3].i64, invocation); + + data[invocation].i64.x = subgroupShuffleXor(data[0].i64.x, invocation); + data[invocation].i64.xy = subgroupShuffleXor(data[1].i64.xy, invocation); + data[invocation].i64.xyz = subgroupShuffleXor(data[2].i64.xyz, invocation); + data[invocation].i64 = subgroupShuffleXor(data[3].i64, invocation); + + data[invocation].u64.x = subgroupShuffle(data[0].u64.x, invocation); + data[invocation].u64.xy = subgroupShuffle(data[1].u64.xy, invocation); + data[invocation].u64.xyz = subgroupShuffle(data[2].u64.xyz, invocation); + data[invocation].u64 = subgroupShuffle(data[3].u64, invocation); + + data[invocation].u64.x = subgroupShuffleXor(data[0].u64.x, invocation); + data[invocation].u64.xy = subgroupShuffleXor(data[1].u64.xy, invocation); + data[invocation].u64.xyz = subgroupShuffleXor(data[2].u64.xyz, invocation); + data[invocation].u64 = subgroupShuffleXor(data[3].u64, invocation); + + data[invocation].f16.x = subgroupShuffle(data[0].f16.x, invocation); + data[invocation].f16.xy = subgroupShuffle(data[1].f16.xy, invocation); + data[invocation].f16.xyz = subgroupShuffle(data[2].f16.xyz, invocation); + data[invocation].f16 = subgroupShuffle(data[3].f16, invocation); + + data[invocation].f16.x = subgroupShuffleXor(data[0].f16.x, invocation); + data[invocation].f16.xy = subgroupShuffleXor(data[1].f16.xy, invocation); + data[invocation].f16.xyz = subgroupShuffleXor(data[2].f16.xyz, invocation); + data[invocation].f16 = subgroupShuffleXor(data[3].f16, invocation); +} diff --git a/3rdparty/glslang/Test/spv.subgroupExtendedTypesShuffleNeg.comp b/3rdparty/glslang/Test/spv.subgroupExtendedTypesShuffleNeg.comp new file mode 100644 index 000000000..af73b54c6 --- /dev/null +++ b/3rdparty/glslang/Test/spv.subgroupExtendedTypesShuffleNeg.comp @@ -0,0 +1,95 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_shuffle: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupShuffle(data[0].i8.x, invocation); + data[invocation].i8.xy = subgroupShuffle(data[1].i8.xy, invocation); + data[invocation].i8.xyz = subgroupShuffle(data[2].i8.xyz, invocation); + data[invocation].i8 = subgroupShuffle(data[3].i8, invocation); + + data[invocation].i8.x = subgroupShuffleXor(data[0].i8.x, invocation); + data[invocation].i8.xy = subgroupShuffleXor(data[1].i8.xy, invocation); + data[invocation].i8.xyz = subgroupShuffleXor(data[2].i8.xyz, invocation); + data[invocation].i8 = subgroupShuffleXor(data[3].i8, invocation); + + data[invocation].u8.x = subgroupShuffle(data[0].u8.x, invocation); + data[invocation].u8.xy = subgroupShuffle(data[1].u8.xy, invocation); + data[invocation].u8.xyz = subgroupShuffle(data[2].u8.xyz, invocation); + data[invocation].u8 = subgroupShuffle(data[3].u8, invocation); + + data[invocation].u8.x = subgroupShuffleXor(data[0].u8.x, invocation); + data[invocation].u8.xy = subgroupShuffleXor(data[1].u8.xy, invocation); + data[invocation].u8.xyz = subgroupShuffleXor(data[2].u8.xyz, invocation); + data[invocation].u8 = subgroupShuffleXor(data[3].u8, invocation); + + data[invocation].i16.x = subgroupShuffle(data[0].i16.x, invocation); + data[invocation].i16.xy = subgroupShuffle(data[1].i16.xy, invocation); + data[invocation].i16.xyz = subgroupShuffle(data[2].i16.xyz, invocation); + data[invocation].i16 = subgroupShuffle(data[3].i16, invocation); + + data[invocation].i16.x = subgroupShuffleXor(data[0].i16.x, invocation); + data[invocation].i16.xy = subgroupShuffleXor(data[1].i16.xy, invocation); + data[invocation].i16.xyz = subgroupShuffleXor(data[2].i16.xyz, invocation); + data[invocation].i16 = subgroupShuffleXor(data[3].i16, invocation); + + data[invocation].u16.x = subgroupShuffle(data[0].u16.x, invocation); + data[invocation].u16.xy = subgroupShuffle(data[1].u16.xy, invocation); + data[invocation].u16.xyz = subgroupShuffle(data[2].u16.xyz, invocation); + data[invocation].u16 = subgroupShuffle(data[3].u16, invocation); + + data[invocation].u16.x = subgroupShuffleXor(data[0].u16.x, invocation); + data[invocation].u16.xy = subgroupShuffleXor(data[1].u16.xy, invocation); + data[invocation].u16.xyz = subgroupShuffleXor(data[2].u16.xyz, invocation); + data[invocation].u16 = subgroupShuffleXor(data[3].u16, invocation); + + data[invocation].i64.x = subgroupShuffle(data[0].i64.x, invocation); + data[invocation].i64.xy = subgroupShuffle(data[1].i64.xy, invocation); + data[invocation].i64.xyz = subgroupShuffle(data[2].i64.xyz, invocation); + data[invocation].i64 = subgroupShuffle(data[3].i64, invocation); + + data[invocation].i64.x = subgroupShuffleXor(data[0].i64.x, invocation); + data[invocation].i64.xy = subgroupShuffleXor(data[1].i64.xy, invocation); + data[invocation].i64.xyz = subgroupShuffleXor(data[2].i64.xyz, invocation); + data[invocation].i64 = subgroupShuffleXor(data[3].i64, invocation); + + data[invocation].u64.x = subgroupShuffle(data[0].u64.x, invocation); + data[invocation].u64.xy = subgroupShuffle(data[1].u64.xy, invocation); + data[invocation].u64.xyz = subgroupShuffle(data[2].u64.xyz, invocation); + data[invocation].u64 = subgroupShuffle(data[3].u64, invocation); + + data[invocation].u64.x = subgroupShuffleXor(data[0].u64.x, invocation); + data[invocation].u64.xy = subgroupShuffleXor(data[1].u64.xy, invocation); + data[invocation].u64.xyz = subgroupShuffleXor(data[2].u64.xyz, invocation); + data[invocation].u64 = subgroupShuffleXor(data[3].u64, invocation); + + data[invocation].f16.x = subgroupShuffle(data[0].f16.x, invocation); + data[invocation].f16.xy = subgroupShuffle(data[1].f16.xy, invocation); + data[invocation].f16.xyz = subgroupShuffle(data[2].f16.xyz, invocation); + data[invocation].f16 = subgroupShuffle(data[3].f16, invocation); + + data[invocation].f16.x = subgroupShuffleXor(data[0].f16.x, invocation); + data[invocation].f16.xy = subgroupShuffleXor(data[1].f16.xy, invocation); + data[invocation].f16.xyz = subgroupShuffleXor(data[2].f16.xyz, invocation); + data[invocation].f16 = subgroupShuffleXor(data[3].f16, invocation); +} diff --git a/3rdparty/glslang/Test/spv.subgroupExtendedTypesShuffleRelative.comp b/3rdparty/glslang/Test/spv.subgroupExtendedTypesShuffleRelative.comp new file mode 100644 index 000000000..73f5970c6 --- /dev/null +++ b/3rdparty/glslang/Test/spv.subgroupExtendedTypesShuffleRelative.comp @@ -0,0 +1,95 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_shuffle_relative: enable +#extension GL_EXT_shader_subgroup_extended_types_int8: enable +#extension GL_EXT_shader_subgroup_extended_types_int16: enable +#extension GL_EXT_shader_subgroup_extended_types_int64: enable +#extension GL_EXT_shader_subgroup_extended_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupShuffleUp(data[0].i8.x, invocation); + data[invocation].i8.xy = subgroupShuffleUp(data[1].i8.xy, invocation); + data[invocation].i8.xyz = subgroupShuffleUp(data[2].i8.xyz, invocation); + data[invocation].i8 = subgroupShuffleUp(data[3].i8, invocation); + + data[invocation].i8.x = subgroupShuffleDown(data[0].i8.x, invocation); + data[invocation].i8.xy = subgroupShuffleDown(data[1].i8.xy, invocation); + data[invocation].i8.xyz = subgroupShuffleDown(data[2].i8.xyz, invocation); + data[invocation].i8 = subgroupShuffleDown(data[3].i8, invocation); + + data[invocation].u8.x = subgroupShuffleUp(data[0].u8.x, invocation); + data[invocation].u8.xy = subgroupShuffleUp(data[1].u8.xy, invocation); + data[invocation].u8.xyz = subgroupShuffleUp(data[2].u8.xyz, invocation); + data[invocation].u8 = subgroupShuffleUp(data[3].u8, invocation); + + data[invocation].u8.x = subgroupShuffleDown(data[0].u8.x, invocation); + data[invocation].u8.xy = subgroupShuffleDown(data[1].u8.xy, invocation); + data[invocation].u8.xyz = subgroupShuffleDown(data[2].u8.xyz, invocation); + data[invocation].u8 = subgroupShuffleDown(data[3].u8, invocation); + + data[invocation].i16.x = subgroupShuffleUp(data[0].i16.x, invocation); + data[invocation].i16.xy = subgroupShuffleUp(data[1].i16.xy, invocation); + data[invocation].i16.xyz = subgroupShuffleUp(data[2].i16.xyz, invocation); + data[invocation].i16 = subgroupShuffleUp(data[3].i16, invocation); + + data[invocation].i16.x = subgroupShuffleDown(data[0].i16.x, invocation); + data[invocation].i16.xy = subgroupShuffleDown(data[1].i16.xy, invocation); + data[invocation].i16.xyz = subgroupShuffleDown(data[2].i16.xyz, invocation); + data[invocation].i16 = subgroupShuffleDown(data[3].i16, invocation); + + data[invocation].u16.x = subgroupShuffleUp(data[0].u16.x, invocation); + data[invocation].u16.xy = subgroupShuffleUp(data[1].u16.xy, invocation); + data[invocation].u16.xyz = subgroupShuffleUp(data[2].u16.xyz, invocation); + data[invocation].u16 = subgroupShuffleUp(data[3].u16, invocation); + + data[invocation].u16.x = subgroupShuffleDown(data[0].u16.x, invocation); + data[invocation].u16.xy = subgroupShuffleDown(data[1].u16.xy, invocation); + data[invocation].u16.xyz = subgroupShuffleDown(data[2].u16.xyz, invocation); + data[invocation].u16 = subgroupShuffleDown(data[3].u16, invocation); + + data[invocation].i64.x = subgroupShuffleUp(data[0].i64.x, invocation); + data[invocation].i64.xy = subgroupShuffleUp(data[1].i64.xy, invocation); + data[invocation].i64.xyz = subgroupShuffleUp(data[2].i64.xyz, invocation); + data[invocation].i64 = subgroupShuffleUp(data[3].i64, invocation); + + data[invocation].i64.x = subgroupShuffleDown(data[0].i64.x, invocation); + data[invocation].i64.xy = subgroupShuffleDown(data[1].i64.xy, invocation); + data[invocation].i64.xyz = subgroupShuffleDown(data[2].i64.xyz, invocation); + data[invocation].i64 = subgroupShuffleDown(data[3].i64, invocation); + + data[invocation].u64.x = subgroupShuffleUp(data[0].u64.x, invocation); + data[invocation].u64.xy = subgroupShuffleUp(data[1].u64.xy, invocation); + data[invocation].u64.xyz = subgroupShuffleUp(data[2].u64.xyz, invocation); + data[invocation].u64 = subgroupShuffleUp(data[3].u64, invocation); + + data[invocation].u64.x = subgroupShuffleDown(data[0].u64.x, invocation); + data[invocation].u64.xy = subgroupShuffleDown(data[1].u64.xy, invocation); + data[invocation].u64.xyz = subgroupShuffleDown(data[2].u64.xyz, invocation); + data[invocation].u64 = subgroupShuffleDown(data[3].u64, invocation); + + data[invocation].f16.x = subgroupShuffleUp(data[0].f16.x, invocation); + data[invocation].f16.xy = subgroupShuffleUp(data[1].f16.xy, invocation); + data[invocation].f16.xyz = subgroupShuffleUp(data[2].f16.xyz, invocation); + data[invocation].f16 = subgroupShuffleUp(data[3].f16, invocation); + + data[invocation].f16.x = subgroupShuffleDown(data[0].f16.x, invocation); + data[invocation].f16.xy = subgroupShuffleDown(data[1].f16.xy, invocation); + data[invocation].f16.xyz = subgroupShuffleDown(data[2].f16.xyz, invocation); + data[invocation].f16 = subgroupShuffleDown(data[3].f16, invocation); +} diff --git a/3rdparty/glslang/Test/spv.subgroupExtendedTypesShuffleRelativeNeg.comp b/3rdparty/glslang/Test/spv.subgroupExtendedTypesShuffleRelativeNeg.comp new file mode 100644 index 000000000..9857444a0 --- /dev/null +++ b/3rdparty/glslang/Test/spv.subgroupExtendedTypesShuffleRelativeNeg.comp @@ -0,0 +1,95 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_shuffle_relative: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupShuffleUp(data[0].i8.x, invocation); + data[invocation].i8.xy = subgroupShuffleUp(data[1].i8.xy, invocation); + data[invocation].i8.xyz = subgroupShuffleUp(data[2].i8.xyz, invocation); + data[invocation].i8 = subgroupShuffleUp(data[3].i8, invocation); + + data[invocation].i8.x = subgroupShuffleDown(data[0].i8.x, invocation); + data[invocation].i8.xy = subgroupShuffleDown(data[1].i8.xy, invocation); + data[invocation].i8.xyz = subgroupShuffleDown(data[2].i8.xyz, invocation); + data[invocation].i8 = subgroupShuffleDown(data[3].i8, invocation); + + data[invocation].u8.x = subgroupShuffleUp(data[0].u8.x, invocation); + data[invocation].u8.xy = subgroupShuffleUp(data[1].u8.xy, invocation); + data[invocation].u8.xyz = subgroupShuffleUp(data[2].u8.xyz, invocation); + data[invocation].u8 = subgroupShuffleUp(data[3].u8, invocation); + + data[invocation].u8.x = subgroupShuffleDown(data[0].u8.x, invocation); + data[invocation].u8.xy = subgroupShuffleDown(data[1].u8.xy, invocation); + data[invocation].u8.xyz = subgroupShuffleDown(data[2].u8.xyz, invocation); + data[invocation].u8 = subgroupShuffleDown(data[3].u8, invocation); + + data[invocation].i16.x = subgroupShuffleUp(data[0].i16.x, invocation); + data[invocation].i16.xy = subgroupShuffleUp(data[1].i16.xy, invocation); + data[invocation].i16.xyz = subgroupShuffleUp(data[2].i16.xyz, invocation); + data[invocation].i16 = subgroupShuffleUp(data[3].i16, invocation); + + data[invocation].i16.x = subgroupShuffleDown(data[0].i16.x, invocation); + data[invocation].i16.xy = subgroupShuffleDown(data[1].i16.xy, invocation); + data[invocation].i16.xyz = subgroupShuffleDown(data[2].i16.xyz, invocation); + data[invocation].i16 = subgroupShuffleDown(data[3].i16, invocation); + + data[invocation].u16.x = subgroupShuffleUp(data[0].u16.x, invocation); + data[invocation].u16.xy = subgroupShuffleUp(data[1].u16.xy, invocation); + data[invocation].u16.xyz = subgroupShuffleUp(data[2].u16.xyz, invocation); + data[invocation].u16 = subgroupShuffleUp(data[3].u16, invocation); + + data[invocation].u16.x = subgroupShuffleDown(data[0].u16.x, invocation); + data[invocation].u16.xy = subgroupShuffleDown(data[1].u16.xy, invocation); + data[invocation].u16.xyz = subgroupShuffleDown(data[2].u16.xyz, invocation); + data[invocation].u16 = subgroupShuffleDown(data[3].u16, invocation); + + data[invocation].i64.x = subgroupShuffleUp(data[0].i64.x, invocation); + data[invocation].i64.xy = subgroupShuffleUp(data[1].i64.xy, invocation); + data[invocation].i64.xyz = subgroupShuffleUp(data[2].i64.xyz, invocation); + data[invocation].i64 = subgroupShuffleUp(data[3].i64, invocation); + + data[invocation].i64.x = subgroupShuffleDown(data[0].i64.x, invocation); + data[invocation].i64.xy = subgroupShuffleDown(data[1].i64.xy, invocation); + data[invocation].i64.xyz = subgroupShuffleDown(data[2].i64.xyz, invocation); + data[invocation].i64 = subgroupShuffleDown(data[3].i64, invocation); + + data[invocation].u64.x = subgroupShuffleUp(data[0].u64.x, invocation); + data[invocation].u64.xy = subgroupShuffleUp(data[1].u64.xy, invocation); + data[invocation].u64.xyz = subgroupShuffleUp(data[2].u64.xyz, invocation); + data[invocation].u64 = subgroupShuffleUp(data[3].u64, invocation); + + data[invocation].u64.x = subgroupShuffleDown(data[0].u64.x, invocation); + data[invocation].u64.xy = subgroupShuffleDown(data[1].u64.xy, invocation); + data[invocation].u64.xyz = subgroupShuffleDown(data[2].u64.xyz, invocation); + data[invocation].u64 = subgroupShuffleDown(data[3].u64, invocation); + + data[invocation].f16.x = subgroupShuffleUp(data[0].f16.x, invocation); + data[invocation].f16.xy = subgroupShuffleUp(data[1].f16.xy, invocation); + data[invocation].f16.xyz = subgroupShuffleUp(data[2].f16.xyz, invocation); + data[invocation].f16 = subgroupShuffleUp(data[3].f16, invocation); + + data[invocation].f16.x = subgroupShuffleDown(data[0].f16.x, invocation); + data[invocation].f16.xy = subgroupShuffleDown(data[1].f16.xy, invocation); + data[invocation].f16.xyz = subgroupShuffleDown(data[2].f16.xyz, invocation); + data[invocation].f16 = subgroupShuffleDown(data[3].f16, invocation); +} diff --git a/3rdparty/glslang/Test/spv.subgroupExtendedTypesVote.comp b/3rdparty/glslang/Test/spv.subgroupExtendedTypesVote.comp new file mode 100644 index 000000000..960156a64 --- /dev/null +++ b/3rdparty/glslang/Test/spv.subgroupExtendedTypesVote.comp @@ -0,0 +1,66 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_vote: enable +#extension GL_EXT_shader_subgroup_extended_types_int8: enable +#extension GL_EXT_shader_subgroup_extended_types_int16: enable +#extension GL_EXT_shader_subgroup_extended_types_int64: enable +#extension GL_EXT_shader_subgroup_extended_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; + int r; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + if (subgroupAll(data[invocation].r < 0)) + { + data[invocation].r = int(subgroupAllEqual(data[0].i8.x)); + data[invocation].r = int(subgroupAllEqual(data[1].i8.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].i8.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].i8)); + + data[invocation].r = int(subgroupAllEqual(data[0].u8.x)); + data[invocation].r = int(subgroupAllEqual(data[1].u8.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].u8.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].u8)); + + data[invocation].r = int(subgroupAllEqual(data[0].i16.x)); + data[invocation].r = int(subgroupAllEqual(data[1].i16.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].i16.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].i16)); + + data[invocation].r = int(subgroupAllEqual(data[0].u16.x)); + data[invocation].r = int(subgroupAllEqual(data[1].u16.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].u16.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].u16)); + } + else if (subgroupAny(data[invocation].r < 0)) + { + data[invocation].r = int(subgroupAllEqual(data[0].i64.x)); + data[invocation].r = int(subgroupAllEqual(data[1].i64.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].i64.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].i64)); + + data[invocation].r = int(subgroupAllEqual(data[0].u64.x)); + data[invocation].r = int(subgroupAllEqual(data[1].u64.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].u64.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].u64)); + + data[invocation].r = int(subgroupAllEqual(data[0].f16.x)); + data[invocation].r = int(subgroupAllEqual(data[1].f16.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].f16.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].f16)); + } +} diff --git a/3rdparty/glslang/Test/spv.subgroupExtendedTypesVoteNeg.comp b/3rdparty/glslang/Test/spv.subgroupExtendedTypesVoteNeg.comp new file mode 100644 index 000000000..be8d1bb11 --- /dev/null +++ b/3rdparty/glslang/Test/spv.subgroupExtendedTypesVoteNeg.comp @@ -0,0 +1,66 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_vote: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; + int r; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + if (subgroupAll(data[invocation].r < 0)) + { + data[invocation].r = int(subgroupAllEqual(data[0].i8.x)); + data[invocation].r = int(subgroupAllEqual(data[1].i8.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].i8.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].i8)); + + data[invocation].r = int(subgroupAllEqual(data[0].u8.x)); + data[invocation].r = int(subgroupAllEqual(data[1].u8.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].u8.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].u8)); + + data[invocation].r = int(subgroupAllEqual(data[0].i16.x)); + data[invocation].r = int(subgroupAllEqual(data[1].i16.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].i16.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].i16)); + + data[invocation].r = int(subgroupAllEqual(data[0].u16.x)); + data[invocation].r = int(subgroupAllEqual(data[1].u16.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].u16.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].u16)); + } + else if (subgroupAny(data[invocation].r < 0)) + { + data[invocation].r = int(subgroupAllEqual(data[0].i64.x)); + data[invocation].r = int(subgroupAllEqual(data[1].i64.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].i64.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].i64)); + + data[invocation].r = int(subgroupAllEqual(data[0].u64.x)); + data[invocation].r = int(subgroupAllEqual(data[1].u64.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].u64.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].u64)); + + data[invocation].r = int(subgroupAllEqual(data[0].f16.x)); + data[invocation].r = int(subgroupAllEqual(data[1].f16.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].f16.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].f16)); + } +} diff --git a/3rdparty/glslang/glslang/CMakeLists.txt b/3rdparty/glslang/glslang/CMakeLists.txt index 73124c567..930893c2f 100644 --- a/3rdparty/glslang/glslang/CMakeLists.txt +++ b/3rdparty/glslang/glslang/CMakeLists.txt @@ -6,6 +6,10 @@ else(WIN32) message("unknown platform") endif(WIN32) +if(EMSCRIPTEN OR ENABLE_GLSLANG_WEB) + add_subdirectory(OSDependent/Web) +endif(EMSCRIPTEN OR ENABLE_GLSLANG_WEB) + set(SOURCES MachineIndependent/glslang.m4 MachineIndependent/glslang.y @@ -114,16 +118,3 @@ if(ENABLE_GLSLANG_INSTALL) install(FILES ${file} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/${dir}) endforeach() endif(ENABLE_GLSLANG_INSTALL) - -if(ENABLE_GLSLANG_WEB) - add_executable(glslang.js glslang.js.cpp) - glslang_set_link_args(glslang.js) - target_link_libraries(glslang.js glslang SPIRV) - if(EMSCRIPTEN) - set_target_properties(glslang.js PROPERTIES - OUTPUT_NAME "glslang" - SUFFIX ".js" - LINK_FLAGS "--bind -s EXPORT_NAME=\"glslangModule\"") - em_link_pre_js(glslang.js ${CMAKE_CURRENT_SOURCE_DIR}/glslang.pre.js) - endif(EMSCRIPTEN) -endif(ENABLE_GLSLANG_WEB) diff --git a/3rdparty/glslang/glslang/Include/Types.h b/3rdparty/glslang/glslang/Include/Types.h index a419cb0fc..9961c943a 100644 --- a/3rdparty/glslang/glslang/Include/Types.h +++ b/3rdparty/glslang/glslang/Include/Types.h @@ -1195,6 +1195,7 @@ struct TShaderQualifiers { TVertexOrder order; bool pointMode; int localSize[3]; // compute shader + bool localSizeNotDefault[3]; // compute shader int localSizeSpecId[3]; // compute shader specialization id for gl_WorkGroupSize #ifndef GLSLANG_WEB bool earlyFragmentTests; // fragment input @@ -1225,6 +1226,9 @@ struct TShaderQualifiers { localSize[0] = 1; localSize[1] = 1; localSize[2] = 1; + localSizeNotDefault[0] = false; + localSizeNotDefault[1] = false; + localSizeNotDefault[2] = false; localSizeSpecId[0] = TQualifier::layoutNotSet; localSizeSpecId[1] = TQualifier::layoutNotSet; localSizeSpecId[2] = TQualifier::layoutNotSet; @@ -1272,6 +1276,9 @@ struct TShaderQualifiers { if (src.localSize[i] > 1) localSize[i] = src.localSize[i]; } + for (int i = 0; i < 3; ++i) { + localSizeNotDefault[i] = src.localSizeNotDefault[i] || localSizeNotDefault[i]; + } for (int i = 0; i < 3; ++i) { if (src.localSizeSpecId[i] != TQualifier::layoutNotSet) localSizeSpecId[i] = src.localSizeSpecId[i]; diff --git a/3rdparty/glslang/glslang/Include/intermediate.h b/3rdparty/glslang/glslang/Include/intermediate.h index 3a7405ad6..b599a905c 100644 --- a/3rdparty/glslang/glslang/Include/intermediate.h +++ b/3rdparty/glslang/glslang/Include/intermediate.h @@ -275,6 +275,10 @@ enum TOperator { EOpConvUint64ToPtr, EOpConvPtrToUint64, + // uvec2 <-> pointer + EOpConvUvec2ToPtr, + EOpConvPtrToUvec2, + // // binary operations // diff --git a/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp b/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp index 48e983aa8..2344d36ce 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp @@ -1743,58 +1743,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "bool subgroupAll(bool);\n" "bool subgroupAny(bool);\n" - - "bool subgroupAllEqual(float);\n" - "bool subgroupAllEqual(vec2);\n" - "bool subgroupAllEqual(vec3);\n" - "bool subgroupAllEqual(vec4);\n" - "bool subgroupAllEqual(int);\n" - "bool subgroupAllEqual(ivec2);\n" - "bool subgroupAllEqual(ivec3);\n" - "bool subgroupAllEqual(ivec4);\n" - "bool subgroupAllEqual(uint);\n" - "bool subgroupAllEqual(uvec2);\n" - "bool subgroupAllEqual(uvec3);\n" - "bool subgroupAllEqual(uvec4);\n" - "bool subgroupAllEqual(bool);\n" - "bool subgroupAllEqual(bvec2);\n" - "bool subgroupAllEqual(bvec3);\n" - "bool subgroupAllEqual(bvec4);\n" - - "float subgroupBroadcast(float, uint);\n" - "vec2 subgroupBroadcast(vec2, uint);\n" - "vec3 subgroupBroadcast(vec3, uint);\n" - "vec4 subgroupBroadcast(vec4, uint);\n" - "int subgroupBroadcast(int, uint);\n" - "ivec2 subgroupBroadcast(ivec2, uint);\n" - "ivec3 subgroupBroadcast(ivec3, uint);\n" - "ivec4 subgroupBroadcast(ivec4, uint);\n" - "uint subgroupBroadcast(uint, uint);\n" - "uvec2 subgroupBroadcast(uvec2, uint);\n" - "uvec3 subgroupBroadcast(uvec3, uint);\n" - "uvec4 subgroupBroadcast(uvec4, uint);\n" - "bool subgroupBroadcast(bool, uint);\n" - "bvec2 subgroupBroadcast(bvec2, uint);\n" - "bvec3 subgroupBroadcast(bvec3, uint);\n" - "bvec4 subgroupBroadcast(bvec4, uint);\n" - - "float subgroupBroadcastFirst(float);\n" - "vec2 subgroupBroadcastFirst(vec2);\n" - "vec3 subgroupBroadcastFirst(vec3);\n" - "vec4 subgroupBroadcastFirst(vec4);\n" - "int subgroupBroadcastFirst(int);\n" - "ivec2 subgroupBroadcastFirst(ivec2);\n" - "ivec3 subgroupBroadcastFirst(ivec3);\n" - "ivec4 subgroupBroadcastFirst(ivec4);\n" - "uint subgroupBroadcastFirst(uint);\n" - "uvec2 subgroupBroadcastFirst(uvec2);\n" - "uvec3 subgroupBroadcastFirst(uvec3);\n" - "uvec4 subgroupBroadcastFirst(uvec4);\n" - "bool subgroupBroadcastFirst(bool);\n" - "bvec2 subgroupBroadcastFirst(bvec2);\n" - "bvec3 subgroupBroadcastFirst(bvec3);\n" - "bvec4 subgroupBroadcastFirst(bvec4);\n" - "uvec4 subgroupBallot(bool);\n" "bool subgroupInverseBallot(uvec4);\n" "bool subgroupBallotBitExtract(uvec4, uint);\n" @@ -1803,1002 +1751,130 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "uint subgroupBallotExclusiveBitCount(uvec4);\n" "uint subgroupBallotFindLSB(uvec4);\n" "uint subgroupBallotFindMSB(uvec4);\n" - - "float subgroupShuffle(float, uint);\n" - "vec2 subgroupShuffle(vec2, uint);\n" - "vec3 subgroupShuffle(vec3, uint);\n" - "vec4 subgroupShuffle(vec4, uint);\n" - "int subgroupShuffle(int, uint);\n" - "ivec2 subgroupShuffle(ivec2, uint);\n" - "ivec3 subgroupShuffle(ivec3, uint);\n" - "ivec4 subgroupShuffle(ivec4, uint);\n" - "uint subgroupShuffle(uint, uint);\n" - "uvec2 subgroupShuffle(uvec2, uint);\n" - "uvec3 subgroupShuffle(uvec3, uint);\n" - "uvec4 subgroupShuffle(uvec4, uint);\n" - "bool subgroupShuffle(bool, uint);\n" - "bvec2 subgroupShuffle(bvec2, uint);\n" - "bvec3 subgroupShuffle(bvec3, uint);\n" - "bvec4 subgroupShuffle(bvec4, uint);\n" - - "float subgroupShuffleXor(float, uint);\n" - "vec2 subgroupShuffleXor(vec2, uint);\n" - "vec3 subgroupShuffleXor(vec3, uint);\n" - "vec4 subgroupShuffleXor(vec4, uint);\n" - "int subgroupShuffleXor(int, uint);\n" - "ivec2 subgroupShuffleXor(ivec2, uint);\n" - "ivec3 subgroupShuffleXor(ivec3, uint);\n" - "ivec4 subgroupShuffleXor(ivec4, uint);\n" - "uint subgroupShuffleXor(uint, uint);\n" - "uvec2 subgroupShuffleXor(uvec2, uint);\n" - "uvec3 subgroupShuffleXor(uvec3, uint);\n" - "uvec4 subgroupShuffleXor(uvec4, uint);\n" - "bool subgroupShuffleXor(bool, uint);\n" - "bvec2 subgroupShuffleXor(bvec2, uint);\n" - "bvec3 subgroupShuffleXor(bvec3, uint);\n" - "bvec4 subgroupShuffleXor(bvec4, uint);\n" - - "float subgroupShuffleUp(float, uint delta);\n" - "vec2 subgroupShuffleUp(vec2, uint delta);\n" - "vec3 subgroupShuffleUp(vec3, uint delta);\n" - "vec4 subgroupShuffleUp(vec4, uint delta);\n" - "int subgroupShuffleUp(int, uint delta);\n" - "ivec2 subgroupShuffleUp(ivec2, uint delta);\n" - "ivec3 subgroupShuffleUp(ivec3, uint delta);\n" - "ivec4 subgroupShuffleUp(ivec4, uint delta);\n" - "uint subgroupShuffleUp(uint, uint delta);\n" - "uvec2 subgroupShuffleUp(uvec2, uint delta);\n" - "uvec3 subgroupShuffleUp(uvec3, uint delta);\n" - "uvec4 subgroupShuffleUp(uvec4, uint delta);\n" - "bool subgroupShuffleUp(bool, uint delta);\n" - "bvec2 subgroupShuffleUp(bvec2, uint delta);\n" - "bvec3 subgroupShuffleUp(bvec3, uint delta);\n" - "bvec4 subgroupShuffleUp(bvec4, uint delta);\n" - - "float subgroupShuffleDown(float, uint delta);\n" - "vec2 subgroupShuffleDown(vec2, uint delta);\n" - "vec3 subgroupShuffleDown(vec3, uint delta);\n" - "vec4 subgroupShuffleDown(vec4, uint delta);\n" - "int subgroupShuffleDown(int, uint delta);\n" - "ivec2 subgroupShuffleDown(ivec2, uint delta);\n" - "ivec3 subgroupShuffleDown(ivec3, uint delta);\n" - "ivec4 subgroupShuffleDown(ivec4, uint delta);\n" - "uint subgroupShuffleDown(uint, uint delta);\n" - "uvec2 subgroupShuffleDown(uvec2, uint delta);\n" - "uvec3 subgroupShuffleDown(uvec3, uint delta);\n" - "uvec4 subgroupShuffleDown(uvec4, uint delta);\n" - "bool subgroupShuffleDown(bool, uint delta);\n" - "bvec2 subgroupShuffleDown(bvec2, uint delta);\n" - "bvec3 subgroupShuffleDown(bvec3, uint delta);\n" - "bvec4 subgroupShuffleDown(bvec4, uint delta);\n" - - "float subgroupAdd(float);\n" - "vec2 subgroupAdd(vec2);\n" - "vec3 subgroupAdd(vec3);\n" - "vec4 subgroupAdd(vec4);\n" - "int subgroupAdd(int);\n" - "ivec2 subgroupAdd(ivec2);\n" - "ivec3 subgroupAdd(ivec3);\n" - "ivec4 subgroupAdd(ivec4);\n" - "uint subgroupAdd(uint);\n" - "uvec2 subgroupAdd(uvec2);\n" - "uvec3 subgroupAdd(uvec3);\n" - "uvec4 subgroupAdd(uvec4);\n" - - "float subgroupMul(float);\n" - "vec2 subgroupMul(vec2);\n" - "vec3 subgroupMul(vec3);\n" - "vec4 subgroupMul(vec4);\n" - "int subgroupMul(int);\n" - "ivec2 subgroupMul(ivec2);\n" - "ivec3 subgroupMul(ivec3);\n" - "ivec4 subgroupMul(ivec4);\n" - "uint subgroupMul(uint);\n" - "uvec2 subgroupMul(uvec2);\n" - "uvec3 subgroupMul(uvec3);\n" - "uvec4 subgroupMul(uvec4);\n" - - "float subgroupMin(float);\n" - "vec2 subgroupMin(vec2);\n" - "vec3 subgroupMin(vec3);\n" - "vec4 subgroupMin(vec4);\n" - "int subgroupMin(int);\n" - "ivec2 subgroupMin(ivec2);\n" - "ivec3 subgroupMin(ivec3);\n" - "ivec4 subgroupMin(ivec4);\n" - "uint subgroupMin(uint);\n" - "uvec2 subgroupMin(uvec2);\n" - "uvec3 subgroupMin(uvec3);\n" - "uvec4 subgroupMin(uvec4);\n" - - "float subgroupMax(float);\n" - "vec2 subgroupMax(vec2);\n" - "vec3 subgroupMax(vec3);\n" - "vec4 subgroupMax(vec4);\n" - "int subgroupMax(int);\n" - "ivec2 subgroupMax(ivec2);\n" - "ivec3 subgroupMax(ivec3);\n" - "ivec4 subgroupMax(ivec4);\n" - "uint subgroupMax(uint);\n" - "uvec2 subgroupMax(uvec2);\n" - "uvec3 subgroupMax(uvec3);\n" - "uvec4 subgroupMax(uvec4);\n" - - "int subgroupAnd(int);\n" - "ivec2 subgroupAnd(ivec2);\n" - "ivec3 subgroupAnd(ivec3);\n" - "ivec4 subgroupAnd(ivec4);\n" - "uint subgroupAnd(uint);\n" - "uvec2 subgroupAnd(uvec2);\n" - "uvec3 subgroupAnd(uvec3);\n" - "uvec4 subgroupAnd(uvec4);\n" - "bool subgroupAnd(bool);\n" - "bvec2 subgroupAnd(bvec2);\n" - "bvec3 subgroupAnd(bvec3);\n" - "bvec4 subgroupAnd(bvec4);\n" - - "int subgroupOr(int);\n" - "ivec2 subgroupOr(ivec2);\n" - "ivec3 subgroupOr(ivec3);\n" - "ivec4 subgroupOr(ivec4);\n" - "uint subgroupOr(uint);\n" - "uvec2 subgroupOr(uvec2);\n" - "uvec3 subgroupOr(uvec3);\n" - "uvec4 subgroupOr(uvec4);\n" - "bool subgroupOr(bool);\n" - "bvec2 subgroupOr(bvec2);\n" - "bvec3 subgroupOr(bvec3);\n" - "bvec4 subgroupOr(bvec4);\n" - - "int subgroupXor(int);\n" - "ivec2 subgroupXor(ivec2);\n" - "ivec3 subgroupXor(ivec3);\n" - "ivec4 subgroupXor(ivec4);\n" - "uint subgroupXor(uint);\n" - "uvec2 subgroupXor(uvec2);\n" - "uvec3 subgroupXor(uvec3);\n" - "uvec4 subgroupXor(uvec4);\n" - "bool subgroupXor(bool);\n" - "bvec2 subgroupXor(bvec2);\n" - "bvec3 subgroupXor(bvec3);\n" - "bvec4 subgroupXor(bvec4);\n" - - "float subgroupInclusiveAdd(float);\n" - "vec2 subgroupInclusiveAdd(vec2);\n" - "vec3 subgroupInclusiveAdd(vec3);\n" - "vec4 subgroupInclusiveAdd(vec4);\n" - "int subgroupInclusiveAdd(int);\n" - "ivec2 subgroupInclusiveAdd(ivec2);\n" - "ivec3 subgroupInclusiveAdd(ivec3);\n" - "ivec4 subgroupInclusiveAdd(ivec4);\n" - "uint subgroupInclusiveAdd(uint);\n" - "uvec2 subgroupInclusiveAdd(uvec2);\n" - "uvec3 subgroupInclusiveAdd(uvec3);\n" - "uvec4 subgroupInclusiveAdd(uvec4);\n" - - "float subgroupInclusiveMul(float);\n" - "vec2 subgroupInclusiveMul(vec2);\n" - "vec3 subgroupInclusiveMul(vec3);\n" - "vec4 subgroupInclusiveMul(vec4);\n" - "int subgroupInclusiveMul(int);\n" - "ivec2 subgroupInclusiveMul(ivec2);\n" - "ivec3 subgroupInclusiveMul(ivec3);\n" - "ivec4 subgroupInclusiveMul(ivec4);\n" - "uint subgroupInclusiveMul(uint);\n" - "uvec2 subgroupInclusiveMul(uvec2);\n" - "uvec3 subgroupInclusiveMul(uvec3);\n" - "uvec4 subgroupInclusiveMul(uvec4);\n" - - "float subgroupInclusiveMin(float);\n" - "vec2 subgroupInclusiveMin(vec2);\n" - "vec3 subgroupInclusiveMin(vec3);\n" - "vec4 subgroupInclusiveMin(vec4);\n" - "int subgroupInclusiveMin(int);\n" - "ivec2 subgroupInclusiveMin(ivec2);\n" - "ivec3 subgroupInclusiveMin(ivec3);\n" - "ivec4 subgroupInclusiveMin(ivec4);\n" - "uint subgroupInclusiveMin(uint);\n" - "uvec2 subgroupInclusiveMin(uvec2);\n" - "uvec3 subgroupInclusiveMin(uvec3);\n" - "uvec4 subgroupInclusiveMin(uvec4);\n" - - "float subgroupInclusiveMax(float);\n" - "vec2 subgroupInclusiveMax(vec2);\n" - "vec3 subgroupInclusiveMax(vec3);\n" - "vec4 subgroupInclusiveMax(vec4);\n" - "int subgroupInclusiveMax(int);\n" - "ivec2 subgroupInclusiveMax(ivec2);\n" - "ivec3 subgroupInclusiveMax(ivec3);\n" - "ivec4 subgroupInclusiveMax(ivec4);\n" - "uint subgroupInclusiveMax(uint);\n" - "uvec2 subgroupInclusiveMax(uvec2);\n" - "uvec3 subgroupInclusiveMax(uvec3);\n" - "uvec4 subgroupInclusiveMax(uvec4);\n" - - "int subgroupInclusiveAnd(int);\n" - "ivec2 subgroupInclusiveAnd(ivec2);\n" - "ivec3 subgroupInclusiveAnd(ivec3);\n" - "ivec4 subgroupInclusiveAnd(ivec4);\n" - "uint subgroupInclusiveAnd(uint);\n" - "uvec2 subgroupInclusiveAnd(uvec2);\n" - "uvec3 subgroupInclusiveAnd(uvec3);\n" - "uvec4 subgroupInclusiveAnd(uvec4);\n" - "bool subgroupInclusiveAnd(bool);\n" - "bvec2 subgroupInclusiveAnd(bvec2);\n" - "bvec3 subgroupInclusiveAnd(bvec3);\n" - "bvec4 subgroupInclusiveAnd(bvec4);\n" - - "int subgroupInclusiveOr(int);\n" - "ivec2 subgroupInclusiveOr(ivec2);\n" - "ivec3 subgroupInclusiveOr(ivec3);\n" - "ivec4 subgroupInclusiveOr(ivec4);\n" - "uint subgroupInclusiveOr(uint);\n" - "uvec2 subgroupInclusiveOr(uvec2);\n" - "uvec3 subgroupInclusiveOr(uvec3);\n" - "uvec4 subgroupInclusiveOr(uvec4);\n" - "bool subgroupInclusiveOr(bool);\n" - "bvec2 subgroupInclusiveOr(bvec2);\n" - "bvec3 subgroupInclusiveOr(bvec3);\n" - "bvec4 subgroupInclusiveOr(bvec4);\n" - - "int subgroupInclusiveXor(int);\n" - "ivec2 subgroupInclusiveXor(ivec2);\n" - "ivec3 subgroupInclusiveXor(ivec3);\n" - "ivec4 subgroupInclusiveXor(ivec4);\n" - "uint subgroupInclusiveXor(uint);\n" - "uvec2 subgroupInclusiveXor(uvec2);\n" - "uvec3 subgroupInclusiveXor(uvec3);\n" - "uvec4 subgroupInclusiveXor(uvec4);\n" - "bool subgroupInclusiveXor(bool);\n" - "bvec2 subgroupInclusiveXor(bvec2);\n" - "bvec3 subgroupInclusiveXor(bvec3);\n" - "bvec4 subgroupInclusiveXor(bvec4);\n" - - "float subgroupExclusiveAdd(float);\n" - "vec2 subgroupExclusiveAdd(vec2);\n" - "vec3 subgroupExclusiveAdd(vec3);\n" - "vec4 subgroupExclusiveAdd(vec4);\n" - "int subgroupExclusiveAdd(int);\n" - "ivec2 subgroupExclusiveAdd(ivec2);\n" - "ivec3 subgroupExclusiveAdd(ivec3);\n" - "ivec4 subgroupExclusiveAdd(ivec4);\n" - "uint subgroupExclusiveAdd(uint);\n" - "uvec2 subgroupExclusiveAdd(uvec2);\n" - "uvec3 subgroupExclusiveAdd(uvec3);\n" - "uvec4 subgroupExclusiveAdd(uvec4);\n" - - "float subgroupExclusiveMul(float);\n" - "vec2 subgroupExclusiveMul(vec2);\n" - "vec3 subgroupExclusiveMul(vec3);\n" - "vec4 subgroupExclusiveMul(vec4);\n" - "int subgroupExclusiveMul(int);\n" - "ivec2 subgroupExclusiveMul(ivec2);\n" - "ivec3 subgroupExclusiveMul(ivec3);\n" - "ivec4 subgroupExclusiveMul(ivec4);\n" - "uint subgroupExclusiveMul(uint);\n" - "uvec2 subgroupExclusiveMul(uvec2);\n" - "uvec3 subgroupExclusiveMul(uvec3);\n" - "uvec4 subgroupExclusiveMul(uvec4);\n" - - "float subgroupExclusiveMin(float);\n" - "vec2 subgroupExclusiveMin(vec2);\n" - "vec3 subgroupExclusiveMin(vec3);\n" - "vec4 subgroupExclusiveMin(vec4);\n" - "int subgroupExclusiveMin(int);\n" - "ivec2 subgroupExclusiveMin(ivec2);\n" - "ivec3 subgroupExclusiveMin(ivec3);\n" - "ivec4 subgroupExclusiveMin(ivec4);\n" - "uint subgroupExclusiveMin(uint);\n" - "uvec2 subgroupExclusiveMin(uvec2);\n" - "uvec3 subgroupExclusiveMin(uvec3);\n" - "uvec4 subgroupExclusiveMin(uvec4);\n" - - "float subgroupExclusiveMax(float);\n" - "vec2 subgroupExclusiveMax(vec2);\n" - "vec3 subgroupExclusiveMax(vec3);\n" - "vec4 subgroupExclusiveMax(vec4);\n" - "int subgroupExclusiveMax(int);\n" - "ivec2 subgroupExclusiveMax(ivec2);\n" - "ivec3 subgroupExclusiveMax(ivec3);\n" - "ivec4 subgroupExclusiveMax(ivec4);\n" - "uint subgroupExclusiveMax(uint);\n" - "uvec2 subgroupExclusiveMax(uvec2);\n" - "uvec3 subgroupExclusiveMax(uvec3);\n" - "uvec4 subgroupExclusiveMax(uvec4);\n" - - "int subgroupExclusiveAnd(int);\n" - "ivec2 subgroupExclusiveAnd(ivec2);\n" - "ivec3 subgroupExclusiveAnd(ivec3);\n" - "ivec4 subgroupExclusiveAnd(ivec4);\n" - "uint subgroupExclusiveAnd(uint);\n" - "uvec2 subgroupExclusiveAnd(uvec2);\n" - "uvec3 subgroupExclusiveAnd(uvec3);\n" - "uvec4 subgroupExclusiveAnd(uvec4);\n" - "bool subgroupExclusiveAnd(bool);\n" - "bvec2 subgroupExclusiveAnd(bvec2);\n" - "bvec3 subgroupExclusiveAnd(bvec3);\n" - "bvec4 subgroupExclusiveAnd(bvec4);\n" - - "int subgroupExclusiveOr(int);\n" - "ivec2 subgroupExclusiveOr(ivec2);\n" - "ivec3 subgroupExclusiveOr(ivec3);\n" - "ivec4 subgroupExclusiveOr(ivec4);\n" - "uint subgroupExclusiveOr(uint);\n" - "uvec2 subgroupExclusiveOr(uvec2);\n" - "uvec3 subgroupExclusiveOr(uvec3);\n" - "uvec4 subgroupExclusiveOr(uvec4);\n" - "bool subgroupExclusiveOr(bool);\n" - "bvec2 subgroupExclusiveOr(bvec2);\n" - "bvec3 subgroupExclusiveOr(bvec3);\n" - "bvec4 subgroupExclusiveOr(bvec4);\n" - - "int subgroupExclusiveXor(int);\n" - "ivec2 subgroupExclusiveXor(ivec2);\n" - "ivec3 subgroupExclusiveXor(ivec3);\n" - "ivec4 subgroupExclusiveXor(ivec4);\n" - "uint subgroupExclusiveXor(uint);\n" - "uvec2 subgroupExclusiveXor(uvec2);\n" - "uvec3 subgroupExclusiveXor(uvec3);\n" - "uvec4 subgroupExclusiveXor(uvec4);\n" - "bool subgroupExclusiveXor(bool);\n" - "bvec2 subgroupExclusiveXor(bvec2);\n" - "bvec3 subgroupExclusiveXor(bvec3);\n" - "bvec4 subgroupExclusiveXor(bvec4);\n" - - "float subgroupClusteredAdd(float, uint);\n" - "vec2 subgroupClusteredAdd(vec2, uint);\n" - "vec3 subgroupClusteredAdd(vec3, uint);\n" - "vec4 subgroupClusteredAdd(vec4, uint);\n" - "int subgroupClusteredAdd(int, uint);\n" - "ivec2 subgroupClusteredAdd(ivec2, uint);\n" - "ivec3 subgroupClusteredAdd(ivec3, uint);\n" - "ivec4 subgroupClusteredAdd(ivec4, uint);\n" - "uint subgroupClusteredAdd(uint, uint);\n" - "uvec2 subgroupClusteredAdd(uvec2, uint);\n" - "uvec3 subgroupClusteredAdd(uvec3, uint);\n" - "uvec4 subgroupClusteredAdd(uvec4, uint);\n" - - "float subgroupClusteredMul(float, uint);\n" - "vec2 subgroupClusteredMul(vec2, uint);\n" - "vec3 subgroupClusteredMul(vec3, uint);\n" - "vec4 subgroupClusteredMul(vec4, uint);\n" - "int subgroupClusteredMul(int, uint);\n" - "ivec2 subgroupClusteredMul(ivec2, uint);\n" - "ivec3 subgroupClusteredMul(ivec3, uint);\n" - "ivec4 subgroupClusteredMul(ivec4, uint);\n" - "uint subgroupClusteredMul(uint, uint);\n" - "uvec2 subgroupClusteredMul(uvec2, uint);\n" - "uvec3 subgroupClusteredMul(uvec3, uint);\n" - "uvec4 subgroupClusteredMul(uvec4, uint);\n" - - "float subgroupClusteredMin(float, uint);\n" - "vec2 subgroupClusteredMin(vec2, uint);\n" - "vec3 subgroupClusteredMin(vec3, uint);\n" - "vec4 subgroupClusteredMin(vec4, uint);\n" - "int subgroupClusteredMin(int, uint);\n" - "ivec2 subgroupClusteredMin(ivec2, uint);\n" - "ivec3 subgroupClusteredMin(ivec3, uint);\n" - "ivec4 subgroupClusteredMin(ivec4, uint);\n" - "uint subgroupClusteredMin(uint, uint);\n" - "uvec2 subgroupClusteredMin(uvec2, uint);\n" - "uvec3 subgroupClusteredMin(uvec3, uint);\n" - "uvec4 subgroupClusteredMin(uvec4, uint);\n" - - "float subgroupClusteredMax(float, uint);\n" - "vec2 subgroupClusteredMax(vec2, uint);\n" - "vec3 subgroupClusteredMax(vec3, uint);\n" - "vec4 subgroupClusteredMax(vec4, uint);\n" - "int subgroupClusteredMax(int, uint);\n" - "ivec2 subgroupClusteredMax(ivec2, uint);\n" - "ivec3 subgroupClusteredMax(ivec3, uint);\n" - "ivec4 subgroupClusteredMax(ivec4, uint);\n" - "uint subgroupClusteredMax(uint, uint);\n" - "uvec2 subgroupClusteredMax(uvec2, uint);\n" - "uvec3 subgroupClusteredMax(uvec3, uint);\n" - "uvec4 subgroupClusteredMax(uvec4, uint);\n" - - "int subgroupClusteredAnd(int, uint);\n" - "ivec2 subgroupClusteredAnd(ivec2, uint);\n" - "ivec3 subgroupClusteredAnd(ivec3, uint);\n" - "ivec4 subgroupClusteredAnd(ivec4, uint);\n" - "uint subgroupClusteredAnd(uint, uint);\n" - "uvec2 subgroupClusteredAnd(uvec2, uint);\n" - "uvec3 subgroupClusteredAnd(uvec3, uint);\n" - "uvec4 subgroupClusteredAnd(uvec4, uint);\n" - "bool subgroupClusteredAnd(bool, uint);\n" - "bvec2 subgroupClusteredAnd(bvec2, uint);\n" - "bvec3 subgroupClusteredAnd(bvec3, uint);\n" - "bvec4 subgroupClusteredAnd(bvec4, uint);\n" - - "int subgroupClusteredOr(int, uint);\n" - "ivec2 subgroupClusteredOr(ivec2, uint);\n" - "ivec3 subgroupClusteredOr(ivec3, uint);\n" - "ivec4 subgroupClusteredOr(ivec4, uint);\n" - "uint subgroupClusteredOr(uint, uint);\n" - "uvec2 subgroupClusteredOr(uvec2, uint);\n" - "uvec3 subgroupClusteredOr(uvec3, uint);\n" - "uvec4 subgroupClusteredOr(uvec4, uint);\n" - "bool subgroupClusteredOr(bool, uint);\n" - "bvec2 subgroupClusteredOr(bvec2, uint);\n" - "bvec3 subgroupClusteredOr(bvec3, uint);\n" - "bvec4 subgroupClusteredOr(bvec4, uint);\n" - - "int subgroupClusteredXor(int, uint);\n" - "ivec2 subgroupClusteredXor(ivec2, uint);\n" - "ivec3 subgroupClusteredXor(ivec3, uint);\n" - "ivec4 subgroupClusteredXor(ivec4, uint);\n" - "uint subgroupClusteredXor(uint, uint);\n" - "uvec2 subgroupClusteredXor(uvec2, uint);\n" - "uvec3 subgroupClusteredXor(uvec3, uint);\n" - "uvec4 subgroupClusteredXor(uvec4, uint);\n" - "bool subgroupClusteredXor(bool, uint);\n" - "bvec2 subgroupClusteredXor(bvec2, uint);\n" - "bvec3 subgroupClusteredXor(bvec3, uint);\n" - "bvec4 subgroupClusteredXor(bvec4, uint);\n" - - "float subgroupQuadBroadcast(float, uint);\n" - "vec2 subgroupQuadBroadcast(vec2, uint);\n" - "vec3 subgroupQuadBroadcast(vec3, uint);\n" - "vec4 subgroupQuadBroadcast(vec4, uint);\n" - "int subgroupQuadBroadcast(int, uint);\n" - "ivec2 subgroupQuadBroadcast(ivec2, uint);\n" - "ivec3 subgroupQuadBroadcast(ivec3, uint);\n" - "ivec4 subgroupQuadBroadcast(ivec4, uint);\n" - "uint subgroupQuadBroadcast(uint, uint);\n" - "uvec2 subgroupQuadBroadcast(uvec2, uint);\n" - "uvec3 subgroupQuadBroadcast(uvec3, uint);\n" - "uvec4 subgroupQuadBroadcast(uvec4, uint);\n" - "bool subgroupQuadBroadcast(bool, uint);\n" - "bvec2 subgroupQuadBroadcast(bvec2, uint);\n" - "bvec3 subgroupQuadBroadcast(bvec3, uint);\n" - "bvec4 subgroupQuadBroadcast(bvec4, uint);\n" - - "float subgroupQuadSwapHorizontal(float);\n" - "vec2 subgroupQuadSwapHorizontal(vec2);\n" - "vec3 subgroupQuadSwapHorizontal(vec3);\n" - "vec4 subgroupQuadSwapHorizontal(vec4);\n" - "int subgroupQuadSwapHorizontal(int);\n" - "ivec2 subgroupQuadSwapHorizontal(ivec2);\n" - "ivec3 subgroupQuadSwapHorizontal(ivec3);\n" - "ivec4 subgroupQuadSwapHorizontal(ivec4);\n" - "uint subgroupQuadSwapHorizontal(uint);\n" - "uvec2 subgroupQuadSwapHorizontal(uvec2);\n" - "uvec3 subgroupQuadSwapHorizontal(uvec3);\n" - "uvec4 subgroupQuadSwapHorizontal(uvec4);\n" - "bool subgroupQuadSwapHorizontal(bool);\n" - "bvec2 subgroupQuadSwapHorizontal(bvec2);\n" - "bvec3 subgroupQuadSwapHorizontal(bvec3);\n" - "bvec4 subgroupQuadSwapHorizontal(bvec4);\n" - - "float subgroupQuadSwapVertical(float);\n" - "vec2 subgroupQuadSwapVertical(vec2);\n" - "vec3 subgroupQuadSwapVertical(vec3);\n" - "vec4 subgroupQuadSwapVertical(vec4);\n" - "int subgroupQuadSwapVertical(int);\n" - "ivec2 subgroupQuadSwapVertical(ivec2);\n" - "ivec3 subgroupQuadSwapVertical(ivec3);\n" - "ivec4 subgroupQuadSwapVertical(ivec4);\n" - "uint subgroupQuadSwapVertical(uint);\n" - "uvec2 subgroupQuadSwapVertical(uvec2);\n" - "uvec3 subgroupQuadSwapVertical(uvec3);\n" - "uvec4 subgroupQuadSwapVertical(uvec4);\n" - "bool subgroupQuadSwapVertical(bool);\n" - "bvec2 subgroupQuadSwapVertical(bvec2);\n" - "bvec3 subgroupQuadSwapVertical(bvec3);\n" - "bvec4 subgroupQuadSwapVertical(bvec4);\n" - - "float subgroupQuadSwapDiagonal(float);\n" - "vec2 subgroupQuadSwapDiagonal(vec2);\n" - "vec3 subgroupQuadSwapDiagonal(vec3);\n" - "vec4 subgroupQuadSwapDiagonal(vec4);\n" - "int subgroupQuadSwapDiagonal(int);\n" - "ivec2 subgroupQuadSwapDiagonal(ivec2);\n" - "ivec3 subgroupQuadSwapDiagonal(ivec3);\n" - "ivec4 subgroupQuadSwapDiagonal(ivec4);\n" - "uint subgroupQuadSwapDiagonal(uint);\n" - "uvec2 subgroupQuadSwapDiagonal(uvec2);\n" - "uvec3 subgroupQuadSwapDiagonal(uvec3);\n" - "uvec4 subgroupQuadSwapDiagonal(uvec4);\n" - "bool subgroupQuadSwapDiagonal(bool);\n" - "bvec2 subgroupQuadSwapDiagonal(bvec2);\n" - "bvec3 subgroupQuadSwapDiagonal(bvec3);\n" - "bvec4 subgroupQuadSwapDiagonal(bvec4);\n" - - "uvec4 subgroupPartitionNV(float);\n" - "uvec4 subgroupPartitionNV(vec2);\n" - "uvec4 subgroupPartitionNV(vec3);\n" - "uvec4 subgroupPartitionNV(vec4);\n" - "uvec4 subgroupPartitionNV(int);\n" - "uvec4 subgroupPartitionNV(ivec2);\n" - "uvec4 subgroupPartitionNV(ivec3);\n" - "uvec4 subgroupPartitionNV(ivec4);\n" - "uvec4 subgroupPartitionNV(uint);\n" - "uvec4 subgroupPartitionNV(uvec2);\n" - "uvec4 subgroupPartitionNV(uvec3);\n" - "uvec4 subgroupPartitionNV(uvec4);\n" - "uvec4 subgroupPartitionNV(bool);\n" - "uvec4 subgroupPartitionNV(bvec2);\n" - "uvec4 subgroupPartitionNV(bvec3);\n" - "uvec4 subgroupPartitionNV(bvec4);\n" - - "float subgroupPartitionedAddNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedAddNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedAddNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedAddNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedAddNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedAddNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedAddNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedAddNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedAddNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedAddNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedAddNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedAddNV(uvec4, uvec4 ballot);\n" - - "float subgroupPartitionedMulNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedMulNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedMulNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedMulNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedMulNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedMulNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedMulNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedMulNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedMulNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedMulNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedMulNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedMulNV(uvec4, uvec4 ballot);\n" - - "float subgroupPartitionedMinNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedMinNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedMinNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedMinNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedMinNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedMinNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedMinNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedMinNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedMinNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedMinNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedMinNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedMinNV(uvec4, uvec4 ballot);\n" - - "float subgroupPartitionedMaxNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedMaxNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedMaxNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedMaxNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedMaxNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedMaxNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedMaxNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedMaxNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedMaxNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedMaxNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedMaxNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedMaxNV(uvec4, uvec4 ballot);\n" - - "int subgroupPartitionedAndNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedAndNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedAndNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedAndNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedAndNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedAndNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedAndNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedAndNV(uvec4, uvec4 ballot);\n" - "bool subgroupPartitionedAndNV(bool, uvec4 ballot);\n" - "bvec2 subgroupPartitionedAndNV(bvec2, uvec4 ballot);\n" - "bvec3 subgroupPartitionedAndNV(bvec3, uvec4 ballot);\n" - "bvec4 subgroupPartitionedAndNV(bvec4, uvec4 ballot);\n" - - "int subgroupPartitionedOrNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedOrNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedOrNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedOrNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedOrNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedOrNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedOrNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedOrNV(uvec4, uvec4 ballot);\n" - "bool subgroupPartitionedOrNV(bool, uvec4 ballot);\n" - "bvec2 subgroupPartitionedOrNV(bvec2, uvec4 ballot);\n" - "bvec3 subgroupPartitionedOrNV(bvec3, uvec4 ballot);\n" - "bvec4 subgroupPartitionedOrNV(bvec4, uvec4 ballot);\n" - - "int subgroupPartitionedXorNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedXorNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedXorNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedXorNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedXorNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedXorNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedXorNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedXorNV(uvec4, uvec4 ballot);\n" - "bool subgroupPartitionedXorNV(bool, uvec4 ballot);\n" - "bvec2 subgroupPartitionedXorNV(bvec2, uvec4 ballot);\n" - "bvec3 subgroupPartitionedXorNV(bvec3, uvec4 ballot);\n" - "bvec4 subgroupPartitionedXorNV(bvec4, uvec4 ballot);\n" - - "float subgroupPartitionedInclusiveAddNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedInclusiveAddNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedInclusiveAddNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedInclusiveAddNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedInclusiveAddNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedInclusiveAddNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedInclusiveAddNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedInclusiveAddNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedInclusiveAddNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedInclusiveAddNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedInclusiveAddNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedInclusiveAddNV(uvec4, uvec4 ballot);\n" - - "float subgroupPartitionedInclusiveMulNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedInclusiveMulNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedInclusiveMulNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedInclusiveMulNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedInclusiveMulNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedInclusiveMulNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedInclusiveMulNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedInclusiveMulNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedInclusiveMulNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedInclusiveMulNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedInclusiveMulNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedInclusiveMulNV(uvec4, uvec4 ballot);\n" - - "float subgroupPartitionedInclusiveMinNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedInclusiveMinNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedInclusiveMinNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedInclusiveMinNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedInclusiveMinNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedInclusiveMinNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedInclusiveMinNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedInclusiveMinNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedInclusiveMinNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedInclusiveMinNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedInclusiveMinNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedInclusiveMinNV(uvec4, uvec4 ballot);\n" - - "float subgroupPartitionedInclusiveMaxNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedInclusiveMaxNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedInclusiveMaxNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedInclusiveMaxNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedInclusiveMaxNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedInclusiveMaxNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedInclusiveMaxNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedInclusiveMaxNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedInclusiveMaxNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedInclusiveMaxNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedInclusiveMaxNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedInclusiveMaxNV(uvec4, uvec4 ballot);\n" - - "int subgroupPartitionedInclusiveAndNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedInclusiveAndNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedInclusiveAndNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedInclusiveAndNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedInclusiveAndNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedInclusiveAndNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedInclusiveAndNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedInclusiveAndNV(uvec4, uvec4 ballot);\n" - "bool subgroupPartitionedInclusiveAndNV(bool, uvec4 ballot);\n" - "bvec2 subgroupPartitionedInclusiveAndNV(bvec2, uvec4 ballot);\n" - "bvec3 subgroupPartitionedInclusiveAndNV(bvec3, uvec4 ballot);\n" - "bvec4 subgroupPartitionedInclusiveAndNV(bvec4, uvec4 ballot);\n" - - "int subgroupPartitionedInclusiveOrNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedInclusiveOrNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedInclusiveOrNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedInclusiveOrNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedInclusiveOrNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedInclusiveOrNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedInclusiveOrNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedInclusiveOrNV(uvec4, uvec4 ballot);\n" - "bool subgroupPartitionedInclusiveOrNV(bool, uvec4 ballot);\n" - "bvec2 subgroupPartitionedInclusiveOrNV(bvec2, uvec4 ballot);\n" - "bvec3 subgroupPartitionedInclusiveOrNV(bvec3, uvec4 ballot);\n" - "bvec4 subgroupPartitionedInclusiveOrNV(bvec4, uvec4 ballot);\n" - - "int subgroupPartitionedInclusiveXorNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedInclusiveXorNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedInclusiveXorNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedInclusiveXorNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedInclusiveXorNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedInclusiveXorNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedInclusiveXorNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedInclusiveXorNV(uvec4, uvec4 ballot);\n" - "bool subgroupPartitionedInclusiveXorNV(bool, uvec4 ballot);\n" - "bvec2 subgroupPartitionedInclusiveXorNV(bvec2, uvec4 ballot);\n" - "bvec3 subgroupPartitionedInclusiveXorNV(bvec3, uvec4 ballot);\n" - "bvec4 subgroupPartitionedInclusiveXorNV(bvec4, uvec4 ballot);\n" - - "float subgroupPartitionedExclusiveAddNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedExclusiveAddNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedExclusiveAddNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedExclusiveAddNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedExclusiveAddNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedExclusiveAddNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedExclusiveAddNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedExclusiveAddNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedExclusiveAddNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedExclusiveAddNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedExclusiveAddNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedExclusiveAddNV(uvec4, uvec4 ballot);\n" - - "float subgroupPartitionedExclusiveMulNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedExclusiveMulNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedExclusiveMulNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedExclusiveMulNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedExclusiveMulNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedExclusiveMulNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedExclusiveMulNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedExclusiveMulNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedExclusiveMulNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedExclusiveMulNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedExclusiveMulNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedExclusiveMulNV(uvec4, uvec4 ballot);\n" - - "float subgroupPartitionedExclusiveMinNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedExclusiveMinNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedExclusiveMinNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedExclusiveMinNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedExclusiveMinNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedExclusiveMinNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedExclusiveMinNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedExclusiveMinNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedExclusiveMinNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedExclusiveMinNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedExclusiveMinNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedExclusiveMinNV(uvec4, uvec4 ballot);\n" - - "float subgroupPartitionedExclusiveMaxNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedExclusiveMaxNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedExclusiveMaxNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedExclusiveMaxNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedExclusiveMaxNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedExclusiveMaxNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedExclusiveMaxNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedExclusiveMaxNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedExclusiveMaxNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedExclusiveMaxNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedExclusiveMaxNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedExclusiveMaxNV(uvec4, uvec4 ballot);\n" - - "int subgroupPartitionedExclusiveAndNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedExclusiveAndNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedExclusiveAndNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedExclusiveAndNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedExclusiveAndNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedExclusiveAndNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedExclusiveAndNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedExclusiveAndNV(uvec4, uvec4 ballot);\n" - "bool subgroupPartitionedExclusiveAndNV(bool, uvec4 ballot);\n" - "bvec2 subgroupPartitionedExclusiveAndNV(bvec2, uvec4 ballot);\n" - "bvec3 subgroupPartitionedExclusiveAndNV(bvec3, uvec4 ballot);\n" - "bvec4 subgroupPartitionedExclusiveAndNV(bvec4, uvec4 ballot);\n" - - "int subgroupPartitionedExclusiveOrNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedExclusiveOrNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedExclusiveOrNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedExclusiveOrNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedExclusiveOrNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedExclusiveOrNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedExclusiveOrNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedExclusiveOrNV(uvec4, uvec4 ballot);\n" - "bool subgroupPartitionedExclusiveOrNV(bool, uvec4 ballot);\n" - "bvec2 subgroupPartitionedExclusiveOrNV(bvec2, uvec4 ballot);\n" - "bvec3 subgroupPartitionedExclusiveOrNV(bvec3, uvec4 ballot);\n" - "bvec4 subgroupPartitionedExclusiveOrNV(bvec4, uvec4 ballot);\n" - - "int subgroupPartitionedExclusiveXorNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedExclusiveXorNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedExclusiveXorNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedExclusiveXorNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedExclusiveXorNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedExclusiveXorNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedExclusiveXorNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedExclusiveXorNV(uvec4, uvec4 ballot);\n" - "bool subgroupPartitionedExclusiveXorNV(bool, uvec4 ballot);\n" - "bvec2 subgroupPartitionedExclusiveXorNV(bvec2, uvec4 ballot);\n" - "bvec3 subgroupPartitionedExclusiveXorNV(bvec3, uvec4 ballot);\n" - "bvec4 subgroupPartitionedExclusiveXorNV(bvec4, uvec4 ballot);\n" - "\n"); - - if (profile != EEsProfile && version >= 400) { - commonBuiltins.append( - "bool subgroupAllEqual(double);\n" - "bool subgroupAllEqual(dvec2);\n" - "bool subgroupAllEqual(dvec3);\n" - "bool subgroupAllEqual(dvec4);\n" - - "double subgroupBroadcast(double, uint);\n" - "dvec2 subgroupBroadcast(dvec2, uint);\n" - "dvec3 subgroupBroadcast(dvec3, uint);\n" - "dvec4 subgroupBroadcast(dvec4, uint);\n" - - "double subgroupBroadcastFirst(double);\n" - "dvec2 subgroupBroadcastFirst(dvec2);\n" - "dvec3 subgroupBroadcastFirst(dvec3);\n" - "dvec4 subgroupBroadcastFirst(dvec4);\n" - - "double subgroupShuffle(double, uint);\n" - "dvec2 subgroupShuffle(dvec2, uint);\n" - "dvec3 subgroupShuffle(dvec3, uint);\n" - "dvec4 subgroupShuffle(dvec4, uint);\n" - - "double subgroupShuffleXor(double, uint);\n" - "dvec2 subgroupShuffleXor(dvec2, uint);\n" - "dvec3 subgroupShuffleXor(dvec3, uint);\n" - "dvec4 subgroupShuffleXor(dvec4, uint);\n" - - "double subgroupShuffleUp(double, uint delta);\n" - "dvec2 subgroupShuffleUp(dvec2, uint delta);\n" - "dvec3 subgroupShuffleUp(dvec3, uint delta);\n" - "dvec4 subgroupShuffleUp(dvec4, uint delta);\n" - - "double subgroupShuffleDown(double, uint delta);\n" - "dvec2 subgroupShuffleDown(dvec2, uint delta);\n" - "dvec3 subgroupShuffleDown(dvec3, uint delta);\n" - "dvec4 subgroupShuffleDown(dvec4, uint delta);\n" - - "double subgroupAdd(double);\n" - "dvec2 subgroupAdd(dvec2);\n" - "dvec3 subgroupAdd(dvec3);\n" - "dvec4 subgroupAdd(dvec4);\n" - - "double subgroupMul(double);\n" - "dvec2 subgroupMul(dvec2);\n" - "dvec3 subgroupMul(dvec3);\n" - "dvec4 subgroupMul(dvec4);\n" - - "double subgroupMin(double);\n" - "dvec2 subgroupMin(dvec2);\n" - "dvec3 subgroupMin(dvec3);\n" - "dvec4 subgroupMin(dvec4);\n" - - "double subgroupMax(double);\n" - "dvec2 subgroupMax(dvec2);\n" - "dvec3 subgroupMax(dvec3);\n" - "dvec4 subgroupMax(dvec4);\n" - - "double subgroupInclusiveAdd(double);\n" - "dvec2 subgroupInclusiveAdd(dvec2);\n" - "dvec3 subgroupInclusiveAdd(dvec3);\n" - "dvec4 subgroupInclusiveAdd(dvec4);\n" - - "double subgroupInclusiveMul(double);\n" - "dvec2 subgroupInclusiveMul(dvec2);\n" - "dvec3 subgroupInclusiveMul(dvec3);\n" - "dvec4 subgroupInclusiveMul(dvec4);\n" - - "double subgroupInclusiveMin(double);\n" - "dvec2 subgroupInclusiveMin(dvec2);\n" - "dvec3 subgroupInclusiveMin(dvec3);\n" - "dvec4 subgroupInclusiveMin(dvec4);\n" - - "double subgroupInclusiveMax(double);\n" - "dvec2 subgroupInclusiveMax(dvec2);\n" - "dvec3 subgroupInclusiveMax(dvec3);\n" - "dvec4 subgroupInclusiveMax(dvec4);\n" - - "double subgroupExclusiveAdd(double);\n" - "dvec2 subgroupExclusiveAdd(dvec2);\n" - "dvec3 subgroupExclusiveAdd(dvec3);\n" - "dvec4 subgroupExclusiveAdd(dvec4);\n" - - "double subgroupExclusiveMul(double);\n" - "dvec2 subgroupExclusiveMul(dvec2);\n" - "dvec3 subgroupExclusiveMul(dvec3);\n" - "dvec4 subgroupExclusiveMul(dvec4);\n" - - "double subgroupExclusiveMin(double);\n" - "dvec2 subgroupExclusiveMin(dvec2);\n" - "dvec3 subgroupExclusiveMin(dvec3);\n" - "dvec4 subgroupExclusiveMin(dvec4);\n" - - "double subgroupExclusiveMax(double);\n" - "dvec2 subgroupExclusiveMax(dvec2);\n" - "dvec3 subgroupExclusiveMax(dvec3);\n" - "dvec4 subgroupExclusiveMax(dvec4);\n" - - "double subgroupClusteredAdd(double, uint);\n" - "dvec2 subgroupClusteredAdd(dvec2, uint);\n" - "dvec3 subgroupClusteredAdd(dvec3, uint);\n" - "dvec4 subgroupClusteredAdd(dvec4, uint);\n" - - "double subgroupClusteredMul(double, uint);\n" - "dvec2 subgroupClusteredMul(dvec2, uint);\n" - "dvec3 subgroupClusteredMul(dvec3, uint);\n" - "dvec4 subgroupClusteredMul(dvec4, uint);\n" - - "double subgroupClusteredMin(double, uint);\n" - "dvec2 subgroupClusteredMin(dvec2, uint);\n" - "dvec3 subgroupClusteredMin(dvec3, uint);\n" - "dvec4 subgroupClusteredMin(dvec4, uint);\n" - - "double subgroupClusteredMax(double, uint);\n" - "dvec2 subgroupClusteredMax(dvec2, uint);\n" - "dvec3 subgroupClusteredMax(dvec3, uint);\n" - "dvec4 subgroupClusteredMax(dvec4, uint);\n" - - "double subgroupQuadBroadcast(double, uint);\n" - "dvec2 subgroupQuadBroadcast(dvec2, uint);\n" - "dvec3 subgroupQuadBroadcast(dvec3, uint);\n" - "dvec4 subgroupQuadBroadcast(dvec4, uint);\n" - - "double subgroupQuadSwapHorizontal(double);\n" - "dvec2 subgroupQuadSwapHorizontal(dvec2);\n" - "dvec3 subgroupQuadSwapHorizontal(dvec3);\n" - "dvec4 subgroupQuadSwapHorizontal(dvec4);\n" - - "double subgroupQuadSwapVertical(double);\n" - "dvec2 subgroupQuadSwapVertical(dvec2);\n" - "dvec3 subgroupQuadSwapVertical(dvec3);\n" - "dvec4 subgroupQuadSwapVertical(dvec4);\n" - - "double subgroupQuadSwapDiagonal(double);\n" - "dvec2 subgroupQuadSwapDiagonal(dvec2);\n" - "dvec3 subgroupQuadSwapDiagonal(dvec3);\n" - "dvec4 subgroupQuadSwapDiagonal(dvec4);\n" - - "uvec4 subgroupPartitionNV(double);\n" - "uvec4 subgroupPartitionNV(dvec2);\n" - "uvec4 subgroupPartitionNV(dvec3);\n" - "uvec4 subgroupPartitionNV(dvec4);\n" - - "double subgroupPartitionedAddNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedAddNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedAddNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedAddNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedMulNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedMulNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedMulNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedMulNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedMinNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedMinNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedMinNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedMinNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedMaxNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedMaxNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedMaxNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedMaxNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedInclusiveAddNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedInclusiveAddNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedInclusiveAddNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedInclusiveAddNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedInclusiveMulNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedInclusiveMulNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedInclusiveMulNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedInclusiveMulNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedInclusiveMinNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedInclusiveMinNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedInclusiveMinNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedInclusiveMinNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedInclusiveMaxNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedInclusiveMaxNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedInclusiveMaxNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedInclusiveMaxNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedExclusiveAddNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedExclusiveAddNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedExclusiveAddNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedExclusiveAddNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedExclusiveMulNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedExclusiveMulNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedExclusiveMulNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedExclusiveMulNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedExclusiveMinNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedExclusiveMinNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedExclusiveMinNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedExclusiveMinNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedExclusiveMaxNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedExclusiveMaxNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedExclusiveMaxNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedExclusiveMaxNV(dvec4, uvec4 ballot);\n" - - "\n"); + ); + + // Generate all flavors of subgroup ops. + static const char *subgroupOps[] = + { + "bool subgroupAllEqual(%s);\n", + "%s subgroupBroadcast(%s, uint);\n", + "%s subgroupBroadcastFirst(%s);\n", + "%s subgroupShuffle(%s, uint);\n", + "%s subgroupShuffleXor(%s, uint);\n", + "%s subgroupShuffleUp(%s, uint delta);\n", + "%s subgroupShuffleDown(%s, uint delta);\n", + "%s subgroupAdd(%s);\n", + "%s subgroupMul(%s);\n", + "%s subgroupMin(%s);\n", + "%s subgroupMax(%s);\n", + "%s subgroupAnd(%s);\n", + "%s subgroupOr(%s);\n", + "%s subgroupXor(%s);\n", + "%s subgroupInclusiveAdd(%s);\n", + "%s subgroupInclusiveMul(%s);\n", + "%s subgroupInclusiveMin(%s);\n", + "%s subgroupInclusiveMax(%s);\n", + "%s subgroupInclusiveAnd(%s);\n", + "%s subgroupInclusiveOr(%s);\n", + "%s subgroupInclusiveXor(%s);\n", + "%s subgroupExclusiveAdd(%s);\n", + "%s subgroupExclusiveMul(%s);\n", + "%s subgroupExclusiveMin(%s);\n", + "%s subgroupExclusiveMax(%s);\n", + "%s subgroupExclusiveAnd(%s);\n", + "%s subgroupExclusiveOr(%s);\n", + "%s subgroupExclusiveXor(%s);\n", + "%s subgroupClusteredAdd(%s, uint);\n", + "%s subgroupClusteredMul(%s, uint);\n", + "%s subgroupClusteredMin(%s, uint);\n", + "%s subgroupClusteredMax(%s, uint);\n", + "%s subgroupClusteredAnd(%s, uint);\n", + "%s subgroupClusteredOr(%s, uint);\n", + "%s subgroupClusteredXor(%s, uint);\n", + "%s subgroupQuadBroadcast(%s, uint);\n", + "%s subgroupQuadSwapHorizontal(%s);\n", + "%s subgroupQuadSwapVertical(%s);\n", + "%s subgroupQuadSwapDiagonal(%s);\n", + "uvec4 subgroupPartitionNV(%s);\n", + "%s subgroupPartitionedAddNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedMulNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedMinNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedMaxNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedAndNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedOrNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedXorNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedInclusiveAddNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedInclusiveMulNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedInclusiveMinNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedInclusiveMaxNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedInclusiveAndNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedInclusiveOrNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedInclusiveXorNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedExclusiveAddNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedExclusiveMulNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedExclusiveMinNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedExclusiveMaxNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedExclusiveAndNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedExclusiveOrNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedExclusiveXorNV(%s, uvec4 ballot);\n", + }; + + static const char *floatTypes[] = { + "float", "vec2", "vec3", "vec4", + "float16_t", "f16vec2", "f16vec3", "f16vec4", + }; + static const char *doubleTypes[] = { + "double", "dvec2", "dvec3", "dvec4", + }; + static const char *intTypes[] = { + "int8_t", "i8vec2", "i8vec3", "i8vec4", + "int16_t", "i16vec2", "i16vec3", "i16vec4", + "int", "ivec2", "ivec3", "ivec4", + "int64_t", "i64vec2", "i64vec3", "i64vec4", + "uint8_t", "u8vec2", "u8vec3", "u8vec4", + "uint16_t", "u16vec2", "u16vec3", "u16vec4", + "uint", "uvec2", "uvec3", "uvec4", + "uint64_t", "u64vec2", "u64vec3", "u64vec4", + }; + static const char *boolTypes[] = { + "bool", "bvec2", "bvec3", "bvec4", + }; + + for (size_t i = 0; i < sizeof(subgroupOps)/sizeof(subgroupOps[0]); ++i) { + const char *op = subgroupOps[i]; + + // Logical operations don't support float + bool logicalOp = strstr(op, "Or") || strstr(op, "And") || + (strstr(op, "Xor") && !strstr(op, "ShuffleXor")); + // Math operations don't support bool + bool mathOp = strstr(op, "Add") || strstr(op, "Mul") || strstr(op, "Min") || strstr(op, "Max"); + + const int bufSize = 256; + char buf[bufSize]; + + if (!logicalOp) { + for (size_t j = 0; j < sizeof(floatTypes)/sizeof(floatTypes[0]); ++j) { + snprintf(buf, bufSize, op, floatTypes[j], floatTypes[j]); + commonBuiltins.append(buf); + } + if (profile != EEsProfile && version >= 400) { + for (size_t j = 0; j < sizeof(doubleTypes)/sizeof(doubleTypes[0]); ++j) { + snprintf(buf, bufSize, op, doubleTypes[j], doubleTypes[j]); + commonBuiltins.append(buf); + } + } } + if (!mathOp) { + for (size_t j = 0; j < sizeof(boolTypes)/sizeof(boolTypes[0]); ++j) { + snprintf(buf, bufSize, op, boolTypes[j], boolTypes[j]); + commonBuiltins.append(buf); + } + } + for (size_t j = 0; j < sizeof(intTypes)/sizeof(intTypes[0]); ++j) { + snprintf(buf, bufSize, op, intTypes[j], intTypes[j]); + commonBuiltins.append(buf); + } + } stageBuiltins[EShLangCompute].append( "void subgroupMemoryBarrierShared();" diff --git a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp index 08fa610c4..b5ea803db 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp @@ -2155,9 +2155,11 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan break; case EOpSubgroupBroadcast: - // must be an integral constant expression. - if ((*argp)[1]->getAsConstantUnion() == nullptr) - error(loc, "argument must be compile-time constant", "id", ""); + if (spvVersion.spv < EShTargetSpv_1_5) { + // must be an integral constant expression. + if ((*argp)[1]->getAsConstantUnion() == nullptr) + error(loc, "argument must be compile-time constant", "id", ""); + } break; case EOpBarrier: @@ -2202,6 +2204,30 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan // these require SPIR-V 1.3 if (spvVersion.spv > 0 && spvVersion.spv < EShTargetSpv_1_3) error(loc, "requires SPIR-V 1.3", "subgroup op", ""); + + // Check that if extended types are being used that the correct extensions are enabled. + if (arg0 != nullptr) { + const TType& type = arg0->getType(); + switch (type.getBasicType()) { + default: + break; + case EbtInt8: + case EbtUint8: + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int8, type.getCompleteString().c_str()); + break; + case EbtInt16: + case EbtUint16: + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int16, type.getCompleteString().c_str()); + break; + case EbtInt64: + case EbtUint64: + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int64, type.getCompleteString().c_str()); + break; + case EbtFloat16: + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_float16, type.getCompleteString().c_str()); + break; + } + } } } @@ -2748,10 +2774,25 @@ bool TParseContext::builtInName(const TString& identifier) // bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, TFunction& function, TOperator op, TType& type) { - type.shallowCopy(function.getType()); + // See if the constructor does not establish the main type, only requalifies + // it, in which case the type comes from the argument instead of from the + // constructor function. + switch (op) { + case EOpConstructNonuniform: + if (node != nullptr && node->getAsTyped() != nullptr) { + type.shallowCopy(node->getAsTyped()->getType()); + type.getQualifier().makeTemporary(); + type.getQualifier().nonUniform = true; + } + break; + default: + type.shallowCopy(function.getType()); + break; + } + // See if it's a matrix bool constructingMatrix = false; - switch(op) { + switch (op) { #ifndef GLSLANG_WEB case EOpConstructTextureSampler: return constructorTextureSamplerError(loc, function); @@ -2845,6 +2886,8 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T } } } + if (op == EOpConstructNonuniform) + constType = false; #ifndef GLSLANG_WEB switch (op) { @@ -5360,14 +5403,17 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi } if (id == "local_size_x") { publicType.shaderQualifiers.localSize[0] = value; + publicType.shaderQualifiers.localSizeNotDefault[0] = true; return; } if (id == "local_size_y") { publicType.shaderQualifiers.localSize[1] = value; + publicType.shaderQualifiers.localSizeNotDefault[1] = true; return; } if (id == "local_size_z") { publicType.shaderQualifiers.localSize[2] = value; + publicType.shaderQualifiers.localSizeNotDefault[2] = true; return; } if (spvVersion.spv != 0) { @@ -6912,6 +6958,12 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T break; case EOpConstructUVec2: + if (node->getType().getBasicType() == EbtReference) { + requireExtensions(loc, 1, &E_GL_EXT_buffer_reference_uvec2, "reference conversion to uvec2"); + TIntermTyped* newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvPtrToUvec2, true, node, + type); + return newNode; + } case EOpConstructUVec3: case EOpConstructUVec4: case EOpConstructUint: @@ -7058,8 +7110,7 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EOpConstructNonuniform: // Make a nonuniform copy of node - newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpCopyObject, true, node, node->getType()); - newNode->getWritableType().getQualifier().nonUniform = true; + newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpCopyObject, true, node, type); return newNode; case EOpConstructReference: @@ -7069,7 +7120,15 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T return newNode; // construct reference from uint64 } else if (node->getType().isScalar() && node->getType().getBasicType() == EbtUint64) { - TIntermTyped* newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvUint64ToPtr, true, node, type); + TIntermTyped* newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvUint64ToPtr, true, node, + type); + return newNode; + // construct reference from uvec2 + } else if (node->getType().isVector() && node->getType().getBasicType() == EbtUint && + node->getVectorSize() == 2) { + requireExtensions(loc, 1, &E_GL_EXT_buffer_reference_uvec2, "uvec2 conversion to reference"); + TIntermTyped* newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvUvec2ToPtr, true, node, + type); return newNode; } else { return nullptr; @@ -7945,7 +8004,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con error(loc, "can only apply to 'in'", "point_mode", ""); } for (int i = 0; i < 3; ++i) { - if (publicType.shaderQualifiers.localSize[i] > 1) { + if (publicType.shaderQualifiers.localSizeNotDefault[i]) { if (publicType.qualifier.storage == EvqVaryingIn) { if (! intermediate.setLocalSize(i, publicType.shaderQualifiers.localSize[i])) error(loc, "cannot change previously set size", "local_size", ""); diff --git a/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp b/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp index eb1314a66..644acb1c9 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp @@ -214,6 +214,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_fragment_invocation_density] = EBhDisable; extensionBehavior[E_GL_EXT_buffer_reference] = EBhDisable; extensionBehavior[E_GL_EXT_buffer_reference2] = EBhDisable; + extensionBehavior[E_GL_EXT_buffer_reference_uvec2] = EBhDisable; extensionBehavior[E_GL_EXT_demote_to_helper_invocation] = EBhDisable; extensionBehavior[E_GL_EXT_shader_16bit_storage] = EBhDisable; @@ -300,6 +301,12 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_float16] = EBhDisable; extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_float32] = EBhDisable; extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_float64] = EBhDisable; + + // subgroup extended types + extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_int8] = EBhDisable; + extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_int16] = EBhDisable; + extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_int64] = EBhDisable; + extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_float16] = EBhDisable; } #endif // GLSLANG_WEB @@ -398,6 +405,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_fragment_invocation_density 1\n" "#define GL_EXT_buffer_reference 1\n" "#define GL_EXT_buffer_reference2 1\n" + "#define GL_EXT_buffer_reference_uvec2 1\n" "#define GL_EXT_demote_to_helper_invocation 1\n" // GL_KHR_shader_subgroup @@ -447,6 +455,11 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_shader_explicit_arithmetic_types_float16 1\n" "#define GL_EXT_shader_explicit_arithmetic_types_float32 1\n" "#define GL_EXT_shader_explicit_arithmetic_types_float64 1\n" + + "#define GL_EXT_shader_subgroup_extended_types_int8 1\n" + "#define GL_EXT_shader_subgroup_extended_types_int16 1\n" + "#define GL_EXT_shader_subgroup_extended_types_int64 1\n" + "#define GL_EXT_shader_subgroup_extended_types_float16 1\n" ; if (version >= 150) { @@ -822,10 +835,20 @@ void TParseVersions::updateExtensionBehavior(int line, const char* extension, co updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString); else if (strcmp(extension, "GL_NV_shader_subgroup_partitioned") == 0) updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString); - else if (strcmp(extension, "GL_EXT_buffer_reference2") == 0) + else if (strcmp(extension, "GL_EXT_buffer_reference2") == 0 || + strcmp(extension, "GL_EXT_buffer_reference_uvec2") == 0) updateExtensionBehavior(line, "GL_EXT_buffer_reference", behaviorString); else if (strcmp(extension, "GL_NV_integer_cooperative_matrix") == 0) updateExtensionBehavior(line, "GL_NV_cooperative_matrix", behaviorString); + // subgroup extended types to explicit types + else if (strcmp(extension, "GL_EXT_shader_subgroup_extended_types_int8") == 0) + updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_int8", behaviorString); + else if (strcmp(extension, "GL_EXT_shader_subgroup_extended_types_int16") == 0) + updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_int16", behaviorString); + else if (strcmp(extension, "GL_EXT_shader_subgroup_extended_types_int64") == 0) + updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_int64", behaviorString); + else if (strcmp(extension, "GL_EXT_shader_subgroup_extended_types_float16") == 0) + updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_float16", behaviorString); } void TParseVersions::updateExtensionBehavior(const char* extension, TExtensionBehavior behavior) diff --git a/3rdparty/glslang/glslang/MachineIndependent/Versions.h b/3rdparty/glslang/glslang/MachineIndependent/Versions.h index 9535c8912..fae04f456 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Versions.h +++ b/3rdparty/glslang/glslang/MachineIndependent/Versions.h @@ -174,6 +174,7 @@ const char* const E_GL_EXT_scalar_block_layout = "GL_EXT_scalar_blo const char* const E_GL_EXT_fragment_invocation_density = "GL_EXT_fragment_invocation_density"; const char* const E_GL_EXT_buffer_reference = "GL_EXT_buffer_reference"; const char* const E_GL_EXT_buffer_reference2 = "GL_EXT_buffer_reference2"; +const char* const E_GL_EXT_buffer_reference_uvec2 = "GL_EXT_buffer_reference_uvec2"; const char* const E_GL_EXT_demote_to_helper_invocation = "GL_EXT_demote_to_helper_invocation"; const char* const E_GL_EXT_shader_realtime_clock = "GL_EXT_shader_realtime_clock"; @@ -257,7 +258,7 @@ const char* const E_GL_OES_tessellation_point_size = "GL_OES_tessel const char* const E_GL_OES_texture_buffer = "GL_OES_texture_buffer"; const char* const E_GL_OES_texture_cube_map_array = "GL_OES_texture_cube_map_array"; -// KHX +// EXT const char* const E_GL_EXT_shader_explicit_arithmetic_types = "GL_EXT_shader_explicit_arithmetic_types"; const char* const E_GL_EXT_shader_explicit_arithmetic_types_int8 = "GL_EXT_shader_explicit_arithmetic_types_int8"; const char* const E_GL_EXT_shader_explicit_arithmetic_types_int16 = "GL_EXT_shader_explicit_arithmetic_types_int16"; @@ -267,6 +268,11 @@ const char* const E_GL_EXT_shader_explicit_arithmetic_types_float16 = "GL_EXT_s const char* const E_GL_EXT_shader_explicit_arithmetic_types_float32 = "GL_EXT_shader_explicit_arithmetic_types_float32"; const char* const E_GL_EXT_shader_explicit_arithmetic_types_float64 = "GL_EXT_shader_explicit_arithmetic_types_float64"; +const char* const E_GL_EXT_shader_subgroup_extended_types_int8 = "GL_EXT_shader_subgroup_extended_types_int8"; +const char* const E_GL_EXT_shader_subgroup_extended_types_int16 = "GL_EXT_shader_subgroup_extended_types_int16"; +const char* const E_GL_EXT_shader_subgroup_extended_types_int64 = "GL_EXT_shader_subgroup_extended_types_int64"; +const char* const E_GL_EXT_shader_subgroup_extended_types_float16 = "GL_EXT_shader_subgroup_extended_types_float16"; + // Arrays of extensions for the above AEP duplications const char* const AEP_geometry_shader[] = { E_GL_EXT_geometry_shader, E_GL_OES_geometry_shader }; diff --git a/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h b/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h index 77ed7c396..10f994788 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h +++ b/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h @@ -271,6 +271,9 @@ public: localSize[0] = 1; localSize[1] = 1; localSize[2] = 1; + localSizeNotDefault[0] = false; + localSizeNotDefault[1] = false; + localSizeNotDefault[2] = false; localSizeSpecId[0] = TQualifier::layoutNotSet; localSizeSpecId[1] = TQualifier::layoutNotSet; localSizeSpecId[2] = TQualifier::layoutNotSet; @@ -308,6 +311,12 @@ public: case EShTargetSpv_1_3: processes.addProcess("target-env spirv1.3"); break; + case EShTargetSpv_1_4: + processes.addProcess("target-env spirv1.4"); + break; + case EShTargetSpv_1_5: + processes.addProcess("target-env spirv1.5"); + break; default: processes.addProcess("target-env spirvUnknown"); break; @@ -648,8 +657,9 @@ public: bool setLocalSize(int dim, int size) { - if (localSize[dim] > 1) + if (localSizeNotDefault[dim]) return size == localSize[dim]; + localSizeNotDefault[dim] = true; localSize[dim] = size; return true; } @@ -921,6 +931,7 @@ protected: TInterlockOrdering interlockOrdering; bool pointMode; int localSize[3]; + bool localSizeNotDefault[3]; int localSizeSpecId[3]; bool earlyFragmentTests; bool postDepthCoverage; diff --git a/3rdparty/glslang/glslang/OSDependent/Web/CMakeLists.txt b/3rdparty/glslang/glslang/OSDependent/Web/CMakeLists.txt new file mode 100644 index 000000000..e8238c350 --- /dev/null +++ b/3rdparty/glslang/glslang/OSDependent/Web/CMakeLists.txt @@ -0,0 +1,24 @@ +add_executable(glslang.js "glslang.js.cpp") +glslang_set_link_args(glslang.js) +target_link_libraries(glslang.js glslang SPIRV) +if(EMSCRIPTEN) + set_target_properties(glslang.js PROPERTIES + OUTPUT_NAME "glslang" + SUFFIX ".js") + em_link_pre_js(glslang.js "${CMAKE_CURRENT_SOURCE_DIR}/glslang.pre.js") + + target_link_options(glslang.js PRIVATE + "SHELL:--bind -s MODULARIZE=1") + if(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) + target_link_options(glslang.js PRIVATE + "SHELL:-s ENVIRONMENT=node -s BINARYEN_ASYNC_COMPILATION=0") + else() + target_link_options(glslang.js PRIVATE + "SHELL:-s ENVIRONMENT=web,worker") + endif() + + if(NOT ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) + add_custom_command(TARGET glslang.js POST_BUILD + COMMAND cat ${CMAKE_CURRENT_SOURCE_DIR}/glslang.after.js >> ${CMAKE_CURRENT_BINARY_DIR}/glslang.js) + endif() +endif(EMSCRIPTEN) diff --git a/3rdparty/glslang/glslang/OSDependent/Web/glslang.after.js b/3rdparty/glslang/glslang/OSDependent/Web/glslang.after.js new file mode 100644 index 000000000..c2cfc35a4 --- /dev/null +++ b/3rdparty/glslang/glslang/OSDependent/Web/glslang.after.js @@ -0,0 +1,26 @@ +export default (() => { + const initialize = () => { + return new Promise(resolve => { + Module({ + locateFile() { + const i = import.meta.url.lastIndexOf('/') + return import.meta.url.substring(0, i) + '/glslang.wasm'; + }, + onRuntimeInitialized() { + resolve({ + compileGLSLZeroCopy: this.compileGLSLZeroCopy, + compileGLSL: this.compileGLSL, + }); + }, + }); + }); + }; + + let instance; + return () => { + if (!instance) { + instance = initialize(); + } + return instance; + }; +})(); diff --git a/3rdparty/glslang/glslang/glslang.js.cpp b/3rdparty/glslang/glslang/OSDependent/Web/glslang.js.cpp similarity index 98% rename from 3rdparty/glslang/glslang/glslang.js.cpp rename to 3rdparty/glslang/glslang/OSDependent/Web/glslang.js.cpp index 45b3d3f6b..6cb93fe27 100644 --- a/3rdparty/glslang/glslang/glslang.js.cpp +++ b/3rdparty/glslang/glslang/OSDependent/Web/glslang.js.cpp @@ -35,17 +35,16 @@ #include #include +#include #ifdef __EMSCRIPTEN__ #include -#endif // __EMSCRIPTEN__ -#include +#endif -#include "../SPIRV/GlslangToSpv.h" -#include "../SPIRV/doc.h" -#include "./../glslang/Public/ShaderLang.h" +#include "../../../SPIRV/GlslangToSpv.h" +#include "../../../glslang/Public/ShaderLang.h" -#ifndef EMSCRIPTEN_KEEPALIVE +#ifndef __EMSCRIPTEN__ #define EMSCRIPTEN_KEEPALIVE #endif diff --git a/3rdparty/glslang/glslang/glslang.pre.js b/3rdparty/glslang/glslang/OSDependent/Web/glslang.pre.js similarity index 100% rename from 3rdparty/glslang/glslang/glslang.pre.js rename to 3rdparty/glslang/glslang/OSDependent/Web/glslang.pre.js diff --git a/3rdparty/glslang/glslang/Public/ShaderLang.h b/3rdparty/glslang/glslang/Public/ShaderLang.h index a3103c650..a071d78df 100755 --- a/3rdparty/glslang/glslang/Public/ShaderLang.h +++ b/3rdparty/glslang/glslang/Public/ShaderLang.h @@ -156,6 +156,7 @@ typedef enum { EShTargetSpv_1_2 = (1 << 16) | (2 << 8), // SPIR-V 1.2 EShTargetSpv_1_3 = (1 << 16) | (3 << 8), // SPIR-V 1.3 EShTargetSpv_1_4 = (1 << 16) | (4 << 8), // SPIR-V 1.4 + EShTargetSpv_1_5 = (1 << 16) | (5 << 8), // SPIR-V 1.5 } EShTargetLanguageVersion; struct TInputLanguage { diff --git a/3rdparty/glslang/glslang/updateGrammar b/3rdparty/glslang/glslang/updateGrammar index 377945873..9384db948 100755 --- a/3rdparty/glslang/glslang/updateGrammar +++ b/3rdparty/glslang/glslang/updateGrammar @@ -1,4 +1,4 @@ -#!/usr/bin/bash +#!/bin/bash if [ "$1" = 'web' ] then diff --git a/3rdparty/glslang/gtests/Spv.FromFile.cpp b/3rdparty/glslang/gtests/Spv.FromFile.cpp index d12d39acd..d0c075156 100644 --- a/3rdparty/glslang/gtests/Spv.FromFile.cpp +++ b/3rdparty/glslang/gtests/Spv.FromFile.cpp @@ -284,6 +284,7 @@ INSTANTIATE_TEST_CASE_P( "spv.bufferhandle7.frag", "spv.bufferhandle8.frag", "spv.bufferhandle9.frag", + "spv.bufferhandleUvec2.frag", "spv.bufferhandle_Error.frag", "spv.builtInXFB.vert", "spv.conditionalDemote.frag", @@ -459,6 +460,22 @@ INSTANTIATE_TEST_CASE_P( "spv.subgroupShuffleRelative.comp", "spv.subgroupQuad.comp", "spv.subgroupVote.comp", + "spv.subgroupExtendedTypesArithmetic.comp", + "spv.subgroupExtendedTypesArithmeticNeg.comp", + "spv.subgroupExtendedTypesBallot.comp", + "spv.subgroupExtendedTypesBallotNeg.comp", + "spv.subgroupExtendedTypesClustered.comp", + "spv.subgroupExtendedTypesClusteredNeg.comp", + "spv.subgroupExtendedTypesPartitioned.comp", + "spv.subgroupExtendedTypesPartitionedNeg.comp", + "spv.subgroupExtendedTypesShuffle.comp", + "spv.subgroupExtendedTypesShuffleNeg.comp", + "spv.subgroupExtendedTypesShuffleRelative.comp", + "spv.subgroupExtendedTypesShuffleRelativeNeg.comp", + "spv.subgroupExtendedTypesQuad.comp", + "spv.subgroupExtendedTypesQuadNeg.comp", + "spv.subgroupExtendedTypesVote.comp", + "spv.subgroupExtendedTypesVoteNeg.comp", "spv.vulkan110.storageBuffer.vert", })), FileNameAsCustomTestSuffix diff --git a/3rdparty/glslang/hlsl/hlslGrammar.cpp b/3rdparty/glslang/hlsl/hlslGrammar.cpp index 45cf5d59c..8ab1a900b 100755 --- a/3rdparty/glslang/hlsl/hlslGrammar.cpp +++ b/3rdparty/glslang/hlsl/hlslGrammar.cpp @@ -3221,6 +3221,11 @@ bool HlslGrammar::acceptConstructor(TIntermTyped*& node) return false; } + if (arguments == nullptr) { + expected("one or more arguments"); + return false; + } + // hook it up node = parseContext.handleFunctionCall(arguments->getLoc(), constructorFunction, arguments); diff --git a/3rdparty/glslang/known_good.json b/3rdparty/glslang/known_good.json index 9946335b6..6a1390709 100644 --- a/3rdparty/glslang/known_good.json +++ b/3rdparty/glslang/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "9b3cc3e05337358d0bd9fec1b7a51e3cbf55312b" + "commit" : "bbb29870b510f83f99994358179c9ea6838c3100" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "38cafab379e5d16137cb97a485b9385191039b92" + "commit" : "601d738723ac381741311c6c98c36d6170be14a2" } ] }