Бранимир Караџић 6 rokov pred
rodič
commit
a55a31d329
100 zmenil súbory, kde vykonal 13210 pridanie a 972 odobranie
  1. 1 0
      3rdparty/glslang/.appveyor.yml
  2. 5 3
      3rdparty/glslang/BUILD.gn
  3. 6 0
      3rdparty/glslang/CMakeLists.txt
  4. 1 1
      3rdparty/glslang/README.md
  5. 2 1
      3rdparty/glslang/SPIRV/CMakeLists.txt
  6. 1 0
      3rdparty/glslang/SPIRV/GLSL.ext.KHR.h
  7. 168 41
      3rdparty/glslang/SPIRV/GlslangToSpv.cpp
  8. 23 13
      3rdparty/glslang/SPIRV/SpvBuilder.cpp
  9. 12 3
      3rdparty/glslang/SPIRV/SpvBuilder.h
  10. 15 2
      3rdparty/glslang/SPIRV/SpvTools.cpp
  11. 5 3
      3rdparty/glslang/SPIRV/disassemble.cpp
  12. 54 27
      3rdparty/glslang/SPIRV/doc.cpp
  13. 87 13
      3rdparty/glslang/SPIRV/spirv.hpp
  14. 1 1
      3rdparty/glslang/Test/140.vert
  15. 1 1
      3rdparty/glslang/Test/310.frag
  16. 1 1
      3rdparty/glslang/Test/400.tesc
  17. 1 1
      3rdparty/glslang/Test/400.tese
  18. 1 1
      3rdparty/glslang/Test/baseResults/460.frag.out
  19. 622 26
      3rdparty/glslang/Test/baseResults/glsl.450.subgroup.frag.out
  20. 632 36
      3rdparty/glslang/Test/baseResults/glsl.450.subgroup.geom.out
  21. 632 36
      3rdparty/glslang/Test/baseResults/glsl.450.subgroup.tesc.out
  22. 632 36
      3rdparty/glslang/Test/baseResults/glsl.450.subgroup.tese.out
  23. 632 36
      3rdparty/glslang/Test/baseResults/glsl.450.subgroup.vert.out
  24. 4 4
      3rdparty/glslang/Test/baseResults/glsl.450.subgroupArithmetic.comp.out
  25. 14 14
      3rdparty/glslang/Test/baseResults/glsl.450.subgroupBallot.comp.out
  26. 14 14
      3rdparty/glslang/Test/baseResults/glsl.450.subgroupBallotNeg.comp.out
  27. 689 104
      3rdparty/glslang/Test/baseResults/glsl.450.subgroupBasic.comp.out
  28. 4 4
      3rdparty/glslang/Test/baseResults/glsl.450.subgroupClustered.comp.out
  29. 4 4
      3rdparty/glslang/Test/baseResults/glsl.450.subgroupClusteredNeg.comp.out
  30. 101 200
      3rdparty/glslang/Test/baseResults/glsl.450.subgroupPartitioned.comp.out
  31. 4 4
      3rdparty/glslang/Test/baseResults/glsl.450.subgroupQuad.comp.out
  32. 4 4
      3rdparty/glslang/Test/baseResults/glsl.450.subgroupShuffle.comp.out
  33. 4 4
      3rdparty/glslang/Test/baseResults/glsl.450.subgroupShuffleRelative.comp.out
  34. 4 4
      3rdparty/glslang/Test/baseResults/glsl.450.subgroupVote.comp.out
  35. 1217 0
      3rdparty/glslang/Test/baseResults/glsl.460.subgroup.mesh.out
  36. 775 0
      3rdparty/glslang/Test/baseResults/glsl.460.subgroup.rahit.out
  37. 663 0
      3rdparty/glslang/Test/baseResults/glsl.460.subgroup.rcall.out
  38. 797 0
      3rdparty/glslang/Test/baseResults/glsl.460.subgroup.rchit.out
  39. 727 0
      3rdparty/glslang/Test/baseResults/glsl.460.subgroup.rgen.out
  40. 749 0
      3rdparty/glslang/Test/baseResults/glsl.460.subgroup.rint.out
  41. 741 0
      3rdparty/glslang/Test/baseResults/glsl.460.subgroup.rmiss.out
  42. 903 0
      3rdparty/glslang/Test/baseResults/glsl.460.subgroup.task.out
  43. 4 4
      3rdparty/glslang/Test/baseResults/glsl.es320.subgroup.frag.out
  44. 4 4
      3rdparty/glslang/Test/baseResults/glsl.es320.subgroup.geom.out
  45. 4 4
      3rdparty/glslang/Test/baseResults/glsl.es320.subgroup.tesc.out
  46. 4 4
      3rdparty/glslang/Test/baseResults/glsl.es320.subgroup.tese.out
  47. 4 4
      3rdparty/glslang/Test/baseResults/glsl.es320.subgroup.vert.out
  48. 4 4
      3rdparty/glslang/Test/baseResults/glsl.es320.subgroupArithmetic.comp.out
  49. 14 14
      3rdparty/glslang/Test/baseResults/glsl.es320.subgroupBallot.comp.out
  50. 14 14
      3rdparty/glslang/Test/baseResults/glsl.es320.subgroupBallotNeg.comp.out
  51. 8 8
      3rdparty/glslang/Test/baseResults/glsl.es320.subgroupBasic.comp.out
  52. 4 4
      3rdparty/glslang/Test/baseResults/glsl.es320.subgroupClustered.comp.out
  53. 4 4
      3rdparty/glslang/Test/baseResults/glsl.es320.subgroupClusteredNeg.comp.out
  54. 101 200
      3rdparty/glslang/Test/baseResults/glsl.es320.subgroupPartitioned.comp.out
  55. 4 4
      3rdparty/glslang/Test/baseResults/glsl.es320.subgroupQuad.comp.out
  56. 4 4
      3rdparty/glslang/Test/baseResults/glsl.es320.subgroupShuffle.comp.out
  57. 4 4
      3rdparty/glslang/Test/baseResults/glsl.es320.subgroupShuffleRelative.comp.out
  58. 4 4
      3rdparty/glslang/Test/baseResults/glsl.es320.subgroupVote.comp.out
  59. 4 4
      3rdparty/glslang/Test/baseResults/hlsl.wavequery.comp.out
  60. 12 8
      3rdparty/glslang/Test/baseResults/nonuniform.frag.out
  61. 1 1
      3rdparty/glslang/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out
  62. 1 1
      3rdparty/glslang/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out
  63. 3 3
      3rdparty/glslang/Test/baseResults/spv.1.3.coopmat.comp.out
  64. 109 0
      3rdparty/glslang/Test/baseResults/spv.1.4.LoopControl.frag.out
  65. 58 0
      3rdparty/glslang/Test/baseResults/spv.1.4.NonWritable.frag.out
  66. 150 0
      3rdparty/glslang/Test/baseResults/spv.1.4.OpCopyLogical.comp.out
  67. 114 0
      3rdparty/glslang/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out
  68. 232 0
      3rdparty/glslang/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out
  69. 106 0
      3rdparty/glslang/Test/baseResults/spv.1.4.OpEntryPoint.frag.out
  70. 152 0
      3rdparty/glslang/Test/baseResults/spv.1.4.OpSelect.frag.out
  71. 159 0
      3rdparty/glslang/Test/baseResults/spv.1.4.image.frag.out
  72. 326 0
      3rdparty/glslang/Test/baseResults/spv.1.4.sparseTexture.frag.out
  73. 115 0
      3rdparty/glslang/Test/baseResults/spv.1.4.texture.frag.out
  74. 1 1
      3rdparty/glslang/Test/baseResults/spv.8bitstorage-int.frag.out
  75. 1 1
      3rdparty/glslang/Test/baseResults/spv.8bitstorage-ssbo.vert.out
  76. 1 1
      3rdparty/glslang/Test/baseResults/spv.8bitstorage-ubo.vert.out
  77. 1 1
      3rdparty/glslang/Test/baseResults/spv.8bitstorage-uint.frag.out
  78. 140 0
      3rdparty/glslang/Test/baseResults/spv.RayGenShaderArray.rgen.out
  79. 2 2
      3rdparty/glslang/Test/baseResults/spv.bufferhandle1.frag.out
  80. 2 2
      3rdparty/glslang/Test/baseResults/spv.bufferhandle10.frag.out
  81. 2 2
      3rdparty/glslang/Test/baseResults/spv.bufferhandle11.frag.out
  82. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle12.frag.out
  83. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle13.frag.out
  84. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle14.frag.out
  85. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle15.frag.out
  86. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle16.frag.out
  87. 274 0
      3rdparty/glslang/Test/baseResults/spv.bufferhandle18.frag.out
  88. 17 0
      3rdparty/glslang/Test/baseResults/spv.bufferhandle19_Errors.frag.out
  89. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle2.frag.out
  90. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle3.frag.out
  91. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle4.frag.out
  92. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle5.frag.out
  93. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle6.frag.out
  94. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle7.frag.out
  95. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle8.frag.out
  96. 1 1
      3rdparty/glslang/Test/baseResults/spv.bufferhandle9.frag.out
  97. 3 3
      3rdparty/glslang/Test/baseResults/spv.controlFlowAttributes.frag.out
  98. 3 3
      3rdparty/glslang/Test/baseResults/spv.coopmat.comp.out
  99. 56 0
      3rdparty/glslang/Test/baseResults/spv.fsi.frag.out
  100. 14 0
      3rdparty/glslang/Test/baseResults/spv.fsi_Error.frag.out

+ 1 - 0
3rdparty/glslang/.appveyor.yml

@@ -32,6 +32,7 @@ matrix:
 # scripts that run after cloning repository
 install:
   - C:/Python27/python.exe update_glslang_sources.py
+  - set PATH=C:\ninja;C:\Python36;%PATH%
   - git clone https://github.com/google/googletest.git External/googletest
   - cd External/googletest
   - git checkout 440527a61e1c91188195f7de212c63c77e8f0a45

+ 5 - 3
3rdparty/glslang/BUILD.gn

@@ -58,6 +58,8 @@ source_set("glslang_sources") {
     "SPIRV/SpvBuilder.cpp",
     "SPIRV/SpvBuilder.h",
     "SPIRV/SpvPostProcess.cpp",
+    "SPIRV/SpvTools.cpp",
+    "SPIRV/SpvTools.h",
     "SPIRV/bitutils.h",
     "SPIRV/disassemble.cpp",
     "SPIRV/disassemble.h",
@@ -104,7 +106,6 @@ source_set("glslang_sources") {
     "glslang/MachineIndependent/attribute.cpp",
     "glslang/MachineIndependent/attribute.h",
     "glslang/MachineIndependent/gl_types.h",
-    "glslang/MachineIndependent/glslang.y",
     "glslang/MachineIndependent/glslang_tab.cpp",
     "glslang/MachineIndependent/glslang_tab.cpp.h",
     "glslang/MachineIndependent/intermOut.cpp",
@@ -130,7 +131,7 @@ source_set("glslang_sources") {
     "glslang/Public/ShaderLang.h",
   ]
 
-  defines = []
+  defines = [ "ENABLE_OPT=1" ]
   if (is_win) {
     sources += [ "glslang/OSDependent/Windows/ossource.cpp" ]
     defines += [ "GLSLANG_OSINCLUDE_WIN32" ]
@@ -158,6 +159,7 @@ source_set("glslang_sources") {
 
   deps = [
     "${spirv_tools_dir}:spvtools_opt",
+    "${spirv_tools_dir}:spvtools_val",
   ]
 }
 
@@ -178,7 +180,7 @@ executable("glslang_validator") {
   if (!is_win) {
     cflags = [ "-Woverflow" ]
   }
-  defines = [ "ENABLE_OPT=0" ]
+  defines = [ "ENABLE_OPT=1" ]
   deps = [
     ":glslang_default_resource_limits_sources",
     ":glslang_sources",

+ 6 - 0
3rdparty/glslang/CMakeLists.txt

@@ -114,6 +114,12 @@ function(glslang_set_link_args TARGET)
     endif()
 endfunction(glslang_set_link_args)
 
+# CMake needs to find the right version of python, right from the beginning,
+# otherwise, it will find the wrong version and fail later
+if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External)
+    find_package(PythonInterp 3 REQUIRED)
+endif()
+
 # We depend on these for later projects, so they should come first.
 add_subdirectory(External)
 

+ 1 - 1
3rdparty/glslang/README.md

@@ -61,7 +61,7 @@ branch.
   (For MSVS: 2015 is recommended, 2013 is fully supported/tested, and 2010 support is attempted, but not tested.)
 * [CMake][cmake]: for generating compilation targets.
 * make: _Linux_, ninja is an alternative, if configured.
-* [Python 2.7][python]: for executing SPIRV-Tools scripts. (Optional if not using SPIRV-Tools.)
+* [Python 3.x][python]: for executing SPIRV-Tools scripts. (Optional if not using SPIRV-Tools and the 'External' subdirectory does not exist.)
 * [bison][bison]: _optional_, but needed when changing the grammar (glslang.y).
 * [googletest][googletest]: _optional_, but should use if making any changes to glslang.
 

+ 2 - 1
3rdparty/glslang/SPIRV/CMakeLists.txt

@@ -86,7 +86,8 @@ if(ENABLE_GLSLANG_INSTALL)
         endif()
         install(TARGETS SPIRV
                 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-                LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+                LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+                RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
     else()
         if (ENABLE_SPVREMAPPER)
             install(TARGETS SPVRemapper

+ 1 - 0
3rdparty/glslang/SPIRV/GLSL.ext.KHR.h

@@ -41,5 +41,6 @@ static const char* const E_SPV_KHR_storage_buffer_storage_class = "SPV_KHR_stora
 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_EXT_fragment_shader_interlock    = "SPV_EXT_fragment_shader_interlock";
 
 #endif  // #ifndef GLSLextKHR_H

+ 168 - 41
3rdparty/glslang/SPIRV/GlslangToSpv.cpp

@@ -135,7 +135,7 @@ protected:
     spv::ImageFormat TranslateImageFormat(const glslang::TType& type);
     spv::SelectionControlMask TranslateSelectionControl(const glslang::TIntermSelection&) const;
     spv::SelectionControlMask TranslateSwitchControl(const glslang::TIntermSwitch&) const;
-    spv::LoopControlMask TranslateLoopControl(const glslang::TIntermLoop&, unsigned int& dependencyLength) const;
+    spv::LoopControlMask TranslateLoopControl(const glslang::TIntermLoop&, std::vector<unsigned int>& operands) const;
     spv::StorageClass TranslateStorageClass(const glslang::TType&);
     void addIndirectionIndexCapabilities(const glslang::TType& baseType, const glslang::TType& indexType);
     spv::Id createSpvVariable(const glslang::TIntermSymbol*);
@@ -888,7 +888,7 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
         builder.addCapability(spv::CapabilityShadingRateNV);
         return spv::BuiltInInvocationsPerPixelNV;
 
-    // raytracing
+    // ray tracing
     case glslang::EbvLaunchIdNV:
         return spv::BuiltInLaunchIdNV;
     case glslang::EbvLaunchSizeNV:
@@ -917,6 +917,8 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
         return spv::BuiltInWorldToObjectNV;
     case glslang::EbvIncomingRayFlagsNV:
         return spv::BuiltInIncomingRayFlagsNV;
+
+    // barycentrics
     case glslang::EbvBaryCoordNV:
         builder.addExtension(spv::E_SPV_NV_fragment_shader_barycentric);
         builder.addCapability(spv::CapabilityFragmentBarycentricNV);
@@ -925,23 +927,25 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
         builder.addExtension(spv::E_SPV_NV_fragment_shader_barycentric);
         builder.addCapability(spv::CapabilityFragmentBarycentricNV);
         return spv::BuiltInBaryCoordNoPerspNV;
-     case glslang::EbvTaskCountNV:
+
+    // mesh shaders
+    case glslang::EbvTaskCountNV:
         return spv::BuiltInTaskCountNV;
-     case glslang::EbvPrimitiveCountNV:
+    case glslang::EbvPrimitiveCountNV:
         return spv::BuiltInPrimitiveCountNV;
-     case glslang::EbvPrimitiveIndicesNV:
+    case glslang::EbvPrimitiveIndicesNV:
         return spv::BuiltInPrimitiveIndicesNV;
-     case glslang::EbvClipDistancePerViewNV:
+    case glslang::EbvClipDistancePerViewNV:
         return spv::BuiltInClipDistancePerViewNV;
-     case glslang::EbvCullDistancePerViewNV:
+    case glslang::EbvCullDistancePerViewNV:
         return spv::BuiltInCullDistancePerViewNV;
-     case glslang::EbvLayerPerViewNV:
+    case glslang::EbvLayerPerViewNV:
         return spv::BuiltInLayerPerViewNV;
-     case glslang::EbvMeshViewCountNV:
+    case glslang::EbvMeshViewCountNV:
         return spv::BuiltInMeshViewCountNV;
-     case glslang::EbvMeshViewIndicesNV:
+    case glslang::EbvMeshViewIndicesNV:
         return spv::BuiltInMeshViewIndicesNV;
-#endif 
+#endif
     default:
         return spv::BuiltInMax;
     }
@@ -1055,7 +1059,7 @@ spv::SelectionControlMask TGlslangToSpvTraverser::TranslateSwitchControl(const g
 
 // return a non-0 dependency if the dependency argument must be set
 spv::LoopControlMask TGlslangToSpvTraverser::TranslateLoopControl(const glslang::TIntermLoop& loopNode,
-    unsigned int& dependencyLength) const
+    std::vector<unsigned int>& operands) const
 {
     spv::LoopControlMask control = spv::LoopControlMaskNone;
 
@@ -1067,7 +1071,29 @@ spv::LoopControlMask TGlslangToSpvTraverser::TranslateLoopControl(const glslang:
         control = control | spv::LoopControlDependencyInfiniteMask;
     else if (loopNode.getLoopDependency() > 0) {
         control = control | spv::LoopControlDependencyLengthMask;
-        dependencyLength = loopNode.getLoopDependency();
+        operands.push_back((unsigned int)loopNode.getLoopDependency());
+    }
+    if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_4) {
+        if (loopNode.getMinIterations() > 0) {
+            control = control | spv::LoopControlMinIterationsMask;
+            operands.push_back(loopNode.getMinIterations());
+        }
+        if (loopNode.getMaxIterations() < glslang::TIntermLoop::iterationsInfinite) {
+            control = control | spv::LoopControlMaxIterationsMask;
+            operands.push_back(loopNode.getMaxIterations());
+        }
+        if (loopNode.getIterationMultiple() > 1) {
+            control = control | spv::LoopControlIterationMultipleMask;
+            operands.push_back(loopNode.getIterationMultiple());
+        }
+        if (loopNode.getPeelCount() > 0) {
+            control = control | spv::LoopControlPeelCountMask;
+            operands.push_back(loopNode.getPeelCount());
+        }
+        if (loopNode.getPartialCount() > 0) {
+            control = control | spv::LoopControlPartialCountMask;
+            operands.push_back(loopNode.getPartialCount());
+        }
     }
 
     return control;
@@ -1443,6 +1469,30 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl
 
         if (glslangIntermediate->getDepth() != glslang::EldUnchanged && glslangIntermediate->isDepthReplacing())
             builder.addExecutionMode(shaderEntry, spv::ExecutionModeDepthReplacing);
+
+        switch (glslangIntermediate->getInterlockOrdering()) {
+        case glslang::EioPixelInterlockOrdered:         mode = spv::ExecutionModePixelInterlockOrderedEXT;          break;
+        case glslang::EioPixelInterlockUnordered:       mode = spv::ExecutionModePixelInterlockUnorderedEXT;          break;
+        case glslang::EioSampleInterlockOrdered:        mode = spv::ExecutionModeSampleInterlockOrderedEXT;          break;
+        case glslang::EioSampleInterlockUnordered:      mode = spv::ExecutionModeSampleInterlockUnorderedEXT;          break;
+        case glslang::EioShadingRateInterlockOrdered:   mode = spv::ExecutionModeShadingRateInterlockOrderedEXT;          break;
+        case glslang::EioShadingRateInterlockUnordered: mode = spv::ExecutionModeShadingRateInterlockUnorderedEXT;          break;
+        default:                                        mode = spv::ExecutionModeMax;                   break;
+        }
+        if (mode != spv::ExecutionModeMax) {
+            builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode);
+            if (mode == spv::ExecutionModeShadingRateInterlockOrderedEXT ||
+                mode == spv::ExecutionModeShadingRateInterlockUnorderedEXT) {
+                builder.addCapability(spv::CapabilityFragmentShaderShadingRateInterlockEXT);
+            } else if (mode == spv::ExecutionModePixelInterlockOrderedEXT ||
+                       mode == spv::ExecutionModePixelInterlockUnorderedEXT) {
+                builder.addCapability(spv::CapabilityFragmentShaderPixelInterlockEXT);
+            } else {
+                builder.addCapability(spv::CapabilityFragmentShaderSampleInterlockEXT);
+            }
+            builder.addExtension(spv::E_SPV_EXT_fragment_shader_interlock);
+        }
+
         break;
 
     case EShLangCompute:
@@ -1552,10 +1602,16 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol)
 
     // Include all "static use" and "linkage only" interface variables on the OpEntryPoint instruction
     if (builder.isPointer(id)) {
-        spv::StorageClass sc = builder.getStorageClass(id);
-        if (sc == spv::StorageClassInput || sc == spv::StorageClassOutput) {
-            if (!symbol->getType().isStruct() || symbol->getType().getStruct()->size() > 0)
+        // Consider adding to the OpEntryPoint interface list.
+        // Only looking at structures if they have at least one member.
+        if (!symbol->getType().isStruct() || symbol->getType().getStruct()->size() > 0) {
+            spv::StorageClass sc = builder.getStorageClass(id);
+            // Before SPIR-V 1.4, we only want to include Input and Output.
+            // Starting with SPIR-V 1.4, we want all globals.
+            if ((glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_4 && sc != spv::StorageClassFunction) ||
+                (sc == spv::StorageClassInput || sc == spv::StorageClassOutput)) {
                 iOSet.insert(id);
+            }
         }
     }
 
@@ -1683,6 +1739,7 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T
     case glslang::EOpIndexDirect:
     case glslang::EOpIndexDirectStruct:
         {
+            // Structure, array, matrix, or vector indirection with statically known index.
             // Get the left part of the access chain.
             node->getLeft()->traverse(this);
 
@@ -1737,8 +1794,8 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T
         return false;
     case glslang::EOpIndexIndirect:
         {
-            // Structure or array or vector indirection.
-            // Will use native SPIR-V access-chain for struct and array indirection;
+            // Array, matrix, or vector indirection with variable index.
+            // Will use native SPIR-V access-chain for and array indirection;
             // matrices are arrays of vectors, so will also work for a matrix.
             // Will use the access chain's 'component' for variable index into a vector.
 
@@ -2363,6 +2420,11 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
     case glslang::EOpCooperativeMatrixStore:
         noReturnValue = true;
         break;
+    case glslang::EOpBeginInvocationInterlock:
+    case glslang::EOpEndInvocationInterlock:
+        builder.addExtension(spv::E_SPV_EXT_fragment_shader_interlock);
+        noReturnValue = true;
+        break;
 
     default:
         break;
@@ -2609,6 +2671,19 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
 // next layer copies r-values into memory to use the access-chain mechanism
 bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang::TIntermSelection* node)
 {
+    // see if OpSelect can handle it
+    const auto isOpSelectable = [&]() {
+        if (node->getBasicType() == glslang::EbtVoid)
+            return false;
+        // OpSelect can do all other types starting with SPV 1.4
+        if (glslangIntermediate->getSpv().spv < glslang::EShTargetSpv_1_4) {
+            // pre-1.4, only scalars and vectors can be handled
+            if ((!node->getType().isScalar() && !node->getType().isVector()))
+                return false;
+        }
+        return true;
+    };
+
     // See if it simple and safe, or required, to execute both sides.
     // Crucially, side effects must be either semantically required or avoided,
     // and there are performance trade-offs.
@@ -2627,9 +2702,7 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang
 
         // if not required to execute both, decide based on performance/practicality...
 
-        // see if OpSelect can handle it
-        if ((!node->getType().isScalar() && !node->getType().isVector()) ||
-            node->getBasicType() == glslang::EbtVoid)
+        if (!isOpSelectable())
             return false;
 
         assert(node->getType() == node->getTrueBlock() ->getAsTyped()->getType() &&
@@ -2666,14 +2739,16 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang
         // emit code to select between trueValue and falseValue
 
         // see if OpSelect can handle it
-        if (node->getType().isScalar() || node->getType().isVector()) {
+        if (isOpSelectable()) {
             // Emit OpSelect for this selection.
 
             // smear condition to vector, if necessary (AST is always scalar)
-            if (builder.isVector(trueValue))
+            // Before 1.4, smear like for mix(), starting with 1.4, keep it scalar
+            if (glslangIntermediate->getSpv().spv < glslang::EShTargetSpv_1_4 && builder.isVector(trueValue)) {
                 condition = builder.smearScalar(spv::NoPrecision, condition, 
                                                 builder.makeVectorType(builder.makeBoolType(),
                                                                        builder.getNumComponents(trueValue)));
+            }
 
             // OpSelect
             result = builder.createTriOp(spv::OpSelect,
@@ -2822,8 +2897,8 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn
     builder.createBranch(&blocks.head);
 
     // Loop control:
-    unsigned int dependencyLength = glslang::TIntermLoop::dependencyInfinite;
-    const spv::LoopControlMask control = TranslateLoopControl(*node, dependencyLength);
+    std::vector<unsigned int> operands;
+    const spv::LoopControlMask control = TranslateLoopControl(*node, operands);
 
     // Spec requires back edges to target header blocks, and every header block
     // must dominate its merge block.  Make a header block first to ensure these
@@ -2833,7 +2908,7 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn
     // including merges of its own.
     builder.setLine(node->getLoc().line, node->getLoc().getFilename());
     builder.setBuildPoint(&blocks.head);
-    builder.createLoopMerge(&blocks.merge, &blocks.continue_target, control, dependencyLength);
+    builder.createLoopMerge(&blocks.merge, &blocks.continue_target, control, operands);
     if (node->testFirst() && node->getTest()) {
         spv::Block& test = builder.makeNewBlock();
         builder.createBranch(&test);
@@ -3615,6 +3690,20 @@ void TGlslangToSpvTraverser::multiTypeStore(const glslang::TType& type, spv::Id
     // where the two types were the same type in GLSL. This requires member
     // by member copy, recursively.
 
+    // SPIR-V 1.4 added an instruction to do help do this.
+    if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_4) {
+        // However, bool in uniform space is changed to int, so
+        // OpCopyLogical does not work for that.
+        // TODO: It would be more robust to do a full recursive verification of the types satisfying SPIR-V rules.
+        bool rBool = builder.containsType(builder.getTypeId(rValue), spv::OpTypeBool, 0);
+        bool lBool = builder.containsType(lType, spv::OpTypeBool, 0);
+        if (lBool == rBool) {
+            spv::Id logicalCopy = builder.createUnaryOp(spv::OpCopyLogical, lType, rValue);
+            accessChainStore(type, logicalCopy);
+            return;
+        }
+    }
+
     // If an array, copy element by element.
     if (type.isArray()) {
         glslang::TType glslangElementType(type, 0);
@@ -4126,15 +4215,26 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
 
     // Process a GLSL texturing op (will be SPV image)
 
-    const glslang::TType &imageType = node->getAsAggregate() ? node->getAsAggregate()->getSequence()[0]->getAsTyped()->getType()
-                                                             : node->getAsUnaryNode()->getOperand()->getAsTyped()->getType();
+    const glslang::TType &imageType = node->getAsAggregate()
+                                        ? node->getAsAggregate()->getSequence()[0]->getAsTyped()->getType()
+                                        : node->getAsUnaryNode()->getOperand()->getAsTyped()->getType();
     const glslang::TSampler sampler = imageType.getSampler();
 #ifdef AMD_EXTENSIONS
     bool f16ShadowCompare = (sampler.shadow && node->getAsAggregate())
-                                ? node->getAsAggregate()->getSequence()[1]->getAsTyped()->getType().getBasicType() == glslang::EbtFloat16
-                                : false;
+            ? node->getAsAggregate()->getSequence()[1]->getAsTyped()->getType().getBasicType() == glslang::EbtFloat16
+            : false;
 #endif
 
+    const auto signExtensionMask = [&]() {
+        if (builder.getSpvVersion() >= spv::Spv_1_4) {
+            if (sampler.type == glslang::EbtUint)
+                return spv::ImageOperandsZeroExtendMask;
+            else if (sampler.type == glslang::EbtInt)
+                return spv::ImageOperandsSignExtendMask;
+        }
+        return spv::ImageOperandsMaskNone;
+    };
+
     std::vector<spv::Id> arguments;
     if (node->getAsAggregate())
         translateArguments(*node->getAsAggregate(), arguments);
@@ -4213,11 +4313,17 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
             spv::IdImmediate coord = { true,
                 builder.makeCompositeConstant(builder.makeVectorType(builder.makeIntType(32), 2), comps) };
             operands.push_back(coord);
+            spv::IdImmediate imageOperands = { false, spv::ImageOperandsMaskNone };
+            imageOperands.word = imageOperands.word | signExtensionMask();
             if (sampler.ms) {
-                spv::IdImmediate imageOperands = { false, spv::ImageOperandsSampleMask };
+                imageOperands.word = imageOperands.word | spv::ImageOperandsSampleMask;
+            }
+            if (imageOperands.word != spv::ImageOperandsMaskNone) {
                 operands.push_back(imageOperands);
-                spv::IdImmediate imageOperand = { true, *(opIt++) };
-                operands.push_back(imageOperand);
+                if (sampler.ms) {
+                    spv::IdImmediate imageOperand = { true, *(opIt++) };
+                    operands.push_back(imageOperand);
+                }
             }
             spv::Id result = builder.createOp(spv::OpImageRead, resultType(), operands);
             builder.setPrecision(result, precision);
@@ -4244,7 +4350,8 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
 #endif
             mask = mask | TranslateImageOperands(TranslateCoherent(imageType));
             mask = (spv::ImageOperandsMask)(mask & ~spv::ImageOperandsMakeTexelAvailableKHRMask);
-            if (mask) {
+            mask = mask | signExtensionMask();
+            if (mask != spv::ImageOperandsMaskNone) {
                 spv::IdImmediate imageOperands = { false, (unsigned int)mask };
                 operands.push_back(imageOperands);
             }
@@ -4259,7 +4366,8 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
             }
 #endif
             if (mask & spv::ImageOperandsMakeTexelVisibleKHRMask) {
-                spv::IdImmediate imageOperand = { true, builder.makeUintConstant(TranslateMemoryScope(TranslateCoherent(imageType))) };
+                spv::IdImmediate imageOperand = { true,
+                                    builder.makeUintConstant(TranslateMemoryScope(TranslateCoherent(imageType))) };
                 operands.push_back(imageOperand);
             }
 
@@ -4306,7 +4414,8 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
 #endif
             mask = mask | TranslateImageOperands(TranslateCoherent(imageType));
             mask = (spv::ImageOperandsMask)(mask & ~spv::ImageOperandsMakeTexelVisibleKHRMask);
-            if (mask) {
+            mask = mask | signExtensionMask();
+            if (mask != spv::ImageOperandsMaskNone) {
                 spv::IdImmediate imageOperands = { false, (unsigned int)mask };
                 operands.push_back(imageOperands);
             }
@@ -4321,7 +4430,8 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
             }
 #endif
             if (mask & spv::ImageOperandsMakeTexelAvailableKHRMask) {
-                spv::IdImmediate imageOperand = { true, builder.makeUintConstant(TranslateMemoryScope(TranslateCoherent(imageType))) };
+                spv::IdImmediate imageOperand = { true,
+                    builder.makeUintConstant(TranslateMemoryScope(TranslateCoherent(imageType))) };
                 operands.push_back(imageOperand);
             }
 
@@ -4330,7 +4440,8 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
                 builder.addCapability(spv::CapabilityStorageImageWriteWithoutFormat);
             return spv::NoResult;
 #ifdef AMD_EXTENSIONS
-        } else if (node->getOp() == glslang::EOpSparseImageLoad || node->getOp() == glslang::EOpSparseImageLoadLod) {
+        } else if (node->getOp() == glslang::EOpSparseImageLoad ||
+                   node->getOp() == glslang::EOpSparseImageLoadLod) {
 #else
         } else if (node->getOp() == glslang::EOpSparseImageLoad) {
 #endif
@@ -4352,7 +4463,8 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
 #endif
             mask = mask | TranslateImageOperands(TranslateCoherent(imageType));
             mask = (spv::ImageOperandsMask)(mask & ~spv::ImageOperandsMakeTexelAvailableKHRMask);
-            if (mask) {
+            mask = mask | signExtensionMask();
+            if (mask != spv::ImageOperandsMaskNone) {
                 spv::IdImmediate imageOperands = { false, (unsigned int)mask };
                 operands.push_back(imageOperands);
             }
@@ -4654,7 +4766,8 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
         spv::Id resType = builder.makeStructType(members, "ResType");
 
         //call ImageFootprintNV
-        spv::Id res = builder.createTextureCall(precision, resType, sparse, cracked.fetch, cracked.proj, cracked.gather, noImplicitLod, params);
+        spv::Id res = builder.createTextureCall(precision, resType, sparse, cracked.fetch, cracked.proj,
+                                                cracked.gather, noImplicitLod, params, signExtensionMask());
         
         //copy resType (SPIR-V type) to resultStructType(OpenGL type)
         for (int i = 0; i < 5; i++) {
@@ -4707,7 +4820,8 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
     }
 
     std::vector<spv::Id> result( 1, 
-        builder.createTextureCall(precision, resultType(), sparse, cracked.fetch, cracked.proj, cracked.gather, noImplicitLod, params)
+        builder.createTextureCall(precision, resultType(), sparse, cracked.fetch, cracked.proj, cracked.gather,
+                                  noImplicitLod, params, signExtensionMask())
     );
 
     if (components != node->getType().getVectorSize())
@@ -5543,6 +5657,11 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe
     case glslang::EOpConstructReference:
         unaryOp = spv::OpBitcast;
         break;
+
+    case glslang::EOpCopyObject:
+        unaryOp = spv::OpCopyObject;
+        break;
+
     default:
         return 0;
     }
@@ -7339,6 +7458,14 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv:
         builder.createNoResultOp(spv::OpTerminateRayNV);
         return 0;
 #endif
+
+    case glslang::EOpBeginInvocationInterlock:
+        builder.createNoResultOp(spv::OpBeginInvocationInterlockEXT);
+        return 0;
+    case glslang::EOpEndInvocationInterlock:
+        builder.createNoResultOp(spv::OpEndInvocationInterlockEXT);
+        return 0;
+
     default:
         logger->missingFunctionality("unknown operation with no arguments");
         return 0;

+ 23 - 13
3rdparty/glslang/SPIRV/SpvBuilder.cpp

@@ -1306,11 +1306,13 @@ void Builder::makeDiscard()
 }
 
 // Comments in header
-Id Builder::createVariable(StorageClass storageClass, Id type, const char* name)
+Id Builder::createVariable(StorageClass storageClass, Id type, const char* name, Id initializer)
 {
     Id pointerType = makePointer(storageClass, type);
     Instruction* inst = new Instruction(getUniqueId(), pointerType, OpVariable);
     inst->addImmediateOperand(storageClass);
+    if (initializer != NoResult)
+        inst->addIdOperand(initializer);
 
     switch (storageClass) {
     case StorageClassFunction:
@@ -1806,7 +1808,7 @@ Id Builder::createBuiltinCall(Id resultType, Id builtins, int entryPoint, const
 // Accept all parameters needed to create a texture instruction.
 // Create the correct instruction based on the inputs, and make the call.
 Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, bool fetch, bool proj, bool gather,
-    bool noImplicitLod, const TextureParameters& parameters)
+    bool noImplicitLod, const TextureParameters& parameters, ImageOperandsMask signExtensionMask)
 {
     static const int maxTextureArgs = 10;
     Id texArgs[maxTextureArgs] = {};
@@ -1833,8 +1835,8 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse,
     //
     // Set up the optional arguments
     //
-    int optArgNum = numArgs;                        // track which operand, if it exists, is the mask of optional arguments
-    ++numArgs;                                      // speculatively make room for the mask operand
+    int optArgNum = numArgs;    // track which operand, if it exists, is the mask of optional arguments
+    ++numArgs;                  // speculatively make room for the mask operand
     ImageOperandsMask mask = ImageOperandsMaskNone; // the mask operand
     if (parameters.bias) {
         mask = (ImageOperandsMask)(mask | ImageOperandsBiasMask);
@@ -1887,6 +1889,7 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse,
     if (parameters.volatil) {
         mask = mask | ImageOperandsVolatileTexelKHRMask;
     }
+    mask = mask | signExtensionMask;
     if (mask == ImageOperandsMaskNone)
         --numArgs;  // undo speculative reservation for the mask argument
     else
@@ -2649,12 +2652,19 @@ Id Builder::accessChainLoad(Decoration precision, Decoration nonUniform, Id resu
             if (constant) {
                 id = createCompositeExtract(accessChain.base, swizzleBase, indexes);
             } else {
-                // make a new function variable for this r-value
-                Id lValue = createVariable(StorageClassFunction, getTypeId(accessChain.base), "indexable");
-
-                // store into it
-                createStore(accessChain.base, lValue);
-
+                Id lValue = NoResult;
+                if (spvVersion >= Spv_1_4) {
+                    // make a new function variable for this r-value, using an initializer,
+                    // and mark it as NonWritable so that downstream it can be detected as a lookup
+                    // table
+                    lValue = createVariable(StorageClassFunction, getTypeId(accessChain.base), "indexable",
+                        accessChain.base);
+                    addDecoration(lValue, DecorationNonWritable);
+                } else {
+                    lValue = createVariable(StorageClassFunction, getTypeId(accessChain.base), "indexable");
+                    // store into it
+                    createStore(accessChain.base, lValue);
+                }
                 // move base to the new variable
                 accessChain.base = lValue;
                 accessChain.isRValue = false;
@@ -2956,14 +2966,14 @@ void Builder::createSelectionMerge(Block* mergeBlock, unsigned int control)
 }
 
 void Builder::createLoopMerge(Block* mergeBlock, Block* continueBlock, unsigned int control,
-                              unsigned int dependencyLength)
+                              const std::vector<unsigned int>& operands)
 {
     Instruction* merge = new Instruction(OpLoopMerge);
     merge->addIdOperand(mergeBlock->getId());
     merge->addIdOperand(continueBlock->getId());
     merge->addImmediateOperand(control);
-    if ((control & LoopControlDependencyLengthMask) != 0)
-        merge->addImmediateOperand(dependencyLength);
+    for (int op = 0; op < (int)operands.size(); ++op)
+        merge->addImmediateOperand(operands[op]);
     buildPoint->addInstruction(std::unique_ptr<Instruction>(merge));
 }
 

+ 12 - 3
3rdparty/glslang/SPIRV/SpvBuilder.h

@@ -61,6 +61,14 @@
 
 namespace spv {
 
+typedef enum {
+    Spv_1_0 = (1 << 16),
+    Spv_1_1 = (1 << 16) | (1 << 8),
+    Spv_1_2 = (1 << 16) | (2 << 8),
+    Spv_1_3 = (1 << 16) | (3 << 8),
+    Spv_1_4 = (1 << 16) | (4 << 8),
+} SpvVersion;
+
 class Builder {
 public:
     Builder(unsigned int spvVersion, unsigned int userNumber, SpvBuildLogger* logger);
@@ -300,7 +308,7 @@ public:
     void makeDiscard();
 
     // Create a global or function local or IO variable.
-    Id createVariable(StorageClass, Id type, const char* name = 0);
+    Id createVariable(StorageClass, Id type, const char* name = 0, Id initializer = NoResult);
 
     // Create an intermediate with an undefined value.
     Id createUndefined(Id type);
@@ -408,7 +416,8 @@ public:
     };
 
     // Select the correct texture operation based on all inputs, and emit the correct instruction
-    Id createTextureCall(Decoration precision, Id resultType, bool sparse, bool fetch, bool proj, bool gather, bool noImplicit, const TextureParameters&);
+    Id createTextureCall(Decoration precision, Id resultType, bool sparse, bool fetch, bool proj, bool gather,
+        bool noImplicit, const TextureParameters&, ImageOperandsMask);
 
     // Emit the OpTextureQuery* instruction that was passed in.
     // Figure out the right return value and type, and return it.
@@ -662,7 +671,7 @@ public:
 
     void createBranch(Block* block);
     void createConditionalBranch(Id condition, Block* thenBlock, Block* elseBlock);
-    void createLoopMerge(Block* mergeBlock, Block* continueBlock, unsigned int control, unsigned int dependencyLength);
+    void createLoopMerge(Block* mergeBlock, Block* continueBlock, unsigned int control, const std::vector<unsigned int>& operands);
 
     // Sets to generate opcode for specialization constants.
     void setToSpecConstCodeGenMode() { generatingOpCodeForSpecConst = true; }

+ 15 - 2
3rdparty/glslang/SPIRV/SpvTools.cpp

@@ -52,8 +52,21 @@ namespace glslang {
 spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLogger* logger)
 {
     switch (spvVersion.vulkan) {
-    case glslang::EShTargetVulkan_1_0: return spv_target_env::SPV_ENV_VULKAN_1_0;
-    case glslang::EShTargetVulkan_1_1: return spv_target_env::SPV_ENV_VULKAN_1_1;
+    case glslang::EShTargetVulkan_1_0:
+        return spv_target_env::SPV_ENV_VULKAN_1_0;
+    case glslang::EShTargetVulkan_1_1:
+        switch (spvVersion.spv) {
+        case EShTargetSpv_1_0:
+        case EShTargetSpv_1_1:
+        case EShTargetSpv_1_2:
+        case EShTargetSpv_1_3:
+            return spv_target_env::SPV_ENV_VULKAN_1_1;
+        case EShTargetSpv_1_4:
+            return spv_target_env::SPV_ENV_VULKAN_1_1_SPIRV_1_4;
+        default:
+            logger->missingFunctionality("Target version for SPIRV-Tools validator");
+            return spv_target_env::SPV_ENV_VULKAN_1_1;
+        }
     default:
         break;
     }

+ 5 - 3
3rdparty/glslang/SPIRV/disassemble.cpp

@@ -701,9 +701,10 @@ static const char* GLSLextNVGetDebugNames(const char* name, unsigned entrypoint)
         strcmp(name, spv::E_SPV_NV_geometry_shader_passthrough) == 0 ||
         strcmp(name, spv::E_ARB_shader_viewport_layer_array) == 0 ||
         strcmp(name, spv::E_SPV_NV_viewport_array2) == 0 ||
-        strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0 ||
-        strcmp(spv::E_SPV_NV_fragment_shader_barycentric, name) == 0 ||
-        strcmp(name, spv::E_SPV_NV_mesh_shader) == 0) {
+        strcmp(name, spv::E_SPV_NVX_multiview_per_view_attributes) == 0 ||
+        strcmp(name, spv::E_SPV_NV_fragment_shader_barycentric) == 0 ||
+        strcmp(name, spv::E_SPV_NV_mesh_shader) == 0 ||
+        strcmp(name, spv::E_SPV_NV_shader_image_footprint) == 0) {
         switch (entrypoint) {
         // NV builtins
         case BuiltInViewportMaskNV:                 return "ViewportMaskNV";
@@ -729,6 +730,7 @@ static const char* GLSLextNVGetDebugNames(const char* name, unsigned entrypoint)
         case CapabilityPerViewAttributesNV:         return "PerViewAttributesNV";
         case CapabilityFragmentBarycentricNV:       return "FragmentBarycentricNV";
         case CapabilityMeshShadingNV:               return "MeshShadingNV";
+        case CapabilityImageFootprintNV:            return "ImageFootprintNV";
 
         // NV Decorations
         case DecorationOverrideCoverageNV:          return "OverrideCoverageNV";

+ 54 - 27
3rdparty/glslang/SPIRV/doc.cpp

@@ -191,6 +191,13 @@ const char* ExecutionModeString(int mode)
     case ExecutionModeDerivativeGroupLinearNV:  return "DerivativeGroupLinearNV";
 #endif
 
+    case ExecutionModePixelInterlockOrderedEXT:         return "PixelInterlockOrderedEXT";
+    case ExecutionModePixelInterlockUnorderedEXT:       return "PixelInterlockUnorderedEXT";
+    case ExecutionModeSampleInterlockOrderedEXT:        return "SampleInterlockOrderedEXT";
+    case ExecutionModeSampleInterlockUnorderedEXT:      return "SampleInterlockUnorderedEXT";
+    case ExecutionModeShadingRateInterlockOrderedEXT:   return "ShadingRateInterlockOrderedEXT";
+    case ExecutionModeShadingRateInterlockUnorderedEXT: return "ShadingRateInterlockUnorderedEXT";
+
     case ExecutionModeCeiling:
     default: return "Bad";
     }
@@ -575,7 +582,7 @@ const char* ImageChannelDataTypeString(int type)
     }
 }
 
-const int ImageOperandsCeiling = 12;
+const int ImageOperandsCeiling = 14;
 
 const char* ImageOperandsString(int format)
 {
@@ -592,6 +599,8 @@ const char* ImageOperandsString(int format)
     case ImageOperandsMakeTexelVisibleKHRShift:     return "MakeTexelVisibleKHR";
     case ImageOperandsNonPrivateTexelKHRShift:      return "NonPrivateTexelKHR";
     case ImageOperandsVolatileTexelKHRShift:        return "VolatileTexelKHR";
+    case ImageOperandsSignExtendShift:              return "SignExtend";
+    case ImageOperandsZeroExtendShift:              return "ZeroExtend";
 
     case ImageOperandsCeiling:
     default:
@@ -674,15 +683,20 @@ const char* SelectControlString(int cont)
     }
 }
 
-const int LoopControlCeiling = 4;
+const int LoopControlCeiling = LoopControlPartialCountShift + 1;
 
 const char* LoopControlString(int cont)
 {
     switch (cont) {
-    case 0:  return "Unroll";
-    case 1:  return "DontUnroll";
-    case 2:  return "DependencyInfinite";
-    case 3:  return "DependencyLength";
+    case LoopControlUnrollShift:             return "Unroll";
+    case LoopControlDontUnrollShift:         return "DontUnroll";
+    case LoopControlDependencyInfiniteShift: return "DependencyInfinite";
+    case LoopControlDependencyLengthShift:   return "DependencyLength";
+    case LoopControlMinIterationsShift:      return "MinIterations";
+    case LoopControlMaxIterationsShift:      return "MaxIterations";
+    case LoopControlIterationMultipleShift:  return "IterationMultiple";
+    case LoopControlPeelCountShift:          return "PeelCount";
+    case LoopControlPartialCountShift:       return "PartialCount";
 
     case LoopControlCeiling:
     default: return "Bad";
@@ -875,9 +889,9 @@ const char* CapabilityString(int info)
     case CapabilityStoragePushConstant16:       return "StoragePushConstant16";
     case CapabilityStorageInputOutput16:        return "StorageInputOutput16";
 
-    case CapabilityStorageBuffer8BitAccess:             return "CapabilityStorageBuffer8BitAccess";
-    case CapabilityUniformAndStorageBuffer8BitAccess:   return "CapabilityUniformAndStorageBuffer8BitAccess";
-    case CapabilityStoragePushConstant8:                return "CapabilityStoragePushConstant8";
+    case CapabilityStorageBuffer8BitAccess:             return "StorageBuffer8BitAccess";
+    case CapabilityUniformAndStorageBuffer8BitAccess:   return "UniformAndStorageBuffer8BitAccess";
+    case CapabilityStoragePushConstant8:                return "StoragePushConstant8";
 
     case CapabilityDeviceGroup: return "DeviceGroup";
     case CapabilityMultiView:   return "MultiView";
@@ -906,33 +920,38 @@ const char* CapabilityString(int info)
     case CapabilityComputeDerivativeGroupLinearNV:  return "ComputeDerivativeGroupLinearNV";
     case CapabilityFragmentBarycentricNV:           return "FragmentBarycentricNV";
     case CapabilityMeshShadingNV:                   return "MeshShadingNV";
-//    case CapabilityShadingRateNV:                   return "ShadingRateNV";  // superseded by CapabilityFragmentDensityEXT
+    case CapabilityImageFootprintNV:                return "ImageFootprintNV";
+//    case CapabilityShadingRateNV:                   return "ShadingRateNV";  // superseded by FragmentDensityEXT
 #endif
     case CapabilityFragmentDensityEXT:              return "FragmentDensityEXT";
 
     case CapabilityFragmentFullyCoveredEXT: return "FragmentFullyCoveredEXT";
 
-    case CapabilityShaderNonUniformEXT:                          return "CapabilityShaderNonUniformEXT";
-    case CapabilityRuntimeDescriptorArrayEXT:                    return "CapabilityRuntimeDescriptorArrayEXT";
-    case CapabilityInputAttachmentArrayDynamicIndexingEXT:       return "CapabilityInputAttachmentArrayDynamicIndexingEXT";
-    case CapabilityUniformTexelBufferArrayDynamicIndexingEXT:    return "CapabilityUniformTexelBufferArrayDynamicIndexingEXT";
-    case CapabilityStorageTexelBufferArrayDynamicIndexingEXT:    return "CapabilityStorageTexelBufferArrayDynamicIndexingEXT";
-    case CapabilityUniformBufferArrayNonUniformIndexingEXT:      return "CapabilityUniformBufferArrayNonUniformIndexingEXT";
-    case CapabilitySampledImageArrayNonUniformIndexingEXT:       return "CapabilitySampledImageArrayNonUniformIndexingEXT";
-    case CapabilityStorageBufferArrayNonUniformIndexingEXT:      return "CapabilityStorageBufferArrayNonUniformIndexingEXT";
-    case CapabilityStorageImageArrayNonUniformIndexingEXT:       return "CapabilityStorageImageArrayNonUniformIndexingEXT";
-    case CapabilityInputAttachmentArrayNonUniformIndexingEXT:    return "CapabilityInputAttachmentArrayNonUniformIndexingEXT";
-    case CapabilityUniformTexelBufferArrayNonUniformIndexingEXT: return "CapabilityUniformTexelBufferArrayNonUniformIndexingEXT";
-    case CapabilityStorageTexelBufferArrayNonUniformIndexingEXT: return "CapabilityStorageTexelBufferArrayNonUniformIndexingEXT";
+    case CapabilityShaderNonUniformEXT:                          return "ShaderNonUniformEXT";
+    case CapabilityRuntimeDescriptorArrayEXT:                    return "RuntimeDescriptorArrayEXT";
+    case CapabilityInputAttachmentArrayDynamicIndexingEXT:       return "InputAttachmentArrayDynamicIndexingEXT";
+    case CapabilityUniformTexelBufferArrayDynamicIndexingEXT:    return "UniformTexelBufferArrayDynamicIndexingEXT";
+    case CapabilityStorageTexelBufferArrayDynamicIndexingEXT:    return "StorageTexelBufferArrayDynamicIndexingEXT";
+    case CapabilityUniformBufferArrayNonUniformIndexingEXT:      return "UniformBufferArrayNonUniformIndexingEXT";
+    case CapabilitySampledImageArrayNonUniformIndexingEXT:       return "SampledImageArrayNonUniformIndexingEXT";
+    case CapabilityStorageBufferArrayNonUniformIndexingEXT:      return "StorageBufferArrayNonUniformIndexingEXT";
+    case CapabilityStorageImageArrayNonUniformIndexingEXT:       return "StorageImageArrayNonUniformIndexingEXT";
+    case CapabilityInputAttachmentArrayNonUniformIndexingEXT:    return "InputAttachmentArrayNonUniformIndexingEXT";
+    case CapabilityUniformTexelBufferArrayNonUniformIndexingEXT: return "UniformTexelBufferArrayNonUniformIndexingEXT";
+    case CapabilityStorageTexelBufferArrayNonUniformIndexingEXT: return "StorageTexelBufferArrayNonUniformIndexingEXT";
+
+    case CapabilityVulkanMemoryModelKHR:                return "VulkanMemoryModelKHR";
+    case CapabilityVulkanMemoryModelDeviceScopeKHR:     return "VulkanMemoryModelDeviceScopeKHR";
 
-    case CapabilityVulkanMemoryModelKHR:                return "CapabilityVulkanMemoryModelKHR";
-    case CapabilityVulkanMemoryModelDeviceScopeKHR:     return "CapabilityVulkanMemoryModelDeviceScopeKHR";
+    case CapabilityPhysicalStorageBufferAddressesEXT:   return "PhysicalStorageBufferAddressesEXT";
 
-    case CapabilityPhysicalStorageBufferAddressesEXT:   return "CapabilityPhysicalStorageBufferAddressesEXT";
+    case CapabilityVariablePointers:                    return "VariablePointers";
 
-    case CapabilityVariablePointers:                    return "CapabilityVariablePointers";
+    case CapabilityCooperativeMatrixNV:     return "CooperativeMatrixNV";
 
-    case CapabilityCooperativeMatrixNV:     return "CapabilityCooperativeMatrixNV";
+    case CapabilityFragmentShaderSampleInterlockEXT:        return "CapabilityFragmentShaderSampleInterlockEXT";
+    case CapabilityFragmentShaderPixelInterlockEXT:         return "CapabilityFragmentShaderPixelInterlockEXT";
+    case CapabilityFragmentShaderShadingRateInterlockEXT:   return "CapabilityFragmentShaderShadingRateInterlockEXT";
 
     default: return "Bad";
     }
@@ -1026,6 +1045,7 @@ const char* OpcodeString(int op)
     case 82:  return "OpCompositeInsert";
     case 83:  return "OpCopyObject";
     case 84:  return "OpTranspose";
+    case OpCopyLogical: return "OpCopyLogical";
     case 85:  return "Bad";
     case 86:  return "OpSampledImage";
     case 87:  return "OpImageSampleImplicitLod";
@@ -1343,6 +1363,9 @@ const char* OpcodeString(int op)
     case OpCooperativeMatrixMulAddNV:       return "OpCooperativeMatrixMulAddNV";
     case OpCooperativeMatrixLengthNV:       return "OpCooperativeMatrixLengthNV";
 
+    case OpBeginInvocationInterlockEXT:     return "OpBeginInvocationInterlockEXT";
+    case OpEndInvocationInterlockEXT:       return "OpEndInvocationInterlockEXT";
+
     default:
         return "Bad";
     }
@@ -1456,6 +1479,8 @@ void Parameterize()
     InstructionDesc[OpModuleProcessed].setResultAndType(false, false);
     InstructionDesc[OpTypeCooperativeMatrixNV].setResultAndType(true, false);
     InstructionDesc[OpCooperativeMatrixStoreNV].setResultAndType(false, false);
+    InstructionDesc[OpBeginInvocationInterlockEXT].setResultAndType(false, false);
+    InstructionDesc[OpEndInvocationInterlockEXT].setResultAndType(false, false);
 
     // Specific additional context-dependent operands
 
@@ -1933,6 +1958,8 @@ void Parameterize()
 
     InstructionDesc[OpTranspose].operands.push(OperandId, "'Matrix'");
 
+    InstructionDesc[OpCopyLogical].operands.push(OperandId, "'Operand'");
+
     InstructionDesc[OpIsNan].operands.push(OperandId, "'x'");
 
     InstructionDesc[OpIsInf].operands.push(OperandId, "'x'");

+ 87 - 13
3rdparty/glslang/SPIRV/spirv.hpp

@@ -49,12 +49,12 @@ namespace spv {
 
 typedef unsigned int Id;
 
-#define SPV_VERSION 0x10300
-#define SPV_REVISION 7
+#define SPV_VERSION 0x10400
+#define SPV_REVISION 1
 
 static const unsigned int MagicNumber = 0x07230203;
-static const unsigned int Version = 0x00010300;
-static const unsigned int Revision = 7;
+static const unsigned int Version = 0x00010400;
+static const unsigned int Revision = 1;
 static const unsigned int OpCodeMask = 0xffff;
 static const unsigned int WordCountShift = 16;
 
@@ -154,6 +154,12 @@ enum ExecutionMode {
     ExecutionModeDerivativeGroupQuadsNV = 5289,
     ExecutionModeDerivativeGroupLinearNV = 5290,
     ExecutionModeOutputTrianglesNV = 5298,
+    ExecutionModePixelInterlockOrderedEXT = 5366,
+    ExecutionModePixelInterlockUnorderedEXT = 5367,
+    ExecutionModeSampleInterlockOrderedEXT = 5368,
+    ExecutionModeSampleInterlockUnorderedEXT = 5369,
+    ExecutionModeShadingRateInterlockOrderedEXT = 5370,
+    ExecutionModeShadingRateInterlockUnorderedEXT = 5371,
     ExecutionModeMax = 0x7fffffff,
 };
 
@@ -309,6 +315,8 @@ enum ImageOperandsShift {
     ImageOperandsMakeTexelVisibleKHRShift = 9,
     ImageOperandsNonPrivateTexelKHRShift = 10,
     ImageOperandsVolatileTexelKHRShift = 11,
+    ImageOperandsSignExtendShift = 12,
+    ImageOperandsZeroExtendShift = 13,
     ImageOperandsMax = 0x7fffffff,
 };
 
@@ -326,6 +334,8 @@ enum ImageOperandsMask {
     ImageOperandsMakeTexelVisibleKHRMask = 0x00000200,
     ImageOperandsNonPrivateTexelKHRMask = 0x00000400,
     ImageOperandsVolatileTexelKHRMask = 0x00000800,
+    ImageOperandsSignExtendMask = 0x00001000,
+    ImageOperandsZeroExtendMask = 0x00002000,
 };
 
 enum FPFastMathModeShift {
@@ -406,6 +416,7 @@ enum Decoration {
     DecorationNonWritable = 24,
     DecorationNonReadable = 25,
     DecorationUniform = 26,
+    DecorationUniformId = 27,
     DecorationSaturatedConversion = 28,
     DecorationStream = 29,
     DecorationLocation = 30,
@@ -440,8 +451,10 @@ enum Decoration {
     DecorationNonUniformEXT = 5300,
     DecorationRestrictPointerEXT = 5355,
     DecorationAliasedPointerEXT = 5356,
+    DecorationCounterBuffer = 5634,
     DecorationHlslCounterBufferGOOGLE = 5634,
     DecorationHlslSemanticGOOGLE = 5635,
+    DecorationUserSemantic = 5635,
     DecorationMax = 0x7fffffff,
 };
 
@@ -544,6 +557,10 @@ enum BuiltIn {
     BuiltInHitTNV = 5332,
     BuiltInHitKindNV = 5333,
     BuiltInIncomingRayFlagsNV = 5351,
+    BuiltInWarpsPerSMNV = 5374,
+    BuiltInSMCountNV = 5375,
+    BuiltInWarpIDNV = 5376,
+    BuiltInSMIDNV = 5377,
     BuiltInMax = 0x7fffffff,
 };
 
@@ -564,6 +581,11 @@ enum LoopControlShift {
     LoopControlDontUnrollShift = 1,
     LoopControlDependencyInfiniteShift = 2,
     LoopControlDependencyLengthShift = 3,
+    LoopControlMinIterationsShift = 4,
+    LoopControlMaxIterationsShift = 5,
+    LoopControlIterationMultipleShift = 6,
+    LoopControlPeelCountShift = 7,
+    LoopControlPartialCountShift = 8,
     LoopControlMax = 0x7fffffff,
 };
 
@@ -573,6 +595,11 @@ enum LoopControlMask {
     LoopControlDontUnrollMask = 0x00000002,
     LoopControlDependencyInfiniteMask = 0x00000004,
     LoopControlDependencyLengthMask = 0x00000008,
+    LoopControlMinIterationsMask = 0x00000010,
+    LoopControlMaxIterationsMask = 0x00000020,
+    LoopControlIterationMultipleMask = 0x00000040,
+    LoopControlPeelCountMask = 0x00000080,
+    LoopControlPartialCountMask = 0x00000100,
 };
 
 enum FunctionControlShift {
@@ -812,10 +839,15 @@ enum Capability {
     CapabilityPhysicalStorageBufferAddressesEXT = 5347,
     CapabilityComputeDerivativeGroupLinearNV = 5350,
     CapabilityCooperativeMatrixNV = 5357,
+    CapabilityFragmentShaderSampleInterlockEXT = 5363,
+    CapabilityFragmentShaderShadingRateInterlockEXT = 5372,
+    CapabilityShaderSMBuiltinsNV = 5373,
+    CapabilityFragmentShaderPixelInterlockEXT = 5378,
     CapabilitySubgroupShuffleINTEL = 5568,
     CapabilitySubgroupBufferBlockIOINTEL = 5569,
     CapabilitySubgroupImageBlockIOINTEL = 5570,
     CapabilitySubgroupImageMediaBlockIOINTEL = 5579,
+    CapabilityIntegerFunctions2INTEL = 5584,
     CapabilitySubgroupAvcMotionEstimationINTEL = 5696,
     CapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697,
     CapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698,
@@ -1163,6 +1195,10 @@ enum Op {
     OpGroupNonUniformLogicalXor = 364,
     OpGroupNonUniformQuadBroadcast = 365,
     OpGroupNonUniformQuadSwap = 366,
+    OpCopyLogical = 400,
+    OpPtrEqual = 401,
+    OpPtrNotEqual = 402,
+    OpPtrDiff = 403,
     OpSubgroupBallotKHR = 4421,
     OpSubgroupFirstInvocationKHR = 4422,
     OpSubgroupAllKHR = 4428,
@@ -1193,6 +1229,8 @@ enum Op {
     OpCooperativeMatrixStoreNV = 5360,
     OpCooperativeMatrixMulAddNV = 5361,
     OpCooperativeMatrixLengthNV = 5362,
+    OpBeginInvocationInterlockEXT = 5364,
+    OpEndInvocationInterlockEXT = 5365,
     OpSubgroupShuffleINTEL = 5571,
     OpSubgroupShuffleDownINTEL = 5572,
     OpSubgroupShuffleUpINTEL = 5573,
@@ -1203,7 +1241,23 @@ enum Op {
     OpSubgroupImageBlockWriteINTEL = 5578,
     OpSubgroupImageMediaBlockReadINTEL = 5580,
     OpSubgroupImageMediaBlockWriteINTEL = 5581,
+    OpUCountLeadingZerosINTEL = 5585,
+    OpUCountTrailingZerosINTEL = 5586,
+    OpAbsISubINTEL = 5587,
+    OpAbsUSubINTEL = 5588,
+    OpIAddSatINTEL = 5589,
+    OpUAddSatINTEL = 5590,
+    OpIAverageINTEL = 5591,
+    OpUAverageINTEL = 5592,
+    OpIAverageRoundedINTEL = 5593,
+    OpUAverageRoundedINTEL = 5594,
+    OpISubSatINTEL = 5595,
+    OpUSubSatINTEL = 5596,
+    OpIMul32x16INTEL = 5597,
+    OpUMul32x16INTEL = 5598,
+    OpDecorateString = 5632,
     OpDecorateStringGOOGLE = 5632,
+    OpMemberDecorateString = 5633,
     OpMemberDecorateStringGOOGLE = 5633,
     OpVmeImageINTEL = 5699,
     OpTypeVmeImageINTEL = 5700,
@@ -1671,6 +1725,10 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
     case OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break;
     case OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break;
     case OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break;
+    case OpCopyLogical: *hasResult = true; *hasResultType = true; break;
+    case OpPtrEqual: *hasResult = true; *hasResultType = true; break;
+    case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
+    case OpPtrDiff: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
@@ -1687,6 +1745,8 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
     case OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
     case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
     case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
+    case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
+    case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
     case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
     case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
     case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
@@ -1694,6 +1754,11 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
     case OpTraceNV: *hasResult = false; *hasResultType = false; break;
     case OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
     case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
+    case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
+    case OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
+    case OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
+    case OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
+    case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
@@ -1704,6 +1769,22 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
     case OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
     case OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
+    case OpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpAbsISubINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpIAddSatINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpUAddSatINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpIAverageINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpUAverageINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpISubSatINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
+    case OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
+    case OpDecorateString: *hasResult = false; *hasResultType = false; break;
+    case OpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
     case OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
     case OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break;
     case OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break;
@@ -1822,15 +1903,8 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
     case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
-    case OpDecorateStringGOOGLE: *hasResult = false; *hasResultType = false; break;
-    case OpMemberDecorateStringGOOGLE: *hasResult = false; *hasResultType = false; break;
-    case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
-    case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
-    case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
-    case OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
-    case OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
-    case OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
-    case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
+    case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
+    case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
     }
 }
 #endif /* SPV_ENABLE_UTILITY_CODE */

+ 1 - 1
3rdparty/glslang/Test/140.vert

@@ -68,7 +68,7 @@ void devi()
 #extension GL_EXT_device_group : enable
 #endif
 
-#ifdef GL_EXT_device_group
+#ifdef GL_EXT_multiview
 #extension GL_EXT_multiview : enable
 #endif
 

+ 1 - 1
3rdparty/glslang/Test/310.frag

@@ -440,7 +440,7 @@ void devi()
 #extension GL_EXT_device_group : enable
 #endif
 
-#ifdef GL_EXT_device_group
+#ifdef GL_EXT_multiview
 #extension GL_EXT_multiview : enable
 #endif
 

+ 1 - 1
3rdparty/glslang/Test/400.tesc

@@ -114,7 +114,7 @@ void devi()
 #extension GL_EXT_device_group : enable
 #endif
 
-#ifdef GL_EXT_device_group
+#ifdef GL_EXT_multiview
 #extension GL_EXT_multiview : enable
 #endif
 

+ 1 - 1
3rdparty/glslang/Test/400.tese

@@ -114,7 +114,7 @@ void devi()
 #extension GL_EXT_device_group : enable
 #endif
 
-#ifdef GL_EXT_device_group
+#ifdef GL_EXT_multiview
 #extension GL_EXT_multiview : enable
 #endif
 

+ 1 - 1
3rdparty/glslang/Test/baseResults/460.frag.out

@@ -56,7 +56,7 @@ ERROR: node is still EOpNull!
 0:28  Function Definition: attExt( ( global void)
 0:28    Function Parameters: 
 0:30    Sequence
-0:30      Loop with condition not tested first: Dependency -3
+0:30      Loop with condition not tested first
 0:30        Loop Condition
 0:30        Constant:
 0:30          true (const bool)

+ 622 - 26
3rdparty/glslang/Test/baseResults/glsl.450.subgroup.frag.out

@@ -1,19 +1,602 @@
 glsl.450.subgroup.frag
+ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:13: 'gl_NumSubgroups' : undeclared identifier 
+ERROR: 0:14: 'gl_SubgroupID' : undeclared identifier 
+ERROR: 0:15: 'subgroupMemoryBarrierShared' : no matching overloaded function found 
+ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 86 compilation errors.  No code generated.
+
+
 Shader version: 450
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
 Requested GL_KHR_shader_subgroup_basic
-0:? Sequence
-0:4  Function Definition: main( ( global void)
-0:4    Function Parameters: 
-0:6    Sequence
-0:6      move second child to first child ( temp 4-component vector of uint)
-0:6        'data' (layout( location=0) out 4-component vector of uint)
-0:6        Construct uvec4 ( temp 4-component vector of uint)
-0:6          'gl_SubgroupSize' ( flat in uint unknown built-in variable)
-0:6          'gl_SubgroupInvocationID' ( flat in uint unknown built-in variable)
-0:6          Constant:
-0:6            0 (const uint)
-0:6          Constant:
-0:6            0 (const uint)
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_shader_subgroup_partitioned
+ERROR: node is still EOpNull!
+0:3  Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
+0:3    Function Parameters: 
+0:3      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:6      'gl_SubgroupSize' ( flat in uint SubgroupSize)
+0:7      'gl_SubgroupInvocationID' ( flat in uint SubgroupInvocationID)
+0:8      subgroupBarrier ( global void)
+0:9      subgroupMemoryBarrier ( global void)
+0:10      subgroupMemoryBarrierBuffer ( global void)
+0:11      subgroupMemoryBarrierImage ( global void)
+0:12      subgroupElect ( global bool)
+0:13      'gl_NumSubgroups' ( temp float)
+0:14      'gl_SubgroupID' ( temp float)
+0:15      Constant:
+0:15        0.000000
+0:17      subgroupAll ( global bool)
+0:17        Constant:
+0:17          true (const bool)
+0:18      subgroupAny ( global bool)
+0:18        Constant:
+0:18          false (const bool)
+0:19      subgroupAllEqual ( global bool)
+0:19        'f4' ( in 4-component vector of float)
+0:21      'gl_SubgroupEqMask' ( flat in 4-component vector of uint SubgroupEqMask)
+0:22      'gl_SubgroupGeMask' ( flat in 4-component vector of uint SubgroupGeMask)
+0:23      'gl_SubgroupGtMask' ( flat in 4-component vector of uint SubgroupGtMask)
+0:24      'gl_SubgroupLeMask' ( flat in 4-component vector of uint SubgroupLeMask)
+0:25      'gl_SubgroupLtMask' ( flat in 4-component vector of uint SubgroupLtMask)
+0:26      subgroupBroadcast ( global 4-component vector of float)
+0:26        'f4' ( in 4-component vector of float)
+0:26        Constant:
+0:26          0 (const uint)
+0:27      subgroupBroadcastFirst ( global 4-component vector of float)
+0:27        'f4' ( in 4-component vector of float)
+0:28      Sequence
+0:28        move second child to first child ( temp 4-component vector of uint)
+0:28          'ballot' ( temp 4-component vector of uint)
+0:28          subgroupBallot ( global 4-component vector of uint)
+0:28            Constant:
+0:28              false (const bool)
+0:29      subgroupInverseBallot ( global bool)
+0:29        Constant:
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:30      subgroupBallotBitExtract ( global bool)
+0:30        'ballot' ( temp 4-component vector of uint)
+0:30        Constant:
+0:30          0 (const uint)
+0:31      subgroupBallotBitCount ( global uint)
+0:31        'ballot' ( temp 4-component vector of uint)
+0:32      subgroupBallotInclusiveBitCount ( global uint)
+0:32        'ballot' ( temp 4-component vector of uint)
+0:33      subgroupBallotExclusiveBitCount ( global uint)
+0:33        'ballot' ( temp 4-component vector of uint)
+0:34      subgroupBallotFindLSB ( global uint)
+0:34        'ballot' ( temp 4-component vector of uint)
+0:35      subgroupBallotFindMSB ( global uint)
+0:35        'ballot' ( temp 4-component vector of uint)
+0:37      subgroupShuffle ( global 4-component vector of float)
+0:37        'f4' ( in 4-component vector of float)
+0:37        Constant:
+0:37          0 (const uint)
+0:38      subgroupShuffleXor ( global 4-component vector of float)
+0:38        'f4' ( in 4-component vector of float)
+0:38        Constant:
+0:38          1 (const uint)
+0:39      subgroupShuffleUp ( global 4-component vector of float)
+0:39        'f4' ( in 4-component vector of float)
+0:39        Constant:
+0:39          1 (const uint)
+0:40      subgroupShuffleDown ( global 4-component vector of float)
+0:40        'f4' ( in 4-component vector of float)
+0:40        Constant:
+0:40          1 (const uint)
+0:42      move second child to first child ( temp 4-component vector of float)
+0:42        'result' ( temp 4-component vector of float)
+0:42        subgroupAdd ( global 4-component vector of float)
+0:42          'f4' ( in 4-component vector of float)
+0:43      subgroupMul ( global 4-component vector of float)
+0:43        'f4' ( in 4-component vector of float)
+0:44      subgroupMin ( global 4-component vector of float)
+0:44        'f4' ( in 4-component vector of float)
+0:45      subgroupMax ( global 4-component vector of float)
+0:45        'f4' ( in 4-component vector of float)
+0:46      subgroupAnd ( global 4-component vector of uint)
+0:46        'ballot' ( temp 4-component vector of uint)
+0:47      subgroupOr ( global 4-component vector of uint)
+0:47        'ballot' ( temp 4-component vector of uint)
+0:48      subgroupXor ( global 4-component vector of uint)
+0:48        'ballot' ( temp 4-component vector of uint)
+0:49      subgroupInclusiveAdd ( global 4-component vector of float)
+0:49        'f4' ( in 4-component vector of float)
+0:50      subgroupInclusiveMul ( global 4-component vector of float)
+0:50        'f4' ( in 4-component vector of float)
+0:51      subgroupInclusiveMin ( global 4-component vector of float)
+0:51        'f4' ( in 4-component vector of float)
+0:52      subgroupInclusiveMax ( global 4-component vector of float)
+0:52        'f4' ( in 4-component vector of float)
+0:53      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:53        'ballot' ( temp 4-component vector of uint)
+0:54      subgroupInclusiveOr ( global 4-component vector of uint)
+0:54        'ballot' ( temp 4-component vector of uint)
+0:55      subgroupInclusiveXor ( global 4-component vector of uint)
+0:55        'ballot' ( temp 4-component vector of uint)
+0:56      subgroupExclusiveAdd ( global 4-component vector of float)
+0:56        'f4' ( in 4-component vector of float)
+0:57      subgroupExclusiveMul ( global 4-component vector of float)
+0:57        'f4' ( in 4-component vector of float)
+0:58      subgroupExclusiveMin ( global 4-component vector of float)
+0:58        'f4' ( in 4-component vector of float)
+0:59      subgroupExclusiveMax ( global 4-component vector of float)
+0:59        'f4' ( in 4-component vector of float)
+0:60      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:60        'ballot' ( temp 4-component vector of uint)
+0:61      subgroupExclusiveOr ( global 4-component vector of uint)
+0:61        'ballot' ( temp 4-component vector of uint)
+0:62      subgroupExclusiveXor ( global 4-component vector of uint)
+0:62        'ballot' ( temp 4-component vector of uint)
+0:64      subgroupClusteredAdd ( global 4-component vector of float)
+0:64        'f4' ( in 4-component vector of float)
+0:64        Constant:
+0:64          2 (const uint)
+0:65      subgroupClusteredMul ( global 4-component vector of float)
+0:65        'f4' ( in 4-component vector of float)
+0:65        Constant:
+0:65          2 (const uint)
+0:66      subgroupClusteredMin ( global 4-component vector of float)
+0:66        'f4' ( in 4-component vector of float)
+0:66        Constant:
+0:66          2 (const uint)
+0:67      subgroupClusteredMax ( global 4-component vector of float)
+0:67        'f4' ( in 4-component vector of float)
+0:67        Constant:
+0:67          2 (const uint)
+0:68      subgroupClusteredAnd ( global 4-component vector of uint)
+0:68        'ballot' ( temp 4-component vector of uint)
+0:68        Constant:
+0:68          2 (const uint)
+0:69      subgroupClusteredOr ( global 4-component vector of uint)
+0:69        'ballot' ( temp 4-component vector of uint)
+0:69        Constant:
+0:69          2 (const uint)
+0:70      subgroupClusteredXor ( global 4-component vector of uint)
+0:70        'ballot' ( temp 4-component vector of uint)
+0:70        Constant:
+0:70          2 (const uint)
+0:72      subgroupQuadBroadcast ( global 4-component vector of float)
+0:72        'f4' ( in 4-component vector of float)
+0:72        Constant:
+0:72          0 (const uint)
+0:73      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:73        'f4' ( in 4-component vector of float)
+0:74      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:74        'f4' ( in 4-component vector of float)
+0:75      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:75        'f4' ( in 4-component vector of float)
+0:77      Sequence
+0:77        move second child to first child ( temp 4-component vector of uint)
+0:77          'parti' ( temp 4-component vector of uint)
+0:77          subgroupPartitionNV ( global 4-component vector of uint)
+0:77            'f4' ( in 4-component vector of float)
+0:78      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:78        'f4' ( in 4-component vector of float)
+0:78        'parti' ( temp 4-component vector of uint)
+0:79      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:79        'f4' ( in 4-component vector of float)
+0:79        'parti' ( temp 4-component vector of uint)
+0:80      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:80        'f4' ( in 4-component vector of float)
+0:80        'parti' ( temp 4-component vector of uint)
+0:81      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:81        'f4' ( in 4-component vector of float)
+0:81        'parti' ( temp 4-component vector of uint)
+0:82      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:82        'ballot' ( temp 4-component vector of uint)
+0:82        'parti' ( temp 4-component vector of uint)
+0:83      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:83        'ballot' ( temp 4-component vector of uint)
+0:83        'parti' ( temp 4-component vector of uint)
+0:84      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:84        'ballot' ( temp 4-component vector of uint)
+0:84        'parti' ( temp 4-component vector of uint)
+0:85      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:85        'f4' ( in 4-component vector of float)
+0:85        'parti' ( temp 4-component vector of uint)
+0:86      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:86        'f4' ( in 4-component vector of float)
+0:86        'parti' ( temp 4-component vector of uint)
+0:87      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:87        'f4' ( in 4-component vector of float)
+0:87        'parti' ( temp 4-component vector of uint)
+0:88      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:88        'f4' ( in 4-component vector of float)
+0:88        'parti' ( temp 4-component vector of uint)
+0:89      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:89        'ballot' ( temp 4-component vector of uint)
+0:89        'parti' ( temp 4-component vector of uint)
+0:90      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:90        'ballot' ( temp 4-component vector of uint)
+0:90        'parti' ( temp 4-component vector of uint)
+0:91      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:91        'ballot' ( temp 4-component vector of uint)
+0:91        'parti' ( temp 4-component vector of uint)
+0:92      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:92        'f4' ( in 4-component vector of float)
+0:92        'parti' ( temp 4-component vector of uint)
+0:93      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:93        'f4' ( in 4-component vector of float)
+0:93        'parti' ( temp 4-component vector of uint)
+0:94      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:94        'f4' ( in 4-component vector of float)
+0:94        'parti' ( temp 4-component vector of uint)
+0:95      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:95        'f4' ( in 4-component vector of float)
+0:95        'parti' ( temp 4-component vector of uint)
+0:96      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:96        'ballot' ( temp 4-component vector of uint)
+0:96        'parti' ( temp 4-component vector of uint)
+0:97      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:97        'ballot' ( temp 4-component vector of uint)
+0:97        'parti' ( temp 4-component vector of uint)
+0:98      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:98        'ballot' ( temp 4-component vector of uint)
+0:98        'parti' ( temp 4-component vector of uint)
+0:100      Branch: Return with expression
+0:100        'result' ( temp 4-component vector of float)
+0:105  Function Definition: main( ( global void)
+0:105    Function Parameters: 
+0:107    Sequence
+0:107      move second child to first child ( temp 4-component vector of uint)
+0:107        'data' (layout( location=0) out 4-component vector of uint)
+0:107        Construct uvec4 ( temp 4-component vector of uint)
+0:107          'gl_SubgroupSize' ( flat in uint SubgroupSize)
+0:107          'gl_SubgroupInvocationID' ( flat in uint SubgroupInvocationID)
+0:107          Constant:
+0:107            0 (const uint)
+0:107          Constant:
+0:107            0 (const uint)
+0:108      subgroupBarrier ( global void)
+0:109      subgroupMemoryBarrier ( global void)
+0:110      subgroupMemoryBarrierBuffer ( global void)
+0:111      subgroupMemoryBarrierImage ( global void)
+0:112      subgroupElect ( global bool)
+0:116  Function Definition: ballot_works(vf4; ( global void)
+0:116    Function Parameters: 
+0:116      'f4' ( in 4-component vector of float)
+0:117    Sequence
+0:117      'gl_SubgroupEqMask' ( flat in 4-component vector of uint SubgroupEqMask)
+0:118      'gl_SubgroupGeMask' ( flat in 4-component vector of uint SubgroupGeMask)
+0:119      'gl_SubgroupGtMask' ( flat in 4-component vector of uint SubgroupGtMask)
+0:120      'gl_SubgroupLeMask' ( flat in 4-component vector of uint SubgroupLeMask)
+0:121      'gl_SubgroupLtMask' ( flat in 4-component vector of uint SubgroupLtMask)
+0:122      subgroupBroadcast ( global 4-component vector of float)
+0:122        'f4' ( in 4-component vector of float)
+0:122        Constant:
+0:122          0 (const uint)
+0:123      subgroupBroadcastFirst ( global 4-component vector of float)
+0:123        'f4' ( in 4-component vector of float)
+0:124      Sequence
+0:124        move second child to first child ( temp 4-component vector of uint)
+0:124          'ballot' ( temp 4-component vector of uint)
+0:124          subgroupBallot ( global 4-component vector of uint)
+0:124            Constant:
+0:124              false (const bool)
+0:125      subgroupInverseBallot ( global bool)
+0:125        Constant:
+0:125          1 (const uint)
+0:125          1 (const uint)
+0:125          1 (const uint)
+0:125          1 (const uint)
+0:126      subgroupBallotBitExtract ( global bool)
+0:126        'ballot' ( temp 4-component vector of uint)
+0:126        Constant:
+0:126          0 (const uint)
+0:127      subgroupBallotBitCount ( global uint)
+0:127        'ballot' ( temp 4-component vector of uint)
+0:128      subgroupBallotInclusiveBitCount ( global uint)
+0:128        'ballot' ( temp 4-component vector of uint)
+0:129      subgroupBallotExclusiveBitCount ( global uint)
+0:129        'ballot' ( temp 4-component vector of uint)
+0:130      subgroupBallotFindLSB ( global uint)
+0:130        'ballot' ( temp 4-component vector of uint)
+0:131      subgroupBallotFindMSB ( global uint)
+0:131        'ballot' ( temp 4-component vector of uint)
+0:135  Function Definition: vote_works(vf4; ( global void)
+0:135    Function Parameters: 
+0:135      'f4' ( in 4-component vector of float)
+0:137    Sequence
+0:137      subgroupAll ( global bool)
+0:137        Constant:
+0:137          true (const bool)
+0:138      subgroupAny ( global bool)
+0:138        Constant:
+0:138          false (const bool)
+0:139      subgroupAllEqual ( global bool)
+0:139        'f4' ( in 4-component vector of float)
+0:144  Function Definition: shuffle_works(vf4; ( global void)
+0:144    Function Parameters: 
+0:144      'f4' ( in 4-component vector of float)
+0:146    Sequence
+0:146      subgroupShuffle ( global 4-component vector of float)
+0:146        'f4' ( in 4-component vector of float)
+0:146        Constant:
+0:146          0 (const uint)
+0:147      subgroupShuffleXor ( global 4-component vector of float)
+0:147        'f4' ( in 4-component vector of float)
+0:147        Constant:
+0:147          1 (const uint)
+0:148      subgroupShuffleUp ( global 4-component vector of float)
+0:148        'f4' ( in 4-component vector of float)
+0:148        Constant:
+0:148          1 (const uint)
+0:149      subgroupShuffleDown ( global 4-component vector of float)
+0:149        'f4' ( in 4-component vector of float)
+0:149        Constant:
+0:149          1 (const uint)
+0:153  Function Definition: arith_works(vf4; ( global void)
+0:153    Function Parameters: 
+0:153      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:156      subgroupAdd ( global 4-component vector of float)
+0:156        'f4' ( in 4-component vector of float)
+0:157      subgroupMul ( global 4-component vector of float)
+0:157        'f4' ( in 4-component vector of float)
+0:158      subgroupMin ( global 4-component vector of float)
+0:158        'f4' ( in 4-component vector of float)
+0:159      subgroupMax ( global 4-component vector of float)
+0:159        'f4' ( in 4-component vector of float)
+0:160      subgroupAnd ( global 4-component vector of uint)
+0:160        'ballot' ( temp 4-component vector of uint)
+0:161      subgroupOr ( global 4-component vector of uint)
+0:161        'ballot' ( temp 4-component vector of uint)
+0:162      subgroupXor ( global 4-component vector of uint)
+0:162        'ballot' ( temp 4-component vector of uint)
+0:163      subgroupInclusiveAdd ( global 4-component vector of float)
+0:163        'f4' ( in 4-component vector of float)
+0:164      subgroupInclusiveMul ( global 4-component vector of float)
+0:164        'f4' ( in 4-component vector of float)
+0:165      subgroupInclusiveMin ( global 4-component vector of float)
+0:165        'f4' ( in 4-component vector of float)
+0:166      subgroupInclusiveMax ( global 4-component vector of float)
+0:166        'f4' ( in 4-component vector of float)
+0:167      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:167        'ballot' ( temp 4-component vector of uint)
+0:168      subgroupInclusiveOr ( global 4-component vector of uint)
+0:168        'ballot' ( temp 4-component vector of uint)
+0:169      subgroupInclusiveXor ( global 4-component vector of uint)
+0:169        'ballot' ( temp 4-component vector of uint)
+0:170      subgroupExclusiveAdd ( global 4-component vector of float)
+0:170        'f4' ( in 4-component vector of float)
+0:171      subgroupExclusiveMul ( global 4-component vector of float)
+0:171        'f4' ( in 4-component vector of float)
+0:172      subgroupExclusiveMin ( global 4-component vector of float)
+0:172        'f4' ( in 4-component vector of float)
+0:173      subgroupExclusiveMax ( global 4-component vector of float)
+0:173        'f4' ( in 4-component vector of float)
+0:174      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:174        'ballot' ( temp 4-component vector of uint)
+0:175      subgroupExclusiveOr ( global 4-component vector of uint)
+0:175        'ballot' ( temp 4-component vector of uint)
+0:176      subgroupExclusiveXor ( global 4-component vector of uint)
+0:176        'ballot' ( temp 4-component vector of uint)
+0:180  Function Definition: clustered_works(vf4; ( global void)
+0:180    Function Parameters: 
+0:180      'f4' ( in 4-component vector of float)
+0:182    Sequence
+0:182      Sequence
+0:182        move second child to first child ( temp 4-component vector of uint)
+0:182          'ballot' ( temp 4-component vector of uint)
+0:182          Constant:
+0:182            85 (const uint)
+0:182            0 (const uint)
+0:182            0 (const uint)
+0:182            0 (const uint)
+0:183      subgroupClusteredAdd ( global 4-component vector of float)
+0:183        'f4' ( in 4-component vector of float)
+0:183        Constant:
+0:183          2 (const uint)
+0:184      subgroupClusteredMul ( global 4-component vector of float)
+0:184        'f4' ( in 4-component vector of float)
+0:184        Constant:
+0:184          2 (const uint)
+0:185      subgroupClusteredMin ( global 4-component vector of float)
+0:185        'f4' ( in 4-component vector of float)
+0:185        Constant:
+0:185          2 (const uint)
+0:186      subgroupClusteredMax ( global 4-component vector of float)
+0:186        'f4' ( in 4-component vector of float)
+0:186        Constant:
+0:186          2 (const uint)
+0:187      subgroupClusteredAnd ( global 4-component vector of uint)
+0:187        'ballot' ( temp 4-component vector of uint)
+0:187        Constant:
+0:187          2 (const uint)
+0:188      subgroupClusteredOr ( global 4-component vector of uint)
+0:188        'ballot' ( temp 4-component vector of uint)
+0:188        Constant:
+0:188          2 (const uint)
+0:189      subgroupClusteredXor ( global 4-component vector of uint)
+0:189        'ballot' ( temp 4-component vector of uint)
+0:189        Constant:
+0:189          2 (const uint)
+0:193  Function Definition: quad_works(vf4; ( global void)
+0:193    Function Parameters: 
+0:193      'f4' ( in 4-component vector of float)
+0:195    Sequence
+0:195      subgroupQuadBroadcast ( global 4-component vector of float)
+0:195        'f4' ( in 4-component vector of float)
+0:195        Constant:
+0:195          0 (const uint)
+0:196      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:196        'f4' ( in 4-component vector of float)
+0:197      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:197        'f4' ( in 4-component vector of float)
+0:198      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:198        'f4' ( in 4-component vector of float)
+0:202  Function Definition: partitioned_works(vf4; ( global void)
+0:202    Function Parameters: 
+0:202      'f4' ( in 4-component vector of float)
+0:204    Sequence
+0:204      Sequence
+0:204        move second child to first child ( temp 4-component vector of uint)
+0:204          'parti' ( temp 4-component vector of uint)
+0:204          subgroupPartitionNV ( global 4-component vector of uint)
+0:204            'f4' ( in 4-component vector of float)
+0:205      Sequence
+0:205        move second child to first child ( temp 4-component vector of uint)
+0:205          'ballot' ( temp 4-component vector of uint)
+0:205          Constant:
+0:205            85 (const uint)
+0:205            0 (const uint)
+0:205            0 (const uint)
+0:205            0 (const uint)
+0:206      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:206        'f4' ( in 4-component vector of float)
+0:206        'parti' ( temp 4-component vector of uint)
+0:207      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:207        'f4' ( in 4-component vector of float)
+0:207        'parti' ( temp 4-component vector of uint)
+0:208      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:208        'f4' ( in 4-component vector of float)
+0:208        'parti' ( temp 4-component vector of uint)
+0:209      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:209        'f4' ( in 4-component vector of float)
+0:209        'parti' ( temp 4-component vector of uint)
+0:210      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:210        'ballot' ( temp 4-component vector of uint)
+0:210        'parti' ( temp 4-component vector of uint)
+0:211      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:211        'ballot' ( temp 4-component vector of uint)
+0:211        'parti' ( temp 4-component vector of uint)
+0:212      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:212        'ballot' ( temp 4-component vector of uint)
+0:212        'parti' ( temp 4-component vector of uint)
+0:213      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:213        'f4' ( in 4-component vector of float)
+0:213        'parti' ( temp 4-component vector of uint)
+0:214      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:214        'f4' ( in 4-component vector of float)
+0:214        'parti' ( temp 4-component vector of uint)
+0:215      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:215        'f4' ( in 4-component vector of float)
+0:215        'parti' ( temp 4-component vector of uint)
+0:216      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:216        'f4' ( in 4-component vector of float)
+0:216        'parti' ( temp 4-component vector of uint)
+0:217      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:217        'ballot' ( temp 4-component vector of uint)
+0:217        'parti' ( temp 4-component vector of uint)
+0:218      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:218        'ballot' ( temp 4-component vector of uint)
+0:218        'parti' ( temp 4-component vector of uint)
+0:219      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:219        'ballot' ( temp 4-component vector of uint)
+0:219        'parti' ( temp 4-component vector of uint)
+0:220      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:220        'f4' ( in 4-component vector of float)
+0:220        'parti' ( temp 4-component vector of uint)
+0:221      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:221        'f4' ( in 4-component vector of float)
+0:221        'parti' ( temp 4-component vector of uint)
+0:222      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:222        'f4' ( in 4-component vector of float)
+0:222        'parti' ( temp 4-component vector of uint)
+0:223      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:223        'f4' ( in 4-component vector of float)
+0:223        'parti' ( temp 4-component vector of uint)
+0:224      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:224        'ballot' ( temp 4-component vector of uint)
+0:224        'parti' ( temp 4-component vector of uint)
+0:225      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:225        'ballot' ( temp 4-component vector of uint)
+0:225        'parti' ( temp 4-component vector of uint)
+0:226      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:226        'ballot' ( temp 4-component vector of uint)
+0:226        'parti' ( temp 4-component vector of uint)
 0:?   Linker Objects
 0:?     'data' (layout( location=0) out 4-component vector of uint)
 
@@ -22,20 +605,33 @@ Linked fragment stage:
 
 
 Shader version: 450
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
 Requested GL_KHR_shader_subgroup_basic
-0:? Sequence
-0:4  Function Definition: main( ( global void)
-0:4    Function Parameters: 
-0:6    Sequence
-0:6      move second child to first child ( temp 4-component vector of uint)
-0:6        'data' (layout( location=0) out 4-component vector of uint)
-0:6        Construct uvec4 ( temp 4-component vector of uint)
-0:6          'gl_SubgroupSize' ( flat in uint unknown built-in variable)
-0:6          'gl_SubgroupInvocationID' ( flat in uint unknown built-in variable)
-0:6          Constant:
-0:6            0 (const uint)
-0:6          Constant:
-0:6            0 (const uint)
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_shader_subgroup_partitioned
+ERROR: node is still EOpNull!
+0:105  Function Definition: main( ( global void)
+0:105    Function Parameters: 
+0:107    Sequence
+0:107      move second child to first child ( temp 4-component vector of uint)
+0:107        'data' (layout( location=0) out 4-component vector of uint)
+0:107        Construct uvec4 ( temp 4-component vector of uint)
+0:107          'gl_SubgroupSize' ( flat in uint SubgroupSize)
+0:107          'gl_SubgroupInvocationID' ( flat in uint SubgroupInvocationID)
+0:107          Constant:
+0:107            0 (const uint)
+0:107          Constant:
+0:107            0 (const uint)
+0:108      subgroupBarrier ( global void)
+0:109      subgroupMemoryBarrier ( global void)
+0:110      subgroupMemoryBarrierBuffer ( global void)
+0:111      subgroupMemoryBarrierImage ( global void)
+0:112      subgroupElect ( global bool)
 0:?   Linker Objects
 0:?     'data' (layout( location=0) out 4-component vector of uint)
 

+ 632 - 36
3rdparty/glslang/Test/baseResults/glsl.450.subgroup.geom.out

@@ -1,28 +1,611 @@
 glsl.450.subgroup.geom
+ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:13: 'gl_NumSubgroups' : undeclared identifier 
+ERROR: 0:14: 'gl_SubgroupID' : undeclared identifier 
+ERROR: 0:15: 'subgroupMemoryBarrierShared' : no matching overloaded function found 
+ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 86 compilation errors.  No code generated.
+
+
 Shader version: 450
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
 Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_shader_subgroup_partitioned
 invocations = -1
 max_vertices = 1
 input primitive = points
 output primitive = points
-0:? Sequence
-0:10  Function Definition: main( ( global void)
-0:10    Function Parameters: 
-0:12    Sequence
-0:12      move second child to first child ( temp 4-component vector of uint)
-0:12        indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
-0:12          result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
-0:12            'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
-0:12            Constant:
-0:12              0 (const uint)
-0:12          'gl_PrimitiveIDIn' ( in int PrimitiveID)
-0:12        Construct uvec4 ( temp 4-component vector of uint)
-0:12          'gl_SubgroupSize' ( in uint unknown built-in variable)
-0:12          'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:12          Constant:
-0:12            0 (const uint)
-0:12          Constant:
-0:12            0 (const uint)
+ERROR: node is still EOpNull!
+0:3  Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
+0:3    Function Parameters: 
+0:3      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:6      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:7      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:8      subgroupBarrier ( global void)
+0:9      subgroupMemoryBarrier ( global void)
+0:10      subgroupMemoryBarrierBuffer ( global void)
+0:11      subgroupMemoryBarrierImage ( global void)
+0:12      subgroupElect ( global bool)
+0:13      'gl_NumSubgroups' ( temp float)
+0:14      'gl_SubgroupID' ( temp float)
+0:15      Constant:
+0:15        0.000000
+0:17      subgroupAll ( global bool)
+0:17        Constant:
+0:17          true (const bool)
+0:18      subgroupAny ( global bool)
+0:18        Constant:
+0:18          false (const bool)
+0:19      subgroupAllEqual ( global bool)
+0:19        'f4' ( in 4-component vector of float)
+0:21      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:22      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:23      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:24      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:25      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:26      subgroupBroadcast ( global 4-component vector of float)
+0:26        'f4' ( in 4-component vector of float)
+0:26        Constant:
+0:26          0 (const uint)
+0:27      subgroupBroadcastFirst ( global 4-component vector of float)
+0:27        'f4' ( in 4-component vector of float)
+0:28      Sequence
+0:28        move second child to first child ( temp 4-component vector of uint)
+0:28          'ballot' ( temp 4-component vector of uint)
+0:28          subgroupBallot ( global 4-component vector of uint)
+0:28            Constant:
+0:28              false (const bool)
+0:29      subgroupInverseBallot ( global bool)
+0:29        Constant:
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:30      subgroupBallotBitExtract ( global bool)
+0:30        'ballot' ( temp 4-component vector of uint)
+0:30        Constant:
+0:30          0 (const uint)
+0:31      subgroupBallotBitCount ( global uint)
+0:31        'ballot' ( temp 4-component vector of uint)
+0:32      subgroupBallotInclusiveBitCount ( global uint)
+0:32        'ballot' ( temp 4-component vector of uint)
+0:33      subgroupBallotExclusiveBitCount ( global uint)
+0:33        'ballot' ( temp 4-component vector of uint)
+0:34      subgroupBallotFindLSB ( global uint)
+0:34        'ballot' ( temp 4-component vector of uint)
+0:35      subgroupBallotFindMSB ( global uint)
+0:35        'ballot' ( temp 4-component vector of uint)
+0:37      subgroupShuffle ( global 4-component vector of float)
+0:37        'f4' ( in 4-component vector of float)
+0:37        Constant:
+0:37          0 (const uint)
+0:38      subgroupShuffleXor ( global 4-component vector of float)
+0:38        'f4' ( in 4-component vector of float)
+0:38        Constant:
+0:38          1 (const uint)
+0:39      subgroupShuffleUp ( global 4-component vector of float)
+0:39        'f4' ( in 4-component vector of float)
+0:39        Constant:
+0:39          1 (const uint)
+0:40      subgroupShuffleDown ( global 4-component vector of float)
+0:40        'f4' ( in 4-component vector of float)
+0:40        Constant:
+0:40          1 (const uint)
+0:42      move second child to first child ( temp 4-component vector of float)
+0:42        'result' ( temp 4-component vector of float)
+0:42        subgroupAdd ( global 4-component vector of float)
+0:42          'f4' ( in 4-component vector of float)
+0:43      subgroupMul ( global 4-component vector of float)
+0:43        'f4' ( in 4-component vector of float)
+0:44      subgroupMin ( global 4-component vector of float)
+0:44        'f4' ( in 4-component vector of float)
+0:45      subgroupMax ( global 4-component vector of float)
+0:45        'f4' ( in 4-component vector of float)
+0:46      subgroupAnd ( global 4-component vector of uint)
+0:46        'ballot' ( temp 4-component vector of uint)
+0:47      subgroupOr ( global 4-component vector of uint)
+0:47        'ballot' ( temp 4-component vector of uint)
+0:48      subgroupXor ( global 4-component vector of uint)
+0:48        'ballot' ( temp 4-component vector of uint)
+0:49      subgroupInclusiveAdd ( global 4-component vector of float)
+0:49        'f4' ( in 4-component vector of float)
+0:50      subgroupInclusiveMul ( global 4-component vector of float)
+0:50        'f4' ( in 4-component vector of float)
+0:51      subgroupInclusiveMin ( global 4-component vector of float)
+0:51        'f4' ( in 4-component vector of float)
+0:52      subgroupInclusiveMax ( global 4-component vector of float)
+0:52        'f4' ( in 4-component vector of float)
+0:53      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:53        'ballot' ( temp 4-component vector of uint)
+0:54      subgroupInclusiveOr ( global 4-component vector of uint)
+0:54        'ballot' ( temp 4-component vector of uint)
+0:55      subgroupInclusiveXor ( global 4-component vector of uint)
+0:55        'ballot' ( temp 4-component vector of uint)
+0:56      subgroupExclusiveAdd ( global 4-component vector of float)
+0:56        'f4' ( in 4-component vector of float)
+0:57      subgroupExclusiveMul ( global 4-component vector of float)
+0:57        'f4' ( in 4-component vector of float)
+0:58      subgroupExclusiveMin ( global 4-component vector of float)
+0:58        'f4' ( in 4-component vector of float)
+0:59      subgroupExclusiveMax ( global 4-component vector of float)
+0:59        'f4' ( in 4-component vector of float)
+0:60      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:60        'ballot' ( temp 4-component vector of uint)
+0:61      subgroupExclusiveOr ( global 4-component vector of uint)
+0:61        'ballot' ( temp 4-component vector of uint)
+0:62      subgroupExclusiveXor ( global 4-component vector of uint)
+0:62        'ballot' ( temp 4-component vector of uint)
+0:64      subgroupClusteredAdd ( global 4-component vector of float)
+0:64        'f4' ( in 4-component vector of float)
+0:64        Constant:
+0:64          2 (const uint)
+0:65      subgroupClusteredMul ( global 4-component vector of float)
+0:65        'f4' ( in 4-component vector of float)
+0:65        Constant:
+0:65          2 (const uint)
+0:66      subgroupClusteredMin ( global 4-component vector of float)
+0:66        'f4' ( in 4-component vector of float)
+0:66        Constant:
+0:66          2 (const uint)
+0:67      subgroupClusteredMax ( global 4-component vector of float)
+0:67        'f4' ( in 4-component vector of float)
+0:67        Constant:
+0:67          2 (const uint)
+0:68      subgroupClusteredAnd ( global 4-component vector of uint)
+0:68        'ballot' ( temp 4-component vector of uint)
+0:68        Constant:
+0:68          2 (const uint)
+0:69      subgroupClusteredOr ( global 4-component vector of uint)
+0:69        'ballot' ( temp 4-component vector of uint)
+0:69        Constant:
+0:69          2 (const uint)
+0:70      subgroupClusteredXor ( global 4-component vector of uint)
+0:70        'ballot' ( temp 4-component vector of uint)
+0:70        Constant:
+0:70          2 (const uint)
+0:72      subgroupQuadBroadcast ( global 4-component vector of float)
+0:72        'f4' ( in 4-component vector of float)
+0:72        Constant:
+0:72          0 (const uint)
+0:73      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:73        'f4' ( in 4-component vector of float)
+0:74      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:74        'f4' ( in 4-component vector of float)
+0:75      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:75        'f4' ( in 4-component vector of float)
+0:77      Sequence
+0:77        move second child to first child ( temp 4-component vector of uint)
+0:77          'parti' ( temp 4-component vector of uint)
+0:77          subgroupPartitionNV ( global 4-component vector of uint)
+0:77            'f4' ( in 4-component vector of float)
+0:78      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:78        'f4' ( in 4-component vector of float)
+0:78        'parti' ( temp 4-component vector of uint)
+0:79      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:79        'f4' ( in 4-component vector of float)
+0:79        'parti' ( temp 4-component vector of uint)
+0:80      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:80        'f4' ( in 4-component vector of float)
+0:80        'parti' ( temp 4-component vector of uint)
+0:81      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:81        'f4' ( in 4-component vector of float)
+0:81        'parti' ( temp 4-component vector of uint)
+0:82      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:82        'ballot' ( temp 4-component vector of uint)
+0:82        'parti' ( temp 4-component vector of uint)
+0:83      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:83        'ballot' ( temp 4-component vector of uint)
+0:83        'parti' ( temp 4-component vector of uint)
+0:84      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:84        'ballot' ( temp 4-component vector of uint)
+0:84        'parti' ( temp 4-component vector of uint)
+0:85      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:85        'f4' ( in 4-component vector of float)
+0:85        'parti' ( temp 4-component vector of uint)
+0:86      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:86        'f4' ( in 4-component vector of float)
+0:86        'parti' ( temp 4-component vector of uint)
+0:87      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:87        'f4' ( in 4-component vector of float)
+0:87        'parti' ( temp 4-component vector of uint)
+0:88      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:88        'f4' ( in 4-component vector of float)
+0:88        'parti' ( temp 4-component vector of uint)
+0:89      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:89        'ballot' ( temp 4-component vector of uint)
+0:89        'parti' ( temp 4-component vector of uint)
+0:90      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:90        'ballot' ( temp 4-component vector of uint)
+0:90        'parti' ( temp 4-component vector of uint)
+0:91      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:91        'ballot' ( temp 4-component vector of uint)
+0:91        'parti' ( temp 4-component vector of uint)
+0:92      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:92        'f4' ( in 4-component vector of float)
+0:92        'parti' ( temp 4-component vector of uint)
+0:93      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:93        'f4' ( in 4-component vector of float)
+0:93        'parti' ( temp 4-component vector of uint)
+0:94      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:94        'f4' ( in 4-component vector of float)
+0:94        'parti' ( temp 4-component vector of uint)
+0:95      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:95        'f4' ( in 4-component vector of float)
+0:95        'parti' ( temp 4-component vector of uint)
+0:96      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:96        'ballot' ( temp 4-component vector of uint)
+0:96        'parti' ( temp 4-component vector of uint)
+0:97      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:97        'ballot' ( temp 4-component vector of uint)
+0:97        'parti' ( temp 4-component vector of uint)
+0:98      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:98        'ballot' ( temp 4-component vector of uint)
+0:98        'parti' ( temp 4-component vector of uint)
+0:100      Branch: Return with expression
+0:100        'result' ( temp 4-component vector of float)
+0:111  Function Definition: main( ( global void)
+0:111    Function Parameters: 
+0:113    Sequence
+0:113      move second child to first child ( temp 4-component vector of uint)
+0:113        indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
+0:113          result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
+0:113            'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
+0:113            Constant:
+0:113              0 (const uint)
+0:113          'gl_PrimitiveIDIn' ( in int PrimitiveID)
+0:113        Construct uvec4 ( temp 4-component vector of uint)
+0:113          'gl_SubgroupSize' ( in uint SubgroupSize)
+0:113          'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:113          Constant:
+0:113            0 (const uint)
+0:113          Constant:
+0:113            0 (const uint)
+0:114      subgroupBarrier ( global void)
+0:115      subgroupMemoryBarrier ( global void)
+0:116      subgroupMemoryBarrierBuffer ( global void)
+0:117      subgroupMemoryBarrierImage ( global void)
+0:118      subgroupElect ( global bool)
+0:122  Function Definition: ballot_works(vf4; ( global void)
+0:122    Function Parameters: 
+0:122      'f4' ( in 4-component vector of float)
+0:123    Sequence
+0:123      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:124      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:125      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:126      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:127      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:128      subgroupBroadcast ( global 4-component vector of float)
+0:128        'f4' ( in 4-component vector of float)
+0:128        Constant:
+0:128          0 (const uint)
+0:129      subgroupBroadcastFirst ( global 4-component vector of float)
+0:129        'f4' ( in 4-component vector of float)
+0:130      Sequence
+0:130        move second child to first child ( temp 4-component vector of uint)
+0:130          'ballot' ( temp 4-component vector of uint)
+0:130          subgroupBallot ( global 4-component vector of uint)
+0:130            Constant:
+0:130              false (const bool)
+0:131      subgroupInverseBallot ( global bool)
+0:131        Constant:
+0:131          1 (const uint)
+0:131          1 (const uint)
+0:131          1 (const uint)
+0:131          1 (const uint)
+0:132      subgroupBallotBitExtract ( global bool)
+0:132        'ballot' ( temp 4-component vector of uint)
+0:132        Constant:
+0:132          0 (const uint)
+0:133      subgroupBallotBitCount ( global uint)
+0:133        'ballot' ( temp 4-component vector of uint)
+0:134      subgroupBallotInclusiveBitCount ( global uint)
+0:134        'ballot' ( temp 4-component vector of uint)
+0:135      subgroupBallotExclusiveBitCount ( global uint)
+0:135        'ballot' ( temp 4-component vector of uint)
+0:136      subgroupBallotFindLSB ( global uint)
+0:136        'ballot' ( temp 4-component vector of uint)
+0:137      subgroupBallotFindMSB ( global uint)
+0:137        'ballot' ( temp 4-component vector of uint)
+0:141  Function Definition: vote_works(vf4; ( global void)
+0:141    Function Parameters: 
+0:141      'f4' ( in 4-component vector of float)
+0:143    Sequence
+0:143      subgroupAll ( global bool)
+0:143        Constant:
+0:143          true (const bool)
+0:144      subgroupAny ( global bool)
+0:144        Constant:
+0:144          false (const bool)
+0:145      subgroupAllEqual ( global bool)
+0:145        'f4' ( in 4-component vector of float)
+0:150  Function Definition: shuffle_works(vf4; ( global void)
+0:150    Function Parameters: 
+0:150      'f4' ( in 4-component vector of float)
+0:152    Sequence
+0:152      subgroupShuffle ( global 4-component vector of float)
+0:152        'f4' ( in 4-component vector of float)
+0:152        Constant:
+0:152          0 (const uint)
+0:153      subgroupShuffleXor ( global 4-component vector of float)
+0:153        'f4' ( in 4-component vector of float)
+0:153        Constant:
+0:153          1 (const uint)
+0:154      subgroupShuffleUp ( global 4-component vector of float)
+0:154        'f4' ( in 4-component vector of float)
+0:154        Constant:
+0:154          1 (const uint)
+0:155      subgroupShuffleDown ( global 4-component vector of float)
+0:155        'f4' ( in 4-component vector of float)
+0:155        Constant:
+0:155          1 (const uint)
+0:159  Function Definition: arith_works(vf4; ( global void)
+0:159    Function Parameters: 
+0:159      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:162      subgroupAdd ( global 4-component vector of float)
+0:162        'f4' ( in 4-component vector of float)
+0:163      subgroupMul ( global 4-component vector of float)
+0:163        'f4' ( in 4-component vector of float)
+0:164      subgroupMin ( global 4-component vector of float)
+0:164        'f4' ( in 4-component vector of float)
+0:165      subgroupMax ( global 4-component vector of float)
+0:165        'f4' ( in 4-component vector of float)
+0:166      subgroupAnd ( global 4-component vector of uint)
+0:166        'ballot' ( temp 4-component vector of uint)
+0:167      subgroupOr ( global 4-component vector of uint)
+0:167        'ballot' ( temp 4-component vector of uint)
+0:168      subgroupXor ( global 4-component vector of uint)
+0:168        'ballot' ( temp 4-component vector of uint)
+0:169      subgroupInclusiveAdd ( global 4-component vector of float)
+0:169        'f4' ( in 4-component vector of float)
+0:170      subgroupInclusiveMul ( global 4-component vector of float)
+0:170        'f4' ( in 4-component vector of float)
+0:171      subgroupInclusiveMin ( global 4-component vector of float)
+0:171        'f4' ( in 4-component vector of float)
+0:172      subgroupInclusiveMax ( global 4-component vector of float)
+0:172        'f4' ( in 4-component vector of float)
+0:173      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:173        'ballot' ( temp 4-component vector of uint)
+0:174      subgroupInclusiveOr ( global 4-component vector of uint)
+0:174        'ballot' ( temp 4-component vector of uint)
+0:175      subgroupInclusiveXor ( global 4-component vector of uint)
+0:175        'ballot' ( temp 4-component vector of uint)
+0:176      subgroupExclusiveAdd ( global 4-component vector of float)
+0:176        'f4' ( in 4-component vector of float)
+0:177      subgroupExclusiveMul ( global 4-component vector of float)
+0:177        'f4' ( in 4-component vector of float)
+0:178      subgroupExclusiveMin ( global 4-component vector of float)
+0:178        'f4' ( in 4-component vector of float)
+0:179      subgroupExclusiveMax ( global 4-component vector of float)
+0:179        'f4' ( in 4-component vector of float)
+0:180      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:180        'ballot' ( temp 4-component vector of uint)
+0:181      subgroupExclusiveOr ( global 4-component vector of uint)
+0:181        'ballot' ( temp 4-component vector of uint)
+0:182      subgroupExclusiveXor ( global 4-component vector of uint)
+0:182        'ballot' ( temp 4-component vector of uint)
+0:186  Function Definition: clustered_works(vf4; ( global void)
+0:186    Function Parameters: 
+0:186      'f4' ( in 4-component vector of float)
+0:188    Sequence
+0:188      Sequence
+0:188        move second child to first child ( temp 4-component vector of uint)
+0:188          'ballot' ( temp 4-component vector of uint)
+0:188          Constant:
+0:188            85 (const uint)
+0:188            0 (const uint)
+0:188            0 (const uint)
+0:188            0 (const uint)
+0:189      subgroupClusteredAdd ( global 4-component vector of float)
+0:189        'f4' ( in 4-component vector of float)
+0:189        Constant:
+0:189          2 (const uint)
+0:190      subgroupClusteredMul ( global 4-component vector of float)
+0:190        'f4' ( in 4-component vector of float)
+0:190        Constant:
+0:190          2 (const uint)
+0:191      subgroupClusteredMin ( global 4-component vector of float)
+0:191        'f4' ( in 4-component vector of float)
+0:191        Constant:
+0:191          2 (const uint)
+0:192      subgroupClusteredMax ( global 4-component vector of float)
+0:192        'f4' ( in 4-component vector of float)
+0:192        Constant:
+0:192          2 (const uint)
+0:193      subgroupClusteredAnd ( global 4-component vector of uint)
+0:193        'ballot' ( temp 4-component vector of uint)
+0:193        Constant:
+0:193          2 (const uint)
+0:194      subgroupClusteredOr ( global 4-component vector of uint)
+0:194        'ballot' ( temp 4-component vector of uint)
+0:194        Constant:
+0:194          2 (const uint)
+0:195      subgroupClusteredXor ( global 4-component vector of uint)
+0:195        'ballot' ( temp 4-component vector of uint)
+0:195        Constant:
+0:195          2 (const uint)
+0:199  Function Definition: quad_works(vf4; ( global void)
+0:199    Function Parameters: 
+0:199      'f4' ( in 4-component vector of float)
+0:201    Sequence
+0:201      subgroupQuadBroadcast ( global 4-component vector of float)
+0:201        'f4' ( in 4-component vector of float)
+0:201        Constant:
+0:201          0 (const uint)
+0:202      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:202        'f4' ( in 4-component vector of float)
+0:203      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:203        'f4' ( in 4-component vector of float)
+0:204      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:204        'f4' ( in 4-component vector of float)
+0:208  Function Definition: partitioned_works(vf4; ( global void)
+0:208    Function Parameters: 
+0:208      'f4' ( in 4-component vector of float)
+0:210    Sequence
+0:210      Sequence
+0:210        move second child to first child ( temp 4-component vector of uint)
+0:210          'parti' ( temp 4-component vector of uint)
+0:210          subgroupPartitionNV ( global 4-component vector of uint)
+0:210            'f4' ( in 4-component vector of float)
+0:211      Sequence
+0:211        move second child to first child ( temp 4-component vector of uint)
+0:211          'ballot' ( temp 4-component vector of uint)
+0:211          Constant:
+0:211            85 (const uint)
+0:211            0 (const uint)
+0:211            0 (const uint)
+0:211            0 (const uint)
+0:212      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:212        'f4' ( in 4-component vector of float)
+0:212        'parti' ( temp 4-component vector of uint)
+0:213      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:213        'f4' ( in 4-component vector of float)
+0:213        'parti' ( temp 4-component vector of uint)
+0:214      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:214        'f4' ( in 4-component vector of float)
+0:214        'parti' ( temp 4-component vector of uint)
+0:215      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:215        'f4' ( in 4-component vector of float)
+0:215        'parti' ( temp 4-component vector of uint)
+0:216      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:216        'ballot' ( temp 4-component vector of uint)
+0:216        'parti' ( temp 4-component vector of uint)
+0:217      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:217        'ballot' ( temp 4-component vector of uint)
+0:217        'parti' ( temp 4-component vector of uint)
+0:218      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:218        'ballot' ( temp 4-component vector of uint)
+0:218        'parti' ( temp 4-component vector of uint)
+0:219      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:219        'f4' ( in 4-component vector of float)
+0:219        'parti' ( temp 4-component vector of uint)
+0:220      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:220        'f4' ( in 4-component vector of float)
+0:220        'parti' ( temp 4-component vector of uint)
+0:221      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:221        'f4' ( in 4-component vector of float)
+0:221        'parti' ( temp 4-component vector of uint)
+0:222      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:222        'f4' ( in 4-component vector of float)
+0:222        'parti' ( temp 4-component vector of uint)
+0:223      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:223        'ballot' ( temp 4-component vector of uint)
+0:223        'parti' ( temp 4-component vector of uint)
+0:224      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:224        'ballot' ( temp 4-component vector of uint)
+0:224        'parti' ( temp 4-component vector of uint)
+0:225      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:225        'ballot' ( temp 4-component vector of uint)
+0:225        'parti' ( temp 4-component vector of uint)
+0:226      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:226        'f4' ( in 4-component vector of float)
+0:226        'parti' ( temp 4-component vector of uint)
+0:227      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:227        'f4' ( in 4-component vector of float)
+0:227        'parti' ( temp 4-component vector of uint)
+0:228      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:228        'f4' ( in 4-component vector of float)
+0:228        'parti' ( temp 4-component vector of uint)
+0:229      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:229        'f4' ( in 4-component vector of float)
+0:229        'parti' ( temp 4-component vector of uint)
+0:230      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:230        'ballot' ( temp 4-component vector of uint)
+0:230        'parti' ( temp 4-component vector of uint)
+0:231      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:231        'ballot' ( temp 4-component vector of uint)
+0:231        'parti' ( temp 4-component vector of uint)
+0:232      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:232        'ballot' ( temp 4-component vector of uint)
+0:232        'parti' ( temp 4-component vector of uint)
 0:?   Linker Objects
 0:?     'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
 
@@ -31,29 +614,42 @@ Linked geometry stage:
 
 
 Shader version: 450
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
 Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_shader_subgroup_partitioned
 invocations = 1
 max_vertices = 1
 input primitive = points
 output primitive = points
-0:? Sequence
-0:10  Function Definition: main( ( global void)
-0:10    Function Parameters: 
-0:12    Sequence
-0:12      move second child to first child ( temp 4-component vector of uint)
-0:12        indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
-0:12          result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
-0:12            'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
-0:12            Constant:
-0:12              0 (const uint)
-0:12          'gl_PrimitiveIDIn' ( in int PrimitiveID)
-0:12        Construct uvec4 ( temp 4-component vector of uint)
-0:12          'gl_SubgroupSize' ( in uint unknown built-in variable)
-0:12          'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:12          Constant:
-0:12            0 (const uint)
-0:12          Constant:
-0:12            0 (const uint)
+ERROR: node is still EOpNull!
+0:111  Function Definition: main( ( global void)
+0:111    Function Parameters: 
+0:113    Sequence
+0:113      move second child to first child ( temp 4-component vector of uint)
+0:113        indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
+0:113          result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
+0:113            'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
+0:113            Constant:
+0:113              0 (const uint)
+0:113          'gl_PrimitiveIDIn' ( in int PrimitiveID)
+0:113        Construct uvec4 ( temp 4-component vector of uint)
+0:113          'gl_SubgroupSize' ( in uint SubgroupSize)
+0:113          'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:113          Constant:
+0:113            0 (const uint)
+0:113          Constant:
+0:113            0 (const uint)
+0:114      subgroupBarrier ( global void)
+0:115      subgroupMemoryBarrier ( global void)
+0:116      subgroupMemoryBarrierBuffer ( global void)
+0:117      subgroupMemoryBarrierImage ( global void)
+0:118      subgroupElect ( global bool)
 0:?   Linker Objects
 0:?     'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
 

+ 632 - 36
3rdparty/glslang/Test/baseResults/glsl.450.subgroup.tesc.out

@@ -1,25 +1,608 @@
 glsl.450.subgroup.tesc
+ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:13: 'gl_NumSubgroups' : undeclared identifier 
+ERROR: 0:14: 'gl_SubgroupID' : undeclared identifier 
+ERROR: 0:15: 'subgroupMemoryBarrierShared' : no matching overloaded function found 
+ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 86 compilation errors.  No code generated.
+
+
 Shader version: 450
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
 Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_shader_subgroup_partitioned
 vertices = 1
-0:? Sequence
-0:9  Function Definition: main( ( global void)
-0:9    Function Parameters: 
-0:11    Sequence
-0:11      move second child to first child ( temp 4-component vector of uint)
-0:11        indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
-0:11          result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
-0:11            'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
-0:11            Constant:
-0:11              0 (const uint)
-0:11          'gl_PrimitiveID' ( in int PrimitiveID)
-0:11        Construct uvec4 ( temp 4-component vector of uint)
-0:11          'gl_SubgroupSize' ( in uint unknown built-in variable)
-0:11          'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:11          Constant:
-0:11            0 (const uint)
-0:11          Constant:
-0:11            0 (const uint)
+ERROR: node is still EOpNull!
+0:3  Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
+0:3    Function Parameters: 
+0:3      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:6      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:7      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:8      subgroupBarrier ( global void)
+0:9      subgroupMemoryBarrier ( global void)
+0:10      subgroupMemoryBarrierBuffer ( global void)
+0:11      subgroupMemoryBarrierImage ( global void)
+0:12      subgroupElect ( global bool)
+0:13      'gl_NumSubgroups' ( temp float)
+0:14      'gl_SubgroupID' ( temp float)
+0:15      Constant:
+0:15        0.000000
+0:17      subgroupAll ( global bool)
+0:17        Constant:
+0:17          true (const bool)
+0:18      subgroupAny ( global bool)
+0:18        Constant:
+0:18          false (const bool)
+0:19      subgroupAllEqual ( global bool)
+0:19        'f4' ( in 4-component vector of float)
+0:21      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:22      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:23      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:24      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:25      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:26      subgroupBroadcast ( global 4-component vector of float)
+0:26        'f4' ( in 4-component vector of float)
+0:26        Constant:
+0:26          0 (const uint)
+0:27      subgroupBroadcastFirst ( global 4-component vector of float)
+0:27        'f4' ( in 4-component vector of float)
+0:28      Sequence
+0:28        move second child to first child ( temp 4-component vector of uint)
+0:28          'ballot' ( temp 4-component vector of uint)
+0:28          subgroupBallot ( global 4-component vector of uint)
+0:28            Constant:
+0:28              false (const bool)
+0:29      subgroupInverseBallot ( global bool)
+0:29        Constant:
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:30      subgroupBallotBitExtract ( global bool)
+0:30        'ballot' ( temp 4-component vector of uint)
+0:30        Constant:
+0:30          0 (const uint)
+0:31      subgroupBallotBitCount ( global uint)
+0:31        'ballot' ( temp 4-component vector of uint)
+0:32      subgroupBallotInclusiveBitCount ( global uint)
+0:32        'ballot' ( temp 4-component vector of uint)
+0:33      subgroupBallotExclusiveBitCount ( global uint)
+0:33        'ballot' ( temp 4-component vector of uint)
+0:34      subgroupBallotFindLSB ( global uint)
+0:34        'ballot' ( temp 4-component vector of uint)
+0:35      subgroupBallotFindMSB ( global uint)
+0:35        'ballot' ( temp 4-component vector of uint)
+0:37      subgroupShuffle ( global 4-component vector of float)
+0:37        'f4' ( in 4-component vector of float)
+0:37        Constant:
+0:37          0 (const uint)
+0:38      subgroupShuffleXor ( global 4-component vector of float)
+0:38        'f4' ( in 4-component vector of float)
+0:38        Constant:
+0:38          1 (const uint)
+0:39      subgroupShuffleUp ( global 4-component vector of float)
+0:39        'f4' ( in 4-component vector of float)
+0:39        Constant:
+0:39          1 (const uint)
+0:40      subgroupShuffleDown ( global 4-component vector of float)
+0:40        'f4' ( in 4-component vector of float)
+0:40        Constant:
+0:40          1 (const uint)
+0:42      move second child to first child ( temp 4-component vector of float)
+0:42        'result' ( temp 4-component vector of float)
+0:42        subgroupAdd ( global 4-component vector of float)
+0:42          'f4' ( in 4-component vector of float)
+0:43      subgroupMul ( global 4-component vector of float)
+0:43        'f4' ( in 4-component vector of float)
+0:44      subgroupMin ( global 4-component vector of float)
+0:44        'f4' ( in 4-component vector of float)
+0:45      subgroupMax ( global 4-component vector of float)
+0:45        'f4' ( in 4-component vector of float)
+0:46      subgroupAnd ( global 4-component vector of uint)
+0:46        'ballot' ( temp 4-component vector of uint)
+0:47      subgroupOr ( global 4-component vector of uint)
+0:47        'ballot' ( temp 4-component vector of uint)
+0:48      subgroupXor ( global 4-component vector of uint)
+0:48        'ballot' ( temp 4-component vector of uint)
+0:49      subgroupInclusiveAdd ( global 4-component vector of float)
+0:49        'f4' ( in 4-component vector of float)
+0:50      subgroupInclusiveMul ( global 4-component vector of float)
+0:50        'f4' ( in 4-component vector of float)
+0:51      subgroupInclusiveMin ( global 4-component vector of float)
+0:51        'f4' ( in 4-component vector of float)
+0:52      subgroupInclusiveMax ( global 4-component vector of float)
+0:52        'f4' ( in 4-component vector of float)
+0:53      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:53        'ballot' ( temp 4-component vector of uint)
+0:54      subgroupInclusiveOr ( global 4-component vector of uint)
+0:54        'ballot' ( temp 4-component vector of uint)
+0:55      subgroupInclusiveXor ( global 4-component vector of uint)
+0:55        'ballot' ( temp 4-component vector of uint)
+0:56      subgroupExclusiveAdd ( global 4-component vector of float)
+0:56        'f4' ( in 4-component vector of float)
+0:57      subgroupExclusiveMul ( global 4-component vector of float)
+0:57        'f4' ( in 4-component vector of float)
+0:58      subgroupExclusiveMin ( global 4-component vector of float)
+0:58        'f4' ( in 4-component vector of float)
+0:59      subgroupExclusiveMax ( global 4-component vector of float)
+0:59        'f4' ( in 4-component vector of float)
+0:60      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:60        'ballot' ( temp 4-component vector of uint)
+0:61      subgroupExclusiveOr ( global 4-component vector of uint)
+0:61        'ballot' ( temp 4-component vector of uint)
+0:62      subgroupExclusiveXor ( global 4-component vector of uint)
+0:62        'ballot' ( temp 4-component vector of uint)
+0:64      subgroupClusteredAdd ( global 4-component vector of float)
+0:64        'f4' ( in 4-component vector of float)
+0:64        Constant:
+0:64          2 (const uint)
+0:65      subgroupClusteredMul ( global 4-component vector of float)
+0:65        'f4' ( in 4-component vector of float)
+0:65        Constant:
+0:65          2 (const uint)
+0:66      subgroupClusteredMin ( global 4-component vector of float)
+0:66        'f4' ( in 4-component vector of float)
+0:66        Constant:
+0:66          2 (const uint)
+0:67      subgroupClusteredMax ( global 4-component vector of float)
+0:67        'f4' ( in 4-component vector of float)
+0:67        Constant:
+0:67          2 (const uint)
+0:68      subgroupClusteredAnd ( global 4-component vector of uint)
+0:68        'ballot' ( temp 4-component vector of uint)
+0:68        Constant:
+0:68          2 (const uint)
+0:69      subgroupClusteredOr ( global 4-component vector of uint)
+0:69        'ballot' ( temp 4-component vector of uint)
+0:69        Constant:
+0:69          2 (const uint)
+0:70      subgroupClusteredXor ( global 4-component vector of uint)
+0:70        'ballot' ( temp 4-component vector of uint)
+0:70        Constant:
+0:70          2 (const uint)
+0:72      subgroupQuadBroadcast ( global 4-component vector of float)
+0:72        'f4' ( in 4-component vector of float)
+0:72        Constant:
+0:72          0 (const uint)
+0:73      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:73        'f4' ( in 4-component vector of float)
+0:74      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:74        'f4' ( in 4-component vector of float)
+0:75      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:75        'f4' ( in 4-component vector of float)
+0:77      Sequence
+0:77        move second child to first child ( temp 4-component vector of uint)
+0:77          'parti' ( temp 4-component vector of uint)
+0:77          subgroupPartitionNV ( global 4-component vector of uint)
+0:77            'f4' ( in 4-component vector of float)
+0:78      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:78        'f4' ( in 4-component vector of float)
+0:78        'parti' ( temp 4-component vector of uint)
+0:79      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:79        'f4' ( in 4-component vector of float)
+0:79        'parti' ( temp 4-component vector of uint)
+0:80      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:80        'f4' ( in 4-component vector of float)
+0:80        'parti' ( temp 4-component vector of uint)
+0:81      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:81        'f4' ( in 4-component vector of float)
+0:81        'parti' ( temp 4-component vector of uint)
+0:82      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:82        'ballot' ( temp 4-component vector of uint)
+0:82        'parti' ( temp 4-component vector of uint)
+0:83      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:83        'ballot' ( temp 4-component vector of uint)
+0:83        'parti' ( temp 4-component vector of uint)
+0:84      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:84        'ballot' ( temp 4-component vector of uint)
+0:84        'parti' ( temp 4-component vector of uint)
+0:85      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:85        'f4' ( in 4-component vector of float)
+0:85        'parti' ( temp 4-component vector of uint)
+0:86      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:86        'f4' ( in 4-component vector of float)
+0:86        'parti' ( temp 4-component vector of uint)
+0:87      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:87        'f4' ( in 4-component vector of float)
+0:87        'parti' ( temp 4-component vector of uint)
+0:88      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:88        'f4' ( in 4-component vector of float)
+0:88        'parti' ( temp 4-component vector of uint)
+0:89      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:89        'ballot' ( temp 4-component vector of uint)
+0:89        'parti' ( temp 4-component vector of uint)
+0:90      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:90        'ballot' ( temp 4-component vector of uint)
+0:90        'parti' ( temp 4-component vector of uint)
+0:91      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:91        'ballot' ( temp 4-component vector of uint)
+0:91        'parti' ( temp 4-component vector of uint)
+0:92      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:92        'f4' ( in 4-component vector of float)
+0:92        'parti' ( temp 4-component vector of uint)
+0:93      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:93        'f4' ( in 4-component vector of float)
+0:93        'parti' ( temp 4-component vector of uint)
+0:94      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:94        'f4' ( in 4-component vector of float)
+0:94        'parti' ( temp 4-component vector of uint)
+0:95      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:95        'f4' ( in 4-component vector of float)
+0:95        'parti' ( temp 4-component vector of uint)
+0:96      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:96        'ballot' ( temp 4-component vector of uint)
+0:96        'parti' ( temp 4-component vector of uint)
+0:97      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:97        'ballot' ( temp 4-component vector of uint)
+0:97        'parti' ( temp 4-component vector of uint)
+0:98      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:98        'ballot' ( temp 4-component vector of uint)
+0:98        'parti' ( temp 4-component vector of uint)
+0:100      Branch: Return with expression
+0:100        'result' ( temp 4-component vector of float)
+0:110  Function Definition: main( ( global void)
+0:110    Function Parameters: 
+0:112    Sequence
+0:112      move second child to first child ( temp 4-component vector of uint)
+0:112        indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
+0:112          result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
+0:112            'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
+0:112            Constant:
+0:112              0 (const uint)
+0:112          'gl_PrimitiveID' ( in int PrimitiveID)
+0:112        Construct uvec4 ( temp 4-component vector of uint)
+0:112          'gl_SubgroupSize' ( in uint SubgroupSize)
+0:112          'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:112          Constant:
+0:112            0 (const uint)
+0:112          Constant:
+0:112            0 (const uint)
+0:113      subgroupBarrier ( global void)
+0:114      subgroupMemoryBarrier ( global void)
+0:115      subgroupMemoryBarrierBuffer ( global void)
+0:116      subgroupMemoryBarrierImage ( global void)
+0:117      subgroupElect ( global bool)
+0:121  Function Definition: ballot_works(vf4; ( global void)
+0:121    Function Parameters: 
+0:121      'f4' ( in 4-component vector of float)
+0:122    Sequence
+0:122      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:123      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:124      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:125      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:126      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:127      subgroupBroadcast ( global 4-component vector of float)
+0:127        'f4' ( in 4-component vector of float)
+0:127        Constant:
+0:127          0 (const uint)
+0:128      subgroupBroadcastFirst ( global 4-component vector of float)
+0:128        'f4' ( in 4-component vector of float)
+0:129      Sequence
+0:129        move second child to first child ( temp 4-component vector of uint)
+0:129          'ballot' ( temp 4-component vector of uint)
+0:129          subgroupBallot ( global 4-component vector of uint)
+0:129            Constant:
+0:129              false (const bool)
+0:130      subgroupInverseBallot ( global bool)
+0:130        Constant:
+0:130          1 (const uint)
+0:130          1 (const uint)
+0:130          1 (const uint)
+0:130          1 (const uint)
+0:131      subgroupBallotBitExtract ( global bool)
+0:131        'ballot' ( temp 4-component vector of uint)
+0:131        Constant:
+0:131          0 (const uint)
+0:132      subgroupBallotBitCount ( global uint)
+0:132        'ballot' ( temp 4-component vector of uint)
+0:133      subgroupBallotInclusiveBitCount ( global uint)
+0:133        'ballot' ( temp 4-component vector of uint)
+0:134      subgroupBallotExclusiveBitCount ( global uint)
+0:134        'ballot' ( temp 4-component vector of uint)
+0:135      subgroupBallotFindLSB ( global uint)
+0:135        'ballot' ( temp 4-component vector of uint)
+0:136      subgroupBallotFindMSB ( global uint)
+0:136        'ballot' ( temp 4-component vector of uint)
+0:140  Function Definition: vote_works(vf4; ( global void)
+0:140    Function Parameters: 
+0:140      'f4' ( in 4-component vector of float)
+0:142    Sequence
+0:142      subgroupAll ( global bool)
+0:142        Constant:
+0:142          true (const bool)
+0:143      subgroupAny ( global bool)
+0:143        Constant:
+0:143          false (const bool)
+0:144      subgroupAllEqual ( global bool)
+0:144        'f4' ( in 4-component vector of float)
+0:149  Function Definition: shuffle_works(vf4; ( global void)
+0:149    Function Parameters: 
+0:149      'f4' ( in 4-component vector of float)
+0:151    Sequence
+0:151      subgroupShuffle ( global 4-component vector of float)
+0:151        'f4' ( in 4-component vector of float)
+0:151        Constant:
+0:151          0 (const uint)
+0:152      subgroupShuffleXor ( global 4-component vector of float)
+0:152        'f4' ( in 4-component vector of float)
+0:152        Constant:
+0:152          1 (const uint)
+0:153      subgroupShuffleUp ( global 4-component vector of float)
+0:153        'f4' ( in 4-component vector of float)
+0:153        Constant:
+0:153          1 (const uint)
+0:154      subgroupShuffleDown ( global 4-component vector of float)
+0:154        'f4' ( in 4-component vector of float)
+0:154        Constant:
+0:154          1 (const uint)
+0:158  Function Definition: arith_works(vf4; ( global void)
+0:158    Function Parameters: 
+0:158      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:161      subgroupAdd ( global 4-component vector of float)
+0:161        'f4' ( in 4-component vector of float)
+0:162      subgroupMul ( global 4-component vector of float)
+0:162        'f4' ( in 4-component vector of float)
+0:163      subgroupMin ( global 4-component vector of float)
+0:163        'f4' ( in 4-component vector of float)
+0:164      subgroupMax ( global 4-component vector of float)
+0:164        'f4' ( in 4-component vector of float)
+0:165      subgroupAnd ( global 4-component vector of uint)
+0:165        'ballot' ( temp 4-component vector of uint)
+0:166      subgroupOr ( global 4-component vector of uint)
+0:166        'ballot' ( temp 4-component vector of uint)
+0:167      subgroupXor ( global 4-component vector of uint)
+0:167        'ballot' ( temp 4-component vector of uint)
+0:168      subgroupInclusiveAdd ( global 4-component vector of float)
+0:168        'f4' ( in 4-component vector of float)
+0:169      subgroupInclusiveMul ( global 4-component vector of float)
+0:169        'f4' ( in 4-component vector of float)
+0:170      subgroupInclusiveMin ( global 4-component vector of float)
+0:170        'f4' ( in 4-component vector of float)
+0:171      subgroupInclusiveMax ( global 4-component vector of float)
+0:171        'f4' ( in 4-component vector of float)
+0:172      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:172        'ballot' ( temp 4-component vector of uint)
+0:173      subgroupInclusiveOr ( global 4-component vector of uint)
+0:173        'ballot' ( temp 4-component vector of uint)
+0:174      subgroupInclusiveXor ( global 4-component vector of uint)
+0:174        'ballot' ( temp 4-component vector of uint)
+0:175      subgroupExclusiveAdd ( global 4-component vector of float)
+0:175        'f4' ( in 4-component vector of float)
+0:176      subgroupExclusiveMul ( global 4-component vector of float)
+0:176        'f4' ( in 4-component vector of float)
+0:177      subgroupExclusiveMin ( global 4-component vector of float)
+0:177        'f4' ( in 4-component vector of float)
+0:178      subgroupExclusiveMax ( global 4-component vector of float)
+0:178        'f4' ( in 4-component vector of float)
+0:179      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:179        'ballot' ( temp 4-component vector of uint)
+0:180      subgroupExclusiveOr ( global 4-component vector of uint)
+0:180        'ballot' ( temp 4-component vector of uint)
+0:181      subgroupExclusiveXor ( global 4-component vector of uint)
+0:181        'ballot' ( temp 4-component vector of uint)
+0:185  Function Definition: clustered_works(vf4; ( global void)
+0:185    Function Parameters: 
+0:185      'f4' ( in 4-component vector of float)
+0:187    Sequence
+0:187      Sequence
+0:187        move second child to first child ( temp 4-component vector of uint)
+0:187          'ballot' ( temp 4-component vector of uint)
+0:187          Constant:
+0:187            85 (const uint)
+0:187            0 (const uint)
+0:187            0 (const uint)
+0:187            0 (const uint)
+0:188      subgroupClusteredAdd ( global 4-component vector of float)
+0:188        'f4' ( in 4-component vector of float)
+0:188        Constant:
+0:188          2 (const uint)
+0:189      subgroupClusteredMul ( global 4-component vector of float)
+0:189        'f4' ( in 4-component vector of float)
+0:189        Constant:
+0:189          2 (const uint)
+0:190      subgroupClusteredMin ( global 4-component vector of float)
+0:190        'f4' ( in 4-component vector of float)
+0:190        Constant:
+0:190          2 (const uint)
+0:191      subgroupClusteredMax ( global 4-component vector of float)
+0:191        'f4' ( in 4-component vector of float)
+0:191        Constant:
+0:191          2 (const uint)
+0:192      subgroupClusteredAnd ( global 4-component vector of uint)
+0:192        'ballot' ( temp 4-component vector of uint)
+0:192        Constant:
+0:192          2 (const uint)
+0:193      subgroupClusteredOr ( global 4-component vector of uint)
+0:193        'ballot' ( temp 4-component vector of uint)
+0:193        Constant:
+0:193          2 (const uint)
+0:194      subgroupClusteredXor ( global 4-component vector of uint)
+0:194        'ballot' ( temp 4-component vector of uint)
+0:194        Constant:
+0:194          2 (const uint)
+0:198  Function Definition: quad_works(vf4; ( global void)
+0:198    Function Parameters: 
+0:198      'f4' ( in 4-component vector of float)
+0:200    Sequence
+0:200      subgroupQuadBroadcast ( global 4-component vector of float)
+0:200        'f4' ( in 4-component vector of float)
+0:200        Constant:
+0:200          0 (const uint)
+0:201      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:201        'f4' ( in 4-component vector of float)
+0:202      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:202        'f4' ( in 4-component vector of float)
+0:203      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:203        'f4' ( in 4-component vector of float)
+0:207  Function Definition: partitioned_works(vf4; ( global void)
+0:207    Function Parameters: 
+0:207      'f4' ( in 4-component vector of float)
+0:209    Sequence
+0:209      Sequence
+0:209        move second child to first child ( temp 4-component vector of uint)
+0:209          'parti' ( temp 4-component vector of uint)
+0:209          subgroupPartitionNV ( global 4-component vector of uint)
+0:209            'f4' ( in 4-component vector of float)
+0:210      Sequence
+0:210        move second child to first child ( temp 4-component vector of uint)
+0:210          'ballot' ( temp 4-component vector of uint)
+0:210          Constant:
+0:210            85 (const uint)
+0:210            0 (const uint)
+0:210            0 (const uint)
+0:210            0 (const uint)
+0:211      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:211        'f4' ( in 4-component vector of float)
+0:211        'parti' ( temp 4-component vector of uint)
+0:212      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:212        'f4' ( in 4-component vector of float)
+0:212        'parti' ( temp 4-component vector of uint)
+0:213      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:213        'f4' ( in 4-component vector of float)
+0:213        'parti' ( temp 4-component vector of uint)
+0:214      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:214        'f4' ( in 4-component vector of float)
+0:214        'parti' ( temp 4-component vector of uint)
+0:215      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:215        'ballot' ( temp 4-component vector of uint)
+0:215        'parti' ( temp 4-component vector of uint)
+0:216      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:216        'ballot' ( temp 4-component vector of uint)
+0:216        'parti' ( temp 4-component vector of uint)
+0:217      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:217        'ballot' ( temp 4-component vector of uint)
+0:217        'parti' ( temp 4-component vector of uint)
+0:218      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:218        'f4' ( in 4-component vector of float)
+0:218        'parti' ( temp 4-component vector of uint)
+0:219      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:219        'f4' ( in 4-component vector of float)
+0:219        'parti' ( temp 4-component vector of uint)
+0:220      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:220        'f4' ( in 4-component vector of float)
+0:220        'parti' ( temp 4-component vector of uint)
+0:221      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:221        'f4' ( in 4-component vector of float)
+0:221        'parti' ( temp 4-component vector of uint)
+0:222      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:222        'ballot' ( temp 4-component vector of uint)
+0:222        'parti' ( temp 4-component vector of uint)
+0:223      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:223        'ballot' ( temp 4-component vector of uint)
+0:223        'parti' ( temp 4-component vector of uint)
+0:224      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:224        'ballot' ( temp 4-component vector of uint)
+0:224        'parti' ( temp 4-component vector of uint)
+0:225      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:225        'f4' ( in 4-component vector of float)
+0:225        'parti' ( temp 4-component vector of uint)
+0:226      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:226        'f4' ( in 4-component vector of float)
+0:226        'parti' ( temp 4-component vector of uint)
+0:227      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:227        'f4' ( in 4-component vector of float)
+0:227        'parti' ( temp 4-component vector of uint)
+0:228      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:228        'f4' ( in 4-component vector of float)
+0:228        'parti' ( temp 4-component vector of uint)
+0:229      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:229        'ballot' ( temp 4-component vector of uint)
+0:229        'parti' ( temp 4-component vector of uint)
+0:230      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:230        'ballot' ( temp 4-component vector of uint)
+0:230        'parti' ( temp 4-component vector of uint)
+0:231      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:231        'ballot' ( temp 4-component vector of uint)
+0:231        'parti' ( temp 4-component vector of uint)
 0:?   Linker Objects
 0:?     'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
 
@@ -28,26 +611,39 @@ Linked tessellation control stage:
 
 
 Shader version: 450
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
 Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_shader_subgroup_partitioned
 vertices = 1
-0:? Sequence
-0:9  Function Definition: main( ( global void)
-0:9    Function Parameters: 
-0:11    Sequence
-0:11      move second child to first child ( temp 4-component vector of uint)
-0:11        indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
-0:11          result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
-0:11            'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
-0:11            Constant:
-0:11              0 (const uint)
-0:11          'gl_PrimitiveID' ( in int PrimitiveID)
-0:11        Construct uvec4 ( temp 4-component vector of uint)
-0:11          'gl_SubgroupSize' ( in uint unknown built-in variable)
-0:11          'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:11          Constant:
-0:11            0 (const uint)
-0:11          Constant:
-0:11            0 (const uint)
+ERROR: node is still EOpNull!
+0:110  Function Definition: main( ( global void)
+0:110    Function Parameters: 
+0:112    Sequence
+0:112      move second child to first child ( temp 4-component vector of uint)
+0:112        indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
+0:112          result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
+0:112            'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
+0:112            Constant:
+0:112              0 (const uint)
+0:112          'gl_PrimitiveID' ( in int PrimitiveID)
+0:112        Construct uvec4 ( temp 4-component vector of uint)
+0:112          'gl_SubgroupSize' ( in uint SubgroupSize)
+0:112          'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:112          Constant:
+0:112            0 (const uint)
+0:112          Constant:
+0:112            0 (const uint)
+0:113      subgroupBarrier ( global void)
+0:114      subgroupMemoryBarrier ( global void)
+0:115      subgroupMemoryBarrierBuffer ( global void)
+0:116      subgroupMemoryBarrierImage ( global void)
+0:117      subgroupElect ( global bool)
 0:?   Linker Objects
 0:?     'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
 

+ 632 - 36
3rdparty/glslang/Test/baseResults/glsl.450.subgroup.tese.out

@@ -1,27 +1,610 @@
 glsl.450.subgroup.tese
+ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:13: 'gl_NumSubgroups' : undeclared identifier 
+ERROR: 0:14: 'gl_SubgroupID' : undeclared identifier 
+ERROR: 0:15: 'subgroupMemoryBarrierShared' : no matching overloaded function found 
+ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 86 compilation errors.  No code generated.
+
+
 Shader version: 450
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
 Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_shader_subgroup_partitioned
 input primitive = isolines
 vertex spacing = none
 triangle order = none
-0:? Sequence
-0:9  Function Definition: main( ( global void)
-0:9    Function Parameters: 
-0:11    Sequence
-0:11      move second child to first child ( temp 4-component vector of uint)
-0:11        indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
-0:11          result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
-0:11            'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
-0:11            Constant:
-0:11              0 (const uint)
-0:11          'gl_PrimitiveID' ( in int PrimitiveID)
-0:11        Construct uvec4 ( temp 4-component vector of uint)
-0:11          'gl_SubgroupSize' ( in uint unknown built-in variable)
-0:11          'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:11          Constant:
-0:11            0 (const uint)
-0:11          Constant:
-0:11            0 (const uint)
+ERROR: node is still EOpNull!
+0:3  Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
+0:3    Function Parameters: 
+0:3      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:6      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:7      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:8      subgroupBarrier ( global void)
+0:9      subgroupMemoryBarrier ( global void)
+0:10      subgroupMemoryBarrierBuffer ( global void)
+0:11      subgroupMemoryBarrierImage ( global void)
+0:12      subgroupElect ( global bool)
+0:13      'gl_NumSubgroups' ( temp float)
+0:14      'gl_SubgroupID' ( temp float)
+0:15      Constant:
+0:15        0.000000
+0:17      subgroupAll ( global bool)
+0:17        Constant:
+0:17          true (const bool)
+0:18      subgroupAny ( global bool)
+0:18        Constant:
+0:18          false (const bool)
+0:19      subgroupAllEqual ( global bool)
+0:19        'f4' ( in 4-component vector of float)
+0:21      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:22      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:23      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:24      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:25      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:26      subgroupBroadcast ( global 4-component vector of float)
+0:26        'f4' ( in 4-component vector of float)
+0:26        Constant:
+0:26          0 (const uint)
+0:27      subgroupBroadcastFirst ( global 4-component vector of float)
+0:27        'f4' ( in 4-component vector of float)
+0:28      Sequence
+0:28        move second child to first child ( temp 4-component vector of uint)
+0:28          'ballot' ( temp 4-component vector of uint)
+0:28          subgroupBallot ( global 4-component vector of uint)
+0:28            Constant:
+0:28              false (const bool)
+0:29      subgroupInverseBallot ( global bool)
+0:29        Constant:
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:30      subgroupBallotBitExtract ( global bool)
+0:30        'ballot' ( temp 4-component vector of uint)
+0:30        Constant:
+0:30          0 (const uint)
+0:31      subgroupBallotBitCount ( global uint)
+0:31        'ballot' ( temp 4-component vector of uint)
+0:32      subgroupBallotInclusiveBitCount ( global uint)
+0:32        'ballot' ( temp 4-component vector of uint)
+0:33      subgroupBallotExclusiveBitCount ( global uint)
+0:33        'ballot' ( temp 4-component vector of uint)
+0:34      subgroupBallotFindLSB ( global uint)
+0:34        'ballot' ( temp 4-component vector of uint)
+0:35      subgroupBallotFindMSB ( global uint)
+0:35        'ballot' ( temp 4-component vector of uint)
+0:37      subgroupShuffle ( global 4-component vector of float)
+0:37        'f4' ( in 4-component vector of float)
+0:37        Constant:
+0:37          0 (const uint)
+0:38      subgroupShuffleXor ( global 4-component vector of float)
+0:38        'f4' ( in 4-component vector of float)
+0:38        Constant:
+0:38          1 (const uint)
+0:39      subgroupShuffleUp ( global 4-component vector of float)
+0:39        'f4' ( in 4-component vector of float)
+0:39        Constant:
+0:39          1 (const uint)
+0:40      subgroupShuffleDown ( global 4-component vector of float)
+0:40        'f4' ( in 4-component vector of float)
+0:40        Constant:
+0:40          1 (const uint)
+0:42      move second child to first child ( temp 4-component vector of float)
+0:42        'result' ( temp 4-component vector of float)
+0:42        subgroupAdd ( global 4-component vector of float)
+0:42          'f4' ( in 4-component vector of float)
+0:43      subgroupMul ( global 4-component vector of float)
+0:43        'f4' ( in 4-component vector of float)
+0:44      subgroupMin ( global 4-component vector of float)
+0:44        'f4' ( in 4-component vector of float)
+0:45      subgroupMax ( global 4-component vector of float)
+0:45        'f4' ( in 4-component vector of float)
+0:46      subgroupAnd ( global 4-component vector of uint)
+0:46        'ballot' ( temp 4-component vector of uint)
+0:47      subgroupOr ( global 4-component vector of uint)
+0:47        'ballot' ( temp 4-component vector of uint)
+0:48      subgroupXor ( global 4-component vector of uint)
+0:48        'ballot' ( temp 4-component vector of uint)
+0:49      subgroupInclusiveAdd ( global 4-component vector of float)
+0:49        'f4' ( in 4-component vector of float)
+0:50      subgroupInclusiveMul ( global 4-component vector of float)
+0:50        'f4' ( in 4-component vector of float)
+0:51      subgroupInclusiveMin ( global 4-component vector of float)
+0:51        'f4' ( in 4-component vector of float)
+0:52      subgroupInclusiveMax ( global 4-component vector of float)
+0:52        'f4' ( in 4-component vector of float)
+0:53      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:53        'ballot' ( temp 4-component vector of uint)
+0:54      subgroupInclusiveOr ( global 4-component vector of uint)
+0:54        'ballot' ( temp 4-component vector of uint)
+0:55      subgroupInclusiveXor ( global 4-component vector of uint)
+0:55        'ballot' ( temp 4-component vector of uint)
+0:56      subgroupExclusiveAdd ( global 4-component vector of float)
+0:56        'f4' ( in 4-component vector of float)
+0:57      subgroupExclusiveMul ( global 4-component vector of float)
+0:57        'f4' ( in 4-component vector of float)
+0:58      subgroupExclusiveMin ( global 4-component vector of float)
+0:58        'f4' ( in 4-component vector of float)
+0:59      subgroupExclusiveMax ( global 4-component vector of float)
+0:59        'f4' ( in 4-component vector of float)
+0:60      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:60        'ballot' ( temp 4-component vector of uint)
+0:61      subgroupExclusiveOr ( global 4-component vector of uint)
+0:61        'ballot' ( temp 4-component vector of uint)
+0:62      subgroupExclusiveXor ( global 4-component vector of uint)
+0:62        'ballot' ( temp 4-component vector of uint)
+0:64      subgroupClusteredAdd ( global 4-component vector of float)
+0:64        'f4' ( in 4-component vector of float)
+0:64        Constant:
+0:64          2 (const uint)
+0:65      subgroupClusteredMul ( global 4-component vector of float)
+0:65        'f4' ( in 4-component vector of float)
+0:65        Constant:
+0:65          2 (const uint)
+0:66      subgroupClusteredMin ( global 4-component vector of float)
+0:66        'f4' ( in 4-component vector of float)
+0:66        Constant:
+0:66          2 (const uint)
+0:67      subgroupClusteredMax ( global 4-component vector of float)
+0:67        'f4' ( in 4-component vector of float)
+0:67        Constant:
+0:67          2 (const uint)
+0:68      subgroupClusteredAnd ( global 4-component vector of uint)
+0:68        'ballot' ( temp 4-component vector of uint)
+0:68        Constant:
+0:68          2 (const uint)
+0:69      subgroupClusteredOr ( global 4-component vector of uint)
+0:69        'ballot' ( temp 4-component vector of uint)
+0:69        Constant:
+0:69          2 (const uint)
+0:70      subgroupClusteredXor ( global 4-component vector of uint)
+0:70        'ballot' ( temp 4-component vector of uint)
+0:70        Constant:
+0:70          2 (const uint)
+0:72      subgroupQuadBroadcast ( global 4-component vector of float)
+0:72        'f4' ( in 4-component vector of float)
+0:72        Constant:
+0:72          0 (const uint)
+0:73      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:73        'f4' ( in 4-component vector of float)
+0:74      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:74        'f4' ( in 4-component vector of float)
+0:75      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:75        'f4' ( in 4-component vector of float)
+0:77      Sequence
+0:77        move second child to first child ( temp 4-component vector of uint)
+0:77          'parti' ( temp 4-component vector of uint)
+0:77          subgroupPartitionNV ( global 4-component vector of uint)
+0:77            'f4' ( in 4-component vector of float)
+0:78      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:78        'f4' ( in 4-component vector of float)
+0:78        'parti' ( temp 4-component vector of uint)
+0:79      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:79        'f4' ( in 4-component vector of float)
+0:79        'parti' ( temp 4-component vector of uint)
+0:80      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:80        'f4' ( in 4-component vector of float)
+0:80        'parti' ( temp 4-component vector of uint)
+0:81      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:81        'f4' ( in 4-component vector of float)
+0:81        'parti' ( temp 4-component vector of uint)
+0:82      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:82        'ballot' ( temp 4-component vector of uint)
+0:82        'parti' ( temp 4-component vector of uint)
+0:83      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:83        'ballot' ( temp 4-component vector of uint)
+0:83        'parti' ( temp 4-component vector of uint)
+0:84      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:84        'ballot' ( temp 4-component vector of uint)
+0:84        'parti' ( temp 4-component vector of uint)
+0:85      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:85        'f4' ( in 4-component vector of float)
+0:85        'parti' ( temp 4-component vector of uint)
+0:86      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:86        'f4' ( in 4-component vector of float)
+0:86        'parti' ( temp 4-component vector of uint)
+0:87      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:87        'f4' ( in 4-component vector of float)
+0:87        'parti' ( temp 4-component vector of uint)
+0:88      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:88        'f4' ( in 4-component vector of float)
+0:88        'parti' ( temp 4-component vector of uint)
+0:89      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:89        'ballot' ( temp 4-component vector of uint)
+0:89        'parti' ( temp 4-component vector of uint)
+0:90      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:90        'ballot' ( temp 4-component vector of uint)
+0:90        'parti' ( temp 4-component vector of uint)
+0:91      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:91        'ballot' ( temp 4-component vector of uint)
+0:91        'parti' ( temp 4-component vector of uint)
+0:92      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:92        'f4' ( in 4-component vector of float)
+0:92        'parti' ( temp 4-component vector of uint)
+0:93      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:93        'f4' ( in 4-component vector of float)
+0:93        'parti' ( temp 4-component vector of uint)
+0:94      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:94        'f4' ( in 4-component vector of float)
+0:94        'parti' ( temp 4-component vector of uint)
+0:95      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:95        'f4' ( in 4-component vector of float)
+0:95        'parti' ( temp 4-component vector of uint)
+0:96      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:96        'ballot' ( temp 4-component vector of uint)
+0:96        'parti' ( temp 4-component vector of uint)
+0:97      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:97        'ballot' ( temp 4-component vector of uint)
+0:97        'parti' ( temp 4-component vector of uint)
+0:98      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:98        'ballot' ( temp 4-component vector of uint)
+0:98        'parti' ( temp 4-component vector of uint)
+0:100      Branch: Return with expression
+0:100        'result' ( temp 4-component vector of float)
+0:110  Function Definition: main( ( global void)
+0:110    Function Parameters: 
+0:112    Sequence
+0:112      move second child to first child ( temp 4-component vector of uint)
+0:112        indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
+0:112          result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
+0:112            'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
+0:112            Constant:
+0:112              0 (const uint)
+0:112          'gl_PrimitiveID' ( in int PrimitiveID)
+0:112        Construct uvec4 ( temp 4-component vector of uint)
+0:112          'gl_SubgroupSize' ( in uint SubgroupSize)
+0:112          'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:112          Constant:
+0:112            0 (const uint)
+0:112          Constant:
+0:112            0 (const uint)
+0:113      subgroupBarrier ( global void)
+0:114      subgroupMemoryBarrier ( global void)
+0:115      subgroupMemoryBarrierBuffer ( global void)
+0:116      subgroupMemoryBarrierImage ( global void)
+0:117      subgroupElect ( global bool)
+0:121  Function Definition: ballot_works(vf4; ( global void)
+0:121    Function Parameters: 
+0:121      'f4' ( in 4-component vector of float)
+0:122    Sequence
+0:122      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:123      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:124      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:125      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:126      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:127      subgroupBroadcast ( global 4-component vector of float)
+0:127        'f4' ( in 4-component vector of float)
+0:127        Constant:
+0:127          0 (const uint)
+0:128      subgroupBroadcastFirst ( global 4-component vector of float)
+0:128        'f4' ( in 4-component vector of float)
+0:129      Sequence
+0:129        move second child to first child ( temp 4-component vector of uint)
+0:129          'ballot' ( temp 4-component vector of uint)
+0:129          subgroupBallot ( global 4-component vector of uint)
+0:129            Constant:
+0:129              false (const bool)
+0:130      subgroupInverseBallot ( global bool)
+0:130        Constant:
+0:130          1 (const uint)
+0:130          1 (const uint)
+0:130          1 (const uint)
+0:130          1 (const uint)
+0:131      subgroupBallotBitExtract ( global bool)
+0:131        'ballot' ( temp 4-component vector of uint)
+0:131        Constant:
+0:131          0 (const uint)
+0:132      subgroupBallotBitCount ( global uint)
+0:132        'ballot' ( temp 4-component vector of uint)
+0:133      subgroupBallotInclusiveBitCount ( global uint)
+0:133        'ballot' ( temp 4-component vector of uint)
+0:134      subgroupBallotExclusiveBitCount ( global uint)
+0:134        'ballot' ( temp 4-component vector of uint)
+0:135      subgroupBallotFindLSB ( global uint)
+0:135        'ballot' ( temp 4-component vector of uint)
+0:136      subgroupBallotFindMSB ( global uint)
+0:136        'ballot' ( temp 4-component vector of uint)
+0:140  Function Definition: vote_works(vf4; ( global void)
+0:140    Function Parameters: 
+0:140      'f4' ( in 4-component vector of float)
+0:142    Sequence
+0:142      subgroupAll ( global bool)
+0:142        Constant:
+0:142          true (const bool)
+0:143      subgroupAny ( global bool)
+0:143        Constant:
+0:143          false (const bool)
+0:144      subgroupAllEqual ( global bool)
+0:144        'f4' ( in 4-component vector of float)
+0:149  Function Definition: shuffle_works(vf4; ( global void)
+0:149    Function Parameters: 
+0:149      'f4' ( in 4-component vector of float)
+0:151    Sequence
+0:151      subgroupShuffle ( global 4-component vector of float)
+0:151        'f4' ( in 4-component vector of float)
+0:151        Constant:
+0:151          0 (const uint)
+0:152      subgroupShuffleXor ( global 4-component vector of float)
+0:152        'f4' ( in 4-component vector of float)
+0:152        Constant:
+0:152          1 (const uint)
+0:153      subgroupShuffleUp ( global 4-component vector of float)
+0:153        'f4' ( in 4-component vector of float)
+0:153        Constant:
+0:153          1 (const uint)
+0:154      subgroupShuffleDown ( global 4-component vector of float)
+0:154        'f4' ( in 4-component vector of float)
+0:154        Constant:
+0:154          1 (const uint)
+0:158  Function Definition: arith_works(vf4; ( global void)
+0:158    Function Parameters: 
+0:158      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:161      subgroupAdd ( global 4-component vector of float)
+0:161        'f4' ( in 4-component vector of float)
+0:162      subgroupMul ( global 4-component vector of float)
+0:162        'f4' ( in 4-component vector of float)
+0:163      subgroupMin ( global 4-component vector of float)
+0:163        'f4' ( in 4-component vector of float)
+0:164      subgroupMax ( global 4-component vector of float)
+0:164        'f4' ( in 4-component vector of float)
+0:165      subgroupAnd ( global 4-component vector of uint)
+0:165        'ballot' ( temp 4-component vector of uint)
+0:166      subgroupOr ( global 4-component vector of uint)
+0:166        'ballot' ( temp 4-component vector of uint)
+0:167      subgroupXor ( global 4-component vector of uint)
+0:167        'ballot' ( temp 4-component vector of uint)
+0:168      subgroupInclusiveAdd ( global 4-component vector of float)
+0:168        'f4' ( in 4-component vector of float)
+0:169      subgroupInclusiveMul ( global 4-component vector of float)
+0:169        'f4' ( in 4-component vector of float)
+0:170      subgroupInclusiveMin ( global 4-component vector of float)
+0:170        'f4' ( in 4-component vector of float)
+0:171      subgroupInclusiveMax ( global 4-component vector of float)
+0:171        'f4' ( in 4-component vector of float)
+0:172      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:172        'ballot' ( temp 4-component vector of uint)
+0:173      subgroupInclusiveOr ( global 4-component vector of uint)
+0:173        'ballot' ( temp 4-component vector of uint)
+0:174      subgroupInclusiveXor ( global 4-component vector of uint)
+0:174        'ballot' ( temp 4-component vector of uint)
+0:175      subgroupExclusiveAdd ( global 4-component vector of float)
+0:175        'f4' ( in 4-component vector of float)
+0:176      subgroupExclusiveMul ( global 4-component vector of float)
+0:176        'f4' ( in 4-component vector of float)
+0:177      subgroupExclusiveMin ( global 4-component vector of float)
+0:177        'f4' ( in 4-component vector of float)
+0:178      subgroupExclusiveMax ( global 4-component vector of float)
+0:178        'f4' ( in 4-component vector of float)
+0:179      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:179        'ballot' ( temp 4-component vector of uint)
+0:180      subgroupExclusiveOr ( global 4-component vector of uint)
+0:180        'ballot' ( temp 4-component vector of uint)
+0:181      subgroupExclusiveXor ( global 4-component vector of uint)
+0:181        'ballot' ( temp 4-component vector of uint)
+0:185  Function Definition: clustered_works(vf4; ( global void)
+0:185    Function Parameters: 
+0:185      'f4' ( in 4-component vector of float)
+0:187    Sequence
+0:187      Sequence
+0:187        move second child to first child ( temp 4-component vector of uint)
+0:187          'ballot' ( temp 4-component vector of uint)
+0:187          Constant:
+0:187            85 (const uint)
+0:187            0 (const uint)
+0:187            0 (const uint)
+0:187            0 (const uint)
+0:188      subgroupClusteredAdd ( global 4-component vector of float)
+0:188        'f4' ( in 4-component vector of float)
+0:188        Constant:
+0:188          2 (const uint)
+0:189      subgroupClusteredMul ( global 4-component vector of float)
+0:189        'f4' ( in 4-component vector of float)
+0:189        Constant:
+0:189          2 (const uint)
+0:190      subgroupClusteredMin ( global 4-component vector of float)
+0:190        'f4' ( in 4-component vector of float)
+0:190        Constant:
+0:190          2 (const uint)
+0:191      subgroupClusteredMax ( global 4-component vector of float)
+0:191        'f4' ( in 4-component vector of float)
+0:191        Constant:
+0:191          2 (const uint)
+0:192      subgroupClusteredAnd ( global 4-component vector of uint)
+0:192        'ballot' ( temp 4-component vector of uint)
+0:192        Constant:
+0:192          2 (const uint)
+0:193      subgroupClusteredOr ( global 4-component vector of uint)
+0:193        'ballot' ( temp 4-component vector of uint)
+0:193        Constant:
+0:193          2 (const uint)
+0:194      subgroupClusteredXor ( global 4-component vector of uint)
+0:194        'ballot' ( temp 4-component vector of uint)
+0:194        Constant:
+0:194          2 (const uint)
+0:198  Function Definition: quad_works(vf4; ( global void)
+0:198    Function Parameters: 
+0:198      'f4' ( in 4-component vector of float)
+0:200    Sequence
+0:200      subgroupQuadBroadcast ( global 4-component vector of float)
+0:200        'f4' ( in 4-component vector of float)
+0:200        Constant:
+0:200          0 (const uint)
+0:201      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:201        'f4' ( in 4-component vector of float)
+0:202      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:202        'f4' ( in 4-component vector of float)
+0:203      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:203        'f4' ( in 4-component vector of float)
+0:207  Function Definition: partitioned_works(vf4; ( global void)
+0:207    Function Parameters: 
+0:207      'f4' ( in 4-component vector of float)
+0:209    Sequence
+0:209      Sequence
+0:209        move second child to first child ( temp 4-component vector of uint)
+0:209          'parti' ( temp 4-component vector of uint)
+0:209          subgroupPartitionNV ( global 4-component vector of uint)
+0:209            'f4' ( in 4-component vector of float)
+0:210      Sequence
+0:210        move second child to first child ( temp 4-component vector of uint)
+0:210          'ballot' ( temp 4-component vector of uint)
+0:210          Constant:
+0:210            85 (const uint)
+0:210            0 (const uint)
+0:210            0 (const uint)
+0:210            0 (const uint)
+0:211      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:211        'f4' ( in 4-component vector of float)
+0:211        'parti' ( temp 4-component vector of uint)
+0:212      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:212        'f4' ( in 4-component vector of float)
+0:212        'parti' ( temp 4-component vector of uint)
+0:213      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:213        'f4' ( in 4-component vector of float)
+0:213        'parti' ( temp 4-component vector of uint)
+0:214      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:214        'f4' ( in 4-component vector of float)
+0:214        'parti' ( temp 4-component vector of uint)
+0:215      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:215        'ballot' ( temp 4-component vector of uint)
+0:215        'parti' ( temp 4-component vector of uint)
+0:216      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:216        'ballot' ( temp 4-component vector of uint)
+0:216        'parti' ( temp 4-component vector of uint)
+0:217      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:217        'ballot' ( temp 4-component vector of uint)
+0:217        'parti' ( temp 4-component vector of uint)
+0:218      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:218        'f4' ( in 4-component vector of float)
+0:218        'parti' ( temp 4-component vector of uint)
+0:219      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:219        'f4' ( in 4-component vector of float)
+0:219        'parti' ( temp 4-component vector of uint)
+0:220      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:220        'f4' ( in 4-component vector of float)
+0:220        'parti' ( temp 4-component vector of uint)
+0:221      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:221        'f4' ( in 4-component vector of float)
+0:221        'parti' ( temp 4-component vector of uint)
+0:222      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:222        'ballot' ( temp 4-component vector of uint)
+0:222        'parti' ( temp 4-component vector of uint)
+0:223      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:223        'ballot' ( temp 4-component vector of uint)
+0:223        'parti' ( temp 4-component vector of uint)
+0:224      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:224        'ballot' ( temp 4-component vector of uint)
+0:224        'parti' ( temp 4-component vector of uint)
+0:225      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:225        'f4' ( in 4-component vector of float)
+0:225        'parti' ( temp 4-component vector of uint)
+0:226      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:226        'f4' ( in 4-component vector of float)
+0:226        'parti' ( temp 4-component vector of uint)
+0:227      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:227        'f4' ( in 4-component vector of float)
+0:227        'parti' ( temp 4-component vector of uint)
+0:228      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:228        'f4' ( in 4-component vector of float)
+0:228        'parti' ( temp 4-component vector of uint)
+0:229      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:229        'ballot' ( temp 4-component vector of uint)
+0:229        'parti' ( temp 4-component vector of uint)
+0:230      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:230        'ballot' ( temp 4-component vector of uint)
+0:230        'parti' ( temp 4-component vector of uint)
+0:231      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:231        'ballot' ( temp 4-component vector of uint)
+0:231        'parti' ( temp 4-component vector of uint)
 0:?   Linker Objects
 0:?     'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
 
@@ -30,28 +613,41 @@ Linked tessellation evaluation stage:
 
 
 Shader version: 450
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
 Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_shader_subgroup_partitioned
 input primitive = isolines
 vertex spacing = equal_spacing
 triangle order = ccw
-0:? Sequence
-0:9  Function Definition: main( ( global void)
-0:9    Function Parameters: 
-0:11    Sequence
-0:11      move second child to first child ( temp 4-component vector of uint)
-0:11        indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
-0:11          result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
-0:11            'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
-0:11            Constant:
-0:11              0 (const uint)
-0:11          'gl_PrimitiveID' ( in int PrimitiveID)
-0:11        Construct uvec4 ( temp 4-component vector of uint)
-0:11          'gl_SubgroupSize' ( in uint unknown built-in variable)
-0:11          'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:11          Constant:
-0:11            0 (const uint)
-0:11          Constant:
-0:11            0 (const uint)
+ERROR: node is still EOpNull!
+0:110  Function Definition: main( ( global void)
+0:110    Function Parameters: 
+0:112    Sequence
+0:112      move second child to first child ( temp 4-component vector of uint)
+0:112        indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
+0:112          result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
+0:112            'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
+0:112            Constant:
+0:112              0 (const uint)
+0:112          'gl_PrimitiveID' ( in int PrimitiveID)
+0:112        Construct uvec4 ( temp 4-component vector of uint)
+0:112          'gl_SubgroupSize' ( in uint SubgroupSize)
+0:112          'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:112          Constant:
+0:112            0 (const uint)
+0:112          Constant:
+0:112            0 (const uint)
+0:113      subgroupBarrier ( global void)
+0:114      subgroupMemoryBarrier ( global void)
+0:115      subgroupMemoryBarrierBuffer ( global void)
+0:116      subgroupMemoryBarrierImage ( global void)
+0:117      subgroupElect ( global bool)
 0:?   Linker Objects
 0:?     'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
 

+ 632 - 36
3rdparty/glslang/Test/baseResults/glsl.450.subgroup.vert.out

@@ -1,24 +1,607 @@
 glsl.450.subgroup.vert
+ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:13: 'gl_NumSubgroups' : undeclared identifier 
+ERROR: 0:14: 'gl_SubgroupID' : undeclared identifier 
+ERROR: 0:15: 'subgroupMemoryBarrierShared' : no matching overloaded function found 
+ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 86 compilation errors.  No code generated.
+
+
 Shader version: 450
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
 Requested GL_KHR_shader_subgroup_basic
-0:? Sequence
-0:8  Function Definition: main( ( global void)
-0:8    Function Parameters: 
-0:10    Sequence
-0:10      move second child to first child ( temp 4-component vector of uint)
-0:10        indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
-0:10          result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
-0:10            'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
-0:10            Constant:
-0:10              0 (const uint)
-0:10          'gl_VertexID' ( gl_VertexId int VertexId)
-0:10        Construct uvec4 ( temp 4-component vector of uint)
-0:10          'gl_SubgroupSize' ( in uint unknown built-in variable)
-0:10          'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:10          Constant:
-0:10            0 (const uint)
-0:10          Constant:
-0:10            0 (const uint)
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_shader_subgroup_partitioned
+ERROR: node is still EOpNull!
+0:3  Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
+0:3    Function Parameters: 
+0:3      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:6      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:7      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:8      subgroupBarrier ( global void)
+0:9      subgroupMemoryBarrier ( global void)
+0:10      subgroupMemoryBarrierBuffer ( global void)
+0:11      subgroupMemoryBarrierImage ( global void)
+0:12      subgroupElect ( global bool)
+0:13      'gl_NumSubgroups' ( temp float)
+0:14      'gl_SubgroupID' ( temp float)
+0:15      Constant:
+0:15        0.000000
+0:17      subgroupAll ( global bool)
+0:17        Constant:
+0:17          true (const bool)
+0:18      subgroupAny ( global bool)
+0:18        Constant:
+0:18          false (const bool)
+0:19      subgroupAllEqual ( global bool)
+0:19        'f4' ( in 4-component vector of float)
+0:21      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:22      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:23      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:24      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:25      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:26      subgroupBroadcast ( global 4-component vector of float)
+0:26        'f4' ( in 4-component vector of float)
+0:26        Constant:
+0:26          0 (const uint)
+0:27      subgroupBroadcastFirst ( global 4-component vector of float)
+0:27        'f4' ( in 4-component vector of float)
+0:28      Sequence
+0:28        move second child to first child ( temp 4-component vector of uint)
+0:28          'ballot' ( temp 4-component vector of uint)
+0:28          subgroupBallot ( global 4-component vector of uint)
+0:28            Constant:
+0:28              false (const bool)
+0:29      subgroupInverseBallot ( global bool)
+0:29        Constant:
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:30      subgroupBallotBitExtract ( global bool)
+0:30        'ballot' ( temp 4-component vector of uint)
+0:30        Constant:
+0:30          0 (const uint)
+0:31      subgroupBallotBitCount ( global uint)
+0:31        'ballot' ( temp 4-component vector of uint)
+0:32      subgroupBallotInclusiveBitCount ( global uint)
+0:32        'ballot' ( temp 4-component vector of uint)
+0:33      subgroupBallotExclusiveBitCount ( global uint)
+0:33        'ballot' ( temp 4-component vector of uint)
+0:34      subgroupBallotFindLSB ( global uint)
+0:34        'ballot' ( temp 4-component vector of uint)
+0:35      subgroupBallotFindMSB ( global uint)
+0:35        'ballot' ( temp 4-component vector of uint)
+0:37      subgroupShuffle ( global 4-component vector of float)
+0:37        'f4' ( in 4-component vector of float)
+0:37        Constant:
+0:37          0 (const uint)
+0:38      subgroupShuffleXor ( global 4-component vector of float)
+0:38        'f4' ( in 4-component vector of float)
+0:38        Constant:
+0:38          1 (const uint)
+0:39      subgroupShuffleUp ( global 4-component vector of float)
+0:39        'f4' ( in 4-component vector of float)
+0:39        Constant:
+0:39          1 (const uint)
+0:40      subgroupShuffleDown ( global 4-component vector of float)
+0:40        'f4' ( in 4-component vector of float)
+0:40        Constant:
+0:40          1 (const uint)
+0:42      move second child to first child ( temp 4-component vector of float)
+0:42        'result' ( temp 4-component vector of float)
+0:42        subgroupAdd ( global 4-component vector of float)
+0:42          'f4' ( in 4-component vector of float)
+0:43      subgroupMul ( global 4-component vector of float)
+0:43        'f4' ( in 4-component vector of float)
+0:44      subgroupMin ( global 4-component vector of float)
+0:44        'f4' ( in 4-component vector of float)
+0:45      subgroupMax ( global 4-component vector of float)
+0:45        'f4' ( in 4-component vector of float)
+0:46      subgroupAnd ( global 4-component vector of uint)
+0:46        'ballot' ( temp 4-component vector of uint)
+0:47      subgroupOr ( global 4-component vector of uint)
+0:47        'ballot' ( temp 4-component vector of uint)
+0:48      subgroupXor ( global 4-component vector of uint)
+0:48        'ballot' ( temp 4-component vector of uint)
+0:49      subgroupInclusiveAdd ( global 4-component vector of float)
+0:49        'f4' ( in 4-component vector of float)
+0:50      subgroupInclusiveMul ( global 4-component vector of float)
+0:50        'f4' ( in 4-component vector of float)
+0:51      subgroupInclusiveMin ( global 4-component vector of float)
+0:51        'f4' ( in 4-component vector of float)
+0:52      subgroupInclusiveMax ( global 4-component vector of float)
+0:52        'f4' ( in 4-component vector of float)
+0:53      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:53        'ballot' ( temp 4-component vector of uint)
+0:54      subgroupInclusiveOr ( global 4-component vector of uint)
+0:54        'ballot' ( temp 4-component vector of uint)
+0:55      subgroupInclusiveXor ( global 4-component vector of uint)
+0:55        'ballot' ( temp 4-component vector of uint)
+0:56      subgroupExclusiveAdd ( global 4-component vector of float)
+0:56        'f4' ( in 4-component vector of float)
+0:57      subgroupExclusiveMul ( global 4-component vector of float)
+0:57        'f4' ( in 4-component vector of float)
+0:58      subgroupExclusiveMin ( global 4-component vector of float)
+0:58        'f4' ( in 4-component vector of float)
+0:59      subgroupExclusiveMax ( global 4-component vector of float)
+0:59        'f4' ( in 4-component vector of float)
+0:60      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:60        'ballot' ( temp 4-component vector of uint)
+0:61      subgroupExclusiveOr ( global 4-component vector of uint)
+0:61        'ballot' ( temp 4-component vector of uint)
+0:62      subgroupExclusiveXor ( global 4-component vector of uint)
+0:62        'ballot' ( temp 4-component vector of uint)
+0:64      subgroupClusteredAdd ( global 4-component vector of float)
+0:64        'f4' ( in 4-component vector of float)
+0:64        Constant:
+0:64          2 (const uint)
+0:65      subgroupClusteredMul ( global 4-component vector of float)
+0:65        'f4' ( in 4-component vector of float)
+0:65        Constant:
+0:65          2 (const uint)
+0:66      subgroupClusteredMin ( global 4-component vector of float)
+0:66        'f4' ( in 4-component vector of float)
+0:66        Constant:
+0:66          2 (const uint)
+0:67      subgroupClusteredMax ( global 4-component vector of float)
+0:67        'f4' ( in 4-component vector of float)
+0:67        Constant:
+0:67          2 (const uint)
+0:68      subgroupClusteredAnd ( global 4-component vector of uint)
+0:68        'ballot' ( temp 4-component vector of uint)
+0:68        Constant:
+0:68          2 (const uint)
+0:69      subgroupClusteredOr ( global 4-component vector of uint)
+0:69        'ballot' ( temp 4-component vector of uint)
+0:69        Constant:
+0:69          2 (const uint)
+0:70      subgroupClusteredXor ( global 4-component vector of uint)
+0:70        'ballot' ( temp 4-component vector of uint)
+0:70        Constant:
+0:70          2 (const uint)
+0:72      subgroupQuadBroadcast ( global 4-component vector of float)
+0:72        'f4' ( in 4-component vector of float)
+0:72        Constant:
+0:72          0 (const uint)
+0:73      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:73        'f4' ( in 4-component vector of float)
+0:74      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:74        'f4' ( in 4-component vector of float)
+0:75      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:75        'f4' ( in 4-component vector of float)
+0:77      Sequence
+0:77        move second child to first child ( temp 4-component vector of uint)
+0:77          'parti' ( temp 4-component vector of uint)
+0:77          subgroupPartitionNV ( global 4-component vector of uint)
+0:77            'f4' ( in 4-component vector of float)
+0:78      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:78        'f4' ( in 4-component vector of float)
+0:78        'parti' ( temp 4-component vector of uint)
+0:79      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:79        'f4' ( in 4-component vector of float)
+0:79        'parti' ( temp 4-component vector of uint)
+0:80      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:80        'f4' ( in 4-component vector of float)
+0:80        'parti' ( temp 4-component vector of uint)
+0:81      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:81        'f4' ( in 4-component vector of float)
+0:81        'parti' ( temp 4-component vector of uint)
+0:82      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:82        'ballot' ( temp 4-component vector of uint)
+0:82        'parti' ( temp 4-component vector of uint)
+0:83      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:83        'ballot' ( temp 4-component vector of uint)
+0:83        'parti' ( temp 4-component vector of uint)
+0:84      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:84        'ballot' ( temp 4-component vector of uint)
+0:84        'parti' ( temp 4-component vector of uint)
+0:85      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:85        'f4' ( in 4-component vector of float)
+0:85        'parti' ( temp 4-component vector of uint)
+0:86      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:86        'f4' ( in 4-component vector of float)
+0:86        'parti' ( temp 4-component vector of uint)
+0:87      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:87        'f4' ( in 4-component vector of float)
+0:87        'parti' ( temp 4-component vector of uint)
+0:88      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:88        'f4' ( in 4-component vector of float)
+0:88        'parti' ( temp 4-component vector of uint)
+0:89      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:89        'ballot' ( temp 4-component vector of uint)
+0:89        'parti' ( temp 4-component vector of uint)
+0:90      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:90        'ballot' ( temp 4-component vector of uint)
+0:90        'parti' ( temp 4-component vector of uint)
+0:91      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:91        'ballot' ( temp 4-component vector of uint)
+0:91        'parti' ( temp 4-component vector of uint)
+0:92      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:92        'f4' ( in 4-component vector of float)
+0:92        'parti' ( temp 4-component vector of uint)
+0:93      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:93        'f4' ( in 4-component vector of float)
+0:93        'parti' ( temp 4-component vector of uint)
+0:94      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:94        'f4' ( in 4-component vector of float)
+0:94        'parti' ( temp 4-component vector of uint)
+0:95      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:95        'f4' ( in 4-component vector of float)
+0:95        'parti' ( temp 4-component vector of uint)
+0:96      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:96        'ballot' ( temp 4-component vector of uint)
+0:96        'parti' ( temp 4-component vector of uint)
+0:97      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:97        'ballot' ( temp 4-component vector of uint)
+0:97        'parti' ( temp 4-component vector of uint)
+0:98      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:98        'ballot' ( temp 4-component vector of uint)
+0:98        'parti' ( temp 4-component vector of uint)
+0:100      Branch: Return with expression
+0:100        'result' ( temp 4-component vector of float)
+0:109  Function Definition: main( ( global void)
+0:109    Function Parameters: 
+0:111    Sequence
+0:111      move second child to first child ( temp 4-component vector of uint)
+0:111        indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
+0:111          result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
+0:111            'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
+0:111            Constant:
+0:111              0 (const uint)
+0:111          'gl_VertexID' ( gl_VertexId int VertexId)
+0:111        Construct uvec4 ( temp 4-component vector of uint)
+0:111          'gl_SubgroupSize' ( in uint SubgroupSize)
+0:111          'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:111          Constant:
+0:111            0 (const uint)
+0:111          Constant:
+0:111            0 (const uint)
+0:112      subgroupBarrier ( global void)
+0:113      subgroupMemoryBarrier ( global void)
+0:114      subgroupMemoryBarrierBuffer ( global void)
+0:115      subgroupMemoryBarrierImage ( global void)
+0:116      subgroupElect ( global bool)
+0:120  Function Definition: ballot_works(vf4; ( global void)
+0:120    Function Parameters: 
+0:120      'f4' ( in 4-component vector of float)
+0:121    Sequence
+0:121      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:122      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:123      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:124      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:125      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:126      subgroupBroadcast ( global 4-component vector of float)
+0:126        'f4' ( in 4-component vector of float)
+0:126        Constant:
+0:126          0 (const uint)
+0:127      subgroupBroadcastFirst ( global 4-component vector of float)
+0:127        'f4' ( in 4-component vector of float)
+0:128      Sequence
+0:128        move second child to first child ( temp 4-component vector of uint)
+0:128          'ballot' ( temp 4-component vector of uint)
+0:128          subgroupBallot ( global 4-component vector of uint)
+0:128            Constant:
+0:128              false (const bool)
+0:129      subgroupInverseBallot ( global bool)
+0:129        Constant:
+0:129          1 (const uint)
+0:129          1 (const uint)
+0:129          1 (const uint)
+0:129          1 (const uint)
+0:130      subgroupBallotBitExtract ( global bool)
+0:130        'ballot' ( temp 4-component vector of uint)
+0:130        Constant:
+0:130          0 (const uint)
+0:131      subgroupBallotBitCount ( global uint)
+0:131        'ballot' ( temp 4-component vector of uint)
+0:132      subgroupBallotInclusiveBitCount ( global uint)
+0:132        'ballot' ( temp 4-component vector of uint)
+0:133      subgroupBallotExclusiveBitCount ( global uint)
+0:133        'ballot' ( temp 4-component vector of uint)
+0:134      subgroupBallotFindLSB ( global uint)
+0:134        'ballot' ( temp 4-component vector of uint)
+0:135      subgroupBallotFindMSB ( global uint)
+0:135        'ballot' ( temp 4-component vector of uint)
+0:139  Function Definition: vote_works(vf4; ( global void)
+0:139    Function Parameters: 
+0:139      'f4' ( in 4-component vector of float)
+0:141    Sequence
+0:141      subgroupAll ( global bool)
+0:141        Constant:
+0:141          true (const bool)
+0:142      subgroupAny ( global bool)
+0:142        Constant:
+0:142          false (const bool)
+0:143      subgroupAllEqual ( global bool)
+0:143        'f4' ( in 4-component vector of float)
+0:148  Function Definition: shuffle_works(vf4; ( global void)
+0:148    Function Parameters: 
+0:148      'f4' ( in 4-component vector of float)
+0:150    Sequence
+0:150      subgroupShuffle ( global 4-component vector of float)
+0:150        'f4' ( in 4-component vector of float)
+0:150        Constant:
+0:150          0 (const uint)
+0:151      subgroupShuffleXor ( global 4-component vector of float)
+0:151        'f4' ( in 4-component vector of float)
+0:151        Constant:
+0:151          1 (const uint)
+0:152      subgroupShuffleUp ( global 4-component vector of float)
+0:152        'f4' ( in 4-component vector of float)
+0:152        Constant:
+0:152          1 (const uint)
+0:153      subgroupShuffleDown ( global 4-component vector of float)
+0:153        'f4' ( in 4-component vector of float)
+0:153        Constant:
+0:153          1 (const uint)
+0:157  Function Definition: arith_works(vf4; ( global void)
+0:157    Function Parameters: 
+0:157      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:160      subgroupAdd ( global 4-component vector of float)
+0:160        'f4' ( in 4-component vector of float)
+0:161      subgroupMul ( global 4-component vector of float)
+0:161        'f4' ( in 4-component vector of float)
+0:162      subgroupMin ( global 4-component vector of float)
+0:162        'f4' ( in 4-component vector of float)
+0:163      subgroupMax ( global 4-component vector of float)
+0:163        'f4' ( in 4-component vector of float)
+0:164      subgroupAnd ( global 4-component vector of uint)
+0:164        'ballot' ( temp 4-component vector of uint)
+0:165      subgroupOr ( global 4-component vector of uint)
+0:165        'ballot' ( temp 4-component vector of uint)
+0:166      subgroupXor ( global 4-component vector of uint)
+0:166        'ballot' ( temp 4-component vector of uint)
+0:167      subgroupInclusiveAdd ( global 4-component vector of float)
+0:167        'f4' ( in 4-component vector of float)
+0:168      subgroupInclusiveMul ( global 4-component vector of float)
+0:168        'f4' ( in 4-component vector of float)
+0:169      subgroupInclusiveMin ( global 4-component vector of float)
+0:169        'f4' ( in 4-component vector of float)
+0:170      subgroupInclusiveMax ( global 4-component vector of float)
+0:170        'f4' ( in 4-component vector of float)
+0:171      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:171        'ballot' ( temp 4-component vector of uint)
+0:172      subgroupInclusiveOr ( global 4-component vector of uint)
+0:172        'ballot' ( temp 4-component vector of uint)
+0:173      subgroupInclusiveXor ( global 4-component vector of uint)
+0:173        'ballot' ( temp 4-component vector of uint)
+0:174      subgroupExclusiveAdd ( global 4-component vector of float)
+0:174        'f4' ( in 4-component vector of float)
+0:175      subgroupExclusiveMul ( global 4-component vector of float)
+0:175        'f4' ( in 4-component vector of float)
+0:176      subgroupExclusiveMin ( global 4-component vector of float)
+0:176        'f4' ( in 4-component vector of float)
+0:177      subgroupExclusiveMax ( global 4-component vector of float)
+0:177        'f4' ( in 4-component vector of float)
+0:178      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:178        'ballot' ( temp 4-component vector of uint)
+0:179      subgroupExclusiveOr ( global 4-component vector of uint)
+0:179        'ballot' ( temp 4-component vector of uint)
+0:180      subgroupExclusiveXor ( global 4-component vector of uint)
+0:180        'ballot' ( temp 4-component vector of uint)
+0:184  Function Definition: clustered_works(vf4; ( global void)
+0:184    Function Parameters: 
+0:184      'f4' ( in 4-component vector of float)
+0:186    Sequence
+0:186      Sequence
+0:186        move second child to first child ( temp 4-component vector of uint)
+0:186          'ballot' ( temp 4-component vector of uint)
+0:186          Constant:
+0:186            85 (const uint)
+0:186            0 (const uint)
+0:186            0 (const uint)
+0:186            0 (const uint)
+0:187      subgroupClusteredAdd ( global 4-component vector of float)
+0:187        'f4' ( in 4-component vector of float)
+0:187        Constant:
+0:187          2 (const uint)
+0:188      subgroupClusteredMul ( global 4-component vector of float)
+0:188        'f4' ( in 4-component vector of float)
+0:188        Constant:
+0:188          2 (const uint)
+0:189      subgroupClusteredMin ( global 4-component vector of float)
+0:189        'f4' ( in 4-component vector of float)
+0:189        Constant:
+0:189          2 (const uint)
+0:190      subgroupClusteredMax ( global 4-component vector of float)
+0:190        'f4' ( in 4-component vector of float)
+0:190        Constant:
+0:190          2 (const uint)
+0:191      subgroupClusteredAnd ( global 4-component vector of uint)
+0:191        'ballot' ( temp 4-component vector of uint)
+0:191        Constant:
+0:191          2 (const uint)
+0:192      subgroupClusteredOr ( global 4-component vector of uint)
+0:192        'ballot' ( temp 4-component vector of uint)
+0:192        Constant:
+0:192          2 (const uint)
+0:193      subgroupClusteredXor ( global 4-component vector of uint)
+0:193        'ballot' ( temp 4-component vector of uint)
+0:193        Constant:
+0:193          2 (const uint)
+0:197  Function Definition: quad_works(vf4; ( global void)
+0:197    Function Parameters: 
+0:197      'f4' ( in 4-component vector of float)
+0:199    Sequence
+0:199      subgroupQuadBroadcast ( global 4-component vector of float)
+0:199        'f4' ( in 4-component vector of float)
+0:199        Constant:
+0:199          0 (const uint)
+0:200      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:200        'f4' ( in 4-component vector of float)
+0:201      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:201        'f4' ( in 4-component vector of float)
+0:202      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:202        'f4' ( in 4-component vector of float)
+0:206  Function Definition: partitioned_works(vf4; ( global void)
+0:206    Function Parameters: 
+0:206      'f4' ( in 4-component vector of float)
+0:208    Sequence
+0:208      Sequence
+0:208        move second child to first child ( temp 4-component vector of uint)
+0:208          'parti' ( temp 4-component vector of uint)
+0:208          subgroupPartitionNV ( global 4-component vector of uint)
+0:208            'f4' ( in 4-component vector of float)
+0:209      Sequence
+0:209        move second child to first child ( temp 4-component vector of uint)
+0:209          'ballot' ( temp 4-component vector of uint)
+0:209          Constant:
+0:209            85 (const uint)
+0:209            0 (const uint)
+0:209            0 (const uint)
+0:209            0 (const uint)
+0:210      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:210        'f4' ( in 4-component vector of float)
+0:210        'parti' ( temp 4-component vector of uint)
+0:211      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:211        'f4' ( in 4-component vector of float)
+0:211        'parti' ( temp 4-component vector of uint)
+0:212      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:212        'f4' ( in 4-component vector of float)
+0:212        'parti' ( temp 4-component vector of uint)
+0:213      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:213        'f4' ( in 4-component vector of float)
+0:213        'parti' ( temp 4-component vector of uint)
+0:214      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:214        'ballot' ( temp 4-component vector of uint)
+0:214        'parti' ( temp 4-component vector of uint)
+0:215      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:215        'ballot' ( temp 4-component vector of uint)
+0:215        'parti' ( temp 4-component vector of uint)
+0:216      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:216        'ballot' ( temp 4-component vector of uint)
+0:216        'parti' ( temp 4-component vector of uint)
+0:217      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:217        'f4' ( in 4-component vector of float)
+0:217        'parti' ( temp 4-component vector of uint)
+0:218      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:218        'f4' ( in 4-component vector of float)
+0:218        'parti' ( temp 4-component vector of uint)
+0:219      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:219        'f4' ( in 4-component vector of float)
+0:219        'parti' ( temp 4-component vector of uint)
+0:220      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:220        'f4' ( in 4-component vector of float)
+0:220        'parti' ( temp 4-component vector of uint)
+0:221      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:221        'ballot' ( temp 4-component vector of uint)
+0:221        'parti' ( temp 4-component vector of uint)
+0:222      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:222        'ballot' ( temp 4-component vector of uint)
+0:222        'parti' ( temp 4-component vector of uint)
+0:223      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:223        'ballot' ( temp 4-component vector of uint)
+0:223        'parti' ( temp 4-component vector of uint)
+0:224      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:224        'f4' ( in 4-component vector of float)
+0:224        'parti' ( temp 4-component vector of uint)
+0:225      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:225        'f4' ( in 4-component vector of float)
+0:225        'parti' ( temp 4-component vector of uint)
+0:226      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:226        'f4' ( in 4-component vector of float)
+0:226        'parti' ( temp 4-component vector of uint)
+0:227      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:227        'f4' ( in 4-component vector of float)
+0:227        'parti' ( temp 4-component vector of uint)
+0:228      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:228        'ballot' ( temp 4-component vector of uint)
+0:228        'parti' ( temp 4-component vector of uint)
+0:229      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:229        'ballot' ( temp 4-component vector of uint)
+0:229        'parti' ( temp 4-component vector of uint)
+0:230      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:230        'ballot' ( temp 4-component vector of uint)
+0:230        'parti' ( temp 4-component vector of uint)
 0:?   Linker Objects
 0:?     'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
 0:?     'gl_VertexID' ( gl_VertexId int VertexId)
@@ -29,25 +612,38 @@ Linked vertex stage:
 
 
 Shader version: 450
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
 Requested GL_KHR_shader_subgroup_basic
-0:? Sequence
-0:8  Function Definition: main( ( global void)
-0:8    Function Parameters: 
-0:10    Sequence
-0:10      move second child to first child ( temp 4-component vector of uint)
-0:10        indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
-0:10          result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
-0:10            'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
-0:10            Constant:
-0:10              0 (const uint)
-0:10          'gl_VertexID' ( gl_VertexId int VertexId)
-0:10        Construct uvec4 ( temp 4-component vector of uint)
-0:10          'gl_SubgroupSize' ( in uint unknown built-in variable)
-0:10          'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:10          Constant:
-0:10            0 (const uint)
-0:10          Constant:
-0:10            0 (const uint)
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_shader_subgroup_partitioned
+ERROR: node is still EOpNull!
+0:109  Function Definition: main( ( global void)
+0:109    Function Parameters: 
+0:111    Sequence
+0:111      move second child to first child ( temp 4-component vector of uint)
+0:111        indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
+0:111          result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
+0:111            'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
+0:111            Constant:
+0:111              0 (const uint)
+0:111          'gl_VertexID' ( gl_VertexId int VertexId)
+0:111        Construct uvec4 ( temp 4-component vector of uint)
+0:111          'gl_SubgroupSize' ( in uint SubgroupSize)
+0:111          'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:111          Constant:
+0:111            0 (const uint)
+0:111          Constant:
+0:111            0 (const uint)
+0:112      subgroupBarrier ( global void)
+0:113      subgroupMemoryBarrier ( global void)
+0:114      subgroupMemoryBarrierBuffer ( global void)
+0:115      subgroupMemoryBarrierImage ( global void)
+0:116      subgroupElect ( global bool)
 0:?   Linker Objects
 0:?     'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
 0:?     'gl_VertexID' ( gl_VertexId int VertexId)

+ 4 - 4
3rdparty/glslang/Test/baseResults/glsl.450.subgroupArithmetic.comp.out

@@ -12,8 +12,8 @@ local_size = (8, 1, 1)
 0:17          'invocation' ( temp uint)
 0:17          mod ( temp uint)
 0:17            add ( temp uint)
-0:17              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:17              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:17              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:17              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:17            Constant:
 0:17              4 (const uint)
 0:19      move second child to first child ( temp float)
@@ -7288,8 +7288,8 @@ local_size = (8, 1, 1)
 0:17          'invocation' ( temp uint)
 0:17          mod ( temp uint)
 0:17            add ( temp uint)
-0:17              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:17              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:17              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:17              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:17            Constant:
 0:17              4 (const uint)
 0:19      move second child to first child ( temp float)

+ 14 - 14
3rdparty/glslang/Test/baseResults/glsl.450.subgroupBallot.comp.out

@@ -12,8 +12,8 @@ local_size = (8, 8, 1)
 0:17          'invocation' ( temp uint)
 0:17          mod ( temp uint)
 0:17            add ( temp uint)
-0:17              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:17              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:17              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:17              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:17            Constant:
 0:17              4 (const uint)
 0:19      Sequence
@@ -23,11 +23,11 @@ local_size = (8, 8, 1)
 0:21            add ( temp 4-component vector of uint)
 0:20              add ( temp 4-component vector of uint)
 0:19                add ( temp 4-component vector of uint)
-0:19                  'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable)
-0:20                  'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable)
-0:21                'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable)
-0:22              'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable)
-0:23            'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable)
+0:19                  'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:20                  'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:21                'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:22              'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:23            'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
 0:25      Sequence
 0:25        move second child to first child ( temp 4-component vector of uint)
 0:25          'result' ( temp 4-component vector of uint)
@@ -1165,8 +1165,8 @@ local_size = (8, 8, 1)
 0:17          'invocation' ( temp uint)
 0:17          mod ( temp uint)
 0:17            add ( temp uint)
-0:17              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:17              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:17              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:17              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:17            Constant:
 0:17              4 (const uint)
 0:19      Sequence
@@ -1176,11 +1176,11 @@ local_size = (8, 8, 1)
 0:21            add ( temp 4-component vector of uint)
 0:20              add ( temp 4-component vector of uint)
 0:19                add ( temp 4-component vector of uint)
-0:19                  'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable)
-0:20                  'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable)
-0:21                'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable)
-0:22              'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable)
-0:23            'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable)
+0:19                  'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:20                  'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:21                'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:22              'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:23            'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
 0:25      Sequence
 0:25        move second child to first child ( temp 4-component vector of uint)
 0:25          'result' ( temp 4-component vector of uint)

+ 14 - 14
3rdparty/glslang/Test/baseResults/glsl.450.subgroupBallotNeg.comp.out

@@ -16,8 +16,8 @@ ERROR: node is still EOpNull!
 0:17          'invocation' ( temp uint)
 0:17          mod ( temp uint)
 0:17            add ( temp uint)
-0:17              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:17              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:17              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:17              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:17            Constant:
 0:17              4 (const uint)
 0:19      Sequence
@@ -27,11 +27,11 @@ ERROR: node is still EOpNull!
 0:21            add ( temp 4-component vector of uint)
 0:20              add ( temp 4-component vector of uint)
 0:19                add ( temp 4-component vector of uint)
-0:19                  'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable)
-0:20                  'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable)
-0:21                'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable)
-0:22              'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable)
-0:23            'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable)
+0:19                  'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:20                  'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:21                'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:22              'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:23            'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
 0:25      Sequence
 0:25        move second child to first child ( temp 4-component vector of uint)
 0:25          'result' ( temp 4-component vector of uint)
@@ -149,8 +149,8 @@ ERROR: node is still EOpNull!
 0:17          'invocation' ( temp uint)
 0:17          mod ( temp uint)
 0:17            add ( temp uint)
-0:17              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:17              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:17              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:17              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:17            Constant:
 0:17              4 (const uint)
 0:19      Sequence
@@ -160,11 +160,11 @@ ERROR: node is still EOpNull!
 0:21            add ( temp 4-component vector of uint)
 0:20              add ( temp 4-component vector of uint)
 0:19                add ( temp 4-component vector of uint)
-0:19                  'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable)
-0:20                  'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable)
-0:21                'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable)
-0:22              'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable)
-0:23            'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable)
+0:19                  'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:20                  'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:21                'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:22              'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:23            'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
 0:25      Sequence
 0:25        move second child to first child ( temp 4-component vector of uint)
 0:25          'result' ( temp 4-component vector of uint)

+ 689 - 104
3rdparty/glslang/Test/baseResults/glsl.450.subgroupBasic.comp.out

@@ -1,59 +1,636 @@
 glsl.450.subgroupBasic.comp
+ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:13: 'gl_NumSubgroups' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:14: 'gl_SubgroupID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:15: 'subgroupMemoryBarrierShared' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 86 compilation errors.  No code generated.
+
+
 Shader version: 450
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
 Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_shader_subgroup_partitioned
 local_size = (8, 8, 1)
-0:? Sequence
-0:12  Function Definition: main( ( global void)
-0:12    Function Parameters: 
-0:14    Sequence
-0:14      move second child to first child ( temp int)
-0:14        indirect index (layout( column_major shared) temp int)
-0:14          a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
-0:14            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
-0:14            Constant:
-0:14              0 (const int)
-0:14          'gl_SubgroupSize' ( in uint unknown built-in variable)
-0:14        Constant:
-0:14          1 (const int)
-0:15      move second child to first child ( temp int)
-0:15        indirect index (layout( column_major shared) temp int)
-0:15          a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
-0:15            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
-0:15            Constant:
-0:15              0 (const int)
-0:15          'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:15        Constant:
-0:15          1 (const int)
-0:16      move second child to first child ( temp int)
-0:16        indirect index (layout( column_major shared) temp int)
-0:16          a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
-0:16            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
-0:16            Constant:
-0:16              0 (const int)
-0:16          'gl_NumSubgroups' ( in uint unknown built-in variable)
-0:16        Constant:
-0:16          1 (const int)
-0:17      move second child to first child ( temp int)
-0:17        indirect index (layout( column_major shared) temp int)
-0:17          a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
-0:17            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
-0:17            Constant:
-0:17              0 (const int)
-0:17          'gl_SubgroupID' ( in uint unknown built-in variable)
-0:17        Test condition and select ( temp int)
-0:17          Condition
-0:17          subgroupElect ( global bool)
-0:17          true case
-0:17          Constant:
-0:17            1 (const int)
-0:17          false case
-0:17          Constant:
-0:17            0 (const int)
-0:18      subgroupBarrier ( global void)
-0:19      subgroupMemoryBarrier ( global void)
-0:20      subgroupMemoryBarrierBuffer ( global void)
-0:21      subgroupMemoryBarrierShared ( global void)
-0:22      subgroupMemoryBarrierImage ( global void)
+ERROR: node is still EOpNull!
+0:3  Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
+0:3    Function Parameters: 
+0:3      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:6      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:7      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:8      subgroupBarrier ( global void)
+0:9      subgroupMemoryBarrier ( global void)
+0:10      subgroupMemoryBarrierBuffer ( global void)
+0:11      subgroupMemoryBarrierImage ( global void)
+0:12      subgroupElect ( global bool)
+0:13      'gl_NumSubgroups' ( in uint NumSubgroups)
+0:14      'gl_SubgroupID' ( in uint SubgroupID)
+0:15      subgroupMemoryBarrierShared ( global void)
+0:17      subgroupAll ( global bool)
+0:17        Constant:
+0:17          true (const bool)
+0:18      subgroupAny ( global bool)
+0:18        Constant:
+0:18          false (const bool)
+0:19      subgroupAllEqual ( global bool)
+0:19        'f4' ( in 4-component vector of float)
+0:21      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:22      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:23      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:24      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:25      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:26      subgroupBroadcast ( global 4-component vector of float)
+0:26        'f4' ( in 4-component vector of float)
+0:26        Constant:
+0:26          0 (const uint)
+0:27      subgroupBroadcastFirst ( global 4-component vector of float)
+0:27        'f4' ( in 4-component vector of float)
+0:28      Sequence
+0:28        move second child to first child ( temp 4-component vector of uint)
+0:28          'ballot' ( temp 4-component vector of uint)
+0:28          subgroupBallot ( global 4-component vector of uint)
+0:28            Constant:
+0:28              false (const bool)
+0:29      subgroupInverseBallot ( global bool)
+0:29        Constant:
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:30      subgroupBallotBitExtract ( global bool)
+0:30        'ballot' ( temp 4-component vector of uint)
+0:30        Constant:
+0:30          0 (const uint)
+0:31      subgroupBallotBitCount ( global uint)
+0:31        'ballot' ( temp 4-component vector of uint)
+0:32      subgroupBallotInclusiveBitCount ( global uint)
+0:32        'ballot' ( temp 4-component vector of uint)
+0:33      subgroupBallotExclusiveBitCount ( global uint)
+0:33        'ballot' ( temp 4-component vector of uint)
+0:34      subgroupBallotFindLSB ( global uint)
+0:34        'ballot' ( temp 4-component vector of uint)
+0:35      subgroupBallotFindMSB ( global uint)
+0:35        'ballot' ( temp 4-component vector of uint)
+0:37      subgroupShuffle ( global 4-component vector of float)
+0:37        'f4' ( in 4-component vector of float)
+0:37        Constant:
+0:37          0 (const uint)
+0:38      subgroupShuffleXor ( global 4-component vector of float)
+0:38        'f4' ( in 4-component vector of float)
+0:38        Constant:
+0:38          1 (const uint)
+0:39      subgroupShuffleUp ( global 4-component vector of float)
+0:39        'f4' ( in 4-component vector of float)
+0:39        Constant:
+0:39          1 (const uint)
+0:40      subgroupShuffleDown ( global 4-component vector of float)
+0:40        'f4' ( in 4-component vector of float)
+0:40        Constant:
+0:40          1 (const uint)
+0:42      move second child to first child ( temp 4-component vector of float)
+0:42        'result' ( temp 4-component vector of float)
+0:42        subgroupAdd ( global 4-component vector of float)
+0:42          'f4' ( in 4-component vector of float)
+0:43      subgroupMul ( global 4-component vector of float)
+0:43        'f4' ( in 4-component vector of float)
+0:44      subgroupMin ( global 4-component vector of float)
+0:44        'f4' ( in 4-component vector of float)
+0:45      subgroupMax ( global 4-component vector of float)
+0:45        'f4' ( in 4-component vector of float)
+0:46      subgroupAnd ( global 4-component vector of uint)
+0:46        'ballot' ( temp 4-component vector of uint)
+0:47      subgroupOr ( global 4-component vector of uint)
+0:47        'ballot' ( temp 4-component vector of uint)
+0:48      subgroupXor ( global 4-component vector of uint)
+0:48        'ballot' ( temp 4-component vector of uint)
+0:49      subgroupInclusiveAdd ( global 4-component vector of float)
+0:49        'f4' ( in 4-component vector of float)
+0:50      subgroupInclusiveMul ( global 4-component vector of float)
+0:50        'f4' ( in 4-component vector of float)
+0:51      subgroupInclusiveMin ( global 4-component vector of float)
+0:51        'f4' ( in 4-component vector of float)
+0:52      subgroupInclusiveMax ( global 4-component vector of float)
+0:52        'f4' ( in 4-component vector of float)
+0:53      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:53        'ballot' ( temp 4-component vector of uint)
+0:54      subgroupInclusiveOr ( global 4-component vector of uint)
+0:54        'ballot' ( temp 4-component vector of uint)
+0:55      subgroupInclusiveXor ( global 4-component vector of uint)
+0:55        'ballot' ( temp 4-component vector of uint)
+0:56      subgroupExclusiveAdd ( global 4-component vector of float)
+0:56        'f4' ( in 4-component vector of float)
+0:57      subgroupExclusiveMul ( global 4-component vector of float)
+0:57        'f4' ( in 4-component vector of float)
+0:58      subgroupExclusiveMin ( global 4-component vector of float)
+0:58        'f4' ( in 4-component vector of float)
+0:59      subgroupExclusiveMax ( global 4-component vector of float)
+0:59        'f4' ( in 4-component vector of float)
+0:60      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:60        'ballot' ( temp 4-component vector of uint)
+0:61      subgroupExclusiveOr ( global 4-component vector of uint)
+0:61        'ballot' ( temp 4-component vector of uint)
+0:62      subgroupExclusiveXor ( global 4-component vector of uint)
+0:62        'ballot' ( temp 4-component vector of uint)
+0:64      subgroupClusteredAdd ( global 4-component vector of float)
+0:64        'f4' ( in 4-component vector of float)
+0:64        Constant:
+0:64          2 (const uint)
+0:65      subgroupClusteredMul ( global 4-component vector of float)
+0:65        'f4' ( in 4-component vector of float)
+0:65        Constant:
+0:65          2 (const uint)
+0:66      subgroupClusteredMin ( global 4-component vector of float)
+0:66        'f4' ( in 4-component vector of float)
+0:66        Constant:
+0:66          2 (const uint)
+0:67      subgroupClusteredMax ( global 4-component vector of float)
+0:67        'f4' ( in 4-component vector of float)
+0:67        Constant:
+0:67          2 (const uint)
+0:68      subgroupClusteredAnd ( global 4-component vector of uint)
+0:68        'ballot' ( temp 4-component vector of uint)
+0:68        Constant:
+0:68          2 (const uint)
+0:69      subgroupClusteredOr ( global 4-component vector of uint)
+0:69        'ballot' ( temp 4-component vector of uint)
+0:69        Constant:
+0:69          2 (const uint)
+0:70      subgroupClusteredXor ( global 4-component vector of uint)
+0:70        'ballot' ( temp 4-component vector of uint)
+0:70        Constant:
+0:70          2 (const uint)
+0:72      subgroupQuadBroadcast ( global 4-component vector of float)
+0:72        'f4' ( in 4-component vector of float)
+0:72        Constant:
+0:72          0 (const uint)
+0:73      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:73        'f4' ( in 4-component vector of float)
+0:74      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:74        'f4' ( in 4-component vector of float)
+0:75      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:75        'f4' ( in 4-component vector of float)
+0:77      Sequence
+0:77        move second child to first child ( temp 4-component vector of uint)
+0:77          'parti' ( temp 4-component vector of uint)
+0:77          subgroupPartitionNV ( global 4-component vector of uint)
+0:77            'f4' ( in 4-component vector of float)
+0:78      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:78        'f4' ( in 4-component vector of float)
+0:78        'parti' ( temp 4-component vector of uint)
+0:79      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:79        'f4' ( in 4-component vector of float)
+0:79        'parti' ( temp 4-component vector of uint)
+0:80      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:80        'f4' ( in 4-component vector of float)
+0:80        'parti' ( temp 4-component vector of uint)
+0:81      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:81        'f4' ( in 4-component vector of float)
+0:81        'parti' ( temp 4-component vector of uint)
+0:82      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:82        'ballot' ( temp 4-component vector of uint)
+0:82        'parti' ( temp 4-component vector of uint)
+0:83      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:83        'ballot' ( temp 4-component vector of uint)
+0:83        'parti' ( temp 4-component vector of uint)
+0:84      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:84        'ballot' ( temp 4-component vector of uint)
+0:84        'parti' ( temp 4-component vector of uint)
+0:85      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:85        'f4' ( in 4-component vector of float)
+0:85        'parti' ( temp 4-component vector of uint)
+0:86      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:86        'f4' ( in 4-component vector of float)
+0:86        'parti' ( temp 4-component vector of uint)
+0:87      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:87        'f4' ( in 4-component vector of float)
+0:87        'parti' ( temp 4-component vector of uint)
+0:88      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:88        'f4' ( in 4-component vector of float)
+0:88        'parti' ( temp 4-component vector of uint)
+0:89      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:89        'ballot' ( temp 4-component vector of uint)
+0:89        'parti' ( temp 4-component vector of uint)
+0:90      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:90        'ballot' ( temp 4-component vector of uint)
+0:90        'parti' ( temp 4-component vector of uint)
+0:91      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:91        'ballot' ( temp 4-component vector of uint)
+0:91        'parti' ( temp 4-component vector of uint)
+0:92      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:92        'f4' ( in 4-component vector of float)
+0:92        'parti' ( temp 4-component vector of uint)
+0:93      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:93        'f4' ( in 4-component vector of float)
+0:93        'parti' ( temp 4-component vector of uint)
+0:94      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:94        'f4' ( in 4-component vector of float)
+0:94        'parti' ( temp 4-component vector of uint)
+0:95      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:95        'f4' ( in 4-component vector of float)
+0:95        'parti' ( temp 4-component vector of uint)
+0:96      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:96        'ballot' ( temp 4-component vector of uint)
+0:96        'parti' ( temp 4-component vector of uint)
+0:97      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:97        'ballot' ( temp 4-component vector of uint)
+0:97        'parti' ( temp 4-component vector of uint)
+0:98      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:98        'ballot' ( temp 4-component vector of uint)
+0:98        'parti' ( temp 4-component vector of uint)
+0:100      Branch: Return with expression
+0:100        'result' ( temp 4-component vector of float)
+0:112  Function Definition: main( ( global void)
+0:112    Function Parameters: 
+0:114    Sequence
+0:114      move second child to first child ( temp int)
+0:114        indirect index (layout( column_major shared) temp int)
+0:114          a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
+0:114            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
+0:114            Constant:
+0:114              0 (const int)
+0:114          'gl_SubgroupSize' ( in uint SubgroupSize)
+0:114        Constant:
+0:114          1 (const int)
+0:115      move second child to first child ( temp int)
+0:115        indirect index (layout( column_major shared) temp int)
+0:115          a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
+0:115            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
+0:115            Constant:
+0:115              0 (const int)
+0:115          'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:115        Constant:
+0:115          1 (const int)
+0:116      move second child to first child ( temp int)
+0:116        indirect index (layout( column_major shared) temp int)
+0:116          a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
+0:116            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
+0:116            Constant:
+0:116              0 (const int)
+0:116          'gl_NumSubgroups' ( in uint NumSubgroups)
+0:116        Constant:
+0:116          1 (const int)
+0:117      move second child to first child ( temp int)
+0:117        indirect index (layout( column_major shared) temp int)
+0:117          a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
+0:117            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
+0:117            Constant:
+0:117              0 (const int)
+0:117          'gl_SubgroupID' ( in uint SubgroupID)
+0:117        Test condition and select ( temp int)
+0:117          Condition
+0:117          subgroupElect ( global bool)
+0:117          true case
+0:117          Constant:
+0:117            1 (const int)
+0:117          false case
+0:117          Constant:
+0:117            0 (const int)
+0:118      subgroupBarrier ( global void)
+0:119      subgroupMemoryBarrier ( global void)
+0:120      subgroupMemoryBarrierBuffer ( global void)
+0:121      subgroupMemoryBarrierShared ( global void)
+0:122      subgroupMemoryBarrierImage ( global void)
+0:126  Function Definition: ballot_works(vf4; ( global void)
+0:126    Function Parameters: 
+0:126      'f4' ( in 4-component vector of float)
+0:127    Sequence
+0:127      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:128      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:129      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:130      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:131      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:132      subgroupBroadcast ( global 4-component vector of float)
+0:132        'f4' ( in 4-component vector of float)
+0:132        Constant:
+0:132          0 (const uint)
+0:133      subgroupBroadcastFirst ( global 4-component vector of float)
+0:133        'f4' ( in 4-component vector of float)
+0:134      Sequence
+0:134        move second child to first child ( temp 4-component vector of uint)
+0:134          'ballot' ( temp 4-component vector of uint)
+0:134          subgroupBallot ( global 4-component vector of uint)
+0:134            Constant:
+0:134              false (const bool)
+0:135      subgroupInverseBallot ( global bool)
+0:135        Constant:
+0:135          1 (const uint)
+0:135          1 (const uint)
+0:135          1 (const uint)
+0:135          1 (const uint)
+0:136      subgroupBallotBitExtract ( global bool)
+0:136        'ballot' ( temp 4-component vector of uint)
+0:136        Constant:
+0:136          0 (const uint)
+0:137      subgroupBallotBitCount ( global uint)
+0:137        'ballot' ( temp 4-component vector of uint)
+0:138      subgroupBallotInclusiveBitCount ( global uint)
+0:138        'ballot' ( temp 4-component vector of uint)
+0:139      subgroupBallotExclusiveBitCount ( global uint)
+0:139        'ballot' ( temp 4-component vector of uint)
+0:140      subgroupBallotFindLSB ( global uint)
+0:140        'ballot' ( temp 4-component vector of uint)
+0:141      subgroupBallotFindMSB ( global uint)
+0:141        'ballot' ( temp 4-component vector of uint)
+0:145  Function Definition: vote_works(vf4; ( global void)
+0:145    Function Parameters: 
+0:145      'f4' ( in 4-component vector of float)
+0:147    Sequence
+0:147      subgroupAll ( global bool)
+0:147        Constant:
+0:147          true (const bool)
+0:148      subgroupAny ( global bool)
+0:148        Constant:
+0:148          false (const bool)
+0:149      subgroupAllEqual ( global bool)
+0:149        'f4' ( in 4-component vector of float)
+0:154  Function Definition: shuffle_works(vf4; ( global void)
+0:154    Function Parameters: 
+0:154      'f4' ( in 4-component vector of float)
+0:156    Sequence
+0:156      subgroupShuffle ( global 4-component vector of float)
+0:156        'f4' ( in 4-component vector of float)
+0:156        Constant:
+0:156          0 (const uint)
+0:157      subgroupShuffleXor ( global 4-component vector of float)
+0:157        'f4' ( in 4-component vector of float)
+0:157        Constant:
+0:157          1 (const uint)
+0:158      subgroupShuffleUp ( global 4-component vector of float)
+0:158        'f4' ( in 4-component vector of float)
+0:158        Constant:
+0:158          1 (const uint)
+0:159      subgroupShuffleDown ( global 4-component vector of float)
+0:159        'f4' ( in 4-component vector of float)
+0:159        Constant:
+0:159          1 (const uint)
+0:163  Function Definition: arith_works(vf4; ( global void)
+0:163    Function Parameters: 
+0:163      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:166      subgroupAdd ( global 4-component vector of float)
+0:166        'f4' ( in 4-component vector of float)
+0:167      subgroupMul ( global 4-component vector of float)
+0:167        'f4' ( in 4-component vector of float)
+0:168      subgroupMin ( global 4-component vector of float)
+0:168        'f4' ( in 4-component vector of float)
+0:169      subgroupMax ( global 4-component vector of float)
+0:169        'f4' ( in 4-component vector of float)
+0:170      subgroupAnd ( global 4-component vector of uint)
+0:170        'ballot' ( temp 4-component vector of uint)
+0:171      subgroupOr ( global 4-component vector of uint)
+0:171        'ballot' ( temp 4-component vector of uint)
+0:172      subgroupXor ( global 4-component vector of uint)
+0:172        'ballot' ( temp 4-component vector of uint)
+0:173      subgroupInclusiveAdd ( global 4-component vector of float)
+0:173        'f4' ( in 4-component vector of float)
+0:174      subgroupInclusiveMul ( global 4-component vector of float)
+0:174        'f4' ( in 4-component vector of float)
+0:175      subgroupInclusiveMin ( global 4-component vector of float)
+0:175        'f4' ( in 4-component vector of float)
+0:176      subgroupInclusiveMax ( global 4-component vector of float)
+0:176        'f4' ( in 4-component vector of float)
+0:177      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:177        'ballot' ( temp 4-component vector of uint)
+0:178      subgroupInclusiveOr ( global 4-component vector of uint)
+0:178        'ballot' ( temp 4-component vector of uint)
+0:179      subgroupInclusiveXor ( global 4-component vector of uint)
+0:179        'ballot' ( temp 4-component vector of uint)
+0:180      subgroupExclusiveAdd ( global 4-component vector of float)
+0:180        'f4' ( in 4-component vector of float)
+0:181      subgroupExclusiveMul ( global 4-component vector of float)
+0:181        'f4' ( in 4-component vector of float)
+0:182      subgroupExclusiveMin ( global 4-component vector of float)
+0:182        'f4' ( in 4-component vector of float)
+0:183      subgroupExclusiveMax ( global 4-component vector of float)
+0:183        'f4' ( in 4-component vector of float)
+0:184      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:184        'ballot' ( temp 4-component vector of uint)
+0:185      subgroupExclusiveOr ( global 4-component vector of uint)
+0:185        'ballot' ( temp 4-component vector of uint)
+0:186      subgroupExclusiveXor ( global 4-component vector of uint)
+0:186        'ballot' ( temp 4-component vector of uint)
+0:190  Function Definition: clustered_works(vf4; ( global void)
+0:190    Function Parameters: 
+0:190      'f4' ( in 4-component vector of float)
+0:192    Sequence
+0:192      Sequence
+0:192        move second child to first child ( temp 4-component vector of uint)
+0:192          'ballot' ( temp 4-component vector of uint)
+0:192          Constant:
+0:192            85 (const uint)
+0:192            0 (const uint)
+0:192            0 (const uint)
+0:192            0 (const uint)
+0:193      subgroupClusteredAdd ( global 4-component vector of float)
+0:193        'f4' ( in 4-component vector of float)
+0:193        Constant:
+0:193          2 (const uint)
+0:194      subgroupClusteredMul ( global 4-component vector of float)
+0:194        'f4' ( in 4-component vector of float)
+0:194        Constant:
+0:194          2 (const uint)
+0:195      subgroupClusteredMin ( global 4-component vector of float)
+0:195        'f4' ( in 4-component vector of float)
+0:195        Constant:
+0:195          2 (const uint)
+0:196      subgroupClusteredMax ( global 4-component vector of float)
+0:196        'f4' ( in 4-component vector of float)
+0:196        Constant:
+0:196          2 (const uint)
+0:197      subgroupClusteredAnd ( global 4-component vector of uint)
+0:197        'ballot' ( temp 4-component vector of uint)
+0:197        Constant:
+0:197          2 (const uint)
+0:198      subgroupClusteredOr ( global 4-component vector of uint)
+0:198        'ballot' ( temp 4-component vector of uint)
+0:198        Constant:
+0:198          2 (const uint)
+0:199      subgroupClusteredXor ( global 4-component vector of uint)
+0:199        'ballot' ( temp 4-component vector of uint)
+0:199        Constant:
+0:199          2 (const uint)
+0:203  Function Definition: quad_works(vf4; ( global void)
+0:203    Function Parameters: 
+0:203      'f4' ( in 4-component vector of float)
+0:205    Sequence
+0:205      subgroupQuadBroadcast ( global 4-component vector of float)
+0:205        'f4' ( in 4-component vector of float)
+0:205        Constant:
+0:205          0 (const uint)
+0:206      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:206        'f4' ( in 4-component vector of float)
+0:207      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:207        'f4' ( in 4-component vector of float)
+0:208      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:208        'f4' ( in 4-component vector of float)
+0:212  Function Definition: partitioned_works(vf4; ( global void)
+0:212    Function Parameters: 
+0:212      'f4' ( in 4-component vector of float)
+0:214    Sequence
+0:214      Sequence
+0:214        move second child to first child ( temp 4-component vector of uint)
+0:214          'parti' ( temp 4-component vector of uint)
+0:214          subgroupPartitionNV ( global 4-component vector of uint)
+0:214            'f4' ( in 4-component vector of float)
+0:215      Sequence
+0:215        move second child to first child ( temp 4-component vector of uint)
+0:215          'ballot' ( temp 4-component vector of uint)
+0:215          Constant:
+0:215            85 (const uint)
+0:215            0 (const uint)
+0:215            0 (const uint)
+0:215            0 (const uint)
+0:216      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:216        'f4' ( in 4-component vector of float)
+0:216        'parti' ( temp 4-component vector of uint)
+0:217      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:217        'f4' ( in 4-component vector of float)
+0:217        'parti' ( temp 4-component vector of uint)
+0:218      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:218        'f4' ( in 4-component vector of float)
+0:218        'parti' ( temp 4-component vector of uint)
+0:219      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:219        'f4' ( in 4-component vector of float)
+0:219        'parti' ( temp 4-component vector of uint)
+0:220      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:220        'ballot' ( temp 4-component vector of uint)
+0:220        'parti' ( temp 4-component vector of uint)
+0:221      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:221        'ballot' ( temp 4-component vector of uint)
+0:221        'parti' ( temp 4-component vector of uint)
+0:222      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:222        'ballot' ( temp 4-component vector of uint)
+0:222        'parti' ( temp 4-component vector of uint)
+0:223      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:223        'f4' ( in 4-component vector of float)
+0:223        'parti' ( temp 4-component vector of uint)
+0:224      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:224        'f4' ( in 4-component vector of float)
+0:224        'parti' ( temp 4-component vector of uint)
+0:225      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:225        'f4' ( in 4-component vector of float)
+0:225        'parti' ( temp 4-component vector of uint)
+0:226      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:226        'f4' ( in 4-component vector of float)
+0:226        'parti' ( temp 4-component vector of uint)
+0:227      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:227        'ballot' ( temp 4-component vector of uint)
+0:227        'parti' ( temp 4-component vector of uint)
+0:228      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:228        'ballot' ( temp 4-component vector of uint)
+0:228        'parti' ( temp 4-component vector of uint)
+0:229      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:229        'ballot' ( temp 4-component vector of uint)
+0:229        'parti' ( temp 4-component vector of uint)
+0:230      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:230        'f4' ( in 4-component vector of float)
+0:230        'parti' ( temp 4-component vector of uint)
+0:231      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:231        'f4' ( in 4-component vector of float)
+0:231        'parti' ( temp 4-component vector of uint)
+0:232      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:232        'f4' ( in 4-component vector of float)
+0:232        'parti' ( temp 4-component vector of uint)
+0:233      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:233        'f4' ( in 4-component vector of float)
+0:233        'parti' ( temp 4-component vector of uint)
+0:234      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:234        'ballot' ( temp 4-component vector of uint)
+0:234        'parti' ( temp 4-component vector of uint)
+0:235      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:235        'ballot' ( temp 4-component vector of uint)
+0:235        'parti' ( temp 4-component vector of uint)
+0:236      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:236        'ballot' ( temp 4-component vector of uint)
+0:236        'parti' ( temp 4-component vector of uint)
 0:?   Linker Objects
 0:?     'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
 0:?       8 (const uint)
@@ -66,60 +643,68 @@ Linked compute stage:
 
 
 Shader version: 450
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
 Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_shader_subgroup_partitioned
 local_size = (8, 8, 1)
-0:? Sequence
-0:12  Function Definition: main( ( global void)
-0:12    Function Parameters: 
-0:14    Sequence
-0:14      move second child to first child ( temp int)
-0:14        indirect index (layout( column_major shared) temp int)
-0:14          a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
-0:14            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
-0:14            Constant:
-0:14              0 (const int)
-0:14          'gl_SubgroupSize' ( in uint unknown built-in variable)
-0:14        Constant:
-0:14          1 (const int)
-0:15      move second child to first child ( temp int)
-0:15        indirect index (layout( column_major shared) temp int)
-0:15          a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
-0:15            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
-0:15            Constant:
-0:15              0 (const int)
-0:15          'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:15        Constant:
-0:15          1 (const int)
-0:16      move second child to first child ( temp int)
-0:16        indirect index (layout( column_major shared) temp int)
-0:16          a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
-0:16            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
-0:16            Constant:
-0:16              0 (const int)
-0:16          'gl_NumSubgroups' ( in uint unknown built-in variable)
-0:16        Constant:
-0:16          1 (const int)
-0:17      move second child to first child ( temp int)
-0:17        indirect index (layout( column_major shared) temp int)
-0:17          a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
-0:17            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
-0:17            Constant:
-0:17              0 (const int)
-0:17          'gl_SubgroupID' ( in uint unknown built-in variable)
-0:17        Test condition and select ( temp int)
-0:17          Condition
-0:17          subgroupElect ( global bool)
-0:17          true case
-0:17          Constant:
-0:17            1 (const int)
-0:17          false case
-0:17          Constant:
-0:17            0 (const int)
-0:18      subgroupBarrier ( global void)
-0:19      subgroupMemoryBarrier ( global void)
-0:20      subgroupMemoryBarrierBuffer ( global void)
-0:21      subgroupMemoryBarrierShared ( global void)
-0:22      subgroupMemoryBarrierImage ( global void)
+ERROR: node is still EOpNull!
+0:112  Function Definition: main( ( global void)
+0:112    Function Parameters: 
+0:114    Sequence
+0:114      move second child to first child ( temp int)
+0:114        indirect index (layout( column_major shared) temp int)
+0:114          a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
+0:114            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
+0:114            Constant:
+0:114              0 (const int)
+0:114          'gl_SubgroupSize' ( in uint SubgroupSize)
+0:114        Constant:
+0:114          1 (const int)
+0:115      move second child to first child ( temp int)
+0:115        indirect index (layout( column_major shared) temp int)
+0:115          a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
+0:115            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
+0:115            Constant:
+0:115              0 (const int)
+0:115          'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:115        Constant:
+0:115          1 (const int)
+0:116      move second child to first child ( temp int)
+0:116        indirect index (layout( column_major shared) temp int)
+0:116          a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
+0:116            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
+0:116            Constant:
+0:116              0 (const int)
+0:116          'gl_NumSubgroups' ( in uint NumSubgroups)
+0:116        Constant:
+0:116          1 (const int)
+0:117      move second child to first child ( temp int)
+0:117        indirect index (layout( column_major shared) temp int)
+0:117          a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
+0:117            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
+0:117            Constant:
+0:117              0 (const int)
+0:117          'gl_SubgroupID' ( in uint SubgroupID)
+0:117        Test condition and select ( temp int)
+0:117          Condition
+0:117          subgroupElect ( global bool)
+0:117          true case
+0:117          Constant:
+0:117            1 (const int)
+0:117          false case
+0:117          Constant:
+0:117            0 (const int)
+0:118      subgroupBarrier ( global void)
+0:119      subgroupMemoryBarrier ( global void)
+0:120      subgroupMemoryBarrierBuffer ( global void)
+0:121      subgroupMemoryBarrierShared ( global void)
+0:122      subgroupMemoryBarrierImage ( global void)
 0:?   Linker Objects
 0:?     'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
 0:?       8 (const uint)

+ 4 - 4
3rdparty/glslang/Test/baseResults/glsl.450.subgroupClustered.comp.out

@@ -12,8 +12,8 @@ local_size = (8, 1, 1)
 0:17          'invocation' ( temp uint)
 0:17          mod ( temp uint)
 0:17            add ( temp uint)
-0:17              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:17              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:17              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:17              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:17            Constant:
 0:17              4 (const uint)
 0:19      move second child to first child ( temp float)
@@ -2656,8 +2656,8 @@ local_size = (8, 1, 1)
 0:17          'invocation' ( temp uint)
 0:17          mod ( temp uint)
 0:17            add ( temp uint)
-0:17              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:17              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:17              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:17              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:17            Constant:
 0:17              4 (const uint)
 0:19      move second child to first child ( temp float)

+ 4 - 4
3rdparty/glslang/Test/baseResults/glsl.450.subgroupClusteredNeg.comp.out

@@ -28,8 +28,8 @@ ERROR: node is still EOpNull!
 0:20          'invocation' ( temp uint)
 0:20          mod ( temp uint)
 0:20            add ( temp uint)
-0:20              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:20              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:20              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:20              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:20            Constant:
 0:20              4 (const uint)
 0:22      move second child to first child ( temp 2-component vector of float)
@@ -358,8 +358,8 @@ ERROR: node is still EOpNull!
 0:20          'invocation' ( temp uint)
 0:20          mod ( temp uint)
 0:20            add ( temp uint)
-0:20              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:20              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:20              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:20              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:20            Constant:
 0:20              4 (const uint)
 0:22      move second child to first child ( temp 2-component vector of float)

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 101 - 200
3rdparty/glslang/Test/baseResults/glsl.450.subgroupPartitioned.comp.out


+ 4 - 4
3rdparty/glslang/Test/baseResults/glsl.450.subgroupQuad.comp.out

@@ -12,8 +12,8 @@ local_size = (8, 1, 1)
 0:17          'invocation' ( temp uint)
 0:17          mod ( temp uint)
 0:17            add ( temp uint)
-0:17              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:17              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:17              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:17              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:17            Constant:
 0:17              4 (const uint)
 0:19      move second child to first child ( temp float)
@@ -2048,8 +2048,8 @@ local_size = (8, 1, 1)
 0:17          'invocation' ( temp uint)
 0:17          mod ( temp uint)
 0:17            add ( temp uint)
-0:17              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:17              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:17              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:17              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:17            Constant:
 0:17              4 (const uint)
 0:19      move second child to first child ( temp float)

+ 4 - 4
3rdparty/glslang/Test/baseResults/glsl.450.subgroupShuffle.comp.out

@@ -12,8 +12,8 @@ local_size = (8, 8, 1)
 0:17          'invocation' ( temp uint)
 0:17          mod ( temp uint)
 0:17            add ( temp uint)
-0:17              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:17              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:17              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:17              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:17            Constant:
 0:17              4 (const uint)
 0:19      move second child to first child ( temp float)
@@ -1064,8 +1064,8 @@ local_size = (8, 8, 1)
 0:17          'invocation' ( temp uint)
 0:17          mod ( temp uint)
 0:17            add ( temp uint)
-0:17              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:17              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:17              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:17              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:17            Constant:
 0:17              4 (const uint)
 0:19      move second child to first child ( temp float)

+ 4 - 4
3rdparty/glslang/Test/baseResults/glsl.450.subgroupShuffleRelative.comp.out

@@ -12,8 +12,8 @@ local_size = (8, 8, 1)
 0:17          'invocation' ( temp uint)
 0:17          mod ( temp uint)
 0:17            add ( temp uint)
-0:17              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:17              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:17              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:17              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:17            Constant:
 0:17              4 (const uint)
 0:19      move second child to first child ( temp float)
@@ -1064,8 +1064,8 @@ local_size = (8, 8, 1)
 0:17          'invocation' ( temp uint)
 0:17          mod ( temp uint)
 0:17            add ( temp uint)
-0:17              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:17              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:17              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:17              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:17            Constant:
 0:17              4 (const uint)
 0:19      move second child to first child ( temp float)

+ 4 - 4
3rdparty/glslang/Test/baseResults/glsl.450.subgroupVote.comp.out

@@ -12,8 +12,8 @@ local_size = (8, 8, 1)
 0:18          'invocation' ( temp uint)
 0:18          mod ( temp uint)
 0:18            add ( temp uint)
-0:18              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:18              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:18              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:18              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:18            Constant:
 0:18              4 (const uint)
 0:20      Test condition and select ( temp void)
@@ -499,8 +499,8 @@ local_size = (8, 8, 1)
 0:18          'invocation' ( temp uint)
 0:18          mod ( temp uint)
 0:18            add ( temp uint)
-0:18              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:18              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:18              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:18              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:18            Constant:
 0:18              4 (const uint)
 0:20      Test condition and select ( temp void)

+ 1217 - 0
3rdparty/glslang/Test/baseResults/glsl.460.subgroup.mesh.out

@@ -0,0 +1,1217 @@
+glsl.460.subgroup.mesh
+ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:13: 'gl_NumSubgroups' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:14: 'gl_SubgroupID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:15: 'subgroupMemoryBarrierShared' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 86 compilation errors.  No code generated.
+
+
+Shader version: 460
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_mesh_shader
+Requested GL_NV_shader_subgroup_partitioned
+max_vertices = 81
+max_primitives = 32
+output primitive = triangles
+local_size = (32, 1, 1)
+ERROR: node is still EOpNull!
+0:3  Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
+0:3    Function Parameters: 
+0:3      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:6      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:7      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:8      subgroupBarrier ( global void)
+0:9      subgroupMemoryBarrier ( global void)
+0:10      subgroupMemoryBarrierBuffer ( global void)
+0:11      subgroupMemoryBarrierImage ( global void)
+0:12      subgroupElect ( global bool)
+0:13      'gl_NumSubgroups' ( in uint NumSubgroups)
+0:14      'gl_SubgroupID' ( in uint SubgroupID)
+0:15      subgroupMemoryBarrierShared ( global void)
+0:17      subgroupAll ( global bool)
+0:17        Constant:
+0:17          true (const bool)
+0:18      subgroupAny ( global bool)
+0:18        Constant:
+0:18          false (const bool)
+0:19      subgroupAllEqual ( global bool)
+0:19        'f4' ( in 4-component vector of float)
+0:21      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:22      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:23      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:24      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:25      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:26      subgroupBroadcast ( global 4-component vector of float)
+0:26        'f4' ( in 4-component vector of float)
+0:26        Constant:
+0:26          0 (const uint)
+0:27      subgroupBroadcastFirst ( global 4-component vector of float)
+0:27        'f4' ( in 4-component vector of float)
+0:28      Sequence
+0:28        move second child to first child ( temp 4-component vector of uint)
+0:28          'ballot' ( temp 4-component vector of uint)
+0:28          subgroupBallot ( global 4-component vector of uint)
+0:28            Constant:
+0:28              false (const bool)
+0:29      subgroupInverseBallot ( global bool)
+0:29        Constant:
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:30      subgroupBallotBitExtract ( global bool)
+0:30        'ballot' ( temp 4-component vector of uint)
+0:30        Constant:
+0:30          0 (const uint)
+0:31      subgroupBallotBitCount ( global uint)
+0:31        'ballot' ( temp 4-component vector of uint)
+0:32      subgroupBallotInclusiveBitCount ( global uint)
+0:32        'ballot' ( temp 4-component vector of uint)
+0:33      subgroupBallotExclusiveBitCount ( global uint)
+0:33        'ballot' ( temp 4-component vector of uint)
+0:34      subgroupBallotFindLSB ( global uint)
+0:34        'ballot' ( temp 4-component vector of uint)
+0:35      subgroupBallotFindMSB ( global uint)
+0:35        'ballot' ( temp 4-component vector of uint)
+0:37      subgroupShuffle ( global 4-component vector of float)
+0:37        'f4' ( in 4-component vector of float)
+0:37        Constant:
+0:37          0 (const uint)
+0:38      subgroupShuffleXor ( global 4-component vector of float)
+0:38        'f4' ( in 4-component vector of float)
+0:38        Constant:
+0:38          1 (const uint)
+0:39      subgroupShuffleUp ( global 4-component vector of float)
+0:39        'f4' ( in 4-component vector of float)
+0:39        Constant:
+0:39          1 (const uint)
+0:40      subgroupShuffleDown ( global 4-component vector of float)
+0:40        'f4' ( in 4-component vector of float)
+0:40        Constant:
+0:40          1 (const uint)
+0:42      move second child to first child ( temp 4-component vector of float)
+0:42        'result' ( temp 4-component vector of float)
+0:42        subgroupAdd ( global 4-component vector of float)
+0:42          'f4' ( in 4-component vector of float)
+0:43      subgroupMul ( global 4-component vector of float)
+0:43        'f4' ( in 4-component vector of float)
+0:44      subgroupMin ( global 4-component vector of float)
+0:44        'f4' ( in 4-component vector of float)
+0:45      subgroupMax ( global 4-component vector of float)
+0:45        'f4' ( in 4-component vector of float)
+0:46      subgroupAnd ( global 4-component vector of uint)
+0:46        'ballot' ( temp 4-component vector of uint)
+0:47      subgroupOr ( global 4-component vector of uint)
+0:47        'ballot' ( temp 4-component vector of uint)
+0:48      subgroupXor ( global 4-component vector of uint)
+0:48        'ballot' ( temp 4-component vector of uint)
+0:49      subgroupInclusiveAdd ( global 4-component vector of float)
+0:49        'f4' ( in 4-component vector of float)
+0:50      subgroupInclusiveMul ( global 4-component vector of float)
+0:50        'f4' ( in 4-component vector of float)
+0:51      subgroupInclusiveMin ( global 4-component vector of float)
+0:51        'f4' ( in 4-component vector of float)
+0:52      subgroupInclusiveMax ( global 4-component vector of float)
+0:52        'f4' ( in 4-component vector of float)
+0:53      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:53        'ballot' ( temp 4-component vector of uint)
+0:54      subgroupInclusiveOr ( global 4-component vector of uint)
+0:54        'ballot' ( temp 4-component vector of uint)
+0:55      subgroupInclusiveXor ( global 4-component vector of uint)
+0:55        'ballot' ( temp 4-component vector of uint)
+0:56      subgroupExclusiveAdd ( global 4-component vector of float)
+0:56        'f4' ( in 4-component vector of float)
+0:57      subgroupExclusiveMul ( global 4-component vector of float)
+0:57        'f4' ( in 4-component vector of float)
+0:58      subgroupExclusiveMin ( global 4-component vector of float)
+0:58        'f4' ( in 4-component vector of float)
+0:59      subgroupExclusiveMax ( global 4-component vector of float)
+0:59        'f4' ( in 4-component vector of float)
+0:60      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:60        'ballot' ( temp 4-component vector of uint)
+0:61      subgroupExclusiveOr ( global 4-component vector of uint)
+0:61        'ballot' ( temp 4-component vector of uint)
+0:62      subgroupExclusiveXor ( global 4-component vector of uint)
+0:62        'ballot' ( temp 4-component vector of uint)
+0:64      subgroupClusteredAdd ( global 4-component vector of float)
+0:64        'f4' ( in 4-component vector of float)
+0:64        Constant:
+0:64          2 (const uint)
+0:65      subgroupClusteredMul ( global 4-component vector of float)
+0:65        'f4' ( in 4-component vector of float)
+0:65        Constant:
+0:65          2 (const uint)
+0:66      subgroupClusteredMin ( global 4-component vector of float)
+0:66        'f4' ( in 4-component vector of float)
+0:66        Constant:
+0:66          2 (const uint)
+0:67      subgroupClusteredMax ( global 4-component vector of float)
+0:67        'f4' ( in 4-component vector of float)
+0:67        Constant:
+0:67          2 (const uint)
+0:68      subgroupClusteredAnd ( global 4-component vector of uint)
+0:68        'ballot' ( temp 4-component vector of uint)
+0:68        Constant:
+0:68          2 (const uint)
+0:69      subgroupClusteredOr ( global 4-component vector of uint)
+0:69        'ballot' ( temp 4-component vector of uint)
+0:69        Constant:
+0:69          2 (const uint)
+0:70      subgroupClusteredXor ( global 4-component vector of uint)
+0:70        'ballot' ( temp 4-component vector of uint)
+0:70        Constant:
+0:70          2 (const uint)
+0:72      subgroupQuadBroadcast ( global 4-component vector of float)
+0:72        'f4' ( in 4-component vector of float)
+0:72        Constant:
+0:72          0 (const uint)
+0:73      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:73        'f4' ( in 4-component vector of float)
+0:74      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:74        'f4' ( in 4-component vector of float)
+0:75      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:75        'f4' ( in 4-component vector of float)
+0:77      Sequence
+0:77        move second child to first child ( temp 4-component vector of uint)
+0:77          'parti' ( temp 4-component vector of uint)
+0:77          subgroupPartitionNV ( global 4-component vector of uint)
+0:77            'f4' ( in 4-component vector of float)
+0:78      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:78        'f4' ( in 4-component vector of float)
+0:78        'parti' ( temp 4-component vector of uint)
+0:79      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:79        'f4' ( in 4-component vector of float)
+0:79        'parti' ( temp 4-component vector of uint)
+0:80      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:80        'f4' ( in 4-component vector of float)
+0:80        'parti' ( temp 4-component vector of uint)
+0:81      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:81        'f4' ( in 4-component vector of float)
+0:81        'parti' ( temp 4-component vector of uint)
+0:82      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:82        'ballot' ( temp 4-component vector of uint)
+0:82        'parti' ( temp 4-component vector of uint)
+0:83      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:83        'ballot' ( temp 4-component vector of uint)
+0:83        'parti' ( temp 4-component vector of uint)
+0:84      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:84        'ballot' ( temp 4-component vector of uint)
+0:84        'parti' ( temp 4-component vector of uint)
+0:85      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:85        'f4' ( in 4-component vector of float)
+0:85        'parti' ( temp 4-component vector of uint)
+0:86      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:86        'f4' ( in 4-component vector of float)
+0:86        'parti' ( temp 4-component vector of uint)
+0:87      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:87        'f4' ( in 4-component vector of float)
+0:87        'parti' ( temp 4-component vector of uint)
+0:88      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:88        'f4' ( in 4-component vector of float)
+0:88        'parti' ( temp 4-component vector of uint)
+0:89      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:89        'ballot' ( temp 4-component vector of uint)
+0:89        'parti' ( temp 4-component vector of uint)
+0:90      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:90        'ballot' ( temp 4-component vector of uint)
+0:90        'parti' ( temp 4-component vector of uint)
+0:91      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:91        'ballot' ( temp 4-component vector of uint)
+0:91        'parti' ( temp 4-component vector of uint)
+0:92      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:92        'f4' ( in 4-component vector of float)
+0:92        'parti' ( temp 4-component vector of uint)
+0:93      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:93        'f4' ( in 4-component vector of float)
+0:93        'parti' ( temp 4-component vector of uint)
+0:94      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:94        'f4' ( in 4-component vector of float)
+0:94        'parti' ( temp 4-component vector of uint)
+0:95      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:95        'f4' ( in 4-component vector of float)
+0:95        'parti' ( temp 4-component vector of uint)
+0:96      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:96        'ballot' ( temp 4-component vector of uint)
+0:96        'parti' ( temp 4-component vector of uint)
+0:97      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:97        'ballot' ( temp 4-component vector of uint)
+0:97        'parti' ( temp 4-component vector of uint)
+0:98      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:98        'ballot' ( temp 4-component vector of uint)
+0:98        'parti' ( temp 4-component vector of uint)
+0:100      Branch: Return with expression
+0:100        'result' ( temp 4-component vector of float)
+0:120  Function Definition: main( ( global void)
+0:120    Function Parameters: 
+0:122    Sequence
+0:122      Sequence
+0:122        move second child to first child ( temp uint)
+0:122          'iid' ( temp uint)
+0:122          direct index ( temp uint)
+0:122            'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID)
+0:122            Constant:
+0:122              0 (const int)
+0:123      Sequence
+0:123        move second child to first child ( temp uint)
+0:123          'gid' ( temp uint)
+0:123          direct index ( temp uint)
+0:123            'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID)
+0:123            Constant:
+0:123              0 (const int)
+0:125      move second child to first child ( temp 4-component vector of float)
+0:125        gl_Position: direct index for structure ( out 4-component vector of float Position)
+0:125          indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:125            'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:125            'iid' ( temp uint)
+0:125          Constant:
+0:125            0 (const int)
+0:125        Constant:
+0:125          1.000000
+0:125          1.000000
+0:125          1.000000
+0:125          1.000000
+0:126      move second child to first child ( temp float)
+0:126        gl_PointSize: direct index for structure ( out float PointSize)
+0:126          indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:126            'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:126            'iid' ( temp uint)
+0:126          Constant:
+0:126            1 (const int)
+0:126        Constant:
+0:126          2.000000
+0:127      move second child to first child ( temp float)
+0:127        direct index ( temp float ClipDistance)
+0:127          gl_ClipDistance: direct index for structure ( out unsized 4-element array of float ClipDistance)
+0:127            indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:127              'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:127              'iid' ( temp uint)
+0:127            Constant:
+0:127              2 (const int)
+0:127          Constant:
+0:127            3 (const int)
+0:127        Constant:
+0:127          3.000000
+0:128      move second child to first child ( temp float)
+0:128        direct index ( temp float CullDistance)
+0:128          gl_CullDistance: direct index for structure ( out unsized 3-element array of float CullDistance)
+0:128            indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:128              'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:128              'iid' ( temp uint)
+0:128            Constant:
+0:128              3 (const int)
+0:128          Constant:
+0:128            2 (const int)
+0:128        Constant:
+0:128          4.000000
+0:130      MemoryBarrierShared ( global void)
+0:130      Barrier ( global void)
+0:132      move second child to first child ( temp 4-component vector of float)
+0:132        gl_Position: direct index for structure ( out 4-component vector of float Position)
+0:132          indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:132            'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:132            add ( temp uint)
+0:132              'iid' ( temp uint)
+0:132              Constant:
+0:132                1 (const uint)
+0:132          Constant:
+0:132            0 (const int)
+0:132        gl_Position: direct index for structure ( out 4-component vector of float Position)
+0:132          indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:132            'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:132            'iid' ( temp uint)
+0:132          Constant:
+0:132            0 (const int)
+0:133      move second child to first child ( temp float)
+0:133        gl_PointSize: direct index for structure ( out float PointSize)
+0:133          indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:133            'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:133            add ( temp uint)
+0:133              'iid' ( temp uint)
+0:133              Constant:
+0:133                1 (const uint)
+0:133          Constant:
+0:133            1 (const int)
+0:133        gl_PointSize: direct index for structure ( out float PointSize)
+0:133          indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:133            'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:133            'iid' ( temp uint)
+0:133          Constant:
+0:133            1 (const int)
+0:134      move second child to first child ( temp float)
+0:134        direct index ( temp float ClipDistance)
+0:134          gl_ClipDistance: direct index for structure ( out unsized 4-element array of float ClipDistance)
+0:134            indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:134              'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:134              add ( temp uint)
+0:134                'iid' ( temp uint)
+0:134                Constant:
+0:134                  1 (const uint)
+0:134            Constant:
+0:134              2 (const int)
+0:134          Constant:
+0:134            3 (const int)
+0:134        direct index ( temp float ClipDistance)
+0:134          gl_ClipDistance: direct index for structure ( out unsized 4-element array of float ClipDistance)
+0:134            indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:134              'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:134              'iid' ( temp uint)
+0:134            Constant:
+0:134              2 (const int)
+0:134          Constant:
+0:134            3 (const int)
+0:135      move second child to first child ( temp float)
+0:135        direct index ( temp float CullDistance)
+0:135          gl_CullDistance: direct index for structure ( out unsized 3-element array of float CullDistance)
+0:135            indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:135              'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:135              add ( temp uint)
+0:135                'iid' ( temp uint)
+0:135                Constant:
+0:135                  1 (const uint)
+0:135            Constant:
+0:135              3 (const int)
+0:135          Constant:
+0:135            2 (const int)
+0:135        direct index ( temp float CullDistance)
+0:135          gl_CullDistance: direct index for structure ( out unsized 3-element array of float CullDistance)
+0:135            indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:135              'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:135              'iid' ( temp uint)
+0:135            Constant:
+0:135              3 (const int)
+0:135          Constant:
+0:135            2 (const int)
+0:137      MemoryBarrierShared ( global void)
+0:137      Barrier ( global void)
+0:139      move second child to first child ( temp int)
+0:139        gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID)
+0:139          indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:139            'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:139            'iid' ( temp uint)
+0:139          Constant:
+0:139            0 (const int)
+0:139        Constant:
+0:139          6 (const int)
+0:140      move second child to first child ( temp int)
+0:140        gl_Layer: direct index for structure ( perprimitiveNV out int Layer)
+0:140          indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:140            'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:140            'iid' ( temp uint)
+0:140          Constant:
+0:140            1 (const int)
+0:140        Constant:
+0:140          7 (const int)
+0:141      move second child to first child ( temp int)
+0:141        gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex)
+0:141          indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:141            'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:141            'iid' ( temp uint)
+0:141          Constant:
+0:141            2 (const int)
+0:141        Constant:
+0:141          8 (const int)
+0:142      move second child to first child ( temp int)
+0:142        direct index ( perprimitiveNV temp int ViewportMaskNV)
+0:142          gl_ViewportMask: direct index for structure ( perprimitiveNV out unsized 1-element array of int ViewportMaskNV)
+0:142            indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:142              'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:142              'iid' ( temp uint)
+0:142            Constant:
+0:142              3 (const int)
+0:142          Constant:
+0:142            0 (const int)
+0:142        Constant:
+0:142          9 (const int)
+0:144      MemoryBarrierShared ( global void)
+0:144      Barrier ( global void)
+0:146      move second child to first child ( temp int)
+0:146        gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID)
+0:146          indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:146            'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:146            add ( temp uint)
+0:146              'iid' ( temp uint)
+0:146              Constant:
+0:146                1 (const uint)
+0:146          Constant:
+0:146            0 (const int)
+0:146        gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID)
+0:146          indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:146            'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:146            'iid' ( temp uint)
+0:146          Constant:
+0:146            0 (const int)
+0:147      move second child to first child ( temp int)
+0:147        gl_Layer: direct index for structure ( perprimitiveNV out int Layer)
+0:147          indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:147            'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:147            add ( temp uint)
+0:147              'iid' ( temp uint)
+0:147              Constant:
+0:147                1 (const uint)
+0:147          Constant:
+0:147            1 (const int)
+0:147        gl_Layer: direct index for structure ( perprimitiveNV out int Layer)
+0:147          indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:147            'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:147            'iid' ( temp uint)
+0:147          Constant:
+0:147            1 (const int)
+0:148      move second child to first child ( temp int)
+0:148        gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex)
+0:148          indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:148            'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:148            add ( temp uint)
+0:148              'iid' ( temp uint)
+0:148              Constant:
+0:148                1 (const uint)
+0:148          Constant:
+0:148            2 (const int)
+0:148        gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex)
+0:148          indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:148            'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:148            'iid' ( temp uint)
+0:148          Constant:
+0:148            2 (const int)
+0:149      move second child to first child ( temp int)
+0:149        direct index ( perprimitiveNV temp int ViewportMaskNV)
+0:149          gl_ViewportMask: direct index for structure ( perprimitiveNV out unsized 1-element array of int ViewportMaskNV)
+0:149            indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:149              'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:149              add ( temp uint)
+0:149                'iid' ( temp uint)
+0:149                Constant:
+0:149                  1 (const uint)
+0:149            Constant:
+0:149              3 (const int)
+0:149          Constant:
+0:149            0 (const int)
+0:149        direct index ( perprimitiveNV temp int ViewportMaskNV)
+0:149          gl_ViewportMask: direct index for structure ( perprimitiveNV out unsized 1-element array of int ViewportMaskNV)
+0:149            indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:149              'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:149              'iid' ( temp uint)
+0:149            Constant:
+0:149              3 (const int)
+0:149          Constant:
+0:149            0 (const int)
+0:151      MemoryBarrierShared ( global void)
+0:151      Barrier ( global void)
+0:154      move second child to first child ( temp uint)
+0:154        direct index ( temp uint PrimitiveIndicesNV)
+0:154          'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV)
+0:154          Constant:
+0:154            0 (const int)
+0:154        Constant:
+0:154          257 (const uint)
+0:155      move second child to first child ( temp uint)
+0:155        direct index ( temp uint PrimitiveIndicesNV)
+0:155          'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV)
+0:155          Constant:
+0:155            95 (const int)
+0:155        Constant:
+0:155          2 (const uint)
+0:156      move second child to first child ( temp uint)
+0:156        indirect index ( temp uint PrimitiveIndicesNV)
+0:156          'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV)
+0:156          'gid' ( temp uint)
+0:156        indirect index ( temp uint PrimitiveIndicesNV)
+0:156          'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV)
+0:156          subtract ( temp uint)
+0:156            'gid' ( temp uint)
+0:156            Constant:
+0:156              1 (const uint)
+0:159      writePackedPrimitiveIndices4x8NV ( global void)
+0:159        Convert int to uint ( temp uint)
+0:159          'gl_DrawID' ( in int DrawId)
+0:159        Constant:
+0:159          16909060 (const uint)
+0:161      move second child to first child ( temp uint)
+0:161        'gl_PrimitiveCountNV' ( out uint PrimitiveCountNV)
+0:161        Constant:
+0:161          96 (const uint)
+0:163      MemoryBarrierShared ( global void)
+0:163      Barrier ( global void)
+0:167  Function Definition: basic_works( ( global void)
+0:167    Function Parameters: 
+0:169    Sequence
+0:169      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:170      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:171      subgroupBarrier ( global void)
+0:172      subgroupMemoryBarrier ( global void)
+0:173      subgroupMemoryBarrierBuffer ( global void)
+0:174      subgroupMemoryBarrierImage ( global void)
+0:175      subgroupElect ( global bool)
+0:176      'gl_NumSubgroups' ( in uint NumSubgroups)
+0:177      'gl_SubgroupID' ( in uint SubgroupID)
+0:178      subgroupMemoryBarrierShared ( global void)
+0:182  Function Definition: ballot_works(vf4; ( global void)
+0:182    Function Parameters: 
+0:182      'f4' ( in 4-component vector of float)
+0:183    Sequence
+0:183      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:184      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:185      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:186      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:187      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:188      subgroupBroadcast ( global 4-component vector of float)
+0:188        'f4' ( in 4-component vector of float)
+0:188        Constant:
+0:188          0 (const uint)
+0:189      subgroupBroadcastFirst ( global 4-component vector of float)
+0:189        'f4' ( in 4-component vector of float)
+0:190      Sequence
+0:190        move second child to first child ( temp 4-component vector of uint)
+0:190          'ballot' ( temp 4-component vector of uint)
+0:190          subgroupBallot ( global 4-component vector of uint)
+0:190            Constant:
+0:190              false (const bool)
+0:191      subgroupInverseBallot ( global bool)
+0:191        Constant:
+0:191          1 (const uint)
+0:191          1 (const uint)
+0:191          1 (const uint)
+0:191          1 (const uint)
+0:192      subgroupBallotBitExtract ( global bool)
+0:192        'ballot' ( temp 4-component vector of uint)
+0:192        Constant:
+0:192          0 (const uint)
+0:193      subgroupBallotBitCount ( global uint)
+0:193        'ballot' ( temp 4-component vector of uint)
+0:194      subgroupBallotInclusiveBitCount ( global uint)
+0:194        'ballot' ( temp 4-component vector of uint)
+0:195      subgroupBallotExclusiveBitCount ( global uint)
+0:195        'ballot' ( temp 4-component vector of uint)
+0:196      subgroupBallotFindLSB ( global uint)
+0:196        'ballot' ( temp 4-component vector of uint)
+0:197      subgroupBallotFindMSB ( global uint)
+0:197        'ballot' ( temp 4-component vector of uint)
+0:201  Function Definition: vote_works(vf4; ( global void)
+0:201    Function Parameters: 
+0:201      'f4' ( in 4-component vector of float)
+0:203    Sequence
+0:203      subgroupAll ( global bool)
+0:203        Constant:
+0:203          true (const bool)
+0:204      subgroupAny ( global bool)
+0:204        Constant:
+0:204          false (const bool)
+0:205      subgroupAllEqual ( global bool)
+0:205        'f4' ( in 4-component vector of float)
+0:210  Function Definition: shuffle_works(vf4; ( global void)
+0:210    Function Parameters: 
+0:210      'f4' ( in 4-component vector of float)
+0:212    Sequence
+0:212      subgroupShuffle ( global 4-component vector of float)
+0:212        'f4' ( in 4-component vector of float)
+0:212        Constant:
+0:212          0 (const uint)
+0:213      subgroupShuffleXor ( global 4-component vector of float)
+0:213        'f4' ( in 4-component vector of float)
+0:213        Constant:
+0:213          1 (const uint)
+0:214      subgroupShuffleUp ( global 4-component vector of float)
+0:214        'f4' ( in 4-component vector of float)
+0:214        Constant:
+0:214          1 (const uint)
+0:215      subgroupShuffleDown ( global 4-component vector of float)
+0:215        'f4' ( in 4-component vector of float)
+0:215        Constant:
+0:215          1 (const uint)
+0:219  Function Definition: arith_works(vf4; ( global void)
+0:219    Function Parameters: 
+0:219      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:222      subgroupAdd ( global 4-component vector of float)
+0:222        'f4' ( in 4-component vector of float)
+0:223      subgroupMul ( global 4-component vector of float)
+0:223        'f4' ( in 4-component vector of float)
+0:224      subgroupMin ( global 4-component vector of float)
+0:224        'f4' ( in 4-component vector of float)
+0:225      subgroupMax ( global 4-component vector of float)
+0:225        'f4' ( in 4-component vector of float)
+0:226      subgroupAnd ( global 4-component vector of uint)
+0:226        'ballot' ( temp 4-component vector of uint)
+0:227      subgroupOr ( global 4-component vector of uint)
+0:227        'ballot' ( temp 4-component vector of uint)
+0:228      subgroupXor ( global 4-component vector of uint)
+0:228        'ballot' ( temp 4-component vector of uint)
+0:229      subgroupInclusiveAdd ( global 4-component vector of float)
+0:229        'f4' ( in 4-component vector of float)
+0:230      subgroupInclusiveMul ( global 4-component vector of float)
+0:230        'f4' ( in 4-component vector of float)
+0:231      subgroupInclusiveMin ( global 4-component vector of float)
+0:231        'f4' ( in 4-component vector of float)
+0:232      subgroupInclusiveMax ( global 4-component vector of float)
+0:232        'f4' ( in 4-component vector of float)
+0:233      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:233        'ballot' ( temp 4-component vector of uint)
+0:234      subgroupInclusiveOr ( global 4-component vector of uint)
+0:234        'ballot' ( temp 4-component vector of uint)
+0:235      subgroupInclusiveXor ( global 4-component vector of uint)
+0:235        'ballot' ( temp 4-component vector of uint)
+0:236      subgroupExclusiveAdd ( global 4-component vector of float)
+0:236        'f4' ( in 4-component vector of float)
+0:237      subgroupExclusiveMul ( global 4-component vector of float)
+0:237        'f4' ( in 4-component vector of float)
+0:238      subgroupExclusiveMin ( global 4-component vector of float)
+0:238        'f4' ( in 4-component vector of float)
+0:239      subgroupExclusiveMax ( global 4-component vector of float)
+0:239        'f4' ( in 4-component vector of float)
+0:240      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:240        'ballot' ( temp 4-component vector of uint)
+0:241      subgroupExclusiveOr ( global 4-component vector of uint)
+0:241        'ballot' ( temp 4-component vector of uint)
+0:242      subgroupExclusiveXor ( global 4-component vector of uint)
+0:242        'ballot' ( temp 4-component vector of uint)
+0:246  Function Definition: clustered_works(vf4; ( global void)
+0:246    Function Parameters: 
+0:246      'f4' ( in 4-component vector of float)
+0:248    Sequence
+0:248      Sequence
+0:248        move second child to first child ( temp 4-component vector of uint)
+0:248          'ballot' ( temp 4-component vector of uint)
+0:248          Constant:
+0:248            85 (const uint)
+0:248            0 (const uint)
+0:248            0 (const uint)
+0:248            0 (const uint)
+0:249      subgroupClusteredAdd ( global 4-component vector of float)
+0:249        'f4' ( in 4-component vector of float)
+0:249        Constant:
+0:249          2 (const uint)
+0:250      subgroupClusteredMul ( global 4-component vector of float)
+0:250        'f4' ( in 4-component vector of float)
+0:250        Constant:
+0:250          2 (const uint)
+0:251      subgroupClusteredMin ( global 4-component vector of float)
+0:251        'f4' ( in 4-component vector of float)
+0:251        Constant:
+0:251          2 (const uint)
+0:252      subgroupClusteredMax ( global 4-component vector of float)
+0:252        'f4' ( in 4-component vector of float)
+0:252        Constant:
+0:252          2 (const uint)
+0:253      subgroupClusteredAnd ( global 4-component vector of uint)
+0:253        'ballot' ( temp 4-component vector of uint)
+0:253        Constant:
+0:253          2 (const uint)
+0:254      subgroupClusteredOr ( global 4-component vector of uint)
+0:254        'ballot' ( temp 4-component vector of uint)
+0:254        Constant:
+0:254          2 (const uint)
+0:255      subgroupClusteredXor ( global 4-component vector of uint)
+0:255        'ballot' ( temp 4-component vector of uint)
+0:255        Constant:
+0:255          2 (const uint)
+0:259  Function Definition: quad_works(vf4; ( global void)
+0:259    Function Parameters: 
+0:259      'f4' ( in 4-component vector of float)
+0:261    Sequence
+0:261      subgroupQuadBroadcast ( global 4-component vector of float)
+0:261        'f4' ( in 4-component vector of float)
+0:261        Constant:
+0:261          0 (const uint)
+0:262      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:262        'f4' ( in 4-component vector of float)
+0:263      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:263        'f4' ( in 4-component vector of float)
+0:264      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:264        'f4' ( in 4-component vector of float)
+0:268  Function Definition: partitioned_works(vf4; ( global void)
+0:268    Function Parameters: 
+0:268      'f4' ( in 4-component vector of float)
+0:270    Sequence
+0:270      Sequence
+0:270        move second child to first child ( temp 4-component vector of uint)
+0:270          'parti' ( temp 4-component vector of uint)
+0:270          subgroupPartitionNV ( global 4-component vector of uint)
+0:270            'f4' ( in 4-component vector of float)
+0:271      Sequence
+0:271        move second child to first child ( temp 4-component vector of uint)
+0:271          'ballot' ( temp 4-component vector of uint)
+0:271          Constant:
+0:271            85 (const uint)
+0:271            0 (const uint)
+0:271            0 (const uint)
+0:271            0 (const uint)
+0:272      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:272        'f4' ( in 4-component vector of float)
+0:272        'parti' ( temp 4-component vector of uint)
+0:273      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:273        'f4' ( in 4-component vector of float)
+0:273        'parti' ( temp 4-component vector of uint)
+0:274      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:274        'f4' ( in 4-component vector of float)
+0:274        'parti' ( temp 4-component vector of uint)
+0:275      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:275        'f4' ( in 4-component vector of float)
+0:275        'parti' ( temp 4-component vector of uint)
+0:276      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:276        'ballot' ( temp 4-component vector of uint)
+0:276        'parti' ( temp 4-component vector of uint)
+0:277      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:277        'ballot' ( temp 4-component vector of uint)
+0:277        'parti' ( temp 4-component vector of uint)
+0:278      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:278        'ballot' ( temp 4-component vector of uint)
+0:278        'parti' ( temp 4-component vector of uint)
+0:279      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:279        'f4' ( in 4-component vector of float)
+0:279        'parti' ( temp 4-component vector of uint)
+0:280      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:280        'f4' ( in 4-component vector of float)
+0:280        'parti' ( temp 4-component vector of uint)
+0:281      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:281        'f4' ( in 4-component vector of float)
+0:281        'parti' ( temp 4-component vector of uint)
+0:282      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:282        'f4' ( in 4-component vector of float)
+0:282        'parti' ( temp 4-component vector of uint)
+0:283      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:283        'ballot' ( temp 4-component vector of uint)
+0:283        'parti' ( temp 4-component vector of uint)
+0:284      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:284        'ballot' ( temp 4-component vector of uint)
+0:284        'parti' ( temp 4-component vector of uint)
+0:285      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:285        'ballot' ( temp 4-component vector of uint)
+0:285        'parti' ( temp 4-component vector of uint)
+0:286      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:286        'f4' ( in 4-component vector of float)
+0:286        'parti' ( temp 4-component vector of uint)
+0:287      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:287        'f4' ( in 4-component vector of float)
+0:287        'parti' ( temp 4-component vector of uint)
+0:288      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:288        'f4' ( in 4-component vector of float)
+0:288        'parti' ( temp 4-component vector of uint)
+0:289      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:289        'f4' ( in 4-component vector of float)
+0:289        'parti' ( temp 4-component vector of uint)
+0:290      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:290        'ballot' ( temp 4-component vector of uint)
+0:290        'parti' ( temp 4-component vector of uint)
+0:291      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:291        'ballot' ( temp 4-component vector of uint)
+0:291        'parti' ( temp 4-component vector of uint)
+0:292      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:292        'ballot' ( temp 4-component vector of uint)
+0:292        'parti' ( temp 4-component vector of uint)
+0:?   Linker Objects
+0:?     'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
+0:?       32 (const uint)
+0:?       1 (const uint)
+0:?       1 (const uint)
+0:?     'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out unsized 4-element array of float ClipDistance gl_ClipDistance,  out unsized 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of unsized-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of unsized-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:?     'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out unsized 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of unsized-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:?     'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV)
+
+
+Linked mesh stage:
+
+
+Shader version: 460
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_mesh_shader
+Requested GL_NV_shader_subgroup_partitioned
+max_vertices = 81
+max_primitives = 32
+output primitive = triangles
+local_size = (32, 1, 1)
+ERROR: node is still EOpNull!
+0:120  Function Definition: main( ( global void)
+0:120    Function Parameters: 
+0:122    Sequence
+0:122      Sequence
+0:122        move second child to first child ( temp uint)
+0:122          'iid' ( temp uint)
+0:122          direct index ( temp uint)
+0:122            'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID)
+0:122            Constant:
+0:122              0 (const int)
+0:123      Sequence
+0:123        move second child to first child ( temp uint)
+0:123          'gid' ( temp uint)
+0:123          direct index ( temp uint)
+0:123            'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID)
+0:123            Constant:
+0:123              0 (const int)
+0:125      move second child to first child ( temp 4-component vector of float)
+0:125        gl_Position: direct index for structure ( out 4-component vector of float Position)
+0:125          indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:125            'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:125            'iid' ( temp uint)
+0:125          Constant:
+0:125            0 (const int)
+0:125        Constant:
+0:125          1.000000
+0:125          1.000000
+0:125          1.000000
+0:125          1.000000
+0:126      move second child to first child ( temp float)
+0:126        gl_PointSize: direct index for structure ( out float PointSize)
+0:126          indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:126            'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:126            'iid' ( temp uint)
+0:126          Constant:
+0:126            1 (const int)
+0:126        Constant:
+0:126          2.000000
+0:127      move second child to first child ( temp float)
+0:127        direct index ( temp float ClipDistance)
+0:127          gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance)
+0:127            indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:127              'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:127              'iid' ( temp uint)
+0:127            Constant:
+0:127              2 (const int)
+0:127          Constant:
+0:127            3 (const int)
+0:127        Constant:
+0:127          3.000000
+0:128      move second child to first child ( temp float)
+0:128        direct index ( temp float CullDistance)
+0:128          gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance)
+0:128            indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:128              'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:128              'iid' ( temp uint)
+0:128            Constant:
+0:128              3 (const int)
+0:128          Constant:
+0:128            2 (const int)
+0:128        Constant:
+0:128          4.000000
+0:130      MemoryBarrierShared ( global void)
+0:130      Barrier ( global void)
+0:132      move second child to first child ( temp 4-component vector of float)
+0:132        gl_Position: direct index for structure ( out 4-component vector of float Position)
+0:132          indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:132            'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:132            add ( temp uint)
+0:132              'iid' ( temp uint)
+0:132              Constant:
+0:132                1 (const uint)
+0:132          Constant:
+0:132            0 (const int)
+0:132        gl_Position: direct index for structure ( out 4-component vector of float Position)
+0:132          indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:132            'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:132            'iid' ( temp uint)
+0:132          Constant:
+0:132            0 (const int)
+0:133      move second child to first child ( temp float)
+0:133        gl_PointSize: direct index for structure ( out float PointSize)
+0:133          indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:133            'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:133            add ( temp uint)
+0:133              'iid' ( temp uint)
+0:133              Constant:
+0:133                1 (const uint)
+0:133          Constant:
+0:133            1 (const int)
+0:133        gl_PointSize: direct index for structure ( out float PointSize)
+0:133          indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:133            'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:133            'iid' ( temp uint)
+0:133          Constant:
+0:133            1 (const int)
+0:134      move second child to first child ( temp float)
+0:134        direct index ( temp float ClipDistance)
+0:134          gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance)
+0:134            indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:134              'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:134              add ( temp uint)
+0:134                'iid' ( temp uint)
+0:134                Constant:
+0:134                  1 (const uint)
+0:134            Constant:
+0:134              2 (const int)
+0:134          Constant:
+0:134            3 (const int)
+0:134        direct index ( temp float ClipDistance)
+0:134          gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance)
+0:134            indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:134              'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:134              'iid' ( temp uint)
+0:134            Constant:
+0:134              2 (const int)
+0:134          Constant:
+0:134            3 (const int)
+0:135      move second child to first child ( temp float)
+0:135        direct index ( temp float CullDistance)
+0:135          gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance)
+0:135            indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:135              'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:135              add ( temp uint)
+0:135                'iid' ( temp uint)
+0:135                Constant:
+0:135                  1 (const uint)
+0:135            Constant:
+0:135              3 (const int)
+0:135          Constant:
+0:135            2 (const int)
+0:135        direct index ( temp float CullDistance)
+0:135          gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance)
+0:135            indirect index ( temp block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:135              'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:135              'iid' ( temp uint)
+0:135            Constant:
+0:135              3 (const int)
+0:135          Constant:
+0:135            2 (const int)
+0:137      MemoryBarrierShared ( global void)
+0:137      Barrier ( global void)
+0:139      move second child to first child ( temp int)
+0:139        gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID)
+0:139          indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:139            'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:139            'iid' ( temp uint)
+0:139          Constant:
+0:139            0 (const int)
+0:139        Constant:
+0:139          6 (const int)
+0:140      move second child to first child ( temp int)
+0:140        gl_Layer: direct index for structure ( perprimitiveNV out int Layer)
+0:140          indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:140            'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:140            'iid' ( temp uint)
+0:140          Constant:
+0:140            1 (const int)
+0:140        Constant:
+0:140          7 (const int)
+0:141      move second child to first child ( temp int)
+0:141        gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex)
+0:141          indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:141            'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:141            'iid' ( temp uint)
+0:141          Constant:
+0:141            2 (const int)
+0:141        Constant:
+0:141          8 (const int)
+0:142      move second child to first child ( temp int)
+0:142        direct index ( perprimitiveNV temp int ViewportMaskNV)
+0:142          gl_ViewportMask: direct index for structure ( perprimitiveNV out 1-element array of int ViewportMaskNV)
+0:142            indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:142              'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:142              'iid' ( temp uint)
+0:142            Constant:
+0:142              3 (const int)
+0:142          Constant:
+0:142            0 (const int)
+0:142        Constant:
+0:142          9 (const int)
+0:144      MemoryBarrierShared ( global void)
+0:144      Barrier ( global void)
+0:146      move second child to first child ( temp int)
+0:146        gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID)
+0:146          indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:146            'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:146            add ( temp uint)
+0:146              'iid' ( temp uint)
+0:146              Constant:
+0:146                1 (const uint)
+0:146          Constant:
+0:146            0 (const int)
+0:146        gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID)
+0:146          indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:146            'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:146            'iid' ( temp uint)
+0:146          Constant:
+0:146            0 (const int)
+0:147      move second child to first child ( temp int)
+0:147        gl_Layer: direct index for structure ( perprimitiveNV out int Layer)
+0:147          indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:147            'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:147            add ( temp uint)
+0:147              'iid' ( temp uint)
+0:147              Constant:
+0:147                1 (const uint)
+0:147          Constant:
+0:147            1 (const int)
+0:147        gl_Layer: direct index for structure ( perprimitiveNV out int Layer)
+0:147          indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:147            'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:147            'iid' ( temp uint)
+0:147          Constant:
+0:147            1 (const int)
+0:148      move second child to first child ( temp int)
+0:148        gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex)
+0:148          indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:148            'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:148            add ( temp uint)
+0:148              'iid' ( temp uint)
+0:148              Constant:
+0:148                1 (const uint)
+0:148          Constant:
+0:148            2 (const int)
+0:148        gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex)
+0:148          indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:148            'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:148            'iid' ( temp uint)
+0:148          Constant:
+0:148            2 (const int)
+0:149      move second child to first child ( temp int)
+0:149        direct index ( perprimitiveNV temp int ViewportMaskNV)
+0:149          gl_ViewportMask: direct index for structure ( perprimitiveNV out 1-element array of int ViewportMaskNV)
+0:149            indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:149              'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:149              add ( temp uint)
+0:149                'iid' ( temp uint)
+0:149                Constant:
+0:149                  1 (const uint)
+0:149            Constant:
+0:149              3 (const int)
+0:149          Constant:
+0:149            0 (const int)
+0:149        direct index ( perprimitiveNV temp int ViewportMaskNV)
+0:149          gl_ViewportMask: direct index for structure ( perprimitiveNV out 1-element array of int ViewportMaskNV)
+0:149            indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:149              'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:149              'iid' ( temp uint)
+0:149            Constant:
+0:149              3 (const int)
+0:149          Constant:
+0:149            0 (const int)
+0:151      MemoryBarrierShared ( global void)
+0:151      Barrier ( global void)
+0:154      move second child to first child ( temp uint)
+0:154        direct index ( temp uint PrimitiveIndicesNV)
+0:154          'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV)
+0:154          Constant:
+0:154            0 (const int)
+0:154        Constant:
+0:154          257 (const uint)
+0:155      move second child to first child ( temp uint)
+0:155        direct index ( temp uint PrimitiveIndicesNV)
+0:155          'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV)
+0:155          Constant:
+0:155            95 (const int)
+0:155        Constant:
+0:155          2 (const uint)
+0:156      move second child to first child ( temp uint)
+0:156        indirect index ( temp uint PrimitiveIndicesNV)
+0:156          'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV)
+0:156          'gid' ( temp uint)
+0:156        indirect index ( temp uint PrimitiveIndicesNV)
+0:156          'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV)
+0:156          subtract ( temp uint)
+0:156            'gid' ( temp uint)
+0:156            Constant:
+0:156              1 (const uint)
+0:159      writePackedPrimitiveIndices4x8NV ( global void)
+0:159        Convert int to uint ( temp uint)
+0:159          'gl_DrawID' ( in int DrawId)
+0:159        Constant:
+0:159          16909060 (const uint)
+0:161      move second child to first child ( temp uint)
+0:161        'gl_PrimitiveCountNV' ( out uint PrimitiveCountNV)
+0:161        Constant:
+0:161          96 (const uint)
+0:163      MemoryBarrierShared ( global void)
+0:163      Barrier ( global void)
+0:?   Linker Objects
+0:?     'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
+0:?       32 (const uint)
+0:?       1 (const uint)
+0:?       1 (const uint)
+0:?     'gl_MeshVerticesNV' ( out 81-element array of block{ out 4-component vector of float Position gl_Position,  out float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  out 3-element array of float CullDistance gl_CullDistance,  perviewNV out 4-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV,  perviewNV out 4-element array of 1-element array of float ClipDistancePerViewNV gl_ClipDistancePerViewNV,  perviewNV out 4-element array of 1-element array of float CullDistancePerViewNV gl_CullDistancePerViewNV})
+0:?     'gl_MeshPrimitivesNV' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID,  perprimitiveNV out int Layer gl_Layer,  perprimitiveNV out int ViewportIndex gl_ViewportIndex,  perprimitiveNV out 1-element array of int ViewportMaskNV gl_ViewportMask,  perprimitiveNV perviewNV out 4-element array of int LayerPerViewNV gl_LayerPerViewNV,  perprimitiveNV perviewNV out 4-element array of 1-element array of int ViewportMaskPerViewNV gl_ViewportMaskPerViewNV})
+0:?     'gl_PrimitiveIndicesNV' ( out 96-element array of uint PrimitiveIndicesNV)
+

+ 775 - 0
3rdparty/glslang/Test/baseResults/glsl.460.subgroup.rahit.out

@@ -0,0 +1,775 @@
+glsl.460.subgroup.rahit
+ERROR: 0:7: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:8: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:9: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:10: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:11: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:12: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:13: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:14: 'gl_NumSubgroups' : undeclared identifier 
+ERROR: 0:15: 'gl_SubgroupID' : undeclared identifier 
+ERROR: 0:16: 'subgroupMemoryBarrierShared' : no matching overloaded function found 
+ERROR: 0:18: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:19: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:20: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:22: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:23: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:24: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:25: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:26: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:27: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:28: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:29: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:30: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:31: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:32: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:33: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:34: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:35: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:36: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:38: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:39: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:40: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:41: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:43: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:44: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:45: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:46: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:47: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:48: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:49: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:50: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:51: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:52: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:53: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:54: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:55: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:56: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:57: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:58: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:59: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:60: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:61: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:62: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:63: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:65: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:66: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:67: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:68: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:69: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:70: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:71: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:73: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:74: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:75: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:76: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:78: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:79: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:80: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:81: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:82: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:83: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:84: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:85: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:86: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:87: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:88: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:89: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:90: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:91: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:92: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:93: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:94: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:95: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 86 compilation errors.  No code generated.
+
+
+Shader version: 460
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_ray_tracing
+Requested GL_NV_shader_subgroup_partitioned
+ERROR: node is still EOpNull!
+0:4  Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
+0:4    Function Parameters: 
+0:4      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:7      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:8      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:9      subgroupBarrier ( global void)
+0:10      subgroupMemoryBarrier ( global void)
+0:11      subgroupMemoryBarrierBuffer ( global void)
+0:12      subgroupMemoryBarrierImage ( global void)
+0:13      subgroupElect ( global bool)
+0:14      'gl_NumSubgroups' ( temp float)
+0:15      'gl_SubgroupID' ( temp float)
+0:16      Constant:
+0:16        0.000000
+0:18      subgroupAll ( global bool)
+0:18        Constant:
+0:18          true (const bool)
+0:19      subgroupAny ( global bool)
+0:19        Constant:
+0:19          false (const bool)
+0:20      subgroupAllEqual ( global bool)
+0:20        'f4' ( in 4-component vector of float)
+0:22      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:23      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:24      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:25      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:26      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:27      subgroupBroadcast ( global 4-component vector of float)
+0:27        'f4' ( in 4-component vector of float)
+0:27        Constant:
+0:27          0 (const uint)
+0:28      subgroupBroadcastFirst ( global 4-component vector of float)
+0:28        'f4' ( in 4-component vector of float)
+0:29      Sequence
+0:29        move second child to first child ( temp 4-component vector of uint)
+0:29          'ballot' ( temp 4-component vector of uint)
+0:29          subgroupBallot ( global 4-component vector of uint)
+0:29            Constant:
+0:29              false (const bool)
+0:30      subgroupInverseBallot ( global bool)
+0:30        Constant:
+0:30          1 (const uint)
+0:30          1 (const uint)
+0:30          1 (const uint)
+0:30          1 (const uint)
+0:31      subgroupBallotBitExtract ( global bool)
+0:31        'ballot' ( temp 4-component vector of uint)
+0:31        Constant:
+0:31          0 (const uint)
+0:32      subgroupBallotBitCount ( global uint)
+0:32        'ballot' ( temp 4-component vector of uint)
+0:33      subgroupBallotInclusiveBitCount ( global uint)
+0:33        'ballot' ( temp 4-component vector of uint)
+0:34      subgroupBallotExclusiveBitCount ( global uint)
+0:34        'ballot' ( temp 4-component vector of uint)
+0:35      subgroupBallotFindLSB ( global uint)
+0:35        'ballot' ( temp 4-component vector of uint)
+0:36      subgroupBallotFindMSB ( global uint)
+0:36        'ballot' ( temp 4-component vector of uint)
+0:38      subgroupShuffle ( global 4-component vector of float)
+0:38        'f4' ( in 4-component vector of float)
+0:38        Constant:
+0:38          0 (const uint)
+0:39      subgroupShuffleXor ( global 4-component vector of float)
+0:39        'f4' ( in 4-component vector of float)
+0:39        Constant:
+0:39          1 (const uint)
+0:40      subgroupShuffleUp ( global 4-component vector of float)
+0:40        'f4' ( in 4-component vector of float)
+0:40        Constant:
+0:40          1 (const uint)
+0:41      subgroupShuffleDown ( global 4-component vector of float)
+0:41        'f4' ( in 4-component vector of float)
+0:41        Constant:
+0:41          1 (const uint)
+0:43      move second child to first child ( temp 4-component vector of float)
+0:43        'result' ( temp 4-component vector of float)
+0:43        subgroupAdd ( global 4-component vector of float)
+0:43          'f4' ( in 4-component vector of float)
+0:44      subgroupMul ( global 4-component vector of float)
+0:44        'f4' ( in 4-component vector of float)
+0:45      subgroupMin ( global 4-component vector of float)
+0:45        'f4' ( in 4-component vector of float)
+0:46      subgroupMax ( global 4-component vector of float)
+0:46        'f4' ( in 4-component vector of float)
+0:47      subgroupAnd ( global 4-component vector of uint)
+0:47        'ballot' ( temp 4-component vector of uint)
+0:48      subgroupOr ( global 4-component vector of uint)
+0:48        'ballot' ( temp 4-component vector of uint)
+0:49      subgroupXor ( global 4-component vector of uint)
+0:49        'ballot' ( temp 4-component vector of uint)
+0:50      subgroupInclusiveAdd ( global 4-component vector of float)
+0:50        'f4' ( in 4-component vector of float)
+0:51      subgroupInclusiveMul ( global 4-component vector of float)
+0:51        'f4' ( in 4-component vector of float)
+0:52      subgroupInclusiveMin ( global 4-component vector of float)
+0:52        'f4' ( in 4-component vector of float)
+0:53      subgroupInclusiveMax ( global 4-component vector of float)
+0:53        'f4' ( in 4-component vector of float)
+0:54      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:54        'ballot' ( temp 4-component vector of uint)
+0:55      subgroupInclusiveOr ( global 4-component vector of uint)
+0:55        'ballot' ( temp 4-component vector of uint)
+0:56      subgroupInclusiveXor ( global 4-component vector of uint)
+0:56        'ballot' ( temp 4-component vector of uint)
+0:57      subgroupExclusiveAdd ( global 4-component vector of float)
+0:57        'f4' ( in 4-component vector of float)
+0:58      subgroupExclusiveMul ( global 4-component vector of float)
+0:58        'f4' ( in 4-component vector of float)
+0:59      subgroupExclusiveMin ( global 4-component vector of float)
+0:59        'f4' ( in 4-component vector of float)
+0:60      subgroupExclusiveMax ( global 4-component vector of float)
+0:60        'f4' ( in 4-component vector of float)
+0:61      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:61        'ballot' ( temp 4-component vector of uint)
+0:62      subgroupExclusiveOr ( global 4-component vector of uint)
+0:62        'ballot' ( temp 4-component vector of uint)
+0:63      subgroupExclusiveXor ( global 4-component vector of uint)
+0:63        'ballot' ( temp 4-component vector of uint)
+0:65      subgroupClusteredAdd ( global 4-component vector of float)
+0:65        'f4' ( in 4-component vector of float)
+0:65        Constant:
+0:65          2 (const uint)
+0:66      subgroupClusteredMul ( global 4-component vector of float)
+0:66        'f4' ( in 4-component vector of float)
+0:66        Constant:
+0:66          2 (const uint)
+0:67      subgroupClusteredMin ( global 4-component vector of float)
+0:67        'f4' ( in 4-component vector of float)
+0:67        Constant:
+0:67          2 (const uint)
+0:68      subgroupClusteredMax ( global 4-component vector of float)
+0:68        'f4' ( in 4-component vector of float)
+0:68        Constant:
+0:68          2 (const uint)
+0:69      subgroupClusteredAnd ( global 4-component vector of uint)
+0:69        'ballot' ( temp 4-component vector of uint)
+0:69        Constant:
+0:69          2 (const uint)
+0:70      subgroupClusteredOr ( global 4-component vector of uint)
+0:70        'ballot' ( temp 4-component vector of uint)
+0:70        Constant:
+0:70          2 (const uint)
+0:71      subgroupClusteredXor ( global 4-component vector of uint)
+0:71        'ballot' ( temp 4-component vector of uint)
+0:71        Constant:
+0:71          2 (const uint)
+0:73      subgroupQuadBroadcast ( global 4-component vector of float)
+0:73        'f4' ( in 4-component vector of float)
+0:73        Constant:
+0:73          0 (const uint)
+0:74      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:74        'f4' ( in 4-component vector of float)
+0:75      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:75        'f4' ( in 4-component vector of float)
+0:76      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:76        'f4' ( in 4-component vector of float)
+0:78      Sequence
+0:78        move second child to first child ( temp 4-component vector of uint)
+0:78          'parti' ( temp 4-component vector of uint)
+0:78          subgroupPartitionNV ( global 4-component vector of uint)
+0:78            'f4' ( in 4-component vector of float)
+0:79      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:79        'f4' ( in 4-component vector of float)
+0:79        'parti' ( temp 4-component vector of uint)
+0:80      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:80        'f4' ( in 4-component vector of float)
+0:80        'parti' ( temp 4-component vector of uint)
+0:81      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:81        'f4' ( in 4-component vector of float)
+0:81        'parti' ( temp 4-component vector of uint)
+0:82      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:82        'f4' ( in 4-component vector of float)
+0:82        'parti' ( temp 4-component vector of uint)
+0:83      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:83        'ballot' ( temp 4-component vector of uint)
+0:83        'parti' ( temp 4-component vector of uint)
+0:84      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:84        'ballot' ( temp 4-component vector of uint)
+0:84        'parti' ( temp 4-component vector of uint)
+0:85      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:85        'ballot' ( temp 4-component vector of uint)
+0:85        'parti' ( temp 4-component vector of uint)
+0:86      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:86        'f4' ( in 4-component vector of float)
+0:86        'parti' ( temp 4-component vector of uint)
+0:87      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:87        'f4' ( in 4-component vector of float)
+0:87        'parti' ( temp 4-component vector of uint)
+0:88      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:88        'f4' ( in 4-component vector of float)
+0:88        'parti' ( temp 4-component vector of uint)
+0:89      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:89        'f4' ( in 4-component vector of float)
+0:89        'parti' ( temp 4-component vector of uint)
+0:90      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:90        'ballot' ( temp 4-component vector of uint)
+0:90        'parti' ( temp 4-component vector of uint)
+0:91      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:91        'ballot' ( temp 4-component vector of uint)
+0:91        'parti' ( temp 4-component vector of uint)
+0:92      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:92        'ballot' ( temp 4-component vector of uint)
+0:92        'parti' ( temp 4-component vector of uint)
+0:93      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:93        'f4' ( in 4-component vector of float)
+0:93        'parti' ( temp 4-component vector of uint)
+0:94      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:94        'f4' ( in 4-component vector of float)
+0:94        'parti' ( temp 4-component vector of uint)
+0:95      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:95        'f4' ( in 4-component vector of float)
+0:95        'parti' ( temp 4-component vector of uint)
+0:96      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:96        'f4' ( in 4-component vector of float)
+0:96        'parti' ( temp 4-component vector of uint)
+0:97      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:97        'ballot' ( temp 4-component vector of uint)
+0:97        'parti' ( temp 4-component vector of uint)
+0:98      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:98        'ballot' ( temp 4-component vector of uint)
+0:98        'parti' ( temp 4-component vector of uint)
+0:99      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:99        'ballot' ( temp 4-component vector of uint)
+0:99        'parti' ( temp 4-component vector of uint)
+0:101      Branch: Return with expression
+0:101        'result' ( temp 4-component vector of float)
+0:106  Function Definition: main( ( global void)
+0:106    Function Parameters: 
+0:108    Sequence
+0:108      Sequence
+0:108        move second child to first child ( temp 3-component vector of uint)
+0:108          'v0' ( temp 3-component vector of uint)
+0:108          'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV)
+0:109      Sequence
+0:109        move second child to first child ( temp 3-component vector of uint)
+0:109          'v1' ( temp 3-component vector of uint)
+0:109          'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV)
+0:110      Sequence
+0:110        move second child to first child ( temp int)
+0:110          'v2' ( temp int)
+0:110          'gl_PrimitiveID' ( in int PrimitiveID)
+0:111      Sequence
+0:111        move second child to first child ( temp int)
+0:111          'v3' ( temp int)
+0:111          'gl_InstanceID' ( in int InstanceId)
+0:112      Sequence
+0:112        move second child to first child ( temp int)
+0:112          'v4' ( temp int)
+0:112          'gl_InstanceCustomIndexNV' ( in int InstanceCustomIndexNV)
+0:113      Sequence
+0:113        move second child to first child ( temp 3-component vector of float)
+0:113          'v5' ( temp 3-component vector of float)
+0:113          'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV)
+0:114      Sequence
+0:114        move second child to first child ( temp 3-component vector of float)
+0:114          'v6' ( temp 3-component vector of float)
+0:114          'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV)
+0:115      Sequence
+0:115        move second child to first child ( temp 3-component vector of float)
+0:115          'v7' ( temp 3-component vector of float)
+0:115          'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV)
+0:116      Sequence
+0:116        move second child to first child ( temp 3-component vector of float)
+0:116          'v8' ( temp 3-component vector of float)
+0:116          'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV)
+0:117      Sequence
+0:117        move second child to first child ( temp float)
+0:117          'v9' ( temp float)
+0:117          'gl_RayTminNV' ( in float ObjectRayTminNV)
+0:118      Sequence
+0:118        move second child to first child ( temp float)
+0:118          'v10' ( temp float)
+0:118          'gl_RayTmaxNV' ( in float ObjectRayTmaxNV)
+0:119      Sequence
+0:119        move second child to first child ( temp float)
+0:119          'v11' ( temp float)
+0:119          'gl_HitTNV' ( in float HitTNV)
+0:120      Sequence
+0:120        move second child to first child ( temp uint)
+0:120          'v12' ( temp uint)
+0:120          'gl_HitKindNV' ( in uint HitKindNV)
+0:121      Sequence
+0:121        move second child to first child ( temp 4X3 matrix of float)
+0:121          'v13' ( temp 4X3 matrix of float)
+0:121          'gl_ObjectToWorldNV' ( in 4X3 matrix of float ObjectToWorldNV)
+0:122      Sequence
+0:122        move second child to first child ( temp 4X3 matrix of float)
+0:122          'v14' ( temp 4X3 matrix of float)
+0:122          'gl_WorldToObjectNV' ( in 4X3 matrix of float WorldToObjectNV)
+0:123      move second child to first child ( temp 4-component vector of float)
+0:123        'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float)
+0:123        Constant:
+0:123          0.500000
+0:123          0.500000
+0:123          0.500000
+0:123          0.500000
+0:124      Test condition and select ( temp void)
+0:124        Condition
+0:124        Compare Equal ( temp bool)
+0:124          'v2' ( temp int)
+0:124          Constant:
+0:124            1 (const int)
+0:124        true case
+0:125        ignoreIntersectionNV ( global void)
+0:124        false case
+0:127        terminateRayNV ( global void)
+0:131  Function Definition: basic_works( ( global void)
+0:131    Function Parameters: 
+0:133    Sequence
+0:133      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:134      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:135      subgroupBarrier ( global void)
+0:136      subgroupMemoryBarrier ( global void)
+0:137      subgroupMemoryBarrierBuffer ( global void)
+0:138      subgroupMemoryBarrierImage ( global void)
+0:139      subgroupElect ( global bool)
+0:143  Function Definition: ballot_works(vf4; ( global void)
+0:143    Function Parameters: 
+0:143      'f4' ( in 4-component vector of float)
+0:144    Sequence
+0:144      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:145      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:146      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:147      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:148      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:149      subgroupBroadcast ( global 4-component vector of float)
+0:149        'f4' ( in 4-component vector of float)
+0:149        Constant:
+0:149          0 (const uint)
+0:150      subgroupBroadcastFirst ( global 4-component vector of float)
+0:150        'f4' ( in 4-component vector of float)
+0:151      Sequence
+0:151        move second child to first child ( temp 4-component vector of uint)
+0:151          'ballot' ( temp 4-component vector of uint)
+0:151          subgroupBallot ( global 4-component vector of uint)
+0:151            Constant:
+0:151              false (const bool)
+0:152      subgroupInverseBallot ( global bool)
+0:152        Constant:
+0:152          1 (const uint)
+0:152          1 (const uint)
+0:152          1 (const uint)
+0:152          1 (const uint)
+0:153      subgroupBallotBitExtract ( global bool)
+0:153        'ballot' ( temp 4-component vector of uint)
+0:153        Constant:
+0:153          0 (const uint)
+0:154      subgroupBallotBitCount ( global uint)
+0:154        'ballot' ( temp 4-component vector of uint)
+0:155      subgroupBallotInclusiveBitCount ( global uint)
+0:155        'ballot' ( temp 4-component vector of uint)
+0:156      subgroupBallotExclusiveBitCount ( global uint)
+0:156        'ballot' ( temp 4-component vector of uint)
+0:157      subgroupBallotFindLSB ( global uint)
+0:157        'ballot' ( temp 4-component vector of uint)
+0:158      subgroupBallotFindMSB ( global uint)
+0:158        'ballot' ( temp 4-component vector of uint)
+0:162  Function Definition: vote_works(vf4; ( global void)
+0:162    Function Parameters: 
+0:162      'f4' ( in 4-component vector of float)
+0:164    Sequence
+0:164      subgroupAll ( global bool)
+0:164        Constant:
+0:164          true (const bool)
+0:165      subgroupAny ( global bool)
+0:165        Constant:
+0:165          false (const bool)
+0:166      subgroupAllEqual ( global bool)
+0:166        'f4' ( in 4-component vector of float)
+0:171  Function Definition: shuffle_works(vf4; ( global void)
+0:171    Function Parameters: 
+0:171      'f4' ( in 4-component vector of float)
+0:173    Sequence
+0:173      subgroupShuffle ( global 4-component vector of float)
+0:173        'f4' ( in 4-component vector of float)
+0:173        Constant:
+0:173          0 (const uint)
+0:174      subgroupShuffleXor ( global 4-component vector of float)
+0:174        'f4' ( in 4-component vector of float)
+0:174        Constant:
+0:174          1 (const uint)
+0:175      subgroupShuffleUp ( global 4-component vector of float)
+0:175        'f4' ( in 4-component vector of float)
+0:175        Constant:
+0:175          1 (const uint)
+0:176      subgroupShuffleDown ( global 4-component vector of float)
+0:176        'f4' ( in 4-component vector of float)
+0:176        Constant:
+0:176          1 (const uint)
+0:180  Function Definition: arith_works(vf4; ( global void)
+0:180    Function Parameters: 
+0:180      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:183      subgroupAdd ( global 4-component vector of float)
+0:183        'f4' ( in 4-component vector of float)
+0:184      subgroupMul ( global 4-component vector of float)
+0:184        'f4' ( in 4-component vector of float)
+0:185      subgroupMin ( global 4-component vector of float)
+0:185        'f4' ( in 4-component vector of float)
+0:186      subgroupMax ( global 4-component vector of float)
+0:186        'f4' ( in 4-component vector of float)
+0:187      subgroupAnd ( global 4-component vector of uint)
+0:187        'ballot' ( temp 4-component vector of uint)
+0:188      subgroupOr ( global 4-component vector of uint)
+0:188        'ballot' ( temp 4-component vector of uint)
+0:189      subgroupXor ( global 4-component vector of uint)
+0:189        'ballot' ( temp 4-component vector of uint)
+0:190      subgroupInclusiveAdd ( global 4-component vector of float)
+0:190        'f4' ( in 4-component vector of float)
+0:191      subgroupInclusiveMul ( global 4-component vector of float)
+0:191        'f4' ( in 4-component vector of float)
+0:192      subgroupInclusiveMin ( global 4-component vector of float)
+0:192        'f4' ( in 4-component vector of float)
+0:193      subgroupInclusiveMax ( global 4-component vector of float)
+0:193        'f4' ( in 4-component vector of float)
+0:194      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:194        'ballot' ( temp 4-component vector of uint)
+0:195      subgroupInclusiveOr ( global 4-component vector of uint)
+0:195        'ballot' ( temp 4-component vector of uint)
+0:196      subgroupInclusiveXor ( global 4-component vector of uint)
+0:196        'ballot' ( temp 4-component vector of uint)
+0:197      subgroupExclusiveAdd ( global 4-component vector of float)
+0:197        'f4' ( in 4-component vector of float)
+0:198      subgroupExclusiveMul ( global 4-component vector of float)
+0:198        'f4' ( in 4-component vector of float)
+0:199      subgroupExclusiveMin ( global 4-component vector of float)
+0:199        'f4' ( in 4-component vector of float)
+0:200      subgroupExclusiveMax ( global 4-component vector of float)
+0:200        'f4' ( in 4-component vector of float)
+0:201      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:201        'ballot' ( temp 4-component vector of uint)
+0:202      subgroupExclusiveOr ( global 4-component vector of uint)
+0:202        'ballot' ( temp 4-component vector of uint)
+0:203      subgroupExclusiveXor ( global 4-component vector of uint)
+0:203        'ballot' ( temp 4-component vector of uint)
+0:207  Function Definition: clustered_works(vf4; ( global void)
+0:207    Function Parameters: 
+0:207      'f4' ( in 4-component vector of float)
+0:209    Sequence
+0:209      Sequence
+0:209        move second child to first child ( temp 4-component vector of uint)
+0:209          'ballot' ( temp 4-component vector of uint)
+0:209          Constant:
+0:209            85 (const uint)
+0:209            0 (const uint)
+0:209            0 (const uint)
+0:209            0 (const uint)
+0:210      subgroupClusteredAdd ( global 4-component vector of float)
+0:210        'f4' ( in 4-component vector of float)
+0:210        Constant:
+0:210          2 (const uint)
+0:211      subgroupClusteredMul ( global 4-component vector of float)
+0:211        'f4' ( in 4-component vector of float)
+0:211        Constant:
+0:211          2 (const uint)
+0:212      subgroupClusteredMin ( global 4-component vector of float)
+0:212        'f4' ( in 4-component vector of float)
+0:212        Constant:
+0:212          2 (const uint)
+0:213      subgroupClusteredMax ( global 4-component vector of float)
+0:213        'f4' ( in 4-component vector of float)
+0:213        Constant:
+0:213          2 (const uint)
+0:214      subgroupClusteredAnd ( global 4-component vector of uint)
+0:214        'ballot' ( temp 4-component vector of uint)
+0:214        Constant:
+0:214          2 (const uint)
+0:215      subgroupClusteredOr ( global 4-component vector of uint)
+0:215        'ballot' ( temp 4-component vector of uint)
+0:215        Constant:
+0:215          2 (const uint)
+0:216      subgroupClusteredXor ( global 4-component vector of uint)
+0:216        'ballot' ( temp 4-component vector of uint)
+0:216        Constant:
+0:216          2 (const uint)
+0:220  Function Definition: quad_works(vf4; ( global void)
+0:220    Function Parameters: 
+0:220      'f4' ( in 4-component vector of float)
+0:222    Sequence
+0:222      subgroupQuadBroadcast ( global 4-component vector of float)
+0:222        'f4' ( in 4-component vector of float)
+0:222        Constant:
+0:222          0 (const uint)
+0:223      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:223        'f4' ( in 4-component vector of float)
+0:224      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:224        'f4' ( in 4-component vector of float)
+0:225      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:225        'f4' ( in 4-component vector of float)
+0:229  Function Definition: partitioned_works(vf4; ( global void)
+0:229    Function Parameters: 
+0:229      'f4' ( in 4-component vector of float)
+0:231    Sequence
+0:231      Sequence
+0:231        move second child to first child ( temp 4-component vector of uint)
+0:231          'parti' ( temp 4-component vector of uint)
+0:231          subgroupPartitionNV ( global 4-component vector of uint)
+0:231            'f4' ( in 4-component vector of float)
+0:232      Sequence
+0:232        move second child to first child ( temp 4-component vector of uint)
+0:232          'ballot' ( temp 4-component vector of uint)
+0:232          Constant:
+0:232            85 (const uint)
+0:232            0 (const uint)
+0:232            0 (const uint)
+0:232            0 (const uint)
+0:233      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:233        'f4' ( in 4-component vector of float)
+0:233        'parti' ( temp 4-component vector of uint)
+0:234      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:234        'f4' ( in 4-component vector of float)
+0:234        'parti' ( temp 4-component vector of uint)
+0:235      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:235        'f4' ( in 4-component vector of float)
+0:235        'parti' ( temp 4-component vector of uint)
+0:236      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:236        'f4' ( in 4-component vector of float)
+0:236        'parti' ( temp 4-component vector of uint)
+0:237      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:237        'ballot' ( temp 4-component vector of uint)
+0:237        'parti' ( temp 4-component vector of uint)
+0:238      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:238        'ballot' ( temp 4-component vector of uint)
+0:238        'parti' ( temp 4-component vector of uint)
+0:239      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:239        'ballot' ( temp 4-component vector of uint)
+0:239        'parti' ( temp 4-component vector of uint)
+0:240      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:240        'f4' ( in 4-component vector of float)
+0:240        'parti' ( temp 4-component vector of uint)
+0:241      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:241        'f4' ( in 4-component vector of float)
+0:241        'parti' ( temp 4-component vector of uint)
+0:242      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:242        'f4' ( in 4-component vector of float)
+0:242        'parti' ( temp 4-component vector of uint)
+0:243      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:243        'f4' ( in 4-component vector of float)
+0:243        'parti' ( temp 4-component vector of uint)
+0:244      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:244        'ballot' ( temp 4-component vector of uint)
+0:244        'parti' ( temp 4-component vector of uint)
+0:245      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:245        'ballot' ( temp 4-component vector of uint)
+0:245        'parti' ( temp 4-component vector of uint)
+0:246      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:246        'ballot' ( temp 4-component vector of uint)
+0:246        'parti' ( temp 4-component vector of uint)
+0:247      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:247        'f4' ( in 4-component vector of float)
+0:247        'parti' ( temp 4-component vector of uint)
+0:248      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:248        'f4' ( in 4-component vector of float)
+0:248        'parti' ( temp 4-component vector of uint)
+0:249      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:249        'f4' ( in 4-component vector of float)
+0:249        'parti' ( temp 4-component vector of uint)
+0:250      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:250        'f4' ( in 4-component vector of float)
+0:250        'parti' ( temp 4-component vector of uint)
+0:251      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:251        'ballot' ( temp 4-component vector of uint)
+0:251        'parti' ( temp 4-component vector of uint)
+0:252      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:252        'ballot' ( temp 4-component vector of uint)
+0:252        'parti' ( temp 4-component vector of uint)
+0:253      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:253        'ballot' ( temp 4-component vector of uint)
+0:253        'parti' ( temp 4-component vector of uint)
+0:?   Linker Objects
+0:?     'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float)
+
+
+Linked any-hit stage:
+
+
+Shader version: 460
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_ray_tracing
+Requested GL_NV_shader_subgroup_partitioned
+ERROR: node is still EOpNull!
+0:106  Function Definition: main( ( global void)
+0:106    Function Parameters: 
+0:108    Sequence
+0:108      Sequence
+0:108        move second child to first child ( temp 3-component vector of uint)
+0:108          'v0' ( temp 3-component vector of uint)
+0:108          'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV)
+0:109      Sequence
+0:109        move second child to first child ( temp 3-component vector of uint)
+0:109          'v1' ( temp 3-component vector of uint)
+0:109          'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV)
+0:110      Sequence
+0:110        move second child to first child ( temp int)
+0:110          'v2' ( temp int)
+0:110          'gl_PrimitiveID' ( in int PrimitiveID)
+0:111      Sequence
+0:111        move second child to first child ( temp int)
+0:111          'v3' ( temp int)
+0:111          'gl_InstanceID' ( in int InstanceId)
+0:112      Sequence
+0:112        move second child to first child ( temp int)
+0:112          'v4' ( temp int)
+0:112          'gl_InstanceCustomIndexNV' ( in int InstanceCustomIndexNV)
+0:113      Sequence
+0:113        move second child to first child ( temp 3-component vector of float)
+0:113          'v5' ( temp 3-component vector of float)
+0:113          'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV)
+0:114      Sequence
+0:114        move second child to first child ( temp 3-component vector of float)
+0:114          'v6' ( temp 3-component vector of float)
+0:114          'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV)
+0:115      Sequence
+0:115        move second child to first child ( temp 3-component vector of float)
+0:115          'v7' ( temp 3-component vector of float)
+0:115          'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV)
+0:116      Sequence
+0:116        move second child to first child ( temp 3-component vector of float)
+0:116          'v8' ( temp 3-component vector of float)
+0:116          'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV)
+0:117      Sequence
+0:117        move second child to first child ( temp float)
+0:117          'v9' ( temp float)
+0:117          'gl_RayTminNV' ( in float ObjectRayTminNV)
+0:118      Sequence
+0:118        move second child to first child ( temp float)
+0:118          'v10' ( temp float)
+0:118          'gl_RayTmaxNV' ( in float ObjectRayTmaxNV)
+0:119      Sequence
+0:119        move second child to first child ( temp float)
+0:119          'v11' ( temp float)
+0:119          'gl_HitTNV' ( in float HitTNV)
+0:120      Sequence
+0:120        move second child to first child ( temp uint)
+0:120          'v12' ( temp uint)
+0:120          'gl_HitKindNV' ( in uint HitKindNV)
+0:121      Sequence
+0:121        move second child to first child ( temp 4X3 matrix of float)
+0:121          'v13' ( temp 4X3 matrix of float)
+0:121          'gl_ObjectToWorldNV' ( in 4X3 matrix of float ObjectToWorldNV)
+0:122      Sequence
+0:122        move second child to first child ( temp 4X3 matrix of float)
+0:122          'v14' ( temp 4X3 matrix of float)
+0:122          'gl_WorldToObjectNV' ( in 4X3 matrix of float WorldToObjectNV)
+0:123      move second child to first child ( temp 4-component vector of float)
+0:123        'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float)
+0:123        Constant:
+0:123          0.500000
+0:123          0.500000
+0:123          0.500000
+0:123          0.500000
+0:124      Test condition and select ( temp void)
+0:124        Condition
+0:124        Compare Equal ( temp bool)
+0:124          'v2' ( temp int)
+0:124          Constant:
+0:124            1 (const int)
+0:124        true case
+0:125        ignoreIntersectionNV ( global void)
+0:124        false case
+0:127        terminateRayNV ( global void)
+0:?   Linker Objects
+0:?     'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float)
+

+ 663 - 0
3rdparty/glslang/Test/baseResults/glsl.460.subgroup.rcall.out

@@ -0,0 +1,663 @@
+glsl.460.subgroup.rcall
+ERROR: 0:7: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:8: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:9: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:10: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:11: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:12: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:13: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:14: 'gl_NumSubgroups' : undeclared identifier 
+ERROR: 0:15: 'gl_SubgroupID' : undeclared identifier 
+ERROR: 0:16: 'subgroupMemoryBarrierShared' : no matching overloaded function found 
+ERROR: 0:18: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:19: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:20: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:22: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:23: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:24: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:25: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:26: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:27: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:28: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:29: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:30: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:31: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:32: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:33: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:34: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:35: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:36: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:38: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:39: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:40: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:41: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:43: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:44: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:45: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:46: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:47: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:48: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:49: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:50: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:51: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:52: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:53: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:54: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:55: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:56: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:57: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:58: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:59: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:60: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:61: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:62: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:63: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:65: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:66: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:67: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:68: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:69: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:70: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:71: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:73: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:74: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:75: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:76: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:78: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:79: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:80: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:81: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:82: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:83: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:84: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:85: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:86: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:87: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:88: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:89: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:90: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:91: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:92: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:93: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:94: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:95: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 86 compilation errors.  No code generated.
+
+
+Shader version: 460
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_ray_tracing
+Requested GL_NV_shader_subgroup_partitioned
+ERROR: node is still EOpNull!
+0:4  Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
+0:4    Function Parameters: 
+0:4      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:7      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:8      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:9      subgroupBarrier ( global void)
+0:10      subgroupMemoryBarrier ( global void)
+0:11      subgroupMemoryBarrierBuffer ( global void)
+0:12      subgroupMemoryBarrierImage ( global void)
+0:13      subgroupElect ( global bool)
+0:14      'gl_NumSubgroups' ( temp float)
+0:15      'gl_SubgroupID' ( temp float)
+0:16      Constant:
+0:16        0.000000
+0:18      subgroupAll ( global bool)
+0:18        Constant:
+0:18          true (const bool)
+0:19      subgroupAny ( global bool)
+0:19        Constant:
+0:19          false (const bool)
+0:20      subgroupAllEqual ( global bool)
+0:20        'f4' ( in 4-component vector of float)
+0:22      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:23      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:24      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:25      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:26      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:27      subgroupBroadcast ( global 4-component vector of float)
+0:27        'f4' ( in 4-component vector of float)
+0:27        Constant:
+0:27          0 (const uint)
+0:28      subgroupBroadcastFirst ( global 4-component vector of float)
+0:28        'f4' ( in 4-component vector of float)
+0:29      Sequence
+0:29        move second child to first child ( temp 4-component vector of uint)
+0:29          'ballot' ( temp 4-component vector of uint)
+0:29          subgroupBallot ( global 4-component vector of uint)
+0:29            Constant:
+0:29              false (const bool)
+0:30      subgroupInverseBallot ( global bool)
+0:30        Constant:
+0:30          1 (const uint)
+0:30          1 (const uint)
+0:30          1 (const uint)
+0:30          1 (const uint)
+0:31      subgroupBallotBitExtract ( global bool)
+0:31        'ballot' ( temp 4-component vector of uint)
+0:31        Constant:
+0:31          0 (const uint)
+0:32      subgroupBallotBitCount ( global uint)
+0:32        'ballot' ( temp 4-component vector of uint)
+0:33      subgroupBallotInclusiveBitCount ( global uint)
+0:33        'ballot' ( temp 4-component vector of uint)
+0:34      subgroupBallotExclusiveBitCount ( global uint)
+0:34        'ballot' ( temp 4-component vector of uint)
+0:35      subgroupBallotFindLSB ( global uint)
+0:35        'ballot' ( temp 4-component vector of uint)
+0:36      subgroupBallotFindMSB ( global uint)
+0:36        'ballot' ( temp 4-component vector of uint)
+0:38      subgroupShuffle ( global 4-component vector of float)
+0:38        'f4' ( in 4-component vector of float)
+0:38        Constant:
+0:38          0 (const uint)
+0:39      subgroupShuffleXor ( global 4-component vector of float)
+0:39        'f4' ( in 4-component vector of float)
+0:39        Constant:
+0:39          1 (const uint)
+0:40      subgroupShuffleUp ( global 4-component vector of float)
+0:40        'f4' ( in 4-component vector of float)
+0:40        Constant:
+0:40          1 (const uint)
+0:41      subgroupShuffleDown ( global 4-component vector of float)
+0:41        'f4' ( in 4-component vector of float)
+0:41        Constant:
+0:41          1 (const uint)
+0:43      move second child to first child ( temp 4-component vector of float)
+0:43        'result' ( temp 4-component vector of float)
+0:43        subgroupAdd ( global 4-component vector of float)
+0:43          'f4' ( in 4-component vector of float)
+0:44      subgroupMul ( global 4-component vector of float)
+0:44        'f4' ( in 4-component vector of float)
+0:45      subgroupMin ( global 4-component vector of float)
+0:45        'f4' ( in 4-component vector of float)
+0:46      subgroupMax ( global 4-component vector of float)
+0:46        'f4' ( in 4-component vector of float)
+0:47      subgroupAnd ( global 4-component vector of uint)
+0:47        'ballot' ( temp 4-component vector of uint)
+0:48      subgroupOr ( global 4-component vector of uint)
+0:48        'ballot' ( temp 4-component vector of uint)
+0:49      subgroupXor ( global 4-component vector of uint)
+0:49        'ballot' ( temp 4-component vector of uint)
+0:50      subgroupInclusiveAdd ( global 4-component vector of float)
+0:50        'f4' ( in 4-component vector of float)
+0:51      subgroupInclusiveMul ( global 4-component vector of float)
+0:51        'f4' ( in 4-component vector of float)
+0:52      subgroupInclusiveMin ( global 4-component vector of float)
+0:52        'f4' ( in 4-component vector of float)
+0:53      subgroupInclusiveMax ( global 4-component vector of float)
+0:53        'f4' ( in 4-component vector of float)
+0:54      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:54        'ballot' ( temp 4-component vector of uint)
+0:55      subgroupInclusiveOr ( global 4-component vector of uint)
+0:55        'ballot' ( temp 4-component vector of uint)
+0:56      subgroupInclusiveXor ( global 4-component vector of uint)
+0:56        'ballot' ( temp 4-component vector of uint)
+0:57      subgroupExclusiveAdd ( global 4-component vector of float)
+0:57        'f4' ( in 4-component vector of float)
+0:58      subgroupExclusiveMul ( global 4-component vector of float)
+0:58        'f4' ( in 4-component vector of float)
+0:59      subgroupExclusiveMin ( global 4-component vector of float)
+0:59        'f4' ( in 4-component vector of float)
+0:60      subgroupExclusiveMax ( global 4-component vector of float)
+0:60        'f4' ( in 4-component vector of float)
+0:61      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:61        'ballot' ( temp 4-component vector of uint)
+0:62      subgroupExclusiveOr ( global 4-component vector of uint)
+0:62        'ballot' ( temp 4-component vector of uint)
+0:63      subgroupExclusiveXor ( global 4-component vector of uint)
+0:63        'ballot' ( temp 4-component vector of uint)
+0:65      subgroupClusteredAdd ( global 4-component vector of float)
+0:65        'f4' ( in 4-component vector of float)
+0:65        Constant:
+0:65          2 (const uint)
+0:66      subgroupClusteredMul ( global 4-component vector of float)
+0:66        'f4' ( in 4-component vector of float)
+0:66        Constant:
+0:66          2 (const uint)
+0:67      subgroupClusteredMin ( global 4-component vector of float)
+0:67        'f4' ( in 4-component vector of float)
+0:67        Constant:
+0:67          2 (const uint)
+0:68      subgroupClusteredMax ( global 4-component vector of float)
+0:68        'f4' ( in 4-component vector of float)
+0:68        Constant:
+0:68          2 (const uint)
+0:69      subgroupClusteredAnd ( global 4-component vector of uint)
+0:69        'ballot' ( temp 4-component vector of uint)
+0:69        Constant:
+0:69          2 (const uint)
+0:70      subgroupClusteredOr ( global 4-component vector of uint)
+0:70        'ballot' ( temp 4-component vector of uint)
+0:70        Constant:
+0:70          2 (const uint)
+0:71      subgroupClusteredXor ( global 4-component vector of uint)
+0:71        'ballot' ( temp 4-component vector of uint)
+0:71        Constant:
+0:71          2 (const uint)
+0:73      subgroupQuadBroadcast ( global 4-component vector of float)
+0:73        'f4' ( in 4-component vector of float)
+0:73        Constant:
+0:73          0 (const uint)
+0:74      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:74        'f4' ( in 4-component vector of float)
+0:75      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:75        'f4' ( in 4-component vector of float)
+0:76      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:76        'f4' ( in 4-component vector of float)
+0:78      Sequence
+0:78        move second child to first child ( temp 4-component vector of uint)
+0:78          'parti' ( temp 4-component vector of uint)
+0:78          subgroupPartitionNV ( global 4-component vector of uint)
+0:78            'f4' ( in 4-component vector of float)
+0:79      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:79        'f4' ( in 4-component vector of float)
+0:79        'parti' ( temp 4-component vector of uint)
+0:80      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:80        'f4' ( in 4-component vector of float)
+0:80        'parti' ( temp 4-component vector of uint)
+0:81      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:81        'f4' ( in 4-component vector of float)
+0:81        'parti' ( temp 4-component vector of uint)
+0:82      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:82        'f4' ( in 4-component vector of float)
+0:82        'parti' ( temp 4-component vector of uint)
+0:83      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:83        'ballot' ( temp 4-component vector of uint)
+0:83        'parti' ( temp 4-component vector of uint)
+0:84      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:84        'ballot' ( temp 4-component vector of uint)
+0:84        'parti' ( temp 4-component vector of uint)
+0:85      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:85        'ballot' ( temp 4-component vector of uint)
+0:85        'parti' ( temp 4-component vector of uint)
+0:86      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:86        'f4' ( in 4-component vector of float)
+0:86        'parti' ( temp 4-component vector of uint)
+0:87      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:87        'f4' ( in 4-component vector of float)
+0:87        'parti' ( temp 4-component vector of uint)
+0:88      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:88        'f4' ( in 4-component vector of float)
+0:88        'parti' ( temp 4-component vector of uint)
+0:89      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:89        'f4' ( in 4-component vector of float)
+0:89        'parti' ( temp 4-component vector of uint)
+0:90      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:90        'ballot' ( temp 4-component vector of uint)
+0:90        'parti' ( temp 4-component vector of uint)
+0:91      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:91        'ballot' ( temp 4-component vector of uint)
+0:91        'parti' ( temp 4-component vector of uint)
+0:92      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:92        'ballot' ( temp 4-component vector of uint)
+0:92        'parti' ( temp 4-component vector of uint)
+0:93      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:93        'f4' ( in 4-component vector of float)
+0:93        'parti' ( temp 4-component vector of uint)
+0:94      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:94        'f4' ( in 4-component vector of float)
+0:94        'parti' ( temp 4-component vector of uint)
+0:95      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:95        'f4' ( in 4-component vector of float)
+0:95        'parti' ( temp 4-component vector of uint)
+0:96      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:96        'f4' ( in 4-component vector of float)
+0:96        'parti' ( temp 4-component vector of uint)
+0:97      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:97        'ballot' ( temp 4-component vector of uint)
+0:97        'parti' ( temp 4-component vector of uint)
+0:98      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:98        'ballot' ( temp 4-component vector of uint)
+0:98        'parti' ( temp 4-component vector of uint)
+0:99      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:99        'ballot' ( temp 4-component vector of uint)
+0:99        'parti' ( temp 4-component vector of uint)
+0:101      Branch: Return with expression
+0:101        'result' ( temp 4-component vector of float)
+0:109  Function Definition: main( ( global void)
+0:109    Function Parameters: 
+0:111    Sequence
+0:111      Sequence
+0:111        move second child to first child ( temp 3-component vector of uint)
+0:111          'id' ( temp 3-component vector of uint)
+0:111          'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV)
+0:112      Sequence
+0:112        move second child to first child ( temp 3-component vector of uint)
+0:112          'size' ( temp 3-component vector of uint)
+0:112          'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV)
+0:113      move second child to first child ( temp uint)
+0:113        data1: direct index for structure ( callableDataInNV uint)
+0:113          'anon@0' (layout( location=1) callableDataInNV block{ callableDataInNV uint data1})
+0:113          Constant:
+0:113            0 (const uint)
+0:113        Constant:
+0:113          256 (const uint)
+0:114      executeCallableNV ( global void)
+0:114        Constant:
+0:114          2 (const uint)
+0:114        Constant:
+0:114          1 (const int)
+0:119  Function Definition: basic_works( ( global void)
+0:119    Function Parameters: 
+0:121    Sequence
+0:121      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:122      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:123      subgroupBarrier ( global void)
+0:124      subgroupMemoryBarrier ( global void)
+0:125      subgroupMemoryBarrierBuffer ( global void)
+0:126      subgroupMemoryBarrierImage ( global void)
+0:127      subgroupElect ( global bool)
+0:131  Function Definition: ballot_works(vf4; ( global void)
+0:131    Function Parameters: 
+0:131      'f4' ( in 4-component vector of float)
+0:132    Sequence
+0:132      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:133      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:134      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:135      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:136      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:137      subgroupBroadcast ( global 4-component vector of float)
+0:137        'f4' ( in 4-component vector of float)
+0:137        Constant:
+0:137          0 (const uint)
+0:138      subgroupBroadcastFirst ( global 4-component vector of float)
+0:138        'f4' ( in 4-component vector of float)
+0:139      Sequence
+0:139        move second child to first child ( temp 4-component vector of uint)
+0:139          'ballot' ( temp 4-component vector of uint)
+0:139          subgroupBallot ( global 4-component vector of uint)
+0:139            Constant:
+0:139              false (const bool)
+0:140      subgroupInverseBallot ( global bool)
+0:140        Constant:
+0:140          1 (const uint)
+0:140          1 (const uint)
+0:140          1 (const uint)
+0:140          1 (const uint)
+0:141      subgroupBallotBitExtract ( global bool)
+0:141        'ballot' ( temp 4-component vector of uint)
+0:141        Constant:
+0:141          0 (const uint)
+0:142      subgroupBallotBitCount ( global uint)
+0:142        'ballot' ( temp 4-component vector of uint)
+0:143      subgroupBallotInclusiveBitCount ( global uint)
+0:143        'ballot' ( temp 4-component vector of uint)
+0:144      subgroupBallotExclusiveBitCount ( global uint)
+0:144        'ballot' ( temp 4-component vector of uint)
+0:145      subgroupBallotFindLSB ( global uint)
+0:145        'ballot' ( temp 4-component vector of uint)
+0:146      subgroupBallotFindMSB ( global uint)
+0:146        'ballot' ( temp 4-component vector of uint)
+0:150  Function Definition: vote_works(vf4; ( global void)
+0:150    Function Parameters: 
+0:150      'f4' ( in 4-component vector of float)
+0:152    Sequence
+0:152      subgroupAll ( global bool)
+0:152        Constant:
+0:152          true (const bool)
+0:153      subgroupAny ( global bool)
+0:153        Constant:
+0:153          false (const bool)
+0:154      subgroupAllEqual ( global bool)
+0:154        'f4' ( in 4-component vector of float)
+0:159  Function Definition: shuffle_works(vf4; ( global void)
+0:159    Function Parameters: 
+0:159      'f4' ( in 4-component vector of float)
+0:161    Sequence
+0:161      subgroupShuffle ( global 4-component vector of float)
+0:161        'f4' ( in 4-component vector of float)
+0:161        Constant:
+0:161          0 (const uint)
+0:162      subgroupShuffleXor ( global 4-component vector of float)
+0:162        'f4' ( in 4-component vector of float)
+0:162        Constant:
+0:162          1 (const uint)
+0:163      subgroupShuffleUp ( global 4-component vector of float)
+0:163        'f4' ( in 4-component vector of float)
+0:163        Constant:
+0:163          1 (const uint)
+0:164      subgroupShuffleDown ( global 4-component vector of float)
+0:164        'f4' ( in 4-component vector of float)
+0:164        Constant:
+0:164          1 (const uint)
+0:168  Function Definition: arith_works(vf4; ( global void)
+0:168    Function Parameters: 
+0:168      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:171      subgroupAdd ( global 4-component vector of float)
+0:171        'f4' ( in 4-component vector of float)
+0:172      subgroupMul ( global 4-component vector of float)
+0:172        'f4' ( in 4-component vector of float)
+0:173      subgroupMin ( global 4-component vector of float)
+0:173        'f4' ( in 4-component vector of float)
+0:174      subgroupMax ( global 4-component vector of float)
+0:174        'f4' ( in 4-component vector of float)
+0:175      subgroupAnd ( global 4-component vector of uint)
+0:175        'ballot' ( temp 4-component vector of uint)
+0:176      subgroupOr ( global 4-component vector of uint)
+0:176        'ballot' ( temp 4-component vector of uint)
+0:177      subgroupXor ( global 4-component vector of uint)
+0:177        'ballot' ( temp 4-component vector of uint)
+0:178      subgroupInclusiveAdd ( global 4-component vector of float)
+0:178        'f4' ( in 4-component vector of float)
+0:179      subgroupInclusiveMul ( global 4-component vector of float)
+0:179        'f4' ( in 4-component vector of float)
+0:180      subgroupInclusiveMin ( global 4-component vector of float)
+0:180        'f4' ( in 4-component vector of float)
+0:181      subgroupInclusiveMax ( global 4-component vector of float)
+0:181        'f4' ( in 4-component vector of float)
+0:182      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:182        'ballot' ( temp 4-component vector of uint)
+0:183      subgroupInclusiveOr ( global 4-component vector of uint)
+0:183        'ballot' ( temp 4-component vector of uint)
+0:184      subgroupInclusiveXor ( global 4-component vector of uint)
+0:184        'ballot' ( temp 4-component vector of uint)
+0:185      subgroupExclusiveAdd ( global 4-component vector of float)
+0:185        'f4' ( in 4-component vector of float)
+0:186      subgroupExclusiveMul ( global 4-component vector of float)
+0:186        'f4' ( in 4-component vector of float)
+0:187      subgroupExclusiveMin ( global 4-component vector of float)
+0:187        'f4' ( in 4-component vector of float)
+0:188      subgroupExclusiveMax ( global 4-component vector of float)
+0:188        'f4' ( in 4-component vector of float)
+0:189      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:189        'ballot' ( temp 4-component vector of uint)
+0:190      subgroupExclusiveOr ( global 4-component vector of uint)
+0:190        'ballot' ( temp 4-component vector of uint)
+0:191      subgroupExclusiveXor ( global 4-component vector of uint)
+0:191        'ballot' ( temp 4-component vector of uint)
+0:195  Function Definition: clustered_works(vf4; ( global void)
+0:195    Function Parameters: 
+0:195      'f4' ( in 4-component vector of float)
+0:197    Sequence
+0:197      Sequence
+0:197        move second child to first child ( temp 4-component vector of uint)
+0:197          'ballot' ( temp 4-component vector of uint)
+0:197          Constant:
+0:197            85 (const uint)
+0:197            0 (const uint)
+0:197            0 (const uint)
+0:197            0 (const uint)
+0:198      subgroupClusteredAdd ( global 4-component vector of float)
+0:198        'f4' ( in 4-component vector of float)
+0:198        Constant:
+0:198          2 (const uint)
+0:199      subgroupClusteredMul ( global 4-component vector of float)
+0:199        'f4' ( in 4-component vector of float)
+0:199        Constant:
+0:199          2 (const uint)
+0:200      subgroupClusteredMin ( global 4-component vector of float)
+0:200        'f4' ( in 4-component vector of float)
+0:200        Constant:
+0:200          2 (const uint)
+0:201      subgroupClusteredMax ( global 4-component vector of float)
+0:201        'f4' ( in 4-component vector of float)
+0:201        Constant:
+0:201          2 (const uint)
+0:202      subgroupClusteredAnd ( global 4-component vector of uint)
+0:202        'ballot' ( temp 4-component vector of uint)
+0:202        Constant:
+0:202          2 (const uint)
+0:203      subgroupClusteredOr ( global 4-component vector of uint)
+0:203        'ballot' ( temp 4-component vector of uint)
+0:203        Constant:
+0:203          2 (const uint)
+0:204      subgroupClusteredXor ( global 4-component vector of uint)
+0:204        'ballot' ( temp 4-component vector of uint)
+0:204        Constant:
+0:204          2 (const uint)
+0:208  Function Definition: quad_works(vf4; ( global void)
+0:208    Function Parameters: 
+0:208      'f4' ( in 4-component vector of float)
+0:210    Sequence
+0:210      subgroupQuadBroadcast ( global 4-component vector of float)
+0:210        'f4' ( in 4-component vector of float)
+0:210        Constant:
+0:210          0 (const uint)
+0:211      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:211        'f4' ( in 4-component vector of float)
+0:212      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:212        'f4' ( in 4-component vector of float)
+0:213      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:213        'f4' ( in 4-component vector of float)
+0:217  Function Definition: partitioned_works(vf4; ( global void)
+0:217    Function Parameters: 
+0:217      'f4' ( in 4-component vector of float)
+0:219    Sequence
+0:219      Sequence
+0:219        move second child to first child ( temp 4-component vector of uint)
+0:219          'parti' ( temp 4-component vector of uint)
+0:219          subgroupPartitionNV ( global 4-component vector of uint)
+0:219            'f4' ( in 4-component vector of float)
+0:220      Sequence
+0:220        move second child to first child ( temp 4-component vector of uint)
+0:220          'ballot' ( temp 4-component vector of uint)
+0:220          Constant:
+0:220            85 (const uint)
+0:220            0 (const uint)
+0:220            0 (const uint)
+0:220            0 (const uint)
+0:221      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:221        'f4' ( in 4-component vector of float)
+0:221        'parti' ( temp 4-component vector of uint)
+0:222      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:222        'f4' ( in 4-component vector of float)
+0:222        'parti' ( temp 4-component vector of uint)
+0:223      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:223        'f4' ( in 4-component vector of float)
+0:223        'parti' ( temp 4-component vector of uint)
+0:224      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:224        'f4' ( in 4-component vector of float)
+0:224        'parti' ( temp 4-component vector of uint)
+0:225      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:225        'ballot' ( temp 4-component vector of uint)
+0:225        'parti' ( temp 4-component vector of uint)
+0:226      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:226        'ballot' ( temp 4-component vector of uint)
+0:226        'parti' ( temp 4-component vector of uint)
+0:227      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:227        'ballot' ( temp 4-component vector of uint)
+0:227        'parti' ( temp 4-component vector of uint)
+0:228      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:228        'f4' ( in 4-component vector of float)
+0:228        'parti' ( temp 4-component vector of uint)
+0:229      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:229        'f4' ( in 4-component vector of float)
+0:229        'parti' ( temp 4-component vector of uint)
+0:230      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:230        'f4' ( in 4-component vector of float)
+0:230        'parti' ( temp 4-component vector of uint)
+0:231      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:231        'f4' ( in 4-component vector of float)
+0:231        'parti' ( temp 4-component vector of uint)
+0:232      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:232        'ballot' ( temp 4-component vector of uint)
+0:232        'parti' ( temp 4-component vector of uint)
+0:233      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:233        'ballot' ( temp 4-component vector of uint)
+0:233        'parti' ( temp 4-component vector of uint)
+0:234      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:234        'ballot' ( temp 4-component vector of uint)
+0:234        'parti' ( temp 4-component vector of uint)
+0:235      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:235        'f4' ( in 4-component vector of float)
+0:235        'parti' ( temp 4-component vector of uint)
+0:236      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:236        'f4' ( in 4-component vector of float)
+0:236        'parti' ( temp 4-component vector of uint)
+0:237      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:237        'f4' ( in 4-component vector of float)
+0:237        'parti' ( temp 4-component vector of uint)
+0:238      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:238        'f4' ( in 4-component vector of float)
+0:238        'parti' ( temp 4-component vector of uint)
+0:239      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:239        'ballot' ( temp 4-component vector of uint)
+0:239        'parti' ( temp 4-component vector of uint)
+0:240      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:240        'ballot' ( temp 4-component vector of uint)
+0:240        'parti' ( temp 4-component vector of uint)
+0:241      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:241        'ballot' ( temp 4-component vector of uint)
+0:241        'parti' ( temp 4-component vector of uint)
+0:?   Linker Objects
+0:?     'data0' (layout( location=0) callableDataNV 4-component vector of float)
+0:?     'anon@0' (layout( location=1) callableDataInNV block{ callableDataInNV uint data1})
+
+
+Linked callable stage:
+
+
+Shader version: 460
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_ray_tracing
+Requested GL_NV_shader_subgroup_partitioned
+ERROR: node is still EOpNull!
+0:109  Function Definition: main( ( global void)
+0:109    Function Parameters: 
+0:111    Sequence
+0:111      Sequence
+0:111        move second child to first child ( temp 3-component vector of uint)
+0:111          'id' ( temp 3-component vector of uint)
+0:111          'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV)
+0:112      Sequence
+0:112        move second child to first child ( temp 3-component vector of uint)
+0:112          'size' ( temp 3-component vector of uint)
+0:112          'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV)
+0:113      move second child to first child ( temp uint)
+0:113        data1: direct index for structure ( callableDataInNV uint)
+0:113          'anon@0' (layout( location=1) callableDataInNV block{ callableDataInNV uint data1})
+0:113          Constant:
+0:113            0 (const uint)
+0:113        Constant:
+0:113          256 (const uint)
+0:114      executeCallableNV ( global void)
+0:114        Constant:
+0:114          2 (const uint)
+0:114        Constant:
+0:114          1 (const int)
+0:?   Linker Objects
+0:?     'data0' (layout( location=0) callableDataNV 4-component vector of float)
+0:?     'anon@0' (layout( location=1) callableDataInNV block{ callableDataInNV uint data1})
+

+ 797 - 0
3rdparty/glslang/Test/baseResults/glsl.460.subgroup.rchit.out

@@ -0,0 +1,797 @@
+glsl.460.subgroup.rchit
+ERROR: 0:7: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:8: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:9: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:10: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:11: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:12: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:13: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:14: 'gl_NumSubgroups' : undeclared identifier 
+ERROR: 0:15: 'gl_SubgroupID' : undeclared identifier 
+ERROR: 0:16: 'subgroupMemoryBarrierShared' : no matching overloaded function found 
+ERROR: 0:18: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:19: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:20: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:22: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:23: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:24: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:25: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:26: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:27: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:28: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:29: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:30: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:31: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:32: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:33: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:34: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:35: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:36: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:38: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:39: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:40: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:41: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:43: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:44: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:45: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:46: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:47: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:48: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:49: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:50: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:51: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:52: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:53: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:54: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:55: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:56: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:57: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:58: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:59: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:60: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:61: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:62: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:63: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:65: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:66: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:67: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:68: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:69: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:70: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:71: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:73: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:74: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:75: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:76: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:78: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:79: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:80: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:81: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:82: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:83: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:84: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:85: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:86: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:87: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:88: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:89: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:90: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:91: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:92: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:93: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:94: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:95: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 86 compilation errors.  No code generated.
+
+
+Shader version: 460
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_ray_tracing
+Requested GL_NV_shader_subgroup_partitioned
+ERROR: node is still EOpNull!
+0:4  Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
+0:4    Function Parameters: 
+0:4      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:7      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:8      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:9      subgroupBarrier ( global void)
+0:10      subgroupMemoryBarrier ( global void)
+0:11      subgroupMemoryBarrierBuffer ( global void)
+0:12      subgroupMemoryBarrierImage ( global void)
+0:13      subgroupElect ( global bool)
+0:14      'gl_NumSubgroups' ( temp float)
+0:15      'gl_SubgroupID' ( temp float)
+0:16      Constant:
+0:16        0.000000
+0:18      subgroupAll ( global bool)
+0:18        Constant:
+0:18          true (const bool)
+0:19      subgroupAny ( global bool)
+0:19        Constant:
+0:19          false (const bool)
+0:20      subgroupAllEqual ( global bool)
+0:20        'f4' ( in 4-component vector of float)
+0:22      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:23      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:24      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:25      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:26      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:27      subgroupBroadcast ( global 4-component vector of float)
+0:27        'f4' ( in 4-component vector of float)
+0:27        Constant:
+0:27          0 (const uint)
+0:28      subgroupBroadcastFirst ( global 4-component vector of float)
+0:28        'f4' ( in 4-component vector of float)
+0:29      Sequence
+0:29        move second child to first child ( temp 4-component vector of uint)
+0:29          'ballot' ( temp 4-component vector of uint)
+0:29          subgroupBallot ( global 4-component vector of uint)
+0:29            Constant:
+0:29              false (const bool)
+0:30      subgroupInverseBallot ( global bool)
+0:30        Constant:
+0:30          1 (const uint)
+0:30          1 (const uint)
+0:30          1 (const uint)
+0:30          1 (const uint)
+0:31      subgroupBallotBitExtract ( global bool)
+0:31        'ballot' ( temp 4-component vector of uint)
+0:31        Constant:
+0:31          0 (const uint)
+0:32      subgroupBallotBitCount ( global uint)
+0:32        'ballot' ( temp 4-component vector of uint)
+0:33      subgroupBallotInclusiveBitCount ( global uint)
+0:33        'ballot' ( temp 4-component vector of uint)
+0:34      subgroupBallotExclusiveBitCount ( global uint)
+0:34        'ballot' ( temp 4-component vector of uint)
+0:35      subgroupBallotFindLSB ( global uint)
+0:35        'ballot' ( temp 4-component vector of uint)
+0:36      subgroupBallotFindMSB ( global uint)
+0:36        'ballot' ( temp 4-component vector of uint)
+0:38      subgroupShuffle ( global 4-component vector of float)
+0:38        'f4' ( in 4-component vector of float)
+0:38        Constant:
+0:38          0 (const uint)
+0:39      subgroupShuffleXor ( global 4-component vector of float)
+0:39        'f4' ( in 4-component vector of float)
+0:39        Constant:
+0:39          1 (const uint)
+0:40      subgroupShuffleUp ( global 4-component vector of float)
+0:40        'f4' ( in 4-component vector of float)
+0:40        Constant:
+0:40          1 (const uint)
+0:41      subgroupShuffleDown ( global 4-component vector of float)
+0:41        'f4' ( in 4-component vector of float)
+0:41        Constant:
+0:41          1 (const uint)
+0:43      move second child to first child ( temp 4-component vector of float)
+0:43        'result' ( temp 4-component vector of float)
+0:43        subgroupAdd ( global 4-component vector of float)
+0:43          'f4' ( in 4-component vector of float)
+0:44      subgroupMul ( global 4-component vector of float)
+0:44        'f4' ( in 4-component vector of float)
+0:45      subgroupMin ( global 4-component vector of float)
+0:45        'f4' ( in 4-component vector of float)
+0:46      subgroupMax ( global 4-component vector of float)
+0:46        'f4' ( in 4-component vector of float)
+0:47      subgroupAnd ( global 4-component vector of uint)
+0:47        'ballot' ( temp 4-component vector of uint)
+0:48      subgroupOr ( global 4-component vector of uint)
+0:48        'ballot' ( temp 4-component vector of uint)
+0:49      subgroupXor ( global 4-component vector of uint)
+0:49        'ballot' ( temp 4-component vector of uint)
+0:50      subgroupInclusiveAdd ( global 4-component vector of float)
+0:50        'f4' ( in 4-component vector of float)
+0:51      subgroupInclusiveMul ( global 4-component vector of float)
+0:51        'f4' ( in 4-component vector of float)
+0:52      subgroupInclusiveMin ( global 4-component vector of float)
+0:52        'f4' ( in 4-component vector of float)
+0:53      subgroupInclusiveMax ( global 4-component vector of float)
+0:53        'f4' ( in 4-component vector of float)
+0:54      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:54        'ballot' ( temp 4-component vector of uint)
+0:55      subgroupInclusiveOr ( global 4-component vector of uint)
+0:55        'ballot' ( temp 4-component vector of uint)
+0:56      subgroupInclusiveXor ( global 4-component vector of uint)
+0:56        'ballot' ( temp 4-component vector of uint)
+0:57      subgroupExclusiveAdd ( global 4-component vector of float)
+0:57        'f4' ( in 4-component vector of float)
+0:58      subgroupExclusiveMul ( global 4-component vector of float)
+0:58        'f4' ( in 4-component vector of float)
+0:59      subgroupExclusiveMin ( global 4-component vector of float)
+0:59        'f4' ( in 4-component vector of float)
+0:60      subgroupExclusiveMax ( global 4-component vector of float)
+0:60        'f4' ( in 4-component vector of float)
+0:61      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:61        'ballot' ( temp 4-component vector of uint)
+0:62      subgroupExclusiveOr ( global 4-component vector of uint)
+0:62        'ballot' ( temp 4-component vector of uint)
+0:63      subgroupExclusiveXor ( global 4-component vector of uint)
+0:63        'ballot' ( temp 4-component vector of uint)
+0:65      subgroupClusteredAdd ( global 4-component vector of float)
+0:65        'f4' ( in 4-component vector of float)
+0:65        Constant:
+0:65          2 (const uint)
+0:66      subgroupClusteredMul ( global 4-component vector of float)
+0:66        'f4' ( in 4-component vector of float)
+0:66        Constant:
+0:66          2 (const uint)
+0:67      subgroupClusteredMin ( global 4-component vector of float)
+0:67        'f4' ( in 4-component vector of float)
+0:67        Constant:
+0:67          2 (const uint)
+0:68      subgroupClusteredMax ( global 4-component vector of float)
+0:68        'f4' ( in 4-component vector of float)
+0:68        Constant:
+0:68          2 (const uint)
+0:69      subgroupClusteredAnd ( global 4-component vector of uint)
+0:69        'ballot' ( temp 4-component vector of uint)
+0:69        Constant:
+0:69          2 (const uint)
+0:70      subgroupClusteredOr ( global 4-component vector of uint)
+0:70        'ballot' ( temp 4-component vector of uint)
+0:70        Constant:
+0:70          2 (const uint)
+0:71      subgroupClusteredXor ( global 4-component vector of uint)
+0:71        'ballot' ( temp 4-component vector of uint)
+0:71        Constant:
+0:71          2 (const uint)
+0:73      subgroupQuadBroadcast ( global 4-component vector of float)
+0:73        'f4' ( in 4-component vector of float)
+0:73        Constant:
+0:73          0 (const uint)
+0:74      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:74        'f4' ( in 4-component vector of float)
+0:75      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:75        'f4' ( in 4-component vector of float)
+0:76      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:76        'f4' ( in 4-component vector of float)
+0:78      Sequence
+0:78        move second child to first child ( temp 4-component vector of uint)
+0:78          'parti' ( temp 4-component vector of uint)
+0:78          subgroupPartitionNV ( global 4-component vector of uint)
+0:78            'f4' ( in 4-component vector of float)
+0:79      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:79        'f4' ( in 4-component vector of float)
+0:79        'parti' ( temp 4-component vector of uint)
+0:80      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:80        'f4' ( in 4-component vector of float)
+0:80        'parti' ( temp 4-component vector of uint)
+0:81      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:81        'f4' ( in 4-component vector of float)
+0:81        'parti' ( temp 4-component vector of uint)
+0:82      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:82        'f4' ( in 4-component vector of float)
+0:82        'parti' ( temp 4-component vector of uint)
+0:83      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:83        'ballot' ( temp 4-component vector of uint)
+0:83        'parti' ( temp 4-component vector of uint)
+0:84      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:84        'ballot' ( temp 4-component vector of uint)
+0:84        'parti' ( temp 4-component vector of uint)
+0:85      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:85        'ballot' ( temp 4-component vector of uint)
+0:85        'parti' ( temp 4-component vector of uint)
+0:86      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:86        'f4' ( in 4-component vector of float)
+0:86        'parti' ( temp 4-component vector of uint)
+0:87      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:87        'f4' ( in 4-component vector of float)
+0:87        'parti' ( temp 4-component vector of uint)
+0:88      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:88        'f4' ( in 4-component vector of float)
+0:88        'parti' ( temp 4-component vector of uint)
+0:89      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:89        'f4' ( in 4-component vector of float)
+0:89        'parti' ( temp 4-component vector of uint)
+0:90      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:90        'ballot' ( temp 4-component vector of uint)
+0:90        'parti' ( temp 4-component vector of uint)
+0:91      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:91        'ballot' ( temp 4-component vector of uint)
+0:91        'parti' ( temp 4-component vector of uint)
+0:92      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:92        'ballot' ( temp 4-component vector of uint)
+0:92        'parti' ( temp 4-component vector of uint)
+0:93      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:93        'f4' ( in 4-component vector of float)
+0:93        'parti' ( temp 4-component vector of uint)
+0:94      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:94        'f4' ( in 4-component vector of float)
+0:94        'parti' ( temp 4-component vector of uint)
+0:95      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:95        'f4' ( in 4-component vector of float)
+0:95        'parti' ( temp 4-component vector of uint)
+0:96      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:96        'f4' ( in 4-component vector of float)
+0:96        'parti' ( temp 4-component vector of uint)
+0:97      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:97        'ballot' ( temp 4-component vector of uint)
+0:97        'parti' ( temp 4-component vector of uint)
+0:98      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:98        'ballot' ( temp 4-component vector of uint)
+0:98        'parti' ( temp 4-component vector of uint)
+0:99      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:99        'ballot' ( temp 4-component vector of uint)
+0:99        'parti' ( temp 4-component vector of uint)
+0:101      Branch: Return with expression
+0:101        'result' ( temp 4-component vector of float)
+0:108  Function Definition: main( ( global void)
+0:108    Function Parameters: 
+0:110    Sequence
+0:110      Sequence
+0:110        move second child to first child ( temp 3-component vector of uint)
+0:110          'v0' ( temp 3-component vector of uint)
+0:110          'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV)
+0:111      Sequence
+0:111        move second child to first child ( temp 3-component vector of uint)
+0:111          'v1' ( temp 3-component vector of uint)
+0:111          'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV)
+0:112      Sequence
+0:112        move second child to first child ( temp int)
+0:112          'v2' ( temp int)
+0:112          'gl_PrimitiveID' ( in int PrimitiveID)
+0:113      Sequence
+0:113        move second child to first child ( temp int)
+0:113          'v3' ( temp int)
+0:113          'gl_InstanceID' ( in int InstanceId)
+0:114      Sequence
+0:114        move second child to first child ( temp int)
+0:114          'v4' ( temp int)
+0:114          'gl_InstanceCustomIndexNV' ( in int InstanceCustomIndexNV)
+0:115      Sequence
+0:115        move second child to first child ( temp 3-component vector of float)
+0:115          'v5' ( temp 3-component vector of float)
+0:115          'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV)
+0:116      Sequence
+0:116        move second child to first child ( temp 3-component vector of float)
+0:116          'v6' ( temp 3-component vector of float)
+0:116          'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV)
+0:117      Sequence
+0:117        move second child to first child ( temp 3-component vector of float)
+0:117          'v7' ( temp 3-component vector of float)
+0:117          'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV)
+0:118      Sequence
+0:118        move second child to first child ( temp 3-component vector of float)
+0:118          'v8' ( temp 3-component vector of float)
+0:118          'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV)
+0:119      Sequence
+0:119        move second child to first child ( temp float)
+0:119          'v9' ( temp float)
+0:119          'gl_RayTminNV' ( in float ObjectRayTminNV)
+0:120      Sequence
+0:120        move second child to first child ( temp float)
+0:120          'v10' ( temp float)
+0:120          'gl_RayTmaxNV' ( in float ObjectRayTmaxNV)
+0:121      Sequence
+0:121        move second child to first child ( temp float)
+0:121          'v11' ( temp float)
+0:121          'gl_HitTNV' ( in float HitTNV)
+0:122      Sequence
+0:122        move second child to first child ( temp uint)
+0:122          'v12' ( temp uint)
+0:122          'gl_HitKindNV' ( in uint HitKindNV)
+0:123      Sequence
+0:123        move second child to first child ( temp 4X3 matrix of float)
+0:123          'v13' ( temp 4X3 matrix of float)
+0:123          'gl_ObjectToWorldNV' ( in 4X3 matrix of float ObjectToWorldNV)
+0:124      Sequence
+0:124        move second child to first child ( temp 4X3 matrix of float)
+0:124          'v14' ( temp 4X3 matrix of float)
+0:124          'gl_WorldToObjectNV' ( in 4X3 matrix of float WorldToObjectNV)
+0:125      traceNV ( global void)
+0:125        'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV)
+0:125        Constant:
+0:125          0 (const uint)
+0:125        Constant:
+0:125          1 (const uint)
+0:125        Constant:
+0:125          2 (const uint)
+0:125        Constant:
+0:125          3 (const uint)
+0:125        Constant:
+0:125          0 (const uint)
+0:125        Constant:
+0:125          0.500000
+0:125          0.500000
+0:125          0.500000
+0:125        Constant:
+0:125          0.500000
+0:125        Constant:
+0:125          1.000000
+0:125          1.000000
+0:125          1.000000
+0:125        Constant:
+0:125          0.750000
+0:125        Constant:
+0:125          1 (const int)
+0:129  Function Definition: basic_works( ( global void)
+0:129    Function Parameters: 
+0:131    Sequence
+0:131      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:132      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:133      subgroupBarrier ( global void)
+0:134      subgroupMemoryBarrier ( global void)
+0:135      subgroupMemoryBarrierBuffer ( global void)
+0:136      subgroupMemoryBarrierImage ( global void)
+0:137      subgroupElect ( global bool)
+0:141  Function Definition: ballot_works(vf4; ( global void)
+0:141    Function Parameters: 
+0:141      'f4' ( in 4-component vector of float)
+0:142    Sequence
+0:142      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:143      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:144      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:145      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:146      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:147      subgroupBroadcast ( global 4-component vector of float)
+0:147        'f4' ( in 4-component vector of float)
+0:147        Constant:
+0:147          0 (const uint)
+0:148      subgroupBroadcastFirst ( global 4-component vector of float)
+0:148        'f4' ( in 4-component vector of float)
+0:149      Sequence
+0:149        move second child to first child ( temp 4-component vector of uint)
+0:149          'ballot' ( temp 4-component vector of uint)
+0:149          subgroupBallot ( global 4-component vector of uint)
+0:149            Constant:
+0:149              false (const bool)
+0:150      subgroupInverseBallot ( global bool)
+0:150        Constant:
+0:150          1 (const uint)
+0:150          1 (const uint)
+0:150          1 (const uint)
+0:150          1 (const uint)
+0:151      subgroupBallotBitExtract ( global bool)
+0:151        'ballot' ( temp 4-component vector of uint)
+0:151        Constant:
+0:151          0 (const uint)
+0:152      subgroupBallotBitCount ( global uint)
+0:152        'ballot' ( temp 4-component vector of uint)
+0:153      subgroupBallotInclusiveBitCount ( global uint)
+0:153        'ballot' ( temp 4-component vector of uint)
+0:154      subgroupBallotExclusiveBitCount ( global uint)
+0:154        'ballot' ( temp 4-component vector of uint)
+0:155      subgroupBallotFindLSB ( global uint)
+0:155        'ballot' ( temp 4-component vector of uint)
+0:156      subgroupBallotFindMSB ( global uint)
+0:156        'ballot' ( temp 4-component vector of uint)
+0:160  Function Definition: vote_works(vf4; ( global void)
+0:160    Function Parameters: 
+0:160      'f4' ( in 4-component vector of float)
+0:162    Sequence
+0:162      subgroupAll ( global bool)
+0:162        Constant:
+0:162          true (const bool)
+0:163      subgroupAny ( global bool)
+0:163        Constant:
+0:163          false (const bool)
+0:164      subgroupAllEqual ( global bool)
+0:164        'f4' ( in 4-component vector of float)
+0:169  Function Definition: shuffle_works(vf4; ( global void)
+0:169    Function Parameters: 
+0:169      'f4' ( in 4-component vector of float)
+0:171    Sequence
+0:171      subgroupShuffle ( global 4-component vector of float)
+0:171        'f4' ( in 4-component vector of float)
+0:171        Constant:
+0:171          0 (const uint)
+0:172      subgroupShuffleXor ( global 4-component vector of float)
+0:172        'f4' ( in 4-component vector of float)
+0:172        Constant:
+0:172          1 (const uint)
+0:173      subgroupShuffleUp ( global 4-component vector of float)
+0:173        'f4' ( in 4-component vector of float)
+0:173        Constant:
+0:173          1 (const uint)
+0:174      subgroupShuffleDown ( global 4-component vector of float)
+0:174        'f4' ( in 4-component vector of float)
+0:174        Constant:
+0:174          1 (const uint)
+0:178  Function Definition: arith_works(vf4; ( global void)
+0:178    Function Parameters: 
+0:178      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:181      subgroupAdd ( global 4-component vector of float)
+0:181        'f4' ( in 4-component vector of float)
+0:182      subgroupMul ( global 4-component vector of float)
+0:182        'f4' ( in 4-component vector of float)
+0:183      subgroupMin ( global 4-component vector of float)
+0:183        'f4' ( in 4-component vector of float)
+0:184      subgroupMax ( global 4-component vector of float)
+0:184        'f4' ( in 4-component vector of float)
+0:185      subgroupAnd ( global 4-component vector of uint)
+0:185        'ballot' ( temp 4-component vector of uint)
+0:186      subgroupOr ( global 4-component vector of uint)
+0:186        'ballot' ( temp 4-component vector of uint)
+0:187      subgroupXor ( global 4-component vector of uint)
+0:187        'ballot' ( temp 4-component vector of uint)
+0:188      subgroupInclusiveAdd ( global 4-component vector of float)
+0:188        'f4' ( in 4-component vector of float)
+0:189      subgroupInclusiveMul ( global 4-component vector of float)
+0:189        'f4' ( in 4-component vector of float)
+0:190      subgroupInclusiveMin ( global 4-component vector of float)
+0:190        'f4' ( in 4-component vector of float)
+0:191      subgroupInclusiveMax ( global 4-component vector of float)
+0:191        'f4' ( in 4-component vector of float)
+0:192      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:192        'ballot' ( temp 4-component vector of uint)
+0:193      subgroupInclusiveOr ( global 4-component vector of uint)
+0:193        'ballot' ( temp 4-component vector of uint)
+0:194      subgroupInclusiveXor ( global 4-component vector of uint)
+0:194        'ballot' ( temp 4-component vector of uint)
+0:195      subgroupExclusiveAdd ( global 4-component vector of float)
+0:195        'f4' ( in 4-component vector of float)
+0:196      subgroupExclusiveMul ( global 4-component vector of float)
+0:196        'f4' ( in 4-component vector of float)
+0:197      subgroupExclusiveMin ( global 4-component vector of float)
+0:197        'f4' ( in 4-component vector of float)
+0:198      subgroupExclusiveMax ( global 4-component vector of float)
+0:198        'f4' ( in 4-component vector of float)
+0:199      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:199        'ballot' ( temp 4-component vector of uint)
+0:200      subgroupExclusiveOr ( global 4-component vector of uint)
+0:200        'ballot' ( temp 4-component vector of uint)
+0:201      subgroupExclusiveXor ( global 4-component vector of uint)
+0:201        'ballot' ( temp 4-component vector of uint)
+0:205  Function Definition: clustered_works(vf4; ( global void)
+0:205    Function Parameters: 
+0:205      'f4' ( in 4-component vector of float)
+0:207    Sequence
+0:207      Sequence
+0:207        move second child to first child ( temp 4-component vector of uint)
+0:207          'ballot' ( temp 4-component vector of uint)
+0:207          Constant:
+0:207            85 (const uint)
+0:207            0 (const uint)
+0:207            0 (const uint)
+0:207            0 (const uint)
+0:208      subgroupClusteredAdd ( global 4-component vector of float)
+0:208        'f4' ( in 4-component vector of float)
+0:208        Constant:
+0:208          2 (const uint)
+0:209      subgroupClusteredMul ( global 4-component vector of float)
+0:209        'f4' ( in 4-component vector of float)
+0:209        Constant:
+0:209          2 (const uint)
+0:210      subgroupClusteredMin ( global 4-component vector of float)
+0:210        'f4' ( in 4-component vector of float)
+0:210        Constant:
+0:210          2 (const uint)
+0:211      subgroupClusteredMax ( global 4-component vector of float)
+0:211        'f4' ( in 4-component vector of float)
+0:211        Constant:
+0:211          2 (const uint)
+0:212      subgroupClusteredAnd ( global 4-component vector of uint)
+0:212        'ballot' ( temp 4-component vector of uint)
+0:212        Constant:
+0:212          2 (const uint)
+0:213      subgroupClusteredOr ( global 4-component vector of uint)
+0:213        'ballot' ( temp 4-component vector of uint)
+0:213        Constant:
+0:213          2 (const uint)
+0:214      subgroupClusteredXor ( global 4-component vector of uint)
+0:214        'ballot' ( temp 4-component vector of uint)
+0:214        Constant:
+0:214          2 (const uint)
+0:218  Function Definition: quad_works(vf4; ( global void)
+0:218    Function Parameters: 
+0:218      'f4' ( in 4-component vector of float)
+0:220    Sequence
+0:220      subgroupQuadBroadcast ( global 4-component vector of float)
+0:220        'f4' ( in 4-component vector of float)
+0:220        Constant:
+0:220          0 (const uint)
+0:221      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:221        'f4' ( in 4-component vector of float)
+0:222      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:222        'f4' ( in 4-component vector of float)
+0:223      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:223        'f4' ( in 4-component vector of float)
+0:227  Function Definition: partitioned_works(vf4; ( global void)
+0:227    Function Parameters: 
+0:227      'f4' ( in 4-component vector of float)
+0:229    Sequence
+0:229      Sequence
+0:229        move second child to first child ( temp 4-component vector of uint)
+0:229          'parti' ( temp 4-component vector of uint)
+0:229          subgroupPartitionNV ( global 4-component vector of uint)
+0:229            'f4' ( in 4-component vector of float)
+0:230      Sequence
+0:230        move second child to first child ( temp 4-component vector of uint)
+0:230          'ballot' ( temp 4-component vector of uint)
+0:230          Constant:
+0:230            85 (const uint)
+0:230            0 (const uint)
+0:230            0 (const uint)
+0:230            0 (const uint)
+0:231      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:231        'f4' ( in 4-component vector of float)
+0:231        'parti' ( temp 4-component vector of uint)
+0:232      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:232        'f4' ( in 4-component vector of float)
+0:232        'parti' ( temp 4-component vector of uint)
+0:233      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:233        'f4' ( in 4-component vector of float)
+0:233        'parti' ( temp 4-component vector of uint)
+0:234      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:234        'f4' ( in 4-component vector of float)
+0:234        'parti' ( temp 4-component vector of uint)
+0:235      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:235        'ballot' ( temp 4-component vector of uint)
+0:235        'parti' ( temp 4-component vector of uint)
+0:236      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:236        'ballot' ( temp 4-component vector of uint)
+0:236        'parti' ( temp 4-component vector of uint)
+0:237      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:237        'ballot' ( temp 4-component vector of uint)
+0:237        'parti' ( temp 4-component vector of uint)
+0:238      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:238        'f4' ( in 4-component vector of float)
+0:238        'parti' ( temp 4-component vector of uint)
+0:239      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:239        'f4' ( in 4-component vector of float)
+0:239        'parti' ( temp 4-component vector of uint)
+0:240      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:240        'f4' ( in 4-component vector of float)
+0:240        'parti' ( temp 4-component vector of uint)
+0:241      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:241        'f4' ( in 4-component vector of float)
+0:241        'parti' ( temp 4-component vector of uint)
+0:242      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:242        'ballot' ( temp 4-component vector of uint)
+0:242        'parti' ( temp 4-component vector of uint)
+0:243      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:243        'ballot' ( temp 4-component vector of uint)
+0:243        'parti' ( temp 4-component vector of uint)
+0:244      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:244        'ballot' ( temp 4-component vector of uint)
+0:244        'parti' ( temp 4-component vector of uint)
+0:245      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:245        'f4' ( in 4-component vector of float)
+0:245        'parti' ( temp 4-component vector of uint)
+0:246      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:246        'f4' ( in 4-component vector of float)
+0:246        'parti' ( temp 4-component vector of uint)
+0:247      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:247        'f4' ( in 4-component vector of float)
+0:247        'parti' ( temp 4-component vector of uint)
+0:248      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:248        'f4' ( in 4-component vector of float)
+0:248        'parti' ( temp 4-component vector of uint)
+0:249      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:249        'ballot' ( temp 4-component vector of uint)
+0:249        'parti' ( temp 4-component vector of uint)
+0:250      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:250        'ballot' ( temp 4-component vector of uint)
+0:250        'parti' ( temp 4-component vector of uint)
+0:251      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:251        'ballot' ( temp 4-component vector of uint)
+0:251        'parti' ( temp 4-component vector of uint)
+0:?   Linker Objects
+0:?     'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV)
+0:?     'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float)
+0:?     'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float)
+
+
+Linked closest-hit stage:
+
+
+Shader version: 460
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_ray_tracing
+Requested GL_NV_shader_subgroup_partitioned
+ERROR: node is still EOpNull!
+0:108  Function Definition: main( ( global void)
+0:108    Function Parameters: 
+0:110    Sequence
+0:110      Sequence
+0:110        move second child to first child ( temp 3-component vector of uint)
+0:110          'v0' ( temp 3-component vector of uint)
+0:110          'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV)
+0:111      Sequence
+0:111        move second child to first child ( temp 3-component vector of uint)
+0:111          'v1' ( temp 3-component vector of uint)
+0:111          'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV)
+0:112      Sequence
+0:112        move second child to first child ( temp int)
+0:112          'v2' ( temp int)
+0:112          'gl_PrimitiveID' ( in int PrimitiveID)
+0:113      Sequence
+0:113        move second child to first child ( temp int)
+0:113          'v3' ( temp int)
+0:113          'gl_InstanceID' ( in int InstanceId)
+0:114      Sequence
+0:114        move second child to first child ( temp int)
+0:114          'v4' ( temp int)
+0:114          'gl_InstanceCustomIndexNV' ( in int InstanceCustomIndexNV)
+0:115      Sequence
+0:115        move second child to first child ( temp 3-component vector of float)
+0:115          'v5' ( temp 3-component vector of float)
+0:115          'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV)
+0:116      Sequence
+0:116        move second child to first child ( temp 3-component vector of float)
+0:116          'v6' ( temp 3-component vector of float)
+0:116          'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV)
+0:117      Sequence
+0:117        move second child to first child ( temp 3-component vector of float)
+0:117          'v7' ( temp 3-component vector of float)
+0:117          'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV)
+0:118      Sequence
+0:118        move second child to first child ( temp 3-component vector of float)
+0:118          'v8' ( temp 3-component vector of float)
+0:118          'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV)
+0:119      Sequence
+0:119        move second child to first child ( temp float)
+0:119          'v9' ( temp float)
+0:119          'gl_RayTminNV' ( in float ObjectRayTminNV)
+0:120      Sequence
+0:120        move second child to first child ( temp float)
+0:120          'v10' ( temp float)
+0:120          'gl_RayTmaxNV' ( in float ObjectRayTmaxNV)
+0:121      Sequence
+0:121        move second child to first child ( temp float)
+0:121          'v11' ( temp float)
+0:121          'gl_HitTNV' ( in float HitTNV)
+0:122      Sequence
+0:122        move second child to first child ( temp uint)
+0:122          'v12' ( temp uint)
+0:122          'gl_HitKindNV' ( in uint HitKindNV)
+0:123      Sequence
+0:123        move second child to first child ( temp 4X3 matrix of float)
+0:123          'v13' ( temp 4X3 matrix of float)
+0:123          'gl_ObjectToWorldNV' ( in 4X3 matrix of float ObjectToWorldNV)
+0:124      Sequence
+0:124        move second child to first child ( temp 4X3 matrix of float)
+0:124          'v14' ( temp 4X3 matrix of float)
+0:124          'gl_WorldToObjectNV' ( in 4X3 matrix of float WorldToObjectNV)
+0:125      traceNV ( global void)
+0:125        'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV)
+0:125        Constant:
+0:125          0 (const uint)
+0:125        Constant:
+0:125          1 (const uint)
+0:125        Constant:
+0:125          2 (const uint)
+0:125        Constant:
+0:125          3 (const uint)
+0:125        Constant:
+0:125          0 (const uint)
+0:125        Constant:
+0:125          0.500000
+0:125          0.500000
+0:125          0.500000
+0:125        Constant:
+0:125          0.500000
+0:125        Constant:
+0:125          1.000000
+0:125          1.000000
+0:125          1.000000
+0:125        Constant:
+0:125          0.750000
+0:125        Constant:
+0:125          1 (const int)
+0:?   Linker Objects
+0:?     'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV)
+0:?     'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float)
+0:?     'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float)
+

+ 727 - 0
3rdparty/glslang/Test/baseResults/glsl.460.subgroup.rgen.out

@@ -0,0 +1,727 @@
+glsl.460.subgroup.rgen
+ERROR: 0:7: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:8: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:9: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:10: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:11: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:12: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:13: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:14: 'gl_NumSubgroups' : undeclared identifier 
+ERROR: 0:15: 'gl_SubgroupID' : undeclared identifier 
+ERROR: 0:16: 'subgroupMemoryBarrierShared' : no matching overloaded function found 
+ERROR: 0:18: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:19: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:20: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:22: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:23: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:24: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:25: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:26: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:27: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:28: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:29: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:30: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:31: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:32: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:33: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:34: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:35: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:36: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:38: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:39: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:40: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:41: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:43: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:44: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:45: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:46: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:47: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:48: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:49: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:50: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:51: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:52: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:53: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:54: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:55: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:56: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:57: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:58: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:59: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:60: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:61: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:62: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:63: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:65: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:66: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:67: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:68: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:69: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:70: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:71: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:73: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:74: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:75: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:76: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:78: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:79: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:80: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:81: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:82: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:83: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:84: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:85: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:86: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:87: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:88: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:89: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:90: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:91: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:92: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:93: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:94: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:95: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 86 compilation errors.  No code generated.
+
+
+Shader version: 460
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_ray_tracing
+Requested GL_NV_shader_subgroup_partitioned
+ERROR: node is still EOpNull!
+0:4  Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
+0:4    Function Parameters: 
+0:4      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:7      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:8      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:9      subgroupBarrier ( global void)
+0:10      subgroupMemoryBarrier ( global void)
+0:11      subgroupMemoryBarrierBuffer ( global void)
+0:12      subgroupMemoryBarrierImage ( global void)
+0:13      subgroupElect ( global bool)
+0:14      'gl_NumSubgroups' ( temp float)
+0:15      'gl_SubgroupID' ( temp float)
+0:16      Constant:
+0:16        0.000000
+0:18      subgroupAll ( global bool)
+0:18        Constant:
+0:18          true (const bool)
+0:19      subgroupAny ( global bool)
+0:19        Constant:
+0:19          false (const bool)
+0:20      subgroupAllEqual ( global bool)
+0:20        'f4' ( in 4-component vector of float)
+0:22      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:23      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:24      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:25      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:26      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:27      subgroupBroadcast ( global 4-component vector of float)
+0:27        'f4' ( in 4-component vector of float)
+0:27        Constant:
+0:27          0 (const uint)
+0:28      subgroupBroadcastFirst ( global 4-component vector of float)
+0:28        'f4' ( in 4-component vector of float)
+0:29      Sequence
+0:29        move second child to first child ( temp 4-component vector of uint)
+0:29          'ballot' ( temp 4-component vector of uint)
+0:29          subgroupBallot ( global 4-component vector of uint)
+0:29            Constant:
+0:29              false (const bool)
+0:30      subgroupInverseBallot ( global bool)
+0:30        Constant:
+0:30          1 (const uint)
+0:30          1 (const uint)
+0:30          1 (const uint)
+0:30          1 (const uint)
+0:31      subgroupBallotBitExtract ( global bool)
+0:31        'ballot' ( temp 4-component vector of uint)
+0:31        Constant:
+0:31          0 (const uint)
+0:32      subgroupBallotBitCount ( global uint)
+0:32        'ballot' ( temp 4-component vector of uint)
+0:33      subgroupBallotInclusiveBitCount ( global uint)
+0:33        'ballot' ( temp 4-component vector of uint)
+0:34      subgroupBallotExclusiveBitCount ( global uint)
+0:34        'ballot' ( temp 4-component vector of uint)
+0:35      subgroupBallotFindLSB ( global uint)
+0:35        'ballot' ( temp 4-component vector of uint)
+0:36      subgroupBallotFindMSB ( global uint)
+0:36        'ballot' ( temp 4-component vector of uint)
+0:38      subgroupShuffle ( global 4-component vector of float)
+0:38        'f4' ( in 4-component vector of float)
+0:38        Constant:
+0:38          0 (const uint)
+0:39      subgroupShuffleXor ( global 4-component vector of float)
+0:39        'f4' ( in 4-component vector of float)
+0:39        Constant:
+0:39          1 (const uint)
+0:40      subgroupShuffleUp ( global 4-component vector of float)
+0:40        'f4' ( in 4-component vector of float)
+0:40        Constant:
+0:40          1 (const uint)
+0:41      subgroupShuffleDown ( global 4-component vector of float)
+0:41        'f4' ( in 4-component vector of float)
+0:41        Constant:
+0:41          1 (const uint)
+0:43      move second child to first child ( temp 4-component vector of float)
+0:43        'result' ( temp 4-component vector of float)
+0:43        subgroupAdd ( global 4-component vector of float)
+0:43          'f4' ( in 4-component vector of float)
+0:44      subgroupMul ( global 4-component vector of float)
+0:44        'f4' ( in 4-component vector of float)
+0:45      subgroupMin ( global 4-component vector of float)
+0:45        'f4' ( in 4-component vector of float)
+0:46      subgroupMax ( global 4-component vector of float)
+0:46        'f4' ( in 4-component vector of float)
+0:47      subgroupAnd ( global 4-component vector of uint)
+0:47        'ballot' ( temp 4-component vector of uint)
+0:48      subgroupOr ( global 4-component vector of uint)
+0:48        'ballot' ( temp 4-component vector of uint)
+0:49      subgroupXor ( global 4-component vector of uint)
+0:49        'ballot' ( temp 4-component vector of uint)
+0:50      subgroupInclusiveAdd ( global 4-component vector of float)
+0:50        'f4' ( in 4-component vector of float)
+0:51      subgroupInclusiveMul ( global 4-component vector of float)
+0:51        'f4' ( in 4-component vector of float)
+0:52      subgroupInclusiveMin ( global 4-component vector of float)
+0:52        'f4' ( in 4-component vector of float)
+0:53      subgroupInclusiveMax ( global 4-component vector of float)
+0:53        'f4' ( in 4-component vector of float)
+0:54      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:54        'ballot' ( temp 4-component vector of uint)
+0:55      subgroupInclusiveOr ( global 4-component vector of uint)
+0:55        'ballot' ( temp 4-component vector of uint)
+0:56      subgroupInclusiveXor ( global 4-component vector of uint)
+0:56        'ballot' ( temp 4-component vector of uint)
+0:57      subgroupExclusiveAdd ( global 4-component vector of float)
+0:57        'f4' ( in 4-component vector of float)
+0:58      subgroupExclusiveMul ( global 4-component vector of float)
+0:58        'f4' ( in 4-component vector of float)
+0:59      subgroupExclusiveMin ( global 4-component vector of float)
+0:59        'f4' ( in 4-component vector of float)
+0:60      subgroupExclusiveMax ( global 4-component vector of float)
+0:60        'f4' ( in 4-component vector of float)
+0:61      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:61        'ballot' ( temp 4-component vector of uint)
+0:62      subgroupExclusiveOr ( global 4-component vector of uint)
+0:62        'ballot' ( temp 4-component vector of uint)
+0:63      subgroupExclusiveXor ( global 4-component vector of uint)
+0:63        'ballot' ( temp 4-component vector of uint)
+0:65      subgroupClusteredAdd ( global 4-component vector of float)
+0:65        'f4' ( in 4-component vector of float)
+0:65        Constant:
+0:65          2 (const uint)
+0:66      subgroupClusteredMul ( global 4-component vector of float)
+0:66        'f4' ( in 4-component vector of float)
+0:66        Constant:
+0:66          2 (const uint)
+0:67      subgroupClusteredMin ( global 4-component vector of float)
+0:67        'f4' ( in 4-component vector of float)
+0:67        Constant:
+0:67          2 (const uint)
+0:68      subgroupClusteredMax ( global 4-component vector of float)
+0:68        'f4' ( in 4-component vector of float)
+0:68        Constant:
+0:68          2 (const uint)
+0:69      subgroupClusteredAnd ( global 4-component vector of uint)
+0:69        'ballot' ( temp 4-component vector of uint)
+0:69        Constant:
+0:69          2 (const uint)
+0:70      subgroupClusteredOr ( global 4-component vector of uint)
+0:70        'ballot' ( temp 4-component vector of uint)
+0:70        Constant:
+0:70          2 (const uint)
+0:71      subgroupClusteredXor ( global 4-component vector of uint)
+0:71        'ballot' ( temp 4-component vector of uint)
+0:71        Constant:
+0:71          2 (const uint)
+0:73      subgroupQuadBroadcast ( global 4-component vector of float)
+0:73        'f4' ( in 4-component vector of float)
+0:73        Constant:
+0:73          0 (const uint)
+0:74      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:74        'f4' ( in 4-component vector of float)
+0:75      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:75        'f4' ( in 4-component vector of float)
+0:76      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:76        'f4' ( in 4-component vector of float)
+0:78      Sequence
+0:78        move second child to first child ( temp 4-component vector of uint)
+0:78          'parti' ( temp 4-component vector of uint)
+0:78          subgroupPartitionNV ( global 4-component vector of uint)
+0:78            'f4' ( in 4-component vector of float)
+0:79      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:79        'f4' ( in 4-component vector of float)
+0:79        'parti' ( temp 4-component vector of uint)
+0:80      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:80        'f4' ( in 4-component vector of float)
+0:80        'parti' ( temp 4-component vector of uint)
+0:81      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:81        'f4' ( in 4-component vector of float)
+0:81        'parti' ( temp 4-component vector of uint)
+0:82      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:82        'f4' ( in 4-component vector of float)
+0:82        'parti' ( temp 4-component vector of uint)
+0:83      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:83        'ballot' ( temp 4-component vector of uint)
+0:83        'parti' ( temp 4-component vector of uint)
+0:84      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:84        'ballot' ( temp 4-component vector of uint)
+0:84        'parti' ( temp 4-component vector of uint)
+0:85      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:85        'ballot' ( temp 4-component vector of uint)
+0:85        'parti' ( temp 4-component vector of uint)
+0:86      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:86        'f4' ( in 4-component vector of float)
+0:86        'parti' ( temp 4-component vector of uint)
+0:87      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:87        'f4' ( in 4-component vector of float)
+0:87        'parti' ( temp 4-component vector of uint)
+0:88      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:88        'f4' ( in 4-component vector of float)
+0:88        'parti' ( temp 4-component vector of uint)
+0:89      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:89        'f4' ( in 4-component vector of float)
+0:89        'parti' ( temp 4-component vector of uint)
+0:90      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:90        'ballot' ( temp 4-component vector of uint)
+0:90        'parti' ( temp 4-component vector of uint)
+0:91      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:91        'ballot' ( temp 4-component vector of uint)
+0:91        'parti' ( temp 4-component vector of uint)
+0:92      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:92        'ballot' ( temp 4-component vector of uint)
+0:92        'parti' ( temp 4-component vector of uint)
+0:93      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:93        'f4' ( in 4-component vector of float)
+0:93        'parti' ( temp 4-component vector of uint)
+0:94      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:94        'f4' ( in 4-component vector of float)
+0:94        'parti' ( temp 4-component vector of uint)
+0:95      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:95        'f4' ( in 4-component vector of float)
+0:95        'parti' ( temp 4-component vector of uint)
+0:96      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:96        'f4' ( in 4-component vector of float)
+0:96        'parti' ( temp 4-component vector of uint)
+0:97      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:97        'ballot' ( temp 4-component vector of uint)
+0:97        'parti' ( temp 4-component vector of uint)
+0:98      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:98        'ballot' ( temp 4-component vector of uint)
+0:98        'parti' ( temp 4-component vector of uint)
+0:99      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:99        'ballot' ( temp 4-component vector of uint)
+0:99        'parti' ( temp 4-component vector of uint)
+0:101      Branch: Return with expression
+0:101        'result' ( temp 4-component vector of float)
+0:113  Function Definition: main( ( global void)
+0:113    Function Parameters: 
+0:115    Sequence
+0:115      Sequence
+0:115        move second child to first child ( temp uint)
+0:115          'lx' ( temp uint)
+0:115          direct index ( temp uint)
+0:115            'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV)
+0:115            Constant:
+0:115              0 (const int)
+0:116      Sequence
+0:116        move second child to first child ( temp uint)
+0:116          'ly' ( temp uint)
+0:116          direct index ( temp uint)
+0:116            'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV)
+0:116            Constant:
+0:116              1 (const int)
+0:117      Sequence
+0:117        move second child to first child ( temp uint)
+0:117          'sx' ( temp uint)
+0:117          direct index ( temp uint)
+0:117            'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV)
+0:117            Constant:
+0:117              0 (const int)
+0:118      Sequence
+0:118        move second child to first child ( temp uint)
+0:118          'sy' ( temp uint)
+0:118          direct index ( temp uint)
+0:118            'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV)
+0:118            Constant:
+0:118              1 (const int)
+0:119      traceNV ( global void)
+0:119        'accNV0' (layout( set=0 binding=0) uniform accelerationStructureNV)
+0:119        'lx' ( temp uint)
+0:119        'ly' ( temp uint)
+0:119        'sx' ( temp uint)
+0:119        'sy' ( temp uint)
+0:119        Constant:
+0:119          0 (const uint)
+0:119        origin: direct index for structure (layout( column_major std430 offset=16) buffer 3-component vector of float)
+0:119          'anon@0' (layout( column_major std430 shaderRecordNV) buffer block{layout( column_major std430 offset=0) buffer 3-component vector of float dir, layout( column_major std430 offset=16) buffer 3-component vector of float origin})
+0:119          Constant:
+0:119            1 (const uint)
+0:119        Constant:
+0:119          0.500000
+0:119        dir: direct index for structure (layout( column_major std430 offset=0) buffer 3-component vector of float)
+0:119          'anon@0' (layout( column_major std430 shaderRecordNV) buffer block{layout( column_major std430 offset=0) buffer 3-component vector of float dir, layout( column_major std430 offset=16) buffer 3-component vector of float origin})
+0:119          Constant:
+0:119            0 (const uint)
+0:119        Constant:
+0:119          0.750000
+0:119        Constant:
+0:119          1 (const int)
+0:123  Function Definition: basic_works( ( global void)
+0:123    Function Parameters: 
+0:125    Sequence
+0:125      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:126      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:127      subgroupBarrier ( global void)
+0:128      subgroupMemoryBarrier ( global void)
+0:129      subgroupMemoryBarrierBuffer ( global void)
+0:130      subgroupMemoryBarrierImage ( global void)
+0:131      subgroupElect ( global bool)
+0:135  Function Definition: ballot_works(vf4; ( global void)
+0:135    Function Parameters: 
+0:135      'f4' ( in 4-component vector of float)
+0:136    Sequence
+0:136      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:137      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:138      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:139      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:140      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:141      subgroupBroadcast ( global 4-component vector of float)
+0:141        'f4' ( in 4-component vector of float)
+0:141        Constant:
+0:141          0 (const uint)
+0:142      subgroupBroadcastFirst ( global 4-component vector of float)
+0:142        'f4' ( in 4-component vector of float)
+0:143      Sequence
+0:143        move second child to first child ( temp 4-component vector of uint)
+0:143          'ballot' ( temp 4-component vector of uint)
+0:143          subgroupBallot ( global 4-component vector of uint)
+0:143            Constant:
+0:143              false (const bool)
+0:144      subgroupInverseBallot ( global bool)
+0:144        Constant:
+0:144          1 (const uint)
+0:144          1 (const uint)
+0:144          1 (const uint)
+0:144          1 (const uint)
+0:145      subgroupBallotBitExtract ( global bool)
+0:145        'ballot' ( temp 4-component vector of uint)
+0:145        Constant:
+0:145          0 (const uint)
+0:146      subgroupBallotBitCount ( global uint)
+0:146        'ballot' ( temp 4-component vector of uint)
+0:147      subgroupBallotInclusiveBitCount ( global uint)
+0:147        'ballot' ( temp 4-component vector of uint)
+0:148      subgroupBallotExclusiveBitCount ( global uint)
+0:148        'ballot' ( temp 4-component vector of uint)
+0:149      subgroupBallotFindLSB ( global uint)
+0:149        'ballot' ( temp 4-component vector of uint)
+0:150      subgroupBallotFindMSB ( global uint)
+0:150        'ballot' ( temp 4-component vector of uint)
+0:154  Function Definition: vote_works(vf4; ( global void)
+0:154    Function Parameters: 
+0:154      'f4' ( in 4-component vector of float)
+0:156    Sequence
+0:156      subgroupAll ( global bool)
+0:156        Constant:
+0:156          true (const bool)
+0:157      subgroupAny ( global bool)
+0:157        Constant:
+0:157          false (const bool)
+0:158      subgroupAllEqual ( global bool)
+0:158        'f4' ( in 4-component vector of float)
+0:163  Function Definition: shuffle_works(vf4; ( global void)
+0:163    Function Parameters: 
+0:163      'f4' ( in 4-component vector of float)
+0:165    Sequence
+0:165      subgroupShuffle ( global 4-component vector of float)
+0:165        'f4' ( in 4-component vector of float)
+0:165        Constant:
+0:165          0 (const uint)
+0:166      subgroupShuffleXor ( global 4-component vector of float)
+0:166        'f4' ( in 4-component vector of float)
+0:166        Constant:
+0:166          1 (const uint)
+0:167      subgroupShuffleUp ( global 4-component vector of float)
+0:167        'f4' ( in 4-component vector of float)
+0:167        Constant:
+0:167          1 (const uint)
+0:168      subgroupShuffleDown ( global 4-component vector of float)
+0:168        'f4' ( in 4-component vector of float)
+0:168        Constant:
+0:168          1 (const uint)
+0:172  Function Definition: arith_works(vf4; ( global void)
+0:172    Function Parameters: 
+0:172      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:175      subgroupAdd ( global 4-component vector of float)
+0:175        'f4' ( in 4-component vector of float)
+0:176      subgroupMul ( global 4-component vector of float)
+0:176        'f4' ( in 4-component vector of float)
+0:177      subgroupMin ( global 4-component vector of float)
+0:177        'f4' ( in 4-component vector of float)
+0:178      subgroupMax ( global 4-component vector of float)
+0:178        'f4' ( in 4-component vector of float)
+0:179      subgroupAnd ( global 4-component vector of uint)
+0:179        'ballot' ( temp 4-component vector of uint)
+0:180      subgroupOr ( global 4-component vector of uint)
+0:180        'ballot' ( temp 4-component vector of uint)
+0:181      subgroupXor ( global 4-component vector of uint)
+0:181        'ballot' ( temp 4-component vector of uint)
+0:182      subgroupInclusiveAdd ( global 4-component vector of float)
+0:182        'f4' ( in 4-component vector of float)
+0:183      subgroupInclusiveMul ( global 4-component vector of float)
+0:183        'f4' ( in 4-component vector of float)
+0:184      subgroupInclusiveMin ( global 4-component vector of float)
+0:184        'f4' ( in 4-component vector of float)
+0:185      subgroupInclusiveMax ( global 4-component vector of float)
+0:185        'f4' ( in 4-component vector of float)
+0:186      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:186        'ballot' ( temp 4-component vector of uint)
+0:187      subgroupInclusiveOr ( global 4-component vector of uint)
+0:187        'ballot' ( temp 4-component vector of uint)
+0:188      subgroupInclusiveXor ( global 4-component vector of uint)
+0:188        'ballot' ( temp 4-component vector of uint)
+0:189      subgroupExclusiveAdd ( global 4-component vector of float)
+0:189        'f4' ( in 4-component vector of float)
+0:190      subgroupExclusiveMul ( global 4-component vector of float)
+0:190        'f4' ( in 4-component vector of float)
+0:191      subgroupExclusiveMin ( global 4-component vector of float)
+0:191        'f4' ( in 4-component vector of float)
+0:192      subgroupExclusiveMax ( global 4-component vector of float)
+0:192        'f4' ( in 4-component vector of float)
+0:193      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:193        'ballot' ( temp 4-component vector of uint)
+0:194      subgroupExclusiveOr ( global 4-component vector of uint)
+0:194        'ballot' ( temp 4-component vector of uint)
+0:195      subgroupExclusiveXor ( global 4-component vector of uint)
+0:195        'ballot' ( temp 4-component vector of uint)
+0:199  Function Definition: clustered_works(vf4; ( global void)
+0:199    Function Parameters: 
+0:199      'f4' ( in 4-component vector of float)
+0:201    Sequence
+0:201      Sequence
+0:201        move second child to first child ( temp 4-component vector of uint)
+0:201          'ballot' ( temp 4-component vector of uint)
+0:201          Constant:
+0:201            85 (const uint)
+0:201            0 (const uint)
+0:201            0 (const uint)
+0:201            0 (const uint)
+0:202      subgroupClusteredAdd ( global 4-component vector of float)
+0:202        'f4' ( in 4-component vector of float)
+0:202        Constant:
+0:202          2 (const uint)
+0:203      subgroupClusteredMul ( global 4-component vector of float)
+0:203        'f4' ( in 4-component vector of float)
+0:203        Constant:
+0:203          2 (const uint)
+0:204      subgroupClusteredMin ( global 4-component vector of float)
+0:204        'f4' ( in 4-component vector of float)
+0:204        Constant:
+0:204          2 (const uint)
+0:205      subgroupClusteredMax ( global 4-component vector of float)
+0:205        'f4' ( in 4-component vector of float)
+0:205        Constant:
+0:205          2 (const uint)
+0:206      subgroupClusteredAnd ( global 4-component vector of uint)
+0:206        'ballot' ( temp 4-component vector of uint)
+0:206        Constant:
+0:206          2 (const uint)
+0:207      subgroupClusteredOr ( global 4-component vector of uint)
+0:207        'ballot' ( temp 4-component vector of uint)
+0:207        Constant:
+0:207          2 (const uint)
+0:208      subgroupClusteredXor ( global 4-component vector of uint)
+0:208        'ballot' ( temp 4-component vector of uint)
+0:208        Constant:
+0:208          2 (const uint)
+0:212  Function Definition: quad_works(vf4; ( global void)
+0:212    Function Parameters: 
+0:212      'f4' ( in 4-component vector of float)
+0:214    Sequence
+0:214      subgroupQuadBroadcast ( global 4-component vector of float)
+0:214        'f4' ( in 4-component vector of float)
+0:214        Constant:
+0:214          0 (const uint)
+0:215      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:215        'f4' ( in 4-component vector of float)
+0:216      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:216        'f4' ( in 4-component vector of float)
+0:217      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:217        'f4' ( in 4-component vector of float)
+0:221  Function Definition: partitioned_works(vf4; ( global void)
+0:221    Function Parameters: 
+0:221      'f4' ( in 4-component vector of float)
+0:223    Sequence
+0:223      Sequence
+0:223        move second child to first child ( temp 4-component vector of uint)
+0:223          'parti' ( temp 4-component vector of uint)
+0:223          subgroupPartitionNV ( global 4-component vector of uint)
+0:223            'f4' ( in 4-component vector of float)
+0:224      Sequence
+0:224        move second child to first child ( temp 4-component vector of uint)
+0:224          'ballot' ( temp 4-component vector of uint)
+0:224          Constant:
+0:224            85 (const uint)
+0:224            0 (const uint)
+0:224            0 (const uint)
+0:224            0 (const uint)
+0:225      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:225        'f4' ( in 4-component vector of float)
+0:225        'parti' ( temp 4-component vector of uint)
+0:226      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:226        'f4' ( in 4-component vector of float)
+0:226        'parti' ( temp 4-component vector of uint)
+0:227      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:227        'f4' ( in 4-component vector of float)
+0:227        'parti' ( temp 4-component vector of uint)
+0:228      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:228        'f4' ( in 4-component vector of float)
+0:228        'parti' ( temp 4-component vector of uint)
+0:229      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:229        'ballot' ( temp 4-component vector of uint)
+0:229        'parti' ( temp 4-component vector of uint)
+0:230      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:230        'ballot' ( temp 4-component vector of uint)
+0:230        'parti' ( temp 4-component vector of uint)
+0:231      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:231        'ballot' ( temp 4-component vector of uint)
+0:231        'parti' ( temp 4-component vector of uint)
+0:232      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:232        'f4' ( in 4-component vector of float)
+0:232        'parti' ( temp 4-component vector of uint)
+0:233      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:233        'f4' ( in 4-component vector of float)
+0:233        'parti' ( temp 4-component vector of uint)
+0:234      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:234        'f4' ( in 4-component vector of float)
+0:234        'parti' ( temp 4-component vector of uint)
+0:235      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:235        'f4' ( in 4-component vector of float)
+0:235        'parti' ( temp 4-component vector of uint)
+0:236      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:236        'ballot' ( temp 4-component vector of uint)
+0:236        'parti' ( temp 4-component vector of uint)
+0:237      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:237        'ballot' ( temp 4-component vector of uint)
+0:237        'parti' ( temp 4-component vector of uint)
+0:238      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:238        'ballot' ( temp 4-component vector of uint)
+0:238        'parti' ( temp 4-component vector of uint)
+0:239      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:239        'f4' ( in 4-component vector of float)
+0:239        'parti' ( temp 4-component vector of uint)
+0:240      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:240        'f4' ( in 4-component vector of float)
+0:240        'parti' ( temp 4-component vector of uint)
+0:241      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:241        'f4' ( in 4-component vector of float)
+0:241        'parti' ( temp 4-component vector of uint)
+0:242      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:242        'f4' ( in 4-component vector of float)
+0:242        'parti' ( temp 4-component vector of uint)
+0:243      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:243        'ballot' ( temp 4-component vector of uint)
+0:243        'parti' ( temp 4-component vector of uint)
+0:244      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:244        'ballot' ( temp 4-component vector of uint)
+0:244        'parti' ( temp 4-component vector of uint)
+0:245      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:245        'ballot' ( temp 4-component vector of uint)
+0:245        'parti' ( temp 4-component vector of uint)
+0:?   Linker Objects
+0:?     'accNV0' (layout( set=0 binding=0) uniform accelerationStructureNV)
+0:?     'accNV1' (layout( set=0 binding=1) uniform accelerationStructureNV)
+0:?     'payload' (layout( location=0) rayPayloadNV 4-component vector of float)
+0:?     'anon@0' (layout( column_major std430 shaderRecordNV) buffer block{layout( column_major std430 offset=0) buffer 3-component vector of float dir, layout( column_major std430 offset=16) buffer 3-component vector of float origin})
+
+
+Linked ray-generation stage:
+
+
+Shader version: 460
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_ray_tracing
+Requested GL_NV_shader_subgroup_partitioned
+ERROR: node is still EOpNull!
+0:113  Function Definition: main( ( global void)
+0:113    Function Parameters: 
+0:115    Sequence
+0:115      Sequence
+0:115        move second child to first child ( temp uint)
+0:115          'lx' ( temp uint)
+0:115          direct index ( temp uint)
+0:115            'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV)
+0:115            Constant:
+0:115              0 (const int)
+0:116      Sequence
+0:116        move second child to first child ( temp uint)
+0:116          'ly' ( temp uint)
+0:116          direct index ( temp uint)
+0:116            'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV)
+0:116            Constant:
+0:116              1 (const int)
+0:117      Sequence
+0:117        move second child to first child ( temp uint)
+0:117          'sx' ( temp uint)
+0:117          direct index ( temp uint)
+0:117            'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV)
+0:117            Constant:
+0:117              0 (const int)
+0:118      Sequence
+0:118        move second child to first child ( temp uint)
+0:118          'sy' ( temp uint)
+0:118          direct index ( temp uint)
+0:118            'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV)
+0:118            Constant:
+0:118              1 (const int)
+0:119      traceNV ( global void)
+0:119        'accNV0' (layout( set=0 binding=0) uniform accelerationStructureNV)
+0:119        'lx' ( temp uint)
+0:119        'ly' ( temp uint)
+0:119        'sx' ( temp uint)
+0:119        'sy' ( temp uint)
+0:119        Constant:
+0:119          0 (const uint)
+0:119        origin: direct index for structure (layout( column_major std430 offset=16) buffer 3-component vector of float)
+0:119          'anon@0' (layout( column_major std430 shaderRecordNV) buffer block{layout( column_major std430 offset=0) buffer 3-component vector of float dir, layout( column_major std430 offset=16) buffer 3-component vector of float origin})
+0:119          Constant:
+0:119            1 (const uint)
+0:119        Constant:
+0:119          0.500000
+0:119        dir: direct index for structure (layout( column_major std430 offset=0) buffer 3-component vector of float)
+0:119          'anon@0' (layout( column_major std430 shaderRecordNV) buffer block{layout( column_major std430 offset=0) buffer 3-component vector of float dir, layout( column_major std430 offset=16) buffer 3-component vector of float origin})
+0:119          Constant:
+0:119            0 (const uint)
+0:119        Constant:
+0:119          0.750000
+0:119        Constant:
+0:119          1 (const int)
+0:?   Linker Objects
+0:?     'accNV0' (layout( set=0 binding=0) uniform accelerationStructureNV)
+0:?     'accNV1' (layout( set=0 binding=1) uniform accelerationStructureNV)
+0:?     'payload' (layout( location=0) rayPayloadNV 4-component vector of float)
+0:?     'anon@0' (layout( column_major std430 shaderRecordNV) buffer block{layout( column_major std430 offset=0) buffer 3-component vector of float dir, layout( column_major std430 offset=16) buffer 3-component vector of float origin})
+

+ 749 - 0
3rdparty/glslang/Test/baseResults/glsl.460.subgroup.rint.out

@@ -0,0 +1,749 @@
+glsl.460.subgroup.rint
+ERROR: 0:8: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:9: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:10: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:11: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:12: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:13: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:14: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:15: 'gl_NumSubgroups' : undeclared identifier 
+ERROR: 0:16: 'gl_SubgroupID' : undeclared identifier 
+ERROR: 0:17: 'subgroupMemoryBarrierShared' : no matching overloaded function found 
+ERROR: 0:19: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:20: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:21: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:23: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:24: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:25: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:26: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:27: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:28: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:29: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:30: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:31: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:32: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:33: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:34: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:35: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:36: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:37: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:39: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:40: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:41: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:42: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:44: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:45: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:46: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:47: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:48: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:49: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:50: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:51: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:52: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:53: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:54: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:55: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:56: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:57: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:58: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:59: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:60: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:61: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:62: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:63: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:64: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:66: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:67: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:68: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:69: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:70: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:71: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:72: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:74: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:75: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:76: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:77: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:79: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:80: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:81: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:82: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:83: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:84: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:85: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:86: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:87: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:88: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:89: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:90: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:91: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:92: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:93: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:94: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:95: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:96: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:97: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:98: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:99: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:100: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 86 compilation errors.  No code generated.
+
+
+Shader version: 460
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_ray_tracing
+Requested GL_NV_shader_subgroup_partitioned
+ERROR: node is still EOpNull!
+0:5  Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
+0:5    Function Parameters: 
+0:5      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:8      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:9      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:10      subgroupBarrier ( global void)
+0:11      subgroupMemoryBarrier ( global void)
+0:12      subgroupMemoryBarrierBuffer ( global void)
+0:13      subgroupMemoryBarrierImage ( global void)
+0:14      subgroupElect ( global bool)
+0:15      'gl_NumSubgroups' ( temp float)
+0:16      'gl_SubgroupID' ( temp float)
+0:17      Constant:
+0:17        0.000000
+0:19      subgroupAll ( global bool)
+0:19        Constant:
+0:19          true (const bool)
+0:20      subgroupAny ( global bool)
+0:20        Constant:
+0:20          false (const bool)
+0:21      subgroupAllEqual ( global bool)
+0:21        'f4' ( in 4-component vector of float)
+0:23      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:24      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:25      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:26      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:27      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:28      subgroupBroadcast ( global 4-component vector of float)
+0:28        'f4' ( in 4-component vector of float)
+0:28        Constant:
+0:28          0 (const uint)
+0:29      subgroupBroadcastFirst ( global 4-component vector of float)
+0:29        'f4' ( in 4-component vector of float)
+0:30      Sequence
+0:30        move second child to first child ( temp 4-component vector of uint)
+0:30          'ballot' ( temp 4-component vector of uint)
+0:30          subgroupBallot ( global 4-component vector of uint)
+0:30            Constant:
+0:30              false (const bool)
+0:31      subgroupInverseBallot ( global bool)
+0:31        Constant:
+0:31          1 (const uint)
+0:31          1 (const uint)
+0:31          1 (const uint)
+0:31          1 (const uint)
+0:32      subgroupBallotBitExtract ( global bool)
+0:32        'ballot' ( temp 4-component vector of uint)
+0:32        Constant:
+0:32          0 (const uint)
+0:33      subgroupBallotBitCount ( global uint)
+0:33        'ballot' ( temp 4-component vector of uint)
+0:34      subgroupBallotInclusiveBitCount ( global uint)
+0:34        'ballot' ( temp 4-component vector of uint)
+0:35      subgroupBallotExclusiveBitCount ( global uint)
+0:35        'ballot' ( temp 4-component vector of uint)
+0:36      subgroupBallotFindLSB ( global uint)
+0:36        'ballot' ( temp 4-component vector of uint)
+0:37      subgroupBallotFindMSB ( global uint)
+0:37        'ballot' ( temp 4-component vector of uint)
+0:39      subgroupShuffle ( global 4-component vector of float)
+0:39        'f4' ( in 4-component vector of float)
+0:39        Constant:
+0:39          0 (const uint)
+0:40      subgroupShuffleXor ( global 4-component vector of float)
+0:40        'f4' ( in 4-component vector of float)
+0:40        Constant:
+0:40          1 (const uint)
+0:41      subgroupShuffleUp ( global 4-component vector of float)
+0:41        'f4' ( in 4-component vector of float)
+0:41        Constant:
+0:41          1 (const uint)
+0:42      subgroupShuffleDown ( global 4-component vector of float)
+0:42        'f4' ( in 4-component vector of float)
+0:42        Constant:
+0:42          1 (const uint)
+0:44      move second child to first child ( temp 4-component vector of float)
+0:44        'result' ( temp 4-component vector of float)
+0:44        subgroupAdd ( global 4-component vector of float)
+0:44          'f4' ( in 4-component vector of float)
+0:45      subgroupMul ( global 4-component vector of float)
+0:45        'f4' ( in 4-component vector of float)
+0:46      subgroupMin ( global 4-component vector of float)
+0:46        'f4' ( in 4-component vector of float)
+0:47      subgroupMax ( global 4-component vector of float)
+0:47        'f4' ( in 4-component vector of float)
+0:48      subgroupAnd ( global 4-component vector of uint)
+0:48        'ballot' ( temp 4-component vector of uint)
+0:49      subgroupOr ( global 4-component vector of uint)
+0:49        'ballot' ( temp 4-component vector of uint)
+0:50      subgroupXor ( global 4-component vector of uint)
+0:50        'ballot' ( temp 4-component vector of uint)
+0:51      subgroupInclusiveAdd ( global 4-component vector of float)
+0:51        'f4' ( in 4-component vector of float)
+0:52      subgroupInclusiveMul ( global 4-component vector of float)
+0:52        'f4' ( in 4-component vector of float)
+0:53      subgroupInclusiveMin ( global 4-component vector of float)
+0:53        'f4' ( in 4-component vector of float)
+0:54      subgroupInclusiveMax ( global 4-component vector of float)
+0:54        'f4' ( in 4-component vector of float)
+0:55      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:55        'ballot' ( temp 4-component vector of uint)
+0:56      subgroupInclusiveOr ( global 4-component vector of uint)
+0:56        'ballot' ( temp 4-component vector of uint)
+0:57      subgroupInclusiveXor ( global 4-component vector of uint)
+0:57        'ballot' ( temp 4-component vector of uint)
+0:58      subgroupExclusiveAdd ( global 4-component vector of float)
+0:58        'f4' ( in 4-component vector of float)
+0:59      subgroupExclusiveMul ( global 4-component vector of float)
+0:59        'f4' ( in 4-component vector of float)
+0:60      subgroupExclusiveMin ( global 4-component vector of float)
+0:60        'f4' ( in 4-component vector of float)
+0:61      subgroupExclusiveMax ( global 4-component vector of float)
+0:61        'f4' ( in 4-component vector of float)
+0:62      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:62        'ballot' ( temp 4-component vector of uint)
+0:63      subgroupExclusiveOr ( global 4-component vector of uint)
+0:63        'ballot' ( temp 4-component vector of uint)
+0:64      subgroupExclusiveXor ( global 4-component vector of uint)
+0:64        'ballot' ( temp 4-component vector of uint)
+0:66      subgroupClusteredAdd ( global 4-component vector of float)
+0:66        'f4' ( in 4-component vector of float)
+0:66        Constant:
+0:66          2 (const uint)
+0:67      subgroupClusteredMul ( global 4-component vector of float)
+0:67        'f4' ( in 4-component vector of float)
+0:67        Constant:
+0:67          2 (const uint)
+0:68      subgroupClusteredMin ( global 4-component vector of float)
+0:68        'f4' ( in 4-component vector of float)
+0:68        Constant:
+0:68          2 (const uint)
+0:69      subgroupClusteredMax ( global 4-component vector of float)
+0:69        'f4' ( in 4-component vector of float)
+0:69        Constant:
+0:69          2 (const uint)
+0:70      subgroupClusteredAnd ( global 4-component vector of uint)
+0:70        'ballot' ( temp 4-component vector of uint)
+0:70        Constant:
+0:70          2 (const uint)
+0:71      subgroupClusteredOr ( global 4-component vector of uint)
+0:71        'ballot' ( temp 4-component vector of uint)
+0:71        Constant:
+0:71          2 (const uint)
+0:72      subgroupClusteredXor ( global 4-component vector of uint)
+0:72        'ballot' ( temp 4-component vector of uint)
+0:72        Constant:
+0:72          2 (const uint)
+0:74      subgroupQuadBroadcast ( global 4-component vector of float)
+0:74        'f4' ( in 4-component vector of float)
+0:74        Constant:
+0:74          0 (const uint)
+0:75      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:75        'f4' ( in 4-component vector of float)
+0:76      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:76        'f4' ( in 4-component vector of float)
+0:77      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:77        'f4' ( in 4-component vector of float)
+0:79      Sequence
+0:79        move second child to first child ( temp 4-component vector of uint)
+0:79          'parti' ( temp 4-component vector of uint)
+0:79          subgroupPartitionNV ( global 4-component vector of uint)
+0:79            'f4' ( in 4-component vector of float)
+0:80      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:80        'f4' ( in 4-component vector of float)
+0:80        'parti' ( temp 4-component vector of uint)
+0:81      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:81        'f4' ( in 4-component vector of float)
+0:81        'parti' ( temp 4-component vector of uint)
+0:82      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:82        'f4' ( in 4-component vector of float)
+0:82        'parti' ( temp 4-component vector of uint)
+0:83      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:83        'f4' ( in 4-component vector of float)
+0:83        'parti' ( temp 4-component vector of uint)
+0:84      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:84        'ballot' ( temp 4-component vector of uint)
+0:84        'parti' ( temp 4-component vector of uint)
+0:85      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:85        'ballot' ( temp 4-component vector of uint)
+0:85        'parti' ( temp 4-component vector of uint)
+0:86      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:86        'ballot' ( temp 4-component vector of uint)
+0:86        'parti' ( temp 4-component vector of uint)
+0:87      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:87        'f4' ( in 4-component vector of float)
+0:87        'parti' ( temp 4-component vector of uint)
+0:88      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:88        'f4' ( in 4-component vector of float)
+0:88        'parti' ( temp 4-component vector of uint)
+0:89      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:89        'f4' ( in 4-component vector of float)
+0:89        'parti' ( temp 4-component vector of uint)
+0:90      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:90        'f4' ( in 4-component vector of float)
+0:90        'parti' ( temp 4-component vector of uint)
+0:91      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:91        'ballot' ( temp 4-component vector of uint)
+0:91        'parti' ( temp 4-component vector of uint)
+0:92      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:92        'ballot' ( temp 4-component vector of uint)
+0:92        'parti' ( temp 4-component vector of uint)
+0:93      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:93        'ballot' ( temp 4-component vector of uint)
+0:93        'parti' ( temp 4-component vector of uint)
+0:94      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:94        'f4' ( in 4-component vector of float)
+0:94        'parti' ( temp 4-component vector of uint)
+0:95      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:95        'f4' ( in 4-component vector of float)
+0:95        'parti' ( temp 4-component vector of uint)
+0:96      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:96        'f4' ( in 4-component vector of float)
+0:96        'parti' ( temp 4-component vector of uint)
+0:97      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:97        'f4' ( in 4-component vector of float)
+0:97        'parti' ( temp 4-component vector of uint)
+0:98      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:98        'ballot' ( temp 4-component vector of uint)
+0:98        'parti' ( temp 4-component vector of uint)
+0:99      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:99        'ballot' ( temp 4-component vector of uint)
+0:99        'parti' ( temp 4-component vector of uint)
+0:100      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:100        'ballot' ( temp 4-component vector of uint)
+0:100        'parti' ( temp 4-component vector of uint)
+0:102      Branch: Return with expression
+0:102        'result' ( temp 4-component vector of float)
+0:108  Function Definition: main( ( global void)
+0:108    Function Parameters: 
+0:110    Sequence
+0:110      Sequence
+0:110        move second child to first child ( temp 3-component vector of uint)
+0:110          'v0' ( temp 3-component vector of uint)
+0:110          'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV)
+0:111      Sequence
+0:111        move second child to first child ( temp 3-component vector of uint)
+0:111          'v1' ( temp 3-component vector of uint)
+0:111          'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV)
+0:112      Sequence
+0:112        move second child to first child ( temp int)
+0:112          'v2' ( temp int)
+0:112          'gl_PrimitiveID' ( in int PrimitiveID)
+0:113      Sequence
+0:113        move second child to first child ( temp int)
+0:113          'v3' ( temp int)
+0:113          'gl_InstanceID' ( in int InstanceId)
+0:114      Sequence
+0:114        move second child to first child ( temp int)
+0:114          'v4' ( temp int)
+0:114          'gl_InstanceCustomIndexNV' ( in int InstanceCustomIndexNV)
+0:115      Sequence
+0:115        move second child to first child ( temp 3-component vector of float)
+0:115          'v5' ( temp 3-component vector of float)
+0:115          'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV)
+0:116      Sequence
+0:116        move second child to first child ( temp 3-component vector of float)
+0:116          'v6' ( temp 3-component vector of float)
+0:116          'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV)
+0:117      Sequence
+0:117        move second child to first child ( temp 3-component vector of float)
+0:117          'v7' ( temp 3-component vector of float)
+0:117          'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV)
+0:118      Sequence
+0:118        move second child to first child ( temp 3-component vector of float)
+0:118          'v8' ( temp 3-component vector of float)
+0:118          'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV)
+0:119      Sequence
+0:119        move second child to first child ( temp float)
+0:119          'v9' ( temp float)
+0:119          'gl_RayTminNV' ( in float ObjectRayTminNV)
+0:120      Sequence
+0:120        move second child to first child ( temp float)
+0:120          'v10' ( temp float)
+0:120          'gl_RayTmaxNV' ( in float ObjectRayTmaxNV)
+0:121      Sequence
+0:121        move second child to first child ( temp 4X3 matrix of float)
+0:121          'v11' ( temp 4X3 matrix of float)
+0:121          'gl_ObjectToWorldNV' ( in 4X3 matrix of float ObjectToWorldNV)
+0:122      Sequence
+0:122        move second child to first child ( temp 4X3 matrix of float)
+0:122          'v12' ( temp 4X3 matrix of float)
+0:122          'gl_WorldToObjectNV' ( in 4X3 matrix of float WorldToObjectNV)
+0:123      move second child to first child ( temp 4-component vector of float)
+0:123        'iAttr' ( hitAttributeNV 4-component vector of float)
+0:123        Constant:
+0:123          0.500000
+0:123          0.500000
+0:123          0.000000
+0:123          1.000000
+0:124      reportIntersectionNV ( global bool)
+0:124        Constant:
+0:124          0.500000
+0:124        Constant:
+0:124          1 (const uint)
+0:129  Function Definition: basic_works( ( global void)
+0:129    Function Parameters: 
+0:131    Sequence
+0:131      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:132      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:133      subgroupBarrier ( global void)
+0:134      subgroupMemoryBarrier ( global void)
+0:135      subgroupMemoryBarrierBuffer ( global void)
+0:136      subgroupMemoryBarrierImage ( global void)
+0:137      subgroupElect ( global bool)
+0:141  Function Definition: ballot_works(vf4; ( global void)
+0:141    Function Parameters: 
+0:141      'f4' ( in 4-component vector of float)
+0:142    Sequence
+0:142      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:143      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:144      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:145      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:146      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:147      subgroupBroadcast ( global 4-component vector of float)
+0:147        'f4' ( in 4-component vector of float)
+0:147        Constant:
+0:147          0 (const uint)
+0:148      subgroupBroadcastFirst ( global 4-component vector of float)
+0:148        'f4' ( in 4-component vector of float)
+0:149      Sequence
+0:149        move second child to first child ( temp 4-component vector of uint)
+0:149          'ballot' ( temp 4-component vector of uint)
+0:149          subgroupBallot ( global 4-component vector of uint)
+0:149            Constant:
+0:149              false (const bool)
+0:150      subgroupInverseBallot ( global bool)
+0:150        Constant:
+0:150          1 (const uint)
+0:150          1 (const uint)
+0:150          1 (const uint)
+0:150          1 (const uint)
+0:151      subgroupBallotBitExtract ( global bool)
+0:151        'ballot' ( temp 4-component vector of uint)
+0:151        Constant:
+0:151          0 (const uint)
+0:152      subgroupBallotBitCount ( global uint)
+0:152        'ballot' ( temp 4-component vector of uint)
+0:153      subgroupBallotInclusiveBitCount ( global uint)
+0:153        'ballot' ( temp 4-component vector of uint)
+0:154      subgroupBallotExclusiveBitCount ( global uint)
+0:154        'ballot' ( temp 4-component vector of uint)
+0:155      subgroupBallotFindLSB ( global uint)
+0:155        'ballot' ( temp 4-component vector of uint)
+0:156      subgroupBallotFindMSB ( global uint)
+0:156        'ballot' ( temp 4-component vector of uint)
+0:160  Function Definition: vote_works(vf4; ( global void)
+0:160    Function Parameters: 
+0:160      'f4' ( in 4-component vector of float)
+0:162    Sequence
+0:162      subgroupAll ( global bool)
+0:162        Constant:
+0:162          true (const bool)
+0:163      subgroupAny ( global bool)
+0:163        Constant:
+0:163          false (const bool)
+0:164      subgroupAllEqual ( global bool)
+0:164        'f4' ( in 4-component vector of float)
+0:169  Function Definition: shuffle_works(vf4; ( global void)
+0:169    Function Parameters: 
+0:169      'f4' ( in 4-component vector of float)
+0:171    Sequence
+0:171      subgroupShuffle ( global 4-component vector of float)
+0:171        'f4' ( in 4-component vector of float)
+0:171        Constant:
+0:171          0 (const uint)
+0:172      subgroupShuffleXor ( global 4-component vector of float)
+0:172        'f4' ( in 4-component vector of float)
+0:172        Constant:
+0:172          1 (const uint)
+0:173      subgroupShuffleUp ( global 4-component vector of float)
+0:173        'f4' ( in 4-component vector of float)
+0:173        Constant:
+0:173          1 (const uint)
+0:174      subgroupShuffleDown ( global 4-component vector of float)
+0:174        'f4' ( in 4-component vector of float)
+0:174        Constant:
+0:174          1 (const uint)
+0:178  Function Definition: arith_works(vf4; ( global void)
+0:178    Function Parameters: 
+0:178      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:181      subgroupAdd ( global 4-component vector of float)
+0:181        'f4' ( in 4-component vector of float)
+0:182      subgroupMul ( global 4-component vector of float)
+0:182        'f4' ( in 4-component vector of float)
+0:183      subgroupMin ( global 4-component vector of float)
+0:183        'f4' ( in 4-component vector of float)
+0:184      subgroupMax ( global 4-component vector of float)
+0:184        'f4' ( in 4-component vector of float)
+0:185      subgroupAnd ( global 4-component vector of uint)
+0:185        'ballot' ( temp 4-component vector of uint)
+0:186      subgroupOr ( global 4-component vector of uint)
+0:186        'ballot' ( temp 4-component vector of uint)
+0:187      subgroupXor ( global 4-component vector of uint)
+0:187        'ballot' ( temp 4-component vector of uint)
+0:188      subgroupInclusiveAdd ( global 4-component vector of float)
+0:188        'f4' ( in 4-component vector of float)
+0:189      subgroupInclusiveMul ( global 4-component vector of float)
+0:189        'f4' ( in 4-component vector of float)
+0:190      subgroupInclusiveMin ( global 4-component vector of float)
+0:190        'f4' ( in 4-component vector of float)
+0:191      subgroupInclusiveMax ( global 4-component vector of float)
+0:191        'f4' ( in 4-component vector of float)
+0:192      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:192        'ballot' ( temp 4-component vector of uint)
+0:193      subgroupInclusiveOr ( global 4-component vector of uint)
+0:193        'ballot' ( temp 4-component vector of uint)
+0:194      subgroupInclusiveXor ( global 4-component vector of uint)
+0:194        'ballot' ( temp 4-component vector of uint)
+0:195      subgroupExclusiveAdd ( global 4-component vector of float)
+0:195        'f4' ( in 4-component vector of float)
+0:196      subgroupExclusiveMul ( global 4-component vector of float)
+0:196        'f4' ( in 4-component vector of float)
+0:197      subgroupExclusiveMin ( global 4-component vector of float)
+0:197        'f4' ( in 4-component vector of float)
+0:198      subgroupExclusiveMax ( global 4-component vector of float)
+0:198        'f4' ( in 4-component vector of float)
+0:199      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:199        'ballot' ( temp 4-component vector of uint)
+0:200      subgroupExclusiveOr ( global 4-component vector of uint)
+0:200        'ballot' ( temp 4-component vector of uint)
+0:201      subgroupExclusiveXor ( global 4-component vector of uint)
+0:201        'ballot' ( temp 4-component vector of uint)
+0:205  Function Definition: clustered_works(vf4; ( global void)
+0:205    Function Parameters: 
+0:205      'f4' ( in 4-component vector of float)
+0:207    Sequence
+0:207      Sequence
+0:207        move second child to first child ( temp 4-component vector of uint)
+0:207          'ballot' ( temp 4-component vector of uint)
+0:207          Constant:
+0:207            85 (const uint)
+0:207            0 (const uint)
+0:207            0 (const uint)
+0:207            0 (const uint)
+0:208      subgroupClusteredAdd ( global 4-component vector of float)
+0:208        'f4' ( in 4-component vector of float)
+0:208        Constant:
+0:208          2 (const uint)
+0:209      subgroupClusteredMul ( global 4-component vector of float)
+0:209        'f4' ( in 4-component vector of float)
+0:209        Constant:
+0:209          2 (const uint)
+0:210      subgroupClusteredMin ( global 4-component vector of float)
+0:210        'f4' ( in 4-component vector of float)
+0:210        Constant:
+0:210          2 (const uint)
+0:211      subgroupClusteredMax ( global 4-component vector of float)
+0:211        'f4' ( in 4-component vector of float)
+0:211        Constant:
+0:211          2 (const uint)
+0:212      subgroupClusteredAnd ( global 4-component vector of uint)
+0:212        'ballot' ( temp 4-component vector of uint)
+0:212        Constant:
+0:212          2 (const uint)
+0:213      subgroupClusteredOr ( global 4-component vector of uint)
+0:213        'ballot' ( temp 4-component vector of uint)
+0:213        Constant:
+0:213          2 (const uint)
+0:214      subgroupClusteredXor ( global 4-component vector of uint)
+0:214        'ballot' ( temp 4-component vector of uint)
+0:214        Constant:
+0:214          2 (const uint)
+0:218  Function Definition: quad_works(vf4; ( global void)
+0:218    Function Parameters: 
+0:218      'f4' ( in 4-component vector of float)
+0:220    Sequence
+0:220      subgroupQuadBroadcast ( global 4-component vector of float)
+0:220        'f4' ( in 4-component vector of float)
+0:220        Constant:
+0:220          0 (const uint)
+0:221      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:221        'f4' ( in 4-component vector of float)
+0:222      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:222        'f4' ( in 4-component vector of float)
+0:223      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:223        'f4' ( in 4-component vector of float)
+0:227  Function Definition: partitioned_works(vf4; ( global void)
+0:227    Function Parameters: 
+0:227      'f4' ( in 4-component vector of float)
+0:229    Sequence
+0:229      Sequence
+0:229        move second child to first child ( temp 4-component vector of uint)
+0:229          'parti' ( temp 4-component vector of uint)
+0:229          subgroupPartitionNV ( global 4-component vector of uint)
+0:229            'f4' ( in 4-component vector of float)
+0:230      Sequence
+0:230        move second child to first child ( temp 4-component vector of uint)
+0:230          'ballot' ( temp 4-component vector of uint)
+0:230          Constant:
+0:230            85 (const uint)
+0:230            0 (const uint)
+0:230            0 (const uint)
+0:230            0 (const uint)
+0:231      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:231        'f4' ( in 4-component vector of float)
+0:231        'parti' ( temp 4-component vector of uint)
+0:232      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:232        'f4' ( in 4-component vector of float)
+0:232        'parti' ( temp 4-component vector of uint)
+0:233      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:233        'f4' ( in 4-component vector of float)
+0:233        'parti' ( temp 4-component vector of uint)
+0:234      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:234        'f4' ( in 4-component vector of float)
+0:234        'parti' ( temp 4-component vector of uint)
+0:235      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:235        'ballot' ( temp 4-component vector of uint)
+0:235        'parti' ( temp 4-component vector of uint)
+0:236      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:236        'ballot' ( temp 4-component vector of uint)
+0:236        'parti' ( temp 4-component vector of uint)
+0:237      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:237        'ballot' ( temp 4-component vector of uint)
+0:237        'parti' ( temp 4-component vector of uint)
+0:238      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:238        'f4' ( in 4-component vector of float)
+0:238        'parti' ( temp 4-component vector of uint)
+0:239      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:239        'f4' ( in 4-component vector of float)
+0:239        'parti' ( temp 4-component vector of uint)
+0:240      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:240        'f4' ( in 4-component vector of float)
+0:240        'parti' ( temp 4-component vector of uint)
+0:241      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:241        'f4' ( in 4-component vector of float)
+0:241        'parti' ( temp 4-component vector of uint)
+0:242      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:242        'ballot' ( temp 4-component vector of uint)
+0:242        'parti' ( temp 4-component vector of uint)
+0:243      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:243        'ballot' ( temp 4-component vector of uint)
+0:243        'parti' ( temp 4-component vector of uint)
+0:244      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:244        'ballot' ( temp 4-component vector of uint)
+0:244        'parti' ( temp 4-component vector of uint)
+0:245      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:245        'f4' ( in 4-component vector of float)
+0:245        'parti' ( temp 4-component vector of uint)
+0:246      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:246        'f4' ( in 4-component vector of float)
+0:246        'parti' ( temp 4-component vector of uint)
+0:247      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:247        'f4' ( in 4-component vector of float)
+0:247        'parti' ( temp 4-component vector of uint)
+0:248      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:248        'f4' ( in 4-component vector of float)
+0:248        'parti' ( temp 4-component vector of uint)
+0:249      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:249        'ballot' ( temp 4-component vector of uint)
+0:249        'parti' ( temp 4-component vector of uint)
+0:250      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:250        'ballot' ( temp 4-component vector of uint)
+0:250        'parti' ( temp 4-component vector of uint)
+0:251      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:251        'ballot' ( temp 4-component vector of uint)
+0:251        'parti' ( temp 4-component vector of uint)
+0:?   Linker Objects
+0:?     'iAttr' ( hitAttributeNV 4-component vector of float)
+
+
+Linked intersection stage:
+
+
+Shader version: 460
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_ray_tracing
+Requested GL_NV_shader_subgroup_partitioned
+ERROR: node is still EOpNull!
+0:108  Function Definition: main( ( global void)
+0:108    Function Parameters: 
+0:110    Sequence
+0:110      Sequence
+0:110        move second child to first child ( temp 3-component vector of uint)
+0:110          'v0' ( temp 3-component vector of uint)
+0:110          'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV)
+0:111      Sequence
+0:111        move second child to first child ( temp 3-component vector of uint)
+0:111          'v1' ( temp 3-component vector of uint)
+0:111          'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV)
+0:112      Sequence
+0:112        move second child to first child ( temp int)
+0:112          'v2' ( temp int)
+0:112          'gl_PrimitiveID' ( in int PrimitiveID)
+0:113      Sequence
+0:113        move second child to first child ( temp int)
+0:113          'v3' ( temp int)
+0:113          'gl_InstanceID' ( in int InstanceId)
+0:114      Sequence
+0:114        move second child to first child ( temp int)
+0:114          'v4' ( temp int)
+0:114          'gl_InstanceCustomIndexNV' ( in int InstanceCustomIndexNV)
+0:115      Sequence
+0:115        move second child to first child ( temp 3-component vector of float)
+0:115          'v5' ( temp 3-component vector of float)
+0:115          'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV)
+0:116      Sequence
+0:116        move second child to first child ( temp 3-component vector of float)
+0:116          'v6' ( temp 3-component vector of float)
+0:116          'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV)
+0:117      Sequence
+0:117        move second child to first child ( temp 3-component vector of float)
+0:117          'v7' ( temp 3-component vector of float)
+0:117          'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV)
+0:118      Sequence
+0:118        move second child to first child ( temp 3-component vector of float)
+0:118          'v8' ( temp 3-component vector of float)
+0:118          'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV)
+0:119      Sequence
+0:119        move second child to first child ( temp float)
+0:119          'v9' ( temp float)
+0:119          'gl_RayTminNV' ( in float ObjectRayTminNV)
+0:120      Sequence
+0:120        move second child to first child ( temp float)
+0:120          'v10' ( temp float)
+0:120          'gl_RayTmaxNV' ( in float ObjectRayTmaxNV)
+0:121      Sequence
+0:121        move second child to first child ( temp 4X3 matrix of float)
+0:121          'v11' ( temp 4X3 matrix of float)
+0:121          'gl_ObjectToWorldNV' ( in 4X3 matrix of float ObjectToWorldNV)
+0:122      Sequence
+0:122        move second child to first child ( temp 4X3 matrix of float)
+0:122          'v12' ( temp 4X3 matrix of float)
+0:122          'gl_WorldToObjectNV' ( in 4X3 matrix of float WorldToObjectNV)
+0:123      move second child to first child ( temp 4-component vector of float)
+0:123        'iAttr' ( hitAttributeNV 4-component vector of float)
+0:123        Constant:
+0:123          0.500000
+0:123          0.500000
+0:123          0.000000
+0:123          1.000000
+0:124      reportIntersectionNV ( global bool)
+0:124        Constant:
+0:124          0.500000
+0:124        Constant:
+0:124          1 (const uint)
+0:?   Linker Objects
+0:?     'iAttr' ( hitAttributeNV 4-component vector of float)
+

+ 741 - 0
3rdparty/glslang/Test/baseResults/glsl.460.subgroup.rmiss.out

@@ -0,0 +1,741 @@
+glsl.460.subgroup.rmiss
+ERROR: 0:8: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:9: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:10: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:11: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:12: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:13: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:14: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:15: 'gl_NumSubgroups' : undeclared identifier 
+ERROR: 0:16: 'gl_SubgroupID' : undeclared identifier 
+ERROR: 0:17: 'subgroupMemoryBarrierShared' : no matching overloaded function found 
+ERROR: 0:19: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:20: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:21: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:23: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:24: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:25: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:26: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:27: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:28: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:29: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:30: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:31: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:32: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:33: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:34: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:35: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:36: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:37: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:39: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:40: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:41: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:42: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:44: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:45: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:46: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:47: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:48: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:49: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:50: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:51: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:52: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:53: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:54: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:55: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:56: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:57: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:58: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:59: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:60: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:61: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:62: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:63: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:64: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:66: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:67: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:68: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:69: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:70: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:71: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:72: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:74: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:75: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:76: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:77: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:79: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:80: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:81: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:82: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:83: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:84: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:85: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:86: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:87: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:88: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:89: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:90: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:91: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:92: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:93: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:94: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:95: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:96: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:97: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:98: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:99: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:100: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 86 compilation errors.  No code generated.
+
+
+Shader version: 460
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_ray_tracing
+Requested GL_NV_shader_subgroup_partitioned
+ERROR: node is still EOpNull!
+0:5  Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
+0:5    Function Parameters: 
+0:5      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:8      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:9      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:10      subgroupBarrier ( global void)
+0:11      subgroupMemoryBarrier ( global void)
+0:12      subgroupMemoryBarrierBuffer ( global void)
+0:13      subgroupMemoryBarrierImage ( global void)
+0:14      subgroupElect ( global bool)
+0:15      'gl_NumSubgroups' ( temp float)
+0:16      'gl_SubgroupID' ( temp float)
+0:17      Constant:
+0:17        0.000000
+0:19      subgroupAll ( global bool)
+0:19        Constant:
+0:19          true (const bool)
+0:20      subgroupAny ( global bool)
+0:20        Constant:
+0:20          false (const bool)
+0:21      subgroupAllEqual ( global bool)
+0:21        'f4' ( in 4-component vector of float)
+0:23      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:24      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:25      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:26      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:27      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:28      subgroupBroadcast ( global 4-component vector of float)
+0:28        'f4' ( in 4-component vector of float)
+0:28        Constant:
+0:28          0 (const uint)
+0:29      subgroupBroadcastFirst ( global 4-component vector of float)
+0:29        'f4' ( in 4-component vector of float)
+0:30      Sequence
+0:30        move second child to first child ( temp 4-component vector of uint)
+0:30          'ballot' ( temp 4-component vector of uint)
+0:30          subgroupBallot ( global 4-component vector of uint)
+0:30            Constant:
+0:30              false (const bool)
+0:31      subgroupInverseBallot ( global bool)
+0:31        Constant:
+0:31          1 (const uint)
+0:31          1 (const uint)
+0:31          1 (const uint)
+0:31          1 (const uint)
+0:32      subgroupBallotBitExtract ( global bool)
+0:32        'ballot' ( temp 4-component vector of uint)
+0:32        Constant:
+0:32          0 (const uint)
+0:33      subgroupBallotBitCount ( global uint)
+0:33        'ballot' ( temp 4-component vector of uint)
+0:34      subgroupBallotInclusiveBitCount ( global uint)
+0:34        'ballot' ( temp 4-component vector of uint)
+0:35      subgroupBallotExclusiveBitCount ( global uint)
+0:35        'ballot' ( temp 4-component vector of uint)
+0:36      subgroupBallotFindLSB ( global uint)
+0:36        'ballot' ( temp 4-component vector of uint)
+0:37      subgroupBallotFindMSB ( global uint)
+0:37        'ballot' ( temp 4-component vector of uint)
+0:39      subgroupShuffle ( global 4-component vector of float)
+0:39        'f4' ( in 4-component vector of float)
+0:39        Constant:
+0:39          0 (const uint)
+0:40      subgroupShuffleXor ( global 4-component vector of float)
+0:40        'f4' ( in 4-component vector of float)
+0:40        Constant:
+0:40          1 (const uint)
+0:41      subgroupShuffleUp ( global 4-component vector of float)
+0:41        'f4' ( in 4-component vector of float)
+0:41        Constant:
+0:41          1 (const uint)
+0:42      subgroupShuffleDown ( global 4-component vector of float)
+0:42        'f4' ( in 4-component vector of float)
+0:42        Constant:
+0:42          1 (const uint)
+0:44      move second child to first child ( temp 4-component vector of float)
+0:44        'result' ( temp 4-component vector of float)
+0:44        subgroupAdd ( global 4-component vector of float)
+0:44          'f4' ( in 4-component vector of float)
+0:45      subgroupMul ( global 4-component vector of float)
+0:45        'f4' ( in 4-component vector of float)
+0:46      subgroupMin ( global 4-component vector of float)
+0:46        'f4' ( in 4-component vector of float)
+0:47      subgroupMax ( global 4-component vector of float)
+0:47        'f4' ( in 4-component vector of float)
+0:48      subgroupAnd ( global 4-component vector of uint)
+0:48        'ballot' ( temp 4-component vector of uint)
+0:49      subgroupOr ( global 4-component vector of uint)
+0:49        'ballot' ( temp 4-component vector of uint)
+0:50      subgroupXor ( global 4-component vector of uint)
+0:50        'ballot' ( temp 4-component vector of uint)
+0:51      subgroupInclusiveAdd ( global 4-component vector of float)
+0:51        'f4' ( in 4-component vector of float)
+0:52      subgroupInclusiveMul ( global 4-component vector of float)
+0:52        'f4' ( in 4-component vector of float)
+0:53      subgroupInclusiveMin ( global 4-component vector of float)
+0:53        'f4' ( in 4-component vector of float)
+0:54      subgroupInclusiveMax ( global 4-component vector of float)
+0:54        'f4' ( in 4-component vector of float)
+0:55      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:55        'ballot' ( temp 4-component vector of uint)
+0:56      subgroupInclusiveOr ( global 4-component vector of uint)
+0:56        'ballot' ( temp 4-component vector of uint)
+0:57      subgroupInclusiveXor ( global 4-component vector of uint)
+0:57        'ballot' ( temp 4-component vector of uint)
+0:58      subgroupExclusiveAdd ( global 4-component vector of float)
+0:58        'f4' ( in 4-component vector of float)
+0:59      subgroupExclusiveMul ( global 4-component vector of float)
+0:59        'f4' ( in 4-component vector of float)
+0:60      subgroupExclusiveMin ( global 4-component vector of float)
+0:60        'f4' ( in 4-component vector of float)
+0:61      subgroupExclusiveMax ( global 4-component vector of float)
+0:61        'f4' ( in 4-component vector of float)
+0:62      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:62        'ballot' ( temp 4-component vector of uint)
+0:63      subgroupExclusiveOr ( global 4-component vector of uint)
+0:63        'ballot' ( temp 4-component vector of uint)
+0:64      subgroupExclusiveXor ( global 4-component vector of uint)
+0:64        'ballot' ( temp 4-component vector of uint)
+0:66      subgroupClusteredAdd ( global 4-component vector of float)
+0:66        'f4' ( in 4-component vector of float)
+0:66        Constant:
+0:66          2 (const uint)
+0:67      subgroupClusteredMul ( global 4-component vector of float)
+0:67        'f4' ( in 4-component vector of float)
+0:67        Constant:
+0:67          2 (const uint)
+0:68      subgroupClusteredMin ( global 4-component vector of float)
+0:68        'f4' ( in 4-component vector of float)
+0:68        Constant:
+0:68          2 (const uint)
+0:69      subgroupClusteredMax ( global 4-component vector of float)
+0:69        'f4' ( in 4-component vector of float)
+0:69        Constant:
+0:69          2 (const uint)
+0:70      subgroupClusteredAnd ( global 4-component vector of uint)
+0:70        'ballot' ( temp 4-component vector of uint)
+0:70        Constant:
+0:70          2 (const uint)
+0:71      subgroupClusteredOr ( global 4-component vector of uint)
+0:71        'ballot' ( temp 4-component vector of uint)
+0:71        Constant:
+0:71          2 (const uint)
+0:72      subgroupClusteredXor ( global 4-component vector of uint)
+0:72        'ballot' ( temp 4-component vector of uint)
+0:72        Constant:
+0:72          2 (const uint)
+0:74      subgroupQuadBroadcast ( global 4-component vector of float)
+0:74        'f4' ( in 4-component vector of float)
+0:74        Constant:
+0:74          0 (const uint)
+0:75      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:75        'f4' ( in 4-component vector of float)
+0:76      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:76        'f4' ( in 4-component vector of float)
+0:77      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:77        'f4' ( in 4-component vector of float)
+0:79      Sequence
+0:79        move second child to first child ( temp 4-component vector of uint)
+0:79          'parti' ( temp 4-component vector of uint)
+0:79          subgroupPartitionNV ( global 4-component vector of uint)
+0:79            'f4' ( in 4-component vector of float)
+0:80      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:80        'f4' ( in 4-component vector of float)
+0:80        'parti' ( temp 4-component vector of uint)
+0:81      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:81        'f4' ( in 4-component vector of float)
+0:81        'parti' ( temp 4-component vector of uint)
+0:82      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:82        'f4' ( in 4-component vector of float)
+0:82        'parti' ( temp 4-component vector of uint)
+0:83      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:83        'f4' ( in 4-component vector of float)
+0:83        'parti' ( temp 4-component vector of uint)
+0:84      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:84        'ballot' ( temp 4-component vector of uint)
+0:84        'parti' ( temp 4-component vector of uint)
+0:85      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:85        'ballot' ( temp 4-component vector of uint)
+0:85        'parti' ( temp 4-component vector of uint)
+0:86      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:86        'ballot' ( temp 4-component vector of uint)
+0:86        'parti' ( temp 4-component vector of uint)
+0:87      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:87        'f4' ( in 4-component vector of float)
+0:87        'parti' ( temp 4-component vector of uint)
+0:88      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:88        'f4' ( in 4-component vector of float)
+0:88        'parti' ( temp 4-component vector of uint)
+0:89      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:89        'f4' ( in 4-component vector of float)
+0:89        'parti' ( temp 4-component vector of uint)
+0:90      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:90        'f4' ( in 4-component vector of float)
+0:90        'parti' ( temp 4-component vector of uint)
+0:91      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:91        'ballot' ( temp 4-component vector of uint)
+0:91        'parti' ( temp 4-component vector of uint)
+0:92      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:92        'ballot' ( temp 4-component vector of uint)
+0:92        'parti' ( temp 4-component vector of uint)
+0:93      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:93        'ballot' ( temp 4-component vector of uint)
+0:93        'parti' ( temp 4-component vector of uint)
+0:94      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:94        'f4' ( in 4-component vector of float)
+0:94        'parti' ( temp 4-component vector of uint)
+0:95      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:95        'f4' ( in 4-component vector of float)
+0:95        'parti' ( temp 4-component vector of uint)
+0:96      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:96        'f4' ( in 4-component vector of float)
+0:96        'parti' ( temp 4-component vector of uint)
+0:97      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:97        'f4' ( in 4-component vector of float)
+0:97        'parti' ( temp 4-component vector of uint)
+0:98      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:98        'ballot' ( temp 4-component vector of uint)
+0:98        'parti' ( temp 4-component vector of uint)
+0:99      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:99        'ballot' ( temp 4-component vector of uint)
+0:99        'parti' ( temp 4-component vector of uint)
+0:100      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:100        'ballot' ( temp 4-component vector of uint)
+0:100        'parti' ( temp 4-component vector of uint)
+0:102      Branch: Return with expression
+0:102        'result' ( temp 4-component vector of float)
+0:109  Function Definition: main( ( global void)
+0:109    Function Parameters: 
+0:111    Sequence
+0:111      Sequence
+0:111        move second child to first child ( temp 3-component vector of uint)
+0:111          'v0' ( temp 3-component vector of uint)
+0:111          'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV)
+0:112      Sequence
+0:112        move second child to first child ( temp 3-component vector of uint)
+0:112          'v1' ( temp 3-component vector of uint)
+0:112          'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV)
+0:113      Sequence
+0:113        move second child to first child ( temp 3-component vector of float)
+0:113          'v2' ( temp 3-component vector of float)
+0:113          'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV)
+0:114      Sequence
+0:114        move second child to first child ( temp 3-component vector of float)
+0:114          'v3' ( temp 3-component vector of float)
+0:114          'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV)
+0:115      Sequence
+0:115        move second child to first child ( temp 3-component vector of float)
+0:115          'v4' ( temp 3-component vector of float)
+0:115          'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV)
+0:116      Sequence
+0:116        move second child to first child ( temp 3-component vector of float)
+0:116          'v5' ( temp 3-component vector of float)
+0:116          'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV)
+0:117      Sequence
+0:117        move second child to first child ( temp float)
+0:117          'v6' ( temp float)
+0:117          'gl_RayTminNV' ( in float ObjectRayTminNV)
+0:118      Sequence
+0:118        move second child to first child ( temp float)
+0:118          'v7' ( temp float)
+0:118          'gl_RayTmaxNV' ( in float ObjectRayTmaxNV)
+0:119      traceNV ( global void)
+0:119        'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV)
+0:119        Constant:
+0:119          0 (const uint)
+0:119        Constant:
+0:119          1 (const uint)
+0:119        Constant:
+0:119          2 (const uint)
+0:119        Constant:
+0:119          3 (const uint)
+0:119        Constant:
+0:119          0 (const uint)
+0:119        Constant:
+0:119          0.500000
+0:119          0.500000
+0:119          0.500000
+0:119        Constant:
+0:119          0.500000
+0:119        Constant:
+0:119          1.000000
+0:119          1.000000
+0:119          1.000000
+0:119        Constant:
+0:119          0.750000
+0:119        Constant:
+0:119          1 (const int)
+0:123  Function Definition: basic_works( ( global void)
+0:123    Function Parameters: 
+0:125    Sequence
+0:125      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:126      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:127      subgroupBarrier ( global void)
+0:128      subgroupMemoryBarrier ( global void)
+0:129      subgroupMemoryBarrierBuffer ( global void)
+0:130      subgroupMemoryBarrierImage ( global void)
+0:131      subgroupElect ( global bool)
+0:135  Function Definition: ballot_works(vf4; ( global void)
+0:135    Function Parameters: 
+0:135      'f4' ( in 4-component vector of float)
+0:136    Sequence
+0:136      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:137      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:138      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:139      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:140      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:141      subgroupBroadcast ( global 4-component vector of float)
+0:141        'f4' ( in 4-component vector of float)
+0:141        Constant:
+0:141          0 (const uint)
+0:142      subgroupBroadcastFirst ( global 4-component vector of float)
+0:142        'f4' ( in 4-component vector of float)
+0:143      Sequence
+0:143        move second child to first child ( temp 4-component vector of uint)
+0:143          'ballot' ( temp 4-component vector of uint)
+0:143          subgroupBallot ( global 4-component vector of uint)
+0:143            Constant:
+0:143              false (const bool)
+0:144      subgroupInverseBallot ( global bool)
+0:144        Constant:
+0:144          1 (const uint)
+0:144          1 (const uint)
+0:144          1 (const uint)
+0:144          1 (const uint)
+0:145      subgroupBallotBitExtract ( global bool)
+0:145        'ballot' ( temp 4-component vector of uint)
+0:145        Constant:
+0:145          0 (const uint)
+0:146      subgroupBallotBitCount ( global uint)
+0:146        'ballot' ( temp 4-component vector of uint)
+0:147      subgroupBallotInclusiveBitCount ( global uint)
+0:147        'ballot' ( temp 4-component vector of uint)
+0:148      subgroupBallotExclusiveBitCount ( global uint)
+0:148        'ballot' ( temp 4-component vector of uint)
+0:149      subgroupBallotFindLSB ( global uint)
+0:149        'ballot' ( temp 4-component vector of uint)
+0:150      subgroupBallotFindMSB ( global uint)
+0:150        'ballot' ( temp 4-component vector of uint)
+0:154  Function Definition: vote_works(vf4; ( global void)
+0:154    Function Parameters: 
+0:154      'f4' ( in 4-component vector of float)
+0:156    Sequence
+0:156      subgroupAll ( global bool)
+0:156        Constant:
+0:156          true (const bool)
+0:157      subgroupAny ( global bool)
+0:157        Constant:
+0:157          false (const bool)
+0:158      subgroupAllEqual ( global bool)
+0:158        'f4' ( in 4-component vector of float)
+0:163  Function Definition: shuffle_works(vf4; ( global void)
+0:163    Function Parameters: 
+0:163      'f4' ( in 4-component vector of float)
+0:165    Sequence
+0:165      subgroupShuffle ( global 4-component vector of float)
+0:165        'f4' ( in 4-component vector of float)
+0:165        Constant:
+0:165          0 (const uint)
+0:166      subgroupShuffleXor ( global 4-component vector of float)
+0:166        'f4' ( in 4-component vector of float)
+0:166        Constant:
+0:166          1 (const uint)
+0:167      subgroupShuffleUp ( global 4-component vector of float)
+0:167        'f4' ( in 4-component vector of float)
+0:167        Constant:
+0:167          1 (const uint)
+0:168      subgroupShuffleDown ( global 4-component vector of float)
+0:168        'f4' ( in 4-component vector of float)
+0:168        Constant:
+0:168          1 (const uint)
+0:172  Function Definition: arith_works(vf4; ( global void)
+0:172    Function Parameters: 
+0:172      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:175      subgroupAdd ( global 4-component vector of float)
+0:175        'f4' ( in 4-component vector of float)
+0:176      subgroupMul ( global 4-component vector of float)
+0:176        'f4' ( in 4-component vector of float)
+0:177      subgroupMin ( global 4-component vector of float)
+0:177        'f4' ( in 4-component vector of float)
+0:178      subgroupMax ( global 4-component vector of float)
+0:178        'f4' ( in 4-component vector of float)
+0:179      subgroupAnd ( global 4-component vector of uint)
+0:179        'ballot' ( temp 4-component vector of uint)
+0:180      subgroupOr ( global 4-component vector of uint)
+0:180        'ballot' ( temp 4-component vector of uint)
+0:181      subgroupXor ( global 4-component vector of uint)
+0:181        'ballot' ( temp 4-component vector of uint)
+0:182      subgroupInclusiveAdd ( global 4-component vector of float)
+0:182        'f4' ( in 4-component vector of float)
+0:183      subgroupInclusiveMul ( global 4-component vector of float)
+0:183        'f4' ( in 4-component vector of float)
+0:184      subgroupInclusiveMin ( global 4-component vector of float)
+0:184        'f4' ( in 4-component vector of float)
+0:185      subgroupInclusiveMax ( global 4-component vector of float)
+0:185        'f4' ( in 4-component vector of float)
+0:186      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:186        'ballot' ( temp 4-component vector of uint)
+0:187      subgroupInclusiveOr ( global 4-component vector of uint)
+0:187        'ballot' ( temp 4-component vector of uint)
+0:188      subgroupInclusiveXor ( global 4-component vector of uint)
+0:188        'ballot' ( temp 4-component vector of uint)
+0:189      subgroupExclusiveAdd ( global 4-component vector of float)
+0:189        'f4' ( in 4-component vector of float)
+0:190      subgroupExclusiveMul ( global 4-component vector of float)
+0:190        'f4' ( in 4-component vector of float)
+0:191      subgroupExclusiveMin ( global 4-component vector of float)
+0:191        'f4' ( in 4-component vector of float)
+0:192      subgroupExclusiveMax ( global 4-component vector of float)
+0:192        'f4' ( in 4-component vector of float)
+0:193      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:193        'ballot' ( temp 4-component vector of uint)
+0:194      subgroupExclusiveOr ( global 4-component vector of uint)
+0:194        'ballot' ( temp 4-component vector of uint)
+0:195      subgroupExclusiveXor ( global 4-component vector of uint)
+0:195        'ballot' ( temp 4-component vector of uint)
+0:199  Function Definition: clustered_works(vf4; ( global void)
+0:199    Function Parameters: 
+0:199      'f4' ( in 4-component vector of float)
+0:201    Sequence
+0:201      Sequence
+0:201        move second child to first child ( temp 4-component vector of uint)
+0:201          'ballot' ( temp 4-component vector of uint)
+0:201          Constant:
+0:201            85 (const uint)
+0:201            0 (const uint)
+0:201            0 (const uint)
+0:201            0 (const uint)
+0:202      subgroupClusteredAdd ( global 4-component vector of float)
+0:202        'f4' ( in 4-component vector of float)
+0:202        Constant:
+0:202          2 (const uint)
+0:203      subgroupClusteredMul ( global 4-component vector of float)
+0:203        'f4' ( in 4-component vector of float)
+0:203        Constant:
+0:203          2 (const uint)
+0:204      subgroupClusteredMin ( global 4-component vector of float)
+0:204        'f4' ( in 4-component vector of float)
+0:204        Constant:
+0:204          2 (const uint)
+0:205      subgroupClusteredMax ( global 4-component vector of float)
+0:205        'f4' ( in 4-component vector of float)
+0:205        Constant:
+0:205          2 (const uint)
+0:206      subgroupClusteredAnd ( global 4-component vector of uint)
+0:206        'ballot' ( temp 4-component vector of uint)
+0:206        Constant:
+0:206          2 (const uint)
+0:207      subgroupClusteredOr ( global 4-component vector of uint)
+0:207        'ballot' ( temp 4-component vector of uint)
+0:207        Constant:
+0:207          2 (const uint)
+0:208      subgroupClusteredXor ( global 4-component vector of uint)
+0:208        'ballot' ( temp 4-component vector of uint)
+0:208        Constant:
+0:208          2 (const uint)
+0:212  Function Definition: quad_works(vf4; ( global void)
+0:212    Function Parameters: 
+0:212      'f4' ( in 4-component vector of float)
+0:214    Sequence
+0:214      subgroupQuadBroadcast ( global 4-component vector of float)
+0:214        'f4' ( in 4-component vector of float)
+0:214        Constant:
+0:214          0 (const uint)
+0:215      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:215        'f4' ( in 4-component vector of float)
+0:216      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:216        'f4' ( in 4-component vector of float)
+0:217      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:217        'f4' ( in 4-component vector of float)
+0:221  Function Definition: partitioned_works(vf4; ( global void)
+0:221    Function Parameters: 
+0:221      'f4' ( in 4-component vector of float)
+0:223    Sequence
+0:223      Sequence
+0:223        move second child to first child ( temp 4-component vector of uint)
+0:223          'parti' ( temp 4-component vector of uint)
+0:223          subgroupPartitionNV ( global 4-component vector of uint)
+0:223            'f4' ( in 4-component vector of float)
+0:224      Sequence
+0:224        move second child to first child ( temp 4-component vector of uint)
+0:224          'ballot' ( temp 4-component vector of uint)
+0:224          Constant:
+0:224            85 (const uint)
+0:224            0 (const uint)
+0:224            0 (const uint)
+0:224            0 (const uint)
+0:225      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:225        'f4' ( in 4-component vector of float)
+0:225        'parti' ( temp 4-component vector of uint)
+0:226      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:226        'f4' ( in 4-component vector of float)
+0:226        'parti' ( temp 4-component vector of uint)
+0:227      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:227        'f4' ( in 4-component vector of float)
+0:227        'parti' ( temp 4-component vector of uint)
+0:228      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:228        'f4' ( in 4-component vector of float)
+0:228        'parti' ( temp 4-component vector of uint)
+0:229      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:229        'ballot' ( temp 4-component vector of uint)
+0:229        'parti' ( temp 4-component vector of uint)
+0:230      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:230        'ballot' ( temp 4-component vector of uint)
+0:230        'parti' ( temp 4-component vector of uint)
+0:231      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:231        'ballot' ( temp 4-component vector of uint)
+0:231        'parti' ( temp 4-component vector of uint)
+0:232      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:232        'f4' ( in 4-component vector of float)
+0:232        'parti' ( temp 4-component vector of uint)
+0:233      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:233        'f4' ( in 4-component vector of float)
+0:233        'parti' ( temp 4-component vector of uint)
+0:234      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:234        'f4' ( in 4-component vector of float)
+0:234        'parti' ( temp 4-component vector of uint)
+0:235      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:235        'f4' ( in 4-component vector of float)
+0:235        'parti' ( temp 4-component vector of uint)
+0:236      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:236        'ballot' ( temp 4-component vector of uint)
+0:236        'parti' ( temp 4-component vector of uint)
+0:237      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:237        'ballot' ( temp 4-component vector of uint)
+0:237        'parti' ( temp 4-component vector of uint)
+0:238      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:238        'ballot' ( temp 4-component vector of uint)
+0:238        'parti' ( temp 4-component vector of uint)
+0:239      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:239        'f4' ( in 4-component vector of float)
+0:239        'parti' ( temp 4-component vector of uint)
+0:240      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:240        'f4' ( in 4-component vector of float)
+0:240        'parti' ( temp 4-component vector of uint)
+0:241      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:241        'f4' ( in 4-component vector of float)
+0:241        'parti' ( temp 4-component vector of uint)
+0:242      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:242        'f4' ( in 4-component vector of float)
+0:242        'parti' ( temp 4-component vector of uint)
+0:243      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:243        'ballot' ( temp 4-component vector of uint)
+0:243        'parti' ( temp 4-component vector of uint)
+0:244      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:244        'ballot' ( temp 4-component vector of uint)
+0:244        'parti' ( temp 4-component vector of uint)
+0:245      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:245        'ballot' ( temp 4-component vector of uint)
+0:245        'parti' ( temp 4-component vector of uint)
+0:?   Linker Objects
+0:?     'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV)
+0:?     'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float)
+0:?     'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float)
+
+
+Linked miss stage:
+
+
+Shader version: 460
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_ray_tracing
+Requested GL_NV_shader_subgroup_partitioned
+ERROR: node is still EOpNull!
+0:109  Function Definition: main( ( global void)
+0:109    Function Parameters: 
+0:111    Sequence
+0:111      Sequence
+0:111        move second child to first child ( temp 3-component vector of uint)
+0:111          'v0' ( temp 3-component vector of uint)
+0:111          'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV)
+0:112      Sequence
+0:112        move second child to first child ( temp 3-component vector of uint)
+0:112          'v1' ( temp 3-component vector of uint)
+0:112          'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV)
+0:113      Sequence
+0:113        move second child to first child ( temp 3-component vector of float)
+0:113          'v2' ( temp 3-component vector of float)
+0:113          'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV)
+0:114      Sequence
+0:114        move second child to first child ( temp 3-component vector of float)
+0:114          'v3' ( temp 3-component vector of float)
+0:114          'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV)
+0:115      Sequence
+0:115        move second child to first child ( temp 3-component vector of float)
+0:115          'v4' ( temp 3-component vector of float)
+0:115          'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV)
+0:116      Sequence
+0:116        move second child to first child ( temp 3-component vector of float)
+0:116          'v5' ( temp 3-component vector of float)
+0:116          'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV)
+0:117      Sequence
+0:117        move second child to first child ( temp float)
+0:117          'v6' ( temp float)
+0:117          'gl_RayTminNV' ( in float ObjectRayTminNV)
+0:118      Sequence
+0:118        move second child to first child ( temp float)
+0:118          'v7' ( temp float)
+0:118          'gl_RayTmaxNV' ( in float ObjectRayTmaxNV)
+0:119      traceNV ( global void)
+0:119        'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV)
+0:119        Constant:
+0:119          0 (const uint)
+0:119        Constant:
+0:119          1 (const uint)
+0:119        Constant:
+0:119          2 (const uint)
+0:119        Constant:
+0:119          3 (const uint)
+0:119        Constant:
+0:119          0 (const uint)
+0:119        Constant:
+0:119          0.500000
+0:119          0.500000
+0:119          0.500000
+0:119        Constant:
+0:119          0.500000
+0:119        Constant:
+0:119          1.000000
+0:119          1.000000
+0:119          1.000000
+0:119        Constant:
+0:119          0.750000
+0:119        Constant:
+0:119          1 (const int)
+0:?   Linker Objects
+0:?     'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV)
+0:?     'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float)
+0:?     'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float)
+

+ 903 - 0
3rdparty/glslang/Test/baseResults/glsl.460.subgroup.task.out

@@ -0,0 +1,903 @@
+glsl.460.subgroup.task
+ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:13: 'gl_NumSubgroups' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:14: 'gl_SubgroupID' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:15: 'subgroupMemoryBarrierShared' : required extension not requested: GL_KHR_shader_subgroup_basic
+ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote
+ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot
+ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle
+ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative
+ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic
+ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered
+ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad
+ERROR: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned
+ERROR: 86 compilation errors.  No code generated.
+
+
+Shader version: 460
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_mesh_shader
+Requested GL_NV_shader_subgroup_partitioned
+local_size = (32, 1, 1)
+ERROR: node is still EOpNull!
+0:3  Function Definition: undeclared_errors(vf4; ( global 4-component vector of float)
+0:3    Function Parameters: 
+0:3      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:6      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:7      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:8      subgroupBarrier ( global void)
+0:9      subgroupMemoryBarrier ( global void)
+0:10      subgroupMemoryBarrierBuffer ( global void)
+0:11      subgroupMemoryBarrierImage ( global void)
+0:12      subgroupElect ( global bool)
+0:13      'gl_NumSubgroups' ( in uint NumSubgroups)
+0:14      'gl_SubgroupID' ( in uint SubgroupID)
+0:15      subgroupMemoryBarrierShared ( global void)
+0:17      subgroupAll ( global bool)
+0:17        Constant:
+0:17          true (const bool)
+0:18      subgroupAny ( global bool)
+0:18        Constant:
+0:18          false (const bool)
+0:19      subgroupAllEqual ( global bool)
+0:19        'f4' ( in 4-component vector of float)
+0:21      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:22      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:23      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:24      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:25      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:26      subgroupBroadcast ( global 4-component vector of float)
+0:26        'f4' ( in 4-component vector of float)
+0:26        Constant:
+0:26          0 (const uint)
+0:27      subgroupBroadcastFirst ( global 4-component vector of float)
+0:27        'f4' ( in 4-component vector of float)
+0:28      Sequence
+0:28        move second child to first child ( temp 4-component vector of uint)
+0:28          'ballot' ( temp 4-component vector of uint)
+0:28          subgroupBallot ( global 4-component vector of uint)
+0:28            Constant:
+0:28              false (const bool)
+0:29      subgroupInverseBallot ( global bool)
+0:29        Constant:
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:29          1 (const uint)
+0:30      subgroupBallotBitExtract ( global bool)
+0:30        'ballot' ( temp 4-component vector of uint)
+0:30        Constant:
+0:30          0 (const uint)
+0:31      subgroupBallotBitCount ( global uint)
+0:31        'ballot' ( temp 4-component vector of uint)
+0:32      subgroupBallotInclusiveBitCount ( global uint)
+0:32        'ballot' ( temp 4-component vector of uint)
+0:33      subgroupBallotExclusiveBitCount ( global uint)
+0:33        'ballot' ( temp 4-component vector of uint)
+0:34      subgroupBallotFindLSB ( global uint)
+0:34        'ballot' ( temp 4-component vector of uint)
+0:35      subgroupBallotFindMSB ( global uint)
+0:35        'ballot' ( temp 4-component vector of uint)
+0:37      subgroupShuffle ( global 4-component vector of float)
+0:37        'f4' ( in 4-component vector of float)
+0:37        Constant:
+0:37          0 (const uint)
+0:38      subgroupShuffleXor ( global 4-component vector of float)
+0:38        'f4' ( in 4-component vector of float)
+0:38        Constant:
+0:38          1 (const uint)
+0:39      subgroupShuffleUp ( global 4-component vector of float)
+0:39        'f4' ( in 4-component vector of float)
+0:39        Constant:
+0:39          1 (const uint)
+0:40      subgroupShuffleDown ( global 4-component vector of float)
+0:40        'f4' ( in 4-component vector of float)
+0:40        Constant:
+0:40          1 (const uint)
+0:42      move second child to first child ( temp 4-component vector of float)
+0:42        'result' ( temp 4-component vector of float)
+0:42        subgroupAdd ( global 4-component vector of float)
+0:42          'f4' ( in 4-component vector of float)
+0:43      subgroupMul ( global 4-component vector of float)
+0:43        'f4' ( in 4-component vector of float)
+0:44      subgroupMin ( global 4-component vector of float)
+0:44        'f4' ( in 4-component vector of float)
+0:45      subgroupMax ( global 4-component vector of float)
+0:45        'f4' ( in 4-component vector of float)
+0:46      subgroupAnd ( global 4-component vector of uint)
+0:46        'ballot' ( temp 4-component vector of uint)
+0:47      subgroupOr ( global 4-component vector of uint)
+0:47        'ballot' ( temp 4-component vector of uint)
+0:48      subgroupXor ( global 4-component vector of uint)
+0:48        'ballot' ( temp 4-component vector of uint)
+0:49      subgroupInclusiveAdd ( global 4-component vector of float)
+0:49        'f4' ( in 4-component vector of float)
+0:50      subgroupInclusiveMul ( global 4-component vector of float)
+0:50        'f4' ( in 4-component vector of float)
+0:51      subgroupInclusiveMin ( global 4-component vector of float)
+0:51        'f4' ( in 4-component vector of float)
+0:52      subgroupInclusiveMax ( global 4-component vector of float)
+0:52        'f4' ( in 4-component vector of float)
+0:53      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:53        'ballot' ( temp 4-component vector of uint)
+0:54      subgroupInclusiveOr ( global 4-component vector of uint)
+0:54        'ballot' ( temp 4-component vector of uint)
+0:55      subgroupInclusiveXor ( global 4-component vector of uint)
+0:55        'ballot' ( temp 4-component vector of uint)
+0:56      subgroupExclusiveAdd ( global 4-component vector of float)
+0:56        'f4' ( in 4-component vector of float)
+0:57      subgroupExclusiveMul ( global 4-component vector of float)
+0:57        'f4' ( in 4-component vector of float)
+0:58      subgroupExclusiveMin ( global 4-component vector of float)
+0:58        'f4' ( in 4-component vector of float)
+0:59      subgroupExclusiveMax ( global 4-component vector of float)
+0:59        'f4' ( in 4-component vector of float)
+0:60      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:60        'ballot' ( temp 4-component vector of uint)
+0:61      subgroupExclusiveOr ( global 4-component vector of uint)
+0:61        'ballot' ( temp 4-component vector of uint)
+0:62      subgroupExclusiveXor ( global 4-component vector of uint)
+0:62        'ballot' ( temp 4-component vector of uint)
+0:64      subgroupClusteredAdd ( global 4-component vector of float)
+0:64        'f4' ( in 4-component vector of float)
+0:64        Constant:
+0:64          2 (const uint)
+0:65      subgroupClusteredMul ( global 4-component vector of float)
+0:65        'f4' ( in 4-component vector of float)
+0:65        Constant:
+0:65          2 (const uint)
+0:66      subgroupClusteredMin ( global 4-component vector of float)
+0:66        'f4' ( in 4-component vector of float)
+0:66        Constant:
+0:66          2 (const uint)
+0:67      subgroupClusteredMax ( global 4-component vector of float)
+0:67        'f4' ( in 4-component vector of float)
+0:67        Constant:
+0:67          2 (const uint)
+0:68      subgroupClusteredAnd ( global 4-component vector of uint)
+0:68        'ballot' ( temp 4-component vector of uint)
+0:68        Constant:
+0:68          2 (const uint)
+0:69      subgroupClusteredOr ( global 4-component vector of uint)
+0:69        'ballot' ( temp 4-component vector of uint)
+0:69        Constant:
+0:69          2 (const uint)
+0:70      subgroupClusteredXor ( global 4-component vector of uint)
+0:70        'ballot' ( temp 4-component vector of uint)
+0:70        Constant:
+0:70          2 (const uint)
+0:72      subgroupQuadBroadcast ( global 4-component vector of float)
+0:72        'f4' ( in 4-component vector of float)
+0:72        Constant:
+0:72          0 (const uint)
+0:73      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:73        'f4' ( in 4-component vector of float)
+0:74      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:74        'f4' ( in 4-component vector of float)
+0:75      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:75        'f4' ( in 4-component vector of float)
+0:77      Sequence
+0:77        move second child to first child ( temp 4-component vector of uint)
+0:77          'parti' ( temp 4-component vector of uint)
+0:77          subgroupPartitionNV ( global 4-component vector of uint)
+0:77            'f4' ( in 4-component vector of float)
+0:78      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:78        'f4' ( in 4-component vector of float)
+0:78        'parti' ( temp 4-component vector of uint)
+0:79      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:79        'f4' ( in 4-component vector of float)
+0:79        'parti' ( temp 4-component vector of uint)
+0:80      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:80        'f4' ( in 4-component vector of float)
+0:80        'parti' ( temp 4-component vector of uint)
+0:81      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:81        'f4' ( in 4-component vector of float)
+0:81        'parti' ( temp 4-component vector of uint)
+0:82      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:82        'ballot' ( temp 4-component vector of uint)
+0:82        'parti' ( temp 4-component vector of uint)
+0:83      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:83        'ballot' ( temp 4-component vector of uint)
+0:83        'parti' ( temp 4-component vector of uint)
+0:84      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:84        'ballot' ( temp 4-component vector of uint)
+0:84        'parti' ( temp 4-component vector of uint)
+0:85      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:85        'f4' ( in 4-component vector of float)
+0:85        'parti' ( temp 4-component vector of uint)
+0:86      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:86        'f4' ( in 4-component vector of float)
+0:86        'parti' ( temp 4-component vector of uint)
+0:87      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:87        'f4' ( in 4-component vector of float)
+0:87        'parti' ( temp 4-component vector of uint)
+0:88      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:88        'f4' ( in 4-component vector of float)
+0:88        'parti' ( temp 4-component vector of uint)
+0:89      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:89        'ballot' ( temp 4-component vector of uint)
+0:89        'parti' ( temp 4-component vector of uint)
+0:90      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:90        'ballot' ( temp 4-component vector of uint)
+0:90        'parti' ( temp 4-component vector of uint)
+0:91      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:91        'ballot' ( temp 4-component vector of uint)
+0:91        'parti' ( temp 4-component vector of uint)
+0:92      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:92        'f4' ( in 4-component vector of float)
+0:92        'parti' ( temp 4-component vector of uint)
+0:93      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:93        'f4' ( in 4-component vector of float)
+0:93        'parti' ( temp 4-component vector of uint)
+0:94      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:94        'f4' ( in 4-component vector of float)
+0:94        'parti' ( temp 4-component vector of uint)
+0:95      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:95        'f4' ( in 4-component vector of float)
+0:95        'parti' ( temp 4-component vector of uint)
+0:96      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:96        'ballot' ( temp 4-component vector of uint)
+0:96        'parti' ( temp 4-component vector of uint)
+0:97      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:97        'ballot' ( temp 4-component vector of uint)
+0:97        'parti' ( temp 4-component vector of uint)
+0:98      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:98        'ballot' ( temp 4-component vector of uint)
+0:98        'parti' ( temp 4-component vector of uint)
+0:100      Branch: Return with expression
+0:100        'result' ( temp 4-component vector of float)
+0:127  Function Definition: main( ( global void)
+0:127    Function Parameters: 
+0:129    Sequence
+0:129      Sequence
+0:129        move second child to first child ( temp uint)
+0:129          'iid' ( temp uint)
+0:129          direct index ( temp uint)
+0:129            'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID)
+0:129            Constant:
+0:129              0 (const int)
+0:130      Sequence
+0:130        move second child to first child ( temp uint)
+0:130          'gid' ( temp uint)
+0:130          direct index ( temp uint)
+0:130            'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID)
+0:130            Constant:
+0:130              0 (const int)
+0:131      Sequence
+0:131        move second child to first child ( temp uint)
+0:131          'viewID' ( temp uint)
+0:131          indirect index ( temp uint MeshViewIndicesNV)
+0:131            'gl_MeshViewIndicesNV' ( in 4-element array of uint MeshViewIndicesNV)
+0:131            mod ( temp uint)
+0:131              'gl_MeshViewCountNV' ( in uint MeshViewCountNV)
+0:131              Constant:
+0:131                4 (const uint)
+0:134      Sequence
+0:134        Sequence
+0:134          move second child to first child ( temp uint)
+0:134            'i' ( temp uint)
+0:134            Constant:
+0:134              0 (const uint)
+0:134        Loop with condition tested first
+0:134          Loop Condition
+0:134          Compare Less Than ( temp bool)
+0:134            'i' ( temp uint)
+0:134            Constant:
+0:134              10 (const uint)
+0:134          Loop Body
+0:135          Sequence
+0:135            move second child to first child ( temp 4-component vector of float)
+0:135              indirect index ( temp 4-component vector of float)
+0:135                'mem' ( shared 10-element array of 4-component vector of float)
+0:135                'i' ( temp uint)
+0:135              Construct vec4 ( temp 4-component vector of float)
+0:135                Convert uint to float ( temp float)
+0:135                  add ( temp uint)
+0:135                    'i' ( temp uint)
+0:135                    uni_value: direct index for structure (layout( column_major shared) uniform uint)
+0:135                      'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value})
+0:135                      Constant:
+0:135                        0 (const uint)
+0:134          Loop Terminal Expression
+0:134          Pre-Increment ( temp uint)
+0:134            'i' ( temp uint)
+0:137      imageStore ( global void)
+0:137        'uni_image' (layout( binding=0) writeonly uniform image2D)
+0:137        Construct ivec2 ( temp 2-component vector of int)
+0:137          Convert uint to int ( temp int)
+0:137            'iid' ( temp uint)
+0:137        indirect index ( temp 4-component vector of float)
+0:137          'mem' ( shared 10-element array of 4-component vector of float)
+0:137          'gid' ( temp uint)
+0:138      imageStore ( global void)
+0:138        'uni_image' (layout( binding=0) writeonly uniform image2D)
+0:138        Construct ivec2 ( temp 2-component vector of int)
+0:138          Convert uint to int ( temp int)
+0:138            'iid' ( temp uint)
+0:138        indirect index ( temp 4-component vector of float)
+0:138          'mem' ( shared 10-element array of 4-component vector of float)
+0:138          add ( temp uint)
+0:138            'gid' ( temp uint)
+0:138            Constant:
+0:138              1 (const uint)
+0:140      MemoryBarrierShared ( global void)
+0:140      Barrier ( global void)
+0:144      move second child to first child ( temp 2-component vector of float)
+0:144        dummy: direct index for structure (layout( std430 offset=0) taskNV out 2-component vector of float)
+0:144          'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID})
+0:144          Constant:
+0:144            0 (const int)
+0:144        Constant:
+0:144          30.000000
+0:144          31.000000
+0:145      move second child to first child ( temp 2-component vector of float)
+0:145        direct index (layout( std430 offset=8) taskNV temp 2-component vector of float)
+0:145          submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float)
+0:145            'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID})
+0:145            Constant:
+0:145              1 (const int)
+0:145          Constant:
+0:145            0 (const int)
+0:145        Constant:
+0:145          32.000000
+0:145          33.000000
+0:146      move second child to first child ( temp 2-component vector of float)
+0:146        direct index (layout( std430 offset=8) taskNV temp 2-component vector of float)
+0:146          submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float)
+0:146            'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID})
+0:146            Constant:
+0:146              1 (const int)
+0:146          Constant:
+0:146            1 (const int)
+0:146        Constant:
+0:146          34.000000
+0:146          35.000000
+0:147      move second child to first child ( temp 2-component vector of float)
+0:147        direct index (layout( std430 offset=8) taskNV temp 2-component vector of float)
+0:147          submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float)
+0:147            'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID})
+0:147            Constant:
+0:147              1 (const int)
+0:147          Constant:
+0:147            2 (const int)
+0:147        indirect index (layout( std430 offset=8) taskNV temp 2-component vector of float)
+0:147          submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float)
+0:147            'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID})
+0:147            Constant:
+0:147              1 (const int)
+0:147          mod ( temp uint)
+0:147            'gid' ( temp uint)
+0:147            Constant:
+0:147              2 (const uint)
+0:148      move second child to first child ( temp uint)
+0:148        viewID: direct index for structure (layout( std430 offset=32) taskNV out uint)
+0:148          'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID})
+0:148          Constant:
+0:148            2 (const int)
+0:148        'viewID' ( temp uint)
+0:150      MemoryBarrierShared ( global void)
+0:150      Barrier ( global void)
+0:153      move second child to first child ( temp uint)
+0:153        'gl_TaskCountNV' ( out uint TaskCountNV)
+0:153        Constant:
+0:153          3 (const uint)
+0:157  Function Definition: basic_works( ( global void)
+0:157    Function Parameters: 
+0:159    Sequence
+0:159      'gl_SubgroupSize' ( in uint SubgroupSize)
+0:160      'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:161      subgroupBarrier ( global void)
+0:162      subgroupMemoryBarrier ( global void)
+0:163      subgroupMemoryBarrierBuffer ( global void)
+0:164      subgroupMemoryBarrierImage ( global void)
+0:165      subgroupElect ( global bool)
+0:166      'gl_NumSubgroups' ( in uint NumSubgroups)
+0:167      'gl_SubgroupID' ( in uint SubgroupID)
+0:168      subgroupMemoryBarrierShared ( global void)
+0:172  Function Definition: ballot_works(vf4; ( global void)
+0:172    Function Parameters: 
+0:172      'f4' ( in 4-component vector of float)
+0:173    Sequence
+0:173      'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:174      'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:175      'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:176      'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:177      'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:178      subgroupBroadcast ( global 4-component vector of float)
+0:178        'f4' ( in 4-component vector of float)
+0:178        Constant:
+0:178          0 (const uint)
+0:179      subgroupBroadcastFirst ( global 4-component vector of float)
+0:179        'f4' ( in 4-component vector of float)
+0:180      Sequence
+0:180        move second child to first child ( temp 4-component vector of uint)
+0:180          'ballot' ( temp 4-component vector of uint)
+0:180          subgroupBallot ( global 4-component vector of uint)
+0:180            Constant:
+0:180              false (const bool)
+0:181      subgroupInverseBallot ( global bool)
+0:181        Constant:
+0:181          1 (const uint)
+0:181          1 (const uint)
+0:181          1 (const uint)
+0:181          1 (const uint)
+0:182      subgroupBallotBitExtract ( global bool)
+0:182        'ballot' ( temp 4-component vector of uint)
+0:182        Constant:
+0:182          0 (const uint)
+0:183      subgroupBallotBitCount ( global uint)
+0:183        'ballot' ( temp 4-component vector of uint)
+0:184      subgroupBallotInclusiveBitCount ( global uint)
+0:184        'ballot' ( temp 4-component vector of uint)
+0:185      subgroupBallotExclusiveBitCount ( global uint)
+0:185        'ballot' ( temp 4-component vector of uint)
+0:186      subgroupBallotFindLSB ( global uint)
+0:186        'ballot' ( temp 4-component vector of uint)
+0:187      subgroupBallotFindMSB ( global uint)
+0:187        'ballot' ( temp 4-component vector of uint)
+0:191  Function Definition: vote_works(vf4; ( global void)
+0:191    Function Parameters: 
+0:191      'f4' ( in 4-component vector of float)
+0:193    Sequence
+0:193      subgroupAll ( global bool)
+0:193        Constant:
+0:193          true (const bool)
+0:194      subgroupAny ( global bool)
+0:194        Constant:
+0:194          false (const bool)
+0:195      subgroupAllEqual ( global bool)
+0:195        'f4' ( in 4-component vector of float)
+0:200  Function Definition: shuffle_works(vf4; ( global void)
+0:200    Function Parameters: 
+0:200      'f4' ( in 4-component vector of float)
+0:202    Sequence
+0:202      subgroupShuffle ( global 4-component vector of float)
+0:202        'f4' ( in 4-component vector of float)
+0:202        Constant:
+0:202          0 (const uint)
+0:203      subgroupShuffleXor ( global 4-component vector of float)
+0:203        'f4' ( in 4-component vector of float)
+0:203        Constant:
+0:203          1 (const uint)
+0:204      subgroupShuffleUp ( global 4-component vector of float)
+0:204        'f4' ( in 4-component vector of float)
+0:204        Constant:
+0:204          1 (const uint)
+0:205      subgroupShuffleDown ( global 4-component vector of float)
+0:205        'f4' ( in 4-component vector of float)
+0:205        Constant:
+0:205          1 (const uint)
+0:209  Function Definition: arith_works(vf4; ( global void)
+0:209    Function Parameters: 
+0:209      'f4' ( in 4-component vector of float)
+0:?     Sequence
+0:212      subgroupAdd ( global 4-component vector of float)
+0:212        'f4' ( in 4-component vector of float)
+0:213      subgroupMul ( global 4-component vector of float)
+0:213        'f4' ( in 4-component vector of float)
+0:214      subgroupMin ( global 4-component vector of float)
+0:214        'f4' ( in 4-component vector of float)
+0:215      subgroupMax ( global 4-component vector of float)
+0:215        'f4' ( in 4-component vector of float)
+0:216      subgroupAnd ( global 4-component vector of uint)
+0:216        'ballot' ( temp 4-component vector of uint)
+0:217      subgroupOr ( global 4-component vector of uint)
+0:217        'ballot' ( temp 4-component vector of uint)
+0:218      subgroupXor ( global 4-component vector of uint)
+0:218        'ballot' ( temp 4-component vector of uint)
+0:219      subgroupInclusiveAdd ( global 4-component vector of float)
+0:219        'f4' ( in 4-component vector of float)
+0:220      subgroupInclusiveMul ( global 4-component vector of float)
+0:220        'f4' ( in 4-component vector of float)
+0:221      subgroupInclusiveMin ( global 4-component vector of float)
+0:221        'f4' ( in 4-component vector of float)
+0:222      subgroupInclusiveMax ( global 4-component vector of float)
+0:222        'f4' ( in 4-component vector of float)
+0:223      subgroupInclusiveAnd ( global 4-component vector of uint)
+0:223        'ballot' ( temp 4-component vector of uint)
+0:224      subgroupInclusiveOr ( global 4-component vector of uint)
+0:224        'ballot' ( temp 4-component vector of uint)
+0:225      subgroupInclusiveXor ( global 4-component vector of uint)
+0:225        'ballot' ( temp 4-component vector of uint)
+0:226      subgroupExclusiveAdd ( global 4-component vector of float)
+0:226        'f4' ( in 4-component vector of float)
+0:227      subgroupExclusiveMul ( global 4-component vector of float)
+0:227        'f4' ( in 4-component vector of float)
+0:228      subgroupExclusiveMin ( global 4-component vector of float)
+0:228        'f4' ( in 4-component vector of float)
+0:229      subgroupExclusiveMax ( global 4-component vector of float)
+0:229        'f4' ( in 4-component vector of float)
+0:230      subgroupExclusiveAnd ( global 4-component vector of uint)
+0:230        'ballot' ( temp 4-component vector of uint)
+0:231      subgroupExclusiveOr ( global 4-component vector of uint)
+0:231        'ballot' ( temp 4-component vector of uint)
+0:232      subgroupExclusiveXor ( global 4-component vector of uint)
+0:232        'ballot' ( temp 4-component vector of uint)
+0:236  Function Definition: clustered_works(vf4; ( global void)
+0:236    Function Parameters: 
+0:236      'f4' ( in 4-component vector of float)
+0:238    Sequence
+0:238      Sequence
+0:238        move second child to first child ( temp 4-component vector of uint)
+0:238          'ballot' ( temp 4-component vector of uint)
+0:238          Constant:
+0:238            85 (const uint)
+0:238            0 (const uint)
+0:238            0 (const uint)
+0:238            0 (const uint)
+0:239      subgroupClusteredAdd ( global 4-component vector of float)
+0:239        'f4' ( in 4-component vector of float)
+0:239        Constant:
+0:239          2 (const uint)
+0:240      subgroupClusteredMul ( global 4-component vector of float)
+0:240        'f4' ( in 4-component vector of float)
+0:240        Constant:
+0:240          2 (const uint)
+0:241      subgroupClusteredMin ( global 4-component vector of float)
+0:241        'f4' ( in 4-component vector of float)
+0:241        Constant:
+0:241          2 (const uint)
+0:242      subgroupClusteredMax ( global 4-component vector of float)
+0:242        'f4' ( in 4-component vector of float)
+0:242        Constant:
+0:242          2 (const uint)
+0:243      subgroupClusteredAnd ( global 4-component vector of uint)
+0:243        'ballot' ( temp 4-component vector of uint)
+0:243        Constant:
+0:243          2 (const uint)
+0:244      subgroupClusteredOr ( global 4-component vector of uint)
+0:244        'ballot' ( temp 4-component vector of uint)
+0:244        Constant:
+0:244          2 (const uint)
+0:245      subgroupClusteredXor ( global 4-component vector of uint)
+0:245        'ballot' ( temp 4-component vector of uint)
+0:245        Constant:
+0:245          2 (const uint)
+0:249  Function Definition: quad_works(vf4; ( global void)
+0:249    Function Parameters: 
+0:249      'f4' ( in 4-component vector of float)
+0:251    Sequence
+0:251      subgroupQuadBroadcast ( global 4-component vector of float)
+0:251        'f4' ( in 4-component vector of float)
+0:251        Constant:
+0:251          0 (const uint)
+0:252      subgroupQuadSwapHorizontal ( global 4-component vector of float)
+0:252        'f4' ( in 4-component vector of float)
+0:253      subgroupQuadSwapVertical ( global 4-component vector of float)
+0:253        'f4' ( in 4-component vector of float)
+0:254      subgroupQuadSwapDiagonal ( global 4-component vector of float)
+0:254        'f4' ( in 4-component vector of float)
+0:258  Function Definition: partitioned_works(vf4; ( global void)
+0:258    Function Parameters: 
+0:258      'f4' ( in 4-component vector of float)
+0:260    Sequence
+0:260      Sequence
+0:260        move second child to first child ( temp 4-component vector of uint)
+0:260          'parti' ( temp 4-component vector of uint)
+0:260          subgroupPartitionNV ( global 4-component vector of uint)
+0:260            'f4' ( in 4-component vector of float)
+0:261      Sequence
+0:261        move second child to first child ( temp 4-component vector of uint)
+0:261          'ballot' ( temp 4-component vector of uint)
+0:261          Constant:
+0:261            85 (const uint)
+0:261            0 (const uint)
+0:261            0 (const uint)
+0:261            0 (const uint)
+0:262      subgroupPartitionedAddNV ( global 4-component vector of float)
+0:262        'f4' ( in 4-component vector of float)
+0:262        'parti' ( temp 4-component vector of uint)
+0:263      subgroupPartitionedMulNV ( global 4-component vector of float)
+0:263        'f4' ( in 4-component vector of float)
+0:263        'parti' ( temp 4-component vector of uint)
+0:264      subgroupPartitionedMinNV ( global 4-component vector of float)
+0:264        'f4' ( in 4-component vector of float)
+0:264        'parti' ( temp 4-component vector of uint)
+0:265      subgroupPartitionedMaxNV ( global 4-component vector of float)
+0:265        'f4' ( in 4-component vector of float)
+0:265        'parti' ( temp 4-component vector of uint)
+0:266      subgroupPartitionedAndNV ( global 4-component vector of uint)
+0:266        'ballot' ( temp 4-component vector of uint)
+0:266        'parti' ( temp 4-component vector of uint)
+0:267      subgroupPartitionedOrNV ( global 4-component vector of uint)
+0:267        'ballot' ( temp 4-component vector of uint)
+0:267        'parti' ( temp 4-component vector of uint)
+0:268      subgroupPartitionedXorNV ( global 4-component vector of uint)
+0:268        'ballot' ( temp 4-component vector of uint)
+0:268        'parti' ( temp 4-component vector of uint)
+0:269      subgroupPartitionedInclusiveAddNV ( global 4-component vector of float)
+0:269        'f4' ( in 4-component vector of float)
+0:269        'parti' ( temp 4-component vector of uint)
+0:270      subgroupPartitionedInclusiveMulNV ( global 4-component vector of float)
+0:270        'f4' ( in 4-component vector of float)
+0:270        'parti' ( temp 4-component vector of uint)
+0:271      subgroupPartitionedInclusiveMinNV ( global 4-component vector of float)
+0:271        'f4' ( in 4-component vector of float)
+0:271        'parti' ( temp 4-component vector of uint)
+0:272      subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float)
+0:272        'f4' ( in 4-component vector of float)
+0:272        'parti' ( temp 4-component vector of uint)
+0:273      subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint)
+0:273        'ballot' ( temp 4-component vector of uint)
+0:273        'parti' ( temp 4-component vector of uint)
+0:274      subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint)
+0:274        'ballot' ( temp 4-component vector of uint)
+0:274        'parti' ( temp 4-component vector of uint)
+0:275      subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint)
+0:275        'ballot' ( temp 4-component vector of uint)
+0:275        'parti' ( temp 4-component vector of uint)
+0:276      subgroupPartitionedExclusiveAddNV ( global 4-component vector of float)
+0:276        'f4' ( in 4-component vector of float)
+0:276        'parti' ( temp 4-component vector of uint)
+0:277      subgroupPartitionedExclusiveMulNV ( global 4-component vector of float)
+0:277        'f4' ( in 4-component vector of float)
+0:277        'parti' ( temp 4-component vector of uint)
+0:278      subgroupPartitionedExclusiveMinNV ( global 4-component vector of float)
+0:278        'f4' ( in 4-component vector of float)
+0:278        'parti' ( temp 4-component vector of uint)
+0:279      subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float)
+0:279        'f4' ( in 4-component vector of float)
+0:279        'parti' ( temp 4-component vector of uint)
+0:280      subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint)
+0:280        'ballot' ( temp 4-component vector of uint)
+0:280        'parti' ( temp 4-component vector of uint)
+0:281      subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint)
+0:281        'ballot' ( temp 4-component vector of uint)
+0:281        'parti' ( temp 4-component vector of uint)
+0:282      subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint)
+0:282        'ballot' ( temp 4-component vector of uint)
+0:282        'parti' ( temp 4-component vector of uint)
+0:?   Linker Objects
+0:?     'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
+0:?       32 (const uint)
+0:?       1 (const uint)
+0:?       1 (const uint)
+0:?     'uni_image' (layout( binding=0) writeonly uniform image2D)
+0:?     'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value})
+0:?     'mem' ( shared 10-element array of 4-component vector of float)
+0:?     'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID})
+
+
+Linked task stage:
+
+
+Shader version: 460
+Requested GL_KHR_shader_subgroup_arithmetic
+Requested GL_KHR_shader_subgroup_ballot
+Requested GL_KHR_shader_subgroup_basic
+Requested GL_KHR_shader_subgroup_clustered
+Requested GL_KHR_shader_subgroup_quad
+Requested GL_KHR_shader_subgroup_shuffle
+Requested GL_KHR_shader_subgroup_shuffle_relative
+Requested GL_KHR_shader_subgroup_vote
+Requested GL_NV_mesh_shader
+Requested GL_NV_shader_subgroup_partitioned
+local_size = (32, 1, 1)
+ERROR: node is still EOpNull!
+0:127  Function Definition: main( ( global void)
+0:127    Function Parameters: 
+0:129    Sequence
+0:129      Sequence
+0:129        move second child to first child ( temp uint)
+0:129          'iid' ( temp uint)
+0:129          direct index ( temp uint)
+0:129            'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID)
+0:129            Constant:
+0:129              0 (const int)
+0:130      Sequence
+0:130        move second child to first child ( temp uint)
+0:130          'gid' ( temp uint)
+0:130          direct index ( temp uint)
+0:130            'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID)
+0:130            Constant:
+0:130              0 (const int)
+0:131      Sequence
+0:131        move second child to first child ( temp uint)
+0:131          'viewID' ( temp uint)
+0:131          indirect index ( temp uint MeshViewIndicesNV)
+0:131            'gl_MeshViewIndicesNV' ( in 4-element array of uint MeshViewIndicesNV)
+0:131            mod ( temp uint)
+0:131              'gl_MeshViewCountNV' ( in uint MeshViewCountNV)
+0:131              Constant:
+0:131                4 (const uint)
+0:134      Sequence
+0:134        Sequence
+0:134          move second child to first child ( temp uint)
+0:134            'i' ( temp uint)
+0:134            Constant:
+0:134              0 (const uint)
+0:134        Loop with condition tested first
+0:134          Loop Condition
+0:134          Compare Less Than ( temp bool)
+0:134            'i' ( temp uint)
+0:134            Constant:
+0:134              10 (const uint)
+0:134          Loop Body
+0:135          Sequence
+0:135            move second child to first child ( temp 4-component vector of float)
+0:135              indirect index ( temp 4-component vector of float)
+0:135                'mem' ( shared 10-element array of 4-component vector of float)
+0:135                'i' ( temp uint)
+0:135              Construct vec4 ( temp 4-component vector of float)
+0:135                Convert uint to float ( temp float)
+0:135                  add ( temp uint)
+0:135                    'i' ( temp uint)
+0:135                    uni_value: direct index for structure (layout( column_major shared) uniform uint)
+0:135                      'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value})
+0:135                      Constant:
+0:135                        0 (const uint)
+0:134          Loop Terminal Expression
+0:134          Pre-Increment ( temp uint)
+0:134            'i' ( temp uint)
+0:137      imageStore ( global void)
+0:137        'uni_image' (layout( binding=0) writeonly uniform image2D)
+0:137        Construct ivec2 ( temp 2-component vector of int)
+0:137          Convert uint to int ( temp int)
+0:137            'iid' ( temp uint)
+0:137        indirect index ( temp 4-component vector of float)
+0:137          'mem' ( shared 10-element array of 4-component vector of float)
+0:137          'gid' ( temp uint)
+0:138      imageStore ( global void)
+0:138        'uni_image' (layout( binding=0) writeonly uniform image2D)
+0:138        Construct ivec2 ( temp 2-component vector of int)
+0:138          Convert uint to int ( temp int)
+0:138            'iid' ( temp uint)
+0:138        indirect index ( temp 4-component vector of float)
+0:138          'mem' ( shared 10-element array of 4-component vector of float)
+0:138          add ( temp uint)
+0:138            'gid' ( temp uint)
+0:138            Constant:
+0:138              1 (const uint)
+0:140      MemoryBarrierShared ( global void)
+0:140      Barrier ( global void)
+0:144      move second child to first child ( temp 2-component vector of float)
+0:144        dummy: direct index for structure (layout( std430 offset=0) taskNV out 2-component vector of float)
+0:144          'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID})
+0:144          Constant:
+0:144            0 (const int)
+0:144        Constant:
+0:144          30.000000
+0:144          31.000000
+0:145      move second child to first child ( temp 2-component vector of float)
+0:145        direct index (layout( std430 offset=8) taskNV temp 2-component vector of float)
+0:145          submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float)
+0:145            'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID})
+0:145            Constant:
+0:145              1 (const int)
+0:145          Constant:
+0:145            0 (const int)
+0:145        Constant:
+0:145          32.000000
+0:145          33.000000
+0:146      move second child to first child ( temp 2-component vector of float)
+0:146        direct index (layout( std430 offset=8) taskNV temp 2-component vector of float)
+0:146          submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float)
+0:146            'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID})
+0:146            Constant:
+0:146              1 (const int)
+0:146          Constant:
+0:146            1 (const int)
+0:146        Constant:
+0:146          34.000000
+0:146          35.000000
+0:147      move second child to first child ( temp 2-component vector of float)
+0:147        direct index (layout( std430 offset=8) taskNV temp 2-component vector of float)
+0:147          submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float)
+0:147            'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID})
+0:147            Constant:
+0:147              1 (const int)
+0:147          Constant:
+0:147            2 (const int)
+0:147        indirect index (layout( std430 offset=8) taskNV temp 2-component vector of float)
+0:147          submesh: direct index for structure (layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float)
+0:147            'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID})
+0:147            Constant:
+0:147              1 (const int)
+0:147          mod ( temp uint)
+0:147            'gid' ( temp uint)
+0:147            Constant:
+0:147              2 (const uint)
+0:148      move second child to first child ( temp uint)
+0:148        viewID: direct index for structure (layout( std430 offset=32) taskNV out uint)
+0:148          'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID})
+0:148          Constant:
+0:148            2 (const int)
+0:148        'viewID' ( temp uint)
+0:150      MemoryBarrierShared ( global void)
+0:150      Barrier ( global void)
+0:153      move second child to first child ( temp uint)
+0:153        'gl_TaskCountNV' ( out uint TaskCountNV)
+0:153        Constant:
+0:153          3 (const uint)
+0:?   Linker Objects
+0:?     'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
+0:?       32 (const uint)
+0:?       1 (const uint)
+0:?       1 (const uint)
+0:?     'uni_image' (layout( binding=0) writeonly uniform image2D)
+0:?     'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value})
+0:?     'mem' ( shared 10-element array of 4-component vector of float)
+0:?     'mytask' (layout( std430) taskNV out block{layout( std430 offset=0) taskNV out 2-component vector of float dummy, layout( std430 offset=8) taskNV out 3-element array of 2-component vector of float submesh, layout( std430 offset=32) taskNV out uint viewID})
+

+ 4 - 4
3rdparty/glslang/Test/baseResults/glsl.es320.subgroup.frag.out

@@ -8,8 +8,8 @@ Requested GL_KHR_shader_subgroup_basic
 0:6      move second child to first child ( temp mediump 4-component vector of uint)
 0:6        'data' (layout( location=0) out mediump 4-component vector of uint)
 0:6        Construct uvec4 ( temp mediump 4-component vector of uint)
-0:6          'gl_SubgroupSize' ( flat in mediump uint unknown built-in variable)
-0:6          'gl_SubgroupInvocationID' ( flat in mediump uint unknown built-in variable)
+0:6          'gl_SubgroupSize' ( flat in mediump uint SubgroupSize)
+0:6          'gl_SubgroupInvocationID' ( flat in mediump uint SubgroupInvocationID)
 0:6          Constant:
 0:6            0 (const uint)
 0:6          Constant:
@@ -30,8 +30,8 @@ Requested GL_KHR_shader_subgroup_basic
 0:6      move second child to first child ( temp mediump 4-component vector of uint)
 0:6        'data' (layout( location=0) out mediump 4-component vector of uint)
 0:6        Construct uvec4 ( temp mediump 4-component vector of uint)
-0:6          'gl_SubgroupSize' ( flat in mediump uint unknown built-in variable)
-0:6          'gl_SubgroupInvocationID' ( flat in mediump uint unknown built-in variable)
+0:6          'gl_SubgroupSize' ( flat in mediump uint SubgroupSize)
+0:6          'gl_SubgroupInvocationID' ( flat in mediump uint SubgroupInvocationID)
 0:6          Constant:
 0:6            0 (const uint)
 0:6          Constant:

+ 4 - 4
3rdparty/glslang/Test/baseResults/glsl.es320.subgroup.geom.out

@@ -17,8 +17,8 @@ output primitive = points
 0:12              0 (const uint)
 0:12          'gl_PrimitiveIDIn' ( in highp int PrimitiveID)
 0:12        Construct uvec4 ( temp highp 4-component vector of uint)
-0:12          'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
-0:12          'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
+0:12          'gl_SubgroupSize' ( in mediump uint SubgroupSize)
+0:12          'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
 0:12          Constant:
 0:12            0 (const uint)
 0:12          Constant:
@@ -48,8 +48,8 @@ output primitive = points
 0:12              0 (const uint)
 0:12          'gl_PrimitiveIDIn' ( in highp int PrimitiveID)
 0:12        Construct uvec4 ( temp highp 4-component vector of uint)
-0:12          'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
-0:12          'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
+0:12          'gl_SubgroupSize' ( in mediump uint SubgroupSize)
+0:12          'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
 0:12          Constant:
 0:12            0 (const uint)
 0:12          Constant:

+ 4 - 4
3rdparty/glslang/Test/baseResults/glsl.es320.subgroup.tesc.out

@@ -14,8 +14,8 @@ vertices = 1
 0:11              0 (const uint)
 0:11          'gl_PrimitiveID' ( in highp int PrimitiveID)
 0:11        Construct uvec4 ( temp highp 4-component vector of uint)
-0:11          'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
-0:11          'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
+0:11          'gl_SubgroupSize' ( in mediump uint SubgroupSize)
+0:11          'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
 0:11          Constant:
 0:11            0 (const uint)
 0:11          Constant:
@@ -42,8 +42,8 @@ vertices = 1
 0:11              0 (const uint)
 0:11          'gl_PrimitiveID' ( in highp int PrimitiveID)
 0:11        Construct uvec4 ( temp highp 4-component vector of uint)
-0:11          'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
-0:11          'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
+0:11          'gl_SubgroupSize' ( in mediump uint SubgroupSize)
+0:11          'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
 0:11          Constant:
 0:11            0 (const uint)
 0:11          Constant:

+ 4 - 4
3rdparty/glslang/Test/baseResults/glsl.es320.subgroup.tese.out

@@ -16,8 +16,8 @@ triangle order = none
 0:11              0 (const uint)
 0:11          'gl_PrimitiveID' ( in highp int PrimitiveID)
 0:11        Construct uvec4 ( temp highp 4-component vector of uint)
-0:11          'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
-0:11          'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
+0:11          'gl_SubgroupSize' ( in mediump uint SubgroupSize)
+0:11          'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
 0:11          Constant:
 0:11            0 (const uint)
 0:11          Constant:
@@ -46,8 +46,8 @@ triangle order = ccw
 0:11              0 (const uint)
 0:11          'gl_PrimitiveID' ( in highp int PrimitiveID)
 0:11        Construct uvec4 ( temp highp 4-component vector of uint)
-0:11          'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
-0:11          'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
+0:11          'gl_SubgroupSize' ( in mediump uint SubgroupSize)
+0:11          'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
 0:11          Constant:
 0:11            0 (const uint)
 0:11          Constant:

+ 4 - 4
3rdparty/glslang/Test/baseResults/glsl.es320.subgroup.vert.out

@@ -13,8 +13,8 @@ Requested GL_KHR_shader_subgroup_basic
 0:10              0 (const uint)
 0:10          'gl_VertexID' ( gl_VertexId highp int VertexId)
 0:10        Construct uvec4 ( temp highp 4-component vector of uint)
-0:10          'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
-0:10          'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
+0:10          'gl_SubgroupSize' ( in mediump uint SubgroupSize)
+0:10          'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
 0:10          Constant:
 0:10            0 (const uint)
 0:10          Constant:
@@ -42,8 +42,8 @@ Requested GL_KHR_shader_subgroup_basic
 0:10              0 (const uint)
 0:10          'gl_VertexID' ( gl_VertexId highp int VertexId)
 0:10        Construct uvec4 ( temp highp 4-component vector of uint)
-0:10          'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
-0:10          'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
+0:10          'gl_SubgroupSize' ( in mediump uint SubgroupSize)
+0:10          'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
 0:10          Constant:
 0:10            0 (const uint)
 0:10          Constant:

+ 4 - 4
3rdparty/glslang/Test/baseResults/glsl.es320.subgroupArithmetic.comp.out

@@ -12,8 +12,8 @@ local_size = (8, 1, 1)
 0:16          'invocation' ( temp highp uint)
 0:16          mod ( temp mediump uint)
 0:16            add ( temp mediump uint)
-0:16              'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
-0:16              'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
+0:16              'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
+0:16              'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:16            Constant:
 0:16              4 (const uint)
 0:18      move second child to first child ( temp highp float)
@@ -6412,8 +6412,8 @@ local_size = (8, 1, 1)
 0:16          'invocation' ( temp highp uint)
 0:16          mod ( temp mediump uint)
 0:16            add ( temp mediump uint)
-0:16              'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
-0:16              'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
+0:16              'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
+0:16              'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:16            Constant:
 0:16              4 (const uint)
 0:18      move second child to first child ( temp highp float)

+ 14 - 14
3rdparty/glslang/Test/baseResults/glsl.es320.subgroupBallot.comp.out

@@ -12,8 +12,8 @@ local_size = (8, 8, 1)
 0:16          'invocation' ( temp highp uint)
 0:16          mod ( temp mediump uint)
 0:16            add ( temp mediump uint)
-0:16              'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
-0:16              'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
+0:16              'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
+0:16              'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:16            Constant:
 0:16              4 (const uint)
 0:18      Sequence
@@ -23,11 +23,11 @@ local_size = (8, 8, 1)
 0:20            add ( temp highp 4-component vector of uint)
 0:19              add ( temp highp 4-component vector of uint)
 0:18                add ( temp highp 4-component vector of uint)
-0:18                  'gl_SubgroupEqMask' ( in highp 4-component vector of uint unknown built-in variable)
-0:19                  'gl_SubgroupGeMask' ( in highp 4-component vector of uint unknown built-in variable)
-0:20                'gl_SubgroupGtMask' ( in highp 4-component vector of uint unknown built-in variable)
-0:21              'gl_SubgroupLeMask' ( in highp 4-component vector of uint unknown built-in variable)
-0:22            'gl_SubgroupLtMask' ( in highp 4-component vector of uint unknown built-in variable)
+0:18                  'gl_SubgroupEqMask' ( in highp 4-component vector of uint SubgroupEqMask)
+0:19                  'gl_SubgroupGeMask' ( in highp 4-component vector of uint SubgroupGeMask)
+0:20                'gl_SubgroupGtMask' ( in highp 4-component vector of uint SubgroupGtMask)
+0:21              'gl_SubgroupLeMask' ( in highp 4-component vector of uint SubgroupLeMask)
+0:22            'gl_SubgroupLtMask' ( in highp 4-component vector of uint SubgroupLtMask)
 0:24      Sequence
 0:24        move second child to first child ( temp highp 4-component vector of uint)
 0:24          'result' ( temp highp 4-component vector of uint)
@@ -1004,8 +1004,8 @@ local_size = (8, 8, 1)
 0:16          'invocation' ( temp highp uint)
 0:16          mod ( temp mediump uint)
 0:16            add ( temp mediump uint)
-0:16              'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
-0:16              'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
+0:16              'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
+0:16              'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:16            Constant:
 0:16              4 (const uint)
 0:18      Sequence
@@ -1015,11 +1015,11 @@ local_size = (8, 8, 1)
 0:20            add ( temp highp 4-component vector of uint)
 0:19              add ( temp highp 4-component vector of uint)
 0:18                add ( temp highp 4-component vector of uint)
-0:18                  'gl_SubgroupEqMask' ( in highp 4-component vector of uint unknown built-in variable)
-0:19                  'gl_SubgroupGeMask' ( in highp 4-component vector of uint unknown built-in variable)
-0:20                'gl_SubgroupGtMask' ( in highp 4-component vector of uint unknown built-in variable)
-0:21              'gl_SubgroupLeMask' ( in highp 4-component vector of uint unknown built-in variable)
-0:22            'gl_SubgroupLtMask' ( in highp 4-component vector of uint unknown built-in variable)
+0:18                  'gl_SubgroupEqMask' ( in highp 4-component vector of uint SubgroupEqMask)
+0:19                  'gl_SubgroupGeMask' ( in highp 4-component vector of uint SubgroupGeMask)
+0:20                'gl_SubgroupGtMask' ( in highp 4-component vector of uint SubgroupGtMask)
+0:21              'gl_SubgroupLeMask' ( in highp 4-component vector of uint SubgroupLeMask)
+0:22            'gl_SubgroupLtMask' ( in highp 4-component vector of uint SubgroupLtMask)
 0:24      Sequence
 0:24        move second child to first child ( temp highp 4-component vector of uint)
 0:24          'result' ( temp highp 4-component vector of uint)

+ 14 - 14
3rdparty/glslang/Test/baseResults/glsl.es320.subgroupBallotNeg.comp.out

@@ -16,8 +16,8 @@ ERROR: node is still EOpNull!
 0:16          'invocation' ( temp uint)
 0:16          mod ( temp uint)
 0:16            add ( temp uint)
-0:16              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:16              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:16              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:16              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:16            Constant:
 0:16              4 (const uint)
 0:18      Sequence
@@ -27,11 +27,11 @@ ERROR: node is still EOpNull!
 0:20            add ( temp 4-component vector of uint)
 0:19              add ( temp 4-component vector of uint)
 0:18                add ( temp 4-component vector of uint)
-0:18                  'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable)
-0:19                  'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable)
-0:20                'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable)
-0:21              'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable)
-0:22            'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable)
+0:18                  'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:19                  'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:20                'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:21              'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:22            'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
 0:24      Sequence
 0:24        move second child to first child ( temp 4-component vector of uint)
 0:24          'result' ( temp 4-component vector of uint)
@@ -153,8 +153,8 @@ ERROR: node is still EOpNull!
 0:16          'invocation' ( temp uint)
 0:16          mod ( temp uint)
 0:16            add ( temp uint)
-0:16              'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
-0:16              'gl_SubgroupSize' ( in uint unknown built-in variable)
+0:16              'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:16              'gl_SubgroupSize' ( in uint SubgroupSize)
 0:16            Constant:
 0:16              4 (const uint)
 0:18      Sequence
@@ -164,11 +164,11 @@ ERROR: node is still EOpNull!
 0:20            add ( temp 4-component vector of uint)
 0:19              add ( temp 4-component vector of uint)
 0:18                add ( temp 4-component vector of uint)
-0:18                  'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable)
-0:19                  'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable)
-0:20                'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable)
-0:21              'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable)
-0:22            'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable)
+0:18                  'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
+0:19                  'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
+0:20                'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
+0:21              'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
+0:22            'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
 0:24      Sequence
 0:24        move second child to first child ( temp 4-component vector of uint)
 0:24          'result' ( temp 4-component vector of uint)

+ 8 - 8
3rdparty/glslang/Test/baseResults/glsl.es320.subgroupBasic.comp.out

@@ -12,7 +12,7 @@ local_size = (8, 8, 1)
 0:14            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
 0:14            Constant:
 0:14              0 (const int)
-0:14          'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
+0:14          'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:14        Constant:
 0:14          1 (const int)
 0:15      move second child to first child ( temp highp int)
@@ -21,7 +21,7 @@ local_size = (8, 8, 1)
 0:15            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
 0:15            Constant:
 0:15              0 (const int)
-0:15          'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
+0:15          'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
 0:15        Constant:
 0:15          1 (const int)
 0:16      move second child to first child ( temp highp int)
@@ -30,7 +30,7 @@ local_size = (8, 8, 1)
 0:16            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
 0:16            Constant:
 0:16              0 (const int)
-0:16          'gl_NumSubgroups' ( in highp uint unknown built-in variable)
+0:16          'gl_NumSubgroups' ( in highp uint NumSubgroups)
 0:16        Constant:
 0:16          1 (const int)
 0:17      move second child to first child ( temp highp int)
@@ -39,7 +39,7 @@ local_size = (8, 8, 1)
 0:17            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
 0:17            Constant:
 0:17              0 (const int)
-0:17          'gl_SubgroupID' ( in highp uint unknown built-in variable)
+0:17          'gl_SubgroupID' ( in highp uint SubgroupID)
 0:17        Test condition and select ( temp highp int)
 0:17          Condition
 0:17          subgroupElect ( global bool)
@@ -78,7 +78,7 @@ local_size = (8, 8, 1)
 0:14            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
 0:14            Constant:
 0:14              0 (const int)
-0:14          'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
+0:14          'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:14        Constant:
 0:14          1 (const int)
 0:15      move second child to first child ( temp highp int)
@@ -87,7 +87,7 @@ local_size = (8, 8, 1)
 0:15            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
 0:15            Constant:
 0:15              0 (const int)
-0:15          'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
+0:15          'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
 0:15        Constant:
 0:15          1 (const int)
 0:16      move second child to first child ( temp highp int)
@@ -96,7 +96,7 @@ local_size = (8, 8, 1)
 0:16            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
 0:16            Constant:
 0:16              0 (const int)
-0:16          'gl_NumSubgroups' ( in highp uint unknown built-in variable)
+0:16          'gl_NumSubgroups' ( in highp uint NumSubgroups)
 0:16        Constant:
 0:16          1 (const int)
 0:17      move second child to first child ( temp highp int)
@@ -105,7 +105,7 @@ local_size = (8, 8, 1)
 0:17            'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
 0:17            Constant:
 0:17              0 (const int)
-0:17          'gl_SubgroupID' ( in highp uint unknown built-in variable)
+0:17          'gl_SubgroupID' ( in highp uint SubgroupID)
 0:17        Test condition and select ( temp highp int)
 0:17          Condition
 0:17          subgroupElect ( global bool)

+ 4 - 4
3rdparty/glslang/Test/baseResults/glsl.es320.subgroupClustered.comp.out

@@ -12,8 +12,8 @@ local_size = (8, 1, 1)
 0:16          'invocation' ( temp highp uint)
 0:16          mod ( temp mediump uint)
 0:16            add ( temp mediump uint)
-0:16              'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
-0:16              'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
+0:16              'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
+0:16              'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:16            Constant:
 0:16              4 (const uint)
 0:18      move second child to first child ( temp highp float)
@@ -2332,8 +2332,8 @@ local_size = (8, 1, 1)
 0:16          'invocation' ( temp highp uint)
 0:16          mod ( temp mediump uint)
 0:16            add ( temp mediump uint)
-0:16              'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
-0:16              'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
+0:16              'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
+0:16              'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:16            Constant:
 0:16              4 (const uint)
 0:18      move second child to first child ( temp highp float)

+ 4 - 4
3rdparty/glslang/Test/baseResults/glsl.es320.subgroupClusteredNeg.comp.out

@@ -26,8 +26,8 @@ ERROR: node is still EOpNull!
 0:19          'invocation' ( temp highp uint)
 0:19          mod ( temp mediump uint)
 0:19            add ( temp mediump uint)
-0:19              'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
-0:19              'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
+0:19              'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
+0:19              'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:19            Constant:
 0:19              4 (const uint)
 0:21      move second child to first child ( temp highp 2-component vector of float)
@@ -325,8 +325,8 @@ ERROR: node is still EOpNull!
 0:19          'invocation' ( temp highp uint)
 0:19          mod ( temp mediump uint)
 0:19            add ( temp mediump uint)
-0:19              'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
-0:19              'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
+0:19              'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
+0:19              'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:19            Constant:
 0:19              4 (const uint)
 0:21      move second child to first child ( temp highp 2-component vector of float)

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 101 - 200
3rdparty/glslang/Test/baseResults/glsl.es320.subgroupPartitioned.comp.out


+ 4 - 4
3rdparty/glslang/Test/baseResults/glsl.es320.subgroupQuad.comp.out

@@ -12,8 +12,8 @@ local_size = (8, 1, 1)
 0:16          'invocation' ( temp highp uint)
 0:16          mod ( temp mediump uint)
 0:16            add ( temp mediump uint)
-0:16              'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
-0:16              'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
+0:16              'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
+0:16              'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:16            Constant:
 0:16              4 (const uint)
 0:18      move second child to first child ( temp highp float)
@@ -1728,8 +1728,8 @@ local_size = (8, 1, 1)
 0:16          'invocation' ( temp highp uint)
 0:16          mod ( temp mediump uint)
 0:16            add ( temp mediump uint)
-0:16              'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
-0:16              'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
+0:16              'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
+0:16              'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:16            Constant:
 0:16              4 (const uint)
 0:18      move second child to first child ( temp highp float)

+ 4 - 4
3rdparty/glslang/Test/baseResults/glsl.es320.subgroupShuffle.comp.out

@@ -12,8 +12,8 @@ local_size = (8, 8, 1)
 0:16          'invocation' ( temp highp uint)
 0:16          mod ( temp mediump uint)
 0:16            add ( temp mediump uint)
-0:16              'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
-0:16              'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
+0:16              'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
+0:16              'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:16            Constant:
 0:16              4 (const uint)
 0:18      move second child to first child ( temp highp float)
@@ -900,8 +900,8 @@ local_size = (8, 8, 1)
 0:16          'invocation' ( temp highp uint)
 0:16          mod ( temp mediump uint)
 0:16            add ( temp mediump uint)
-0:16              'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
-0:16              'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
+0:16              'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
+0:16              'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:16            Constant:
 0:16              4 (const uint)
 0:18      move second child to first child ( temp highp float)

+ 4 - 4
3rdparty/glslang/Test/baseResults/glsl.es320.subgroupShuffleRelative.comp.out

@@ -12,8 +12,8 @@ local_size = (8, 8, 1)
 0:16          'invocation' ( temp highp uint)
 0:16          mod ( temp mediump uint)
 0:16            add ( temp mediump uint)
-0:16              'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
-0:16              'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
+0:16              'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
+0:16              'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:16            Constant:
 0:16              4 (const uint)
 0:18      move second child to first child ( temp highp float)
@@ -900,8 +900,8 @@ local_size = (8, 8, 1)
 0:16          'invocation' ( temp highp uint)
 0:16          mod ( temp mediump uint)
 0:16            add ( temp mediump uint)
-0:16              'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
-0:16              'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
+0:16              'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
+0:16              'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:16            Constant:
 0:16              4 (const uint)
 0:18      move second child to first child ( temp highp float)

+ 4 - 4
3rdparty/glslang/Test/baseResults/glsl.es320.subgroupVote.comp.out

@@ -12,8 +12,8 @@ local_size = (8, 8, 1)
 0:17          'invocation' ( temp highp uint)
 0:17          mod ( temp mediump uint)
 0:17            add ( temp mediump uint)
-0:17              'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
-0:17              'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
+0:17              'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
+0:17              'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:17            Constant:
 0:17              4 (const uint)
 0:19      Test condition and select ( temp void)
@@ -436,8 +436,8 @@ local_size = (8, 8, 1)
 0:17          'invocation' ( temp highp uint)
 0:17          mod ( temp mediump uint)
 0:17            add ( temp mediump uint)
-0:17              'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
-0:17              'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
+0:17              'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
+0:17              'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:17            Constant:
 0:17              4 (const uint)
 0:19      Test condition and select ( temp void)

+ 4 - 4
3rdparty/glslang/Test/baseResults/hlsl.wavequery.comp.out

@@ -11,12 +11,12 @@ local_size = (32, 16, 1)
 0:6            'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
 0:6            Constant:
 0:6              0 (const uint)
-0:6          '@gl_SubgroupInvocationID' ( in uint unknown built-in variable)
+0:6          '@gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
 0:6        Test condition and select ( temp uint): no shortcircuit
 0:6          Condition
 0:6          subgroupElect ( temp bool)
 0:6          true case
-0:6          '@gl_SubgroupSize' ( in uint unknown built-in variable)
+0:6          '@gl_SubgroupSize' ( in uint SubgroupSize)
 0:6          false case
 0:6          Constant:
 0:6            0 (const uint)
@@ -43,12 +43,12 @@ local_size = (32, 16, 1)
 0:6            'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
 0:6            Constant:
 0:6              0 (const uint)
-0:6          '@gl_SubgroupInvocationID' ( in uint unknown built-in variable)
+0:6          '@gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
 0:6        Test condition and select ( temp uint): no shortcircuit
 0:6          Condition
 0:6          subgroupElect ( temp bool)
 0:6          true case
-0:6          '@gl_SubgroupSize' ( in uint unknown built-in variable)
+0:6          '@gl_SubgroupSize' ( in uint SubgroupSize)
 0:6          false case
 0:6          Constant:
 0:6            0 (const uint)

+ 12 - 8
3rdparty/glslang/Test/baseResults/nonuniform.frag.out

@@ -31,11 +31,13 @@ ERROR: node is still EOpNull!
 0:27      move second child to first child ( temp int)
 0:27        'nu_li' ( nonuniform temp int)
 0:27        add ( nonuniform temp int)
-0:27          'a' ( nonuniform temp int)
-0:27          component-wise multiply ( nonuniform temp int)
+0:27          copy object ( nonuniform temp int)
 0:27            'a' ( temp int)
-0:27            Constant:
-0:27              2 (const int)
+0:27          copy object ( nonuniform temp int)
+0:27            component-wise multiply ( temp int)
+0:27              'a' ( temp int)
+0:27              Constant:
+0:27                2 (const int)
 0:28      'nu_li' ( nonuniform temp int)
 0:29      'nu_li' ( nonuniform temp int)
 0:?   Linker Objects
@@ -72,11 +74,13 @@ ERROR: node is still EOpNull!
 0:27      move second child to first child ( temp int)
 0:27        'nu_li' ( nonuniform temp int)
 0:27        add ( nonuniform temp int)
-0:27          'a' ( nonuniform temp int)
-0:27          component-wise multiply ( nonuniform temp int)
+0:27          copy object ( nonuniform temp int)
 0:27            'a' ( temp int)
-0:27            Constant:
-0:27              2 (const int)
+0:27          copy object ( nonuniform temp int)
+0:27            component-wise multiply ( temp int)
+0:27              'a' ( temp int)
+0:27              Constant:
+0:27                2 (const int)
 0:28      'nu_li' ( nonuniform temp int)
 0:29      'nu_li' ( nonuniform temp int)
 0:?   Linker Objects

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out

@@ -4,7 +4,7 @@ spv.1.3.8bitstorage-ssbo.vert
 // Id's are bound by 28
 
                               Capability Shader
-                              Capability CapabilityStorageBuffer8BitAccess
+                              Capability StorageBuffer8BitAccess
                               Extension  "SPV_KHR_8bit_storage"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out

@@ -4,7 +4,7 @@ spv.1.3.8bitstorage-ubo.vert
 // Id's are bound by 29
 
                               Capability Shader
-                              Capability CapabilityUniformAndStorageBuffer8BitAccess
+                              Capability UniformAndStorageBuffer8BitAccess
                               Extension  "SPV_KHR_8bit_storage"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450

+ 3 - 3
3rdparty/glslang/Test/baseResults/spv.1.3.coopmat.comp.out

@@ -4,9 +4,9 @@ spv.1.3.coopmat.comp
 // Id's are bound by 52
 
                               Capability Shader
-                              Capability CapabilityVariablePointers
-                              Capability CapabilityVulkanMemoryModelKHR
-                              Capability CapabilityCooperativeMatrixNV
+                              Capability VariablePointers
+                              Capability VulkanMemoryModelKHR
+                              Capability CooperativeMatrixNV
                               Extension  "SPV_KHR_vulkan_memory_model"
                               Extension  "SPV_NV_cooperative_matrix"
                1:             ExtInstImport  "GLSL.std.450"

+ 109 - 0
3rdparty/glslang/Test/baseResults/spv.1.4.LoopControl.frag.out

@@ -0,0 +1,109 @@
+spv.1.4.LoopControl.frag
+WARNING: 0:15: 'min_iterations' : expected a single integer argument 
+WARNING: 0:15: 'max_iterations' : expected a single integer argument 
+
+// Module Version 10400
+// Generated by (magic number): 80007
+// Id's are bound by 54
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 53
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              SourceExtension  "GL_EXT_control_flow_attributes"
+                              Name 4  "main"
+                              Name 8  "i"
+                              Name 32  "i"
+                              Name 42  "i"
+                              Name 53  "cond"
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Function 6(int)
+               9:      6(int) Constant 0
+              16:      6(int) Constant 8
+              17:             TypeBool
+              20:      6(int) Constant 1
+              27:    17(bool) ConstantTrue
+              52:             TypePointer Private 17(bool)
+        53(cond):     52(ptr) Variable Private
+         4(main):           2 Function None 3
+               5:             Label
+            8(i):      7(ptr) Variable Function
+           32(i):      7(ptr) Variable Function
+           42(i):      7(ptr) Variable Function
+                              Store 8(i) 9
+                              Branch 10
+              10:             Label
+                              LoopMerge 12 13 MinIterations MaxIterations  3 7
+                              Branch 14
+              14:             Label
+              15:      6(int) Load 8(i)
+              18:    17(bool) SLessThan 15 16
+                              BranchConditional 18 11 12
+              11:               Label
+                                Branch 13
+              13:               Label
+              19:      6(int)   Load 8(i)
+              21:      6(int)   IAdd 19 20
+                                Store 8(i) 21
+                                Branch 10
+              12:             Label
+                              Branch 22
+              22:             Label
+                              LoopMerge 24 25 IterationMultiple  2
+                              Branch 26
+              26:             Label
+                              BranchConditional 27 23 24
+              23:               Label
+                                Branch 25
+              25:               Label
+                                Branch 22
+              24:             Label
+                              Branch 28
+              28:             Label
+                              LoopMerge 30 31 PeelCount  5
+                              Branch 29
+              29:             Label
+                              Branch 31
+              31:             Label
+                              BranchConditional 27 28 30
+              30:             Label
+                              Store 32(i) 9
+                              Branch 33
+              33:             Label
+                              LoopMerge 35 36 PartialCount  4
+                              Branch 37
+              37:             Label
+              38:      6(int) Load 32(i)
+              39:    17(bool) SLessThan 38 16
+                              BranchConditional 39 34 35
+              34:               Label
+                                Branch 36
+              36:               Label
+              40:      6(int)   Load 32(i)
+              41:      6(int)   IAdd 40 20
+                                Store 32(i) 41
+                                Branch 33
+              35:             Label
+                              Store 42(i) 9
+                              Branch 43
+              43:             Label
+                              LoopMerge 45 46 None
+                              Branch 47
+              47:             Label
+              48:      6(int) Load 42(i)
+              49:    17(bool) SLessThan 48 16
+                              BranchConditional 49 44 45
+              44:               Label
+                                Branch 46
+              46:               Label
+              50:      6(int)   Load 42(i)
+              51:      6(int)   IAdd 50 20
+                                Store 42(i) 51
+                                Branch 43
+              45:             Label
+                              Return
+                              FunctionEnd

+ 58 - 0
3rdparty/glslang/Test/baseResults/spv.1.4.NonWritable.frag.out

@@ -0,0 +1,58 @@
+spv.1.4.NonWritable.frag
+// Module Version 10400
+// Generated by (magic number): 80007
+// Id's are bound by 38
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 8 31
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 8  "color"
+                              Name 31  "index"
+                              Name 34  "indexable"
+                              Decorate 8(color) Location 0
+                              Decorate 31(index) Flat
+                              Decorate 31(index) Location 0
+                              Decorate 34(indexable) NonWritable
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypePointer Output 6(float)
+        8(color):      7(ptr) Variable Output
+               9:             TypeInt 32 0
+              10:      9(int) Constant 16
+              11:             TypeArray 6(float) 10
+              12:    6(float) Constant 1065353216
+              13:    6(float) Constant 1073741824
+              14:    6(float) Constant 1077936128
+              15:    6(float) Constant 1082130432
+              16:    6(float) Constant 1084227584
+              17:    6(float) Constant 1086324736
+              18:    6(float) Constant 1088421888
+              19:    6(float) Constant 1090519040
+              20:    6(float) Constant 1091567616
+              21:    6(float) Constant 1092616192
+              22:    6(float) Constant 1093664768
+              23:    6(float) Constant 1094713344
+              24:    6(float) Constant 1095761920
+              25:    6(float) Constant 1096810496
+              26:    6(float) Constant 1097859072
+              27:    6(float) Constant 1098907648
+              28:          11 ConstantComposite 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
+              29:             TypeInt 32 1
+              30:             TypePointer Input 29(int)
+       31(index):     30(ptr) Variable Input
+              33:             TypePointer Function 11
+              35:             TypePointer Function 6(float)
+         4(main):           2 Function None 3
+               5:             Label
+   34(indexable):     33(ptr) Variable Function 28
+              32:     29(int) Load 31(index)
+              36:     35(ptr) AccessChain 34(indexable) 32
+              37:    6(float) Load 36
+                              Store 8(color) 37
+                              Return
+                              FunctionEnd

+ 150 - 0
3rdparty/glslang/Test/baseResults/spv.1.4.OpCopyLogical.comp.out

@@ -0,0 +1,150 @@
+spv.1.4.OpCopyLogical.comp
+// Module Version 10400
+// Generated by (magic number): 80007
+// Id's are bound by 65
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "main" 19 27 35 51 60
+                              ExecutionMode 4 LocalSize 1 1 1
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 12  "MyStruct"
+                              MemberName 12(MyStruct) 0  "foo"
+                              MemberName 12(MyStruct) 1  "sb"
+                              Name 14  "t"
+                              Name 16  "MyStruct"
+                              MemberName 16(MyStruct) 0  "foo"
+                              MemberName 16(MyStruct) 1  "sb"
+                              Name 17  "SSBO0"
+                              MemberName 17(SSBO0) 0  "a"
+                              Name 19  "inBuf"
+                              Name 25  "SSBO1"
+                              MemberName 25(SSBO1) 0  "b"
+                              Name 27  "outBuf"
+                              Name 32  "MyStruct"
+                              MemberName 32(MyStruct) 0  "foo"
+                              MemberName 32(MyStruct) 1  "sb"
+                              Name 33  "UBO"
+                              MemberName 33(UBO) 0  "c"
+                              Name 35  "uBuf"
+                              Name 44  "Nested"
+                              MemberName 44(Nested) 0  "f"
+                              MemberName 44(Nested) 1  "S"
+                              Name 46  "n"
+                              Name 48  "Nested"
+                              MemberName 48(Nested) 0  "f"
+                              MemberName 48(Nested) 1  "S"
+                              Name 49  "UBON"
+                              MemberName 49(UBON) 0  "N1"
+                              Name 51  "uBufN"
+                              Name 57  "Nested"
+                              MemberName 57(Nested) 0  "f"
+                              MemberName 57(Nested) 1  "S"
+                              Name 58  "SSBO1N"
+                              MemberName 58(SSBO1N) 0  "N2"
+                              Name 60  "outBufN"
+                              Decorate 15 ArrayStride 8
+                              MemberDecorate 16(MyStruct) 0 Offset 0
+                              MemberDecorate 16(MyStruct) 1 Offset 16
+                              MemberDecorate 17(SSBO0) 0 Offset 0
+                              Decorate 17(SSBO0) Block
+                              Decorate 19(inBuf) DescriptorSet 0
+                              Decorate 19(inBuf) Binding 0
+                              MemberDecorate 25(SSBO1) 0 Offset 0
+                              Decorate 25(SSBO1) Block
+                              Decorate 27(outBuf) DescriptorSet 0
+                              Decorate 27(outBuf) Binding 1
+                              Decorate 31 ArrayStride 16
+                              MemberDecorate 32(MyStruct) 0 Offset 0
+                              MemberDecorate 32(MyStruct) 1 Offset 32
+                              MemberDecorate 33(UBO) 0 Offset 0
+                              Decorate 33(UBO) Block
+                              Decorate 35(uBuf) DescriptorSet 0
+                              Decorate 35(uBuf) Binding 2
+                              Decorate 47 ArrayStride 48
+                              MemberDecorate 48(Nested) 0 Offset 0
+                              MemberDecorate 48(Nested) 1 Offset 16
+                              MemberDecorate 49(UBON) 0 Offset 0
+                              Decorate 49(UBON) Block
+                              Decorate 51(uBufN) DescriptorSet 0
+                              Decorate 51(uBufN) Binding 2
+                              Decorate 56 ArrayStride 24
+                              MemberDecorate 57(Nested) 0 Offset 0
+                              MemberDecorate 57(Nested) 1 Offset 8
+                              MemberDecorate 58(SSBO1N) 0 Offset 0
+                              Decorate 58(SSBO1N) Block
+                              Decorate 60(outBufN) DescriptorSet 0
+                              Decorate 60(outBufN) Binding 1
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 2
+               8:             TypeInt 32 0
+               9:      8(int) Constant 2
+              10:             TypeArray 7(fvec2) 9
+              11:             TypeInt 32 1
+    12(MyStruct):             TypeStruct 10 11(int)
+              13:             TypePointer Function 12(MyStruct)
+              15:             TypeArray 7(fvec2) 9
+    16(MyStruct):             TypeStruct 15 11(int)
+       17(SSBO0):             TypeStruct 16(MyStruct)
+              18:             TypePointer StorageBuffer 17(SSBO0)
+       19(inBuf):     18(ptr) Variable StorageBuffer
+              20:     11(int) Constant 0
+              21:             TypePointer StorageBuffer 16(MyStruct)
+       25(SSBO1):             TypeStruct 16(MyStruct)
+              26:             TypePointer StorageBuffer 25(SSBO1)
+      27(outBuf):     26(ptr) Variable StorageBuffer
+              31:             TypeArray 7(fvec2) 9
+    32(MyStruct):             TypeStruct 31 11(int)
+         33(UBO):             TypeStruct 32(MyStruct)
+              34:             TypePointer Uniform 33(UBO)
+        35(uBuf):     34(ptr) Variable Uniform
+              36:             TypePointer Uniform 32(MyStruct)
+              43:             TypeArray 12(MyStruct) 9
+      44(Nested):             TypeStruct 6(float) 43
+              45:             TypePointer Function 44(Nested)
+              47:             TypeArray 32(MyStruct) 9
+      48(Nested):             TypeStruct 6(float) 47
+        49(UBON):             TypeStruct 48(Nested)
+              50:             TypePointer Uniform 49(UBON)
+       51(uBufN):     50(ptr) Variable Uniform
+              52:             TypePointer Uniform 48(Nested)
+              56:             TypeArray 16(MyStruct) 9
+      57(Nested):             TypeStruct 6(float) 56
+      58(SSBO1N):             TypeStruct 57(Nested)
+              59:             TypePointer StorageBuffer 58(SSBO1N)
+     60(outBufN):     59(ptr) Variable StorageBuffer
+              62:             TypePointer StorageBuffer 57(Nested)
+         4(main):           2 Function None 3
+               5:             Label
+           14(t):     13(ptr) Variable Function
+           46(n):     45(ptr) Variable Function
+              22:     21(ptr) AccessChain 19(inBuf) 20
+              23:16(MyStruct) Load 22
+              24:12(MyStruct) CopyLogical 23
+                              Store 14(t) 24
+              28:12(MyStruct) Load 14(t)
+              29:     21(ptr) AccessChain 27(outBuf) 20
+              30:16(MyStruct) CopyLogical 28
+                              Store 29 30
+              37:     36(ptr) AccessChain 35(uBuf) 20
+              38:32(MyStruct) Load 37
+              39:12(MyStruct) CopyLogical 38
+                              Store 14(t) 39
+              40:12(MyStruct) Load 14(t)
+              41:     21(ptr) AccessChain 27(outBuf) 20
+              42:16(MyStruct) CopyLogical 40
+                              Store 41 42
+              53:     52(ptr) AccessChain 51(uBufN) 20
+              54:  48(Nested) Load 53
+              55:  44(Nested) CopyLogical 54
+                              Store 46(n) 55
+              61:  44(Nested) Load 46(n)
+              63:     62(ptr) AccessChain 60(outBufN) 20
+              64:  57(Nested) CopyLogical 61
+                              Store 63 64
+                              Return
+                              FunctionEnd

+ 114 - 0
3rdparty/glslang/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out

@@ -0,0 +1,114 @@
+spv.1.4.OpCopyLogical.funcall.frag
+// Module Version 10400
+// Generated by (magic number): 80007
+// Id's are bound by 60
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 25 37
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 9  "S"
+                              MemberName 9(S) 0  "m"
+                              Name 12  "fooConst(struct-S-mf441;"
+                              Name 11  "s"
+                              Name 17  "foo(struct-S-mf441;"
+                              Name 16  "s"
+                              Name 20  "fooOut(struct-S-mf441;"
+                              Name 19  "s"
+                              Name 22  "S"
+                              MemberName 22(S) 0  "m"
+                              Name 23  "blockName"
+                              MemberName 23(blockName) 0  "s1"
+                              Name 25  ""
+                              Name 31  "S"
+                              MemberName 31(S) 0  "m"
+                              Name 32  "arg"
+                              Name 37  "s2"
+                              Name 40  "param"
+                              Name 45  "param"
+                              Name 48  "param"
+                              Name 56  "param"
+                              MemberDecorate 22(S) 0 ColMajor
+                              MemberDecorate 22(S) 0 Offset 0
+                              MemberDecorate 22(S) 0 MatrixStride 16
+                              MemberDecorate 23(blockName) 0 Offset 0
+                              Decorate 23(blockName) Block
+                              Decorate 25 DescriptorSet 0
+                              Decorate 25 Binding 0
+                              MemberDecorate 31(S) 0 ColMajor
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypeMatrix 7(fvec4) 4
+            9(S):             TypeStruct 8
+              10:             TypeFunction 2 9(S)
+              14:             TypePointer Function 9(S)
+              15:             TypeFunction 2 14(ptr)
+           22(S):             TypeStruct 8
+   23(blockName):             TypeStruct 22(S)
+              24:             TypePointer StorageBuffer 23(blockName)
+              25:     24(ptr) Variable StorageBuffer
+              26:             TypeInt 32 1
+              27:     26(int) Constant 0
+              28:             TypePointer StorageBuffer 22(S)
+           31(S):             TypeStruct 8
+              36:             TypePointer Private 9(S)
+          37(s2):     36(ptr) Variable Private
+         4(main):           2 Function None 3
+               5:             Label
+         32(arg):     14(ptr) Variable Function
+       40(param):     14(ptr) Variable Function
+       45(param):     14(ptr) Variable Function
+       48(param):     14(ptr) Variable Function
+       56(param):     14(ptr) Variable Function
+              29:     28(ptr) AccessChain 25 27
+              30:       22(S) Load 29
+              33:        9(S) CopyLogical 30
+                              Store 32(arg) 33
+              34:        9(S) Load 32(arg)
+              35:           2 FunctionCall 12(fooConst(struct-S-mf441;) 34
+              38:        9(S) Load 37(s2)
+              39:           2 FunctionCall 12(fooConst(struct-S-mf441;) 38
+              41:     28(ptr) AccessChain 25 27
+              42:       22(S) Load 41
+              43:        9(S) CopyLogical 42
+                              Store 40(param) 43
+              44:           2 FunctionCall 17(foo(struct-S-mf441;) 40(param)
+              46:        9(S) Load 37(s2)
+                              Store 45(param) 46
+              47:           2 FunctionCall 17(foo(struct-S-mf441;) 45(param)
+              49:     28(ptr) AccessChain 25 27
+              50:       22(S) Load 49
+              51:        9(S) CopyLogical 50
+                              Store 48(param) 51
+              52:           2 FunctionCall 20(fooOut(struct-S-mf441;) 48(param)
+              53:        9(S) Load 48(param)
+              54:     28(ptr) AccessChain 25 27
+              55:       22(S) CopyLogical 53
+                              Store 54 55
+              57:        9(S) Load 37(s2)
+                              Store 56(param) 57
+              58:           2 FunctionCall 20(fooOut(struct-S-mf441;) 56(param)
+              59:        9(S) Load 56(param)
+                              Store 37(s2) 59
+                              Return
+                              FunctionEnd
+12(fooConst(struct-S-mf441;):           2 Function None 10
+           11(s):        9(S) FunctionParameter
+              13:             Label
+                              Return
+                              FunctionEnd
+17(foo(struct-S-mf441;):           2 Function None 15
+           16(s):     14(ptr) FunctionParameter
+              18:             Label
+                              Return
+                              FunctionEnd
+20(fooOut(struct-S-mf441;):           2 Function None 15
+           19(s):     14(ptr) FunctionParameter
+              21:             Label
+                              Return
+                              FunctionEnd

+ 232 - 0
3rdparty/glslang/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out

@@ -0,0 +1,232 @@
+spv.1.4.OpCopyLogicalBool.comp
+// Module Version 10400
+// Generated by (magic number): 80007
+// Id's are bound by 135
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "main" 19 37 53 79 109
+                              ExecutionMode 4 LocalSize 1 1 1
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 12  "MyStruct"
+                              MemberName 12(MyStruct) 0  "foo"
+                              MemberName 12(MyStruct) 1  "sb"
+                              Name 14  "t"
+                              Name 16  "MyStruct"
+                              MemberName 16(MyStruct) 0  "foo"
+                              MemberName 16(MyStruct) 1  "sb"
+                              Name 17  "SSBO0"
+                              MemberName 17(SSBO0) 0  "a"
+                              Name 19  "inBuf"
+                              Name 35  "SSBO1"
+                              MemberName 35(SSBO1) 0  "b"
+                              Name 37  "outBuf"
+                              Name 50  "MyStruct"
+                              MemberName 50(MyStruct) 0  "foo"
+                              MemberName 50(MyStruct) 1  "sb"
+                              Name 51  "UBO"
+                              MemberName 51(UBO) 0  "c"
+                              Name 53  "uBuf"
+                              Name 72  "Nested"
+                              MemberName 72(Nested) 0  "b"
+                              MemberName 72(Nested) 1  "S"
+                              Name 74  "n"
+                              Name 76  "Nested"
+                              MemberName 76(Nested) 0  "b"
+                              MemberName 76(Nested) 1  "S"
+                              Name 77  "UBON"
+                              MemberName 77(UBON) 0  "N1"
+                              Name 79  "uBufN"
+                              Name 106  "Nested"
+                              MemberName 106(Nested) 0  "b"
+                              MemberName 106(Nested) 1  "S"
+                              Name 107  "SSBO1N"
+                              MemberName 107(SSBO1N) 0  "N2"
+                              Name 109  "outBufN"
+                              Decorate 15 ArrayStride 8
+                              MemberDecorate 16(MyStruct) 0 Offset 0
+                              MemberDecorate 16(MyStruct) 1 Offset 16
+                              MemberDecorate 17(SSBO0) 0 Offset 0
+                              Decorate 17(SSBO0) Block
+                              Decorate 19(inBuf) DescriptorSet 0
+                              Decorate 19(inBuf) Binding 0
+                              MemberDecorate 35(SSBO1) 0 Offset 0
+                              Decorate 35(SSBO1) Block
+                              Decorate 37(outBuf) DescriptorSet 0
+                              Decorate 37(outBuf) Binding 1
+                              Decorate 49 ArrayStride 16
+                              MemberDecorate 50(MyStruct) 0 Offset 0
+                              MemberDecorate 50(MyStruct) 1 Offset 32
+                              MemberDecorate 51(UBO) 0 Offset 0
+                              Decorate 51(UBO) Block
+                              Decorate 53(uBuf) DescriptorSet 0
+                              Decorate 53(uBuf) Binding 2
+                              Decorate 75 ArrayStride 48
+                              MemberDecorate 76(Nested) 0 Offset 0
+                              MemberDecorate 76(Nested) 1 Offset 16
+                              MemberDecorate 77(UBON) 0 Offset 0
+                              Decorate 77(UBON) Block
+                              Decorate 79(uBufN) DescriptorSet 0
+                              Decorate 79(uBufN) Binding 2
+                              Decorate 105 ArrayStride 24
+                              MemberDecorate 106(Nested) 0 Offset 0
+                              MemberDecorate 106(Nested) 1 Offset 8
+                              MemberDecorate 107(SSBO1N) 0 Offset 0
+                              Decorate 107(SSBO1N) Block
+                              Decorate 109(outBufN) DescriptorSet 0
+                              Decorate 109(outBufN) Binding 1
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 2
+               8:             TypeInt 32 0
+               9:      8(int) Constant 2
+              10:             TypeArray 7(fvec2) 9
+              11:             TypeBool
+    12(MyStruct):             TypeStruct 10 11(bool)
+              13:             TypePointer Function 12(MyStruct)
+              15:             TypeArray 7(fvec2) 9
+    16(MyStruct):             TypeStruct 15 8(int)
+       17(SSBO0):             TypeStruct 16(MyStruct)
+              18:             TypePointer StorageBuffer 17(SSBO0)
+       19(inBuf):     18(ptr) Variable StorageBuffer
+              20:             TypeInt 32 1
+              21:     20(int) Constant 0
+              22:             TypePointer StorageBuffer 16(MyStruct)
+              26:             TypePointer Function 10
+              30:     20(int) Constant 1
+              31:      8(int) Constant 0
+              33:             TypePointer Function 11(bool)
+       35(SSBO1):             TypeStruct 16(MyStruct)
+              36:             TypePointer StorageBuffer 35(SSBO1)
+      37(outBuf):     36(ptr) Variable StorageBuffer
+              41:             TypePointer StorageBuffer 15
+              45:      8(int) Constant 1
+              47:             TypePointer StorageBuffer 8(int)
+              49:             TypeArray 7(fvec2) 9
+    50(MyStruct):             TypeStruct 49 8(int)
+         51(UBO):             TypeStruct 50(MyStruct)
+              52:             TypePointer Uniform 51(UBO)
+        53(uBuf):     52(ptr) Variable Uniform
+              54:             TypePointer Uniform 50(MyStruct)
+              71:             TypeArray 12(MyStruct) 9
+      72(Nested):             TypeStruct 11(bool) 71
+              73:             TypePointer Function 72(Nested)
+              75:             TypeArray 50(MyStruct) 9
+      76(Nested):             TypeStruct 8(int) 75
+        77(UBON):             TypeStruct 76(Nested)
+              78:             TypePointer Uniform 77(UBON)
+       79(uBufN):     78(ptr) Variable Uniform
+              80:             TypePointer Uniform 76(Nested)
+              87:             TypePointer Function 71
+             105:             TypeArray 16(MyStruct) 9
+     106(Nested):             TypeStruct 8(int) 105
+     107(SSBO1N):             TypeStruct 106(Nested)
+             108:             TypePointer StorageBuffer 107(SSBO1N)
+    109(outBufN):    108(ptr) Variable StorageBuffer
+             111:             TypePointer StorageBuffer 106(Nested)
+             117:             TypePointer StorageBuffer 105
+         4(main):           2 Function None 3
+               5:             Label
+           14(t):     13(ptr) Variable Function
+           74(n):     73(ptr) Variable Function
+              23:     22(ptr) AccessChain 19(inBuf) 21
+              24:16(MyStruct) Load 23
+              25:          15 CompositeExtract 24 0
+              27:     26(ptr) AccessChain 14(t) 21
+              28:          10 CopyLogical 25
+                              Store 27 28
+              29:      8(int) CompositeExtract 24 1
+              32:    11(bool) INotEqual 29 31
+              34:     33(ptr) AccessChain 14(t) 30
+                              Store 34 32
+              38:12(MyStruct) Load 14(t)
+              39:     22(ptr) AccessChain 37(outBuf) 21
+              40:          10 CompositeExtract 38 0
+              42:     41(ptr) AccessChain 39 21
+              43:          15 CopyLogical 40
+                              Store 42 43
+              44:    11(bool) CompositeExtract 38 1
+              46:      8(int) Select 44 45 31
+              48:     47(ptr) AccessChain 39 30
+                              Store 48 46
+              55:     54(ptr) AccessChain 53(uBuf) 21
+              56:50(MyStruct) Load 55
+              57:          49 CompositeExtract 56 0
+              58:     26(ptr) AccessChain 14(t) 21
+              59:          10 CopyLogical 57
+                              Store 58 59
+              60:      8(int) CompositeExtract 56 1
+              61:    11(bool) INotEqual 60 31
+              62:     33(ptr) AccessChain 14(t) 30
+                              Store 62 61
+              63:12(MyStruct) Load 14(t)
+              64:     22(ptr) AccessChain 37(outBuf) 21
+              65:          10 CompositeExtract 63 0
+              66:     41(ptr) AccessChain 64 21
+              67:          15 CopyLogical 65
+                              Store 66 67
+              68:    11(bool) CompositeExtract 63 1
+              69:      8(int) Select 68 45 31
+              70:     47(ptr) AccessChain 64 30
+                              Store 70 69
+              81:     80(ptr) AccessChain 79(uBufN) 21
+              82:  76(Nested) Load 81
+              83:      8(int) CompositeExtract 82 0
+              84:    11(bool) INotEqual 83 31
+              85:     33(ptr) AccessChain 74(n) 21
+                              Store 85 84
+              86:          75 CompositeExtract 82 1
+              88:     87(ptr) AccessChain 74(n) 30
+              89:50(MyStruct) CompositeExtract 86 0
+              90:     13(ptr) AccessChain 88 21
+              91:          49 CompositeExtract 89 0
+              92:     26(ptr) AccessChain 90 21
+              93:          10 CopyLogical 91
+                              Store 92 93
+              94:      8(int) CompositeExtract 89 1
+              95:    11(bool) INotEqual 94 31
+              96:     33(ptr) AccessChain 90 30
+                              Store 96 95
+              97:50(MyStruct) CompositeExtract 86 1
+              98:     13(ptr) AccessChain 88 30
+              99:          49 CompositeExtract 97 0
+             100:     26(ptr) AccessChain 98 21
+             101:          10 CopyLogical 99
+                              Store 100 101
+             102:      8(int) CompositeExtract 97 1
+             103:    11(bool) INotEqual 102 31
+             104:     33(ptr) AccessChain 98 30
+                              Store 104 103
+             110:  72(Nested) Load 74(n)
+             112:    111(ptr) AccessChain 109(outBufN) 21
+             113:    11(bool) CompositeExtract 110 0
+             114:      8(int) Select 113 45 31
+             115:     47(ptr) AccessChain 112 21
+                              Store 115 114
+             116:          71 CompositeExtract 110 1
+             118:    117(ptr) AccessChain 112 30
+             119:12(MyStruct) CompositeExtract 116 0
+             120:     22(ptr) AccessChain 118 21
+             121:          10 CompositeExtract 119 0
+             122:     41(ptr) AccessChain 120 21
+             123:          15 CopyLogical 121
+                              Store 122 123
+             124:    11(bool) CompositeExtract 119 1
+             125:      8(int) Select 124 45 31
+             126:     47(ptr) AccessChain 120 30
+                              Store 126 125
+             127:12(MyStruct) CompositeExtract 116 1
+             128:     22(ptr) AccessChain 118 30
+             129:          10 CompositeExtract 127 0
+             130:     41(ptr) AccessChain 128 21
+             131:          15 CopyLogical 129
+                              Store 130 131
+             132:    11(bool) CompositeExtract 127 1
+             133:      8(int) Select 132 45 31
+             134:     47(ptr) AccessChain 128 30
+                              Store 134 133
+                              Return
+                              FunctionEnd

+ 106 - 0
3rdparty/glslang/Test/baseResults/spv.1.4.OpEntryPoint.frag.out

@@ -0,0 +1,106 @@
+spv.1.4.OpEntryPoint.frag
+// Module Version 10400
+// Generated by (magic number): 80007
+// Id's are bound by 64
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 11 14 17 25 33 41
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 9  "functionv"
+                              Name 11  "inv"
+                              Name 14  "globalv"
+                              Name 17  "outv"
+                              Name 23  "ubt"
+                              MemberName 23(ubt) 0  "v"
+                              Name 25  "uniformv"
+                              Name 31  "pushB"
+                              MemberName 31(pushB) 0  "a"
+                              Name 33  "pushv"
+                              Name 39  "bbt"
+                              MemberName 39(bbt) 0  "f"
+                              Name 41  "bufferv"
+                              Decorate 11(inv) Location 0
+                              Decorate 17(outv) Location 0
+                              MemberDecorate 23(ubt) 0 Offset 0
+                              Decorate 23(ubt) Block
+                              Decorate 25(uniformv) DescriptorSet 0
+                              Decorate 25(uniformv) Binding 0
+                              MemberDecorate 31(pushB) 0 Offset 0
+                              Decorate 31(pushB) Block
+                              Decorate 33(pushv) Binding 2
+                              MemberDecorate 39(bbt) 0 Offset 0
+                              Decorate 39(bbt) Block
+                              Decorate 41(bufferv) DescriptorSet 0
+                              Decorate 41(bufferv) Binding 1
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Function 7(fvec4)
+              10:             TypePointer Input 7(fvec4)
+         11(inv):     10(ptr) Variable Input
+              13:             TypePointer Private 7(fvec4)
+     14(globalv):     13(ptr) Variable Private
+              16:             TypePointer Output 7(fvec4)
+        17(outv):     16(ptr) Variable Output
+         23(ubt):             TypeStruct 7(fvec4)
+              24:             TypePointer Uniform 23(ubt)
+    25(uniformv):     24(ptr) Variable Uniform
+              26:             TypeInt 32 1
+              27:     26(int) Constant 0
+              28:             TypePointer Uniform 7(fvec4)
+       31(pushB):             TypeStruct 26(int)
+              32:             TypePointer PushConstant 31(pushB)
+       33(pushv):     32(ptr) Variable PushConstant
+              34:             TypePointer PushConstant 26(int)
+         39(bbt):             TypeStruct 6(float)
+              40:             TypePointer StorageBuffer 39(bbt)
+     41(bufferv):     40(ptr) Variable StorageBuffer
+              42:             TypePointer StorageBuffer 6(float)
+         4(main):           2 Function None 3
+               5:             Label
+    9(functionv):      8(ptr) Variable Function
+              12:    7(fvec4) Load 11(inv)
+                              Store 9(functionv) 12
+              15:    7(fvec4) Load 11(inv)
+                              Store 14(globalv) 15
+              18:    7(fvec4) Load 9(functionv)
+              19:    7(fvec4) Load 11(inv)
+              20:    7(fvec4) FAdd 18 19
+              21:    7(fvec4) Load 14(globalv)
+              22:    7(fvec4) FAdd 20 21
+              29:     28(ptr) AccessChain 25(uniformv) 27
+              30:    7(fvec4) Load 29
+              35:     34(ptr) AccessChain 33(pushv) 27
+              36:     26(int) Load 35
+              37:    6(float) ConvertSToF 36
+              38:    7(fvec4) VectorTimesScalar 30 37
+              43:     42(ptr) AccessChain 41(bufferv) 27
+              44:    6(float) Load 43
+              45:    7(fvec4) VectorTimesScalar 38 44
+              46:    7(fvec4) FAdd 22 45
+                              Store 17(outv) 46
+              47:    7(fvec4) Load 9(functionv)
+              48:    7(fvec4) Load 11(inv)
+              49:    7(fvec4) FAdd 47 48
+              50:    7(fvec4) Load 14(globalv)
+              51:    7(fvec4) FAdd 49 50
+              52:     28(ptr) AccessChain 25(uniformv) 27
+              53:    7(fvec4) Load 52
+              54:     34(ptr) AccessChain 33(pushv) 27
+              55:     26(int) Load 54
+              56:    6(float) ConvertSToF 55
+              57:    7(fvec4) VectorTimesScalar 53 56
+              58:     42(ptr) AccessChain 41(bufferv) 27
+              59:    6(float) Load 58
+              60:    7(fvec4) VectorTimesScalar 57 59
+              61:    7(fvec4) FAdd 51 60
+              62:    7(fvec4) Load 17(outv)
+              63:    7(fvec4) FAdd 62 61
+                              Store 17(outv) 63
+                              Return
+                              FunctionEnd

+ 152 - 0
3rdparty/glslang/Test/baseResults/spv.1.4.OpSelect.frag.out

@@ -0,0 +1,152 @@
+spv.1.4.OpSelect.frag
+// Module Version 10400
+// Generated by (magic number): 80007
+// Id's are bound by 98
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 17 20 82 84
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 6  "fun1("
+                              Name 8  "fun2("
+                              Name 12  "f1"
+                              Name 14  "f2"
+                              Name 17  "outv"
+                              Name 20  "cond"
+                              Name 30  "iv1"
+                              Name 34  "iv2"
+                              Name 53  "m1"
+                              Name 59  "m2"
+                              Name 75  "S1"
+                              MemberName 75(S1) 0  "a"
+                              MemberName 75(S1) 1  "b"
+                              Name 77  "fv"
+                              Name 82  "in1"
+                              Name 84  "in2"
+                              Decorate 17(outv) Location 0
+                              Decorate 20(cond) Flat
+                              Decorate 20(cond) Location 4
+                              Decorate 82(in1) Flat
+                              Decorate 82(in1) Location 0
+                              Decorate 84(in2) Flat
+                              Decorate 84(in2) Location 2
+               2:             TypeVoid
+               3:             TypeFunction 2
+              10:             TypeFloat 32
+              11:             TypePointer Function 10(float)
+              13:   10(float) Constant 1065353216
+              15:   10(float) Constant 1073741824
+              16:             TypePointer Output 10(float)
+        17(outv):     16(ptr) Variable Output
+              18:             TypeInt 32 1
+              19:             TypePointer Input 18(int)
+        20(cond):     19(ptr) Variable Input
+              22:     18(int) Constant 8
+              23:             TypeBool
+              28:             TypeVector 18(int) 4
+              29:             TypePointer Function 28(ivec4)
+              39:     18(int) Constant 0
+              44:             TypeInt 32 0
+              45:     44(int) Constant 2
+              50:             TypeVector 10(float) 3
+              51:             TypeMatrix 50(fvec3) 3
+              52:             TypePointer Function 51
+              54:   10(float) Constant 0
+              55:   50(fvec3) ConstantComposite 13 54 54
+              56:   50(fvec3) ConstantComposite 54 13 54
+              57:   50(fvec3) ConstantComposite 54 54 13
+              58:          51 ConstantComposite 55 56 57
+              60:   50(fvec3) ConstantComposite 15 54 54
+              61:   50(fvec3) ConstantComposite 54 15 54
+              62:   50(fvec3) ConstantComposite 54 54 15
+              63:          51 ConstantComposite 60 61 62
+              65:     18(int) Constant 20
+              70:     18(int) Constant 2
+              71:     44(int) Constant 1
+          75(S1):             TypeStruct 10(float) 18(int)
+              76:             TypePointer Function 75(S1)
+              79:     18(int) Constant 5
+              81:             TypePointer Input 75(S1)
+         82(in1):     81(ptr) Variable Input
+         84(in2):     81(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+          12(f1):     11(ptr) Variable Function
+          14(f2):     11(ptr) Variable Function
+         30(iv1):     29(ptr) Variable Function
+         34(iv2):     29(ptr) Variable Function
+          53(m1):     52(ptr) Variable Function
+          59(m2):     52(ptr) Variable Function
+          77(fv):     76(ptr) Variable Function
+                              Store 12(f1) 13
+                              Store 14(f2) 15
+              21:     18(int) Load 20(cond)
+              24:    23(bool) SLessThan 21 22
+              25:   10(float) Load 12(f1)
+              26:   10(float) Load 14(f2)
+              27:   10(float) Select 24 25 26
+                              Store 17(outv) 27
+              31:   10(float) Load 12(f1)
+              32:     18(int) ConvertFToS 31
+              33:   28(ivec4) CompositeConstruct 32 32 32 32
+                              Store 30(iv1) 33
+              35:   10(float) Load 14(f2)
+              36:     18(int) ConvertFToS 35
+              37:   28(ivec4) CompositeConstruct 36 36 36 36
+                              Store 34(iv2) 37
+              38:     18(int) Load 20(cond)
+              40:    23(bool) SGreaterThan 38 39
+              41:   28(ivec4) Load 30(iv1)
+              42:   28(ivec4) Load 34(iv2)
+              43:   28(ivec4) Select 40 41 42
+              46:     18(int) CompositeExtract 43 2
+              47:   10(float) ConvertSToF 46
+              48:   10(float) Load 17(outv)
+              49:   10(float) FMul 48 47
+                              Store 17(outv) 49
+                              Store 53(m1) 58
+                              Store 59(m2) 63
+              64:     18(int) Load 20(cond)
+              66:    23(bool) SLessThan 64 65
+              67:          51 Load 53(m1)
+              68:          51 Load 59(m2)
+              69:          51 Select 66 67 68
+              72:   10(float) CompositeExtract 69 2 1
+              73:   10(float) Load 17(outv)
+              74:   10(float) FMul 73 72
+                              Store 17(outv) 74
+              78:     18(int) Load 20(cond)
+              80:    23(bool) SGreaterThan 78 79
+              83:      75(S1) Load 82(in1)
+              85:      75(S1) Load 84(in2)
+              86:      75(S1) Select 80 83 85
+                              Store 77(fv) 86
+              87:     11(ptr) AccessChain 77(fv) 39
+              88:   10(float) Load 87
+              89:   10(float) Load 17(outv)
+              90:   10(float) FMul 89 88
+                              Store 17(outv) 90
+              91:     18(int) Load 20(cond)
+              92:    23(bool) SGreaterThan 91 39
+                              SelectionMerge 94 None
+                              BranchConditional 92 93 96
+              93:               Label
+              95:           2   FunctionCall 6(fun1()
+                                Branch 94
+              96:               Label
+              97:           2   FunctionCall 8(fun2()
+                                Branch 94
+              94:             Label
+                              Return
+                              FunctionEnd
+        6(fun1():           2 Function None 3
+               7:             Label
+                              Return
+                              FunctionEnd
+        8(fun2():           2 Function None 3
+               9:             Label
+                              Return
+                              FunctionEnd

+ 159 - 0
3rdparty/glslang/Test/baseResults/spv.1.4.image.frag.out

@@ -0,0 +1,159 @@
+spv.1.4.image.frag
+// Module Version 10400
+// Generated by (magic number): 80007
+// Id's are bound by 104
+
+                              Capability Shader
+                              Capability StorageImageMultisample
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 26 30 40 52 64 77 89 100 103
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 9  "v"
+                              Name 15  "iv"
+                              Name 21  "uv"
+                              Name 26  "i2D"
+                              Name 30  "ic2D"
+                              Name 40  "ii2D"
+                              Name 52  "ui2D"
+                              Name 64  "i2DMS"
+                              Name 77  "ii2DMS"
+                              Name 89  "ui2DMS"
+                              Name 100  "fragData"
+                              Name 103  "value"
+                              Decorate 26(i2D) DescriptorSet 0
+                              Decorate 26(i2D) Binding 1
+                              Decorate 30(ic2D) Flat
+                              Decorate 40(ii2D) DescriptorSet 0
+                              Decorate 40(ii2D) Binding 12
+                              Decorate 52(ui2D) DescriptorSet 0
+                              Decorate 52(ui2D) Binding 12
+                              Decorate 64(i2DMS) DescriptorSet 0
+                              Decorate 64(i2DMS) Binding 9
+                              Decorate 77(ii2DMS) DescriptorSet 0
+                              Decorate 77(ii2DMS) Binding 13
+                              Decorate 89(ui2DMS) DescriptorSet 0
+                              Decorate 89(ui2DMS) Binding 13
+                              Decorate 103(value) Flat
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Function 7(fvec4)
+              10:    6(float) Constant 0
+              11:    7(fvec4) ConstantComposite 10 10 10 10
+              12:             TypeInt 32 1
+              13:             TypeVector 12(int) 4
+              14:             TypePointer Function 13(ivec4)
+              16:     12(int) Constant 0
+              17:   13(ivec4) ConstantComposite 16 16 16 16
+              18:             TypeInt 32 0
+              19:             TypeVector 18(int) 4
+              20:             TypePointer Function 19(ivec4)
+              22:     18(int) Constant 0
+              23:   19(ivec4) ConstantComposite 22 22 22 22
+              24:             TypeImage 6(float) 2D nonsampled format:Rgba32f
+              25:             TypePointer UniformConstant 24
+         26(i2D):     25(ptr) Variable UniformConstant
+              28:             TypeVector 12(int) 2
+              29:             TypePointer Input 28(ivec2)
+        30(ic2D):     29(ptr) Variable Input
+              38:             TypeImage 12(int) 2D nonsampled format:R32i
+              39:             TypePointer UniformConstant 38
+        40(ii2D):     39(ptr) Variable UniformConstant
+              50:             TypeImage 18(int) 2D nonsampled format:R32ui
+              51:             TypePointer UniformConstant 50
+        52(ui2D):     51(ptr) Variable UniformConstant
+              62:             TypeImage 6(float) 2D multi-sampled nonsampled format:Rgba32f
+              63:             TypePointer UniformConstant 62
+       64(i2DMS):     63(ptr) Variable UniformConstant
+              67:     12(int) Constant 1
+              73:     12(int) Constant 2
+              75:             TypeImage 12(int) 2D multi-sampled nonsampled format:R32i
+              76:             TypePointer UniformConstant 75
+      77(ii2DMS):     76(ptr) Variable UniformConstant
+              87:             TypeImage 18(int) 2D multi-sampled nonsampled format:R32ui
+              88:             TypePointer UniformConstant 87
+      89(ui2DMS):     88(ptr) Variable UniformConstant
+              99:             TypePointer Output 7(fvec4)
+   100(fragData):     99(ptr) Variable Output
+             102:             TypePointer Input 18(int)
+      103(value):    102(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+            9(v):      8(ptr) Variable Function
+          15(iv):     14(ptr) Variable Function
+          21(uv):     20(ptr) Variable Function
+                              Store 9(v) 11
+                              Store 15(iv) 17
+                              Store 21(uv) 23
+              27:          24 Load 26(i2D)
+              31:   28(ivec2) Load 30(ic2D)
+              32:    7(fvec4) ImageRead 27 31
+              33:    7(fvec4) Load 9(v)
+              34:    7(fvec4) FAdd 33 32
+                              Store 9(v) 34
+              35:          24 Load 26(i2D)
+              36:   28(ivec2) Load 30(ic2D)
+              37:    7(fvec4) Load 9(v)
+                              ImageWrite 35 36 37
+              41:          38 Load 40(ii2D)
+              42:   28(ivec2) Load 30(ic2D)
+              43:   13(ivec4) ImageRead 41 42 SignExtend 
+              44:    7(fvec4) ConvertSToF 43
+              45:    7(fvec4) Load 9(v)
+              46:    7(fvec4) FAdd 45 44
+                              Store 9(v) 46
+              47:          38 Load 40(ii2D)
+              48:   28(ivec2) Load 30(ic2D)
+              49:   13(ivec4) Load 15(iv)
+                              ImageWrite 47 48 49 SignExtend 
+              53:          50 Load 52(ui2D)
+              54:   28(ivec2) Load 30(ic2D)
+              55:   19(ivec4) ImageRead 53 54 ZeroExtend 
+              56:    7(fvec4) ConvertUToF 55
+              57:    7(fvec4) Load 9(v)
+              58:    7(fvec4) FAdd 57 56
+                              Store 9(v) 58
+              59:          50 Load 52(ui2D)
+              60:   28(ivec2) Load 30(ic2D)
+              61:   19(ivec4) Load 21(uv)
+                              ImageWrite 59 60 61 ZeroExtend 
+              65:          62 Load 64(i2DMS)
+              66:   28(ivec2) Load 30(ic2D)
+              68:    7(fvec4) ImageRead 65 66 Sample 67
+              69:    7(fvec4) Load 9(v)
+              70:    7(fvec4) FAdd 69 68
+                              Store 9(v) 70
+              71:          62 Load 64(i2DMS)
+              72:   28(ivec2) Load 30(ic2D)
+              74:    7(fvec4) Load 9(v)
+                              ImageWrite 71 72 74 Sample 73
+              78:          75 Load 77(ii2DMS)
+              79:   28(ivec2) Load 30(ic2D)
+              80:   13(ivec4) ImageRead 78 79 Sample SignExtend 67
+              81:    7(fvec4) ConvertSToF 80
+              82:    7(fvec4) Load 9(v)
+              83:    7(fvec4) FAdd 82 81
+                              Store 9(v) 83
+              84:          75 Load 77(ii2DMS)
+              85:   28(ivec2) Load 30(ic2D)
+              86:   13(ivec4) Load 15(iv)
+                              ImageWrite 84 85 86 Sample SignExtend 73
+              90:          87 Load 89(ui2DMS)
+              91:   28(ivec2) Load 30(ic2D)
+              92:   19(ivec4) ImageRead 90 91 Sample ZeroExtend 67
+              93:    7(fvec4) ConvertUToF 92
+              94:    7(fvec4) Load 9(v)
+              95:    7(fvec4) FAdd 94 93
+                              Store 9(v) 95
+              96:          87 Load 89(ui2DMS)
+              97:   28(ivec2) Load 30(ic2D)
+              98:   19(ivec4) Load 21(uv)
+                              ImageWrite 96 97 98 Sample ZeroExtend 73
+             101:    7(fvec4) Load 9(v)
+                              Store 100(fragData) 101
+                              Return
+                              FunctionEnd

+ 326 - 0
3rdparty/glslang/Test/baseResults/spv.1.4.sparseTexture.frag.out

@@ -0,0 +1,326 @@
+spv.1.4.sparseTexture.frag
+// Module Version 10400
+// Generated by (magic number): 80007
+// Id's are bound by 213
+
+                              Capability Shader
+                              Capability StorageImageMultisample
+                              Capability SparseResidency
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 29 33 42 46 59 63 84 96 119 133 149 152 159 162 177 181 189 206 208 212
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              SourceExtension  "GL_ARB_sparse_texture2"
+                              Name 4  "main"
+                              Name 8  "resident"
+                              Name 13  "texel"
+                              Name 18  "itexel"
+                              Name 23  "utexel"
+                              Name 29  "s2D"
+                              Name 33  "c2"
+                              Name 35  "ResType"
+                              Name 42  "tempReturn"
+                              Name 46  "is2D"
+                              Name 49  "tempArg"
+                              Name 50  "ResType"
+                              Name 59  "tempReturn"
+                              Name 63  "us2D"
+                              Name 66  "tempArg"
+                              Name 67  "ResType"
+                              Name 84  "tempReturn"
+                              Name 87  "tempArg"
+                              Name 96  "tempReturn"
+                              Name 99  "tempArg"
+                              Name 119  "tempReturn"
+                              Name 123  "tempArg"
+                              Name 133  "tempReturn"
+                              Name 137  "tempArg"
+                              Name 149  "i2D"
+                              Name 152  "ic2"
+                              Name 159  "tempReturn"
+                              Name 162  "ii2DMS"
+                              Name 166  "tempArg"
+                              Name 177  "ui3D"
+                              Name 181  "ic3"
+                              Name 189  "outColor"
+                              Name 206  "c3"
+                              Name 208  "c4"
+                              Name 212  "offsets"
+                              Decorate 29(s2D) DescriptorSet 0
+                              Decorate 29(s2D) Binding 0
+                              Decorate 46(is2D) DescriptorSet 0
+                              Decorate 46(is2D) Binding 0
+                              Decorate 63(us2D) DescriptorSet 0
+                              Decorate 63(us2D) Binding 0
+                              Decorate 149(i2D) DescriptorSet 0
+                              Decorate 149(i2D) Binding 0
+                              Decorate 152(ic2) Flat
+                              Decorate 162(ii2DMS) DescriptorSet 0
+                              Decorate 162(ii2DMS) Binding 0
+                              Decorate 177(ui3D) DescriptorSet 0
+                              Decorate 177(ui3D) Binding 0
+                              Decorate 181(ic3) Flat
+                              Decorate 212(offsets) Flat
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Function 6(int)
+               9:      6(int) Constant 0
+              10:             TypeFloat 32
+              11:             TypeVector 10(float) 4
+              12:             TypePointer Function 11(fvec4)
+              14:   10(float) Constant 0
+              15:   11(fvec4) ConstantComposite 14 14 14 14
+              16:             TypeVector 6(int) 4
+              17:             TypePointer Function 16(ivec4)
+              19:   16(ivec4) ConstantComposite 9 9 9 9
+              20:             TypeInt 32 0
+              21:             TypeVector 20(int) 4
+              22:             TypePointer Function 21(ivec4)
+              24:     20(int) Constant 0
+              25:   21(ivec4) ConstantComposite 24 24 24 24
+              26:             TypeImage 10(float) 2D sampled format:Unknown
+              27:             TypeSampledImage 26
+              28:             TypePointer UniformConstant 27
+         29(s2D):     28(ptr) Variable UniformConstant
+              31:             TypeVector 10(float) 2
+              32:             TypePointer Input 31(fvec2)
+          33(c2):     32(ptr) Variable Input
+     35(ResType):             TypeStruct 6(int) 11(fvec4)
+              41:             TypePointer Private 6(int)
+  42(tempReturn):     41(ptr) Variable Private
+              43:             TypeImage 6(int) 2D sampled format:Unknown
+              44:             TypeSampledImage 43
+              45:             TypePointer UniformConstant 44
+        46(is2D):     45(ptr) Variable UniformConstant
+     50(ResType):             TypeStruct 6(int) 16(ivec4)
+  59(tempReturn):     41(ptr) Variable Private
+              60:             TypeImage 20(int) 2D sampled format:Unknown
+              61:             TypeSampledImage 60
+              62:             TypePointer UniformConstant 61
+        63(us2D):     62(ptr) Variable UniformConstant
+     67(ResType):             TypeStruct 6(int) 21(ivec4)
+              78:   10(float) Constant 1073741824
+  84(tempReturn):     41(ptr) Variable Private
+  96(tempReturn):     41(ptr) Variable Private
+             110:             TypeVector 6(int) 2
+             112:      6(int) Constant 2
+ 119(tempReturn):     41(ptr) Variable Private
+ 133(tempReturn):     41(ptr) Variable Private
+             147:             TypeImage 10(float) 2D nonsampled format:Rgba32f
+             148:             TypePointer UniformConstant 147
+        149(i2D):    148(ptr) Variable UniformConstant
+             151:             TypePointer Input 110(ivec2)
+        152(ic2):    151(ptr) Variable Input
+ 159(tempReturn):     41(ptr) Variable Private
+             160:             TypeImage 6(int) 2D multi-sampled nonsampled format:Rgba32i
+             161:             TypePointer UniformConstant 160
+     162(ii2DMS):    161(ptr) Variable UniformConstant
+             165:      6(int) Constant 3
+             175:             TypeImage 20(int) 3D nonsampled format:Rgba32ui
+             176:             TypePointer UniformConstant 175
+       177(ui3D):    176(ptr) Variable UniformConstant
+             179:             TypeVector 6(int) 3
+             180:             TypePointer Input 179(ivec3)
+        181(ic3):    180(ptr) Variable Input
+             188:             TypePointer Output 11(fvec4)
+   189(outColor):    188(ptr) Variable Output
+             191:             TypeBool
+             204:             TypeVector 10(float) 3
+             205:             TypePointer Input 204(fvec3)
+         206(c3):    205(ptr) Variable Input
+             207:             TypePointer Input 11(fvec4)
+         208(c4):    207(ptr) Variable Input
+             209:     20(int) Constant 4
+             210:             TypeArray 110(ivec2) 209
+             211:             TypePointer Input 210
+    212(offsets):    211(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+     8(resident):      7(ptr) Variable Function
+       13(texel):     12(ptr) Variable Function
+      18(itexel):     17(ptr) Variable Function
+      23(utexel):     22(ptr) Variable Function
+     49(tempArg):     17(ptr) Variable Function
+     66(tempArg):     22(ptr) Variable Function
+     87(tempArg):     17(ptr) Variable Function
+     99(tempArg):     22(ptr) Variable Function
+    123(tempArg):     17(ptr) Variable Function
+    137(tempArg):     22(ptr) Variable Function
+    166(tempArg):     17(ptr) Variable Function
+             193:     12(ptr) Variable Function
+                              Store 8(resident) 9
+                              Store 13(texel) 15
+                              Store 18(itexel) 19
+                              Store 23(utexel) 25
+              30:          27 Load 29(s2D)
+              34:   31(fvec2) Load 33(c2)
+              36: 35(ResType) ImageSparseSampleImplicitLod 30 34
+              37:   11(fvec4) CompositeExtract 36 1
+                              Store 13(texel) 37
+              38:      6(int) CompositeExtract 36 0
+              39:      6(int) Load 8(resident)
+              40:      6(int) BitwiseOr 39 38
+                              Store 8(resident) 40
+              47:          44 Load 46(is2D)
+              48:   31(fvec2) Load 33(c2)
+              51: 50(ResType) ImageSparseSampleImplicitLod 47 48 SignExtend 
+              52:   16(ivec4) CompositeExtract 51 1
+                              Store 49(tempArg) 52
+              53:      6(int) CompositeExtract 51 0
+                              Store 42(tempReturn) 53
+              54:   16(ivec4) Load 49(tempArg)
+              55:   11(fvec4) ConvertSToF 54
+                              Store 13(texel) 55
+              56:      6(int) Load 42(tempReturn)
+              57:      6(int) Load 8(resident)
+              58:      6(int) BitwiseOr 57 56
+                              Store 8(resident) 58
+              64:          61 Load 63(us2D)
+              65:   31(fvec2) Load 33(c2)
+              68: 67(ResType) ImageSparseSampleImplicitLod 64 65 ZeroExtend 
+              69:   21(ivec4) CompositeExtract 68 1
+                              Store 66(tempArg) 69
+              70:      6(int) CompositeExtract 68 0
+                              Store 59(tempReturn) 70
+              71:   21(ivec4) Load 66(tempArg)
+              72:   11(fvec4) ConvertUToF 71
+                              Store 13(texel) 72
+              73:      6(int) Load 59(tempReturn)
+              74:      6(int) Load 8(resident)
+              75:      6(int) BitwiseOr 74 73
+                              Store 8(resident) 75
+              76:          27 Load 29(s2D)
+              77:   31(fvec2) Load 33(c2)
+              79: 35(ResType) ImageSparseSampleExplicitLod 76 77 Lod 78
+              80:   11(fvec4) CompositeExtract 79 1
+                              Store 13(texel) 80
+              81:      6(int) CompositeExtract 79 0
+              82:      6(int) Load 8(resident)
+              83:      6(int) BitwiseOr 82 81
+                              Store 8(resident) 83
+              85:          44 Load 46(is2D)
+              86:   31(fvec2) Load 33(c2)
+              88: 50(ResType) ImageSparseSampleExplicitLod 85 86 Lod SignExtend 78
+              89:   16(ivec4) CompositeExtract 88 1
+                              Store 87(tempArg) 89
+              90:      6(int) CompositeExtract 88 0
+                              Store 84(tempReturn) 90
+              91:   16(ivec4) Load 87(tempArg)
+              92:   11(fvec4) ConvertSToF 91
+                              Store 13(texel) 92
+              93:      6(int) Load 84(tempReturn)
+              94:      6(int) Load 8(resident)
+              95:      6(int) BitwiseOr 94 93
+                              Store 8(resident) 95
+              97:          61 Load 63(us2D)
+              98:   31(fvec2) Load 33(c2)
+             100: 67(ResType) ImageSparseSampleExplicitLod 97 98 Lod ZeroExtend 78
+             101:   21(ivec4) CompositeExtract 100 1
+                              Store 99(tempArg) 101
+             102:      6(int) CompositeExtract 100 0
+                              Store 96(tempReturn) 102
+             103:   21(ivec4) Load 99(tempArg)
+             104:   11(fvec4) ConvertUToF 103
+                              Store 13(texel) 104
+             105:      6(int) Load 96(tempReturn)
+             106:      6(int) Load 8(resident)
+             107:      6(int) BitwiseOr 106 105
+                              Store 8(resident) 107
+             108:          27 Load 29(s2D)
+             109:   31(fvec2) Load 33(c2)
+             111:  110(ivec2) ConvertFToS 109
+             113:          26 Image 108
+             114: 35(ResType) ImageSparseFetch 113 111 Lod 112
+             115:   11(fvec4) CompositeExtract 114 1
+                              Store 13(texel) 115
+             116:      6(int) CompositeExtract 114 0
+             117:      6(int) Load 8(resident)
+             118:      6(int) BitwiseOr 117 116
+                              Store 8(resident) 118
+             120:          44 Load 46(is2D)
+             121:   31(fvec2) Load 33(c2)
+             122:  110(ivec2) ConvertFToS 121
+             124:          43 Image 120
+             125: 50(ResType) ImageSparseFetch 124 122 Lod SignExtend 112
+             126:   16(ivec4) CompositeExtract 125 1
+                              Store 123(tempArg) 126
+             127:      6(int) CompositeExtract 125 0
+                              Store 119(tempReturn) 127
+             128:   16(ivec4) Load 123(tempArg)
+             129:   11(fvec4) ConvertSToF 128
+                              Store 13(texel) 129
+             130:      6(int) Load 119(tempReturn)
+             131:      6(int) Load 8(resident)
+             132:      6(int) BitwiseOr 131 130
+                              Store 8(resident) 132
+             134:          61 Load 63(us2D)
+             135:   31(fvec2) Load 33(c2)
+             136:  110(ivec2) ConvertFToS 135
+             138:          60 Image 134
+             139: 67(ResType) ImageSparseFetch 138 136 Lod ZeroExtend 112
+             140:   21(ivec4) CompositeExtract 139 1
+                              Store 137(tempArg) 140
+             141:      6(int) CompositeExtract 139 0
+                              Store 133(tempReturn) 141
+             142:   21(ivec4) Load 137(tempArg)
+             143:   11(fvec4) ConvertUToF 142
+                              Store 13(texel) 143
+             144:      6(int) Load 133(tempReturn)
+             145:      6(int) Load 8(resident)
+             146:      6(int) BitwiseOr 145 144
+                              Store 8(resident) 146
+             150:         147 Load 149(i2D)
+             153:  110(ivec2) Load 152(ic2)
+             154: 35(ResType) ImageSparseRead 150 153
+             155:   11(fvec4) CompositeExtract 154 1
+                              Store 13(texel) 155
+             156:      6(int) CompositeExtract 154 0
+             157:      6(int) Load 8(resident)
+             158:      6(int) BitwiseOr 157 156
+                              Store 8(resident) 158
+             163:         160 Load 162(ii2DMS)
+             164:  110(ivec2) Load 152(ic2)
+             167: 50(ResType) ImageSparseRead 163 164 Sample SignExtend 165
+             168:   16(ivec4) CompositeExtract 167 1
+                              Store 166(tempArg) 168
+             169:      6(int) CompositeExtract 167 0
+                              Store 159(tempReturn) 169
+             170:   16(ivec4) Load 166(tempArg)
+             171:   11(fvec4) ConvertSToF 170
+                              Store 13(texel) 171
+             172:      6(int) Load 159(tempReturn)
+             173:      6(int) Load 8(resident)
+             174:      6(int) BitwiseOr 173 172
+                              Store 8(resident) 174
+             178:         175 Load 177(ui3D)
+             182:  179(ivec3) Load 181(ic3)
+             183: 67(ResType) ImageSparseRead 178 182 ZeroExtend 
+             184:   21(ivec4) CompositeExtract 183 1
+                              Store 23(utexel) 184
+             185:      6(int) CompositeExtract 183 0
+             186:      6(int) Load 8(resident)
+             187:      6(int) BitwiseOr 186 185
+                              Store 8(resident) 187
+             190:      6(int) Load 8(resident)
+             192:   191(bool) ImageSparseTexelsResident 190
+                              SelectionMerge 195 None
+                              BranchConditional 192 194 197
+             194:               Label
+             196:   11(fvec4)   Load 13(texel)
+                                Store 193 196
+                                Branch 195
+             197:               Label
+             198:   16(ivec4)   Load 18(itexel)
+             199:   11(fvec4)   ConvertSToF 198
+             200:   21(ivec4)   Load 23(utexel)
+             201:   11(fvec4)   ConvertUToF 200
+             202:   11(fvec4)   FAdd 199 201
+                                Store 193 202
+                                Branch 195
+             195:             Label
+             203:   11(fvec4) Load 193
+                              Store 189(outColor) 203
+                              Return
+                              FunctionEnd

+ 115 - 0
3rdparty/glslang/Test/baseResults/spv.1.4.texture.frag.out

@@ -0,0 +1,115 @@
+spv.1.4.texture.frag
+// Module Version 10400
+// Generated by (magic number): 80007
+// Id's are bound by 79
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 15 19 28 40 51 54 76 78
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 9  "color"
+                              Name 15  "texSampler2D"
+                              Name 19  "coords2D"
+                              Name 28  "itexSampler2D"
+                              Name 40  "utexSampler2D"
+                              Name 51  "iCoords2D"
+                              Name 54  "iLod"
+                              Name 76  "t"
+                              Name 78  "color"
+                              Decorate 15(texSampler2D) DescriptorSet 0
+                              Decorate 15(texSampler2D) Binding 0
+                              Decorate 28(itexSampler2D) DescriptorSet 0
+                              Decorate 28(itexSampler2D) Binding 0
+                              Decorate 40(utexSampler2D) DescriptorSet 0
+                              Decorate 40(utexSampler2D) Binding 0
+                              Decorate 51(iCoords2D) Flat
+                              Decorate 54(iLod) Flat
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Function 7(fvec4)
+              10:    6(float) Constant 0
+              11:    7(fvec4) ConstantComposite 10 10 10 10
+              12:             TypeImage 6(float) 2D sampled format:Unknown
+              13:             TypeSampledImage 12
+              14:             TypePointer UniformConstant 13
+15(texSampler2D):     14(ptr) Variable UniformConstant
+              17:             TypeVector 6(float) 2
+              18:             TypePointer Input 17(fvec2)
+    19(coords2D):     18(ptr) Variable Input
+              24:             TypeInt 32 1
+              25:             TypeImage 24(int) 2D sampled format:Unknown
+              26:             TypeSampledImage 25
+              27:             TypePointer UniformConstant 26
+28(itexSampler2D):     27(ptr) Variable UniformConstant
+              31:             TypeVector 24(int) 4
+              36:             TypeInt 32 0
+              37:             TypeImage 36(int) 2D sampled format:Unknown
+              38:             TypeSampledImage 37
+              39:             TypePointer UniformConstant 38
+40(utexSampler2D):     39(ptr) Variable UniformConstant
+              43:             TypeVector 36(int) 4
+              49:             TypeVector 24(int) 2
+              50:             TypePointer Input 49(ivec2)
+   51(iCoords2D):     50(ptr) Variable Input
+              53:             TypePointer Input 24(int)
+        54(iLod):     53(ptr) Variable Input
+           76(t):     18(ptr) Variable Input
+              77:             TypePointer Output 7(fvec4)
+       78(color):     77(ptr) Variable Output
+         4(main):           2 Function None 3
+               5:             Label
+        9(color):      8(ptr) Variable Function
+                              Store 9(color) 11
+              16:          13 Load 15(texSampler2D)
+              20:   17(fvec2) Load 19(coords2D)
+              21:    7(fvec4) ImageSampleImplicitLod 16 20
+              22:    7(fvec4) Load 9(color)
+              23:    7(fvec4) FAdd 22 21
+                              Store 9(color) 23
+              29:          26 Load 28(itexSampler2D)
+              30:   17(fvec2) Load 19(coords2D)
+              32:   31(ivec4) ImageSampleImplicitLod 29 30 SignExtend 
+              33:    7(fvec4) ConvertSToF 32
+              34:    7(fvec4) Load 9(color)
+              35:    7(fvec4) FAdd 34 33
+                              Store 9(color) 35
+              41:          38 Load 40(utexSampler2D)
+              42:   17(fvec2) Load 19(coords2D)
+              44:   43(ivec4) ImageSampleImplicitLod 41 42 ZeroExtend 
+              45:    7(fvec4) ConvertUToF 44
+              46:    7(fvec4) Load 9(color)
+              47:    7(fvec4) FAdd 46 45
+                              Store 9(color) 47
+              48:          13 Load 15(texSampler2D)
+              52:   49(ivec2) Load 51(iCoords2D)
+              55:     24(int) Load 54(iLod)
+              56:          12 Image 48
+              57:    7(fvec4) ImageFetch 56 52 Lod 55
+              58:    7(fvec4) Load 9(color)
+              59:    7(fvec4) FAdd 58 57
+                              Store 9(color) 59
+              60:          26 Load 28(itexSampler2D)
+              61:   49(ivec2) Load 51(iCoords2D)
+              62:     24(int) Load 54(iLod)
+              63:          25 Image 60
+              64:   31(ivec4) ImageFetch 63 61 Lod SignExtend 62
+              65:    7(fvec4) ConvertSToF 64
+              66:    7(fvec4) Load 9(color)
+              67:    7(fvec4) FAdd 66 65
+                              Store 9(color) 67
+              68:          38 Load 40(utexSampler2D)
+              69:   49(ivec2) Load 51(iCoords2D)
+              70:     24(int) Load 54(iLod)
+              71:          37 Image 68
+              72:   43(ivec4) ImageFetch 71 69 Lod ZeroExtend 70
+              73:    7(fvec4) ConvertUToF 72
+              74:    7(fvec4) Load 9(color)
+              75:    7(fvec4) FAdd 74 73
+                              Store 9(color) 75
+                              Return
+                              FunctionEnd

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.8bitstorage-int.frag.out

@@ -4,7 +4,7 @@ spv.8bitstorage-int.frag
 // Id's are bound by 172
 
                               Capability Shader
-                              Capability CapabilityUniformAndStorageBuffer8BitAccess
+                              Capability UniformAndStorageBuffer8BitAccess
                               Extension  "SPV_KHR_8bit_storage"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.8bitstorage-ssbo.vert.out

@@ -4,7 +4,7 @@ spv.8bitstorage-ssbo.vert
 // Id's are bound by 28
 
                               Capability Shader
-                              Capability CapabilityUniformAndStorageBuffer8BitAccess
+                              Capability UniformAndStorageBuffer8BitAccess
                               Extension  "SPV_KHR_8bit_storage"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.8bitstorage-ubo.vert.out

@@ -4,7 +4,7 @@ spv.8bitstorage-ubo.vert
 // Id's are bound by 29
 
                               Capability Shader
-                              Capability CapabilityUniformAndStorageBuffer8BitAccess
+                              Capability UniformAndStorageBuffer8BitAccess
                               Extension  "SPV_KHR_8bit_storage"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.8bitstorage-uint.frag.out

@@ -4,7 +4,7 @@ spv.8bitstorage-uint.frag
 // Id's are bound by 173
 
                               Capability Shader
-                              Capability CapabilityUniformAndStorageBuffer8BitAccess
+                              Capability UniformAndStorageBuffer8BitAccess
                               Extension  "SPV_KHR_8bit_storage"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450

+ 140 - 0
3rdparty/glslang/Test/baseResults/spv.RayGenShaderArray.rgen.out

@@ -0,0 +1,140 @@
+spv.RayGenShaderArray.rgen
+// Module Version 10000
+// Generated by (magic number): 80007
+// Id's are bound by 89
+
+                              Capability ShaderNonUniformEXT
+                              Capability RuntimeDescriptorArrayEXT
+                              Capability RayTracingNV
+                              Extension  "SPV_EXT_descriptor_indexing"
+                              Extension  "SPV_NV_ray_tracing"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint RayGenerationNV 4  "main" 11 21
+                              Source GLSL 460
+                              SourceExtension  "GL_EXT_nonuniform_qualifier"
+                              SourceExtension  "GL_NV_ray_tracing"
+                              Name 4  "main"
+                              Name 8  "lx"
+                              Name 11  "gl_LaunchIDNV"
+                              Name 16  "ly"
+                              Name 20  "sx"
+                              Name 21  "gl_LaunchSizeNV"
+                              Name 24  "sy"
+                              Name 30  "accNV0"
+                              Name 34  "block"
+                              MemberName 34(block) 0  "dir"
+                              MemberName 34(block) 1  "origin"
+                              MemberName 34(block) 2  "i"
+                              Name 36  ""
+                              Name 60  "accNV1"
+                              Name 88  "payload"
+                              Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV
+                              Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
+                              Decorate 30(accNV0) DescriptorSet 0
+                              Decorate 30(accNV0) Binding 0
+                              MemberDecorate 34(block) 0 Offset 0
+                              MemberDecorate 34(block) 1 Offset 16
+                              MemberDecorate 34(block) 2 Offset 28
+                              Decorate 34(block) BufferBlock
+                              Decorate 60(accNV1) DescriptorSet 0
+                              Decorate 60(accNV1) Binding 1
+                              Decorate 75 DecorationNonUniformEXT
+                              Decorate 77 DecorationNonUniformEXT
+                              Decorate 88(payload) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 0
+               7:             TypePointer Function 6(int)
+               9:             TypeVector 6(int) 3
+              10:             TypePointer Input 9(ivec3)
+11(gl_LaunchIDNV):     10(ptr) Variable Input
+              12:      6(int) Constant 0
+              13:             TypePointer Input 6(int)
+              17:      6(int) Constant 1
+21(gl_LaunchSizeNV):     10(ptr) Variable Input
+              27:             TypeAccelerationStructureNV
+              28:             TypeRuntimeArray 27
+              29:             TypePointer UniformConstant 28
+      30(accNV0):     29(ptr) Variable UniformConstant
+              31:             TypeFloat 32
+              32:             TypeVector 31(float) 3
+              33:             TypeInt 32 1
+       34(block):             TypeStruct 32(fvec3) 32(fvec3) 33(int)
+              35:             TypePointer ShaderRecordBufferNV 34(block)
+              36:     35(ptr) Variable ShaderRecordBufferNV
+              37:     33(int) Constant 2
+              38:             TypePointer ShaderRecordBufferNV 33(int)
+              41:             TypePointer UniformConstant 27
+              48:     33(int) Constant 1
+              49:             TypePointer ShaderRecordBufferNV 32(fvec3)
+              52:   31(float) Constant 1056964608
+              53:     33(int) Constant 0
+              56:   31(float) Constant 1061158912
+              57:      6(int) Constant 2
+              58:             TypeArray 27 57
+              59:             TypePointer UniformConstant 58
+      60(accNV1):     59(ptr) Variable UniformConstant
+              86:             TypeVector 31(float) 4
+              87:             TypePointer RayPayloadNV 86(fvec4)
+     88(payload):     87(ptr) Variable RayPayloadNV
+         4(main):           2 Function None 3
+               5:             Label
+           8(lx):      7(ptr) Variable Function
+          16(ly):      7(ptr) Variable Function
+          20(sx):      7(ptr) Variable Function
+          24(sy):      7(ptr) Variable Function
+              14:     13(ptr) AccessChain 11(gl_LaunchIDNV) 12
+              15:      6(int) Load 14
+                              Store 8(lx) 15
+              18:     13(ptr) AccessChain 11(gl_LaunchIDNV) 17
+              19:      6(int) Load 18
+                              Store 16(ly) 19
+              22:     13(ptr) AccessChain 21(gl_LaunchSizeNV) 12
+              23:      6(int) Load 22
+                              Store 20(sx) 23
+              25:     13(ptr) AccessChain 21(gl_LaunchSizeNV) 17
+              26:      6(int) Load 25
+                              Store 24(sy) 26
+              39:     38(ptr) AccessChain 36 37
+              40:     33(int) Load 39
+              42:     41(ptr) AccessChain 30(accNV0) 40
+              43:          27 Load 42
+              44:      6(int) Load 8(lx)
+              45:      6(int) Load 16(ly)
+              46:      6(int) Load 20(sx)
+              47:      6(int) Load 24(sy)
+              50:     49(ptr) AccessChain 36 48
+              51:   32(fvec3) Load 50
+              54:     49(ptr) AccessChain 36 53
+              55:   32(fvec3) Load 54
+                              TraceNV 43 44 45 46 47 12 51 52 55 56 48
+              61:     38(ptr) AccessChain 36 37
+              62:     33(int) Load 61
+              63:     41(ptr) AccessChain 60(accNV1) 62
+              64:          27 Load 63
+              65:      6(int) Load 8(lx)
+              66:      6(int) Load 16(ly)
+              67:      6(int) Load 20(sx)
+              68:      6(int) Load 24(sy)
+              69:     49(ptr) AccessChain 36 48
+              70:   32(fvec3) Load 69
+              71:     49(ptr) AccessChain 36 53
+              72:   32(fvec3) Load 71
+                              TraceNV 64 65 66 67 68 12 70 52 72 56 48
+              73:     38(ptr) AccessChain 36 37
+              74:     33(int) Load 73
+              75:     33(int) CopyObject 74
+              76:     41(ptr) AccessChain 30(accNV0) 75
+              77:          27 Load 76
+              78:      6(int) Load 8(lx)
+              79:      6(int) Load 16(ly)
+              80:      6(int) Load 20(sx)
+              81:      6(int) Load 24(sy)
+              82:     49(ptr) AccessChain 36 48
+              83:   32(fvec3) Load 82
+              84:     49(ptr) AccessChain 36 53
+              85:   32(fvec3) Load 84
+                              TraceNV 77 78 79 80 81 12 83 52 85 56 48
+                              Return
+                              FunctionEnd

+ 2 - 2
3rdparty/glslang/Test/baseResults/spv.bufferhandle1.frag.out

@@ -4,8 +4,8 @@ spv.bufferhandle1.frag
 // Id's are bound by 52
 
                               Capability Shader
-                              Capability CapabilityVulkanMemoryModelKHR
-                              Capability CapabilityPhysicalStorageBufferAddressesEXT
+                              Capability VulkanMemoryModelKHR
+                              Capability PhysicalStorageBufferAddressesEXT
                               Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_vulkan_memory_model"

+ 2 - 2
3rdparty/glslang/Test/baseResults/spv.bufferhandle10.frag.out

@@ -4,8 +4,8 @@ spv.bufferhandle10.frag
 // Id's are bound by 40
 
                               Capability Shader
-                              Capability CapabilityVulkanMemoryModelKHR
-                              Capability CapabilityPhysicalStorageBufferAddressesEXT
+                              Capability VulkanMemoryModelKHR
+                              Capability PhysicalStorageBufferAddressesEXT
                               Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                               Extension  "SPV_KHR_vulkan_memory_model"

+ 2 - 2
3rdparty/glslang/Test/baseResults/spv.bufferhandle11.frag.out

@@ -7,8 +7,8 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to
 // Id's are bound by 60
 
                               Capability Shader
-                              Capability CapabilityStorageBuffer8BitAccess
-                              Capability CapabilityPhysicalStorageBufferAddressesEXT
+                              Capability StorageBuffer8BitAccess
+                              Capability PhysicalStorageBufferAddressesEXT
                               Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_8bit_storage"
                               Extension  "SPV_KHR_storage_buffer_storage_class"

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle12.frag.out

@@ -8,7 +8,7 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to
 
                               Capability Shader
                               Capability StorageUniformBufferBlock16
-                              Capability CapabilityPhysicalStorageBufferAddressesEXT
+                              Capability PhysicalStorageBufferAddressesEXT
                               Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_16bit_storage"
                               Extension  "SPV_KHR_storage_buffer_storage_class"

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle13.frag.out

@@ -4,7 +4,7 @@ spv.bufferhandle13.frag
 // Id's are bound by 58
 
                               Capability Shader
-                              Capability CapabilityPhysicalStorageBufferAddressesEXT
+                              Capability PhysicalStorageBufferAddressesEXT
                               Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle14.frag.out

@@ -4,7 +4,7 @@ spv.bufferhandle14.frag
 // Id's are bound by 46
 
                               Capability Shader
-                              Capability CapabilityPhysicalStorageBufferAddressesEXT
+                              Capability PhysicalStorageBufferAddressesEXT
                               Extension  "SPV_EXT_physical_storage_buffer"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle15.frag.out

@@ -7,7 +7,7 @@ WARNING: 0:16: '' : all default precisions are highp; use precision statements t
 // Id's are bound by 60
 
                               Capability Shader
-                              Capability CapabilityPhysicalStorageBufferAddressesEXT
+                              Capability PhysicalStorageBufferAddressesEXT
                               Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle16.frag.out

@@ -5,7 +5,7 @@ spv.bufferhandle16.frag
 
                               Capability Shader
                               Capability Int64
-                              Capability CapabilityPhysicalStorageBufferAddressesEXT
+                              Capability PhysicalStorageBufferAddressesEXT
                               Extension  "SPV_EXT_physical_storage_buffer"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450

+ 274 - 0
3rdparty/glslang/Test/baseResults/spv.bufferhandle18.frag.out

@@ -0,0 +1,274 @@
+spv.bufferhandle18.frag
+// Module Version 10000
+// Generated by (magic number): 80007
+// Id's are bound by 196
+
+                              Capability Shader
+                              Capability Int64
+                              Capability PhysicalStorageBufferAddressesEXT
+                              Extension  "SPV_EXT_physical_storage_buffer"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel PhysicalStorageBuffer64EXT GLSL450
+                              EntryPoint Fragment 4  "main"
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              SourceExtension  "GL_EXT_buffer_reference"
+                              SourceExtension  "GL_EXT_buffer_reference2"
+                              SourceExtension  "GL_EXT_scalar_block_layout"
+                              SourceExtension  "GL_EXT_shader_explicit_arithmetic_types_int64"
+                              Name 4  "main"
+                              Name 9  "T1"
+                              MemberName 9(T1) 0  "x"
+                              MemberName 9(T1) 1  "y"
+                              Name 11  "a"
+                              Name 15  "b"
+                              Name 18  "c"
+                              Name 24  "d"
+                              Name 26  "e"
+                              Name 29  "f"
+                              Name 59  "arr"
+                              Name 71  "i"
+                              Name 130  "j"
+                              Name 153  "k"
+                              Name 160  "x"
+                              Name 171  "y"
+                              Name 178  "T2"
+                              MemberName 178(T2) 0  "x"
+                              Name 180  "m"
+                              Name 190  "x"
+                              Name 195  "buf"
+                              MemberDecorate 9(T1) 0 Offset 0
+                              MemberDecorate 9(T1) 1 Offset 4
+                              Decorate 9(T1) Block
+                              Decorate 11(a) DecorationAliasedPointerEXT
+                              Decorate 15(b) DecorationAliasedPointerEXT
+                              Decorate 18(c) DecorationAliasedPointerEXT
+                              Decorate 24(d) DecorationAliasedPointerEXT
+                              Decorate 26(e) DecorationAliasedPointerEXT
+                              Decorate 29(f) DecorationAliasedPointerEXT
+                              Decorate 59(arr) DecorationAliasedPointerEXT
+                              Decorate 130(j) DecorationAliasedPointerEXT
+                              Decorate 153(k) DecorationAliasedPointerEXT
+                              MemberDecorate 178(T2) 0 Offset 0
+                              Decorate 178(T2) Block
+                              Decorate 180(m) DecorationAliasedPointerEXT
+               2:             TypeVoid
+               3:             TypeFunction 2
+                              TypeForwardPointer 6 PhysicalStorageBufferEXT
+               7:             TypeInt 32 1
+               8:             TypeInt 32 0
+           9(T1):             TypeStruct 7(int) 8(int)
+               6:             TypePointer PhysicalStorageBufferEXT 9(T1)
+              10:             TypePointer Function 6(ptr)
+              12:             TypeInt 64 0
+              13: 12(int64_t) Constant 4 0
+              16: 12(int64_t) Constant 5 0
+              19:             TypeBool
+              20:    19(bool) ConstantTrue
+              27: 12(int64_t) Constant 6 0
+              31:      7(int) Constant 1
+              32:             TypePointer PhysicalStorageBufferEXT 8(int)
+              35:      8(int) Constant 0
+              37: 12(int64_t) Constant 8 0
+              39: 12(int64_t) Constant 9 0
+              44: 12(int64_t) Constant 24 0
+              47:      7(int) Constant 0
+              48:             TypePointer PhysicalStorageBufferEXT 7(int)
+              52: 12(int64_t) Constant 40 0
+              56:      8(int) Constant 2
+              57:             TypeArray 6(ptr) 56
+              58:             TypePointer Function 57
+              66: 12(int64_t) Constant 56 0
+              70:             TypePointer Function 7(int)
+              77:             TypeInt 64 1
+             137: 12(int64_t) Constant 16 0
+             146: 12(int64_t) Constant 32 0
+             156: 12(int64_t) Constant 48 0
+             159:             TypePointer Function 77(int64_t)
+             168: 77(int64_t) Constant 8 0
+             170:             TypePointer Function 12(int64_t)
+             174: 12(int64_t) Constant 4294967288 4294967295
+                              TypeForwardPointer 177 PhysicalStorageBufferEXT
+         178(T2):             TypeStruct 7(int)
+             177:             TypePointer PhysicalStorageBufferEXT 178(T2)
+             179:             TypePointer Function 177(ptr)
+             183: 12(int64_t) Constant 64 0
+             186:      7(int) Constant 3
+             187:      8(int) Constant 3
+             188:             TypeArray 7(int) 187
+             189:             TypePointer Private 188
+          190(x):    189(ptr) Variable Private
+             191: 12(int64_t) Constant 10 0
+             192:      8(int) Constant 8
+             193:             TypeArray 8(int) 192
+             194:             TypePointer Private 193
+        195(buf):    194(ptr) Variable Private
+         4(main):           2 Function None 3
+               5:             Label
+           11(a):     10(ptr) Variable Function
+           15(b):     10(ptr) Variable Function
+           18(c):     10(ptr) Variable Function
+           24(d):     10(ptr) Variable Function
+           26(e):     10(ptr) Variable Function
+           29(f):     10(ptr) Variable Function
+         59(arr):     58(ptr) Variable Function
+           71(i):     70(ptr) Variable Function
+          130(j):     10(ptr) Variable Function
+          153(k):     10(ptr) Variable Function
+          160(x):    159(ptr) Variable Function
+          171(y):    170(ptr) Variable Function
+          180(m):    179(ptr) Variable Function
+              14:      6(ptr) Bitcast 13
+                              Store 11(a) 14
+              17:      6(ptr) Bitcast 16
+                              Store 15(b) 17
+              21:      6(ptr) Load 11(a)
+              22:      6(ptr) Load 15(b)
+              23:      6(ptr) Select 20 21 22
+                              Store 18(c) 23
+              25:      6(ptr) Load 15(b)
+                              Store 24(d) 25
+              28:      6(ptr) Bitcast 27
+                              Store 26(e) 28
+              30:      6(ptr) Load 11(a)
+              33:     32(ptr) AccessChain 30 31
+              34:      8(int) Load 33 Aligned 4
+              36:    19(bool) INotEqual 34 35
+              38:      6(ptr) Bitcast 37
+              40:      6(ptr) Bitcast 39
+              41:      6(ptr) Select 36 38 40
+                              Store 29(f) 41
+              42:      6(ptr) Load 29(f)
+              43: 12(int64_t) ConvertPtrToU 42
+              45: 12(int64_t) IAdd 43 44
+              46:      6(ptr) ConvertUToPtr 45
+              49:     48(ptr) AccessChain 46 47
+                              Store 49 31 Aligned 8
+              50:      6(ptr) Load 29(f)
+              51: 12(int64_t) ConvertPtrToU 50
+              53: 12(int64_t) IAdd 51 52
+              54:      6(ptr) ConvertUToPtr 53
+              55:     48(ptr) AccessChain 54 47
+                              Store 55 31 Aligned 8
+              60:      6(ptr) Load 11(a)
+              61:      6(ptr) Load 29(f)
+              62:          57 CompositeConstruct 60 61
+                              Store 59(arr) 62
+              63:     10(ptr) AccessChain 59(arr) 31
+              64:      6(ptr) Load 63
+              65: 12(int64_t) ConvertPtrToU 64
+              67: 12(int64_t) IAdd 65 66
+              68:      6(ptr) ConvertUToPtr 67
+              69:     48(ptr) AccessChain 68 47
+                              Store 69 31 Aligned 8
+              72:      7(int) Load 71(i)
+              73:     10(ptr) AccessChain 59(arr) 72
+              74:      6(ptr) Load 73
+              75: 12(int64_t) ConvertPtrToU 74
+              76:      7(int) Load 71(i)
+              78: 77(int64_t) SConvert 76
+              79: 12(int64_t) Bitcast 78
+              80: 12(int64_t) IMul 79 37
+              81: 12(int64_t) IAdd 75 80
+              82:      6(ptr) ConvertUToPtr 81
+              83:     48(ptr) AccessChain 82 47
+                              Store 83 31 Aligned 8
+              84:      7(int) Load 71(i)
+              85:     10(ptr) AccessChain 59(arr) 84
+              86:      6(ptr) Load 85
+              87: 12(int64_t) ConvertPtrToU 86
+              88:      7(int) Load 71(i)
+              89: 77(int64_t) SConvert 88
+              90: 12(int64_t) Bitcast 89
+              91: 12(int64_t) IMul 90 37
+              92: 12(int64_t) IAdd 87 91
+              93:      6(ptr) ConvertUToPtr 92
+              94: 12(int64_t) ConvertPtrToU 93
+              95:      7(int) Load 71(i)
+              96: 77(int64_t) SConvert 95
+              97: 12(int64_t) Bitcast 96
+              98: 12(int64_t) IMul 97 37
+              99: 12(int64_t) IAdd 94 98
+             100:      6(ptr) ConvertUToPtr 99
+             101: 12(int64_t) ConvertPtrToU 100
+             102:      7(int) Load 71(i)
+             103: 77(int64_t) SConvert 102
+             104: 12(int64_t) Bitcast 103
+             105: 12(int64_t) IMul 104 37
+             106: 12(int64_t) IAdd 101 105
+             107:      6(ptr) ConvertUToPtr 106
+             108: 12(int64_t) ConvertPtrToU 107
+             109:      7(int) Load 71(i)
+             110: 77(int64_t) SConvert 109
+             111: 12(int64_t) Bitcast 110
+             112: 12(int64_t) IMul 111 37
+             113: 12(int64_t) IAdd 108 112
+             114:      6(ptr) ConvertUToPtr 113
+             115: 12(int64_t) ConvertPtrToU 114
+             116:      7(int) Load 71(i)
+             117: 77(int64_t) SConvert 116
+             118: 12(int64_t) Bitcast 117
+             119: 12(int64_t) IMul 118 37
+             120: 12(int64_t) IAdd 115 119
+             121:      6(ptr) ConvertUToPtr 120
+             122: 12(int64_t) ConvertPtrToU 121
+             123:      7(int) Load 71(i)
+             124: 77(int64_t) SConvert 123
+             125: 12(int64_t) Bitcast 124
+             126: 12(int64_t) IMul 125 37
+             127: 12(int64_t) IAdd 122 126
+             128:      6(ptr) ConvertUToPtr 127
+             129:     48(ptr) AccessChain 128 47
+                              Store 129 31 Aligned 8
+             131:      6(ptr) Load 130(j)
+             132: 12(int64_t) ConvertPtrToU 131
+             133: 12(int64_t) IAdd 132 37
+             134:      6(ptr) ConvertUToPtr 133
+                              Store 130(j) 134
+             135:      6(ptr) Load 130(j)
+             136: 12(int64_t) ConvertPtrToU 135
+             138: 12(int64_t) ISub 136 137
+             139:      6(ptr) ConvertUToPtr 138
+                              Store 130(j) 139
+             140:      6(ptr) Load 130(j)
+             141: 12(int64_t) ConvertPtrToU 140
+             142: 12(int64_t) IAdd 141 44
+             143:      6(ptr) ConvertUToPtr 142
+                              Store 130(j) 143
+             144:      6(ptr) Load 130(j)
+             145: 12(int64_t) ConvertPtrToU 144
+             147: 12(int64_t) ISub 145 146
+             148:      6(ptr) ConvertUToPtr 147
+                              Store 130(j) 148
+             149:      6(ptr) Load 130(j)
+             150: 12(int64_t) ConvertPtrToU 149
+             151: 12(int64_t) IAdd 52 150
+             152:      6(ptr) ConvertUToPtr 151
+                              Store 130(j) 152
+             154:      6(ptr) Load 130(j)
+             155: 12(int64_t) ConvertPtrToU 154
+             157: 12(int64_t) IAdd 155 156
+             158:      6(ptr) ConvertUToPtr 157
+                              Store 153(k) 158
+             161:      6(ptr) Load 153(k)
+             162: 12(int64_t) ConvertPtrToU 161
+             163: 77(int64_t) Bitcast 162
+             164:      6(ptr) Load 130(j)
+             165: 12(int64_t) ConvertPtrToU 164
+             166: 77(int64_t) Bitcast 165
+             167: 77(int64_t) ISub 163 166
+             169: 77(int64_t) SDiv 167 168
+                              Store 160(x) 169
+                              Store 171(y) 37
+             172:      6(ptr) Load 153(k)
+             173: 12(int64_t) ConvertPtrToU 172
+             175: 12(int64_t) IAdd 173 174
+             176:      6(ptr) ConvertUToPtr 175
+                              Store 153(k) 176
+             181:    177(ptr) Load 180(m)
+             182: 12(int64_t) ConvertPtrToU 181
+             184: 12(int64_t) IAdd 182 183
+             185:    177(ptr) ConvertUToPtr 184
+                              Store 180(m) 185
+                              Return
+                              FunctionEnd

+ 17 - 0
3rdparty/glslang/Test/baseResults/spv.bufferhandle19_Errors.frag.out

@@ -0,0 +1,17 @@
+spv.bufferhandle19_Errors.frag
+ERROR: 0:18: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp reference' and a right operand of type ' const int' (or there is no acceptable conversion)
+ERROR: 0:19: '-' :  wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp reference' and a right operand of type ' const int' (or there is no acceptable conversion)
+ERROR: 0:20: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type ' const int' and a right operand of type ' temp reference' (or there is no acceptable conversion)
+ERROR: 0:21: '-' :  wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp reference' and a right operand of type ' temp reference' (or there is no acceptable conversion)
+ERROR: 0:22: 'assign' :  cannot convert from ' const int' to ' temp reference'
+ERROR: 0:23: 'assign' :  cannot convert from ' const int' to ' temp reference'
+ERROR: 0:24: 'assign' :  cannot convert from ' temp reference' to ' temp reference'
+ERROR: 0:25: 'assign' :  cannot convert from ' temp reference' to ' temp reference'
+ERROR: 0:28: 'assign' :  cannot convert from ' temp reference' to ' temp reference'
+ERROR: 0:29: 'assign' :  cannot convert from ' temp reference' to ' temp reference'
+ERROR: 0:30: '+' :  wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp reference' and a right operand of type ' temp reference' (or there is no acceptable conversion)
+ERROR: 0:31: '-' :  wrong operand types: no operation '-' exists that takes a left-hand operand of type ' const int' and a right operand of type ' temp reference' (or there is no acceptable conversion)
+ERROR: 12 compilation errors.  No code generated.
+
+
+SPIR-V is not generated for failed compile or link

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle2.frag.out

@@ -4,7 +4,7 @@ spv.bufferhandle2.frag
 // Id's are bound by 45
 
                               Capability Shader
-                              Capability CapabilityPhysicalStorageBufferAddressesEXT
+                              Capability PhysicalStorageBufferAddressesEXT
                               Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle3.frag.out

@@ -4,7 +4,7 @@ spv.bufferhandle3.frag
 // Id's are bound by 50
 
                               Capability Shader
-                              Capability CapabilityPhysicalStorageBufferAddressesEXT
+                              Capability PhysicalStorageBufferAddressesEXT
                               Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle4.frag.out

@@ -4,7 +4,7 @@ spv.bufferhandle4.frag
 // Id's are bound by 61
 
                               Capability Shader
-                              Capability CapabilityPhysicalStorageBufferAddressesEXT
+                              Capability PhysicalStorageBufferAddressesEXT
                               Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle5.frag.out

@@ -4,7 +4,7 @@ spv.bufferhandle5.frag
 // Id's are bound by 22
 
                               Capability Shader
-                              Capability CapabilityPhysicalStorageBufferAddressesEXT
+                              Capability PhysicalStorageBufferAddressesEXT
                               Extension  "SPV_EXT_physical_storage_buffer"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel PhysicalStorageBuffer64EXT GLSL450

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle6.frag.out

@@ -4,7 +4,7 @@ spv.bufferhandle6.frag
 // Id's are bound by 165
 
                               Capability Shader
-                              Capability CapabilityPhysicalStorageBufferAddressesEXT
+                              Capability PhysicalStorageBufferAddressesEXT
                               Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle7.frag.out

@@ -4,7 +4,7 @@ spv.bufferhandle7.frag
 // Id's are bound by 24
 
                               Capability Shader
-                              Capability CapabilityPhysicalStorageBufferAddressesEXT
+                              Capability PhysicalStorageBufferAddressesEXT
                               Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle8.frag.out

@@ -4,7 +4,7 @@ spv.bufferhandle8.frag
 // Id's are bound by 27
 
                               Capability Shader
-                              Capability CapabilityPhysicalStorageBufferAddressesEXT
+                              Capability PhysicalStorageBufferAddressesEXT
                               Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"

+ 1 - 1
3rdparty/glslang/Test/baseResults/spv.bufferhandle9.frag.out

@@ -5,7 +5,7 @@ spv.bufferhandle9.frag
 
                               Capability Shader
                               Capability Int64
-                              Capability CapabilityPhysicalStorageBufferAddressesEXT
+                              Capability PhysicalStorageBufferAddressesEXT
                               Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_storage_buffer_storage_class"
                1:             ExtInstImport  "GLSL.std.450"

+ 3 - 3
3rdparty/glslang/Test/baseResults/spv.controlFlowAttributes.frag.out

@@ -1,7 +1,7 @@
 spv.controlFlowAttributes.frag
-WARNING: 0:20: '' : attribute with arguments not recognized, skipping 
-WARNING: 0:21: '' : attribute with arguments not recognized, skipping 
-WARNING: 0:22: '' : attribute with arguments not recognized, skipping 
+WARNING: 0:20: 'unroll' : expected no arguments 
+WARNING: 0:21: 'dont_unroll' : expected no arguments 
+WARNING: 0:22: 'dependency_infinite' : expected no arguments 
 WARNING: 0:23: 'dependency_length' : expected a single integer argument 
 WARNING: 0:24: '' : attribute with arguments not recognized, skipping 
 WARNING: 0:25: '' : attribute with arguments not recognized, skipping 

+ 3 - 3
3rdparty/glslang/Test/baseResults/spv.coopmat.comp.out

@@ -6,9 +6,9 @@ spv.coopmat.comp
                               Capability Shader
                               Capability Float16
                               Capability StorageUniformBufferBlock16
-                              Capability CapabilityVulkanMemoryModelKHR
-                              Capability CapabilityPhysicalStorageBufferAddressesEXT
-                              Capability CapabilityCooperativeMatrixNV
+                              Capability VulkanMemoryModelKHR
+                              Capability PhysicalStorageBufferAddressesEXT
+                              Capability CooperativeMatrixNV
                               Extension  "SPV_EXT_physical_storage_buffer"
                               Extension  "SPV_KHR_16bit_storage"
                               Extension  "SPV_KHR_storage_buffer_storage_class"

+ 56 - 0
3rdparty/glslang/Test/baseResults/spv.fsi.frag.out

@@ -0,0 +1,56 @@
+spv.fsi.frag
+// Module Version 10000
+// Generated by (magic number): 80007
+// Id's are bound by 24
+
+                              Capability Shader
+                              Capability CapabilityFragmentShaderSampleInterlockEXT
+                              Extension  "SPV_EXT_fragment_shader_interlock"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main"
+                              ExecutionMode 4 OriginUpperLeft
+                              ExecutionMode 4 SampleInterlockOrderedEXT
+                              Source GLSL 450
+                              SourceExtension  "GL_ARB_fragment_shader_interlock"
+                              Name 4  "main"
+                              Name 7  "B1"
+                              MemberName 7(B1) 0  "x"
+                              Name 9  "b1"
+                              Name 17  "im"
+                              MemberDecorate 7(B1) 0 Coherent
+                              MemberDecorate 7(B1) 0 Offset 0
+                              Decorate 7(B1) BufferBlock
+                              Decorate 9(b1) DescriptorSet 0
+                              Decorate 9(b1) Binding 0
+                              Decorate 17(im) DescriptorSet 0
+                              Decorate 17(im) Binding 1
+                              Decorate 17(im) Coherent
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+           7(B1):             TypeStruct 6(int)
+               8:             TypePointer Uniform 7(B1)
+           9(b1):      8(ptr) Variable Uniform
+              10:      6(int) Constant 0
+              11:      6(int) Constant 1
+              12:             TypePointer Uniform 6(int)
+              14:             TypeFloat 32
+              15:             TypeImage 14(float) 2D nonsampled format:Rgba32f
+              16:             TypePointer UniformConstant 15
+          17(im):     16(ptr) Variable UniformConstant
+              19:             TypeVector 6(int) 2
+              20:   19(ivec2) ConstantComposite 10 10
+              21:             TypeVector 14(float) 4
+              22:   14(float) Constant 0
+              23:   21(fvec4) ConstantComposite 22 22 22 22
+         4(main):           2 Function None 3
+               5:             Label
+                              BeginInvocationInterlockEXT
+              13:     12(ptr) AccessChain 9(b1) 10
+                              Store 13 11
+              18:          15 Load 17(im)
+                              ImageWrite 18 20 23
+                              EndInvocationInterlockEXT
+                              Return
+                              FunctionEnd

+ 14 - 0
3rdparty/glslang/Test/baseResults/spv.fsi_Error.frag.out

@@ -0,0 +1,14 @@
+spv.fsi_Error.frag
+ERROR: 0:4: 'pixel_interlock_ordered' : can only apply to 'in' 
+ERROR: 0:7: 'pixel_interlock_unordered' : cannot change previously set fragment shader interlock ordering 
+ERROR: 0:11: '' : beginInvocationInterlockARB() must be in main() 
+ERROR: 0:12: '' : endInvocationInterlockARB() must be in main() 
+ERROR: 0:17: '' : endInvocationInterlockARB() must only be called once 
+ERROR: 0:18: '' : beginInvocationInterlockARB() must only be called once 
+ERROR: 0:18: '' : beginInvocationInterlockARB() must be called before endInvocationInterlockARB() 
+ERROR: 0:22: '' : endInvocationInterlockARB() cannot be placed after a return from main() 
+ERROR: 0:22: '' : endInvocationInterlockARB() must only be called once 
+ERROR: 9 compilation errors.  No code generated.
+
+
+SPIR-V is not generated for failed compile or link

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov