From b1f7affe94ea108de7e38ee764f855a2130da398 Mon Sep 17 00:00:00 2001 From: Sven van Haastregt Date: Tue, 6 Feb 2024 15:20:16 +0000 Subject: [PATCH] Add GL_KHR_shader_subgroup_rotate support Co-authored-by: Neil Hickey Co-authored-by: Stuart Brady Signed-off-by: Sven van Haastregt --- SPIRV/GLSL.ext.KHR.h | 2 + SPIRV/GlslangToSpv.cpp | 11 +- SPIRV/doc.cpp | 9 + .../glsl.450.subgroupRotate.comp.out | 2177 +++++++++++++++++ .../glsl.es320.subgroupRotate.comp.out | 1833 ++++++++++++++ .../spv.subgroupExtendedTypesRotate.comp.out | 711 ++++++ ...pv.subgroupExtendedTypesRotateNeg.comp.out | 61 + Test/baseResults/spv.subgroupRotate.comp.out | 528 ++++ Test/glsl.450.subgroupRotate.comp | 73 + Test/glsl.es320.subgroupRotate.comp | 62 + Test/spv.subgroupExtendedTypesRotate.comp | 100 + Test/spv.subgroupExtendedTypesRotateNeg.comp | 100 + Test/spv.subgroupRotate.comp | 73 + glslang/Include/intermediate.h | 4 +- glslang/MachineIndependent/Initialize.cpp | 8 +- glslang/MachineIndependent/Versions.cpp | 3 +- glslang/MachineIndependent/Versions.h | 3 +- glslang/MachineIndependent/intermOut.cpp | 6 +- gtests/AST.FromFile.cpp | 3 + gtests/Spv.FromFile.cpp | 5 +- 20 files changed, 5765 insertions(+), 7 deletions(-) create mode 100644 Test/baseResults/glsl.450.subgroupRotate.comp.out create mode 100644 Test/baseResults/glsl.es320.subgroupRotate.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesRotate.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesRotateNeg.comp.out create mode 100644 Test/baseResults/spv.subgroupRotate.comp.out create mode 100644 Test/glsl.450.subgroupRotate.comp create mode 100644 Test/glsl.es320.subgroupRotate.comp create mode 100644 Test/spv.subgroupExtendedTypesRotate.comp create mode 100644 Test/spv.subgroupExtendedTypesRotateNeg.comp create mode 100644 Test/spv.subgroupRotate.comp diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h index 83ca83f5..b72aeaf9 100644 --- a/SPIRV/GLSL.ext.KHR.h +++ b/SPIRV/GLSL.ext.KHR.h @@ -1,5 +1,6 @@ /* ** Copyright (c) 2014-2020 The Khronos Group Inc. +** Copyright (C) 2022-2024 Arm Limited. ** Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. ** ** Permission is hereby granted, free of charge, to any person obtaining a copy @@ -58,5 +59,6 @@ static const char* const E_SPV_AMD_shader_early_and_late_fragment_tests = "SPV_A static const char* const E_SPV_KHR_ray_tracing_position_fetch = "SPV_KHR_ray_tracing_position_fetch"; static const char* const E_SPV_KHR_cooperative_matrix = "SPV_KHR_cooperative_matrix"; static const char* const E_SPV_KHR_maximal_reconvergence = "SPV_KHR_maximal_reconvergence"; +static const char* const E_SPV_KHR_subgroup_rotate = "SPV_KHR_subgroup_rotate"; #endif // #ifndef GLSLextKHR_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 30232e35..b53c519d 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1,7 +1,7 @@ // // Copyright (C) 2014-2016 LunarG, Inc. // Copyright (C) 2015-2020 Google, Inc. -// Copyright (C) 2017 ARM Limited. +// Copyright (C) 2017, 2022-2024 Arm Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. @@ -8318,6 +8318,11 @@ spv::Id TGlslangToSpvTraverser::createSubgroupOperation(glslang::TOperator op, s builder.addCapability(spv::CapabilityGroupNonUniform); builder.addCapability(spv::CapabilityGroupNonUniformBallot); break; + case glslang::EOpSubgroupRotate: + case glslang::EOpSubgroupClusteredRotate: + builder.addExtension(spv::E_SPV_KHR_subgroup_rotate); + builder.addCapability(spv::CapabilityGroupNonUniformRotateKHR); + break; case glslang::EOpSubgroupShuffle: case glslang::EOpSubgroupShuffleXor: builder.addCapability(spv::CapabilityGroupNonUniform); @@ -8425,6 +8430,8 @@ spv::Id TGlslangToSpvTraverser::createSubgroupOperation(glslang::TOperator op, s case glslang::EOpSubgroupShuffleXor: opCode = spv::OpGroupNonUniformShuffleXor; break; case glslang::EOpSubgroupShuffleUp: opCode = spv::OpGroupNonUniformShuffleUp; break; case glslang::EOpSubgroupShuffleDown: opCode = spv::OpGroupNonUniformShuffleDown; break; + case glslang::EOpSubgroupRotate: + case glslang::EOpSubgroupClusteredRotate: opCode = spv::OpGroupNonUniformRotateKHR; break; case glslang::EOpSubgroupAdd: case glslang::EOpSubgroupInclusiveAdd: case glslang::EOpSubgroupExclusiveAdd: @@ -8851,6 +8858,8 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: case glslang::EOpSubgroupShuffleXor: case glslang::EOpSubgroupShuffleUp: case glslang::EOpSubgroupShuffleDown: + case glslang::EOpSubgroupRotate: + case glslang::EOpSubgroupClusteredRotate: case glslang::EOpSubgroupClusteredAdd: case glslang::EOpSubgroupClusteredMul: case glslang::EOpSubgroupClusteredMin: diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index a342eee3..da9db942 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -1,5 +1,6 @@ // // Copyright (C) 2014-2015 LunarG, Inc. +// Copyright (C) 2022-2024 Arm Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. @@ -942,6 +943,7 @@ const char* CapabilityString(int info) case CapabilitySubgroupBallotKHR: return "SubgroupBallotKHR"; case CapabilityDrawParameters: return "DrawParameters"; case CapabilitySubgroupVoteKHR: return "SubgroupVoteKHR"; + case CapabilityGroupNonUniformRotateKHR: return "CapabilityGroupNonUniformRotateKHR"; case CapabilityStorageUniformBufferBlock16: return "StorageUniformBufferBlock16"; case CapabilityStorageUniform16: return "StorageUniform16"; @@ -1483,6 +1485,8 @@ const char* OpcodeString(int op) case OpEmitMeshTasksEXT: return "OpEmitMeshTasksEXT"; case OpSetMeshOutputsEXT: return "OpSetMeshOutputsEXT"; + case OpGroupNonUniformRotateKHR: return "OpGroupNonUniformRotateKHR"; + case OpTypeRayQueryKHR: return "OpTypeRayQueryKHR"; case OpRayQueryInitializeKHR: return "OpRayQueryInitializeKHR"; case OpRayQueryTerminateKHR: return "OpRayQueryTerminateKHR"; @@ -2901,6 +2905,11 @@ void Parameterize() InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandScope, "'Execution'"); InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandId, "'Predicate'"); + InstructionDesc[OpGroupNonUniformRotateKHR].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformRotateKHR].operands.push(OperandId, "'X'"); + InstructionDesc[OpGroupNonUniformRotateKHR].operands.push(OperandId, "'Delta'"); + InstructionDesc[OpGroupNonUniformRotateKHR].operands.push(OperandId, "'ClusterSize'", true); + InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Value'"); InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Index'"); diff --git a/Test/baseResults/glsl.450.subgroupRotate.comp.out b/Test/baseResults/glsl.450.subgroupRotate.comp.out new file mode 100644 index 00000000..31d025b6 --- /dev/null +++ b/Test/baseResults/glsl.450.subgroupRotate.comp.out @@ -0,0 +1,2177 @@ +glsl.450.subgroupRotate.comp +Shader version: 450 +Requested GL_KHR_shader_subgroup_rotate +local_size = (8, 8, 1) +0:? Sequence +0:20 Function Definition: main( ( global void) +0:20 Function Parameters: +0:22 Sequence +0:22 Sequence +0:22 move second child to first child ( temp uint) +0:22 'delta' ( temp uint) +0:22 delta: direct index for structure (layout( column_major shared) readonly buffer uint) +0:22 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer uint delta}) +0:22 Constant: +0:22 0 (const int) +0:24 move second child to first child ( temp float) +0:24 direct index ( temp float) +0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:24 'delta' ( temp uint) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 subgroupRotate ( global float) +0:24 direct index ( temp float) +0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 'delta' ( temp uint) +0:25 move second child to first child ( temp 2-component vector of float) +0:25 vector swizzle ( temp 2-component vector of float) +0:25 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:25 'delta' ( temp uint) +0:25 Constant: +0:25 0 (const int) +0:25 Sequence +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1 (const int) +0:25 subgroupRotate ( global 2-component vector of float) +0:25 vector swizzle ( temp 2-component vector of float) +0:25 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:25 Constant: +0:25 1 (const int) +0:25 Constant: +0:25 0 (const int) +0:25 Sequence +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1 (const int) +0:25 'delta' ( temp uint) +0:26 move second child to first child ( temp 3-component vector of float) +0:26 vector swizzle ( temp 3-component vector of float) +0:26 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:26 'delta' ( temp uint) +0:26 Constant: +0:26 0 (const int) +0:26 Sequence +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 1 (const int) +0:26 Constant: +0:26 2 (const int) +0:26 subgroupRotate ( global 3-component vector of float) +0:26 vector swizzle ( temp 3-component vector of float) +0:26 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:26 Constant: +0:26 2 (const int) +0:26 Constant: +0:26 0 (const int) +0:26 Sequence +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 1 (const int) +0:26 Constant: +0:26 2 (const int) +0:26 'delta' ( temp uint) +0:27 move second child to first child ( temp 4-component vector of float) +0:27 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:27 'delta' ( temp uint) +0:27 Constant: +0:27 0 (const int) +0:27 subgroupRotate ( global 4-component vector of float) +0:27 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:27 Constant: +0:27 3 (const int) +0:27 Constant: +0:27 0 (const int) +0:27 'delta' ( temp uint) +0:29 move second child to first child ( temp int) +0:29 direct index ( temp int) +0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:29 'delta' ( temp uint) +0:29 Constant: +0:29 1 (const int) +0:29 Constant: +0:29 0 (const int) +0:29 subgroupRotate ( global int) +0:29 direct index ( temp int) +0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 Constant: +0:29 0 (const int) +0:29 'delta' ( temp uint) +0:30 move second child to first child ( temp 2-component vector of int) +0:30 vector swizzle ( temp 2-component vector of int) +0:30 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:30 'delta' ( temp uint) +0:30 Constant: +0:30 1 (const int) +0:30 Sequence +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 subgroupRotate ( global 2-component vector of int) +0:30 vector swizzle ( temp 2-component vector of int) +0:30 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:30 Constant: +0:30 1 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Sequence +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 'delta' ( temp uint) +0:31 move second child to first child ( temp 3-component vector of int) +0:31 vector swizzle ( temp 3-component vector of int) +0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:31 'delta' ( temp uint) +0:31 Constant: +0:31 1 (const int) +0:31 Sequence +0:31 Constant: +0:31 0 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 Constant: +0:31 2 (const int) +0:31 subgroupRotate ( global 3-component vector of int) +0:31 vector swizzle ( temp 3-component vector of int) +0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:31 Constant: +0:31 2 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 Sequence +0:31 Constant: +0:31 0 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 Constant: +0:31 2 (const int) +0:31 'delta' ( temp uint) +0:32 move second child to first child ( temp 4-component vector of int) +0:32 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:32 'delta' ( temp uint) +0:32 Constant: +0:32 1 (const int) +0:32 subgroupRotate ( global 4-component vector of int) +0:32 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:32 Constant: +0:32 3 (const int) +0:32 Constant: +0:32 1 (const int) +0:32 'delta' ( temp uint) +0:34 move second child to first child ( temp uint) +0:34 direct index ( temp uint) +0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:34 'delta' ( temp uint) +0:34 Constant: +0:34 2 (const int) +0:34 Constant: +0:34 0 (const int) +0:34 subgroupRotate ( global uint) +0:34 direct index ( temp uint) +0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 2 (const int) +0:34 Constant: +0:34 0 (const int) +0:34 'delta' ( temp uint) +0:35 move second child to first child ( temp 2-component vector of uint) +0:35 vector swizzle ( temp 2-component vector of uint) +0:35 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:35 'delta' ( temp uint) +0:35 Constant: +0:35 2 (const int) +0:35 Sequence +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 1 (const int) +0:35 subgroupRotate ( global 2-component vector of uint) +0:35 vector swizzle ( temp 2-component vector of uint) +0:35 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 Sequence +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 1 (const int) +0:35 'delta' ( temp uint) +0:36 move second child to first child ( temp 3-component vector of uint) +0:36 vector swizzle ( temp 3-component vector of uint) +0:36 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:36 'delta' ( temp uint) +0:36 Constant: +0:36 2 (const int) +0:36 Sequence +0:36 Constant: +0:36 0 (const int) +0:36 Constant: +0:36 1 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 subgroupRotate ( global 3-component vector of uint) +0:36 vector swizzle ( temp 3-component vector of uint) +0:36 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:36 Constant: +0:36 2 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 Sequence +0:36 Constant: +0:36 0 (const int) +0:36 Constant: +0:36 1 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 'delta' ( temp uint) +0:37 move second child to first child ( temp 4-component vector of uint) +0:37 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:37 'delta' ( temp uint) +0:37 Constant: +0:37 2 (const int) +0:37 subgroupRotate ( global 4-component vector of uint) +0:37 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:37 Constant: +0:37 3 (const int) +0:37 Constant: +0:37 2 (const int) +0:37 'delta' ( temp uint) +0:39 move second child to first child ( temp double) +0:39 direct index ( temp double) +0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:39 'delta' ( temp uint) +0:39 Constant: +0:39 3 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 subgroupRotate ( global double) +0:39 direct index ( temp double) +0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 3 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 'delta' ( temp uint) +0:40 move second child to first child ( temp 2-component vector of double) +0:40 vector swizzle ( temp 2-component vector of double) +0:40 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:40 'delta' ( temp uint) +0:40 Constant: +0:40 3 (const int) +0:40 Sequence +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 subgroupRotate ( global 2-component vector of double) +0:40 vector swizzle ( temp 2-component vector of double) +0:40 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 3 (const int) +0:40 Sequence +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 'delta' ( temp uint) +0:41 move second child to first child ( temp 3-component vector of double) +0:41 vector swizzle ( temp 3-component vector of double) +0:41 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:41 'delta' ( temp uint) +0:41 Constant: +0:41 3 (const int) +0:41 Sequence +0:41 Constant: +0:41 0 (const int) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 2 (const int) +0:41 subgroupRotate ( global 3-component vector of double) +0:41 vector swizzle ( temp 3-component vector of double) +0:41 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:41 Constant: +0:41 2 (const int) +0:41 Constant: +0:41 3 (const int) +0:41 Sequence +0:41 Constant: +0:41 0 (const int) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 2 (const int) +0:41 'delta' ( temp uint) +0:42 move second child to first child ( temp 4-component vector of double) +0:42 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:42 'delta' ( temp uint) +0:42 Constant: +0:42 3 (const int) +0:42 subgroupRotate ( global 4-component vector of double) +0:42 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:42 Constant: +0:42 3 (const int) +0:42 Constant: +0:42 3 (const int) +0:42 'delta' ( temp uint) +0:44 move second child to first child ( temp int) +0:44 direct index ( temp int) +0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:44 'delta' ( temp uint) +0:44 Constant: +0:44 1 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 Convert bool to int ( temp int) +0:44 subgroupRotate ( global bool) +0:44 Compare Less Than ( temp bool) +0:44 direct index ( temp int) +0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:44 Constant: +0:44 0 (const int) +0:44 Constant: +0:44 1 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 'delta' ( temp uint) +0:45 move second child to first child ( temp 2-component vector of int) +0:45 vector swizzle ( temp 2-component vector of int) +0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:45 'delta' ( temp uint) +0:45 Constant: +0:45 1 (const int) +0:45 Sequence +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Convert bool to int ( temp 2-component vector of int) +0:45 subgroupRotate ( global 2-component vector of bool) +0:45 Compare Less Than ( global 2-component vector of bool) +0:45 vector swizzle ( temp 2-component vector of int) +0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:45 Constant: +0:45 1 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Sequence +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Constant: +0:45 0 (const int) +0:45 0 (const int) +0:45 'delta' ( temp uint) +0:46 move second child to first child ( temp 3-component vector of int) +0:46 vector swizzle ( temp 3-component vector of int) +0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:46 'delta' ( temp uint) +0:46 Constant: +0:46 1 (const int) +0:46 Sequence +0:46 Constant: +0:46 0 (const int) +0:46 Constant: +0:46 1 (const int) +0:46 Constant: +0:46 2 (const int) +0:46 Convert bool to int ( temp 3-component vector of int) +0:46 subgroupRotate ( global 3-component vector of bool) +0:46 Compare Less Than ( global 3-component vector of bool) +0:46 vector swizzle ( temp 3-component vector of int) +0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:46 Constant: +0:46 1 (const int) +0:46 Constant: +0:46 1 (const int) +0:46 Sequence +0:46 Constant: +0:46 0 (const int) +0:46 Constant: +0:46 1 (const int) +0:46 Constant: +0:46 2 (const int) +0:46 Constant: +0:46 0 (const int) +0:46 0 (const int) +0:46 0 (const int) +0:46 'delta' ( temp uint) +0:47 move second child to first child ( temp 4-component vector of int) +0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:47 'delta' ( temp uint) +0:47 Constant: +0:47 1 (const int) +0:47 Convert bool to int ( temp 4-component vector of int) +0:47 subgroupRotate ( global 4-component vector of bool) +0:47 Compare Less Than ( global 4-component vector of bool) +0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:47 Constant: +0:47 1 (const int) +0:47 Constant: +0:47 1 (const int) +0:47 Constant: +0:47 0 (const int) +0:47 0 (const int) +0:47 0 (const int) +0:47 0 (const int) +0:47 'delta' ( temp uint) +0:49 move second child to first child ( temp float) +0:49 direct index ( temp float) +0:49 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:49 'delta' ( temp uint) +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 0 (const int) +0:49 subgroupClusteredRotate ( global float) +0:49 direct index ( temp float) +0:49 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 0 (const int) +0:49 'delta' ( temp uint) +0:49 Constant: +0:49 1 (const uint) +0:50 move second child to first child ( temp 2-component vector of float) +0:50 vector swizzle ( temp 2-component vector of float) +0:50 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:50 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:50 'delta' ( temp uint) +0:50 Constant: +0:50 0 (const int) +0:50 Sequence +0:50 Constant: +0:50 0 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 subgroupClusteredRotate ( global 2-component vector of float) +0:50 vector swizzle ( temp 2-component vector of float) +0:50 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:50 Constant: +0:50 1 (const int) +0:50 Constant: +0:50 0 (const int) +0:50 Sequence +0:50 Constant: +0:50 0 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 'delta' ( temp uint) +0:50 Constant: +0:50 1 (const uint) +0:51 move second child to first child ( temp 3-component vector of float) +0:51 vector swizzle ( temp 3-component vector of float) +0:51 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:51 'delta' ( temp uint) +0:51 Constant: +0:51 0 (const int) +0:51 Sequence +0:51 Constant: +0:51 0 (const int) +0:51 Constant: +0:51 1 (const int) +0:51 Constant: +0:51 2 (const int) +0:51 subgroupClusteredRotate ( global 3-component vector of float) +0:51 vector swizzle ( temp 3-component vector of float) +0:51 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:51 Constant: +0:51 2 (const int) +0:51 Constant: +0:51 0 (const int) +0:51 Sequence +0:51 Constant: +0:51 0 (const int) +0:51 Constant: +0:51 1 (const int) +0:51 Constant: +0:51 2 (const int) +0:51 'delta' ( temp uint) +0:51 Constant: +0:51 1 (const uint) +0:52 move second child to first child ( temp 4-component vector of float) +0:52 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:52 'delta' ( temp uint) +0:52 Constant: +0:52 0 (const int) +0:52 subgroupClusteredRotate ( global 4-component vector of float) +0:52 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:52 Constant: +0:52 3 (const int) +0:52 Constant: +0:52 0 (const int) +0:52 'delta' ( temp uint) +0:52 Constant: +0:52 1 (const uint) +0:54 move second child to first child ( temp int) +0:54 direct index ( temp int) +0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:54 'delta' ( temp uint) +0:54 Constant: +0:54 1 (const int) +0:54 Constant: +0:54 0 (const int) +0:54 subgroupClusteredRotate ( global int) +0:54 direct index ( temp int) +0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:54 Constant: +0:54 0 (const int) +0:54 Constant: +0:54 1 (const int) +0:54 Constant: +0:54 0 (const int) +0:54 'delta' ( temp uint) +0:54 Constant: +0:54 1 (const uint) +0:55 move second child to first child ( temp 2-component vector of int) +0:55 vector swizzle ( temp 2-component vector of int) +0:55 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:55 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:55 'delta' ( temp uint) +0:55 Constant: +0:55 1 (const int) +0:55 Sequence +0:55 Constant: +0:55 0 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 subgroupClusteredRotate ( global 2-component vector of int) +0:55 vector swizzle ( temp 2-component vector of int) +0:55 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:55 Constant: +0:55 1 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 Sequence +0:55 Constant: +0:55 0 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 'delta' ( temp uint) +0:55 Constant: +0:55 1 (const uint) +0:56 move second child to first child ( temp 3-component vector of int) +0:56 vector swizzle ( temp 3-component vector of int) +0:56 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:56 'delta' ( temp uint) +0:56 Constant: +0:56 1 (const int) +0:56 Sequence +0:56 Constant: +0:56 0 (const int) +0:56 Constant: +0:56 1 (const int) +0:56 Constant: +0:56 2 (const int) +0:56 subgroupClusteredRotate ( global 3-component vector of int) +0:56 vector swizzle ( temp 3-component vector of int) +0:56 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:56 Constant: +0:56 2 (const int) +0:56 Constant: +0:56 1 (const int) +0:56 Sequence +0:56 Constant: +0:56 0 (const int) +0:56 Constant: +0:56 1 (const int) +0:56 Constant: +0:56 2 (const int) +0:56 'delta' ( temp uint) +0:56 Constant: +0:56 1 (const uint) +0:57 move second child to first child ( temp 4-component vector of int) +0:57 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:57 'delta' ( temp uint) +0:57 Constant: +0:57 1 (const int) +0:57 subgroupClusteredRotate ( global 4-component vector of int) +0:57 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:57 Constant: +0:57 3 (const int) +0:57 Constant: +0:57 1 (const int) +0:57 'delta' ( temp uint) +0:57 Constant: +0:57 1 (const uint) +0:59 move second child to first child ( temp uint) +0:59 direct index ( temp uint) +0:59 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:59 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:59 'delta' ( temp uint) +0:59 Constant: +0:59 2 (const int) +0:59 Constant: +0:59 0 (const int) +0:59 subgroupClusteredRotate ( global uint) +0:59 direct index ( temp uint) +0:59 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 2 (const int) +0:59 Constant: +0:59 0 (const int) +0:59 'delta' ( temp uint) +0:59 Constant: +0:59 1 (const uint) +0:60 move second child to first child ( temp 2-component vector of uint) +0:60 vector swizzle ( temp 2-component vector of uint) +0:60 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:60 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:60 'delta' ( temp uint) +0:60 Constant: +0:60 2 (const int) +0:60 Sequence +0:60 Constant: +0:60 0 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 subgroupClusteredRotate ( global 2-component vector of uint) +0:60 vector swizzle ( temp 2-component vector of uint) +0:60 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:60 Constant: +0:60 1 (const int) +0:60 Constant: +0:60 2 (const int) +0:60 Sequence +0:60 Constant: +0:60 0 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 'delta' ( temp uint) +0:60 Constant: +0:60 1 (const uint) +0:61 move second child to first child ( temp 3-component vector of uint) +0:61 vector swizzle ( temp 3-component vector of uint) +0:61 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:61 'delta' ( temp uint) +0:61 Constant: +0:61 2 (const int) +0:61 Sequence +0:61 Constant: +0:61 0 (const int) +0:61 Constant: +0:61 1 (const int) +0:61 Constant: +0:61 2 (const int) +0:61 subgroupClusteredRotate ( global 3-component vector of uint) +0:61 vector swizzle ( temp 3-component vector of uint) +0:61 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:61 Constant: +0:61 2 (const int) +0:61 Constant: +0:61 2 (const int) +0:61 Sequence +0:61 Constant: +0:61 0 (const int) +0:61 Constant: +0:61 1 (const int) +0:61 Constant: +0:61 2 (const int) +0:61 'delta' ( temp uint) +0:61 Constant: +0:61 1 (const uint) +0:62 move second child to first child ( temp 4-component vector of uint) +0:62 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:62 'delta' ( temp uint) +0:62 Constant: +0:62 2 (const int) +0:62 subgroupClusteredRotate ( global 4-component vector of uint) +0:62 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:62 Constant: +0:62 3 (const int) +0:62 Constant: +0:62 2 (const int) +0:62 'delta' ( temp uint) +0:62 Constant: +0:62 1 (const uint) +0:64 move second child to first child ( temp double) +0:64 direct index ( temp double) +0:64 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:64 'delta' ( temp uint) +0:64 Constant: +0:64 3 (const int) +0:64 Constant: +0:64 0 (const int) +0:64 subgroupClusteredRotate ( global double) +0:64 direct index ( temp double) +0:64 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:64 Constant: +0:64 0 (const int) +0:64 Constant: +0:64 3 (const int) +0:64 Constant: +0:64 0 (const int) +0:64 'delta' ( temp uint) +0:64 Constant: +0:64 1 (const uint) +0:65 move second child to first child ( temp 2-component vector of double) +0:65 vector swizzle ( temp 2-component vector of double) +0:65 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:65 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:65 'delta' ( temp uint) +0:65 Constant: +0:65 3 (const int) +0:65 Sequence +0:65 Constant: +0:65 0 (const int) +0:65 Constant: +0:65 1 (const int) +0:65 subgroupClusteredRotate ( global 2-component vector of double) +0:65 vector swizzle ( temp 2-component vector of double) +0:65 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:65 Constant: +0:65 1 (const int) +0:65 Constant: +0:65 3 (const int) +0:65 Sequence +0:65 Constant: +0:65 0 (const int) +0:65 Constant: +0:65 1 (const int) +0:65 'delta' ( temp uint) +0:65 Constant: +0:65 1 (const uint) +0:66 move second child to first child ( temp 3-component vector of double) +0:66 vector swizzle ( temp 3-component vector of double) +0:66 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:66 'delta' ( temp uint) +0:66 Constant: +0:66 3 (const int) +0:66 Sequence +0:66 Constant: +0:66 0 (const int) +0:66 Constant: +0:66 1 (const int) +0:66 Constant: +0:66 2 (const int) +0:66 subgroupClusteredRotate ( global 3-component vector of double) +0:66 vector swizzle ( temp 3-component vector of double) +0:66 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:66 Constant: +0:66 2 (const int) +0:66 Constant: +0:66 3 (const int) +0:66 Sequence +0:66 Constant: +0:66 0 (const int) +0:66 Constant: +0:66 1 (const int) +0:66 Constant: +0:66 2 (const int) +0:66 'delta' ( temp uint) +0:66 Constant: +0:66 1 (const uint) +0:67 move second child to first child ( temp 4-component vector of double) +0:67 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:67 'delta' ( temp uint) +0:67 Constant: +0:67 3 (const int) +0:67 subgroupClusteredRotate ( global 4-component vector of double) +0:67 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:67 Constant: +0:67 3 (const int) +0:67 Constant: +0:67 3 (const int) +0:67 'delta' ( temp uint) +0:67 Constant: +0:67 1 (const uint) +0:69 move second child to first child ( temp int) +0:69 direct index ( temp int) +0:69 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:69 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:69 'delta' ( temp uint) +0:69 Constant: +0:69 1 (const int) +0:69 Constant: +0:69 0 (const int) +0:69 Convert bool to int ( temp int) +0:69 subgroupClusteredRotate ( global bool) +0:69 Compare Less Than ( temp bool) +0:69 direct index ( temp int) +0:69 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:69 Constant: +0:69 0 (const int) +0:69 Constant: +0:69 1 (const int) +0:69 Constant: +0:69 0 (const int) +0:69 Constant: +0:69 0 (const int) +0:69 'delta' ( temp uint) +0:69 Constant: +0:69 1 (const uint) +0:70 move second child to first child ( temp 2-component vector of int) +0:70 vector swizzle ( temp 2-component vector of int) +0:70 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:70 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:70 'delta' ( temp uint) +0:70 Constant: +0:70 1 (const int) +0:70 Sequence +0:70 Constant: +0:70 0 (const int) +0:70 Constant: +0:70 1 (const int) +0:70 Convert bool to int ( temp 2-component vector of int) +0:70 subgroupClusteredRotate ( global 2-component vector of bool) +0:70 Compare Less Than ( global 2-component vector of bool) +0:70 vector swizzle ( temp 2-component vector of int) +0:70 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:70 Constant: +0:70 1 (const int) +0:70 Constant: +0:70 1 (const int) +0:70 Sequence +0:70 Constant: +0:70 0 (const int) +0:70 Constant: +0:70 1 (const int) +0:70 Constant: +0:70 0 (const int) +0:70 0 (const int) +0:70 'delta' ( temp uint) +0:70 Constant: +0:70 1 (const uint) +0:71 move second child to first child ( temp 3-component vector of int) +0:71 vector swizzle ( temp 3-component vector of int) +0:71 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:71 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:71 'delta' ( temp uint) +0:71 Constant: +0:71 1 (const int) +0:71 Sequence +0:71 Constant: +0:71 0 (const int) +0:71 Constant: +0:71 1 (const int) +0:71 Constant: +0:71 2 (const int) +0:71 Convert bool to int ( temp 3-component vector of int) +0:71 subgroupClusteredRotate ( global 3-component vector of bool) +0:71 Compare Less Than ( global 3-component vector of bool) +0:71 vector swizzle ( temp 3-component vector of int) +0:71 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:71 Constant: +0:71 1 (const int) +0:71 Constant: +0:71 1 (const int) +0:71 Sequence +0:71 Constant: +0:71 0 (const int) +0:71 Constant: +0:71 1 (const int) +0:71 Constant: +0:71 2 (const int) +0:71 Constant: +0:71 0 (const int) +0:71 0 (const int) +0:71 0 (const int) +0:71 'delta' ( temp uint) +0:71 Constant: +0:71 1 (const uint) +0:72 move second child to first child ( temp 4-component vector of int) +0:72 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:72 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:72 'delta' ( temp uint) +0:72 Constant: +0:72 1 (const int) +0:72 Convert bool to int ( temp 4-component vector of int) +0:72 subgroupClusteredRotate ( global 4-component vector of bool) +0:72 Compare Less Than ( global 4-component vector of bool) +0:72 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:72 Constant: +0:72 1 (const int) +0:72 Constant: +0:72 1 (const int) +0:72 Constant: +0:72 0 (const int) +0:72 0 (const int) +0:72 0 (const int) +0:72 0 (const int) +0:72 'delta' ( temp uint) +0:72 Constant: +0:72 1 (const uint) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) +0:? 8 (const uint) +0:? 8 (const uint) +0:? 1 (const uint) +0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer uint delta}) +0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) + + +Linked compute stage: + + +Shader version: 450 +Requested GL_KHR_shader_subgroup_rotate +local_size = (8, 8, 1) +0:? Sequence +0:20 Function Definition: main( ( global void) +0:20 Function Parameters: +0:22 Sequence +0:22 Sequence +0:22 move second child to first child ( temp uint) +0:22 'delta' ( temp uint) +0:22 delta: direct index for structure (layout( column_major shared) readonly buffer uint) +0:22 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer uint delta}) +0:22 Constant: +0:22 0 (const int) +0:24 move second child to first child ( temp float) +0:24 direct index ( temp float) +0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:24 'delta' ( temp uint) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 subgroupRotate ( global float) +0:24 direct index ( temp float) +0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 'delta' ( temp uint) +0:25 move second child to first child ( temp 2-component vector of float) +0:25 vector swizzle ( temp 2-component vector of float) +0:25 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:25 'delta' ( temp uint) +0:25 Constant: +0:25 0 (const int) +0:25 Sequence +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1 (const int) +0:25 subgroupRotate ( global 2-component vector of float) +0:25 vector swizzle ( temp 2-component vector of float) +0:25 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:25 Constant: +0:25 1 (const int) +0:25 Constant: +0:25 0 (const int) +0:25 Sequence +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1 (const int) +0:25 'delta' ( temp uint) +0:26 move second child to first child ( temp 3-component vector of float) +0:26 vector swizzle ( temp 3-component vector of float) +0:26 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:26 'delta' ( temp uint) +0:26 Constant: +0:26 0 (const int) +0:26 Sequence +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 1 (const int) +0:26 Constant: +0:26 2 (const int) +0:26 subgroupRotate ( global 3-component vector of float) +0:26 vector swizzle ( temp 3-component vector of float) +0:26 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:26 Constant: +0:26 2 (const int) +0:26 Constant: +0:26 0 (const int) +0:26 Sequence +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 1 (const int) +0:26 Constant: +0:26 2 (const int) +0:26 'delta' ( temp uint) +0:27 move second child to first child ( temp 4-component vector of float) +0:27 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:27 'delta' ( temp uint) +0:27 Constant: +0:27 0 (const int) +0:27 subgroupRotate ( global 4-component vector of float) +0:27 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:27 Constant: +0:27 3 (const int) +0:27 Constant: +0:27 0 (const int) +0:27 'delta' ( temp uint) +0:29 move second child to first child ( temp int) +0:29 direct index ( temp int) +0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:29 'delta' ( temp uint) +0:29 Constant: +0:29 1 (const int) +0:29 Constant: +0:29 0 (const int) +0:29 subgroupRotate ( global int) +0:29 direct index ( temp int) +0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 Constant: +0:29 0 (const int) +0:29 'delta' ( temp uint) +0:30 move second child to first child ( temp 2-component vector of int) +0:30 vector swizzle ( temp 2-component vector of int) +0:30 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:30 'delta' ( temp uint) +0:30 Constant: +0:30 1 (const int) +0:30 Sequence +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 subgroupRotate ( global 2-component vector of int) +0:30 vector swizzle ( temp 2-component vector of int) +0:30 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:30 Constant: +0:30 1 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Sequence +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 'delta' ( temp uint) +0:31 move second child to first child ( temp 3-component vector of int) +0:31 vector swizzle ( temp 3-component vector of int) +0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:31 'delta' ( temp uint) +0:31 Constant: +0:31 1 (const int) +0:31 Sequence +0:31 Constant: +0:31 0 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 Constant: +0:31 2 (const int) +0:31 subgroupRotate ( global 3-component vector of int) +0:31 vector swizzle ( temp 3-component vector of int) +0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:31 Constant: +0:31 2 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 Sequence +0:31 Constant: +0:31 0 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 Constant: +0:31 2 (const int) +0:31 'delta' ( temp uint) +0:32 move second child to first child ( temp 4-component vector of int) +0:32 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:32 'delta' ( temp uint) +0:32 Constant: +0:32 1 (const int) +0:32 subgroupRotate ( global 4-component vector of int) +0:32 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:32 Constant: +0:32 3 (const int) +0:32 Constant: +0:32 1 (const int) +0:32 'delta' ( temp uint) +0:34 move second child to first child ( temp uint) +0:34 direct index ( temp uint) +0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:34 'delta' ( temp uint) +0:34 Constant: +0:34 2 (const int) +0:34 Constant: +0:34 0 (const int) +0:34 subgroupRotate ( global uint) +0:34 direct index ( temp uint) +0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 2 (const int) +0:34 Constant: +0:34 0 (const int) +0:34 'delta' ( temp uint) +0:35 move second child to first child ( temp 2-component vector of uint) +0:35 vector swizzle ( temp 2-component vector of uint) +0:35 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:35 'delta' ( temp uint) +0:35 Constant: +0:35 2 (const int) +0:35 Sequence +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 1 (const int) +0:35 subgroupRotate ( global 2-component vector of uint) +0:35 vector swizzle ( temp 2-component vector of uint) +0:35 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 Sequence +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 1 (const int) +0:35 'delta' ( temp uint) +0:36 move second child to first child ( temp 3-component vector of uint) +0:36 vector swizzle ( temp 3-component vector of uint) +0:36 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:36 'delta' ( temp uint) +0:36 Constant: +0:36 2 (const int) +0:36 Sequence +0:36 Constant: +0:36 0 (const int) +0:36 Constant: +0:36 1 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 subgroupRotate ( global 3-component vector of uint) +0:36 vector swizzle ( temp 3-component vector of uint) +0:36 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:36 Constant: +0:36 2 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 Sequence +0:36 Constant: +0:36 0 (const int) +0:36 Constant: +0:36 1 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 'delta' ( temp uint) +0:37 move second child to first child ( temp 4-component vector of uint) +0:37 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:37 'delta' ( temp uint) +0:37 Constant: +0:37 2 (const int) +0:37 subgroupRotate ( global 4-component vector of uint) +0:37 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:37 Constant: +0:37 3 (const int) +0:37 Constant: +0:37 2 (const int) +0:37 'delta' ( temp uint) +0:39 move second child to first child ( temp double) +0:39 direct index ( temp double) +0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:39 'delta' ( temp uint) +0:39 Constant: +0:39 3 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 subgroupRotate ( global double) +0:39 direct index ( temp double) +0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 3 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 'delta' ( temp uint) +0:40 move second child to first child ( temp 2-component vector of double) +0:40 vector swizzle ( temp 2-component vector of double) +0:40 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:40 'delta' ( temp uint) +0:40 Constant: +0:40 3 (const int) +0:40 Sequence +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 subgroupRotate ( global 2-component vector of double) +0:40 vector swizzle ( temp 2-component vector of double) +0:40 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 3 (const int) +0:40 Sequence +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 'delta' ( temp uint) +0:41 move second child to first child ( temp 3-component vector of double) +0:41 vector swizzle ( temp 3-component vector of double) +0:41 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:41 'delta' ( temp uint) +0:41 Constant: +0:41 3 (const int) +0:41 Sequence +0:41 Constant: +0:41 0 (const int) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 2 (const int) +0:41 subgroupRotate ( global 3-component vector of double) +0:41 vector swizzle ( temp 3-component vector of double) +0:41 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:41 Constant: +0:41 2 (const int) +0:41 Constant: +0:41 3 (const int) +0:41 Sequence +0:41 Constant: +0:41 0 (const int) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 2 (const int) +0:41 'delta' ( temp uint) +0:42 move second child to first child ( temp 4-component vector of double) +0:42 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:42 'delta' ( temp uint) +0:42 Constant: +0:42 3 (const int) +0:42 subgroupRotate ( global 4-component vector of double) +0:42 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:42 Constant: +0:42 3 (const int) +0:42 Constant: +0:42 3 (const int) +0:42 'delta' ( temp uint) +0:44 move second child to first child ( temp int) +0:44 direct index ( temp int) +0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:44 'delta' ( temp uint) +0:44 Constant: +0:44 1 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 Convert bool to int ( temp int) +0:44 subgroupRotate ( global bool) +0:44 Compare Less Than ( temp bool) +0:44 direct index ( temp int) +0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:44 Constant: +0:44 0 (const int) +0:44 Constant: +0:44 1 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 'delta' ( temp uint) +0:45 move second child to first child ( temp 2-component vector of int) +0:45 vector swizzle ( temp 2-component vector of int) +0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:45 'delta' ( temp uint) +0:45 Constant: +0:45 1 (const int) +0:45 Sequence +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Convert bool to int ( temp 2-component vector of int) +0:45 subgroupRotate ( global 2-component vector of bool) +0:45 Compare Less Than ( global 2-component vector of bool) +0:45 vector swizzle ( temp 2-component vector of int) +0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:45 Constant: +0:45 1 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Sequence +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Constant: +0:45 0 (const int) +0:45 0 (const int) +0:45 'delta' ( temp uint) +0:46 move second child to first child ( temp 3-component vector of int) +0:46 vector swizzle ( temp 3-component vector of int) +0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:46 'delta' ( temp uint) +0:46 Constant: +0:46 1 (const int) +0:46 Sequence +0:46 Constant: +0:46 0 (const int) +0:46 Constant: +0:46 1 (const int) +0:46 Constant: +0:46 2 (const int) +0:46 Convert bool to int ( temp 3-component vector of int) +0:46 subgroupRotate ( global 3-component vector of bool) +0:46 Compare Less Than ( global 3-component vector of bool) +0:46 vector swizzle ( temp 3-component vector of int) +0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:46 Constant: +0:46 1 (const int) +0:46 Constant: +0:46 1 (const int) +0:46 Sequence +0:46 Constant: +0:46 0 (const int) +0:46 Constant: +0:46 1 (const int) +0:46 Constant: +0:46 2 (const int) +0:46 Constant: +0:46 0 (const int) +0:46 0 (const int) +0:46 0 (const int) +0:46 'delta' ( temp uint) +0:47 move second child to first child ( temp 4-component vector of int) +0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:47 'delta' ( temp uint) +0:47 Constant: +0:47 1 (const int) +0:47 Convert bool to int ( temp 4-component vector of int) +0:47 subgroupRotate ( global 4-component vector of bool) +0:47 Compare Less Than ( global 4-component vector of bool) +0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:47 Constant: +0:47 1 (const int) +0:47 Constant: +0:47 1 (const int) +0:47 Constant: +0:47 0 (const int) +0:47 0 (const int) +0:47 0 (const int) +0:47 0 (const int) +0:47 'delta' ( temp uint) +0:49 move second child to first child ( temp float) +0:49 direct index ( temp float) +0:49 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:49 'delta' ( temp uint) +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 0 (const int) +0:49 subgroupClusteredRotate ( global float) +0:49 direct index ( temp float) +0:49 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 0 (const int) +0:49 'delta' ( temp uint) +0:49 Constant: +0:49 1 (const uint) +0:50 move second child to first child ( temp 2-component vector of float) +0:50 vector swizzle ( temp 2-component vector of float) +0:50 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:50 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:50 'delta' ( temp uint) +0:50 Constant: +0:50 0 (const int) +0:50 Sequence +0:50 Constant: +0:50 0 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 subgroupClusteredRotate ( global 2-component vector of float) +0:50 vector swizzle ( temp 2-component vector of float) +0:50 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:50 Constant: +0:50 1 (const int) +0:50 Constant: +0:50 0 (const int) +0:50 Sequence +0:50 Constant: +0:50 0 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 'delta' ( temp uint) +0:50 Constant: +0:50 1 (const uint) +0:51 move second child to first child ( temp 3-component vector of float) +0:51 vector swizzle ( temp 3-component vector of float) +0:51 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:51 'delta' ( temp uint) +0:51 Constant: +0:51 0 (const int) +0:51 Sequence +0:51 Constant: +0:51 0 (const int) +0:51 Constant: +0:51 1 (const int) +0:51 Constant: +0:51 2 (const int) +0:51 subgroupClusteredRotate ( global 3-component vector of float) +0:51 vector swizzle ( temp 3-component vector of float) +0:51 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:51 Constant: +0:51 2 (const int) +0:51 Constant: +0:51 0 (const int) +0:51 Sequence +0:51 Constant: +0:51 0 (const int) +0:51 Constant: +0:51 1 (const int) +0:51 Constant: +0:51 2 (const int) +0:51 'delta' ( temp uint) +0:51 Constant: +0:51 1 (const uint) +0:52 move second child to first child ( temp 4-component vector of float) +0:52 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:52 'delta' ( temp uint) +0:52 Constant: +0:52 0 (const int) +0:52 subgroupClusteredRotate ( global 4-component vector of float) +0:52 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:52 Constant: +0:52 3 (const int) +0:52 Constant: +0:52 0 (const int) +0:52 'delta' ( temp uint) +0:52 Constant: +0:52 1 (const uint) +0:54 move second child to first child ( temp int) +0:54 direct index ( temp int) +0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:54 'delta' ( temp uint) +0:54 Constant: +0:54 1 (const int) +0:54 Constant: +0:54 0 (const int) +0:54 subgroupClusteredRotate ( global int) +0:54 direct index ( temp int) +0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:54 Constant: +0:54 0 (const int) +0:54 Constant: +0:54 1 (const int) +0:54 Constant: +0:54 0 (const int) +0:54 'delta' ( temp uint) +0:54 Constant: +0:54 1 (const uint) +0:55 move second child to first child ( temp 2-component vector of int) +0:55 vector swizzle ( temp 2-component vector of int) +0:55 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:55 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:55 'delta' ( temp uint) +0:55 Constant: +0:55 1 (const int) +0:55 Sequence +0:55 Constant: +0:55 0 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 subgroupClusteredRotate ( global 2-component vector of int) +0:55 vector swizzle ( temp 2-component vector of int) +0:55 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:55 Constant: +0:55 1 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 Sequence +0:55 Constant: +0:55 0 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 'delta' ( temp uint) +0:55 Constant: +0:55 1 (const uint) +0:56 move second child to first child ( temp 3-component vector of int) +0:56 vector swizzle ( temp 3-component vector of int) +0:56 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:56 'delta' ( temp uint) +0:56 Constant: +0:56 1 (const int) +0:56 Sequence +0:56 Constant: +0:56 0 (const int) +0:56 Constant: +0:56 1 (const int) +0:56 Constant: +0:56 2 (const int) +0:56 subgroupClusteredRotate ( global 3-component vector of int) +0:56 vector swizzle ( temp 3-component vector of int) +0:56 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:56 Constant: +0:56 2 (const int) +0:56 Constant: +0:56 1 (const int) +0:56 Sequence +0:56 Constant: +0:56 0 (const int) +0:56 Constant: +0:56 1 (const int) +0:56 Constant: +0:56 2 (const int) +0:56 'delta' ( temp uint) +0:56 Constant: +0:56 1 (const uint) +0:57 move second child to first child ( temp 4-component vector of int) +0:57 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:57 'delta' ( temp uint) +0:57 Constant: +0:57 1 (const int) +0:57 subgroupClusteredRotate ( global 4-component vector of int) +0:57 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:57 Constant: +0:57 3 (const int) +0:57 Constant: +0:57 1 (const int) +0:57 'delta' ( temp uint) +0:57 Constant: +0:57 1 (const uint) +0:59 move second child to first child ( temp uint) +0:59 direct index ( temp uint) +0:59 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:59 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:59 'delta' ( temp uint) +0:59 Constant: +0:59 2 (const int) +0:59 Constant: +0:59 0 (const int) +0:59 subgroupClusteredRotate ( global uint) +0:59 direct index ( temp uint) +0:59 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 2 (const int) +0:59 Constant: +0:59 0 (const int) +0:59 'delta' ( temp uint) +0:59 Constant: +0:59 1 (const uint) +0:60 move second child to first child ( temp 2-component vector of uint) +0:60 vector swizzle ( temp 2-component vector of uint) +0:60 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:60 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:60 'delta' ( temp uint) +0:60 Constant: +0:60 2 (const int) +0:60 Sequence +0:60 Constant: +0:60 0 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 subgroupClusteredRotate ( global 2-component vector of uint) +0:60 vector swizzle ( temp 2-component vector of uint) +0:60 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:60 Constant: +0:60 1 (const int) +0:60 Constant: +0:60 2 (const int) +0:60 Sequence +0:60 Constant: +0:60 0 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 'delta' ( temp uint) +0:60 Constant: +0:60 1 (const uint) +0:61 move second child to first child ( temp 3-component vector of uint) +0:61 vector swizzle ( temp 3-component vector of uint) +0:61 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:61 'delta' ( temp uint) +0:61 Constant: +0:61 2 (const int) +0:61 Sequence +0:61 Constant: +0:61 0 (const int) +0:61 Constant: +0:61 1 (const int) +0:61 Constant: +0:61 2 (const int) +0:61 subgroupClusteredRotate ( global 3-component vector of uint) +0:61 vector swizzle ( temp 3-component vector of uint) +0:61 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:61 Constant: +0:61 2 (const int) +0:61 Constant: +0:61 2 (const int) +0:61 Sequence +0:61 Constant: +0:61 0 (const int) +0:61 Constant: +0:61 1 (const int) +0:61 Constant: +0:61 2 (const int) +0:61 'delta' ( temp uint) +0:61 Constant: +0:61 1 (const uint) +0:62 move second child to first child ( temp 4-component vector of uint) +0:62 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:62 'delta' ( temp uint) +0:62 Constant: +0:62 2 (const int) +0:62 subgroupClusteredRotate ( global 4-component vector of uint) +0:62 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:62 Constant: +0:62 3 (const int) +0:62 Constant: +0:62 2 (const int) +0:62 'delta' ( temp uint) +0:62 Constant: +0:62 1 (const uint) +0:64 move second child to first child ( temp double) +0:64 direct index ( temp double) +0:64 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:64 'delta' ( temp uint) +0:64 Constant: +0:64 3 (const int) +0:64 Constant: +0:64 0 (const int) +0:64 subgroupClusteredRotate ( global double) +0:64 direct index ( temp double) +0:64 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:64 Constant: +0:64 0 (const int) +0:64 Constant: +0:64 3 (const int) +0:64 Constant: +0:64 0 (const int) +0:64 'delta' ( temp uint) +0:64 Constant: +0:64 1 (const uint) +0:65 move second child to first child ( temp 2-component vector of double) +0:65 vector swizzle ( temp 2-component vector of double) +0:65 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:65 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:65 'delta' ( temp uint) +0:65 Constant: +0:65 3 (const int) +0:65 Sequence +0:65 Constant: +0:65 0 (const int) +0:65 Constant: +0:65 1 (const int) +0:65 subgroupClusteredRotate ( global 2-component vector of double) +0:65 vector swizzle ( temp 2-component vector of double) +0:65 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:65 Constant: +0:65 1 (const int) +0:65 Constant: +0:65 3 (const int) +0:65 Sequence +0:65 Constant: +0:65 0 (const int) +0:65 Constant: +0:65 1 (const int) +0:65 'delta' ( temp uint) +0:65 Constant: +0:65 1 (const uint) +0:66 move second child to first child ( temp 3-component vector of double) +0:66 vector swizzle ( temp 3-component vector of double) +0:66 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:66 'delta' ( temp uint) +0:66 Constant: +0:66 3 (const int) +0:66 Sequence +0:66 Constant: +0:66 0 (const int) +0:66 Constant: +0:66 1 (const int) +0:66 Constant: +0:66 2 (const int) +0:66 subgroupClusteredRotate ( global 3-component vector of double) +0:66 vector swizzle ( temp 3-component vector of double) +0:66 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:66 Constant: +0:66 2 (const int) +0:66 Constant: +0:66 3 (const int) +0:66 Sequence +0:66 Constant: +0:66 0 (const int) +0:66 Constant: +0:66 1 (const int) +0:66 Constant: +0:66 2 (const int) +0:66 'delta' ( temp uint) +0:66 Constant: +0:66 1 (const uint) +0:67 move second child to first child ( temp 4-component vector of double) +0:67 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:67 'delta' ( temp uint) +0:67 Constant: +0:67 3 (const int) +0:67 subgroupClusteredRotate ( global 4-component vector of double) +0:67 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:67 Constant: +0:67 3 (const int) +0:67 Constant: +0:67 3 (const int) +0:67 'delta' ( temp uint) +0:67 Constant: +0:67 1 (const uint) +0:69 move second child to first child ( temp int) +0:69 direct index ( temp int) +0:69 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:69 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:69 'delta' ( temp uint) +0:69 Constant: +0:69 1 (const int) +0:69 Constant: +0:69 0 (const int) +0:69 Convert bool to int ( temp int) +0:69 subgroupClusteredRotate ( global bool) +0:69 Compare Less Than ( temp bool) +0:69 direct index ( temp int) +0:69 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:69 Constant: +0:69 0 (const int) +0:69 Constant: +0:69 1 (const int) +0:69 Constant: +0:69 0 (const int) +0:69 Constant: +0:69 0 (const int) +0:69 'delta' ( temp uint) +0:69 Constant: +0:69 1 (const uint) +0:70 move second child to first child ( temp 2-component vector of int) +0:70 vector swizzle ( temp 2-component vector of int) +0:70 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:70 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:70 'delta' ( temp uint) +0:70 Constant: +0:70 1 (const int) +0:70 Sequence +0:70 Constant: +0:70 0 (const int) +0:70 Constant: +0:70 1 (const int) +0:70 Convert bool to int ( temp 2-component vector of int) +0:70 subgroupClusteredRotate ( global 2-component vector of bool) +0:70 Compare Less Than ( global 2-component vector of bool) +0:70 vector swizzle ( temp 2-component vector of int) +0:70 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:70 Constant: +0:70 1 (const int) +0:70 Constant: +0:70 1 (const int) +0:70 Sequence +0:70 Constant: +0:70 0 (const int) +0:70 Constant: +0:70 1 (const int) +0:70 Constant: +0:70 0 (const int) +0:70 0 (const int) +0:70 'delta' ( temp uint) +0:70 Constant: +0:70 1 (const uint) +0:71 move second child to first child ( temp 3-component vector of int) +0:71 vector swizzle ( temp 3-component vector of int) +0:71 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:71 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:71 'delta' ( temp uint) +0:71 Constant: +0:71 1 (const int) +0:71 Sequence +0:71 Constant: +0:71 0 (const int) +0:71 Constant: +0:71 1 (const int) +0:71 Constant: +0:71 2 (const int) +0:71 Convert bool to int ( temp 3-component vector of int) +0:71 subgroupClusteredRotate ( global 3-component vector of bool) +0:71 Compare Less Than ( global 3-component vector of bool) +0:71 vector swizzle ( temp 3-component vector of int) +0:71 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:71 Constant: +0:71 1 (const int) +0:71 Constant: +0:71 1 (const int) +0:71 Sequence +0:71 Constant: +0:71 0 (const int) +0:71 Constant: +0:71 1 (const int) +0:71 Constant: +0:71 2 (const int) +0:71 Constant: +0:71 0 (const int) +0:71 0 (const int) +0:71 0 (const int) +0:71 'delta' ( temp uint) +0:71 Constant: +0:71 1 (const uint) +0:72 move second child to first child ( temp 4-component vector of int) +0:72 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:72 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:72 'delta' ( temp uint) +0:72 Constant: +0:72 1 (const int) +0:72 Convert bool to int ( temp 4-component vector of int) +0:72 subgroupClusteredRotate ( global 4-component vector of bool) +0:72 Compare Less Than ( global 4-component vector of bool) +0:72 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:72 Constant: +0:72 1 (const int) +0:72 Constant: +0:72 1 (const int) +0:72 Constant: +0:72 0 (const int) +0:72 0 (const int) +0:72 0 (const int) +0:72 0 (const int) +0:72 'delta' ( temp uint) +0:72 Constant: +0:72 1 (const uint) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) +0:? 8 (const uint) +0:? 8 (const uint) +0:? 1 (const uint) +0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer uint delta}) +0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) + diff --git a/Test/baseResults/glsl.es320.subgroupRotate.comp.out b/Test/baseResults/glsl.es320.subgroupRotate.comp.out new file mode 100644 index 00000000..8aaa3717 --- /dev/null +++ b/Test/baseResults/glsl.es320.subgroupRotate.comp.out @@ -0,0 +1,1833 @@ +glsl.es320.subgroupRotate.comp +Shader version: 320 +Requested GL_KHR_shader_subgroup_rotate +local_size = (8, 8, 1) +0:? Sequence +0:19 Function Definition: main( ( global void) +0:19 Function Parameters: +0:21 Sequence +0:21 Sequence +0:21 move second child to first child ( temp highp uint) +0:21 'delta' ( temp highp uint) +0:21 delta: direct index for structure (layout( column_major shared) readonly buffer highp uint) +0:21 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp uint delta}) +0:21 Constant: +0:21 0 (const int) +0:23 move second child to first child ( temp highp float) +0:23 direct index ( temp highp float) +0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 subgroupRotate ( global highp float) +0:23 direct index ( temp highp float) +0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 'delta' ( temp highp uint) +0:24 move second child to first child ( temp highp 2-component vector of float) +0:24 vector swizzle ( temp highp 2-component vector of float) +0:24 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 Sequence +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 1 (const int) +0:24 subgroupRotate ( global highp 2-component vector of float) +0:24 vector swizzle ( temp highp 2-component vector of float) +0:24 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:24 Constant: +0:24 1 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 Sequence +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 1 (const int) +0:24 'delta' ( temp highp uint) +0:25 move second child to first child ( temp highp 3-component vector of float) +0:25 vector swizzle ( temp highp 3-component vector of float) +0:25 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 0 (const int) +0:25 Sequence +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1 (const int) +0:25 Constant: +0:25 2 (const int) +0:25 subgroupRotate ( global highp 3-component vector of float) +0:25 vector swizzle ( temp highp 3-component vector of float) +0:25 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:25 Constant: +0:25 2 (const int) +0:25 Constant: +0:25 0 (const int) +0:25 Sequence +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1 (const int) +0:25 Constant: +0:25 2 (const int) +0:25 'delta' ( temp highp uint) +0:26 move second child to first child ( temp highp 4-component vector of float) +0:26 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 0 (const int) +0:26 subgroupRotate ( global highp 4-component vector of float) +0:26 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:26 Constant: +0:26 3 (const int) +0:26 Constant: +0:26 0 (const int) +0:26 'delta' ( temp highp uint) +0:28 move second child to first child ( temp highp int) +0:28 direct index ( temp highp int) +0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 1 (const int) +0:28 Constant: +0:28 0 (const int) +0:28 subgroupRotate ( global highp int) +0:28 direct index ( temp highp int) +0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 1 (const int) +0:28 Constant: +0:28 0 (const int) +0:28 'delta' ( temp highp uint) +0:29 move second child to first child ( temp highp 2-component vector of int) +0:29 vector swizzle ( temp highp 2-component vector of int) +0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 Sequence +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 subgroupRotate ( global highp 2-component vector of int) +0:29 vector swizzle ( temp highp 2-component vector of int) +0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:29 Constant: +0:29 1 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 Sequence +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 'delta' ( temp highp uint) +0:30 move second child to first child ( temp highp 3-component vector of int) +0:30 vector swizzle ( temp highp 3-component vector of int) +0:30 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Sequence +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Constant: +0:30 2 (const int) +0:30 subgroupRotate ( global highp 3-component vector of int) +0:30 vector swizzle ( temp highp 3-component vector of int) +0:30 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:30 Constant: +0:30 2 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Sequence +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Constant: +0:30 2 (const int) +0:30 'delta' ( temp highp uint) +0:31 move second child to first child ( temp highp 4-component vector of int) +0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:31 Constant: +0:31 0 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 subgroupRotate ( global highp 4-component vector of int) +0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:31 Constant: +0:31 3 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 'delta' ( temp highp uint) +0:33 move second child to first child ( temp highp uint) +0:33 direct index ( temp highp uint) +0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:33 Constant: +0:33 1 (const int) +0:33 Constant: +0:33 2 (const int) +0:33 Constant: +0:33 0 (const int) +0:33 subgroupRotate ( global highp uint) +0:33 direct index ( temp highp uint) +0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:33 Constant: +0:33 0 (const int) +0:33 Constant: +0:33 2 (const int) +0:33 Constant: +0:33 0 (const int) +0:33 'delta' ( temp highp uint) +0:34 move second child to first child ( temp highp 2-component vector of uint) +0:34 vector swizzle ( temp highp 2-component vector of uint) +0:34 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:34 Constant: +0:34 1 (const int) +0:34 Constant: +0:34 2 (const int) +0:34 Sequence +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1 (const int) +0:34 subgroupRotate ( global highp 2-component vector of uint) +0:34 vector swizzle ( temp highp 2-component vector of uint) +0:34 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:34 Constant: +0:34 1 (const int) +0:34 Constant: +0:34 2 (const int) +0:34 Sequence +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1 (const int) +0:34 'delta' ( temp highp uint) +0:35 move second child to first child ( temp highp 3-component vector of uint) +0:35 vector swizzle ( temp highp 3-component vector of uint) +0:35 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 Sequence +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 subgroupRotate ( global highp 3-component vector of uint) +0:35 vector swizzle ( temp highp 3-component vector of uint) +0:35 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:35 Constant: +0:35 2 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 Sequence +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 'delta' ( temp highp uint) +0:36 move second child to first child ( temp highp 4-component vector of uint) +0:36 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:36 Constant: +0:36 1 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 subgroupRotate ( global highp 4-component vector of uint) +0:36 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:36 Constant: +0:36 3 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 'delta' ( temp highp uint) +0:38 move second child to first child ( temp highp int) +0:38 direct index ( temp highp int) +0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:38 Constant: +0:38 1 (const int) +0:38 Constant: +0:38 1 (const int) +0:38 Constant: +0:38 0 (const int) +0:38 Convert bool to int ( temp highp int) +0:38 subgroupRotate ( global bool, operation at highp) +0:38 Compare Less Than ( temp bool) +0:38 direct index ( temp highp int) +0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:38 Constant: +0:38 0 (const int) +0:38 Constant: +0:38 1 (const int) +0:38 Constant: +0:38 0 (const int) +0:38 Constant: +0:38 0 (const int) +0:38 'delta' ( temp highp uint) +0:39 move second child to first child ( temp highp 2-component vector of int) +0:39 vector swizzle ( temp highp 2-component vector of int) +0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 Sequence +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 Convert bool to int ( temp highp 2-component vector of int) +0:39 subgroupRotate ( global 2-component vector of bool, operation at highp) +0:39 Compare Less Than ( global 2-component vector of bool, operation at highp) +0:39 vector swizzle ( temp highp 2-component vector of int) +0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 Sequence +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 0 (const int) +0:39 'delta' ( temp highp uint) +0:40 move second child to first child ( temp highp 3-component vector of int) +0:40 vector swizzle ( temp highp 3-component vector of int) +0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 Sequence +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 2 (const int) +0:40 Convert bool to int ( temp highp 3-component vector of int) +0:40 subgroupRotate ( global 3-component vector of bool, operation at highp) +0:40 Compare Less Than ( global 3-component vector of bool, operation at highp) +0:40 vector swizzle ( temp highp 3-component vector of int) +0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 Sequence +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 2 (const int) +0:40 Constant: +0:40 0 (const int) +0:40 0 (const int) +0:40 0 (const int) +0:40 'delta' ( temp highp uint) +0:41 move second child to first child ( temp highp 4-component vector of int) +0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 1 (const int) +0:41 Convert bool to int ( temp highp 4-component vector of int) +0:41 subgroupRotate ( global 4-component vector of bool, operation at highp) +0:41 Compare Less Than ( global 4-component vector of bool, operation at highp) +0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 0 (const int) +0:41 0 (const int) +0:41 0 (const int) +0:41 0 (const int) +0:41 'delta' ( temp highp uint) +0:43 move second child to first child ( temp highp float) +0:43 direct index ( temp highp float) +0:43 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:43 Constant: +0:43 2 (const int) +0:43 Constant: +0:43 0 (const int) +0:43 Constant: +0:43 0 (const int) +0:43 subgroupClusteredRotate ( global highp float) +0:43 direct index ( temp highp float) +0:43 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:43 Constant: +0:43 0 (const int) +0:43 Constant: +0:43 0 (const int) +0:43 Constant: +0:43 0 (const int) +0:43 'delta' ( temp highp uint) +0:43 Constant: +0:43 1 (const uint) +0:44 move second child to first child ( temp highp 2-component vector of float) +0:44 vector swizzle ( temp highp 2-component vector of float) +0:44 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:44 Constant: +0:44 2 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 Sequence +0:44 Constant: +0:44 0 (const int) +0:44 Constant: +0:44 1 (const int) +0:44 subgroupClusteredRotate ( global highp 2-component vector of float) +0:44 vector swizzle ( temp highp 2-component vector of float) +0:44 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:44 Constant: +0:44 1 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 Sequence +0:44 Constant: +0:44 0 (const int) +0:44 Constant: +0:44 1 (const int) +0:44 'delta' ( temp highp uint) +0:44 Constant: +0:44 1 (const uint) +0:45 move second child to first child ( temp highp 3-component vector of float) +0:45 vector swizzle ( temp highp 3-component vector of float) +0:45 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:45 Constant: +0:45 2 (const int) +0:45 Constant: +0:45 0 (const int) +0:45 Sequence +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Constant: +0:45 2 (const int) +0:45 subgroupClusteredRotate ( global highp 3-component vector of float) +0:45 vector swizzle ( temp highp 3-component vector of float) +0:45 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:45 Constant: +0:45 2 (const int) +0:45 Constant: +0:45 0 (const int) +0:45 Sequence +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Constant: +0:45 2 (const int) +0:45 'delta' ( temp highp uint) +0:45 Constant: +0:45 1 (const uint) +0:46 move second child to first child ( temp highp 4-component vector of float) +0:46 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:46 Constant: +0:46 2 (const int) +0:46 Constant: +0:46 0 (const int) +0:46 subgroupClusteredRotate ( global highp 4-component vector of float) +0:46 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:46 Constant: +0:46 3 (const int) +0:46 Constant: +0:46 0 (const int) +0:46 'delta' ( temp highp uint) +0:46 Constant: +0:46 1 (const uint) +0:48 move second child to first child ( temp highp int) +0:48 direct index ( temp highp int) +0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:48 Constant: +0:48 2 (const int) +0:48 Constant: +0:48 1 (const int) +0:48 Constant: +0:48 0 (const int) +0:48 subgroupClusteredRotate ( global highp int) +0:48 direct index ( temp highp int) +0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:48 Constant: +0:48 0 (const int) +0:48 Constant: +0:48 1 (const int) +0:48 Constant: +0:48 0 (const int) +0:48 'delta' ( temp highp uint) +0:48 Constant: +0:48 1 (const uint) +0:49 move second child to first child ( temp highp 2-component vector of int) +0:49 vector swizzle ( temp highp 2-component vector of int) +0:49 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:49 Constant: +0:49 2 (const int) +0:49 Constant: +0:49 1 (const int) +0:49 Sequence +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 1 (const int) +0:49 subgroupClusteredRotate ( global highp 2-component vector of int) +0:49 vector swizzle ( temp highp 2-component vector of int) +0:49 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:49 Constant: +0:49 1 (const int) +0:49 Constant: +0:49 1 (const int) +0:49 Sequence +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 1 (const int) +0:49 'delta' ( temp highp uint) +0:49 Constant: +0:49 1 (const uint) +0:50 move second child to first child ( temp highp 3-component vector of int) +0:50 vector swizzle ( temp highp 3-component vector of int) +0:50 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:50 Constant: +0:50 2 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 Sequence +0:50 Constant: +0:50 0 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 Constant: +0:50 2 (const int) +0:50 subgroupClusteredRotate ( global highp 3-component vector of int) +0:50 vector swizzle ( temp highp 3-component vector of int) +0:50 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:50 Constant: +0:50 2 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 Sequence +0:50 Constant: +0:50 0 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 Constant: +0:50 2 (const int) +0:50 'delta' ( temp highp uint) +0:50 Constant: +0:50 1 (const uint) +0:51 move second child to first child ( temp highp 4-component vector of int) +0:51 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:51 Constant: +0:51 2 (const int) +0:51 Constant: +0:51 1 (const int) +0:51 subgroupClusteredRotate ( global highp 4-component vector of int) +0:51 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:51 Constant: +0:51 3 (const int) +0:51 Constant: +0:51 1 (const int) +0:51 'delta' ( temp highp uint) +0:51 Constant: +0:51 1 (const uint) +0:53 move second child to first child ( temp highp uint) +0:53 direct index ( temp highp uint) +0:53 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:53 Constant: +0:53 3 (const int) +0:53 Constant: +0:53 2 (const int) +0:53 Constant: +0:53 0 (const int) +0:53 subgroupClusteredRotate ( global highp uint) +0:53 direct index ( temp highp uint) +0:53 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:53 Constant: +0:53 0 (const int) +0:53 Constant: +0:53 2 (const int) +0:53 Constant: +0:53 0 (const int) +0:53 'delta' ( temp highp uint) +0:53 Constant: +0:53 1 (const uint) +0:54 move second child to first child ( temp highp 2-component vector of uint) +0:54 vector swizzle ( temp highp 2-component vector of uint) +0:54 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:54 Constant: +0:54 3 (const int) +0:54 Constant: +0:54 2 (const int) +0:54 Sequence +0:54 Constant: +0:54 0 (const int) +0:54 Constant: +0:54 1 (const int) +0:54 subgroupClusteredRotate ( global highp 2-component vector of uint) +0:54 vector swizzle ( temp highp 2-component vector of uint) +0:54 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:54 Constant: +0:54 1 (const int) +0:54 Constant: +0:54 2 (const int) +0:54 Sequence +0:54 Constant: +0:54 0 (const int) +0:54 Constant: +0:54 1 (const int) +0:54 'delta' ( temp highp uint) +0:54 Constant: +0:54 1 (const uint) +0:55 move second child to first child ( temp highp 3-component vector of uint) +0:55 vector swizzle ( temp highp 3-component vector of uint) +0:55 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:55 Constant: +0:55 3 (const int) +0:55 Constant: +0:55 2 (const int) +0:55 Sequence +0:55 Constant: +0:55 0 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 Constant: +0:55 2 (const int) +0:55 subgroupClusteredRotate ( global highp 3-component vector of uint) +0:55 vector swizzle ( temp highp 3-component vector of uint) +0:55 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:55 Constant: +0:55 2 (const int) +0:55 Constant: +0:55 2 (const int) +0:55 Sequence +0:55 Constant: +0:55 0 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 Constant: +0:55 2 (const int) +0:55 'delta' ( temp highp uint) +0:55 Constant: +0:55 1 (const uint) +0:56 move second child to first child ( temp highp 4-component vector of uint) +0:56 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:56 Constant: +0:56 3 (const int) +0:56 Constant: +0:56 2 (const int) +0:56 subgroupClusteredRotate ( global highp 4-component vector of uint) +0:56 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:56 Constant: +0:56 3 (const int) +0:56 Constant: +0:56 2 (const int) +0:56 'delta' ( temp highp uint) +0:56 Constant: +0:56 1 (const uint) +0:58 move second child to first child ( temp highp int) +0:58 direct index ( temp highp int) +0:58 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:58 Constant: +0:58 3 (const int) +0:58 Constant: +0:58 1 (const int) +0:58 Constant: +0:58 0 (const int) +0:58 Convert bool to int ( temp highp int) +0:58 subgroupClusteredRotate ( global bool, operation at highp) +0:58 Compare Less Than ( temp bool) +0:58 direct index ( temp highp int) +0:58 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 1 (const int) +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 0 (const int) +0:58 'delta' ( temp highp uint) +0:58 Constant: +0:58 1 (const uint) +0:59 move second child to first child ( temp highp 2-component vector of int) +0:59 vector swizzle ( temp highp 2-component vector of int) +0:59 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:59 Constant: +0:59 3 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Sequence +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Convert bool to int ( temp highp 2-component vector of int) +0:59 subgroupClusteredRotate ( global 2-component vector of bool, operation at highp) +0:59 Compare Less Than ( global 2-component vector of bool, operation at highp) +0:59 vector swizzle ( temp highp 2-component vector of int) +0:59 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:59 Constant: +0:59 1 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Sequence +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Constant: +0:59 0 (const int) +0:59 0 (const int) +0:59 'delta' ( temp highp uint) +0:59 Constant: +0:59 1 (const uint) +0:60 move second child to first child ( temp highp 3-component vector of int) +0:60 vector swizzle ( temp highp 3-component vector of int) +0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:60 Constant: +0:60 3 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 Sequence +0:60 Constant: +0:60 0 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 Constant: +0:60 2 (const int) +0:60 Convert bool to int ( temp highp 3-component vector of int) +0:60 subgroupClusteredRotate ( global 3-component vector of bool, operation at highp) +0:60 Compare Less Than ( global 3-component vector of bool, operation at highp) +0:60 vector swizzle ( temp highp 3-component vector of int) +0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:60 Constant: +0:60 1 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 Sequence +0:60 Constant: +0:60 0 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 Constant: +0:60 2 (const int) +0:60 Constant: +0:60 0 (const int) +0:60 0 (const int) +0:60 0 (const int) +0:60 'delta' ( temp highp uint) +0:60 Constant: +0:60 1 (const uint) +0:61 move second child to first child ( temp highp 4-component vector of int) +0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:61 Constant: +0:61 3 (const int) +0:61 Constant: +0:61 1 (const int) +0:61 Convert bool to int ( temp highp 4-component vector of int) +0:61 subgroupClusteredRotate ( global 4-component vector of bool, operation at highp) +0:61 Compare Less Than ( global 4-component vector of bool, operation at highp) +0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:61 Constant: +0:61 1 (const int) +0:61 Constant: +0:61 1 (const int) +0:61 Constant: +0:61 0 (const int) +0:61 0 (const int) +0:61 0 (const int) +0:61 0 (const int) +0:61 'delta' ( temp highp uint) +0:61 Constant: +0:61 1 (const uint) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) +0:? 8 (const uint) +0:? 8 (const uint) +0:? 1 (const uint) +0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp uint delta}) +0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) + + +Linked compute stage: + + +Shader version: 320 +Requested GL_KHR_shader_subgroup_rotate +local_size = (8, 8, 1) +0:? Sequence +0:19 Function Definition: main( ( global void) +0:19 Function Parameters: +0:21 Sequence +0:21 Sequence +0:21 move second child to first child ( temp highp uint) +0:21 'delta' ( temp highp uint) +0:21 delta: direct index for structure (layout( column_major shared) readonly buffer highp uint) +0:21 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp uint delta}) +0:21 Constant: +0:21 0 (const int) +0:23 move second child to first child ( temp highp float) +0:23 direct index ( temp highp float) +0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 subgroupRotate ( global highp float) +0:23 direct index ( temp highp float) +0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 'delta' ( temp highp uint) +0:24 move second child to first child ( temp highp 2-component vector of float) +0:24 vector swizzle ( temp highp 2-component vector of float) +0:24 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 Sequence +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 1 (const int) +0:24 subgroupRotate ( global highp 2-component vector of float) +0:24 vector swizzle ( temp highp 2-component vector of float) +0:24 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:24 Constant: +0:24 1 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 Sequence +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 1 (const int) +0:24 'delta' ( temp highp uint) +0:25 move second child to first child ( temp highp 3-component vector of float) +0:25 vector swizzle ( temp highp 3-component vector of float) +0:25 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 0 (const int) +0:25 Sequence +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1 (const int) +0:25 Constant: +0:25 2 (const int) +0:25 subgroupRotate ( global highp 3-component vector of float) +0:25 vector swizzle ( temp highp 3-component vector of float) +0:25 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:25 Constant: +0:25 2 (const int) +0:25 Constant: +0:25 0 (const int) +0:25 Sequence +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1 (const int) +0:25 Constant: +0:25 2 (const int) +0:25 'delta' ( temp highp uint) +0:26 move second child to first child ( temp highp 4-component vector of float) +0:26 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 0 (const int) +0:26 subgroupRotate ( global highp 4-component vector of float) +0:26 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:26 Constant: +0:26 3 (const int) +0:26 Constant: +0:26 0 (const int) +0:26 'delta' ( temp highp uint) +0:28 move second child to first child ( temp highp int) +0:28 direct index ( temp highp int) +0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 1 (const int) +0:28 Constant: +0:28 0 (const int) +0:28 subgroupRotate ( global highp int) +0:28 direct index ( temp highp int) +0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 1 (const int) +0:28 Constant: +0:28 0 (const int) +0:28 'delta' ( temp highp uint) +0:29 move second child to first child ( temp highp 2-component vector of int) +0:29 vector swizzle ( temp highp 2-component vector of int) +0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 Sequence +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 subgroupRotate ( global highp 2-component vector of int) +0:29 vector swizzle ( temp highp 2-component vector of int) +0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:29 Constant: +0:29 1 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 Sequence +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 'delta' ( temp highp uint) +0:30 move second child to first child ( temp highp 3-component vector of int) +0:30 vector swizzle ( temp highp 3-component vector of int) +0:30 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Sequence +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Constant: +0:30 2 (const int) +0:30 subgroupRotate ( global highp 3-component vector of int) +0:30 vector swizzle ( temp highp 3-component vector of int) +0:30 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:30 Constant: +0:30 2 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Sequence +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Constant: +0:30 2 (const int) +0:30 'delta' ( temp highp uint) +0:31 move second child to first child ( temp highp 4-component vector of int) +0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:31 Constant: +0:31 0 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 subgroupRotate ( global highp 4-component vector of int) +0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:31 Constant: +0:31 3 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 'delta' ( temp highp uint) +0:33 move second child to first child ( temp highp uint) +0:33 direct index ( temp highp uint) +0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:33 Constant: +0:33 1 (const int) +0:33 Constant: +0:33 2 (const int) +0:33 Constant: +0:33 0 (const int) +0:33 subgroupRotate ( global highp uint) +0:33 direct index ( temp highp uint) +0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:33 Constant: +0:33 0 (const int) +0:33 Constant: +0:33 2 (const int) +0:33 Constant: +0:33 0 (const int) +0:33 'delta' ( temp highp uint) +0:34 move second child to first child ( temp highp 2-component vector of uint) +0:34 vector swizzle ( temp highp 2-component vector of uint) +0:34 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:34 Constant: +0:34 1 (const int) +0:34 Constant: +0:34 2 (const int) +0:34 Sequence +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1 (const int) +0:34 subgroupRotate ( global highp 2-component vector of uint) +0:34 vector swizzle ( temp highp 2-component vector of uint) +0:34 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:34 Constant: +0:34 1 (const int) +0:34 Constant: +0:34 2 (const int) +0:34 Sequence +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1 (const int) +0:34 'delta' ( temp highp uint) +0:35 move second child to first child ( temp highp 3-component vector of uint) +0:35 vector swizzle ( temp highp 3-component vector of uint) +0:35 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 Sequence +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 subgroupRotate ( global highp 3-component vector of uint) +0:35 vector swizzle ( temp highp 3-component vector of uint) +0:35 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:35 Constant: +0:35 2 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 Sequence +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 'delta' ( temp highp uint) +0:36 move second child to first child ( temp highp 4-component vector of uint) +0:36 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:36 Constant: +0:36 1 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 subgroupRotate ( global highp 4-component vector of uint) +0:36 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:36 Constant: +0:36 3 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 'delta' ( temp highp uint) +0:38 move second child to first child ( temp highp int) +0:38 direct index ( temp highp int) +0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:38 Constant: +0:38 1 (const int) +0:38 Constant: +0:38 1 (const int) +0:38 Constant: +0:38 0 (const int) +0:38 Convert bool to int ( temp highp int) +0:38 subgroupRotate ( global bool, operation at highp) +0:38 Compare Less Than ( temp bool) +0:38 direct index ( temp highp int) +0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:38 Constant: +0:38 0 (const int) +0:38 Constant: +0:38 1 (const int) +0:38 Constant: +0:38 0 (const int) +0:38 Constant: +0:38 0 (const int) +0:38 'delta' ( temp highp uint) +0:39 move second child to first child ( temp highp 2-component vector of int) +0:39 vector swizzle ( temp highp 2-component vector of int) +0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 Sequence +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 Convert bool to int ( temp highp 2-component vector of int) +0:39 subgroupRotate ( global 2-component vector of bool, operation at highp) +0:39 Compare Less Than ( global 2-component vector of bool, operation at highp) +0:39 vector swizzle ( temp highp 2-component vector of int) +0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 Sequence +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 0 (const int) +0:39 'delta' ( temp highp uint) +0:40 move second child to first child ( temp highp 3-component vector of int) +0:40 vector swizzle ( temp highp 3-component vector of int) +0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 Sequence +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 2 (const int) +0:40 Convert bool to int ( temp highp 3-component vector of int) +0:40 subgroupRotate ( global 3-component vector of bool, operation at highp) +0:40 Compare Less Than ( global 3-component vector of bool, operation at highp) +0:40 vector swizzle ( temp highp 3-component vector of int) +0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 Sequence +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 2 (const int) +0:40 Constant: +0:40 0 (const int) +0:40 0 (const int) +0:40 0 (const int) +0:40 'delta' ( temp highp uint) +0:41 move second child to first child ( temp highp 4-component vector of int) +0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 1 (const int) +0:41 Convert bool to int ( temp highp 4-component vector of int) +0:41 subgroupRotate ( global 4-component vector of bool, operation at highp) +0:41 Compare Less Than ( global 4-component vector of bool, operation at highp) +0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 0 (const int) +0:41 0 (const int) +0:41 0 (const int) +0:41 0 (const int) +0:41 'delta' ( temp highp uint) +0:43 move second child to first child ( temp highp float) +0:43 direct index ( temp highp float) +0:43 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:43 Constant: +0:43 2 (const int) +0:43 Constant: +0:43 0 (const int) +0:43 Constant: +0:43 0 (const int) +0:43 subgroupClusteredRotate ( global highp float) +0:43 direct index ( temp highp float) +0:43 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:43 Constant: +0:43 0 (const int) +0:43 Constant: +0:43 0 (const int) +0:43 Constant: +0:43 0 (const int) +0:43 'delta' ( temp highp uint) +0:43 Constant: +0:43 1 (const uint) +0:44 move second child to first child ( temp highp 2-component vector of float) +0:44 vector swizzle ( temp highp 2-component vector of float) +0:44 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:44 Constant: +0:44 2 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 Sequence +0:44 Constant: +0:44 0 (const int) +0:44 Constant: +0:44 1 (const int) +0:44 subgroupClusteredRotate ( global highp 2-component vector of float) +0:44 vector swizzle ( temp highp 2-component vector of float) +0:44 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:44 Constant: +0:44 1 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 Sequence +0:44 Constant: +0:44 0 (const int) +0:44 Constant: +0:44 1 (const int) +0:44 'delta' ( temp highp uint) +0:44 Constant: +0:44 1 (const uint) +0:45 move second child to first child ( temp highp 3-component vector of float) +0:45 vector swizzle ( temp highp 3-component vector of float) +0:45 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:45 Constant: +0:45 2 (const int) +0:45 Constant: +0:45 0 (const int) +0:45 Sequence +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Constant: +0:45 2 (const int) +0:45 subgroupClusteredRotate ( global highp 3-component vector of float) +0:45 vector swizzle ( temp highp 3-component vector of float) +0:45 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:45 Constant: +0:45 2 (const int) +0:45 Constant: +0:45 0 (const int) +0:45 Sequence +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Constant: +0:45 2 (const int) +0:45 'delta' ( temp highp uint) +0:45 Constant: +0:45 1 (const uint) +0:46 move second child to first child ( temp highp 4-component vector of float) +0:46 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:46 Constant: +0:46 2 (const int) +0:46 Constant: +0:46 0 (const int) +0:46 subgroupClusteredRotate ( global highp 4-component vector of float) +0:46 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:46 Constant: +0:46 3 (const int) +0:46 Constant: +0:46 0 (const int) +0:46 'delta' ( temp highp uint) +0:46 Constant: +0:46 1 (const uint) +0:48 move second child to first child ( temp highp int) +0:48 direct index ( temp highp int) +0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:48 Constant: +0:48 2 (const int) +0:48 Constant: +0:48 1 (const int) +0:48 Constant: +0:48 0 (const int) +0:48 subgroupClusteredRotate ( global highp int) +0:48 direct index ( temp highp int) +0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:48 Constant: +0:48 0 (const int) +0:48 Constant: +0:48 1 (const int) +0:48 Constant: +0:48 0 (const int) +0:48 'delta' ( temp highp uint) +0:48 Constant: +0:48 1 (const uint) +0:49 move second child to first child ( temp highp 2-component vector of int) +0:49 vector swizzle ( temp highp 2-component vector of int) +0:49 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:49 Constant: +0:49 2 (const int) +0:49 Constant: +0:49 1 (const int) +0:49 Sequence +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 1 (const int) +0:49 subgroupClusteredRotate ( global highp 2-component vector of int) +0:49 vector swizzle ( temp highp 2-component vector of int) +0:49 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:49 Constant: +0:49 1 (const int) +0:49 Constant: +0:49 1 (const int) +0:49 Sequence +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 1 (const int) +0:49 'delta' ( temp highp uint) +0:49 Constant: +0:49 1 (const uint) +0:50 move second child to first child ( temp highp 3-component vector of int) +0:50 vector swizzle ( temp highp 3-component vector of int) +0:50 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:50 Constant: +0:50 2 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 Sequence +0:50 Constant: +0:50 0 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 Constant: +0:50 2 (const int) +0:50 subgroupClusteredRotate ( global highp 3-component vector of int) +0:50 vector swizzle ( temp highp 3-component vector of int) +0:50 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:50 Constant: +0:50 2 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 Sequence +0:50 Constant: +0:50 0 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 Constant: +0:50 2 (const int) +0:50 'delta' ( temp highp uint) +0:50 Constant: +0:50 1 (const uint) +0:51 move second child to first child ( temp highp 4-component vector of int) +0:51 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:51 Constant: +0:51 2 (const int) +0:51 Constant: +0:51 1 (const int) +0:51 subgroupClusteredRotate ( global highp 4-component vector of int) +0:51 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:51 Constant: +0:51 3 (const int) +0:51 Constant: +0:51 1 (const int) +0:51 'delta' ( temp highp uint) +0:51 Constant: +0:51 1 (const uint) +0:53 move second child to first child ( temp highp uint) +0:53 direct index ( temp highp uint) +0:53 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:53 Constant: +0:53 3 (const int) +0:53 Constant: +0:53 2 (const int) +0:53 Constant: +0:53 0 (const int) +0:53 subgroupClusteredRotate ( global highp uint) +0:53 direct index ( temp highp uint) +0:53 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:53 Constant: +0:53 0 (const int) +0:53 Constant: +0:53 2 (const int) +0:53 Constant: +0:53 0 (const int) +0:53 'delta' ( temp highp uint) +0:53 Constant: +0:53 1 (const uint) +0:54 move second child to first child ( temp highp 2-component vector of uint) +0:54 vector swizzle ( temp highp 2-component vector of uint) +0:54 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:54 Constant: +0:54 3 (const int) +0:54 Constant: +0:54 2 (const int) +0:54 Sequence +0:54 Constant: +0:54 0 (const int) +0:54 Constant: +0:54 1 (const int) +0:54 subgroupClusteredRotate ( global highp 2-component vector of uint) +0:54 vector swizzle ( temp highp 2-component vector of uint) +0:54 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:54 Constant: +0:54 1 (const int) +0:54 Constant: +0:54 2 (const int) +0:54 Sequence +0:54 Constant: +0:54 0 (const int) +0:54 Constant: +0:54 1 (const int) +0:54 'delta' ( temp highp uint) +0:54 Constant: +0:54 1 (const uint) +0:55 move second child to first child ( temp highp 3-component vector of uint) +0:55 vector swizzle ( temp highp 3-component vector of uint) +0:55 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:55 Constant: +0:55 3 (const int) +0:55 Constant: +0:55 2 (const int) +0:55 Sequence +0:55 Constant: +0:55 0 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 Constant: +0:55 2 (const int) +0:55 subgroupClusteredRotate ( global highp 3-component vector of uint) +0:55 vector swizzle ( temp highp 3-component vector of uint) +0:55 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:55 Constant: +0:55 2 (const int) +0:55 Constant: +0:55 2 (const int) +0:55 Sequence +0:55 Constant: +0:55 0 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 Constant: +0:55 2 (const int) +0:55 'delta' ( temp highp uint) +0:55 Constant: +0:55 1 (const uint) +0:56 move second child to first child ( temp highp 4-component vector of uint) +0:56 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:56 Constant: +0:56 3 (const int) +0:56 Constant: +0:56 2 (const int) +0:56 subgroupClusteredRotate ( global highp 4-component vector of uint) +0:56 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:56 Constant: +0:56 3 (const int) +0:56 Constant: +0:56 2 (const int) +0:56 'delta' ( temp highp uint) +0:56 Constant: +0:56 1 (const uint) +0:58 move second child to first child ( temp highp int) +0:58 direct index ( temp highp int) +0:58 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:58 Constant: +0:58 3 (const int) +0:58 Constant: +0:58 1 (const int) +0:58 Constant: +0:58 0 (const int) +0:58 Convert bool to int ( temp highp int) +0:58 subgroupClusteredRotate ( global bool, operation at highp) +0:58 Compare Less Than ( temp bool) +0:58 direct index ( temp highp int) +0:58 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 1 (const int) +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 0 (const int) +0:58 'delta' ( temp highp uint) +0:58 Constant: +0:58 1 (const uint) +0:59 move second child to first child ( temp highp 2-component vector of int) +0:59 vector swizzle ( temp highp 2-component vector of int) +0:59 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:59 Constant: +0:59 3 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Sequence +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Convert bool to int ( temp highp 2-component vector of int) +0:59 subgroupClusteredRotate ( global 2-component vector of bool, operation at highp) +0:59 Compare Less Than ( global 2-component vector of bool, operation at highp) +0:59 vector swizzle ( temp highp 2-component vector of int) +0:59 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:59 Constant: +0:59 1 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Sequence +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Constant: +0:59 0 (const int) +0:59 0 (const int) +0:59 'delta' ( temp highp uint) +0:59 Constant: +0:59 1 (const uint) +0:60 move second child to first child ( temp highp 3-component vector of int) +0:60 vector swizzle ( temp highp 3-component vector of int) +0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:60 Constant: +0:60 3 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 Sequence +0:60 Constant: +0:60 0 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 Constant: +0:60 2 (const int) +0:60 Convert bool to int ( temp highp 3-component vector of int) +0:60 subgroupClusteredRotate ( global 3-component vector of bool, operation at highp) +0:60 Compare Less Than ( global 3-component vector of bool, operation at highp) +0:60 vector swizzle ( temp highp 3-component vector of int) +0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:60 Constant: +0:60 1 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 Sequence +0:60 Constant: +0:60 0 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 Constant: +0:60 2 (const int) +0:60 Constant: +0:60 0 (const int) +0:60 0 (const int) +0:60 0 (const int) +0:60 'delta' ( temp highp uint) +0:60 Constant: +0:60 1 (const uint) +0:61 move second child to first child ( temp highp 4-component vector of int) +0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:61 Constant: +0:61 3 (const int) +0:61 Constant: +0:61 1 (const int) +0:61 Convert bool to int ( temp highp 4-component vector of int) +0:61 subgroupClusteredRotate ( global 4-component vector of bool, operation at highp) +0:61 Compare Less Than ( global 4-component vector of bool, operation at highp) +0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:61 Constant: +0:61 1 (const int) +0:61 Constant: +0:61 1 (const int) +0:61 Constant: +0:61 0 (const int) +0:61 0 (const int) +0:61 0 (const int) +0:61 0 (const int) +0:61 'delta' ( temp highp uint) +0:61 Constant: +0:61 1 (const uint) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) +0:? 8 (const uint) +0:? 8 (const uint) +0:? 1 (const uint) +0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp uint delta}) +0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) + diff --git a/Test/baseResults/spv.subgroupExtendedTypesRotate.comp.out b/Test/baseResults/spv.subgroupExtendedTypesRotate.comp.out new file mode 100644 index 00000000..5900db4f --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesRotate.comp.out @@ -0,0 +1,711 @@ +spv.subgroupExtendedTypesRotate.comp +// Module Version 10300 +// Generated by (magic number): 8000b +// Id's are bound by 553 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + Capability StorageUniformBufferBlock16 + Capability StorageBuffer8BitAccess + Capability CapabilityGroupNonUniformRotateKHR + Extension "SPV_KHR_8bit_storage" + Extension "SPV_KHR_subgroup_rotate" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" + SourceExtension "GL_KHR_shader_subgroup_rotate" + Name 4 "main" + Name 8 "delta" + Name 9 "roblock" + MemberName 9(roblock) 0 "delta" + Name 11 "ro" + Name 31 "Buffers" + MemberName 31(Buffers) 0 "i8" + MemberName 31(Buffers) 1 "u8" + MemberName 31(Buffers) 2 "i16" + MemberName 31(Buffers) 3 "u16" + MemberName 31(Buffers) 4 "i64" + MemberName 31(Buffers) 5 "u64" + MemberName 31(Buffers) 6 "f16" + Name 35 "data" + MemberDecorate 9(roblock) 0 NonWritable + MemberDecorate 9(roblock) 0 Offset 0 + Decorate 9(roblock) Block + Decorate 11(ro) DescriptorSet 0 + Decorate 11(ro) Binding 1 + MemberDecorate 31(Buffers) 0 Offset 0 + MemberDecorate 31(Buffers) 1 Offset 4 + MemberDecorate 31(Buffers) 2 Offset 8 + MemberDecorate 31(Buffers) 3 Offset 16 + MemberDecorate 31(Buffers) 4 Offset 32 + MemberDecorate 31(Buffers) 5 Offset 64 + MemberDecorate 31(Buffers) 6 Offset 96 + Decorate 31(Buffers) Block + Decorate 35(data) DescriptorSet 0 + Decorate 35(data) Binding 0 + Decorate 552 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9(roblock): TypeStruct 6(int) + 10: TypePointer StorageBuffer 9(roblock) + 11(ro): 10(ptr) Variable StorageBuffer + 12: TypeInt 32 1 + 13: 12(int) Constant 0 + 14: TypePointer StorageBuffer 6(int) + 17: TypeInt 8 1 + 18: TypeVector 17(int8_t) 4 + 19: TypeInt 8 0 + 20: TypeVector 19(int8_t) 4 + 21: TypeInt 16 1 + 22: TypeVector 21(int16_t) 4 + 23: TypeInt 16 0 + 24: TypeVector 23(int16_t) 4 + 25: TypeInt 64 1 + 26: TypeVector 25(int64_t) 4 + 27: TypeInt 64 0 + 28: TypeVector 27(int64_t) 4 + 29: TypeFloat 16 + 30: TypeVector 29(float16_t) 4 + 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) + 32: 6(int) Constant 4 + 33: TypeArray 31(Buffers) 32 + 34: TypePointer StorageBuffer 33 + 35(data): 34(ptr) Variable StorageBuffer + 37: 6(int) Constant 0 + 38: TypePointer StorageBuffer 17(int8_t) + 42: 6(int) Constant 3 + 46: 12(int) Constant 1 + 47: TypeVector 17(int8_t) 2 + 48: TypePointer StorageBuffer 18(i8vec4) + 56: 6(int) Constant 1 + 60: 12(int) Constant 2 + 61: TypeVector 17(int8_t) 3 + 71: 6(int) Constant 2 + 75: 12(int) Constant 3 + 116: TypePointer StorageBuffer 19(int8_t) + 123: TypeVector 19(int8_t) 2 + 124: TypePointer StorageBuffer 20(i8vec4) + 135: TypeVector 19(int8_t) 3 + 188: TypePointer StorageBuffer 21(int16_t) + 195: TypeVector 21(int16_t) 2 + 196: TypePointer StorageBuffer 22(i16vec4) + 207: TypeVector 21(int16_t) 3 + 260: TypePointer StorageBuffer 23(int16_t) + 267: TypeVector 23(int16_t) 2 + 268: TypePointer StorageBuffer 24(i16vec4) + 279: TypeVector 23(int16_t) 3 + 332: 12(int) Constant 4 + 333: TypePointer StorageBuffer 25(int64_t) + 340: TypeVector 25(int64_t) 2 + 341: TypePointer StorageBuffer 26(i64vec4) + 352: TypeVector 25(int64_t) 3 + 405: 12(int) Constant 5 + 406: TypePointer StorageBuffer 27(int64_t) + 413: TypeVector 27(int64_t) 2 + 414: TypePointer StorageBuffer 28(i64vec4) + 425: TypeVector 27(int64_t) 3 + 478: 12(int) Constant 6 + 479: TypePointer StorageBuffer 29(float16_t) + 486: TypeVector 29(float16_t) 2 + 487: TypePointer StorageBuffer 30(f16vec4) + 498: TypeVector 29(float16_t) 3 + 550: TypeVector 6(int) 3 + 551: 6(int) Constant 8 + 552: 550(ivec3) ConstantComposite 551 56 56 + 4(main): 2 Function None 3 + 5: Label + 8(delta): 7(ptr) Variable Function + 15: 14(ptr) AccessChain 11(ro) 13 + 16: 6(int) Load 15 + Store 8(delta) 16 + 36: 6(int) Load 8(delta) + 39: 38(ptr) AccessChain 35(data) 13 13 37 + 40: 17(int8_t) Load 39 + 41: 6(int) Load 8(delta) + 43: 17(int8_t) GroupNonUniformRotateKHR 42 40 41 + 44: 38(ptr) AccessChain 35(data) 36 13 37 + Store 44 43 + 45: 6(int) Load 8(delta) + 49: 48(ptr) AccessChain 35(data) 46 13 + 50: 18(i8vec4) Load 49 + 51: 47(i8vec2) VectorShuffle 50 50 0 1 + 52: 6(int) Load 8(delta) + 53: 47(i8vec2) GroupNonUniformRotateKHR 42 51 52 + 54: 38(ptr) AccessChain 35(data) 45 13 37 + 55: 17(int8_t) CompositeExtract 53 0 + Store 54 55 + 57: 38(ptr) AccessChain 35(data) 45 13 56 + 58: 17(int8_t) CompositeExtract 53 1 + Store 57 58 + 59: 6(int) Load 8(delta) + 62: 48(ptr) AccessChain 35(data) 60 13 + 63: 18(i8vec4) Load 62 + 64: 61(i8vec3) VectorShuffle 63 63 0 1 2 + 65: 6(int) Load 8(delta) + 66: 61(i8vec3) GroupNonUniformRotateKHR 42 64 65 + 67: 38(ptr) AccessChain 35(data) 59 13 37 + 68: 17(int8_t) CompositeExtract 66 0 + Store 67 68 + 69: 38(ptr) AccessChain 35(data) 59 13 56 + 70: 17(int8_t) CompositeExtract 66 1 + Store 69 70 + 72: 38(ptr) AccessChain 35(data) 59 13 71 + 73: 17(int8_t) CompositeExtract 66 2 + Store 72 73 + 74: 6(int) Load 8(delta) + 76: 48(ptr) AccessChain 35(data) 75 13 + 77: 18(i8vec4) Load 76 + 78: 6(int) Load 8(delta) + 79: 18(i8vec4) GroupNonUniformRotateKHR 42 77 78 + 80: 48(ptr) AccessChain 35(data) 74 13 + Store 80 79 + 81: 6(int) Load 8(delta) + 82: 38(ptr) AccessChain 35(data) 13 13 37 + 83: 17(int8_t) Load 82 + 84: 6(int) Load 8(delta) + 85: 17(int8_t) GroupNonUniformRotateKHR 42 83 84 56 + 86: 38(ptr) AccessChain 35(data) 81 13 37 + Store 86 85 + 87: 6(int) Load 8(delta) + 88: 48(ptr) AccessChain 35(data) 46 13 + 89: 18(i8vec4) Load 88 + 90: 47(i8vec2) VectorShuffle 89 89 0 1 + 91: 6(int) Load 8(delta) + 92: 47(i8vec2) GroupNonUniformRotateKHR 42 90 91 56 + 93: 38(ptr) AccessChain 35(data) 87 13 37 + 94: 17(int8_t) CompositeExtract 92 0 + Store 93 94 + 95: 38(ptr) AccessChain 35(data) 87 13 56 + 96: 17(int8_t) CompositeExtract 92 1 + Store 95 96 + 97: 6(int) Load 8(delta) + 98: 48(ptr) AccessChain 35(data) 60 13 + 99: 18(i8vec4) Load 98 + 100: 61(i8vec3) VectorShuffle 99 99 0 1 2 + 101: 6(int) Load 8(delta) + 102: 61(i8vec3) GroupNonUniformRotateKHR 42 100 101 56 + 103: 38(ptr) AccessChain 35(data) 97 13 37 + 104: 17(int8_t) CompositeExtract 102 0 + Store 103 104 + 105: 38(ptr) AccessChain 35(data) 97 13 56 + 106: 17(int8_t) CompositeExtract 102 1 + Store 105 106 + 107: 38(ptr) AccessChain 35(data) 97 13 71 + 108: 17(int8_t) CompositeExtract 102 2 + Store 107 108 + 109: 6(int) Load 8(delta) + 110: 48(ptr) AccessChain 35(data) 75 13 + 111: 18(i8vec4) Load 110 + 112: 6(int) Load 8(delta) + 113: 18(i8vec4) GroupNonUniformRotateKHR 42 111 112 56 + 114: 48(ptr) AccessChain 35(data) 109 13 + Store 114 113 + 115: 6(int) Load 8(delta) + 117: 116(ptr) AccessChain 35(data) 13 46 37 + 118: 19(int8_t) Load 117 + 119: 6(int) Load 8(delta) + 120: 19(int8_t) GroupNonUniformRotateKHR 42 118 119 + 121: 116(ptr) AccessChain 35(data) 115 46 37 + Store 121 120 + 122: 6(int) Load 8(delta) + 125: 124(ptr) AccessChain 35(data) 46 46 + 126: 20(i8vec4) Load 125 + 127: 123(i8vec2) VectorShuffle 126 126 0 1 + 128: 6(int) Load 8(delta) + 129: 123(i8vec2) GroupNonUniformRotateKHR 42 127 128 + 130: 116(ptr) AccessChain 35(data) 122 46 37 + 131: 19(int8_t) CompositeExtract 129 0 + Store 130 131 + 132: 116(ptr) AccessChain 35(data) 122 46 56 + 133: 19(int8_t) CompositeExtract 129 1 + Store 132 133 + 134: 6(int) Load 8(delta) + 136: 124(ptr) AccessChain 35(data) 60 46 + 137: 20(i8vec4) Load 136 + 138: 135(i8vec3) VectorShuffle 137 137 0 1 2 + 139: 6(int) Load 8(delta) + 140: 135(i8vec3) GroupNonUniformRotateKHR 42 138 139 + 141: 116(ptr) AccessChain 35(data) 134 46 37 + 142: 19(int8_t) CompositeExtract 140 0 + Store 141 142 + 143: 116(ptr) AccessChain 35(data) 134 46 56 + 144: 19(int8_t) CompositeExtract 140 1 + Store 143 144 + 145: 116(ptr) AccessChain 35(data) 134 46 71 + 146: 19(int8_t) CompositeExtract 140 2 + Store 145 146 + 147: 6(int) Load 8(delta) + 148: 124(ptr) AccessChain 35(data) 75 46 + 149: 20(i8vec4) Load 148 + 150: 6(int) Load 8(delta) + 151: 20(i8vec4) GroupNonUniformRotateKHR 42 149 150 + 152: 124(ptr) AccessChain 35(data) 147 46 + Store 152 151 + 153: 6(int) Load 8(delta) + 154: 116(ptr) AccessChain 35(data) 13 46 37 + 155: 19(int8_t) Load 154 + 156: 6(int) Load 8(delta) + 157: 19(int8_t) GroupNonUniformRotateKHR 42 155 156 56 + 158: 116(ptr) AccessChain 35(data) 153 46 37 + Store 158 157 + 159: 6(int) Load 8(delta) + 160: 124(ptr) AccessChain 35(data) 46 46 + 161: 20(i8vec4) Load 160 + 162: 123(i8vec2) VectorShuffle 161 161 0 1 + 163: 6(int) Load 8(delta) + 164: 123(i8vec2) GroupNonUniformRotateKHR 42 162 163 56 + 165: 116(ptr) AccessChain 35(data) 159 46 37 + 166: 19(int8_t) CompositeExtract 164 0 + Store 165 166 + 167: 116(ptr) AccessChain 35(data) 159 46 56 + 168: 19(int8_t) CompositeExtract 164 1 + Store 167 168 + 169: 6(int) Load 8(delta) + 170: 124(ptr) AccessChain 35(data) 60 46 + 171: 20(i8vec4) Load 170 + 172: 135(i8vec3) VectorShuffle 171 171 0 1 2 + 173: 6(int) Load 8(delta) + 174: 135(i8vec3) GroupNonUniformRotateKHR 42 172 173 56 + 175: 116(ptr) AccessChain 35(data) 169 46 37 + 176: 19(int8_t) CompositeExtract 174 0 + Store 175 176 + 177: 116(ptr) AccessChain 35(data) 169 46 56 + 178: 19(int8_t) CompositeExtract 174 1 + Store 177 178 + 179: 116(ptr) AccessChain 35(data) 169 46 71 + 180: 19(int8_t) CompositeExtract 174 2 + Store 179 180 + 181: 6(int) Load 8(delta) + 182: 124(ptr) AccessChain 35(data) 75 46 + 183: 20(i8vec4) Load 182 + 184: 6(int) Load 8(delta) + 185: 20(i8vec4) GroupNonUniformRotateKHR 42 183 184 56 + 186: 124(ptr) AccessChain 35(data) 181 46 + Store 186 185 + 187: 6(int) Load 8(delta) + 189: 188(ptr) AccessChain 35(data) 13 60 37 + 190: 21(int16_t) Load 189 + 191: 6(int) Load 8(delta) + 192: 21(int16_t) GroupNonUniformRotateKHR 42 190 191 + 193: 188(ptr) AccessChain 35(data) 187 60 37 + Store 193 192 + 194: 6(int) Load 8(delta) + 197: 196(ptr) AccessChain 35(data) 46 60 + 198: 22(i16vec4) Load 197 + 199:195(i16vec2) VectorShuffle 198 198 0 1 + 200: 6(int) Load 8(delta) + 201:195(i16vec2) GroupNonUniformRotateKHR 42 199 200 + 202: 188(ptr) AccessChain 35(data) 194 60 37 + 203: 21(int16_t) CompositeExtract 201 0 + Store 202 203 + 204: 188(ptr) AccessChain 35(data) 194 60 56 + 205: 21(int16_t) CompositeExtract 201 1 + Store 204 205 + 206: 6(int) Load 8(delta) + 208: 196(ptr) AccessChain 35(data) 60 60 + 209: 22(i16vec4) Load 208 + 210:207(i16vec3) VectorShuffle 209 209 0 1 2 + 211: 6(int) Load 8(delta) + 212:207(i16vec3) GroupNonUniformRotateKHR 42 210 211 + 213: 188(ptr) AccessChain 35(data) 206 60 37 + 214: 21(int16_t) CompositeExtract 212 0 + Store 213 214 + 215: 188(ptr) AccessChain 35(data) 206 60 56 + 216: 21(int16_t) CompositeExtract 212 1 + Store 215 216 + 217: 188(ptr) AccessChain 35(data) 206 60 71 + 218: 21(int16_t) CompositeExtract 212 2 + Store 217 218 + 219: 6(int) Load 8(delta) + 220: 196(ptr) AccessChain 35(data) 75 60 + 221: 22(i16vec4) Load 220 + 222: 6(int) Load 8(delta) + 223: 22(i16vec4) GroupNonUniformRotateKHR 42 221 222 + 224: 196(ptr) AccessChain 35(data) 219 60 + Store 224 223 + 225: 6(int) Load 8(delta) + 226: 188(ptr) AccessChain 35(data) 13 60 37 + 227: 21(int16_t) Load 226 + 228: 6(int) Load 8(delta) + 229: 21(int16_t) GroupNonUniformRotateKHR 42 227 228 56 + 230: 188(ptr) AccessChain 35(data) 225 60 37 + Store 230 229 + 231: 6(int) Load 8(delta) + 232: 196(ptr) AccessChain 35(data) 46 60 + 233: 22(i16vec4) Load 232 + 234:195(i16vec2) VectorShuffle 233 233 0 1 + 235: 6(int) Load 8(delta) + 236:195(i16vec2) GroupNonUniformRotateKHR 42 234 235 56 + 237: 188(ptr) AccessChain 35(data) 231 60 37 + 238: 21(int16_t) CompositeExtract 236 0 + Store 237 238 + 239: 188(ptr) AccessChain 35(data) 231 60 56 + 240: 21(int16_t) CompositeExtract 236 1 + Store 239 240 + 241: 6(int) Load 8(delta) + 242: 196(ptr) AccessChain 35(data) 60 60 + 243: 22(i16vec4) Load 242 + 244:207(i16vec3) VectorShuffle 243 243 0 1 2 + 245: 6(int) Load 8(delta) + 246:207(i16vec3) GroupNonUniformRotateKHR 42 244 245 56 + 247: 188(ptr) AccessChain 35(data) 241 60 37 + 248: 21(int16_t) CompositeExtract 246 0 + Store 247 248 + 249: 188(ptr) AccessChain 35(data) 241 60 56 + 250: 21(int16_t) CompositeExtract 246 1 + Store 249 250 + 251: 188(ptr) AccessChain 35(data) 241 60 71 + 252: 21(int16_t) CompositeExtract 246 2 + Store 251 252 + 253: 6(int) Load 8(delta) + 254: 196(ptr) AccessChain 35(data) 75 60 + 255: 22(i16vec4) Load 254 + 256: 6(int) Load 8(delta) + 257: 22(i16vec4) GroupNonUniformRotateKHR 42 255 256 56 + 258: 196(ptr) AccessChain 35(data) 253 60 + Store 258 257 + 259: 6(int) Load 8(delta) + 261: 260(ptr) AccessChain 35(data) 13 75 37 + 262: 23(int16_t) Load 261 + 263: 6(int) Load 8(delta) + 264: 23(int16_t) GroupNonUniformRotateKHR 42 262 263 + 265: 260(ptr) AccessChain 35(data) 259 75 37 + Store 265 264 + 266: 6(int) Load 8(delta) + 269: 268(ptr) AccessChain 35(data) 46 75 + 270: 24(i16vec4) Load 269 + 271:267(i16vec2) VectorShuffle 270 270 0 1 + 272: 6(int) Load 8(delta) + 273:267(i16vec2) GroupNonUniformRotateKHR 42 271 272 + 274: 260(ptr) AccessChain 35(data) 266 75 37 + 275: 23(int16_t) CompositeExtract 273 0 + Store 274 275 + 276: 260(ptr) AccessChain 35(data) 266 75 56 + 277: 23(int16_t) CompositeExtract 273 1 + Store 276 277 + 278: 6(int) Load 8(delta) + 280: 268(ptr) AccessChain 35(data) 60 75 + 281: 24(i16vec4) Load 280 + 282:279(i16vec3) VectorShuffle 281 281 0 1 2 + 283: 6(int) Load 8(delta) + 284:279(i16vec3) GroupNonUniformRotateKHR 42 282 283 + 285: 260(ptr) AccessChain 35(data) 278 75 37 + 286: 23(int16_t) CompositeExtract 284 0 + Store 285 286 + 287: 260(ptr) AccessChain 35(data) 278 75 56 + 288: 23(int16_t) CompositeExtract 284 1 + Store 287 288 + 289: 260(ptr) AccessChain 35(data) 278 75 71 + 290: 23(int16_t) CompositeExtract 284 2 + Store 289 290 + 291: 6(int) Load 8(delta) + 292: 268(ptr) AccessChain 35(data) 75 75 + 293: 24(i16vec4) Load 292 + 294: 6(int) Load 8(delta) + 295: 24(i16vec4) GroupNonUniformRotateKHR 42 293 294 + 296: 268(ptr) AccessChain 35(data) 291 75 + Store 296 295 + 297: 6(int) Load 8(delta) + 298: 260(ptr) AccessChain 35(data) 13 75 37 + 299: 23(int16_t) Load 298 + 300: 6(int) Load 8(delta) + 301: 23(int16_t) GroupNonUniformRotateKHR 42 299 300 56 + 302: 260(ptr) AccessChain 35(data) 297 75 37 + Store 302 301 + 303: 6(int) Load 8(delta) + 304: 268(ptr) AccessChain 35(data) 46 75 + 305: 24(i16vec4) Load 304 + 306:267(i16vec2) VectorShuffle 305 305 0 1 + 307: 6(int) Load 8(delta) + 308:267(i16vec2) GroupNonUniformRotateKHR 42 306 307 56 + 309: 260(ptr) AccessChain 35(data) 303 75 37 + 310: 23(int16_t) CompositeExtract 308 0 + Store 309 310 + 311: 260(ptr) AccessChain 35(data) 303 75 56 + 312: 23(int16_t) CompositeExtract 308 1 + Store 311 312 + 313: 6(int) Load 8(delta) + 314: 268(ptr) AccessChain 35(data) 60 75 + 315: 24(i16vec4) Load 314 + 316:279(i16vec3) VectorShuffle 315 315 0 1 2 + 317: 6(int) Load 8(delta) + 318:279(i16vec3) GroupNonUniformRotateKHR 42 316 317 56 + 319: 260(ptr) AccessChain 35(data) 313 75 37 + 320: 23(int16_t) CompositeExtract 318 0 + Store 319 320 + 321: 260(ptr) AccessChain 35(data) 313 75 56 + 322: 23(int16_t) CompositeExtract 318 1 + Store 321 322 + 323: 260(ptr) AccessChain 35(data) 313 75 71 + 324: 23(int16_t) CompositeExtract 318 2 + Store 323 324 + 325: 6(int) Load 8(delta) + 326: 268(ptr) AccessChain 35(data) 75 75 + 327: 24(i16vec4) Load 326 + 328: 6(int) Load 8(delta) + 329: 24(i16vec4) GroupNonUniformRotateKHR 42 327 328 56 + 330: 268(ptr) AccessChain 35(data) 325 75 + Store 330 329 + 331: 6(int) Load 8(delta) + 334: 333(ptr) AccessChain 35(data) 13 332 37 + 335: 25(int64_t) Load 334 + 336: 6(int) Load 8(delta) + 337: 25(int64_t) GroupNonUniformRotateKHR 42 335 336 + 338: 333(ptr) AccessChain 35(data) 331 332 37 + Store 338 337 + 339: 6(int) Load 8(delta) + 342: 341(ptr) AccessChain 35(data) 46 332 + 343: 26(i64vec4) Load 342 + 344:340(i64vec2) VectorShuffle 343 343 0 1 + 345: 6(int) Load 8(delta) + 346:340(i64vec2) GroupNonUniformRotateKHR 42 344 345 + 347: 333(ptr) AccessChain 35(data) 339 332 37 + 348: 25(int64_t) CompositeExtract 346 0 + Store 347 348 + 349: 333(ptr) AccessChain 35(data) 339 332 56 + 350: 25(int64_t) CompositeExtract 346 1 + Store 349 350 + 351: 6(int) Load 8(delta) + 353: 341(ptr) AccessChain 35(data) 60 332 + 354: 26(i64vec4) Load 353 + 355:352(i64vec3) VectorShuffle 354 354 0 1 2 + 356: 6(int) Load 8(delta) + 357:352(i64vec3) GroupNonUniformRotateKHR 42 355 356 + 358: 333(ptr) AccessChain 35(data) 351 332 37 + 359: 25(int64_t) CompositeExtract 357 0 + Store 358 359 + 360: 333(ptr) AccessChain 35(data) 351 332 56 + 361: 25(int64_t) CompositeExtract 357 1 + Store 360 361 + 362: 333(ptr) AccessChain 35(data) 351 332 71 + 363: 25(int64_t) CompositeExtract 357 2 + Store 362 363 + 364: 6(int) Load 8(delta) + 365: 341(ptr) AccessChain 35(data) 75 332 + 366: 26(i64vec4) Load 365 + 367: 6(int) Load 8(delta) + 368: 26(i64vec4) GroupNonUniformRotateKHR 42 366 367 + 369: 341(ptr) AccessChain 35(data) 364 332 + Store 369 368 + 370: 6(int) Load 8(delta) + 371: 333(ptr) AccessChain 35(data) 13 332 37 + 372: 25(int64_t) Load 371 + 373: 6(int) Load 8(delta) + 374: 25(int64_t) GroupNonUniformRotateKHR 42 372 373 56 + 375: 333(ptr) AccessChain 35(data) 370 332 37 + Store 375 374 + 376: 6(int) Load 8(delta) + 377: 341(ptr) AccessChain 35(data) 46 332 + 378: 26(i64vec4) Load 377 + 379:340(i64vec2) VectorShuffle 378 378 0 1 + 380: 6(int) Load 8(delta) + 381:340(i64vec2) GroupNonUniformRotateKHR 42 379 380 56 + 382: 333(ptr) AccessChain 35(data) 376 332 37 + 383: 25(int64_t) CompositeExtract 381 0 + Store 382 383 + 384: 333(ptr) AccessChain 35(data) 376 332 56 + 385: 25(int64_t) CompositeExtract 381 1 + Store 384 385 + 386: 6(int) Load 8(delta) + 387: 341(ptr) AccessChain 35(data) 60 332 + 388: 26(i64vec4) Load 387 + 389:352(i64vec3) VectorShuffle 388 388 0 1 2 + 390: 6(int) Load 8(delta) + 391:352(i64vec3) GroupNonUniformRotateKHR 42 389 390 56 + 392: 333(ptr) AccessChain 35(data) 386 332 37 + 393: 25(int64_t) CompositeExtract 391 0 + Store 392 393 + 394: 333(ptr) AccessChain 35(data) 386 332 56 + 395: 25(int64_t) CompositeExtract 391 1 + Store 394 395 + 396: 333(ptr) AccessChain 35(data) 386 332 71 + 397: 25(int64_t) CompositeExtract 391 2 + Store 396 397 + 398: 6(int) Load 8(delta) + 399: 341(ptr) AccessChain 35(data) 75 332 + 400: 26(i64vec4) Load 399 + 401: 6(int) Load 8(delta) + 402: 26(i64vec4) GroupNonUniformRotateKHR 42 400 401 56 + 403: 341(ptr) AccessChain 35(data) 398 332 + Store 403 402 + 404: 6(int) Load 8(delta) + 407: 406(ptr) AccessChain 35(data) 13 405 37 + 408: 27(int64_t) Load 407 + 409: 6(int) Load 8(delta) + 410: 27(int64_t) GroupNonUniformRotateKHR 42 408 409 + 411: 406(ptr) AccessChain 35(data) 404 405 37 + Store 411 410 + 412: 6(int) Load 8(delta) + 415: 414(ptr) AccessChain 35(data) 46 405 + 416: 28(i64vec4) Load 415 + 417:413(i64vec2) VectorShuffle 416 416 0 1 + 418: 6(int) Load 8(delta) + 419:413(i64vec2) GroupNonUniformRotateKHR 42 417 418 + 420: 406(ptr) AccessChain 35(data) 412 405 37 + 421: 27(int64_t) CompositeExtract 419 0 + Store 420 421 + 422: 406(ptr) AccessChain 35(data) 412 405 56 + 423: 27(int64_t) CompositeExtract 419 1 + Store 422 423 + 424: 6(int) Load 8(delta) + 426: 414(ptr) AccessChain 35(data) 60 405 + 427: 28(i64vec4) Load 426 + 428:425(i64vec3) VectorShuffle 427 427 0 1 2 + 429: 6(int) Load 8(delta) + 430:425(i64vec3) GroupNonUniformRotateKHR 42 428 429 + 431: 406(ptr) AccessChain 35(data) 424 405 37 + 432: 27(int64_t) CompositeExtract 430 0 + Store 431 432 + 433: 406(ptr) AccessChain 35(data) 424 405 56 + 434: 27(int64_t) CompositeExtract 430 1 + Store 433 434 + 435: 406(ptr) AccessChain 35(data) 424 405 71 + 436: 27(int64_t) CompositeExtract 430 2 + Store 435 436 + 437: 6(int) Load 8(delta) + 438: 414(ptr) AccessChain 35(data) 75 405 + 439: 28(i64vec4) Load 438 + 440: 6(int) Load 8(delta) + 441: 28(i64vec4) GroupNonUniformRotateKHR 42 439 440 + 442: 414(ptr) AccessChain 35(data) 437 405 + Store 442 441 + 443: 6(int) Load 8(delta) + 444: 406(ptr) AccessChain 35(data) 13 405 37 + 445: 27(int64_t) Load 444 + 446: 6(int) Load 8(delta) + 447: 27(int64_t) GroupNonUniformRotateKHR 42 445 446 56 + 448: 406(ptr) AccessChain 35(data) 443 405 37 + Store 448 447 + 449: 6(int) Load 8(delta) + 450: 414(ptr) AccessChain 35(data) 46 405 + 451: 28(i64vec4) Load 450 + 452:413(i64vec2) VectorShuffle 451 451 0 1 + 453: 6(int) Load 8(delta) + 454:413(i64vec2) GroupNonUniformRotateKHR 42 452 453 56 + 455: 406(ptr) AccessChain 35(data) 449 405 37 + 456: 27(int64_t) CompositeExtract 454 0 + Store 455 456 + 457: 406(ptr) AccessChain 35(data) 449 405 56 + 458: 27(int64_t) CompositeExtract 454 1 + Store 457 458 + 459: 6(int) Load 8(delta) + 460: 414(ptr) AccessChain 35(data) 60 405 + 461: 28(i64vec4) Load 460 + 462:425(i64vec3) VectorShuffle 461 461 0 1 2 + 463: 6(int) Load 8(delta) + 464:425(i64vec3) GroupNonUniformRotateKHR 42 462 463 56 + 465: 406(ptr) AccessChain 35(data) 459 405 37 + 466: 27(int64_t) CompositeExtract 464 0 + Store 465 466 + 467: 406(ptr) AccessChain 35(data) 459 405 56 + 468: 27(int64_t) CompositeExtract 464 1 + Store 467 468 + 469: 406(ptr) AccessChain 35(data) 459 405 71 + 470: 27(int64_t) CompositeExtract 464 2 + Store 469 470 + 471: 6(int) Load 8(delta) + 472: 414(ptr) AccessChain 35(data) 75 405 + 473: 28(i64vec4) Load 472 + 474: 6(int) Load 8(delta) + 475: 28(i64vec4) GroupNonUniformRotateKHR 42 473 474 56 + 476: 414(ptr) AccessChain 35(data) 471 405 + Store 476 475 + 477: 6(int) Load 8(delta) + 480: 479(ptr) AccessChain 35(data) 13 478 37 + 481:29(float16_t) Load 480 + 482: 6(int) Load 8(delta) + 483:29(float16_t) GroupNonUniformRotateKHR 42 481 482 + 484: 479(ptr) AccessChain 35(data) 477 478 37 + Store 484 483 + 485: 6(int) Load 8(delta) + 488: 487(ptr) AccessChain 35(data) 46 478 + 489: 30(f16vec4) Load 488 + 490:486(f16vec2) VectorShuffle 489 489 0 1 + 491: 6(int) Load 8(delta) + 492:486(f16vec2) GroupNonUniformRotateKHR 42 490 491 + 493: 479(ptr) AccessChain 35(data) 485 478 37 + 494:29(float16_t) CompositeExtract 492 0 + Store 493 494 + 495: 479(ptr) AccessChain 35(data) 485 478 56 + 496:29(float16_t) CompositeExtract 492 1 + Store 495 496 + 497: 6(int) Load 8(delta) + 499: 487(ptr) AccessChain 35(data) 60 478 + 500: 30(f16vec4) Load 499 + 501:498(f16vec3) VectorShuffle 500 500 0 1 2 + 502: 6(int) Load 8(delta) + 503:498(f16vec3) GroupNonUniformRotateKHR 42 501 502 + 504: 479(ptr) AccessChain 35(data) 497 478 37 + 505:29(float16_t) CompositeExtract 503 0 + Store 504 505 + 506: 479(ptr) AccessChain 35(data) 497 478 56 + 507:29(float16_t) CompositeExtract 503 1 + Store 506 507 + 508: 479(ptr) AccessChain 35(data) 497 478 71 + 509:29(float16_t) CompositeExtract 503 2 + Store 508 509 + 510: 6(int) Load 8(delta) + 511: 487(ptr) AccessChain 35(data) 75 478 + 512: 30(f16vec4) Load 511 + 513: 6(int) Load 8(delta) + 514: 30(f16vec4) GroupNonUniformRotateKHR 42 512 513 + 515: 487(ptr) AccessChain 35(data) 510 478 + Store 515 514 + 516: 6(int) Load 8(delta) + 517: 479(ptr) AccessChain 35(data) 13 478 37 + 518:29(float16_t) Load 517 + 519: 6(int) Load 8(delta) + 520:29(float16_t) GroupNonUniformRotateKHR 42 518 519 56 + 521: 479(ptr) AccessChain 35(data) 516 478 37 + Store 521 520 + 522: 6(int) Load 8(delta) + 523: 487(ptr) AccessChain 35(data) 46 478 + 524: 30(f16vec4) Load 523 + 525:486(f16vec2) VectorShuffle 524 524 0 1 + 526: 6(int) Load 8(delta) + 527:486(f16vec2) GroupNonUniformRotateKHR 42 525 526 56 + 528: 479(ptr) AccessChain 35(data) 522 478 37 + 529:29(float16_t) CompositeExtract 527 0 + Store 528 529 + 530: 479(ptr) AccessChain 35(data) 522 478 56 + 531:29(float16_t) CompositeExtract 527 1 + Store 530 531 + 532: 6(int) Load 8(delta) + 533: 487(ptr) AccessChain 35(data) 60 478 + 534: 30(f16vec4) Load 533 + 535:498(f16vec3) VectorShuffle 534 534 0 1 2 + 536: 6(int) Load 8(delta) + 537:498(f16vec3) GroupNonUniformRotateKHR 42 535 536 56 + 538: 479(ptr) AccessChain 35(data) 532 478 37 + 539:29(float16_t) CompositeExtract 537 0 + Store 538 539 + 540: 479(ptr) AccessChain 35(data) 532 478 56 + 541:29(float16_t) CompositeExtract 537 1 + Store 540 541 + 542: 479(ptr) AccessChain 35(data) 532 478 71 + 543:29(float16_t) CompositeExtract 537 2 + Store 542 543 + 544: 6(int) Load 8(delta) + 545: 487(ptr) AccessChain 35(data) 75 478 + 546: 30(f16vec4) Load 545 + 547: 6(int) Load 8(delta) + 548: 30(f16vec4) GroupNonUniformRotateKHR 42 546 547 56 + 549: 487(ptr) AccessChain 35(data) 544 478 + Store 549 548 + Return + FunctionEnd diff --git a/Test/baseResults/spv.subgroupExtendedTypesRotateNeg.comp.out b/Test/baseResults/spv.subgroupExtendedTypesRotateNeg.comp.out new file mode 100644 index 00000000..b3865067 --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesRotateNeg.comp.out @@ -0,0 +1,61 @@ +spv.subgroupExtendedTypesRotateNeg.comp +ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:36: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:37: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:38: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:41: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:42: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:43: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:46: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:47: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:48: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:51: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:52: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:53: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:56: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:57: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:58: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:61: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:62: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:63: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:66: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:67: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:68: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:71: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:72: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:73: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:76: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:77: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:78: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:81: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:82: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:83: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:86: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:87: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:88: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:89: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:91: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:92: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:93: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:94: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:96: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:97: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:98: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:99: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 56 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.subgroupRotate.comp.out b/Test/baseResults/spv.subgroupRotate.comp.out new file mode 100644 index 00000000..9c87ba63 --- /dev/null +++ b/Test/baseResults/spv.subgroupRotate.comp.out @@ -0,0 +1,528 @@ +spv.subgroupRotate.comp +// Module Version 10300 +// Generated by (magic number): 8000b +// Id's are bound by 418 + + Capability Shader + Capability Float64 + Capability CapabilityGroupNonUniformRotateKHR + Extension "SPV_KHR_subgroup_rotate" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 8 8 1 + Source GLSL 450 + SourceExtension "GL_KHR_shader_subgroup_rotate" + Name 4 "main" + Name 8 "delta" + Name 9 "roblock" + MemberName 9(roblock) 0 "delta" + Name 11 "ro" + Name 23 "Buffers" + MemberName 23(Buffers) 0 "f4" + MemberName 23(Buffers) 1 "i4" + MemberName 23(Buffers) 2 "u4" + MemberName 23(Buffers) 3 "d4" + Name 27 "data" + MemberDecorate 9(roblock) 0 NonWritable + MemberDecorate 9(roblock) 0 Offset 0 + Decorate 9(roblock) Block + Decorate 11(ro) DescriptorSet 0 + Decorate 11(ro) Binding 1 + MemberDecorate 23(Buffers) 0 Offset 0 + MemberDecorate 23(Buffers) 1 Offset 16 + MemberDecorate 23(Buffers) 2 Offset 32 + MemberDecorate 23(Buffers) 3 Offset 64 + Decorate 23(Buffers) Block + Decorate 27(data) DescriptorSet 0 + Decorate 27(data) Binding 0 + Decorate 417 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9(roblock): TypeStruct 6(int) + 10: TypePointer StorageBuffer 9(roblock) + 11(ro): 10(ptr) Variable StorageBuffer + 12: TypeInt 32 1 + 13: 12(int) Constant 0 + 14: TypePointer StorageBuffer 6(int) + 17: TypeFloat 32 + 18: TypeVector 17(float) 4 + 19: TypeVector 12(int) 4 + 20: TypeVector 6(int) 4 + 21: TypeFloat 64 + 22: TypeVector 21(float64_t) 4 + 23(Buffers): TypeStruct 18(fvec4) 19(ivec4) 20(ivec4) 22(f64vec4) + 24: 6(int) Constant 4 + 25: TypeArray 23(Buffers) 24 + 26: TypePointer StorageBuffer 25 + 27(data): 26(ptr) Variable StorageBuffer + 29: 6(int) Constant 0 + 30: TypePointer StorageBuffer 17(float) + 34: 6(int) Constant 3 + 38: 12(int) Constant 1 + 39: TypeVector 17(float) 2 + 40: TypePointer StorageBuffer 18(fvec4) + 48: 6(int) Constant 1 + 52: 12(int) Constant 2 + 53: TypeVector 17(float) 3 + 63: 6(int) Constant 2 + 67: 12(int) Constant 3 + 74: TypePointer StorageBuffer 12(int) + 81: TypeVector 12(int) 2 + 82: TypePointer StorageBuffer 19(ivec4) + 93: TypeVector 12(int) 3 + 118: TypeVector 6(int) 2 + 119: TypePointer StorageBuffer 20(ivec4) + 130: TypeVector 6(int) 3 + 149: TypePointer StorageBuffer 21(float64_t) + 156: TypeVector 21(float64_t) 2 + 157: TypePointer StorageBuffer 22(f64vec4) + 168: TypeVector 21(float64_t) 3 + 189: TypeBool + 199: 81(ivec2) ConstantComposite 13 13 + 200: TypeVector 189(bool) 2 + 204: 81(ivec2) ConstantComposite 38 38 + 214: 93(ivec3) ConstantComposite 13 13 13 + 215: TypeVector 189(bool) 3 + 219: 93(ivec3) ConstantComposite 38 38 38 + 230: 19(ivec4) ConstantComposite 13 13 13 13 + 231: TypeVector 189(bool) 4 + 235: 19(ivec4) ConstantComposite 38 38 38 38 + 416: 6(int) Constant 8 + 417: 130(ivec3) ConstantComposite 416 416 48 + 4(main): 2 Function None 3 + 5: Label + 8(delta): 7(ptr) Variable Function + 15: 14(ptr) AccessChain 11(ro) 13 + 16: 6(int) Load 15 + Store 8(delta) 16 + 28: 6(int) Load 8(delta) + 31: 30(ptr) AccessChain 27(data) 13 13 29 + 32: 17(float) Load 31 + 33: 6(int) Load 8(delta) + 35: 17(float) GroupNonUniformRotateKHR 34 32 33 + 36: 30(ptr) AccessChain 27(data) 28 13 29 + Store 36 35 + 37: 6(int) Load 8(delta) + 41: 40(ptr) AccessChain 27(data) 38 13 + 42: 18(fvec4) Load 41 + 43: 39(fvec2) VectorShuffle 42 42 0 1 + 44: 6(int) Load 8(delta) + 45: 39(fvec2) GroupNonUniformRotateKHR 34 43 44 + 46: 30(ptr) AccessChain 27(data) 37 13 29 + 47: 17(float) CompositeExtract 45 0 + Store 46 47 + 49: 30(ptr) AccessChain 27(data) 37 13 48 + 50: 17(float) CompositeExtract 45 1 + Store 49 50 + 51: 6(int) Load 8(delta) + 54: 40(ptr) AccessChain 27(data) 52 13 + 55: 18(fvec4) Load 54 + 56: 53(fvec3) VectorShuffle 55 55 0 1 2 + 57: 6(int) Load 8(delta) + 58: 53(fvec3) GroupNonUniformRotateKHR 34 56 57 + 59: 30(ptr) AccessChain 27(data) 51 13 29 + 60: 17(float) CompositeExtract 58 0 + Store 59 60 + 61: 30(ptr) AccessChain 27(data) 51 13 48 + 62: 17(float) CompositeExtract 58 1 + Store 61 62 + 64: 30(ptr) AccessChain 27(data) 51 13 63 + 65: 17(float) CompositeExtract 58 2 + Store 64 65 + 66: 6(int) Load 8(delta) + 68: 40(ptr) AccessChain 27(data) 67 13 + 69: 18(fvec4) Load 68 + 70: 6(int) Load 8(delta) + 71: 18(fvec4) GroupNonUniformRotateKHR 34 69 70 + 72: 40(ptr) AccessChain 27(data) 66 13 + Store 72 71 + 73: 6(int) Load 8(delta) + 75: 74(ptr) AccessChain 27(data) 13 38 29 + 76: 12(int) Load 75 + 77: 6(int) Load 8(delta) + 78: 12(int) GroupNonUniformRotateKHR 34 76 77 + 79: 74(ptr) AccessChain 27(data) 73 38 29 + Store 79 78 + 80: 6(int) Load 8(delta) + 83: 82(ptr) AccessChain 27(data) 38 38 + 84: 19(ivec4) Load 83 + 85: 81(ivec2) VectorShuffle 84 84 0 1 + 86: 6(int) Load 8(delta) + 87: 81(ivec2) GroupNonUniformRotateKHR 34 85 86 + 88: 74(ptr) AccessChain 27(data) 80 38 29 + 89: 12(int) CompositeExtract 87 0 + Store 88 89 + 90: 74(ptr) AccessChain 27(data) 80 38 48 + 91: 12(int) CompositeExtract 87 1 + Store 90 91 + 92: 6(int) Load 8(delta) + 94: 82(ptr) AccessChain 27(data) 52 38 + 95: 19(ivec4) Load 94 + 96: 93(ivec3) VectorShuffle 95 95 0 1 2 + 97: 6(int) Load 8(delta) + 98: 93(ivec3) GroupNonUniformRotateKHR 34 96 97 + 99: 74(ptr) AccessChain 27(data) 92 38 29 + 100: 12(int) CompositeExtract 98 0 + Store 99 100 + 101: 74(ptr) AccessChain 27(data) 92 38 48 + 102: 12(int) CompositeExtract 98 1 + Store 101 102 + 103: 74(ptr) AccessChain 27(data) 92 38 63 + 104: 12(int) CompositeExtract 98 2 + Store 103 104 + 105: 6(int) Load 8(delta) + 106: 82(ptr) AccessChain 27(data) 67 38 + 107: 19(ivec4) Load 106 + 108: 6(int) Load 8(delta) + 109: 19(ivec4) GroupNonUniformRotateKHR 34 107 108 + 110: 82(ptr) AccessChain 27(data) 105 38 + Store 110 109 + 111: 6(int) Load 8(delta) + 112: 14(ptr) AccessChain 27(data) 13 52 29 + 113: 6(int) Load 112 + 114: 6(int) Load 8(delta) + 115: 6(int) GroupNonUniformRotateKHR 34 113 114 + 116: 14(ptr) AccessChain 27(data) 111 52 29 + Store 116 115 + 117: 6(int) Load 8(delta) + 120: 119(ptr) AccessChain 27(data) 38 52 + 121: 20(ivec4) Load 120 + 122: 118(ivec2) VectorShuffle 121 121 0 1 + 123: 6(int) Load 8(delta) + 124: 118(ivec2) GroupNonUniformRotateKHR 34 122 123 + 125: 14(ptr) AccessChain 27(data) 117 52 29 + 126: 6(int) CompositeExtract 124 0 + Store 125 126 + 127: 14(ptr) AccessChain 27(data) 117 52 48 + 128: 6(int) CompositeExtract 124 1 + Store 127 128 + 129: 6(int) Load 8(delta) + 131: 119(ptr) AccessChain 27(data) 52 52 + 132: 20(ivec4) Load 131 + 133: 130(ivec3) VectorShuffle 132 132 0 1 2 + 134: 6(int) Load 8(delta) + 135: 130(ivec3) GroupNonUniformRotateKHR 34 133 134 + 136: 14(ptr) AccessChain 27(data) 129 52 29 + 137: 6(int) CompositeExtract 135 0 + Store 136 137 + 138: 14(ptr) AccessChain 27(data) 129 52 48 + 139: 6(int) CompositeExtract 135 1 + Store 138 139 + 140: 14(ptr) AccessChain 27(data) 129 52 63 + 141: 6(int) CompositeExtract 135 2 + Store 140 141 + 142: 6(int) Load 8(delta) + 143: 119(ptr) AccessChain 27(data) 67 52 + 144: 20(ivec4) Load 143 + 145: 6(int) Load 8(delta) + 146: 20(ivec4) GroupNonUniformRotateKHR 34 144 145 + 147: 119(ptr) AccessChain 27(data) 142 52 + Store 147 146 + 148: 6(int) Load 8(delta) + 150: 149(ptr) AccessChain 27(data) 13 67 29 + 151:21(float64_t) Load 150 + 152: 6(int) Load 8(delta) + 153:21(float64_t) GroupNonUniformRotateKHR 34 151 152 + 154: 149(ptr) AccessChain 27(data) 148 67 29 + Store 154 153 + 155: 6(int) Load 8(delta) + 158: 157(ptr) AccessChain 27(data) 38 67 + 159: 22(f64vec4) Load 158 + 160:156(f64vec2) VectorShuffle 159 159 0 1 + 161: 6(int) Load 8(delta) + 162:156(f64vec2) GroupNonUniformRotateKHR 34 160 161 + 163: 149(ptr) AccessChain 27(data) 155 67 29 + 164:21(float64_t) CompositeExtract 162 0 + Store 163 164 + 165: 149(ptr) AccessChain 27(data) 155 67 48 + 166:21(float64_t) CompositeExtract 162 1 + Store 165 166 + 167: 6(int) Load 8(delta) + 169: 157(ptr) AccessChain 27(data) 52 67 + 170: 22(f64vec4) Load 169 + 171:168(f64vec3) VectorShuffle 170 170 0 1 2 + 172: 6(int) Load 8(delta) + 173:168(f64vec3) GroupNonUniformRotateKHR 34 171 172 + 174: 149(ptr) AccessChain 27(data) 167 67 29 + 175:21(float64_t) CompositeExtract 173 0 + Store 174 175 + 176: 149(ptr) AccessChain 27(data) 167 67 48 + 177:21(float64_t) CompositeExtract 173 1 + Store 176 177 + 178: 149(ptr) AccessChain 27(data) 167 67 63 + 179:21(float64_t) CompositeExtract 173 2 + Store 178 179 + 180: 6(int) Load 8(delta) + 181: 157(ptr) AccessChain 27(data) 67 67 + 182: 22(f64vec4) Load 181 + 183: 6(int) Load 8(delta) + 184: 22(f64vec4) GroupNonUniformRotateKHR 34 182 183 + 185: 157(ptr) AccessChain 27(data) 180 67 + Store 185 184 + 186: 6(int) Load 8(delta) + 187: 74(ptr) AccessChain 27(data) 13 38 29 + 188: 12(int) Load 187 + 190: 189(bool) SLessThan 188 13 + 191: 6(int) Load 8(delta) + 192: 189(bool) GroupNonUniformRotateKHR 34 190 191 + 193: 12(int) Select 192 38 13 + 194: 74(ptr) AccessChain 27(data) 186 38 29 + Store 194 193 + 195: 6(int) Load 8(delta) + 196: 82(ptr) AccessChain 27(data) 38 38 + 197: 19(ivec4) Load 196 + 198: 81(ivec2) VectorShuffle 197 197 0 1 + 201: 200(bvec2) SLessThan 198 199 + 202: 6(int) Load 8(delta) + 203: 200(bvec2) GroupNonUniformRotateKHR 34 201 202 + 205: 81(ivec2) Select 203 204 199 + 206: 74(ptr) AccessChain 27(data) 195 38 29 + 207: 12(int) CompositeExtract 205 0 + Store 206 207 + 208: 74(ptr) AccessChain 27(data) 195 38 48 + 209: 12(int) CompositeExtract 205 1 + Store 208 209 + 210: 6(int) Load 8(delta) + 211: 82(ptr) AccessChain 27(data) 38 38 + 212: 19(ivec4) Load 211 + 213: 93(ivec3) VectorShuffle 212 212 0 1 2 + 216: 215(bvec3) SLessThan 213 214 + 217: 6(int) Load 8(delta) + 218: 215(bvec3) GroupNonUniformRotateKHR 34 216 217 + 220: 93(ivec3) Select 218 219 214 + 221: 74(ptr) AccessChain 27(data) 210 38 29 + 222: 12(int) CompositeExtract 220 0 + Store 221 222 + 223: 74(ptr) AccessChain 27(data) 210 38 48 + 224: 12(int) CompositeExtract 220 1 + Store 223 224 + 225: 74(ptr) AccessChain 27(data) 210 38 63 + 226: 12(int) CompositeExtract 220 2 + Store 225 226 + 227: 6(int) Load 8(delta) + 228: 82(ptr) AccessChain 27(data) 38 38 + 229: 19(ivec4) Load 228 + 232: 231(bvec4) SLessThan 229 230 + 233: 6(int) Load 8(delta) + 234: 231(bvec4) GroupNonUniformRotateKHR 34 232 233 + 236: 19(ivec4) Select 234 235 230 + 237: 82(ptr) AccessChain 27(data) 227 38 + Store 237 236 + 238: 6(int) Load 8(delta) + 239: 30(ptr) AccessChain 27(data) 13 13 29 + 240: 17(float) Load 239 + 241: 6(int) Load 8(delta) + 242: 17(float) GroupNonUniformRotateKHR 34 240 241 48 + 243: 30(ptr) AccessChain 27(data) 238 13 29 + Store 243 242 + 244: 6(int) Load 8(delta) + 245: 40(ptr) AccessChain 27(data) 38 13 + 246: 18(fvec4) Load 245 + 247: 39(fvec2) VectorShuffle 246 246 0 1 + 248: 6(int) Load 8(delta) + 249: 39(fvec2) GroupNonUniformRotateKHR 34 247 248 48 + 250: 30(ptr) AccessChain 27(data) 244 13 29 + 251: 17(float) CompositeExtract 249 0 + Store 250 251 + 252: 30(ptr) AccessChain 27(data) 244 13 48 + 253: 17(float) CompositeExtract 249 1 + Store 252 253 + 254: 6(int) Load 8(delta) + 255: 40(ptr) AccessChain 27(data) 52 13 + 256: 18(fvec4) Load 255 + 257: 53(fvec3) VectorShuffle 256 256 0 1 2 + 258: 6(int) Load 8(delta) + 259: 53(fvec3) GroupNonUniformRotateKHR 34 257 258 48 + 260: 30(ptr) AccessChain 27(data) 254 13 29 + 261: 17(float) CompositeExtract 259 0 + Store 260 261 + 262: 30(ptr) AccessChain 27(data) 254 13 48 + 263: 17(float) CompositeExtract 259 1 + Store 262 263 + 264: 30(ptr) AccessChain 27(data) 254 13 63 + 265: 17(float) CompositeExtract 259 2 + Store 264 265 + 266: 6(int) Load 8(delta) + 267: 40(ptr) AccessChain 27(data) 67 13 + 268: 18(fvec4) Load 267 + 269: 6(int) Load 8(delta) + 270: 18(fvec4) GroupNonUniformRotateKHR 34 268 269 48 + 271: 40(ptr) AccessChain 27(data) 266 13 + Store 271 270 + 272: 6(int) Load 8(delta) + 273: 74(ptr) AccessChain 27(data) 13 38 29 + 274: 12(int) Load 273 + 275: 6(int) Load 8(delta) + 276: 12(int) GroupNonUniformRotateKHR 34 274 275 48 + 277: 74(ptr) AccessChain 27(data) 272 38 29 + Store 277 276 + 278: 6(int) Load 8(delta) + 279: 82(ptr) AccessChain 27(data) 38 38 + 280: 19(ivec4) Load 279 + 281: 81(ivec2) VectorShuffle 280 280 0 1 + 282: 6(int) Load 8(delta) + 283: 81(ivec2) GroupNonUniformRotateKHR 34 281 282 48 + 284: 74(ptr) AccessChain 27(data) 278 38 29 + 285: 12(int) CompositeExtract 283 0 + Store 284 285 + 286: 74(ptr) AccessChain 27(data) 278 38 48 + 287: 12(int) CompositeExtract 283 1 + Store 286 287 + 288: 6(int) Load 8(delta) + 289: 82(ptr) AccessChain 27(data) 52 38 + 290: 19(ivec4) Load 289 + 291: 93(ivec3) VectorShuffle 290 290 0 1 2 + 292: 6(int) Load 8(delta) + 293: 93(ivec3) GroupNonUniformRotateKHR 34 291 292 48 + 294: 74(ptr) AccessChain 27(data) 288 38 29 + 295: 12(int) CompositeExtract 293 0 + Store 294 295 + 296: 74(ptr) AccessChain 27(data) 288 38 48 + 297: 12(int) CompositeExtract 293 1 + Store 296 297 + 298: 74(ptr) AccessChain 27(data) 288 38 63 + 299: 12(int) CompositeExtract 293 2 + Store 298 299 + 300: 6(int) Load 8(delta) + 301: 82(ptr) AccessChain 27(data) 67 38 + 302: 19(ivec4) Load 301 + 303: 6(int) Load 8(delta) + 304: 19(ivec4) GroupNonUniformRotateKHR 34 302 303 48 + 305: 82(ptr) AccessChain 27(data) 300 38 + Store 305 304 + 306: 6(int) Load 8(delta) + 307: 14(ptr) AccessChain 27(data) 13 52 29 + 308: 6(int) Load 307 + 309: 6(int) Load 8(delta) + 310: 6(int) GroupNonUniformRotateKHR 34 308 309 48 + 311: 14(ptr) AccessChain 27(data) 306 52 29 + Store 311 310 + 312: 6(int) Load 8(delta) + 313: 119(ptr) AccessChain 27(data) 38 52 + 314: 20(ivec4) Load 313 + 315: 118(ivec2) VectorShuffle 314 314 0 1 + 316: 6(int) Load 8(delta) + 317: 118(ivec2) GroupNonUniformRotateKHR 34 315 316 48 + 318: 14(ptr) AccessChain 27(data) 312 52 29 + 319: 6(int) CompositeExtract 317 0 + Store 318 319 + 320: 14(ptr) AccessChain 27(data) 312 52 48 + 321: 6(int) CompositeExtract 317 1 + Store 320 321 + 322: 6(int) Load 8(delta) + 323: 119(ptr) AccessChain 27(data) 52 52 + 324: 20(ivec4) Load 323 + 325: 130(ivec3) VectorShuffle 324 324 0 1 2 + 326: 6(int) Load 8(delta) + 327: 130(ivec3) GroupNonUniformRotateKHR 34 325 326 48 + 328: 14(ptr) AccessChain 27(data) 322 52 29 + 329: 6(int) CompositeExtract 327 0 + Store 328 329 + 330: 14(ptr) AccessChain 27(data) 322 52 48 + 331: 6(int) CompositeExtract 327 1 + Store 330 331 + 332: 14(ptr) AccessChain 27(data) 322 52 63 + 333: 6(int) CompositeExtract 327 2 + Store 332 333 + 334: 6(int) Load 8(delta) + 335: 119(ptr) AccessChain 27(data) 67 52 + 336: 20(ivec4) Load 335 + 337: 6(int) Load 8(delta) + 338: 20(ivec4) GroupNonUniformRotateKHR 34 336 337 48 + 339: 119(ptr) AccessChain 27(data) 334 52 + Store 339 338 + 340: 6(int) Load 8(delta) + 341: 149(ptr) AccessChain 27(data) 13 67 29 + 342:21(float64_t) Load 341 + 343: 6(int) Load 8(delta) + 344:21(float64_t) GroupNonUniformRotateKHR 34 342 343 48 + 345: 149(ptr) AccessChain 27(data) 340 67 29 + Store 345 344 + 346: 6(int) Load 8(delta) + 347: 157(ptr) AccessChain 27(data) 38 67 + 348: 22(f64vec4) Load 347 + 349:156(f64vec2) VectorShuffle 348 348 0 1 + 350: 6(int) Load 8(delta) + 351:156(f64vec2) GroupNonUniformRotateKHR 34 349 350 48 + 352: 149(ptr) AccessChain 27(data) 346 67 29 + 353:21(float64_t) CompositeExtract 351 0 + Store 352 353 + 354: 149(ptr) AccessChain 27(data) 346 67 48 + 355:21(float64_t) CompositeExtract 351 1 + Store 354 355 + 356: 6(int) Load 8(delta) + 357: 157(ptr) AccessChain 27(data) 52 67 + 358: 22(f64vec4) Load 357 + 359:168(f64vec3) VectorShuffle 358 358 0 1 2 + 360: 6(int) Load 8(delta) + 361:168(f64vec3) GroupNonUniformRotateKHR 34 359 360 48 + 362: 149(ptr) AccessChain 27(data) 356 67 29 + 363:21(float64_t) CompositeExtract 361 0 + Store 362 363 + 364: 149(ptr) AccessChain 27(data) 356 67 48 + 365:21(float64_t) CompositeExtract 361 1 + Store 364 365 + 366: 149(ptr) AccessChain 27(data) 356 67 63 + 367:21(float64_t) CompositeExtract 361 2 + Store 366 367 + 368: 6(int) Load 8(delta) + 369: 157(ptr) AccessChain 27(data) 67 67 + 370: 22(f64vec4) Load 369 + 371: 6(int) Load 8(delta) + 372: 22(f64vec4) GroupNonUniformRotateKHR 34 370 371 48 + 373: 157(ptr) AccessChain 27(data) 368 67 + Store 373 372 + 374: 6(int) Load 8(delta) + 375: 74(ptr) AccessChain 27(data) 13 38 29 + 376: 12(int) Load 375 + 377: 189(bool) SLessThan 376 13 + 378: 6(int) Load 8(delta) + 379: 189(bool) GroupNonUniformRotateKHR 34 377 378 48 + 380: 12(int) Select 379 38 13 + 381: 74(ptr) AccessChain 27(data) 374 38 29 + Store 381 380 + 382: 6(int) Load 8(delta) + 383: 82(ptr) AccessChain 27(data) 38 38 + 384: 19(ivec4) Load 383 + 385: 81(ivec2) VectorShuffle 384 384 0 1 + 386: 200(bvec2) SLessThan 385 199 + 387: 6(int) Load 8(delta) + 388: 200(bvec2) GroupNonUniformRotateKHR 34 386 387 48 + 389: 81(ivec2) Select 388 204 199 + 390: 74(ptr) AccessChain 27(data) 382 38 29 + 391: 12(int) CompositeExtract 389 0 + Store 390 391 + 392: 74(ptr) AccessChain 27(data) 382 38 48 + 393: 12(int) CompositeExtract 389 1 + Store 392 393 + 394: 6(int) Load 8(delta) + 395: 82(ptr) AccessChain 27(data) 38 38 + 396: 19(ivec4) Load 395 + 397: 93(ivec3) VectorShuffle 396 396 0 1 2 + 398: 215(bvec3) SLessThan 397 214 + 399: 6(int) Load 8(delta) + 400: 215(bvec3) GroupNonUniformRotateKHR 34 398 399 48 + 401: 93(ivec3) Select 400 219 214 + 402: 74(ptr) AccessChain 27(data) 394 38 29 + 403: 12(int) CompositeExtract 401 0 + Store 402 403 + 404: 74(ptr) AccessChain 27(data) 394 38 48 + 405: 12(int) CompositeExtract 401 1 + Store 404 405 + 406: 74(ptr) AccessChain 27(data) 394 38 63 + 407: 12(int) CompositeExtract 401 2 + Store 406 407 + 408: 6(int) Load 8(delta) + 409: 82(ptr) AccessChain 27(data) 38 38 + 410: 19(ivec4) Load 409 + 411: 231(bvec4) SLessThan 410 230 + 412: 6(int) Load 8(delta) + 413: 231(bvec4) GroupNonUniformRotateKHR 34 411 412 48 + 414: 19(ivec4) Select 413 235 230 + 415: 82(ptr) AccessChain 27(data) 408 38 + Store 415 414 + Return + FunctionEnd diff --git a/Test/glsl.450.subgroupRotate.comp b/Test/glsl.450.subgroupRotate.comp new file mode 100644 index 00000000..7f8c007e --- /dev/null +++ b/Test/glsl.450.subgroupRotate.comp @@ -0,0 +1,73 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_rotate: enable + +layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; + +readonly buffer roblock +{ + uint delta; +} ro; + +layout(binding = 0) buffer Buffers +{ + vec4 f4; + ivec4 i4; + uvec4 u4; + dvec4 d4; +} data[4]; + +void main() +{ + uint delta = ro.delta; + + data[delta].f4.x = subgroupRotate(data[0].f4.x, delta); + data[delta].f4.xy = subgroupRotate(data[1].f4.xy, delta); + data[delta].f4.xyz = subgroupRotate(data[2].f4.xyz, delta); + data[delta].f4 = subgroupRotate(data[3].f4, delta); + + data[delta].i4.x = subgroupRotate(data[0].i4.x, delta); + data[delta].i4.xy = subgroupRotate(data[1].i4.xy, delta); + data[delta].i4.xyz = subgroupRotate(data[2].i4.xyz, delta); + data[delta].i4 = subgroupRotate(data[3].i4, delta); + + data[delta].u4.x = subgroupRotate(data[0].u4.x, delta); + data[delta].u4.xy = subgroupRotate(data[1].u4.xy, delta); + data[delta].u4.xyz = subgroupRotate(data[2].u4.xyz, delta); + data[delta].u4 = subgroupRotate(data[3].u4, delta); + + data[delta].d4.x = subgroupRotate(data[0].d4.x, delta); + data[delta].d4.xy = subgroupRotate(data[1].d4.xy, delta); + data[delta].d4.xyz = subgroupRotate(data[2].d4.xyz, delta); + data[delta].d4 = subgroupRotate(data[3].d4, delta); + + data[delta].i4.x = int(subgroupRotate(data[0].i4.x < 0, delta)); + data[delta].i4.xy = ivec2(subgroupRotate(lessThan(data[1].i4.xy, ivec2(0)), delta)); + data[delta].i4.xyz = ivec3(subgroupRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta)); + data[delta].i4 = ivec4(subgroupRotate(lessThan(data[1].i4, ivec4(0)), delta)); + + data[delta].f4.x = subgroupClusteredRotate(data[0].f4.x, delta, 1); + data[delta].f4.xy = subgroupClusteredRotate(data[1].f4.xy, delta, 1); + data[delta].f4.xyz = subgroupClusteredRotate(data[2].f4.xyz, delta, 1); + data[delta].f4 = subgroupClusteredRotate(data[3].f4, delta, 1); + + data[delta].i4.x = subgroupClusteredRotate(data[0].i4.x, delta, 1); + data[delta].i4.xy = subgroupClusteredRotate(data[1].i4.xy, delta, 1); + data[delta].i4.xyz = subgroupClusteredRotate(data[2].i4.xyz, delta, 1); + data[delta].i4 = subgroupClusteredRotate(data[3].i4, delta, 1); + + data[delta].u4.x = subgroupClusteredRotate(data[0].u4.x, delta, 1); + data[delta].u4.xy = subgroupClusteredRotate(data[1].u4.xy, delta, 1); + data[delta].u4.xyz = subgroupClusteredRotate(data[2].u4.xyz, delta, 1); + data[delta].u4 = subgroupClusteredRotate(data[3].u4, delta, 1); + + data[delta].d4.x = subgroupClusteredRotate(data[0].d4.x, delta, 1); + data[delta].d4.xy = subgroupClusteredRotate(data[1].d4.xy, delta, 1); + data[delta].d4.xyz = subgroupClusteredRotate(data[2].d4.xyz, delta, 1); + data[delta].d4 = subgroupClusteredRotate(data[3].d4, delta, 1); + + data[delta].i4.x = int(subgroupClusteredRotate(data[0].i4.x < 0, delta, 1)); + data[delta].i4.xy = ivec2(subgroupClusteredRotate(lessThan(data[1].i4.xy, ivec2(0)), delta, 1)); + data[delta].i4.xyz = ivec3(subgroupClusteredRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta, 1)); + data[delta].i4 = ivec4(subgroupClusteredRotate(lessThan(data[1].i4, ivec4(0)), delta, 1)); +} diff --git a/Test/glsl.es320.subgroupRotate.comp b/Test/glsl.es320.subgroupRotate.comp new file mode 100644 index 00000000..c59a84bb --- /dev/null +++ b/Test/glsl.es320.subgroupRotate.comp @@ -0,0 +1,62 @@ +#version 320 es + +#extension GL_KHR_shader_subgroup_rotate: enable + +layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; + +readonly buffer roblock +{ + uint delta; +} ro; + +layout(binding = 0) buffer Buffers +{ + vec4 f4; + ivec4 i4; + uvec4 u4; +} data[4]; + +void main() +{ + uint delta = ro.delta; + + data[0].f4.x = subgroupRotate(data[0].f4.x, delta); + data[0].f4.xy = subgroupRotate(data[1].f4.xy, delta); + data[0].f4.xyz = subgroupRotate(data[2].f4.xyz, delta); + data[0].f4 = subgroupRotate(data[3].f4, delta); + + data[0].i4.x = subgroupRotate(data[0].i4.x, delta); + data[0].i4.xy = subgroupRotate(data[1].i4.xy, delta); + data[0].i4.xyz = subgroupRotate(data[2].i4.xyz, delta); + data[0].i4 = subgroupRotate(data[3].i4, delta); + + data[1].u4.x = subgroupRotate(data[0].u4.x, delta); + data[1].u4.xy = subgroupRotate(data[1].u4.xy, delta); + data[1].u4.xyz = subgroupRotate(data[2].u4.xyz, delta); + data[1].u4 = subgroupRotate(data[3].u4, delta); + + data[1].i4.x = int(subgroupRotate(data[0].i4.x < 0, delta)); + data[1].i4.xy = ivec2(subgroupRotate(lessThan(data[1].i4.xy, ivec2(0)), delta)); + data[1].i4.xyz = ivec3(subgroupRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta)); + data[1].i4 = ivec4(subgroupRotate(lessThan(data[1].i4, ivec4(0)), delta)); + + data[2].f4.x = subgroupClusteredRotate(data[0].f4.x, delta, 1u); + data[2].f4.xy = subgroupClusteredRotate(data[1].f4.xy, delta, 1u); + data[2].f4.xyz = subgroupClusteredRotate(data[2].f4.xyz, delta, 1u); + data[2].f4 = subgroupClusteredRotate(data[3].f4, delta, 1u); + + data[2].i4.x = subgroupClusteredRotate(data[0].i4.x, delta, 1u); + data[2].i4.xy = subgroupClusteredRotate(data[1].i4.xy, delta, 1u); + data[2].i4.xyz = subgroupClusteredRotate(data[2].i4.xyz, delta, 1u); + data[2].i4 = subgroupClusteredRotate(data[3].i4, delta, 1u); + + data[3].u4.x = subgroupClusteredRotate(data[0].u4.x, delta, 1u); + data[3].u4.xy = subgroupClusteredRotate(data[1].u4.xy, delta, 1u); + data[3].u4.xyz = subgroupClusteredRotate(data[2].u4.xyz, delta, 1u); + data[3].u4 = subgroupClusteredRotate(data[3].u4, delta, 1u); + + data[3].i4.x = int(subgroupClusteredRotate(data[0].i4.x < 0, delta, 1u)); + data[3].i4.xy = ivec2(subgroupClusteredRotate(lessThan(data[1].i4.xy, ivec2(0)), delta, 1u)); + data[3].i4.xyz = ivec3(subgroupClusteredRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta, 1u)); + data[3].i4 = ivec4(subgroupClusteredRotate(lessThan(data[1].i4, ivec4(0)), delta, 1u)); +} diff --git a/Test/spv.subgroupExtendedTypesRotate.comp b/Test/spv.subgroupExtendedTypesRotate.comp new file mode 100644 index 00000000..a83335fa --- /dev/null +++ b/Test/spv.subgroupExtendedTypesRotate.comp @@ -0,0 +1,100 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_rotate: enable +#extension GL_EXT_shader_subgroup_extended_types_int8: enable +#extension GL_EXT_shader_subgroup_extended_types_int16: enable +#extension GL_EXT_shader_subgroup_extended_types_int64: enable +#extension GL_EXT_shader_subgroup_extended_types_float16: enable + +layout (local_size_x = 8) in; + +readonly buffer roblock +{ + uint delta; +} ro; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint delta = ro.delta; + + data[delta].i8.x = subgroupRotate(data[0].i8.x, delta); + data[delta].i8.xy = subgroupRotate(data[1].i8.xy, delta); + data[delta].i8.xyz = subgroupRotate(data[2].i8.xyz, delta); + data[delta].i8 = subgroupRotate(data[3].i8, delta); + + data[delta].i8.x = subgroupClusteredRotate(data[0].i8.x, delta, 1); + data[delta].i8.xy = subgroupClusteredRotate(data[1].i8.xy, delta, 1); + data[delta].i8.xyz = subgroupClusteredRotate(data[2].i8.xyz, delta, 1); + data[delta].i8 = subgroupClusteredRotate(data[3].i8, delta, 1); + + data[delta].u8.x = subgroupRotate(data[0].u8.x, delta); + data[delta].u8.xy = subgroupRotate(data[1].u8.xy, delta); + data[delta].u8.xyz = subgroupRotate(data[2].u8.xyz, delta); + data[delta].u8 = subgroupRotate(data[3].u8, delta); + + data[delta].u8.x = subgroupClusteredRotate(data[0].u8.x, delta, 1); + data[delta].u8.xy = subgroupClusteredRotate(data[1].u8.xy, delta, 1); + data[delta].u8.xyz = subgroupClusteredRotate(data[2].u8.xyz, delta, 1); + data[delta].u8 = subgroupClusteredRotate(data[3].u8, delta, 1); + + data[delta].i16.x = subgroupRotate(data[0].i16.x, delta); + data[delta].i16.xy = subgroupRotate(data[1].i16.xy, delta); + data[delta].i16.xyz = subgroupRotate(data[2].i16.xyz, delta); + data[delta].i16 = subgroupRotate(data[3].i16, delta); + + data[delta].i16.x = subgroupClusteredRotate(data[0].i16.x, delta, 1); + data[delta].i16.xy = subgroupClusteredRotate(data[1].i16.xy, delta, 1); + data[delta].i16.xyz = subgroupClusteredRotate(data[2].i16.xyz, delta, 1); + data[delta].i16 = subgroupClusteredRotate(data[3].i16, delta, 1); + + data[delta].u16.x = subgroupRotate(data[0].u16.x, delta); + data[delta].u16.xy = subgroupRotate(data[1].u16.xy, delta); + data[delta].u16.xyz = subgroupRotate(data[2].u16.xyz, delta); + data[delta].u16 = subgroupRotate(data[3].u16, delta); + + data[delta].u16.x = subgroupClusteredRotate(data[0].u16.x, delta, 1); + data[delta].u16.xy = subgroupClusteredRotate(data[1].u16.xy, delta, 1); + data[delta].u16.xyz = subgroupClusteredRotate(data[2].u16.xyz, delta, 1); + data[delta].u16 = subgroupClusteredRotate(data[3].u16, delta, 1); + + data[delta].i64.x = subgroupRotate(data[0].i64.x, delta); + data[delta].i64.xy = subgroupRotate(data[1].i64.xy, delta); + data[delta].i64.xyz = subgroupRotate(data[2].i64.xyz, delta); + data[delta].i64 = subgroupRotate(data[3].i64, delta); + + data[delta].i64.x = subgroupClusteredRotate(data[0].i64.x, delta, 1); + data[delta].i64.xy = subgroupClusteredRotate(data[1].i64.xy, delta, 1); + data[delta].i64.xyz = subgroupClusteredRotate(data[2].i64.xyz, delta, 1); + data[delta].i64 = subgroupClusteredRotate(data[3].i64, delta, 1); + + data[delta].u64.x = subgroupRotate(data[0].u64.x, delta); + data[delta].u64.xy = subgroupRotate(data[1].u64.xy, delta); + data[delta].u64.xyz = subgroupRotate(data[2].u64.xyz, delta); + data[delta].u64 = subgroupRotate(data[3].u64, delta); + + data[delta].u64.x = subgroupClusteredRotate(data[0].u64.x, delta, 1); + data[delta].u64.xy = subgroupClusteredRotate(data[1].u64.xy, delta, 1); + data[delta].u64.xyz = subgroupClusteredRotate(data[2].u64.xyz, delta, 1); + data[delta].u64 = subgroupClusteredRotate(data[3].u64, delta, 1); + + data[delta].f16.x = subgroupRotate(data[0].f16.x, delta); + data[delta].f16.xy = subgroupRotate(data[1].f16.xy, delta); + data[delta].f16.xyz = subgroupRotate(data[2].f16.xyz, delta); + data[delta].f16 = subgroupRotate(data[3].f16, delta); + + data[delta].f16.x = subgroupClusteredRotate(data[0].f16.x, delta, 1); + data[delta].f16.xy = subgroupClusteredRotate(data[1].f16.xy, delta, 1); + data[delta].f16.xyz = subgroupClusteredRotate(data[2].f16.xyz, delta, 1); + data[delta].f16 = subgroupClusteredRotate(data[3].f16, delta, 1); +} diff --git a/Test/spv.subgroupExtendedTypesRotateNeg.comp b/Test/spv.subgroupExtendedTypesRotateNeg.comp new file mode 100644 index 00000000..01ea7e9b --- /dev/null +++ b/Test/spv.subgroupExtendedTypesRotateNeg.comp @@ -0,0 +1,100 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_rotate: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable + +layout (local_size_x = 8) in; + +readonly buffer roblock +{ + uint delta; +} ro; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint delta = ro.delta; + + data[delta].i8.x = subgroupRotate(data[0].i8.x, delta); + data[delta].i8.xy = subgroupRotate(data[1].i8.xy, delta); + data[delta].i8.xyz = subgroupRotate(data[2].i8.xyz, delta); + data[delta].i8 = subgroupRotate(data[3].i8, delta); + + data[delta].i8.x = subgroupClusteredRotate(data[0].i8.x, delta, 1); + data[delta].i8.xy = subgroupClusteredRotate(data[1].i8.xy, delta, 1); + data[delta].i8.xyz = subgroupClusteredRotate(data[2].i8.xyz, delta, 1); + data[delta].i8 = subgroupClusteredRotate(data[3].i8, delta, 1); + + data[delta].u8.x = subgroupRotate(data[0].u8.x, delta); + data[delta].u8.xy = subgroupRotate(data[1].u8.xy, delta); + data[delta].u8.xyz = subgroupRotate(data[2].u8.xyz, delta); + data[delta].u8 = subgroupRotate(data[3].u8, delta); + + data[delta].u8.x = subgroupClusteredRotate(data[0].u8.x, delta, 1); + data[delta].u8.xy = subgroupClusteredRotate(data[1].u8.xy, delta, 1); + data[delta].u8.xyz = subgroupClusteredRotate(data[2].u8.xyz, delta, 1); + data[delta].u8 = subgroupClusteredRotate(data[3].u8, delta, 1); + + data[delta].i16.x = subgroupRotate(data[0].i16.x, delta); + data[delta].i16.xy = subgroupRotate(data[1].i16.xy, delta); + data[delta].i16.xyz = subgroupRotate(data[2].i16.xyz, delta); + data[delta].i16 = subgroupRotate(data[3].i16, delta); + + data[delta].i16.x = subgroupClusteredRotate(data[0].i16.x, delta, 1); + data[delta].i16.xy = subgroupClusteredRotate(data[1].i16.xy, delta, 1); + data[delta].i16.xyz = subgroupClusteredRotate(data[2].i16.xyz, delta, 1); + data[delta].i16 = subgroupClusteredRotate(data[3].i16, delta, 1); + + data[delta].u16.x = subgroupRotate(data[0].u16.x, delta); + data[delta].u16.xy = subgroupRotate(data[1].u16.xy, delta); + data[delta].u16.xyz = subgroupRotate(data[2].u16.xyz, delta); + data[delta].u16 = subgroupRotate(data[3].u16, delta); + + data[delta].u16.x = subgroupClusteredRotate(data[0].u16.x, delta, 1); + data[delta].u16.xy = subgroupClusteredRotate(data[1].u16.xy, delta, 1); + data[delta].u16.xyz = subgroupClusteredRotate(data[2].u16.xyz, delta, 1); + data[delta].u16 = subgroupClusteredRotate(data[3].u16, delta, 1); + + data[delta].i64.x = subgroupRotate(data[0].i64.x, delta); + data[delta].i64.xy = subgroupRotate(data[1].i64.xy, delta); + data[delta].i64.xyz = subgroupRotate(data[2].i64.xyz, delta); + data[delta].i64 = subgroupRotate(data[3].i64, delta); + + data[delta].i64.x = subgroupClusteredRotate(data[0].i64.x, delta, 1); + data[delta].i64.xy = subgroupClusteredRotate(data[1].i64.xy, delta, 1); + data[delta].i64.xyz = subgroupClusteredRotate(data[2].i64.xyz, delta, 1); + data[delta].i64 = subgroupClusteredRotate(data[3].i64, delta, 1); + + data[delta].u64.x = subgroupRotate(data[0].u64.x, delta); + data[delta].u64.xy = subgroupRotate(data[1].u64.xy, delta); + data[delta].u64.xyz = subgroupRotate(data[2].u64.xyz, delta); + data[delta].u64 = subgroupRotate(data[3].u64, delta); + + data[delta].u64.x = subgroupClusteredRotate(data[0].u64.x, delta, 1); + data[delta].u64.xy = subgroupClusteredRotate(data[1].u64.xy, delta, 1); + data[delta].u64.xyz = subgroupClusteredRotate(data[2].u64.xyz, delta, 1); + data[delta].u64 = subgroupClusteredRotate(data[3].u64, delta, 1); + + data[delta].f16.x = subgroupRotate(data[0].f16.x, delta); + data[delta].f16.xy = subgroupRotate(data[1].f16.xy, delta); + data[delta].f16.xyz = subgroupRotate(data[2].f16.xyz, delta); + data[delta].f16 = subgroupRotate(data[3].f16, delta); + + data[delta].f16.x = subgroupClusteredRotate(data[0].f16.x, delta, 1); + data[delta].f16.xy = subgroupClusteredRotate(data[1].f16.xy, delta, 1); + data[delta].f16.xyz = subgroupClusteredRotate(data[2].f16.xyz, delta, 1); + data[delta].f16 = subgroupClusteredRotate(data[3].f16, delta, 1); +} diff --git a/Test/spv.subgroupRotate.comp b/Test/spv.subgroupRotate.comp new file mode 100644 index 00000000..7f8c007e --- /dev/null +++ b/Test/spv.subgroupRotate.comp @@ -0,0 +1,73 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_rotate: enable + +layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; + +readonly buffer roblock +{ + uint delta; +} ro; + +layout(binding = 0) buffer Buffers +{ + vec4 f4; + ivec4 i4; + uvec4 u4; + dvec4 d4; +} data[4]; + +void main() +{ + uint delta = ro.delta; + + data[delta].f4.x = subgroupRotate(data[0].f4.x, delta); + data[delta].f4.xy = subgroupRotate(data[1].f4.xy, delta); + data[delta].f4.xyz = subgroupRotate(data[2].f4.xyz, delta); + data[delta].f4 = subgroupRotate(data[3].f4, delta); + + data[delta].i4.x = subgroupRotate(data[0].i4.x, delta); + data[delta].i4.xy = subgroupRotate(data[1].i4.xy, delta); + data[delta].i4.xyz = subgroupRotate(data[2].i4.xyz, delta); + data[delta].i4 = subgroupRotate(data[3].i4, delta); + + data[delta].u4.x = subgroupRotate(data[0].u4.x, delta); + data[delta].u4.xy = subgroupRotate(data[1].u4.xy, delta); + data[delta].u4.xyz = subgroupRotate(data[2].u4.xyz, delta); + data[delta].u4 = subgroupRotate(data[3].u4, delta); + + data[delta].d4.x = subgroupRotate(data[0].d4.x, delta); + data[delta].d4.xy = subgroupRotate(data[1].d4.xy, delta); + data[delta].d4.xyz = subgroupRotate(data[2].d4.xyz, delta); + data[delta].d4 = subgroupRotate(data[3].d4, delta); + + data[delta].i4.x = int(subgroupRotate(data[0].i4.x < 0, delta)); + data[delta].i4.xy = ivec2(subgroupRotate(lessThan(data[1].i4.xy, ivec2(0)), delta)); + data[delta].i4.xyz = ivec3(subgroupRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta)); + data[delta].i4 = ivec4(subgroupRotate(lessThan(data[1].i4, ivec4(0)), delta)); + + data[delta].f4.x = subgroupClusteredRotate(data[0].f4.x, delta, 1); + data[delta].f4.xy = subgroupClusteredRotate(data[1].f4.xy, delta, 1); + data[delta].f4.xyz = subgroupClusteredRotate(data[2].f4.xyz, delta, 1); + data[delta].f4 = subgroupClusteredRotate(data[3].f4, delta, 1); + + data[delta].i4.x = subgroupClusteredRotate(data[0].i4.x, delta, 1); + data[delta].i4.xy = subgroupClusteredRotate(data[1].i4.xy, delta, 1); + data[delta].i4.xyz = subgroupClusteredRotate(data[2].i4.xyz, delta, 1); + data[delta].i4 = subgroupClusteredRotate(data[3].i4, delta, 1); + + data[delta].u4.x = subgroupClusteredRotate(data[0].u4.x, delta, 1); + data[delta].u4.xy = subgroupClusteredRotate(data[1].u4.xy, delta, 1); + data[delta].u4.xyz = subgroupClusteredRotate(data[2].u4.xyz, delta, 1); + data[delta].u4 = subgroupClusteredRotate(data[3].u4, delta, 1); + + data[delta].d4.x = subgroupClusteredRotate(data[0].d4.x, delta, 1); + data[delta].d4.xy = subgroupClusteredRotate(data[1].d4.xy, delta, 1); + data[delta].d4.xyz = subgroupClusteredRotate(data[2].d4.xyz, delta, 1); + data[delta].d4 = subgroupClusteredRotate(data[3].d4, delta, 1); + + data[delta].i4.x = int(subgroupClusteredRotate(data[0].i4.x < 0, delta, 1)); + data[delta].i4.xy = ivec2(subgroupClusteredRotate(lessThan(data[1].i4.xy, ivec2(0)), delta, 1)); + data[delta].i4.xyz = ivec3(subgroupClusteredRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta, 1)); + data[delta].i4 = ivec4(subgroupClusteredRotate(lessThan(data[1].i4, ivec4(0)), delta, 1)); +} diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 5308bca7..6b190d4d 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -1,7 +1,7 @@ // // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2016 LunarG, Inc. -// Copyright (C) 2017 ARM Limited. +// Copyright (C) 2017, 2022-2024 Arm Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. @@ -506,6 +506,8 @@ enum TOperator { EOpSubgroupShuffleXor, EOpSubgroupShuffleUp, EOpSubgroupShuffleDown, + EOpSubgroupRotate, + EOpSubgroupClusteredRotate, EOpSubgroupAdd, EOpSubgroupMul, EOpSubgroupMin, diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 44551bcb..8ae43463 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -2,7 +2,7 @@ // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2016 LunarG, Inc. // Copyright (C) 2015-2020 Google, Inc. -// Copyright (C) 2017 ARM Limited. +// Copyright (C) 2017, 2022-2024 Arm Limited. // Modifications Copyright (C) 2020-2021 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. @@ -2099,6 +2099,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "%s subgroupShuffleXor(%s, uint);\n", "%s subgroupShuffleUp(%s, uint delta);\n", "%s subgroupShuffleDown(%s, uint delta);\n", + "%s subgroupRotate(%s, uint);\n", + "%s subgroupClusteredRotate(%s, uint, uint);\n", "%s subgroupAdd(%s);\n", "%s subgroupMul(%s);\n", "%s subgroupMin(%s);\n", @@ -8670,6 +8672,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("subgroupShuffleXor", 1, &E_GL_KHR_shader_subgroup_shuffle); symbolTable.setFunctionExtensions("subgroupShuffleUp", 1, &E_GL_KHR_shader_subgroup_shuffle_relative); symbolTable.setFunctionExtensions("subgroupShuffleDown", 1, &E_GL_KHR_shader_subgroup_shuffle_relative); + symbolTable.setFunctionExtensions("subgroupRotate", 1, &E_GL_KHR_shader_subgroup_rotate); + symbolTable.setFunctionExtensions("subgroupClusteredRotate", 1, &E_GL_KHR_shader_subgroup_rotate); symbolTable.setFunctionExtensions("subgroupAdd", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupMul", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupMin", 1, &E_GL_KHR_shader_subgroup_arithmetic); @@ -9931,6 +9935,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("subgroupShuffleXor", EOpSubgroupShuffleXor); symbolTable.relateToOperator("subgroupShuffleUp", EOpSubgroupShuffleUp); symbolTable.relateToOperator("subgroupShuffleDown", EOpSubgroupShuffleDown); + symbolTable.relateToOperator("subgroupRotate", EOpSubgroupRotate); + symbolTable.relateToOperator("subgroupClusteredRotate", EOpSubgroupClusteredRotate); symbolTable.relateToOperator("subgroupAdd", EOpSubgroupAdd); symbolTable.relateToOperator("subgroupMul", EOpSubgroupMul); symbolTable.relateToOperator("subgroupMin", EOpSubgroupMin); diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index b550ca2b..b0b901ac 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -1,7 +1,7 @@ // // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2013 LunarG, Inc. -// Copyright (C) 2017 ARM Limited. +// Copyright (C) 2017, 2022-2024 Arm Limited. // Copyright (C) 2015-2020 Google, Inc. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // @@ -235,6 +235,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_KHR_shader_subgroup_ballot] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_shuffle] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_shuffle_relative] = EBhDisable; + extensionBehavior[E_GL_KHR_shader_subgroup_rotate] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_clustered] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_quad] = EBhDisable; extensionBehavior[E_GL_KHR_memory_scope_semantics] = EBhDisable; diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 77167257..380c6f10 100755 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -1,7 +1,7 @@ // // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2013 LunarG, Inc. -// Copyright (C) 2017 ARM Limited. +// Copyright (C) 2017, 2022-2024 Arm Limited. // Copyright (C) 2015-2018 Google, Inc. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // @@ -171,6 +171,7 @@ const char* const E_GL_KHR_shader_subgroup_arithmetic = "GL_KHR_shader_sub const char* const E_GL_KHR_shader_subgroup_ballot = "GL_KHR_shader_subgroup_ballot"; const char* const E_GL_KHR_shader_subgroup_shuffle = "GL_KHR_shader_subgroup_shuffle"; const char* const E_GL_KHR_shader_subgroup_shuffle_relative = "GL_KHR_shader_subgroup_shuffle_relative"; +const char* const E_GL_KHR_shader_subgroup_rotate = "GL_KHR_shader_subgroup_rotate"; const char* const E_GL_KHR_shader_subgroup_clustered = "GL_KHR_shader_subgroup_clustered"; const char* const E_GL_KHR_shader_subgroup_quad = "GL_KHR_shader_subgroup_quad"; const char* const E_GL_KHR_memory_scope_semantics = "GL_KHR_memory_scope_semantics"; diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index 19691487..8ef87453 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -1,7 +1,7 @@ // // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2016 LunarG, Inc. -// Copyright (C) 2017 ARM Limited. +// Copyright (C) 2017, 2022-2024 Arm Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. @@ -565,6 +565,8 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpSubgroupShuffleXor: out.debug << "subgroupShuffleXor"; break; case EOpSubgroupShuffleUp: out.debug << "subgroupShuffleUp"; break; case EOpSubgroupShuffleDown: out.debug << "subgroupShuffleDown"; break; + case EOpSubgroupRotate: out.debug << "subgroupRotate"; break; + case EOpSubgroupClusteredRotate: out.debug << "subgroupClusteredRotate"; break; case EOpSubgroupAdd: out.debug << "subgroupAdd"; break; case EOpSubgroupMul: out.debug << "subgroupMul"; break; case EOpSubgroupMin: out.debug << "subgroupMin"; break; @@ -1002,6 +1004,8 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpSubgroupShuffleXor: out.debug << "subgroupShuffleXor"; break; case EOpSubgroupShuffleUp: out.debug << "subgroupShuffleUp"; break; case EOpSubgroupShuffleDown: out.debug << "subgroupShuffleDown"; break; + case EOpSubgroupRotate: out.debug << "subgroupRotate"; break; + case EOpSubgroupClusteredRotate: out.debug << "subgroupClusteredRotate"; break; case EOpSubgroupAdd: out.debug << "subgroupAdd"; break; case EOpSubgroupMul: out.debug << "subgroupMul"; break; case EOpSubgroupMin: out.debug << "subgroupMin"; break; diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index 44aec44b..d85a55cf 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -1,5 +1,6 @@ // // Copyright (C) 2016 Google, Inc. +// Copyright (C) 2022-2024 Arm Limited. // // All rights reserved. // @@ -252,6 +253,7 @@ INSTANTIATE_TEST_SUITE_P( "glsl.450.subgroupClustered.comp", "glsl.450.subgroupClusteredNeg.comp", "glsl.450.subgroupPartitioned.comp", + "glsl.450.subgroupRotate.comp", "glsl.450.subgroupShuffle.comp", "glsl.450.subgroupShuffleRelative.comp", "glsl.450.subgroupQuad.comp", @@ -277,6 +279,7 @@ INSTANTIATE_TEST_SUITE_P( "glsl.es320.subgroupClustered.comp", "glsl.es320.subgroupClusteredNeg.comp", "glsl.es320.subgroupPartitioned.comp", + "glsl.es320.subgroupRotate.comp", "glsl.es320.subgroupShuffle.comp", "glsl.es320.subgroupShuffleRelative.comp", "glsl.es320.subgroupQuad.comp", diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 13e35b7a..cbdc46a2 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -1,6 +1,6 @@ // // Copyright (C) 2016 Google, Inc. -// Copyright (C) 2019 ARM Limited. +// Copyright (C) 2019, 2022-2024 Arm Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. @@ -616,6 +616,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.subgroupClustered.comp", "spv.subgroupClusteredNeg.comp", "spv.subgroupPartitioned.comp", + "spv.subgroupRotate.comp", "spv.subgroupShuffle.comp", "spv.subgroupShuffleRelative.comp", "spv.subgroupQuad.comp", @@ -628,6 +629,8 @@ INSTANTIATE_TEST_SUITE_P( "spv.subgroupExtendedTypesClusteredNeg.comp", "spv.subgroupExtendedTypesPartitioned.comp", "spv.subgroupExtendedTypesPartitionedNeg.comp", + "spv.subgroupExtendedTypesRotate.comp", + "spv.subgroupExtendedTypesRotateNeg.comp", "spv.subgroupExtendedTypesShuffle.comp", "spv.subgroupExtendedTypesShuffleNeg.comp", "spv.subgroupExtendedTypesShuffleRelative.comp",