Enable GL_KHR_shader_subgroup properly

(and GL_NV_shader_subgroup_partitioned) based on GL/ES version
instead of predicating it on vulkan SPV generation

Also add AST testing.
The glsl.450.subgroup* files are largely the same as the spv.subgroup*
The glsl.es320.subgroup* files are the same as the 450 versions, but modified to be ES compatible.
This commit is contained in:
Daniel Koch 2019-03-26 13:45:33 -04:00
parent 5efb004d59
commit 83170e3f7a
66 changed files with 95051 additions and 10 deletions

View File

@ -0,0 +1,41 @@
glsl.450.subgroup.frag
Shader version: 450
Requested GL_KHR_shader_subgroup_basic
0:? Sequence
0:4 Function Definition: main( ( global void)
0:4 Function Parameters:
0:6 Sequence
0:6 move second child to first child ( temp 4-component vector of uint)
0:6 'data' (layout( location=0) out 4-component vector of uint)
0:6 Construct uvec4 ( temp 4-component vector of uint)
0:6 'gl_SubgroupSize' ( flat in uint unknown built-in variable)
0:6 'gl_SubgroupInvocationID' ( flat in uint unknown built-in variable)
0:6 Constant:
0:6 0 (const uint)
0:6 Constant:
0:6 0 (const uint)
0:? Linker Objects
0:? 'data' (layout( location=0) out 4-component vector of uint)
Linked fragment stage:
Shader version: 450
Requested GL_KHR_shader_subgroup_basic
0:? Sequence
0:4 Function Definition: main( ( global void)
0:4 Function Parameters:
0:6 Sequence
0:6 move second child to first child ( temp 4-component vector of uint)
0:6 'data' (layout( location=0) out 4-component vector of uint)
0:6 Construct uvec4 ( temp 4-component vector of uint)
0:6 'gl_SubgroupSize' ( flat in uint unknown built-in variable)
0:6 'gl_SubgroupInvocationID' ( flat in uint unknown built-in variable)
0:6 Constant:
0:6 0 (const uint)
0:6 Constant:
0:6 0 (const uint)
0:? Linker Objects
0:? 'data' (layout( location=0) out 4-component vector of uint)

View File

@ -0,0 +1,59 @@
glsl.450.subgroup.geom
Shader version: 450
Requested GL_KHR_shader_subgroup_basic
invocations = -1
max_vertices = 1
input primitive = points
output primitive = points
0:? Sequence
0:10 Function Definition: main( ( global void)
0:10 Function Parameters:
0:12 Sequence
0:12 move second child to first child ( temp 4-component vector of uint)
0:12 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
0:12 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
0:12 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
0:12 Constant:
0:12 0 (const uint)
0:12 'gl_PrimitiveIDIn' ( in int PrimitiveID)
0:12 Construct uvec4 ( temp 4-component vector of uint)
0:12 'gl_SubgroupSize' ( in uint unknown built-in variable)
0:12 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:12 Constant:
0:12 0 (const uint)
0:12 Constant:
0:12 0 (const uint)
0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
Linked geometry stage:
Shader version: 450
Requested GL_KHR_shader_subgroup_basic
invocations = 1
max_vertices = 1
input primitive = points
output primitive = points
0:? Sequence
0:10 Function Definition: main( ( global void)
0:10 Function Parameters:
0:12 Sequence
0:12 move second child to first child ( temp 4-component vector of uint)
0:12 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
0:12 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
0:12 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
0:12 Constant:
0:12 0 (const uint)
0:12 'gl_PrimitiveIDIn' ( in int PrimitiveID)
0:12 Construct uvec4 ( temp 4-component vector of uint)
0:12 'gl_SubgroupSize' ( in uint unknown built-in variable)
0:12 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:12 Constant:
0:12 0 (const uint)
0:12 Constant:
0:12 0 (const uint)
0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})

View File

@ -0,0 +1,53 @@
glsl.450.subgroup.tesc
Shader version: 450
Requested GL_KHR_shader_subgroup_basic
vertices = 1
0:? Sequence
0:9 Function Definition: main( ( global void)
0:9 Function Parameters:
0:11 Sequence
0:11 move second child to first child ( temp 4-component vector of uint)
0:11 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
0:11 Constant:
0:11 0 (const uint)
0:11 'gl_PrimitiveID' ( in int PrimitiveID)
0:11 Construct uvec4 ( temp 4-component vector of uint)
0:11 'gl_SubgroupSize' ( in uint unknown built-in variable)
0:11 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:11 Constant:
0:11 0 (const uint)
0:11 Constant:
0:11 0 (const uint)
0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
Linked tessellation control stage:
Shader version: 450
Requested GL_KHR_shader_subgroup_basic
vertices = 1
0:? Sequence
0:9 Function Definition: main( ( global void)
0:9 Function Parameters:
0:11 Sequence
0:11 move second child to first child ( temp 4-component vector of uint)
0:11 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
0:11 Constant:
0:11 0 (const uint)
0:11 'gl_PrimitiveID' ( in int PrimitiveID)
0:11 Construct uvec4 ( temp 4-component vector of uint)
0:11 'gl_SubgroupSize' ( in uint unknown built-in variable)
0:11 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:11 Constant:
0:11 0 (const uint)
0:11 Constant:
0:11 0 (const uint)
0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})

View File

@ -0,0 +1,57 @@
glsl.450.subgroup.tese
Shader version: 450
Requested GL_KHR_shader_subgroup_basic
input primitive = isolines
vertex spacing = none
triangle order = none
0:? Sequence
0:9 Function Definition: main( ( global void)
0:9 Function Parameters:
0:11 Sequence
0:11 move second child to first child ( temp 4-component vector of uint)
0:11 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
0:11 Constant:
0:11 0 (const uint)
0:11 'gl_PrimitiveID' ( in int PrimitiveID)
0:11 Construct uvec4 ( temp 4-component vector of uint)
0:11 'gl_SubgroupSize' ( in uint unknown built-in variable)
0:11 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:11 Constant:
0:11 0 (const uint)
0:11 Constant:
0:11 0 (const uint)
0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
Linked tessellation evaluation stage:
Shader version: 450
Requested GL_KHR_shader_subgroup_basic
input primitive = isolines
vertex spacing = equal_spacing
triangle order = ccw
0:? Sequence
0:9 Function Definition: main( ( global void)
0:9 Function Parameters:
0:11 Sequence
0:11 move second child to first child ( temp 4-component vector of uint)
0:11 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
0:11 Constant:
0:11 0 (const uint)
0:11 'gl_PrimitiveID' ( in int PrimitiveID)
0:11 Construct uvec4 ( temp 4-component vector of uint)
0:11 'gl_SubgroupSize' ( in uint unknown built-in variable)
0:11 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:11 Constant:
0:11 0 (const uint)
0:11 Constant:
0:11 0 (const uint)
0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})

View File

@ -0,0 +1,55 @@
glsl.450.subgroup.vert
Shader version: 450
Requested GL_KHR_shader_subgroup_basic
0:? Sequence
0:8 Function Definition: main( ( global void)
0:8 Function Parameters:
0:10 Sequence
0:10 move second child to first child ( temp 4-component vector of uint)
0:10 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
0:10 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
0:10 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
0:10 Constant:
0:10 0 (const uint)
0:10 'gl_VertexID' ( gl_VertexId int VertexId)
0:10 Construct uvec4 ( temp 4-component vector of uint)
0:10 'gl_SubgroupSize' ( in uint unknown built-in variable)
0:10 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:10 Constant:
0:10 0 (const uint)
0:10 Constant:
0:10 0 (const uint)
0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)
Linked vertex stage:
Shader version: 450
Requested GL_KHR_shader_subgroup_basic
0:? Sequence
0:8 Function Definition: main( ( global void)
0:8 Function Parameters:
0:10 Sequence
0:10 move second child to first child ( temp 4-component vector of uint)
0:10 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint)
0:10 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint)
0:10 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
0:10 Constant:
0:10 0 (const uint)
0:10 'gl_VertexID' ( gl_VertexId int VertexId)
0:10 Construct uvec4 ( temp 4-component vector of uint)
0:10 'gl_SubgroupSize' ( in uint unknown built-in variable)
0:10 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:10 Constant:
0:10 0 (const uint)
0:10 Constant:
0:10 0 (const uint)
0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result})
0:? 'gl_VertexID' ( gl_VertexId int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,267 @@
glsl.450.subgroupBallotNeg.comp
ERROR: 0:32: 'id' : argument must be compile-time constant
ERROR: 1 compilation errors. No code generated.
Shader version: 450
Requested GL_KHR_shader_subgroup_ballot
Requested GL_KHR_shader_subgroup_basic
local_size = (8, 8, 1)
ERROR: node is still EOpNull!
0:15 Function Definition: main( ( global void)
0:15 Function Parameters:
0:17 Sequence
0:17 Sequence
0:17 move second child to first child ( temp uint)
0:17 'invocation' ( temp uint)
0:17 mod ( temp uint)
0:17 add ( temp uint)
0:17 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:17 'gl_SubgroupSize' ( in uint unknown built-in variable)
0:17 Constant:
0:17 4 (const uint)
0:19 Sequence
0:19 move second child to first child ( temp 4-component vector of uint)
0:19 'relMask' ( temp 4-component vector of uint)
0:22 add ( temp 4-component vector of uint)
0:21 add ( temp 4-component vector of uint)
0:20 add ( temp 4-component vector of uint)
0:19 add ( temp 4-component vector of uint)
0:19 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable)
0:20 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable)
0:21 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable)
0:22 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable)
0:23 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable)
0:25 Sequence
0:25 move second child to first child ( temp 4-component vector of uint)
0:25 'result' ( temp 4-component vector of uint)
0:25 subgroupBallot ( global 4-component vector of uint)
0:25 Constant:
0:25 true (const bool)
0:27 move second child to first child ( temp uint)
0:27 direct index ( temp uint)
0:27 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:27 'invocation' ( temp uint)
0:27 Constant:
0:27 2 (const int)
0:27 Constant:
0:27 0 (const int)
0:27 subgroupBallotBitCount ( global uint)
0:27 'result' ( temp 4-component vector of uint)
0:28 move second child to first child ( temp uint)
0:28 direct index ( temp uint)
0:28 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:28 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:28 'invocation' ( temp uint)
0:28 Constant:
0:28 2 (const int)
0:28 Constant:
0:28 1 (const int)
0:28 Convert int to uint ( temp uint)
0:28 Test condition and select ( temp int)
0:28 Condition
0:28 subgroupBallotBitExtract ( global bool)
0:28 'result' ( temp 4-component vector of uint)
0:28 Constant:
0:28 0 (const uint)
0:28 true case
0:28 Constant:
0:28 1 (const int)
0:28 false case
0:28 Constant:
0:28 0 (const int)
0:29 move second child to first child ( temp uint)
0:29 direct index ( temp uint)
0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:29 'invocation' ( temp uint)
0:29 Constant:
0:29 2 (const int)
0:29 Constant:
0:29 2 (const int)
0:29 add ( temp uint)
0:29 subgroupBallotInclusiveBitCount ( global uint)
0:29 'result' ( temp 4-component vector of uint)
0:29 subgroupBallotExclusiveBitCount ( global uint)
0:29 'result' ( temp 4-component vector of uint)
0:30 move second child to first child ( temp uint)
0:30 direct index ( temp uint)
0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:30 'invocation' ( temp uint)
0:30 Constant:
0:30 2 (const int)
0:30 Constant:
0:30 3 (const int)
0:30 add ( temp uint)
0:30 subgroupBallotFindLSB ( global uint)
0:30 'result' ( temp 4-component vector of uint)
0:30 subgroupBallotFindMSB ( global uint)
0:30 'result' ( temp 4-component vector of uint)
0:32 move second child to first child ( temp float)
0:32 direct index ( temp float)
0:32 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:32 'invocation' ( temp uint)
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
0:32 0 (const int)
0:32 subgroupBroadcast ( global float)
0:32 direct index ( temp float)
0:32 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
0:32 0 (const int)
0:32 'invocation' ( temp uint)
0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
0:? 8 (const uint)
0:? 8 (const uint)
0:? 1 (const uint)
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
Linked compute stage:
Shader version: 450
Requested GL_KHR_shader_subgroup_ballot
Requested GL_KHR_shader_subgroup_basic
local_size = (8, 8, 1)
ERROR: node is still EOpNull!
0:15 Function Definition: main( ( global void)
0:15 Function Parameters:
0:17 Sequence
0:17 Sequence
0:17 move second child to first child ( temp uint)
0:17 'invocation' ( temp uint)
0:17 mod ( temp uint)
0:17 add ( temp uint)
0:17 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:17 'gl_SubgroupSize' ( in uint unknown built-in variable)
0:17 Constant:
0:17 4 (const uint)
0:19 Sequence
0:19 move second child to first child ( temp 4-component vector of uint)
0:19 'relMask' ( temp 4-component vector of uint)
0:22 add ( temp 4-component vector of uint)
0:21 add ( temp 4-component vector of uint)
0:20 add ( temp 4-component vector of uint)
0:19 add ( temp 4-component vector of uint)
0:19 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable)
0:20 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable)
0:21 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable)
0:22 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable)
0:23 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable)
0:25 Sequence
0:25 move second child to first child ( temp 4-component vector of uint)
0:25 'result' ( temp 4-component vector of uint)
0:25 subgroupBallot ( global 4-component vector of uint)
0:25 Constant:
0:25 true (const bool)
0:27 move second child to first child ( temp uint)
0:27 direct index ( temp uint)
0:27 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:27 'invocation' ( temp uint)
0:27 Constant:
0:27 2 (const int)
0:27 Constant:
0:27 0 (const int)
0:27 subgroupBallotBitCount ( global uint)
0:27 'result' ( temp 4-component vector of uint)
0:28 move second child to first child ( temp uint)
0:28 direct index ( temp uint)
0:28 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:28 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:28 'invocation' ( temp uint)
0:28 Constant:
0:28 2 (const int)
0:28 Constant:
0:28 1 (const int)
0:28 Convert int to uint ( temp uint)
0:28 Test condition and select ( temp int)
0:28 Condition
0:28 subgroupBallotBitExtract ( global bool)
0:28 'result' ( temp 4-component vector of uint)
0:28 Constant:
0:28 0 (const uint)
0:28 true case
0:28 Constant:
0:28 1 (const int)
0:28 false case
0:28 Constant:
0:28 0 (const int)
0:29 move second child to first child ( temp uint)
0:29 direct index ( temp uint)
0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:29 'invocation' ( temp uint)
0:29 Constant:
0:29 2 (const int)
0:29 Constant:
0:29 2 (const int)
0:29 add ( temp uint)
0:29 subgroupBallotInclusiveBitCount ( global uint)
0:29 'result' ( temp 4-component vector of uint)
0:29 subgroupBallotExclusiveBitCount ( global uint)
0:29 'result' ( temp 4-component vector of uint)
0:30 move second child to first child ( temp uint)
0:30 direct index ( temp uint)
0:30 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:30 'invocation' ( temp uint)
0:30 Constant:
0:30 2 (const int)
0:30 Constant:
0:30 3 (const int)
0:30 add ( temp uint)
0:30 subgroupBallotFindLSB ( global uint)
0:30 'result' ( temp 4-component vector of uint)
0:30 subgroupBallotFindMSB ( global uint)
0:30 'result' ( temp 4-component vector of uint)
0:32 move second child to first child ( temp float)
0:32 direct index ( temp float)
0:32 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:32 'invocation' ( temp uint)
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
0:32 0 (const int)
0:32 subgroupBroadcast ( global float)
0:32 direct index ( temp float)
0:32 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
0:32 0 (const int)
0:32 'invocation' ( temp uint)
0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
0:? 8 (const uint)
0:? 8 (const uint)
0:? 1 (const uint)
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})

View File

@ -0,0 +1,129 @@
glsl.450.subgroupBasic.comp
Shader version: 450
Requested GL_KHR_shader_subgroup_basic
local_size = (8, 8, 1)
0:? Sequence
0:12 Function Definition: main( ( global void)
0:12 Function Parameters:
0:14 Sequence
0:14 move second child to first child ( temp int)
0:14 indirect index (layout( column_major shared) temp int)
0:14 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
0:14 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
0:14 Constant:
0:14 0 (const int)
0:14 'gl_SubgroupSize' ( in uint unknown built-in variable)
0:14 Constant:
0:14 1 (const int)
0:15 move second child to first child ( temp int)
0:15 indirect index (layout( column_major shared) temp int)
0:15 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
0:15 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
0:15 Constant:
0:15 0 (const int)
0:15 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:15 Constant:
0:15 1 (const int)
0:16 move second child to first child ( temp int)
0:16 indirect index (layout( column_major shared) temp int)
0:16 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
0:16 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
0:16 Constant:
0:16 0 (const int)
0:16 'gl_NumSubgroups' ( in uint unknown built-in variable)
0:16 Constant:
0:16 1 (const int)
0:17 move second child to first child ( temp int)
0:17 indirect index (layout( column_major shared) temp int)
0:17 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
0:17 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
0:17 Constant:
0:17 0 (const int)
0:17 'gl_SubgroupID' ( in uint unknown built-in variable)
0:17 Test condition and select ( temp int)
0:17 Condition
0:17 subgroupElect ( global bool)
0:17 true case
0:17 Constant:
0:17 1 (const int)
0:17 false case
0:17 Constant:
0:17 0 (const int)
0:18 subgroupBarrier ( global void)
0:19 subgroupMemoryBarrier ( global void)
0:20 subgroupMemoryBarrierBuffer ( global void)
0:21 subgroupMemoryBarrierShared ( global void)
0:22 subgroupMemoryBarrierImage ( global void)
0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
0:? 8 (const uint)
0:? 8 (const uint)
0:? 1 (const uint)
0:? 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
Linked compute stage:
Shader version: 450
Requested GL_KHR_shader_subgroup_basic
local_size = (8, 8, 1)
0:? Sequence
0:12 Function Definition: main( ( global void)
0:12 Function Parameters:
0:14 Sequence
0:14 move second child to first child ( temp int)
0:14 indirect index (layout( column_major shared) temp int)
0:14 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
0:14 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
0:14 Constant:
0:14 0 (const int)
0:14 'gl_SubgroupSize' ( in uint unknown built-in variable)
0:14 Constant:
0:14 1 (const int)
0:15 move second child to first child ( temp int)
0:15 indirect index (layout( column_major shared) temp int)
0:15 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
0:15 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
0:15 Constant:
0:15 0 (const int)
0:15 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:15 Constant:
0:15 1 (const int)
0:16 move second child to first child ( temp int)
0:16 indirect index (layout( column_major shared) temp int)
0:16 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
0:16 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
0:16 Constant:
0:16 0 (const int)
0:16 'gl_NumSubgroups' ( in uint unknown built-in variable)
0:16 Constant:
0:16 1 (const int)
0:17 move second child to first child ( temp int)
0:17 indirect index (layout( column_major shared) temp int)
0:17 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int)
0:17 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})
0:17 Constant:
0:17 0 (const int)
0:17 'gl_SubgroupID' ( in uint unknown built-in variable)
0:17 Test condition and select ( temp int)
0:17 Condition
0:17 subgroupElect ( global bool)
0:17 true case
0:17 Constant:
0:17 1 (const int)
0:17 false case
0:17 Constant:
0:17 0 (const int)
0:18 subgroupBarrier ( global void)
0:19 subgroupMemoryBarrier ( global void)
0:20 subgroupMemoryBarrierBuffer ( global void)
0:21 subgroupMemoryBarrierShared ( global void)
0:22 subgroupMemoryBarrierImage ( global void)
0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
0:? 8 (const uint)
0:? 8 (const uint)
0:? 1 (const uint)
0:? 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a})

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,668 @@
glsl.450.subgroupClusteredNeg.comp
ERROR: 0:22: 'cluster size' : argument must be at least 1
ERROR: 0:24: 'cluster size' : argument must be a power of 2
ERROR: 0:27: 'cluster size' : argument must be a power of 2
ERROR: 0:29: 'cluster size' : argument must be at least 1
ERROR: 0:31: 'cluster size' : argument must be at least 1
ERROR: 0:33: 'cluster size' : argument must be compile-time constant
ERROR: 0:36: 'cluster size' : argument must be compile-time constant
ERROR: 0:37: 'cluster size' : argument must be compile-time constant
ERROR: 8 compilation errors. No code generated.
Shader version: 450
Requested GL_KHR_shader_subgroup_basic
Requested GL_KHR_shader_subgroup_clustered
local_size = (8, 1, 1)
ERROR: node is still EOpNull!
0:15 Function Definition: main( ( global void)
0:15 Function Parameters:
0:17 Sequence
0:17 Sequence
0:17 move second child to first child ( temp int)
0:17 'a' ( temp int)
0:17 Constant:
0:17 1 (const int)
0:20 Sequence
0:20 move second child to first child ( temp uint)
0:20 'invocation' ( temp uint)
0:20 mod ( temp uint)
0:20 add ( temp uint)
0:20 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:20 'gl_SubgroupSize' ( in uint unknown built-in variable)
0:20 Constant:
0:20 4 (const uint)
0:22 move second child to first child ( temp 2-component vector of float)
0:22 vector swizzle ( temp 2-component vector of float)
0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:22 'invocation' ( temp uint)
0:22 Constant:
0:22 0 (const int)
0:22 Sequence
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 1 (const int)
0:22 subgroupClusteredAdd ( global 2-component vector of float)
0:22 vector swizzle ( temp 2-component vector of float)
0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:22 Constant:
0:22 1 (const int)
0:22 Constant:
0:22 0 (const int)
0:22 Sequence
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 1 (const int)
0:22 Constant:
0:22 0 (const uint)
0:24 move second child to first child ( temp float)
0:24 direct index ( temp float)
0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:24 'invocation' ( temp uint)
0:24 Constant:
0:24 0 (const int)
0:24 Constant:
0:24 0 (const int)
0:24 subgroupClusteredMul ( global float)
0:24 direct index ( temp float)
0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:24 Constant:
0:24 0 (const int)
0:24 Constant:
0:24 0 (const int)
0:24 Constant:
0:24 0 (const int)
0:24 Constant:
0:24 3 (const uint)
0:26 move second child to first child ( temp 2-component vector of int)
0:26 vector swizzle ( temp 2-component vector of int)
0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:26 'invocation' ( temp uint)
0:26 Constant:
0:26 1 (const int)
0:26 Sequence
0:26 Constant:
0:26 0 (const int)
0:26 Constant:
0:26 1 (const int)
0:26 subgroupClusteredMin ( global 2-component vector of int)
0:26 vector swizzle ( temp 2-component vector of int)
0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 1 (const int)
0:26 Sequence
0:26 Constant:
0:26 0 (const int)
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 8 (const uint)
0:27 move second child to first child ( temp 3-component vector of int)
0:27 vector swizzle ( temp 3-component vector of int)
0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:27 'invocation' ( temp uint)
0:27 Constant:
0:27 1 (const int)
0:27 Sequence
0:27 Constant:
0:27 0 (const int)
0:27 Constant:
0:27 1 (const int)
0:27 Constant:
0:27 2 (const int)
0:27 subgroupClusteredMin ( global 3-component vector of int)
0:27 vector swizzle ( temp 3-component vector of int)
0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:27 Constant:
0:27 2 (const int)
0:27 Constant:
0:27 1 (const int)
0:27 Sequence
0:27 Constant:
0:27 0 (const int)
0:27 Constant:
0:27 1 (const int)
0:27 Constant:
0:27 2 (const int)
0:27 Constant:
0:27 6 (const uint)
0:29 move second child to first child ( temp float)
0:29 direct index ( temp float)
0:29 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:29 'invocation' ( temp uint)
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 0 (const int)
0:29 subgroupClusteredMax ( global float)
0:29 direct index ( temp float)
0:29 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 4294967295 (const uint)
0:31 move second child to first child ( temp 4-component vector of int)
0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:31 'invocation' ( temp uint)
0:31 Constant:
0:31 1 (const int)
0:31 subgroupClusteredAnd ( global 4-component vector of int)
0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:31 Constant:
0:31 3 (const int)
0:31 Constant:
0:31 1 (const int)
0:31 Constant:
0:31 4294967293 (const uint)
0:33 move second child to first child ( temp int)
0:33 direct index ( temp int)
0:33 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:33 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:33 'invocation' ( temp uint)
0:33 Constant:
0:33 1 (const int)
0:33 Constant:
0:33 0 (const int)
0:33 subgroupClusteredOr ( global int)
0:33 direct index ( temp int)
0:33 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
0:33 1 (const int)
0:33 Constant:
0:33 0 (const int)
0:33 Convert int to uint ( temp uint)
0:33 'a' ( temp int)
0:34 move second child to first child ( temp 2-component vector of int)
0:34 vector swizzle ( temp 2-component vector of int)
0:34 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:34 'invocation' ( temp uint)
0:34 Constant:
0:34 1 (const int)
0:34 Sequence
0:34 Constant:
0:34 0 (const int)
0:34 Constant:
0:34 1 (const int)
0:34 subgroupClusteredOr ( global 2-component vector of int)
0:34 vector swizzle ( temp 2-component vector of int)
0:34 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:34 Constant:
0:34 1 (const int)
0:34 Constant:
0:34 1 (const int)
0:34 Sequence
0:34 Constant:
0:34 0 (const int)
0:34 Constant:
0:34 1 (const int)
0:34 Constant:
0:34 1 (const uint)
0:36 move second child to first child ( temp int)
0:36 direct index ( temp int)
0:36 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:36 'invocation' ( temp uint)
0:36 Constant:
0:36 1 (const int)
0:36 Constant:
0:36 0 (const int)
0:36 subgroupClusteredXor ( global int)
0:36 direct index ( temp int)
0:36 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:36 Constant:
0:36 0 (const int)
0:36 Constant:
0:36 1 (const int)
0:36 Constant:
0:36 0 (const int)
0:36 Convert int to uint ( temp uint)
0:36 add ( temp int)
0:36 Constant:
0:36 1 (const int)
0:36 'a' ( temp int)
0:37 move second child to first child ( temp 2-component vector of int)
0:37 vector swizzle ( temp 2-component vector of int)
0:37 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:37 'invocation' ( temp uint)
0:37 Constant:
0:37 1 (const int)
0:37 Sequence
0:37 Constant:
0:37 0 (const int)
0:37 Constant:
0:37 1 (const int)
0:37 subgroupClusteredXor ( global 2-component vector of int)
0:37 vector swizzle ( temp 2-component vector of int)
0:37 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:37 Constant:
0:37 1 (const int)
0:37 Constant:
0:37 1 (const int)
0:37 Sequence
0:37 Constant:
0:37 0 (const int)
0:37 Constant:
0:37 1 (const int)
0:37 Convert int to uint ( temp uint)
0:37 add ( temp int)
0:37 Constant:
0:37 1 (const int)
0:37 'a' ( temp int)
0:38 move second child to first child ( temp 3-component vector of int)
0:38 vector swizzle ( temp 3-component vector of int)
0:38 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:38 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:38 'invocation' ( temp uint)
0:38 Constant:
0:38 1 (const int)
0:38 Sequence
0:38 Constant:
0:38 0 (const int)
0:38 Constant:
0:38 1 (const int)
0:38 Constant:
0:38 2 (const int)
0:38 subgroupClusteredXor ( global 3-component vector of int)
0:38 vector swizzle ( temp 3-component vector of int)
0:38 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:38 Constant:
0:38 2 (const int)
0:38 Constant:
0:38 1 (const int)
0:38 Sequence
0:38 Constant:
0:38 0 (const int)
0:38 Constant:
0:38 1 (const int)
0:38 Constant:
0:38 2 (const int)
0:38 Constant:
0:38 2 (const uint)
0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
0:? 8 (const uint)
0:? 1 (const uint)
0:? 1 (const uint)
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
Linked compute stage:
Shader version: 450
Requested GL_KHR_shader_subgroup_basic
Requested GL_KHR_shader_subgroup_clustered
local_size = (8, 1, 1)
ERROR: node is still EOpNull!
0:15 Function Definition: main( ( global void)
0:15 Function Parameters:
0:17 Sequence
0:17 Sequence
0:17 move second child to first child ( temp int)
0:17 'a' ( temp int)
0:17 Constant:
0:17 1 (const int)
0:20 Sequence
0:20 move second child to first child ( temp uint)
0:20 'invocation' ( temp uint)
0:20 mod ( temp uint)
0:20 add ( temp uint)
0:20 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:20 'gl_SubgroupSize' ( in uint unknown built-in variable)
0:20 Constant:
0:20 4 (const uint)
0:22 move second child to first child ( temp 2-component vector of float)
0:22 vector swizzle ( temp 2-component vector of float)
0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:22 'invocation' ( temp uint)
0:22 Constant:
0:22 0 (const int)
0:22 Sequence
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 1 (const int)
0:22 subgroupClusteredAdd ( global 2-component vector of float)
0:22 vector swizzle ( temp 2-component vector of float)
0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:22 Constant:
0:22 1 (const int)
0:22 Constant:
0:22 0 (const int)
0:22 Sequence
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 1 (const int)
0:22 Constant:
0:22 0 (const uint)
0:24 move second child to first child ( temp float)
0:24 direct index ( temp float)
0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:24 'invocation' ( temp uint)
0:24 Constant:
0:24 0 (const int)
0:24 Constant:
0:24 0 (const int)
0:24 subgroupClusteredMul ( global float)
0:24 direct index ( temp float)
0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:24 Constant:
0:24 0 (const int)
0:24 Constant:
0:24 0 (const int)
0:24 Constant:
0:24 0 (const int)
0:24 Constant:
0:24 3 (const uint)
0:26 move second child to first child ( temp 2-component vector of int)
0:26 vector swizzle ( temp 2-component vector of int)
0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:26 'invocation' ( temp uint)
0:26 Constant:
0:26 1 (const int)
0:26 Sequence
0:26 Constant:
0:26 0 (const int)
0:26 Constant:
0:26 1 (const int)
0:26 subgroupClusteredMin ( global 2-component vector of int)
0:26 vector swizzle ( temp 2-component vector of int)
0:26 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 1 (const int)
0:26 Sequence
0:26 Constant:
0:26 0 (const int)
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 8 (const uint)
0:27 move second child to first child ( temp 3-component vector of int)
0:27 vector swizzle ( temp 3-component vector of int)
0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:27 'invocation' ( temp uint)
0:27 Constant:
0:27 1 (const int)
0:27 Sequence
0:27 Constant:
0:27 0 (const int)
0:27 Constant:
0:27 1 (const int)
0:27 Constant:
0:27 2 (const int)
0:27 subgroupClusteredMin ( global 3-component vector of int)
0:27 vector swizzle ( temp 3-component vector of int)
0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:27 Constant:
0:27 2 (const int)
0:27 Constant:
0:27 1 (const int)
0:27 Sequence
0:27 Constant:
0:27 0 (const int)
0:27 Constant:
0:27 1 (const int)
0:27 Constant:
0:27 2 (const int)
0:27 Constant:
0:27 6 (const uint)
0:29 move second child to first child ( temp float)
0:29 direct index ( temp float)
0:29 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:29 'invocation' ( temp uint)
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 0 (const int)
0:29 subgroupClusteredMax ( global float)
0:29 direct index ( temp float)
0:29 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 4294967295 (const uint)
0:31 move second child to first child ( temp 4-component vector of int)
0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:31 'invocation' ( temp uint)
0:31 Constant:
0:31 1 (const int)
0:31 subgroupClusteredAnd ( global 4-component vector of int)
0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:31 Constant:
0:31 3 (const int)
0:31 Constant:
0:31 1 (const int)
0:31 Constant:
0:31 4294967293 (const uint)
0:33 move second child to first child ( temp int)
0:33 direct index ( temp int)
0:33 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:33 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:33 'invocation' ( temp uint)
0:33 Constant:
0:33 1 (const int)
0:33 Constant:
0:33 0 (const int)
0:33 subgroupClusteredOr ( global int)
0:33 direct index ( temp int)
0:33 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
0:33 1 (const int)
0:33 Constant:
0:33 0 (const int)
0:33 Convert int to uint ( temp uint)
0:33 'a' ( temp int)
0:34 move second child to first child ( temp 2-component vector of int)
0:34 vector swizzle ( temp 2-component vector of int)
0:34 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:34 'invocation' ( temp uint)
0:34 Constant:
0:34 1 (const int)
0:34 Sequence
0:34 Constant:
0:34 0 (const int)
0:34 Constant:
0:34 1 (const int)
0:34 subgroupClusteredOr ( global 2-component vector of int)
0:34 vector swizzle ( temp 2-component vector of int)
0:34 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:34 Constant:
0:34 1 (const int)
0:34 Constant:
0:34 1 (const int)
0:34 Sequence
0:34 Constant:
0:34 0 (const int)
0:34 Constant:
0:34 1 (const int)
0:34 Constant:
0:34 1 (const uint)
0:36 move second child to first child ( temp int)
0:36 direct index ( temp int)
0:36 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:36 'invocation' ( temp uint)
0:36 Constant:
0:36 1 (const int)
0:36 Constant:
0:36 0 (const int)
0:36 subgroupClusteredXor ( global int)
0:36 direct index ( temp int)
0:36 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:36 Constant:
0:36 0 (const int)
0:36 Constant:
0:36 1 (const int)
0:36 Constant:
0:36 0 (const int)
0:36 Convert int to uint ( temp uint)
0:36 add ( temp int)
0:36 Constant:
0:36 1 (const int)
0:36 'a' ( temp int)
0:37 move second child to first child ( temp 2-component vector of int)
0:37 vector swizzle ( temp 2-component vector of int)
0:37 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:37 'invocation' ( temp uint)
0:37 Constant:
0:37 1 (const int)
0:37 Sequence
0:37 Constant:
0:37 0 (const int)
0:37 Constant:
0:37 1 (const int)
0:37 subgroupClusteredXor ( global 2-component vector of int)
0:37 vector swizzle ( temp 2-component vector of int)
0:37 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:37 Constant:
0:37 1 (const int)
0:37 Constant:
0:37 1 (const int)
0:37 Sequence
0:37 Constant:
0:37 0 (const int)
0:37 Constant:
0:37 1 (const int)
0:37 Convert int to uint ( temp uint)
0:37 add ( temp int)
0:37 Constant:
0:37 1 (const int)
0:37 'a' ( temp int)
0:38 move second child to first child ( temp 3-component vector of int)
0:38 vector swizzle ( temp 3-component vector of int)
0:38 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:38 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:38 'invocation' ( temp uint)
0:38 Constant:
0:38 1 (const int)
0:38 Sequence
0:38 Constant:
0:38 0 (const int)
0:38 Constant:
0:38 1 (const int)
0:38 Constant:
0:38 2 (const int)
0:38 subgroupClusteredXor ( global 3-component vector of int)
0:38 vector swizzle ( temp 3-component vector of int)
0:38 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})
0:38 Constant:
0:38 2 (const int)
0:38 Constant:
0:38 1 (const int)
0:38 Sequence
0:38 Constant:
0:38 0 (const int)
0:38 Constant:
0:38 1 (const int)
0:38 Constant:
0:38 2 (const int)
0:38 Constant:
0:38 2 (const uint)
0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
0:? 8 (const uint)
0:? 1 (const uint)
0:? 1 (const uint)
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4})

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,971 @@
glsl.450.subgroupVote.comp
Shader version: 450
Requested GL_KHR_shader_subgroup_basic
Requested GL_KHR_shader_subgroup_vote
local_size = (8, 8, 1)
0:? Sequence
0:16 Function Definition: main( ( global void)
0:16 Function Parameters:
0:18 Sequence
0:18 Sequence
0:18 move second child to first child ( temp uint)
0:18 'invocation' ( temp uint)
0:18 mod ( temp uint)
0:18 add ( temp uint)
0:18 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:18 'gl_SubgroupSize' ( in uint unknown built-in variable)
0:18 Constant:
0:18 4 (const uint)
0:20 Test condition and select ( temp void)
0:20 Condition
0:20 subgroupAll ( global bool)
0:20 Compare Less Than ( temp bool)
0:20 r: direct index for structure (layout( column_major shared) buffer int)
0:20 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:20 'invocation' ( temp uint)
0:20 Constant:
0:20 4 (const int)
0:20 Constant:
0:20 0 (const int)
0:20 true case
0:22 Sequence
0:22 move second child to first child ( temp int)
0:22 r: direct index for structure (layout( column_major shared) buffer int)
0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:22 'invocation' ( temp uint)
0:22 Constant:
0:22 4 (const int)
0:22 Convert bool to int ( temp int)
0:22 subgroupAllEqual ( global bool)
0:22 direct index ( temp float)
0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 0 (const int)
0:23 move second child to first child ( temp int)
0:23 r: direct index for structure (layout( column_major shared) buffer int)
0:23 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:23 'invocation' ( temp uint)
0:23 Constant:
0:23 4 (const int)
0:23 Convert bool to int ( temp int)
0:23 subgroupAllEqual ( global bool)
0:23 vector swizzle ( temp 2-component vector of float)
0:23 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:23 Constant:
0:23 1 (const int)
0:23 Constant:
0:23 0 (const int)
0:23 Sequence
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 1 (const int)
0:24 move second child to first child ( temp int)
0:24 r: direct index for structure (layout( column_major shared) buffer int)
0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:24 'invocation' ( temp uint)
0:24 Constant:
0:24 4 (const int)
0:24 Convert bool to int ( temp int)
0:24 subgroupAllEqual ( global bool)
0:24 vector swizzle ( temp 3-component vector of float)
0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:24 Constant:
0:24 2 (const int)
0:24 Constant:
0:24 0 (const int)
0:24 Sequence
0:24 Constant:
0:24 0 (const int)
0:24 Constant:
0:24 1 (const int)
0:24 Constant:
0:24 2 (const int)
0:25 move second child to first child ( temp int)
0:25 r: direct index for structure (layout( column_major shared) buffer int)
0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:25 'invocation' ( temp uint)
0:25 Constant:
0:25 4 (const int)
0:25 Convert bool to int ( temp int)
0:25 subgroupAllEqual ( global bool)
0:25 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:25 Constant:
0:25 3 (const int)
0:25 Constant:
0:25 0 (const int)
0:27 move second child to first child ( temp int)
0:27 r: direct index for structure (layout( column_major shared) buffer int)
0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:27 'invocation' ( temp uint)
0:27 Constant:
0:27 4 (const int)
0:27 Convert bool to int ( temp int)
0:27 subgroupAllEqual ( global bool)
0:27 direct index ( temp int)
0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:27 Constant:
0:27 0 (const int)
0:27 Constant:
0:27 1 (const int)
0:27 Constant:
0:27 0 (const int)
0:28 move second child to first child ( temp int)
0:28 r: direct index for structure (layout( column_major shared) buffer int)
0:28 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:28 'invocation' ( temp uint)
0:28 Constant:
0:28 4 (const int)
0:28 Convert bool to int ( temp int)
0:28 subgroupAllEqual ( global bool)
0:28 vector swizzle ( temp 2-component vector of int)
0:28 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:28 Constant:
0:28 1 (const int)
0:28 Constant:
0:28 1 (const int)
0:28 Sequence
0:28 Constant:
0:28 0 (const int)
0:28 Constant:
0:28 1 (const int)
0:29 move second child to first child ( temp int)
0:29 r: direct index for structure (layout( column_major shared) buffer int)
0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:29 'invocation' ( temp uint)
0:29 Constant:
0:29 4 (const int)
0:29 Convert bool to int ( temp int)
0:29 subgroupAllEqual ( global bool)
0:29 vector swizzle ( temp 3-component vector of int)
0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:29 Constant:
0:29 2 (const int)
0:29 Constant:
0:29 1 (const int)
0:29 Sequence
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 1 (const int)
0:29 Constant:
0:29 2 (const int)
0:30 move second child to first child ( temp int)
0:30 r: direct index for structure (layout( column_major shared) buffer int)
0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:30 'invocation' ( temp uint)
0:30 Constant:
0:30 4 (const int)
0:30 Convert bool to int ( temp int)
0:30 subgroupAllEqual ( global bool)
0:30 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:30 Constant:
0:30 3 (const int)
0:30 Constant:
0:30 1 (const int)
0:32 move second child to first child ( temp int)
0:32 r: direct index for structure (layout( column_major shared) buffer int)
0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:32 'invocation' ( temp uint)
0:32 Constant:
0:32 4 (const int)
0:32 Convert bool to int ( temp int)
0:32 subgroupAllEqual ( global bool)
0:32 direct index ( temp uint)
0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
0:32 2 (const int)
0:32 Constant:
0:32 0 (const int)
0:33 move second child to first child ( temp int)
0:33 r: direct index for structure (layout( column_major shared) buffer int)
0:33 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:33 'invocation' ( temp uint)
0:33 Constant:
0:33 4 (const int)
0:33 Convert bool to int ( temp int)
0:33 subgroupAllEqual ( global bool)
0:33 vector swizzle ( temp 2-component vector of uint)
0:33 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:33 Constant:
0:33 1 (const int)
0:33 Constant:
0:33 2 (const int)
0:33 Sequence
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
0:33 1 (const int)
0:34 move second child to first child ( temp int)
0:34 r: direct index for structure (layout( column_major shared) buffer int)
0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:34 'invocation' ( temp uint)
0:34 Constant:
0:34 4 (const int)
0:34 Convert bool to int ( temp int)
0:34 subgroupAllEqual ( global bool)
0:34 vector swizzle ( temp 3-component vector of uint)
0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:34 Constant:
0:34 2 (const int)
0:34 Constant:
0:34 2 (const int)
0:34 Sequence
0:34 Constant:
0:34 0 (const int)
0:34 Constant:
0:34 1 (const int)
0:34 Constant:
0:34 2 (const int)
0:35 move second child to first child ( temp int)
0:35 r: direct index for structure (layout( column_major shared) buffer int)
0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:35 'invocation' ( temp uint)
0:35 Constant:
0:35 4 (const int)
0:35 Convert bool to int ( temp int)
0:35 subgroupAllEqual ( global bool)
0:35 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:35 Constant:
0:35 3 (const int)
0:35 Constant:
0:35 2 (const int)
0:20 false case
0:37 Test condition and select ( temp void)
0:37 Condition
0:37 subgroupAny ( global bool)
0:37 Compare Less Than ( temp bool)
0:37 r: direct index for structure (layout( column_major shared) buffer int)
0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:37 'invocation' ( temp uint)
0:37 Constant:
0:37 4 (const int)
0:37 Constant:
0:37 0 (const int)
0:37 true case
0:39 Sequence
0:39 move second child to first child ( temp int)
0:39 r: direct index for structure (layout( column_major shared) buffer int)
0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:39 'invocation' ( temp uint)
0:39 Constant:
0:39 4 (const int)
0:39 Convert bool to int ( temp int)
0:39 subgroupAllEqual ( global bool)
0:39 direct index ( temp double)
0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double)
0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:39 Constant:
0:39 0 (const int)
0:39 Constant:
0:39 3 (const int)
0:39 Constant:
0:39 0 (const int)
0:40 move second child to first child ( temp int)
0:40 r: direct index for structure (layout( column_major shared) buffer int)
0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:40 'invocation' ( temp uint)
0:40 Constant:
0:40 4 (const int)
0:40 Convert bool to int ( temp int)
0:40 subgroupAllEqual ( global bool)
0:40 vector swizzle ( temp 2-component vector of double)
0:40 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double)
0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 3 (const int)
0:40 Sequence
0:40 Constant:
0:40 0 (const int)
0:40 Constant:
0:40 1 (const int)
0:41 move second child to first child ( temp int)
0:41 r: direct index for structure (layout( column_major shared) buffer int)
0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:41 'invocation' ( temp uint)
0:41 Constant:
0:41 4 (const int)
0:41 Convert bool to int ( temp int)
0:41 subgroupAllEqual ( global bool)
0:41 vector swizzle ( temp 3-component vector of double)
0:41 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double)
0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:41 Constant:
0:41 2 (const int)
0:41 Constant:
0:41 3 (const int)
0:41 Sequence
0:41 Constant:
0:41 0 (const int)
0:41 Constant:
0:41 1 (const int)
0:41 Constant:
0:41 2 (const int)
0:42 move second child to first child ( temp int)
0:42 r: direct index for structure (layout( column_major shared) buffer int)
0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:42 'invocation' ( temp uint)
0:42 Constant:
0:42 4 (const int)
0:42 Convert bool to int ( temp int)
0:42 subgroupAllEqual ( global bool)
0:42 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double)
0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:42 Constant:
0:42 3 (const int)
0:42 Constant:
0:42 3 (const int)
0:44 move second child to first child ( temp int)
0:44 r: direct index for structure (layout( column_major shared) buffer int)
0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:44 'invocation' ( temp uint)
0:44 Constant:
0:44 4 (const int)
0:44 Construct int ( temp int)
0:44 Convert bool to int ( temp int)
0:44 subgroupAllEqual ( global bool)
0:44 Compare Less Than ( temp bool)
0:44 direct index ( temp int)
0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:44 Constant:
0:44 0 (const int)
0:44 Constant:
0:44 1 (const int)
0:44 Constant:
0:44 0 (const int)
0:44 Constant:
0:44 0 (const int)
0:45 move second child to first child ( temp int)
0:45 r: direct index for structure (layout( column_major shared) buffer int)
0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:45 'invocation' ( temp uint)
0:45 Constant:
0:45 4 (const int)
0:45 Construct int ( temp int)
0:45 Construct ivec2 ( temp 2-component vector of int)
0:45 Convert bool to int ( temp int)
0:45 subgroupAllEqual ( global bool)
0:45 Compare Less Than ( global 2-component vector of bool)
0:45 vector swizzle ( temp 2-component vector of int)
0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:45 Constant:
0:45 1 (const int)
0:45 Constant:
0:45 1 (const int)
0:45 Sequence
0:45 Constant:
0:45 0 (const int)
0:45 Constant:
0:45 1 (const int)
0:45 Constant:
0:45 0 (const int)
0:45 0 (const int)
0:46 move second child to first child ( temp int)
0:46 r: direct index for structure (layout( column_major shared) buffer int)
0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:46 'invocation' ( temp uint)
0:46 Constant:
0:46 4 (const int)
0:46 Construct int ( temp int)
0:46 Construct ivec3 ( temp 3-component vector of int)
0:46 Convert bool to int ( temp int)
0:46 subgroupAllEqual ( global bool)
0:46 Compare Less Than ( global 3-component vector of bool)
0:46 vector swizzle ( temp 3-component vector of int)
0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:46 Constant:
0:46 1 (const int)
0:46 Constant:
0:46 1 (const int)
0:46 Sequence
0:46 Constant:
0:46 0 (const int)
0:46 Constant:
0:46 1 (const int)
0:46 Constant:
0:46 2 (const int)
0:46 Constant:
0:46 0 (const int)
0:46 0 (const int)
0:46 0 (const int)
0:47 move second child to first child ( temp int)
0:47 r: direct index for structure (layout( column_major shared) buffer int)
0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:47 'invocation' ( temp uint)
0:47 Constant:
0:47 4 (const int)
0:47 Construct int ( temp int)
0:47 Construct ivec4 ( temp 4-component vector of int)
0:47 Convert bool to int ( temp int)
0:47 subgroupAllEqual ( global bool)
0:47 Compare Less Than ( global 4-component vector of bool)
0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:47 Constant:
0:47 1 (const int)
0:47 Constant:
0:47 1 (const int)
0:47 Constant:
0:47 0 (const int)
0:47 0 (const int)
0:47 0 (const int)
0:47 0 (const int)
0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
0:? 8 (const uint)
0:? 8 (const uint)
0:? 1 (const uint)
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
Linked compute stage:
Shader version: 450
Requested GL_KHR_shader_subgroup_basic
Requested GL_KHR_shader_subgroup_vote
local_size = (8, 8, 1)
0:? Sequence
0:16 Function Definition: main( ( global void)
0:16 Function Parameters:
0:18 Sequence
0:18 Sequence
0:18 move second child to first child ( temp uint)
0:18 'invocation' ( temp uint)
0:18 mod ( temp uint)
0:18 add ( temp uint)
0:18 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:18 'gl_SubgroupSize' ( in uint unknown built-in variable)
0:18 Constant:
0:18 4 (const uint)
0:20 Test condition and select ( temp void)
0:20 Condition
0:20 subgroupAll ( global bool)
0:20 Compare Less Than ( temp bool)
0:20 r: direct index for structure (layout( column_major shared) buffer int)
0:20 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:20 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:20 'invocation' ( temp uint)
0:20 Constant:
0:20 4 (const int)
0:20 Constant:
0:20 0 (const int)
0:20 true case
0:22 Sequence
0:22 move second child to first child ( temp int)
0:22 r: direct index for structure (layout( column_major shared) buffer int)
0:22 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:22 'invocation' ( temp uint)
0:22 Constant:
0:22 4 (const int)
0:22 Convert bool to int ( temp int)
0:22 subgroupAllEqual ( global bool)
0:22 direct index ( temp float)
0:22 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 0 (const int)
0:23 move second child to first child ( temp int)
0:23 r: direct index for structure (layout( column_major shared) buffer int)
0:23 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:23 'invocation' ( temp uint)
0:23 Constant:
0:23 4 (const int)
0:23 Convert bool to int ( temp int)
0:23 subgroupAllEqual ( global bool)
0:23 vector swizzle ( temp 2-component vector of float)
0:23 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:23 Constant:
0:23 1 (const int)
0:23 Constant:
0:23 0 (const int)
0:23 Sequence
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 1 (const int)
0:24 move second child to first child ( temp int)
0:24 r: direct index for structure (layout( column_major shared) buffer int)
0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:24 'invocation' ( temp uint)
0:24 Constant:
0:24 4 (const int)
0:24 Convert bool to int ( temp int)
0:24 subgroupAllEqual ( global bool)
0:24 vector swizzle ( temp 3-component vector of float)
0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:24 Constant:
0:24 2 (const int)
0:24 Constant:
0:24 0 (const int)
0:24 Sequence
0:24 Constant:
0:24 0 (const int)
0:24 Constant:
0:24 1 (const int)
0:24 Constant:
0:24 2 (const int)
0:25 move second child to first child ( temp int)
0:25 r: direct index for structure (layout( column_major shared) buffer int)
0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:25 'invocation' ( temp uint)
0:25 Constant:
0:25 4 (const int)
0:25 Convert bool to int ( temp int)
0:25 subgroupAllEqual ( global bool)
0:25 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:25 Constant:
0:25 3 (const int)
0:25 Constant:
0:25 0 (const int)
0:27 move second child to first child ( temp int)
0:27 r: direct index for structure (layout( column_major shared) buffer int)
0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:27 'invocation' ( temp uint)
0:27 Constant:
0:27 4 (const int)
0:27 Convert bool to int ( temp int)
0:27 subgroupAllEqual ( global bool)
0:27 direct index ( temp int)
0:27 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:27 Constant:
0:27 0 (const int)
0:27 Constant:
0:27 1 (const int)
0:27 Constant:
0:27 0 (const int)
0:28 move second child to first child ( temp int)
0:28 r: direct index for structure (layout( column_major shared) buffer int)
0:28 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:28 'invocation' ( temp uint)
0:28 Constant:
0:28 4 (const int)
0:28 Convert bool to int ( temp int)
0:28 subgroupAllEqual ( global bool)
0:28 vector swizzle ( temp 2-component vector of int)
0:28 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:28 Constant:
0:28 1 (const int)
0:28 Constant:
0:28 1 (const int)
0:28 Sequence
0:28 Constant:
0:28 0 (const int)
0:28 Constant:
0:28 1 (const int)
0:29 move second child to first child ( temp int)
0:29 r: direct index for structure (layout( column_major shared) buffer int)
0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:29 'invocation' ( temp uint)
0:29 Constant:
0:29 4 (const int)
0:29 Convert bool to int ( temp int)
0:29 subgroupAllEqual ( global bool)
0:29 vector swizzle ( temp 3-component vector of int)
0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:29 Constant:
0:29 2 (const int)
0:29 Constant:
0:29 1 (const int)
0:29 Sequence
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 1 (const int)
0:29 Constant:
0:29 2 (const int)
0:30 move second child to first child ( temp int)
0:30 r: direct index for structure (layout( column_major shared) buffer int)
0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:30 'invocation' ( temp uint)
0:30 Constant:
0:30 4 (const int)
0:30 Convert bool to int ( temp int)
0:30 subgroupAllEqual ( global bool)
0:30 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:30 Constant:
0:30 3 (const int)
0:30 Constant:
0:30 1 (const int)
0:32 move second child to first child ( temp int)
0:32 r: direct index for structure (layout( column_major shared) buffer int)
0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:32 'invocation' ( temp uint)
0:32 Constant:
0:32 4 (const int)
0:32 Convert bool to int ( temp int)
0:32 subgroupAllEqual ( global bool)
0:32 direct index ( temp uint)
0:32 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
0:32 2 (const int)
0:32 Constant:
0:32 0 (const int)
0:33 move second child to first child ( temp int)
0:33 r: direct index for structure (layout( column_major shared) buffer int)
0:33 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:33 'invocation' ( temp uint)
0:33 Constant:
0:33 4 (const int)
0:33 Convert bool to int ( temp int)
0:33 subgroupAllEqual ( global bool)
0:33 vector swizzle ( temp 2-component vector of uint)
0:33 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:33 Constant:
0:33 1 (const int)
0:33 Constant:
0:33 2 (const int)
0:33 Sequence
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
0:33 1 (const int)
0:34 move second child to first child ( temp int)
0:34 r: direct index for structure (layout( column_major shared) buffer int)
0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:34 'invocation' ( temp uint)
0:34 Constant:
0:34 4 (const int)
0:34 Convert bool to int ( temp int)
0:34 subgroupAllEqual ( global bool)
0:34 vector swizzle ( temp 3-component vector of uint)
0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:34 Constant:
0:34 2 (const int)
0:34 Constant:
0:34 2 (const int)
0:34 Sequence
0:34 Constant:
0:34 0 (const int)
0:34 Constant:
0:34 1 (const int)
0:34 Constant:
0:34 2 (const int)
0:35 move second child to first child ( temp int)
0:35 r: direct index for structure (layout( column_major shared) buffer int)
0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:35 'invocation' ( temp uint)
0:35 Constant:
0:35 4 (const int)
0:35 Convert bool to int ( temp int)
0:35 subgroupAllEqual ( global bool)
0:35 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:35 Constant:
0:35 3 (const int)
0:35 Constant:
0:35 2 (const int)
0:20 false case
0:37 Test condition and select ( temp void)
0:37 Condition
0:37 subgroupAny ( global bool)
0:37 Compare Less Than ( temp bool)
0:37 r: direct index for structure (layout( column_major shared) buffer int)
0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:37 'invocation' ( temp uint)
0:37 Constant:
0:37 4 (const int)
0:37 Constant:
0:37 0 (const int)
0:37 true case
0:39 Sequence
0:39 move second child to first child ( temp int)
0:39 r: direct index for structure (layout( column_major shared) buffer int)
0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:39 'invocation' ( temp uint)
0:39 Constant:
0:39 4 (const int)
0:39 Convert bool to int ( temp int)
0:39 subgroupAllEqual ( global bool)
0:39 direct index ( temp double)
0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double)
0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:39 Constant:
0:39 0 (const int)
0:39 Constant:
0:39 3 (const int)
0:39 Constant:
0:39 0 (const int)
0:40 move second child to first child ( temp int)
0:40 r: direct index for structure (layout( column_major shared) buffer int)
0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:40 'invocation' ( temp uint)
0:40 Constant:
0:40 4 (const int)
0:40 Convert bool to int ( temp int)
0:40 subgroupAllEqual ( global bool)
0:40 vector swizzle ( temp 2-component vector of double)
0:40 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double)
0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 3 (const int)
0:40 Sequence
0:40 Constant:
0:40 0 (const int)
0:40 Constant:
0:40 1 (const int)
0:41 move second child to first child ( temp int)
0:41 r: direct index for structure (layout( column_major shared) buffer int)
0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:41 'invocation' ( temp uint)
0:41 Constant:
0:41 4 (const int)
0:41 Convert bool to int ( temp int)
0:41 subgroupAllEqual ( global bool)
0:41 vector swizzle ( temp 3-component vector of double)
0:41 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double)
0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:41 Constant:
0:41 2 (const int)
0:41 Constant:
0:41 3 (const int)
0:41 Sequence
0:41 Constant:
0:41 0 (const int)
0:41 Constant:
0:41 1 (const int)
0:41 Constant:
0:41 2 (const int)
0:42 move second child to first child ( temp int)
0:42 r: direct index for structure (layout( column_major shared) buffer int)
0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:42 'invocation' ( temp uint)
0:42 Constant:
0:42 4 (const int)
0:42 Convert bool to int ( temp int)
0:42 subgroupAllEqual ( global bool)
0:42 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double)
0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:42 Constant:
0:42 3 (const int)
0:42 Constant:
0:42 3 (const int)
0:44 move second child to first child ( temp int)
0:44 r: direct index for structure (layout( column_major shared) buffer int)
0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:44 'invocation' ( temp uint)
0:44 Constant:
0:44 4 (const int)
0:44 Construct int ( temp int)
0:44 Convert bool to int ( temp int)
0:44 subgroupAllEqual ( global bool)
0:44 Compare Less Than ( temp bool)
0:44 direct index ( temp int)
0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:44 Constant:
0:44 0 (const int)
0:44 Constant:
0:44 1 (const int)
0:44 Constant:
0:44 0 (const int)
0:44 Constant:
0:44 0 (const int)
0:45 move second child to first child ( temp int)
0:45 r: direct index for structure (layout( column_major shared) buffer int)
0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:45 'invocation' ( temp uint)
0:45 Constant:
0:45 4 (const int)
0:45 Construct int ( temp int)
0:45 Construct ivec2 ( temp 2-component vector of int)
0:45 Convert bool to int ( temp int)
0:45 subgroupAllEqual ( global bool)
0:45 Compare Less Than ( global 2-component vector of bool)
0:45 vector swizzle ( temp 2-component vector of int)
0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:45 Constant:
0:45 1 (const int)
0:45 Constant:
0:45 1 (const int)
0:45 Sequence
0:45 Constant:
0:45 0 (const int)
0:45 Constant:
0:45 1 (const int)
0:45 Constant:
0:45 0 (const int)
0:45 0 (const int)
0:46 move second child to first child ( temp int)
0:46 r: direct index for structure (layout( column_major shared) buffer int)
0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:46 'invocation' ( temp uint)
0:46 Constant:
0:46 4 (const int)
0:46 Construct int ( temp int)
0:46 Construct ivec3 ( temp 3-component vector of int)
0:46 Convert bool to int ( temp int)
0:46 subgroupAllEqual ( global bool)
0:46 Compare Less Than ( global 3-component vector of bool)
0:46 vector swizzle ( temp 3-component vector of int)
0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:46 Constant:
0:46 1 (const int)
0:46 Constant:
0:46 1 (const int)
0:46 Sequence
0:46 Constant:
0:46 0 (const int)
0:46 Constant:
0:46 1 (const int)
0:46 Constant:
0:46 2 (const int)
0:46 Constant:
0:46 0 (const int)
0:46 0 (const int)
0:46 0 (const int)
0:47 move second child to first child ( temp int)
0:47 r: direct index for structure (layout( column_major shared) buffer int)
0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:47 'invocation' ( temp uint)
0:47 Constant:
0:47 4 (const int)
0:47 Construct int ( temp int)
0:47 Construct ivec4 ( temp 4-component vector of int)
0:47 Convert bool to int ( temp int)
0:47 subgroupAllEqual ( global bool)
0:47 Compare Less Than ( global 4-component vector of bool)
0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int)
0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})
0:47 Constant:
0:47 1 (const int)
0:47 Constant:
0:47 1 (const int)
0:47 Constant:
0:47 0 (const int)
0:47 0 (const int)
0:47 0 (const int)
0:47 0 (const int)
0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
0:? 8 (const uint)
0:? 8 (const uint)
0:? 1 (const uint)
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4, layout( column_major shared) buffer int r})

View File

@ -0,0 +1,41 @@
glsl.es320.subgroup.frag
Shader version: 320
Requested GL_KHR_shader_subgroup_basic
0:? Sequence
0:4 Function Definition: main( ( global void)
0:4 Function Parameters:
0:6 Sequence
0:6 move second child to first child ( temp mediump 4-component vector of uint)
0:6 'data' (layout( location=0) out mediump 4-component vector of uint)
0:6 Construct uvec4 ( temp mediump 4-component vector of uint)
0:6 'gl_SubgroupSize' ( flat in mediump uint unknown built-in variable)
0:6 'gl_SubgroupInvocationID' ( flat in mediump uint unknown built-in variable)
0:6 Constant:
0:6 0 (const uint)
0:6 Constant:
0:6 0 (const uint)
0:? Linker Objects
0:? 'data' (layout( location=0) out mediump 4-component vector of uint)
Linked fragment stage:
Shader version: 320
Requested GL_KHR_shader_subgroup_basic
0:? Sequence
0:4 Function Definition: main( ( global void)
0:4 Function Parameters:
0:6 Sequence
0:6 move second child to first child ( temp mediump 4-component vector of uint)
0:6 'data' (layout( location=0) out mediump 4-component vector of uint)
0:6 Construct uvec4 ( temp mediump 4-component vector of uint)
0:6 'gl_SubgroupSize' ( flat in mediump uint unknown built-in variable)
0:6 'gl_SubgroupInvocationID' ( flat in mediump uint unknown built-in variable)
0:6 Constant:
0:6 0 (const uint)
0:6 Constant:
0:6 0 (const uint)
0:? Linker Objects
0:? 'data' (layout( location=0) out mediump 4-component vector of uint)

View File

@ -0,0 +1,59 @@
glsl.es320.subgroup.geom
Shader version: 320
Requested GL_KHR_shader_subgroup_basic
invocations = -1
max_vertices = 1
input primitive = points
output primitive = points
0:? Sequence
0:10 Function Definition: main( ( global void)
0:10 Function Parameters:
0:12 Sequence
0:12 move second child to first child ( temp highp 4-component vector of uint)
0:12 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint)
0:12 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint)
0:12 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
0:12 Constant:
0:12 0 (const uint)
0:12 'gl_PrimitiveIDIn' ( in highp int PrimitiveID)
0:12 Construct uvec4 ( temp highp 4-component vector of uint)
0:12 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
0:12 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
0:12 Constant:
0:12 0 (const uint)
0:12 Constant:
0:12 0 (const uint)
0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
Linked geometry stage:
Shader version: 320
Requested GL_KHR_shader_subgroup_basic
invocations = 1
max_vertices = 1
input primitive = points
output primitive = points
0:? Sequence
0:10 Function Definition: main( ( global void)
0:10 Function Parameters:
0:12 Sequence
0:12 move second child to first child ( temp highp 4-component vector of uint)
0:12 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint)
0:12 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint)
0:12 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
0:12 Constant:
0:12 0 (const uint)
0:12 'gl_PrimitiveIDIn' ( in highp int PrimitiveID)
0:12 Construct uvec4 ( temp highp 4-component vector of uint)
0:12 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
0:12 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
0:12 Constant:
0:12 0 (const uint)
0:12 Constant:
0:12 0 (const uint)
0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})

View File

@ -0,0 +1,53 @@
glsl.es320.subgroup.tesc
Shader version: 320
Requested GL_KHR_shader_subgroup_basic
vertices = 1
0:? Sequence
0:9 Function Definition: main( ( global void)
0:9 Function Parameters:
0:11 Sequence
0:11 move second child to first child ( temp highp 4-component vector of uint)
0:11 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint)
0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint)
0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
0:11 Constant:
0:11 0 (const uint)
0:11 'gl_PrimitiveID' ( in highp int PrimitiveID)
0:11 Construct uvec4 ( temp highp 4-component vector of uint)
0:11 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
0:11 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
0:11 Constant:
0:11 0 (const uint)
0:11 Constant:
0:11 0 (const uint)
0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
Linked tessellation control stage:
Shader version: 320
Requested GL_KHR_shader_subgroup_basic
vertices = 1
0:? Sequence
0:9 Function Definition: main( ( global void)
0:9 Function Parameters:
0:11 Sequence
0:11 move second child to first child ( temp highp 4-component vector of uint)
0:11 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint)
0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint)
0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
0:11 Constant:
0:11 0 (const uint)
0:11 'gl_PrimitiveID' ( in highp int PrimitiveID)
0:11 Construct uvec4 ( temp highp 4-component vector of uint)
0:11 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
0:11 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
0:11 Constant:
0:11 0 (const uint)
0:11 Constant:
0:11 0 (const uint)
0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})

View File

@ -0,0 +1,57 @@
glsl.es320.subgroup.tese
Shader version: 320
Requested GL_KHR_shader_subgroup_basic
input primitive = isolines
vertex spacing = none
triangle order = none
0:? Sequence
0:9 Function Definition: main( ( global void)
0:9 Function Parameters:
0:11 Sequence
0:11 move second child to first child ( temp highp 4-component vector of uint)
0:11 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint)
0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint)
0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
0:11 Constant:
0:11 0 (const uint)
0:11 'gl_PrimitiveID' ( in highp int PrimitiveID)
0:11 Construct uvec4 ( temp highp 4-component vector of uint)
0:11 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
0:11 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
0:11 Constant:
0:11 0 (const uint)
0:11 Constant:
0:11 0 (const uint)
0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
Linked tessellation evaluation stage:
Shader version: 320
Requested GL_KHR_shader_subgroup_basic
input primitive = isolines
vertex spacing = equal_spacing
triangle order = ccw
0:? Sequence
0:9 Function Definition: main( ( global void)
0:9 Function Parameters:
0:11 Sequence
0:11 move second child to first child ( temp highp 4-component vector of uint)
0:11 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint)
0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint)
0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
0:11 Constant:
0:11 0 (const uint)
0:11 'gl_PrimitiveID' ( in highp int PrimitiveID)
0:11 Construct uvec4 ( temp highp 4-component vector of uint)
0:11 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
0:11 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
0:11 Constant:
0:11 0 (const uint)
0:11 Constant:
0:11 0 (const uint)
0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})

View File

@ -0,0 +1,55 @@
glsl.es320.subgroup.vert
Shader version: 320
Requested GL_KHR_shader_subgroup_basic
0:? Sequence
0:8 Function Definition: main( ( global void)
0:8 Function Parameters:
0:10 Sequence
0:10 move second child to first child ( temp highp 4-component vector of uint)
0:10 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint)
0:10 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint)
0:10 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
0:10 Constant:
0:10 0 (const uint)
0:10 'gl_VertexID' ( gl_VertexId highp int VertexId)
0:10 Construct uvec4 ( temp highp 4-component vector of uint)
0:10 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
0:10 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
0:10 Constant:
0:10 0 (const uint)
0:10 Constant:
0:10 0 (const uint)
0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
0:? 'gl_VertexID' ( gl_VertexId highp int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId)
Linked vertex stage:
Shader version: 320
Requested GL_KHR_shader_subgroup_basic
0:? Sequence
0:8 Function Definition: main( ( global void)
0:8 Function Parameters:
0:10 Sequence
0:10 move second child to first child ( temp highp 4-component vector of uint)
0:10 indirect index (layout( column_major std430 offset=0) temp highp 4-component vector of uint)
0:10 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint)
0:10 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
0:10 Constant:
0:10 0 (const uint)
0:10 'gl_VertexID' ( gl_VertexId highp int VertexId)
0:10 Construct uvec4 ( temp highp 4-component vector of uint)
0:10 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
0:10 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
0:10 Constant:
0:10 0 (const uint)
0:10 Constant:
0:10 0 (const uint)
0:? Linker Objects
0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of highp 4-component vector of uint result})
0:? 'gl_VertexID' ( gl_VertexId highp int VertexId)
0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,275 @@
glsl.es320.subgroupBallotNeg.comp
ERROR: 0:31: 'id' : argument must be compile-time constant
ERROR: 1 compilation errors. No code generated.
Shader version: 450
Requested GL_KHR_shader_subgroup_ballot
Requested GL_KHR_shader_subgroup_basic
local_size = (8, 8, 1)
ERROR: node is still EOpNull!
0:14 Function Definition: main( ( global void)
0:14 Function Parameters:
0:16 Sequence
0:16 Sequence
0:16 move second child to first child ( temp uint)
0:16 'invocation' ( temp uint)
0:16 mod ( temp uint)
0:16 add ( temp uint)
0:16 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:16 'gl_SubgroupSize' ( in uint unknown built-in variable)
0:16 Constant:
0:16 4 (const uint)
0:18 Sequence
0:18 move second child to first child ( temp 4-component vector of uint)
0:18 'relMask' ( temp 4-component vector of uint)
0:21 add ( temp 4-component vector of uint)
0:20 add ( temp 4-component vector of uint)
0:19 add ( temp 4-component vector of uint)
0:18 add ( temp 4-component vector of uint)
0:18 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable)
0:19 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable)
0:20 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable)
0:21 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable)
0:22 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable)
0:24 Sequence
0:24 move second child to first child ( temp 4-component vector of uint)
0:24 'result' ( temp 4-component vector of uint)
0:24 subgroupBallot ( global 4-component vector of uint)
0:24 Constant:
0:24 true (const bool)
0:26 move second child to first child ( temp uint)
0:26 direct index ( temp uint)
0:26 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:26 Constant:
0:26 0 (const int)
0:26 Constant:
0:26 2 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 subgroupBallotBitCount ( global uint)
0:26 'result' ( temp 4-component vector of uint)
0:27 move second child to first child ( temp uint)
0:27 direct index ( temp uint)
0:27 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:27 Constant:
0:27 0 (const int)
0:27 Constant:
0:27 2 (const int)
0:27 Constant:
0:27 1 (const int)
0:27 Test condition and select ( temp uint)
0:27 Condition
0:27 subgroupBallotBitExtract ( global bool)
0:27 'result' ( temp 4-component vector of uint)
0:27 Constant:
0:27 0 (const uint)
0:27 true case
0:27 Constant:
0:27 1 (const uint)
0:27 false case
0:27 Constant:
0:27 0 (const uint)
0:28 move second child to first child ( temp uint)
0:28 direct index ( temp uint)
0:28 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:28 Constant:
0:28 0 (const int)
0:28 Constant:
0:28 2 (const int)
0:28 Constant:
0:28 2 (const int)
0:28 add ( temp uint)
0:28 subgroupBallotInclusiveBitCount ( global uint)
0:28 'result' ( temp 4-component vector of uint)
0:28 subgroupBallotExclusiveBitCount ( global uint)
0:28 'result' ( temp 4-component vector of uint)
0:29 move second child to first child ( temp uint)
0:29 direct index ( temp uint)
0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 2 (const int)
0:29 Constant:
0:29 3 (const int)
0:29 add ( temp uint)
0:29 subgroupBallotFindLSB ( global uint)
0:29 'result' ( temp 4-component vector of uint)
0:29 subgroupBallotFindMSB ( global uint)
0:29 'result' ( temp 4-component vector of uint)
0:31 move second child to first child ( temp float)
0:31 direct index ( temp float)
0:31 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:31 Constant:
0:31 1 (const int)
0:31 Constant:
0:31 0 (const int)
0:31 Constant:
0:31 0 (const int)
0:31 subgroupBroadcast ( global float)
0:31 direct index ( temp float)
0:31 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:31 Constant:
0:31 0 (const int)
0:31 Constant:
0:31 0 (const int)
0:31 Constant:
0:31 0 (const int)
0:31 'invocation' ( temp uint)
0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
0:? 8 (const uint)
0:? 8 (const uint)
0:? 1 (const uint)
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
Linked compute stage:
Shader version: 450
Requested GL_KHR_shader_subgroup_ballot
Requested GL_KHR_shader_subgroup_basic
local_size = (8, 8, 1)
ERROR: node is still EOpNull!
0:14 Function Definition: main( ( global void)
0:14 Function Parameters:
0:16 Sequence
0:16 Sequence
0:16 move second child to first child ( temp uint)
0:16 'invocation' ( temp uint)
0:16 mod ( temp uint)
0:16 add ( temp uint)
0:16 'gl_SubgroupInvocationID' ( in uint unknown built-in variable)
0:16 'gl_SubgroupSize' ( in uint unknown built-in variable)
0:16 Constant:
0:16 4 (const uint)
0:18 Sequence
0:18 move second child to first child ( temp 4-component vector of uint)
0:18 'relMask' ( temp 4-component vector of uint)
0:21 add ( temp 4-component vector of uint)
0:20 add ( temp 4-component vector of uint)
0:19 add ( temp 4-component vector of uint)
0:18 add ( temp 4-component vector of uint)
0:18 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable)
0:19 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable)
0:20 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable)
0:21 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable)
0:22 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable)
0:24 Sequence
0:24 move second child to first child ( temp 4-component vector of uint)
0:24 'result' ( temp 4-component vector of uint)
0:24 subgroupBallot ( global 4-component vector of uint)
0:24 Constant:
0:24 true (const bool)
0:26 move second child to first child ( temp uint)
0:26 direct index ( temp uint)
0:26 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:26 Constant:
0:26 0 (const int)
0:26 Constant:
0:26 2 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 subgroupBallotBitCount ( global uint)
0:26 'result' ( temp 4-component vector of uint)
0:27 move second child to first child ( temp uint)
0:27 direct index ( temp uint)
0:27 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:27 Constant:
0:27 0 (const int)
0:27 Constant:
0:27 2 (const int)
0:27 Constant:
0:27 1 (const int)
0:27 Test condition and select ( temp uint)
0:27 Condition
0:27 subgroupBallotBitExtract ( global bool)
0:27 'result' ( temp 4-component vector of uint)
0:27 Constant:
0:27 0 (const uint)
0:27 true case
0:27 Constant:
0:27 1 (const uint)
0:27 false case
0:27 Constant:
0:27 0 (const uint)
0:28 move second child to first child ( temp uint)
0:28 direct index ( temp uint)
0:28 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:28 Constant:
0:28 0 (const int)
0:28 Constant:
0:28 2 (const int)
0:28 Constant:
0:28 2 (const int)
0:28 add ( temp uint)
0:28 subgroupBallotInclusiveBitCount ( global uint)
0:28 'result' ( temp 4-component vector of uint)
0:28 subgroupBallotExclusiveBitCount ( global uint)
0:28 'result' ( temp 4-component vector of uint)
0:29 move second child to first child ( temp uint)
0:29 direct index ( temp uint)
0:29 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint)
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 2 (const int)
0:29 Constant:
0:29 3 (const int)
0:29 add ( temp uint)
0:29 subgroupBallotFindLSB ( global uint)
0:29 'result' ( temp 4-component vector of uint)
0:29 subgroupBallotFindMSB ( global uint)
0:29 'result' ( temp 4-component vector of uint)
0:31 move second child to first child ( temp float)
0:31 direct index ( temp float)
0:31 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:31 Constant:
0:31 1 (const int)
0:31 Constant:
0:31 0 (const int)
0:31 Constant:
0:31 0 (const int)
0:31 subgroupBroadcast ( global float)
0:31 direct index ( temp float)
0:31 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float)
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})
0:31 Constant:
0:31 0 (const int)
0:31 Constant:
0:31 0 (const int)
0:31 Constant:
0:31 0 (const int)
0:31 'invocation' ( temp uint)
0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize)
0:? 8 (const uint)
0:? 8 (const uint)
0:? 1 (const uint)
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4})

View File

@ -0,0 +1,129 @@
glsl.es320.subgroupBasic.comp
Shader version: 320
Requested GL_KHR_shader_subgroup_basic
local_size = (8, 8, 1)
0:? Sequence
0:12 Function Definition: main( ( global void)
0:12 Function Parameters:
0:14 Sequence
0:14 move second child to first child ( temp highp int)
0:14 indirect index (layout( column_major shared) temp highp int)
0:14 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int)
0:14 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
0:14 Constant:
0:14 0 (const int)
0:14 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
0:14 Constant:
0:14 1 (const int)
0:15 move second child to first child ( temp highp int)
0:15 indirect index (layout( column_major shared) temp highp int)
0:15 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int)
0:15 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
0:15 Constant:
0:15 0 (const int)
0:15 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
0:15 Constant:
0:15 1 (const int)
0:16 move second child to first child ( temp highp int)
0:16 indirect index (layout( column_major shared) temp highp int)
0:16 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int)
0:16 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
0:16 Constant:
0:16 0 (const int)
0:16 'gl_NumSubgroups' ( in highp uint unknown built-in variable)
0:16 Constant:
0:16 1 (const int)
0:17 move second child to first child ( temp highp int)
0:17 indirect index (layout( column_major shared) temp highp int)
0:17 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int)
0:17 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
0:17 Constant:
0:17 0 (const int)
0:17 'gl_SubgroupID' ( in highp uint unknown built-in variable)
0:17 Test condition and select ( temp highp int)
0:17 Condition
0:17 subgroupElect ( global bool)
0:17 true case
0:17 Constant:
0:17 1 (const int)
0:17 false case
0:17 Constant:
0:17 0 (const int)
0:18 subgroupBarrier ( global void)
0:19 subgroupMemoryBarrier ( global void)
0:20 subgroupMemoryBarrierBuffer ( global void)
0:21 subgroupMemoryBarrierShared ( global void)
0:22 subgroupMemoryBarrierImage ( global void)
0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize)
0:? 8 (const uint)
0:? 8 (const uint)
0:? 1 (const uint)
0:? 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
Linked compute stage:
Shader version: 320
Requested GL_KHR_shader_subgroup_basic
local_size = (8, 8, 1)
0:? Sequence
0:12 Function Definition: main( ( global void)
0:12 Function Parameters:
0:14 Sequence
0:14 move second child to first child ( temp highp int)
0:14 indirect index (layout( column_major shared) temp highp int)
0:14 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int)
0:14 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
0:14 Constant:
0:14 0 (const int)
0:14 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
0:14 Constant:
0:14 1 (const int)
0:15 move second child to first child ( temp highp int)
0:15 indirect index (layout( column_major shared) temp highp int)
0:15 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int)
0:15 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
0:15 Constant:
0:15 0 (const int)
0:15 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
0:15 Constant:
0:15 1 (const int)
0:16 move second child to first child ( temp highp int)
0:16 indirect index (layout( column_major shared) temp highp int)
0:16 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int)
0:16 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
0:16 Constant:
0:16 0 (const int)
0:16 'gl_NumSubgroups' ( in highp uint unknown built-in variable)
0:16 Constant:
0:16 1 (const int)
0:17 move second child to first child ( temp highp int)
0:17 indirect index (layout( column_major shared) temp highp int)
0:17 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of highp int)
0:17 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})
0:17 Constant:
0:17 0 (const int)
0:17 'gl_SubgroupID' ( in highp uint unknown built-in variable)
0:17 Test condition and select ( temp highp int)
0:17 Condition
0:17 subgroupElect ( global bool)
0:17 true case
0:17 Constant:
0:17 1 (const int)
0:17 false case
0:17 Constant:
0:17 0 (const int)
0:18 subgroupBarrier ( global void)
0:19 subgroupMemoryBarrier ( global void)
0:20 subgroupMemoryBarrierBuffer ( global void)
0:21 subgroupMemoryBarrierShared ( global void)
0:22 subgroupMemoryBarrierImage ( global void)
0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize)
0:? 8 (const uint)
0:? 8 (const uint)
0:? 1 (const uint)
0:? 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of highp int a})

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,604 @@
glsl.es320.subgroupClusteredNeg.comp
ERROR: 0:21: 'cluster size' : argument must be at least 1
ERROR: 0:23: 'cluster size' : argument must be a power of 2
ERROR: 0:26: 'cluster size' : argument must be a power of 2
ERROR: 0:28: 'cluster size' : argument must be compile-time constant
ERROR: 0:31: 'cluster size' : argument must be compile-time constant
ERROR: 0:32: 'cluster size' : argument must be compile-time constant
ERROR: 6 compilation errors. No code generated.
Shader version: 320
Requested GL_KHR_shader_subgroup_basic
Requested GL_KHR_shader_subgroup_clustered
local_size = (8, 1, 1)
ERROR: node is still EOpNull!
0:14 Function Definition: main( ( global void)
0:14 Function Parameters:
0:16 Sequence
0:16 Sequence
0:16 move second child to first child ( temp highp int)
0:16 'a' ( temp highp int)
0:16 Constant:
0:16 1 (const int)
0:19 Sequence
0:19 move second child to first child ( temp highp uint)
0:19 'invocation' ( temp highp uint)
0:19 mod ( temp mediump uint)
0:19 add ( temp mediump uint)
0:19 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
0:19 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
0:19 Constant:
0:19 4 (const uint)
0:21 move second child to first child ( temp highp 2-component vector of float)
0:21 vector swizzle ( temp highp 2-component vector of float)
0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:21 Constant:
0:21 0 (const int)
0:21 Constant:
0:21 0 (const int)
0:21 Sequence
0:21 Constant:
0:21 0 (const int)
0:21 Constant:
0:21 1 (const int)
0:21 subgroupClusteredAdd ( global highp 2-component vector of float)
0:21 vector swizzle ( temp highp 2-component vector of float)
0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:21 Constant:
0:21 1 (const int)
0:21 Constant:
0:21 0 (const int)
0:21 Sequence
0:21 Constant:
0:21 0 (const int)
0:21 Constant:
0:21 1 (const int)
0:21 Constant:
0:21 0 (const uint)
0:23 move second child to first child ( temp highp float)
0:23 direct index ( temp highp float)
0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 0 (const int)
0:23 subgroupClusteredMul ( global highp float)
0:23 direct index ( temp highp float)
0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 3 (const uint)
0:25 move second child to first child ( temp highp 2-component vector of int)
0:25 vector swizzle ( temp highp 2-component vector of int)
0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:25 Constant:
0:25 1 (const int)
0:25 Constant:
0:25 1 (const int)
0:25 Sequence
0:25 Constant:
0:25 0 (const int)
0:25 Constant:
0:25 1 (const int)
0:25 subgroupClusteredMin ( global highp 2-component vector of int)
0:25 vector swizzle ( temp highp 2-component vector of int)
0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:25 Constant:
0:25 1 (const int)
0:25 Constant:
0:25 1 (const int)
0:25 Sequence
0:25 Constant:
0:25 0 (const int)
0:25 Constant:
0:25 1 (const int)
0:25 Constant:
0:25 8 (const uint)
0:26 move second child to first child ( temp highp 3-component vector of int)
0:26 vector swizzle ( temp highp 3-component vector of int)
0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 1 (const int)
0:26 Sequence
0:26 Constant:
0:26 0 (const int)
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 2 (const int)
0:26 subgroupClusteredMin ( global highp 3-component vector of int)
0:26 vector swizzle ( temp highp 3-component vector of int)
0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:26 Constant:
0:26 2 (const int)
0:26 Constant:
0:26 1 (const int)
0:26 Sequence
0:26 Constant:
0:26 0 (const int)
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 2 (const int)
0:26 Constant:
0:26 6 (const uint)
0:28 move second child to first child ( temp highp int)
0:28 direct index ( temp highp int)
0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:28 Constant:
0:28 3 (const int)
0:28 Constant:
0:28 1 (const int)
0:28 Constant:
0:28 0 (const int)
0:28 subgroupClusteredOr ( global highp int)
0:28 direct index ( temp highp int)
0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:28 Constant:
0:28 0 (const int)
0:28 Constant:
0:28 1 (const int)
0:28 Constant:
0:28 0 (const int)
0:28 Convert int to uint ( temp highp uint)
0:28 'a' ( temp highp int)
0:29 move second child to first child ( temp highp 2-component vector of int)
0:29 vector swizzle ( temp highp 2-component vector of int)
0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:29 Constant:
0:29 3 (const int)
0:29 Constant:
0:29 1 (const int)
0:29 Sequence
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 1 (const int)
0:29 subgroupClusteredOr ( global highp 2-component vector of int)
0:29 vector swizzle ( temp highp 2-component vector of int)
0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:29 Constant:
0:29 1 (const int)
0:29 Constant:
0:29 1 (const int)
0:29 Sequence
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 1 (const int)
0:29 Constant:
0:29 1 (const uint)
0:31 move second child to first child ( temp highp int)
0:31 direct index ( temp highp int)
0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:31 Constant:
0:31 0 (const int)
0:31 Constant:
0:31 1 (const int)
0:31 Constant:
0:31 0 (const int)
0:31 subgroupClusteredXor ( global highp int)
0:31 direct index ( temp highp int)
0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:31 Constant:
0:31 0 (const int)
0:31 Constant:
0:31 1 (const int)
0:31 Constant:
0:31 0 (const int)
0:31 Convert int to uint ( temp highp uint)
0:31 add ( temp highp int)
0:31 Constant:
0:31 1 (const int)
0:31 'a' ( temp highp int)
0:32 move second child to first child ( temp highp 2-component vector of int)
0:32 vector swizzle ( temp highp 2-component vector of int)
0:32 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
0:32 1 (const int)
0:32 Sequence
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
0:32 1 (const int)
0:32 subgroupClusteredXor ( global highp 2-component vector of int)
0:32 vector swizzle ( temp highp 2-component vector of int)
0:32 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:32 Constant:
0:32 1 (const int)
0:32 Constant:
0:32 1 (const int)
0:32 Sequence
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
0:32 1 (const int)
0:32 Convert int to uint ( temp highp uint)
0:32 add ( temp highp int)
0:32 Constant:
0:32 1 (const int)
0:32 'a' ( temp highp int)
0:33 move second child to first child ( temp highp 3-component vector of int)
0:33 vector swizzle ( temp highp 3-component vector of int)
0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
0:33 1 (const int)
0:33 Sequence
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
0:33 1 (const int)
0:33 Constant:
0:33 2 (const int)
0:33 subgroupClusteredXor ( global highp 3-component vector of int)
0:33 vector swizzle ( temp highp 3-component vector of int)
0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:33 Constant:
0:33 2 (const int)
0:33 Constant:
0:33 1 (const int)
0:33 Sequence
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
0:33 1 (const int)
0:33 Constant:
0:33 2 (const int)
0:33 Constant:
0:33 2 (const uint)
0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize)
0:? 8 (const uint)
0:? 1 (const uint)
0:? 1 (const uint)
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
Linked compute stage:
Shader version: 320
Requested GL_KHR_shader_subgroup_basic
Requested GL_KHR_shader_subgroup_clustered
local_size = (8, 1, 1)
ERROR: node is still EOpNull!
0:14 Function Definition: main( ( global void)
0:14 Function Parameters:
0:16 Sequence
0:16 Sequence
0:16 move second child to first child ( temp highp int)
0:16 'a' ( temp highp int)
0:16 Constant:
0:16 1 (const int)
0:19 Sequence
0:19 move second child to first child ( temp highp uint)
0:19 'invocation' ( temp highp uint)
0:19 mod ( temp mediump uint)
0:19 add ( temp mediump uint)
0:19 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
0:19 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
0:19 Constant:
0:19 4 (const uint)
0:21 move second child to first child ( temp highp 2-component vector of float)
0:21 vector swizzle ( temp highp 2-component vector of float)
0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:21 Constant:
0:21 0 (const int)
0:21 Constant:
0:21 0 (const int)
0:21 Sequence
0:21 Constant:
0:21 0 (const int)
0:21 Constant:
0:21 1 (const int)
0:21 subgroupClusteredAdd ( global highp 2-component vector of float)
0:21 vector swizzle ( temp highp 2-component vector of float)
0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:21 Constant:
0:21 1 (const int)
0:21 Constant:
0:21 0 (const int)
0:21 Sequence
0:21 Constant:
0:21 0 (const int)
0:21 Constant:
0:21 1 (const int)
0:21 Constant:
0:21 0 (const uint)
0:23 move second child to first child ( temp highp float)
0:23 direct index ( temp highp float)
0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 0 (const int)
0:23 subgroupClusteredMul ( global highp float)
0:23 direct index ( temp highp float)
0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 3 (const uint)
0:25 move second child to first child ( temp highp 2-component vector of int)
0:25 vector swizzle ( temp highp 2-component vector of int)
0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:25 Constant:
0:25 1 (const int)
0:25 Constant:
0:25 1 (const int)
0:25 Sequence
0:25 Constant:
0:25 0 (const int)
0:25 Constant:
0:25 1 (const int)
0:25 subgroupClusteredMin ( global highp 2-component vector of int)
0:25 vector swizzle ( temp highp 2-component vector of int)
0:25 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:25 Constant:
0:25 1 (const int)
0:25 Constant:
0:25 1 (const int)
0:25 Sequence
0:25 Constant:
0:25 0 (const int)
0:25 Constant:
0:25 1 (const int)
0:25 Constant:
0:25 8 (const uint)
0:26 move second child to first child ( temp highp 3-component vector of int)
0:26 vector swizzle ( temp highp 3-component vector of int)
0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 1 (const int)
0:26 Sequence
0:26 Constant:
0:26 0 (const int)
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 2 (const int)
0:26 subgroupClusteredMin ( global highp 3-component vector of int)
0:26 vector swizzle ( temp highp 3-component vector of int)
0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:26 Constant:
0:26 2 (const int)
0:26 Constant:
0:26 1 (const int)
0:26 Sequence
0:26 Constant:
0:26 0 (const int)
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 2 (const int)
0:26 Constant:
0:26 6 (const uint)
0:28 move second child to first child ( temp highp int)
0:28 direct index ( temp highp int)
0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:28 Constant:
0:28 3 (const int)
0:28 Constant:
0:28 1 (const int)
0:28 Constant:
0:28 0 (const int)
0:28 subgroupClusteredOr ( global highp int)
0:28 direct index ( temp highp int)
0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:28 Constant:
0:28 0 (const int)
0:28 Constant:
0:28 1 (const int)
0:28 Constant:
0:28 0 (const int)
0:28 Convert int to uint ( temp highp uint)
0:28 'a' ( temp highp int)
0:29 move second child to first child ( temp highp 2-component vector of int)
0:29 vector swizzle ( temp highp 2-component vector of int)
0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:29 Constant:
0:29 3 (const int)
0:29 Constant:
0:29 1 (const int)
0:29 Sequence
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 1 (const int)
0:29 subgroupClusteredOr ( global highp 2-component vector of int)
0:29 vector swizzle ( temp highp 2-component vector of int)
0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:29 Constant:
0:29 1 (const int)
0:29 Constant:
0:29 1 (const int)
0:29 Sequence
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 1 (const int)
0:29 Constant:
0:29 1 (const uint)
0:31 move second child to first child ( temp highp int)
0:31 direct index ( temp highp int)
0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:31 Constant:
0:31 0 (const int)
0:31 Constant:
0:31 1 (const int)
0:31 Constant:
0:31 0 (const int)
0:31 subgroupClusteredXor ( global highp int)
0:31 direct index ( temp highp int)
0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:31 Constant:
0:31 0 (const int)
0:31 Constant:
0:31 1 (const int)
0:31 Constant:
0:31 0 (const int)
0:31 Convert int to uint ( temp highp uint)
0:31 add ( temp highp int)
0:31 Constant:
0:31 1 (const int)
0:31 'a' ( temp highp int)
0:32 move second child to first child ( temp highp 2-component vector of int)
0:32 vector swizzle ( temp highp 2-component vector of int)
0:32 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
0:32 1 (const int)
0:32 Sequence
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
0:32 1 (const int)
0:32 subgroupClusteredXor ( global highp 2-component vector of int)
0:32 vector swizzle ( temp highp 2-component vector of int)
0:32 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:32 Constant:
0:32 1 (const int)
0:32 Constant:
0:32 1 (const int)
0:32 Sequence
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
0:32 1 (const int)
0:32 Convert int to uint ( temp highp uint)
0:32 add ( temp highp int)
0:32 Constant:
0:32 1 (const int)
0:32 'a' ( temp highp int)
0:33 move second child to first child ( temp highp 3-component vector of int)
0:33 vector swizzle ( temp highp 3-component vector of int)
0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
0:33 1 (const int)
0:33 Sequence
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
0:33 1 (const int)
0:33 Constant:
0:33 2 (const int)
0:33 subgroupClusteredXor ( global highp 3-component vector of int)
0:33 vector swizzle ( temp highp 3-component vector of int)
0:33 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})
0:33 Constant:
0:33 2 (const int)
0:33 Constant:
0:33 1 (const int)
0:33 Sequence
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
0:33 1 (const int)
0:33 Constant:
0:33 2 (const int)
0:33 Constant:
0:33 2 (const uint)
0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize)
0:? 8 (const uint)
0:? 1 (const uint)
0:? 1 (const uint)
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4})

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,845 @@
glsl.es320.subgroupVote.comp
Shader version: 320
Requested GL_KHR_shader_subgroup_basic
Requested GL_KHR_shader_subgroup_vote
local_size = (8, 8, 1)
0:? Sequence
0:15 Function Definition: main( ( global void)
0:15 Function Parameters:
0:17 Sequence
0:17 Sequence
0:17 move second child to first child ( temp highp uint)
0:17 'invocation' ( temp highp uint)
0:17 mod ( temp mediump uint)
0:17 add ( temp mediump uint)
0:17 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
0:17 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
0:17 Constant:
0:17 4 (const uint)
0:19 Test condition and select ( temp void)
0:19 Condition
0:19 subgroupAll ( global bool)
0:19 Compare Less Than ( temp bool)
0:19 r: direct index for structure (layout( column_major shared) buffer highp int)
0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:19 Constant:
0:19 0 (const int)
0:19 Constant:
0:19 3 (const int)
0:19 Constant:
0:19 0 (const int)
0:19 true case
0:21 Sequence
0:21 move second child to first child ( temp highp int)
0:21 r: direct index for structure (layout( column_major shared) buffer highp int)
0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:21 Constant:
0:21 0 (const int)
0:21 Constant:
0:21 3 (const int)
0:21 Convert bool to int ( temp highp int)
0:21 subgroupAllEqual ( global bool, operation at highp)
0:21 direct index ( temp highp float)
0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:21 Constant:
0:21 0 (const int)
0:21 Constant:
0:21 0 (const int)
0:21 Constant:
0:21 0 (const int)
0:22 move second child to first child ( temp highp int)
0:22 r: direct index for structure (layout( column_major shared) buffer highp int)
0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 3 (const int)
0:22 Convert bool to int ( temp highp int)
0:22 subgroupAllEqual ( global bool, operation at highp)
0:22 vector swizzle ( temp highp 2-component vector of float)
0:22 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:22 Constant:
0:22 1 (const int)
0:22 Constant:
0:22 0 (const int)
0:22 Sequence
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 1 (const int)
0:23 move second child to first child ( temp highp int)
0:23 r: direct index for structure (layout( column_major shared) buffer highp int)
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 3 (const int)
0:23 Convert bool to int ( temp highp int)
0:23 subgroupAllEqual ( global bool, operation at highp)
0:23 vector swizzle ( temp highp 3-component vector of float)
0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:23 Constant:
0:23 2 (const int)
0:23 Constant:
0:23 0 (const int)
0:23 Sequence
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 1 (const int)
0:23 Constant:
0:23 2 (const int)
0:24 move second child to first child ( temp highp int)
0:24 r: direct index for structure (layout( column_major shared) buffer highp int)
0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:24 Constant:
0:24 0 (const int)
0:24 Constant:
0:24 3 (const int)
0:24 Convert bool to int ( temp highp int)
0:24 subgroupAllEqual ( global bool, operation at highp)
0:24 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:24 Constant:
0:24 3 (const int)
0:24 Constant:
0:24 0 (const int)
0:26 move second child to first child ( temp highp int)
0:26 r: direct index for structure (layout( column_major shared) buffer highp int)
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:26 Constant:
0:26 0 (const int)
0:26 Constant:
0:26 3 (const int)
0:26 Convert bool to int ( temp highp int)
0:26 subgroupAllEqual ( global bool, operation at highp)
0:26 direct index ( temp highp int)
0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:26 Constant:
0:26 0 (const int)
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 0 (const int)
0:27 move second child to first child ( temp highp int)
0:27 r: direct index for structure (layout( column_major shared) buffer highp int)
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:27 Constant:
0:27 0 (const int)
0:27 Constant:
0:27 3 (const int)
0:27 Convert bool to int ( temp highp int)
0:27 subgroupAllEqual ( global bool, operation at highp)
0:27 vector swizzle ( temp highp 2-component vector of int)
0:27 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:27 Constant:
0:27 1 (const int)
0:27 Constant:
0:27 1 (const int)
0:27 Sequence
0:27 Constant:
0:27 0 (const int)
0:27 Constant:
0:27 1 (const int)
0:28 move second child to first child ( temp highp int)
0:28 r: direct index for structure (layout( column_major shared) buffer highp int)
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:28 Constant:
0:28 0 (const int)
0:28 Constant:
0:28 3 (const int)
0:28 Convert bool to int ( temp highp int)
0:28 subgroupAllEqual ( global bool, operation at highp)
0:28 vector swizzle ( temp highp 3-component vector of int)
0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:28 Constant:
0:28 2 (const int)
0:28 Constant:
0:28 1 (const int)
0:28 Sequence
0:28 Constant:
0:28 0 (const int)
0:28 Constant:
0:28 1 (const int)
0:28 Constant:
0:28 2 (const int)
0:29 move second child to first child ( temp highp int)
0:29 r: direct index for structure (layout( column_major shared) buffer highp int)
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 3 (const int)
0:29 Convert bool to int ( temp highp int)
0:29 subgroupAllEqual ( global bool, operation at highp)
0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:29 Constant:
0:29 3 (const int)
0:29 Constant:
0:29 1 (const int)
0:31 move second child to first child ( temp highp int)
0:31 r: direct index for structure (layout( column_major shared) buffer highp int)
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:31 Constant:
0:31 0 (const int)
0:31 Constant:
0:31 3 (const int)
0:31 Convert bool to int ( temp highp int)
0:31 subgroupAllEqual ( global bool, operation at highp)
0:31 direct index ( temp highp uint)
0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint)
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:31 Constant:
0:31 0 (const int)
0:31 Constant:
0:31 2 (const int)
0:31 Constant:
0:31 0 (const int)
0:32 move second child to first child ( temp highp int)
0:32 r: direct index for structure (layout( column_major shared) buffer highp int)
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
0:32 3 (const int)
0:32 Convert bool to int ( temp highp int)
0:32 subgroupAllEqual ( global bool, operation at highp)
0:32 vector swizzle ( temp highp 2-component vector of uint)
0:32 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint)
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:32 Constant:
0:32 1 (const int)
0:32 Constant:
0:32 2 (const int)
0:32 Sequence
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
0:32 1 (const int)
0:33 move second child to first child ( temp highp int)
0:33 r: direct index for structure (layout( column_major shared) buffer highp int)
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
0:33 3 (const int)
0:33 Convert bool to int ( temp highp int)
0:33 subgroupAllEqual ( global bool, operation at highp)
0:33 vector swizzle ( temp highp 3-component vector of uint)
0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint)
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:33 Constant:
0:33 2 (const int)
0:33 Constant:
0:33 2 (const int)
0:33 Sequence
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
0:33 1 (const int)
0:33 Constant:
0:33 2 (const int)
0:34 move second child to first child ( temp highp int)
0:34 r: direct index for structure (layout( column_major shared) buffer highp int)
0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:34 Constant:
0:34 0 (const int)
0:34 Constant:
0:34 3 (const int)
0:34 Convert bool to int ( temp highp int)
0:34 subgroupAllEqual ( global bool, operation at highp)
0:34 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint)
0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:34 Constant:
0:34 3 (const int)
0:34 Constant:
0:34 2 (const int)
0:19 false case
0:36 Test condition and select ( temp void)
0:36 Condition
0:36 subgroupAny ( global bool)
0:36 Compare Less Than ( temp bool)
0:36 r: direct index for structure (layout( column_major shared) buffer highp int)
0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:36 Constant:
0:36 1 (const int)
0:36 Constant:
0:36 3 (const int)
0:36 Constant:
0:36 0 (const int)
0:36 true case
0:38 Sequence
0:38 move second child to first child ( temp highp int)
0:38 r: direct index for structure (layout( column_major shared) buffer highp int)
0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:38 Constant:
0:38 1 (const int)
0:38 Constant:
0:38 3 (const int)
0:38 Construct int ( temp highp int)
0:38 Convert bool to int ( temp highp int)
0:38 subgroupAllEqual ( global bool)
0:38 Compare Less Than ( temp bool)
0:38 direct index ( temp highp int)
0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:38 Constant:
0:38 0 (const int)
0:38 Constant:
0:38 1 (const int)
0:38 Constant:
0:38 0 (const int)
0:38 Constant:
0:38 0 (const int)
0:39 move second child to first child ( temp highp int)
0:39 r: direct index for structure (layout( column_major shared) buffer highp int)
0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:39 Constant:
0:39 1 (const int)
0:39 Constant:
0:39 3 (const int)
0:39 Construct int ( temp highp int)
0:39 Construct ivec2 ( temp highp 2-component vector of int)
0:39 Convert bool to int ( temp highp int)
0:39 subgroupAllEqual ( global bool)
0:39 Compare Less Than ( global 2-component vector of bool, operation at highp)
0:39 vector swizzle ( temp highp 2-component vector of int)
0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:39 Constant:
0:39 1 (const int)
0:39 Constant:
0:39 1 (const int)
0:39 Sequence
0:39 Constant:
0:39 0 (const int)
0:39 Constant:
0:39 1 (const int)
0:39 Constant:
0:39 0 (const int)
0:39 0 (const int)
0:40 move second child to first child ( temp highp int)
0:40 r: direct index for structure (layout( column_major shared) buffer highp int)
0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 3 (const int)
0:40 Construct int ( temp highp int)
0:40 Construct ivec3 ( temp highp 3-component vector of int)
0:40 Convert bool to int ( temp highp int)
0:40 subgroupAllEqual ( global bool)
0:40 Compare Less Than ( global 3-component vector of bool, operation at highp)
0:40 vector swizzle ( temp highp 3-component vector of int)
0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 1 (const int)
0:40 Sequence
0:40 Constant:
0:40 0 (const int)
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 2 (const int)
0:40 Constant:
0:40 0 (const int)
0:40 0 (const int)
0:40 0 (const int)
0:41 move second child to first child ( temp highp int)
0:41 r: direct index for structure (layout( column_major shared) buffer highp int)
0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:41 Constant:
0:41 1 (const int)
0:41 Constant:
0:41 3 (const int)
0:41 Construct int ( temp highp int)
0:41 Construct ivec4 ( temp highp 4-component vector of int)
0:41 Convert bool to int ( temp highp int)
0:41 subgroupAllEqual ( global bool)
0:41 Compare Less Than ( global 4-component vector of bool, operation at highp)
0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:41 Constant:
0:41 1 (const int)
0:41 Constant:
0:41 1 (const int)
0:41 Constant:
0:41 0 (const int)
0:41 0 (const int)
0:41 0 (const int)
0:41 0 (const int)
0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize)
0:? 8 (const uint)
0:? 8 (const uint)
0:? 1 (const uint)
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
Linked compute stage:
Shader version: 320
Requested GL_KHR_shader_subgroup_basic
Requested GL_KHR_shader_subgroup_vote
local_size = (8, 8, 1)
0:? Sequence
0:15 Function Definition: main( ( global void)
0:15 Function Parameters:
0:17 Sequence
0:17 Sequence
0:17 move second child to first child ( temp highp uint)
0:17 'invocation' ( temp highp uint)
0:17 mod ( temp mediump uint)
0:17 add ( temp mediump uint)
0:17 'gl_SubgroupInvocationID' ( in mediump uint unknown built-in variable)
0:17 'gl_SubgroupSize' ( in mediump uint unknown built-in variable)
0:17 Constant:
0:17 4 (const uint)
0:19 Test condition and select ( temp void)
0:19 Condition
0:19 subgroupAll ( global bool)
0:19 Compare Less Than ( temp bool)
0:19 r: direct index for structure (layout( column_major shared) buffer highp int)
0:19 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:19 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:19 Constant:
0:19 0 (const int)
0:19 Constant:
0:19 3 (const int)
0:19 Constant:
0:19 0 (const int)
0:19 true case
0:21 Sequence
0:21 move second child to first child ( temp highp int)
0:21 r: direct index for structure (layout( column_major shared) buffer highp int)
0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:21 Constant:
0:21 0 (const int)
0:21 Constant:
0:21 3 (const int)
0:21 Convert bool to int ( temp highp int)
0:21 subgroupAllEqual ( global bool, operation at highp)
0:21 direct index ( temp highp float)
0:21 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
0:21 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:21 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:21 Constant:
0:21 0 (const int)
0:21 Constant:
0:21 0 (const int)
0:21 Constant:
0:21 0 (const int)
0:22 move second child to first child ( temp highp int)
0:22 r: direct index for structure (layout( column_major shared) buffer highp int)
0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 3 (const int)
0:22 Convert bool to int ( temp highp int)
0:22 subgroupAllEqual ( global bool, operation at highp)
0:22 vector swizzle ( temp highp 2-component vector of float)
0:22 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
0:22 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:22 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:22 Constant:
0:22 1 (const int)
0:22 Constant:
0:22 0 (const int)
0:22 Sequence
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 1 (const int)
0:23 move second child to first child ( temp highp int)
0:23 r: direct index for structure (layout( column_major shared) buffer highp int)
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 3 (const int)
0:23 Convert bool to int ( temp highp int)
0:23 subgroupAllEqual ( global bool, operation at highp)
0:23 vector swizzle ( temp highp 3-component vector of float)
0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:23 Constant:
0:23 2 (const int)
0:23 Constant:
0:23 0 (const int)
0:23 Sequence
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 1 (const int)
0:23 Constant:
0:23 2 (const int)
0:24 move second child to first child ( temp highp int)
0:24 r: direct index for structure (layout( column_major shared) buffer highp int)
0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:24 Constant:
0:24 0 (const int)
0:24 Constant:
0:24 3 (const int)
0:24 Convert bool to int ( temp highp int)
0:24 subgroupAllEqual ( global bool, operation at highp)
0:24 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float)
0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:24 Constant:
0:24 3 (const int)
0:24 Constant:
0:24 0 (const int)
0:26 move second child to first child ( temp highp int)
0:26 r: direct index for structure (layout( column_major shared) buffer highp int)
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:26 Constant:
0:26 0 (const int)
0:26 Constant:
0:26 3 (const int)
0:26 Convert bool to int ( temp highp int)
0:26 subgroupAllEqual ( global bool, operation at highp)
0:26 direct index ( temp highp int)
0:26 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:26 Constant:
0:26 0 (const int)
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 0 (const int)
0:27 move second child to first child ( temp highp int)
0:27 r: direct index for structure (layout( column_major shared) buffer highp int)
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:27 Constant:
0:27 0 (const int)
0:27 Constant:
0:27 3 (const int)
0:27 Convert bool to int ( temp highp int)
0:27 subgroupAllEqual ( global bool, operation at highp)
0:27 vector swizzle ( temp highp 2-component vector of int)
0:27 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:27 Constant:
0:27 1 (const int)
0:27 Constant:
0:27 1 (const int)
0:27 Sequence
0:27 Constant:
0:27 0 (const int)
0:27 Constant:
0:27 1 (const int)
0:28 move second child to first child ( temp highp int)
0:28 r: direct index for structure (layout( column_major shared) buffer highp int)
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:28 Constant:
0:28 0 (const int)
0:28 Constant:
0:28 3 (const int)
0:28 Convert bool to int ( temp highp int)
0:28 subgroupAllEqual ( global bool, operation at highp)
0:28 vector swizzle ( temp highp 3-component vector of int)
0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:28 Constant:
0:28 2 (const int)
0:28 Constant:
0:28 1 (const int)
0:28 Sequence
0:28 Constant:
0:28 0 (const int)
0:28 Constant:
0:28 1 (const int)
0:28 Constant:
0:28 2 (const int)
0:29 move second child to first child ( temp highp int)
0:29 r: direct index for structure (layout( column_major shared) buffer highp int)
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:29 Constant:
0:29 0 (const int)
0:29 Constant:
0:29 3 (const int)
0:29 Convert bool to int ( temp highp int)
0:29 subgroupAllEqual ( global bool, operation at highp)
0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:29 Constant:
0:29 3 (const int)
0:29 Constant:
0:29 1 (const int)
0:31 move second child to first child ( temp highp int)
0:31 r: direct index for structure (layout( column_major shared) buffer highp int)
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:31 Constant:
0:31 0 (const int)
0:31 Constant:
0:31 3 (const int)
0:31 Convert bool to int ( temp highp int)
0:31 subgroupAllEqual ( global bool, operation at highp)
0:31 direct index ( temp highp uint)
0:31 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint)
0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:31 Constant:
0:31 0 (const int)
0:31 Constant:
0:31 2 (const int)
0:31 Constant:
0:31 0 (const int)
0:32 move second child to first child ( temp highp int)
0:32 r: direct index for structure (layout( column_major shared) buffer highp int)
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
0:32 3 (const int)
0:32 Convert bool to int ( temp highp int)
0:32 subgroupAllEqual ( global bool, operation at highp)
0:32 vector swizzle ( temp highp 2-component vector of uint)
0:32 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint)
0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:32 Constant:
0:32 1 (const int)
0:32 Constant:
0:32 2 (const int)
0:32 Sequence
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
0:32 1 (const int)
0:33 move second child to first child ( temp highp int)
0:33 r: direct index for structure (layout( column_major shared) buffer highp int)
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
0:33 3 (const int)
0:33 Convert bool to int ( temp highp int)
0:33 subgroupAllEqual ( global bool, operation at highp)
0:33 vector swizzle ( temp highp 3-component vector of uint)
0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint)
0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:33 Constant:
0:33 2 (const int)
0:33 Constant:
0:33 2 (const int)
0:33 Sequence
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
0:33 1 (const int)
0:33 Constant:
0:33 2 (const int)
0:34 move second child to first child ( temp highp int)
0:34 r: direct index for structure (layout( column_major shared) buffer highp int)
0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:34 Constant:
0:34 0 (const int)
0:34 Constant:
0:34 3 (const int)
0:34 Convert bool to int ( temp highp int)
0:34 subgroupAllEqual ( global bool, operation at highp)
0:34 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint)
0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:34 Constant:
0:34 3 (const int)
0:34 Constant:
0:34 2 (const int)
0:19 false case
0:36 Test condition and select ( temp void)
0:36 Condition
0:36 subgroupAny ( global bool)
0:36 Compare Less Than ( temp bool)
0:36 r: direct index for structure (layout( column_major shared) buffer highp int)
0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:36 Constant:
0:36 1 (const int)
0:36 Constant:
0:36 3 (const int)
0:36 Constant:
0:36 0 (const int)
0:36 true case
0:38 Sequence
0:38 move second child to first child ( temp highp int)
0:38 r: direct index for structure (layout( column_major shared) buffer highp int)
0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:38 Constant:
0:38 1 (const int)
0:38 Constant:
0:38 3 (const int)
0:38 Construct int ( temp highp int)
0:38 Convert bool to int ( temp highp int)
0:38 subgroupAllEqual ( global bool)
0:38 Compare Less Than ( temp bool)
0:38 direct index ( temp highp int)
0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:38 Constant:
0:38 0 (const int)
0:38 Constant:
0:38 1 (const int)
0:38 Constant:
0:38 0 (const int)
0:38 Constant:
0:38 0 (const int)
0:39 move second child to first child ( temp highp int)
0:39 r: direct index for structure (layout( column_major shared) buffer highp int)
0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:39 Constant:
0:39 1 (const int)
0:39 Constant:
0:39 3 (const int)
0:39 Construct int ( temp highp int)
0:39 Construct ivec2 ( temp highp 2-component vector of int)
0:39 Convert bool to int ( temp highp int)
0:39 subgroupAllEqual ( global bool)
0:39 Compare Less Than ( global 2-component vector of bool, operation at highp)
0:39 vector swizzle ( temp highp 2-component vector of int)
0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:39 Constant:
0:39 1 (const int)
0:39 Constant:
0:39 1 (const int)
0:39 Sequence
0:39 Constant:
0:39 0 (const int)
0:39 Constant:
0:39 1 (const int)
0:39 Constant:
0:39 0 (const int)
0:39 0 (const int)
0:40 move second child to first child ( temp highp int)
0:40 r: direct index for structure (layout( column_major shared) buffer highp int)
0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 3 (const int)
0:40 Construct int ( temp highp int)
0:40 Construct ivec3 ( temp highp 3-component vector of int)
0:40 Convert bool to int ( temp highp int)
0:40 subgroupAllEqual ( global bool)
0:40 Compare Less Than ( global 3-component vector of bool, operation at highp)
0:40 vector swizzle ( temp highp 3-component vector of int)
0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 1 (const int)
0:40 Sequence
0:40 Constant:
0:40 0 (const int)
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 2 (const int)
0:40 Constant:
0:40 0 (const int)
0:40 0 (const int)
0:40 0 (const int)
0:41 move second child to first child ( temp highp int)
0:41 r: direct index for structure (layout( column_major shared) buffer highp int)
0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:41 Constant:
0:41 1 (const int)
0:41 Constant:
0:41 3 (const int)
0:41 Construct int ( temp highp int)
0:41 Construct ivec4 ( temp highp 4-component vector of int)
0:41 Convert bool to int ( temp highp int)
0:41 subgroupAllEqual ( global bool)
0:41 Compare Less Than ( global 4-component vector of bool, operation at highp)
0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int)
0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})
0:41 Constant:
0:41 1 (const int)
0:41 Constant:
0:41 1 (const int)
0:41 Constant:
0:41 0 (const int)
0:41 0 (const int)
0:41 0 (const int)
0:41 0 (const int)
0:? Linker Objects
0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize)
0:? 8 (const uint)
0:? 8 (const uint)
0:? 1 (const uint)
0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4, layout( column_major shared) buffer highp int r})

View File

@ -0,0 +1,7 @@
#version 450
#extension GL_KHR_shader_subgroup_basic: enable
layout(location = 0) out uvec4 data;
void main (void)
{
data = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
}

View File

@ -0,0 +1,13 @@
#version 450
#extension GL_KHR_shader_subgroup_basic: enable
layout(points) in;
layout(points, max_vertices = 1) out;
layout(set = 0, binding = 0, std430) buffer Output
{
uvec4 result[];
};
void main (void)
{
result[gl_PrimitiveIDIn] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
}

View File

@ -0,0 +1,12 @@
#version 450
#extension GL_KHR_shader_subgroup_basic: enable
layout(vertices=1) out;
layout(set = 0, binding = 0, std430) buffer Output
{
uvec4 result[];
};
void main (void)
{
result[gl_PrimitiveID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
}

View File

@ -0,0 +1,12 @@
#version 450
#extension GL_KHR_shader_subgroup_basic: enable
layout(isolines) in;
layout(set = 0, binding = 0, std430) buffer Output
{
uvec4 result[];
};
void main (void)
{
result[gl_PrimitiveID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
}

View File

@ -0,0 +1,11 @@
#version 450
#extension GL_KHR_shader_subgroup_basic: enable
layout(set = 0, binding = 0, std430) buffer Output
{
uvec4 result[];
};
void main (void)
{
result[gl_VertexID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
}

View File

@ -0,0 +1,393 @@
#version 450
#extension GL_KHR_shader_subgroup_arithmetic: enable
layout (local_size_x = 8) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
dvec4 d4;
} data[4];
void main()
{
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
data[invocation].f4.x = subgroupAdd(data[0].f4.x);
data[invocation].f4.xy = subgroupAdd(data[1].f4.xy);
data[invocation].f4.xyz = subgroupAdd(data[2].f4.xyz);
data[invocation].f4 = subgroupAdd(data[3].f4);
data[invocation].i4.x = subgroupAdd(data[0].i4.x);
data[invocation].i4.xy = subgroupAdd(data[1].i4.xy);
data[invocation].i4.xyz = subgroupAdd(data[2].i4.xyz);
data[invocation].i4 = subgroupAdd(data[3].i4);
data[invocation].u4.x = subgroupAdd(data[0].u4.x);
data[invocation].u4.xy = subgroupAdd(data[1].u4.xy);
data[invocation].u4.xyz = subgroupAdd(data[2].u4.xyz);
data[invocation].u4 = subgroupAdd(data[3].u4);
data[invocation].d4.x = subgroupAdd(data[0].d4.x);
data[invocation].d4.xy = subgroupAdd(data[1].d4.xy);
data[invocation].d4.xyz = subgroupAdd(data[2].d4.xyz);
data[invocation].d4 = subgroupAdd(data[3].d4);
data[invocation].f4.x = subgroupMul(data[0].f4.x);
data[invocation].f4.xy = subgroupMul(data[1].f4.xy);
data[invocation].f4.xyz = subgroupMul(data[2].f4.xyz);
data[invocation].f4 = subgroupMul(data[3].f4);
data[invocation].i4.x = subgroupMul(data[0].i4.x);
data[invocation].i4.xy = subgroupMul(data[1].i4.xy);
data[invocation].i4.xyz = subgroupMul(data[2].i4.xyz);
data[invocation].i4 = subgroupMul(data[3].i4);
data[invocation].u4.x = subgroupMul(data[0].u4.x);
data[invocation].u4.xy = subgroupMul(data[1].u4.xy);
data[invocation].u4.xyz = subgroupMul(data[2].u4.xyz);
data[invocation].u4 = subgroupMul(data[3].u4);
data[invocation].d4.x = subgroupMul(data[0].d4.x);
data[invocation].d4.xy = subgroupMul(data[1].d4.xy);
data[invocation].d4.xyz = subgroupMul(data[2].d4.xyz);
data[invocation].d4 = subgroupMul(data[3].d4);
data[invocation].f4.x = subgroupMin(data[0].f4.x);
data[invocation].f4.xy = subgroupMin(data[1].f4.xy);
data[invocation].f4.xyz = subgroupMin(data[2].f4.xyz);
data[invocation].f4 = subgroupMin(data[3].f4);
data[invocation].i4.x = subgroupMin(data[0].i4.x);
data[invocation].i4.xy = subgroupMin(data[1].i4.xy);
data[invocation].i4.xyz = subgroupMin(data[2].i4.xyz);
data[invocation].i4 = subgroupMin(data[3].i4);
data[invocation].u4.x = subgroupMin(data[0].u4.x);
data[invocation].u4.xy = subgroupMin(data[1].u4.xy);
data[invocation].u4.xyz = subgroupMin(data[2].u4.xyz);
data[invocation].u4 = subgroupMin(data[3].u4);
data[invocation].d4.x = subgroupMin(data[0].d4.x);
data[invocation].d4.xy = subgroupMin(data[1].d4.xy);
data[invocation].d4.xyz = subgroupMin(data[2].d4.xyz);
data[invocation].d4 = subgroupMin(data[3].d4);
data[invocation].f4.x = subgroupMax(data[0].f4.x);
data[invocation].f4.xy = subgroupMax(data[1].f4.xy);
data[invocation].f4.xyz = subgroupMax(data[2].f4.xyz);
data[invocation].f4 = subgroupMax(data[3].f4);
data[invocation].i4.x = subgroupMax(data[0].i4.x);
data[invocation].i4.xy = subgroupMax(data[1].i4.xy);
data[invocation].i4.xyz = subgroupMax(data[2].i4.xyz);
data[invocation].i4 = subgroupMax(data[3].i4);
data[invocation].u4.x = subgroupMax(data[0].u4.x);
data[invocation].u4.xy = subgroupMax(data[1].u4.xy);
data[invocation].u4.xyz = subgroupMax(data[2].u4.xyz);
data[invocation].u4 = subgroupMax(data[3].u4);
data[invocation].d4.x = subgroupMax(data[0].d4.x);
data[invocation].d4.xy = subgroupMax(data[1].d4.xy);
data[invocation].d4.xyz = subgroupMax(data[2].d4.xyz);
data[invocation].d4 = subgroupMax(data[3].d4);
data[invocation].i4.x = subgroupAnd(data[0].i4.x);
data[invocation].i4.xy = subgroupAnd(data[1].i4.xy);
data[invocation].i4.xyz = subgroupAnd(data[2].i4.xyz);
data[invocation].i4 = subgroupAnd(data[3].i4);
data[invocation].u4.x = subgroupAnd(data[0].u4.x);
data[invocation].u4.xy = subgroupAnd(data[1].u4.xy);
data[invocation].u4.xyz = subgroupAnd(data[2].u4.xyz);
data[invocation].u4 = subgroupAnd(data[3].u4);
data[invocation].i4.x = int(subgroupAnd(data[0].i4.x < 0));
data[invocation].i4.xy = ivec2(subgroupAnd(lessThan(data[1].i4.xy, ivec2(0))));
data[invocation].i4.xyz = ivec3(subgroupAnd(lessThan(data[1].i4.xyz, ivec3(0))));
data[invocation].i4 = ivec4(subgroupAnd(lessThan(data[1].i4, ivec4(0))));
data[invocation].i4.x = subgroupOr(data[0].i4.x);
data[invocation].i4.xy = subgroupOr(data[1].i4.xy);
data[invocation].i4.xyz = subgroupOr(data[2].i4.xyz);
data[invocation].i4 = subgroupOr(data[3].i4);
data[invocation].u4.x = subgroupOr(data[0].u4.x);
data[invocation].u4.xy = subgroupOr(data[1].u4.xy);
data[invocation].u4.xyz = subgroupOr(data[2].u4.xyz);
data[invocation].u4 = subgroupOr(data[3].u4);
data[invocation].i4.x = int(subgroupOr(data[0].i4.x < 0));
data[invocation].i4.xy = ivec2(subgroupOr(lessThan(data[1].i4.xy, ivec2(0))));
data[invocation].i4.xyz = ivec3(subgroupOr(lessThan(data[1].i4.xyz, ivec3(0))));
data[invocation].i4 = ivec4(subgroupOr(lessThan(data[1].i4, ivec4(0))));
data[invocation].i4.x = subgroupXor(data[0].i4.x);
data[invocation].i4.xy = subgroupXor(data[1].i4.xy);
data[invocation].i4.xyz = subgroupXor(data[2].i4.xyz);
data[invocation].i4 = subgroupXor(data[3].i4);
data[invocation].u4.x = subgroupXor(data[0].u4.x);
data[invocation].u4.xy = subgroupXor(data[1].u4.xy);
data[invocation].u4.xyz = subgroupXor(data[2].u4.xyz);
data[invocation].u4 = subgroupXor(data[3].u4);
data[invocation].i4.x = int(subgroupXor(data[0].i4.x < 0));
data[invocation].i4.xy = ivec2(subgroupXor(lessThan(data[1].i4.xy, ivec2(0))));
data[invocation].i4.xyz = ivec3(subgroupXor(lessThan(data[1].i4.xyz, ivec3(0))));
data[invocation].i4 = ivec4(subgroupXor(lessThan(data[1].i4, ivec4(0))));
data[invocation].f4.x = subgroupInclusiveAdd(data[0].f4.x);
data[invocation].f4.xy = subgroupInclusiveAdd(data[1].f4.xy);
data[invocation].f4.xyz = subgroupInclusiveAdd(data[2].f4.xyz);
data[invocation].f4 = subgroupInclusiveAdd(data[3].f4);
data[invocation].i4.x = subgroupInclusiveAdd(data[0].i4.x);
data[invocation].i4.xy = subgroupInclusiveAdd(data[1].i4.xy);
data[invocation].i4.xyz = subgroupInclusiveAdd(data[2].i4.xyz);
data[invocation].i4 = subgroupInclusiveAdd(data[3].i4);
data[invocation].u4.x = subgroupInclusiveAdd(data[0].u4.x);
data[invocation].u4.xy = subgroupInclusiveAdd(data[1].u4.xy);
data[invocation].u4.xyz = subgroupInclusiveAdd(data[2].u4.xyz);
data[invocation].u4 = subgroupInclusiveAdd(data[3].u4);
data[invocation].d4.x = subgroupInclusiveAdd(data[0].d4.x);
data[invocation].d4.xy = subgroupInclusiveAdd(data[1].d4.xy);
data[invocation].d4.xyz = subgroupInclusiveAdd(data[2].d4.xyz);
data[invocation].d4 = subgroupInclusiveAdd(data[3].d4);
data[invocation].f4.x = subgroupInclusiveMul(data[0].f4.x);
data[invocation].f4.xy = subgroupInclusiveMul(data[1].f4.xy);
data[invocation].f4.xyz = subgroupInclusiveMul(data[2].f4.xyz);
data[invocation].f4 = subgroupInclusiveMul(data[3].f4);
data[invocation].i4.x = subgroupInclusiveMul(data[0].i4.x);
data[invocation].i4.xy = subgroupInclusiveMul(data[1].i4.xy);
data[invocation].i4.xyz = subgroupInclusiveMul(data[2].i4.xyz);
data[invocation].i4 = subgroupInclusiveMul(data[3].i4);
data[invocation].u4.x = subgroupInclusiveMul(data[0].u4.x);
data[invocation].u4.xy = subgroupInclusiveMul(data[1].u4.xy);
data[invocation].u4.xyz = subgroupInclusiveMul(data[2].u4.xyz);
data[invocation].u4 = subgroupInclusiveMul(data[3].u4);
data[invocation].d4.x = subgroupInclusiveMul(data[0].d4.x);
data[invocation].d4.xy = subgroupInclusiveMul(data[1].d4.xy);
data[invocation].d4.xyz = subgroupInclusiveMul(data[2].d4.xyz);
data[invocation].d4 = subgroupInclusiveMul(data[3].d4);
data[invocation].f4.x = subgroupInclusiveMin(data[0].f4.x);
data[invocation].f4.xy = subgroupInclusiveMin(data[1].f4.xy);
data[invocation].f4.xyz = subgroupInclusiveMin(data[2].f4.xyz);
data[invocation].f4 = subgroupInclusiveMin(data[3].f4);
data[invocation].i4.x = subgroupInclusiveMin(data[0].i4.x);
data[invocation].i4.xy = subgroupInclusiveMin(data[1].i4.xy);
data[invocation].i4.xyz = subgroupInclusiveMin(data[2].i4.xyz);
data[invocation].i4 = subgroupInclusiveMin(data[3].i4);
data[invocation].u4.x = subgroupInclusiveMin(data[0].u4.x);
data[invocation].u4.xy = subgroupInclusiveMin(data[1].u4.xy);
data[invocation].u4.xyz = subgroupInclusiveMin(data[2].u4.xyz);
data[invocation].u4 = subgroupInclusiveMin(data[3].u4);
data[invocation].d4.x = subgroupInclusiveMin(data[0].d4.x);
data[invocation].d4.xy = subgroupInclusiveMin(data[1].d4.xy);
data[invocation].d4.xyz = subgroupInclusiveMin(data[2].d4.xyz);
data[invocation].d4 = subgroupInclusiveMin(data[3].d4);
data[invocation].f4.x = subgroupInclusiveMax(data[0].f4.x);
data[invocation].f4.xy = subgroupInclusiveMax(data[1].f4.xy);
data[invocation].f4.xyz = subgroupInclusiveMax(data[2].f4.xyz);
data[invocation].f4 = subgroupInclusiveMax(data[3].f4);
data[invocation].i4.x = subgroupInclusiveMax(data[0].i4.x);
data[invocation].i4.xy = subgroupInclusiveMax(data[1].i4.xy);
data[invocation].i4.xyz = subgroupInclusiveMax(data[2].i4.xyz);
data[invocation].i4 = subgroupInclusiveMax(data[3].i4);
data[invocation].u4.x = subgroupInclusiveMax(data[0].u4.x);
data[invocation].u4.xy = subgroupInclusiveMax(data[1].u4.xy);
data[invocation].u4.xyz = subgroupInclusiveMax(data[2].u4.xyz);
data[invocation].u4 = subgroupInclusiveMax(data[3].u4);
data[invocation].d4.x = subgroupInclusiveMax(data[0].d4.x);
data[invocation].d4.xy = subgroupInclusiveMax(data[1].d4.xy);
data[invocation].d4.xyz = subgroupInclusiveMax(data[2].d4.xyz);
data[invocation].d4 = subgroupInclusiveMax(data[3].d4);
data[invocation].i4.x = subgroupInclusiveAnd(data[0].i4.x);
data[invocation].i4.xy = subgroupInclusiveAnd(data[1].i4.xy);
data[invocation].i4.xyz = subgroupInclusiveAnd(data[2].i4.xyz);
data[invocation].i4 = subgroupInclusiveAnd(data[3].i4);
data[invocation].u4.x = subgroupInclusiveAnd(data[0].u4.x);
data[invocation].u4.xy = subgroupInclusiveAnd(data[1].u4.xy);
data[invocation].u4.xyz = subgroupInclusiveAnd(data[2].u4.xyz);
data[invocation].u4 = subgroupInclusiveAnd(data[3].u4);
data[invocation].i4.x = int(subgroupInclusiveAnd(data[0].i4.x < 0));
data[invocation].i4.xy = ivec2(subgroupInclusiveAnd(lessThan(data[1].i4.xy, ivec2(0))));
data[invocation].i4.xyz = ivec3(subgroupInclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0))));
data[invocation].i4 = ivec4(subgroupInclusiveAnd(lessThan(data[1].i4, ivec4(0))));
data[invocation].i4.x = subgroupInclusiveOr(data[0].i4.x);
data[invocation].i4.xy = subgroupInclusiveOr(data[1].i4.xy);
data[invocation].i4.xyz = subgroupInclusiveOr(data[2].i4.xyz);
data[invocation].i4 = subgroupInclusiveOr(data[3].i4);
data[invocation].u4.x = subgroupInclusiveOr(data[0].u4.x);
data[invocation].u4.xy = subgroupInclusiveOr(data[1].u4.xy);
data[invocation].u4.xyz = subgroupInclusiveOr(data[2].u4.xyz);
data[invocation].u4 = subgroupInclusiveOr(data[3].u4);
data[invocation].i4.x = int(subgroupInclusiveOr(data[0].i4.x < 0));
data[invocation].i4.xy = ivec2(subgroupInclusiveOr(lessThan(data[1].i4.xy, ivec2(0))));
data[invocation].i4.xyz = ivec3(subgroupInclusiveOr(lessThan(data[1].i4.xyz, ivec3(0))));
data[invocation].i4 = ivec4(subgroupInclusiveOr(lessThan(data[1].i4, ivec4(0))));
data[invocation].i4.x = subgroupInclusiveXor(data[0].i4.x);
data[invocation].i4.xy = subgroupInclusiveXor(data[1].i4.xy);
data[invocation].i4.xyz = subgroupInclusiveXor(data[2].i4.xyz);
data[invocation].i4 = subgroupInclusiveXor(data[3].i4);
data[invocation].u4.x = subgroupInclusiveXor(data[0].u4.x);
data[invocation].u4.xy = subgroupInclusiveXor(data[1].u4.xy);
data[invocation].u4.xyz = subgroupInclusiveXor(data[2].u4.xyz);
data[invocation].u4 = subgroupInclusiveXor(data[3].u4);
data[invocation].i4.x = int(subgroupInclusiveXor(data[0].i4.x < 0));
data[invocation].i4.xy = ivec2(subgroupInclusiveXor(lessThan(data[1].i4.xy, ivec2(0))));
data[invocation].i4.xyz = ivec3(subgroupInclusiveXor(lessThan(data[1].i4.xyz, ivec3(0))));
data[invocation].i4 = ivec4(subgroupInclusiveXor(lessThan(data[1].i4, ivec4(0))));
data[invocation].f4.x = subgroupExclusiveAdd(data[0].f4.x);
data[invocation].f4.xy = subgroupExclusiveAdd(data[1].f4.xy);
data[invocation].f4.xyz = subgroupExclusiveAdd(data[2].f4.xyz);
data[invocation].f4 = subgroupExclusiveAdd(data[3].f4);
data[invocation].i4.x = subgroupExclusiveAdd(data[0].i4.x);
data[invocation].i4.xy = subgroupExclusiveAdd(data[1].i4.xy);
data[invocation].i4.xyz = subgroupExclusiveAdd(data[2].i4.xyz);
data[invocation].i4 = subgroupExclusiveAdd(data[3].i4);
data[invocation].u4.x = subgroupExclusiveAdd(data[0].u4.x);
data[invocation].u4.xy = subgroupExclusiveAdd(data[1].u4.xy);
data[invocation].u4.xyz = subgroupExclusiveAdd(data[2].u4.xyz);
data[invocation].u4 = subgroupExclusiveAdd(data[3].u4);
data[invocation].d4.x = subgroupExclusiveAdd(data[0].d4.x);
data[invocation].d4.xy = subgroupExclusiveAdd(data[1].d4.xy);
data[invocation].d4.xyz = subgroupExclusiveAdd(data[2].d4.xyz);
data[invocation].d4 = subgroupExclusiveAdd(data[3].d4);
data[invocation].f4.x = subgroupExclusiveMul(data[0].f4.x);
data[invocation].f4.xy = subgroupExclusiveMul(data[1].f4.xy);
data[invocation].f4.xyz = subgroupExclusiveMul(data[2].f4.xyz);
data[invocation].f4 = subgroupExclusiveMul(data[3].f4);
data[invocation].i4.x = subgroupExclusiveMul(data[0].i4.x);
data[invocation].i4.xy = subgroupExclusiveMul(data[1].i4.xy);
data[invocation].i4.xyz = subgroupExclusiveMul(data[2].i4.xyz);
data[invocation].i4 = subgroupExclusiveMul(data[3].i4);
data[invocation].u4.x = subgroupExclusiveMul(data[0].u4.x);
data[invocation].u4.xy = subgroupExclusiveMul(data[1].u4.xy);
data[invocation].u4.xyz = subgroupExclusiveMul(data[2].u4.xyz);
data[invocation].u4 = subgroupExclusiveMul(data[3].u4);
data[invocation].d4.x = subgroupExclusiveMul(data[0].d4.x);
data[invocation].d4.xy = subgroupExclusiveMul(data[1].d4.xy);
data[invocation].d4.xyz = subgroupExclusiveMul(data[2].d4.xyz);
data[invocation].d4 = subgroupExclusiveMul(data[3].d4);
data[invocation].f4.x = subgroupExclusiveMin(data[0].f4.x);
data[invocation].f4.xy = subgroupExclusiveMin(data[1].f4.xy);
data[invocation].f4.xyz = subgroupExclusiveMin(data[2].f4.xyz);
data[invocation].f4 = subgroupExclusiveMin(data[3].f4);
data[invocation].i4.x = subgroupExclusiveMin(data[0].i4.x);
data[invocation].i4.xy = subgroupExclusiveMin(data[1].i4.xy);
data[invocation].i4.xyz = subgroupExclusiveMin(data[2].i4.xyz);
data[invocation].i4 = subgroupExclusiveMin(data[3].i4);
data[invocation].u4.x = subgroupExclusiveMin(data[0].u4.x);
data[invocation].u4.xy = subgroupExclusiveMin(data[1].u4.xy);
data[invocation].u4.xyz = subgroupExclusiveMin(data[2].u4.xyz);
data[invocation].u4 = subgroupExclusiveMin(data[3].u4);
data[invocation].d4.x = subgroupExclusiveMin(data[0].d4.x);
data[invocation].d4.xy = subgroupExclusiveMin(data[1].d4.xy);
data[invocation].d4.xyz = subgroupExclusiveMin(data[2].d4.xyz);
data[invocation].d4 = subgroupExclusiveMin(data[3].d4);
data[invocation].f4.x = subgroupExclusiveMax(data[0].f4.x);
data[invocation].f4.xy = subgroupExclusiveMax(data[1].f4.xy);
data[invocation].f4.xyz = subgroupExclusiveMax(data[2].f4.xyz);
data[invocation].f4 = subgroupExclusiveMax(data[3].f4);
data[invocation].i4.x = subgroupExclusiveMax(data[0].i4.x);
data[invocation].i4.xy = subgroupExclusiveMax(data[1].i4.xy);
data[invocation].i4.xyz = subgroupExclusiveMax(data[2].i4.xyz);
data[invocation].i4 = subgroupExclusiveMax(data[3].i4);
data[invocation].u4.x = subgroupExclusiveMax(data[0].u4.x);
data[invocation].u4.xy = subgroupExclusiveMax(data[1].u4.xy);
data[invocation].u4.xyz = subgroupExclusiveMax(data[2].u4.xyz);
data[invocation].u4 = subgroupExclusiveMax(data[3].u4);
data[invocation].d4.x = subgroupExclusiveMax(data[0].d4.x);
data[invocation].d4.xy = subgroupExclusiveMax(data[1].d4.xy);
data[invocation].d4.xyz = subgroupExclusiveMax(data[2].d4.xyz);
data[invocation].d4 = subgroupExclusiveMax(data[3].d4);
data[invocation].i4.x = subgroupExclusiveAnd(data[0].i4.x);
data[invocation].i4.xy = subgroupExclusiveAnd(data[1].i4.xy);
data[invocation].i4.xyz = subgroupExclusiveAnd(data[2].i4.xyz);
data[invocation].i4 = subgroupExclusiveAnd(data[3].i4);
data[invocation].u4.x = subgroupExclusiveAnd(data[0].u4.x);
data[invocation].u4.xy = subgroupExclusiveAnd(data[1].u4.xy);
data[invocation].u4.xyz = subgroupExclusiveAnd(data[2].u4.xyz);
data[invocation].u4 = subgroupExclusiveAnd(data[3].u4);
data[invocation].i4.x = int(subgroupExclusiveAnd(data[0].i4.x < 0));
data[invocation].i4.xy = ivec2(subgroupExclusiveAnd(lessThan(data[1].i4.xy, ivec2(0))));
data[invocation].i4.xyz = ivec3(subgroupExclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0))));
data[invocation].i4 = ivec4(subgroupExclusiveAnd(lessThan(data[1].i4, ivec4(0))));
data[invocation].i4.x = subgroupExclusiveOr(data[0].i4.x);
data[invocation].i4.xy = subgroupExclusiveOr(data[1].i4.xy);
data[invocation].i4.xyz = subgroupExclusiveOr(data[2].i4.xyz);
data[invocation].i4 = subgroupExclusiveOr(data[3].i4);
data[invocation].u4.x = subgroupExclusiveOr(data[0].u4.x);
data[invocation].u4.xy = subgroupExclusiveOr(data[1].u4.xy);
data[invocation].u4.xyz = subgroupExclusiveOr(data[2].u4.xyz);
data[invocation].u4 = subgroupExclusiveOr(data[3].u4);
data[invocation].i4.x = int(subgroupExclusiveOr(data[0].i4.x < 0));
data[invocation].i4.xy = ivec2(subgroupExclusiveOr(lessThan(data[1].i4.xy, ivec2(0))));
data[invocation].i4.xyz = ivec3(subgroupExclusiveOr(lessThan(data[1].i4.xyz, ivec3(0))));
data[invocation].i4 = ivec4(subgroupExclusiveOr(lessThan(data[1].i4, ivec4(0))));
data[invocation].i4.x = subgroupExclusiveXor(data[0].i4.x);
data[invocation].i4.xy = subgroupExclusiveXor(data[1].i4.xy);
data[invocation].i4.xyz = subgroupExclusiveXor(data[2].i4.xyz);
data[invocation].i4 = subgroupExclusiveXor(data[3].i4);
data[invocation].u4.x = subgroupExclusiveXor(data[0].u4.x);
data[invocation].u4.xy = subgroupExclusiveXor(data[1].u4.xy);
data[invocation].u4.xyz = subgroupExclusiveXor(data[2].u4.xyz);
data[invocation].u4 = subgroupExclusiveXor(data[3].u4);
data[invocation].i4.x = int(subgroupExclusiveXor(data[0].i4.x < 0));
data[invocation].i4.xy = ivec2(subgroupExclusiveXor(lessThan(data[1].i4.xy, ivec2(0))));
data[invocation].i4.xyz = ivec3(subgroupExclusiveXor(lessThan(data[1].i4.xyz, ivec3(0))));
data[invocation].i4 = ivec4(subgroupExclusiveXor(lessThan(data[1].i4, ivec4(0))));
}

View File

@ -0,0 +1,86 @@
#version 450
#extension GL_KHR_shader_subgroup_ballot: enable
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
dvec4 d4;
} data[4];
void main()
{
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
uvec4 relMask = gl_SubgroupEqMask +
gl_SubgroupGeMask +
gl_SubgroupGtMask +
gl_SubgroupLeMask +
gl_SubgroupLtMask;
uvec4 result = subgroupBallot(true);
data[invocation].u4.x = subgroupBallotBitCount(result);
data[invocation].u4.y = subgroupBallotBitExtract(result, 0) ? 1 : 0;
data[invocation].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result);
data[invocation].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result);
if ((relMask == result) && subgroupInverseBallot(data[0].u4))
{
data[invocation].f4.x = subgroupBroadcast(data[0].f4.x, 3);
data[invocation].f4.xy = subgroupBroadcast(data[1].f4.xy, 3);
data[invocation].f4.xyz = subgroupBroadcast(data[2].f4.xyz, 3);
data[invocation].f4 = subgroupBroadcast(data[3].f4, 3);
data[invocation].i4.x = subgroupBroadcast(data[0].i4.x, 2);
data[invocation].i4.xy = subgroupBroadcast(data[1].i4.xy, 2);
data[invocation].i4.xyz = subgroupBroadcast(data[2].i4.xyz, 2);
data[invocation].i4 = subgroupBroadcast(data[3].i4, 2);
data[invocation].u4.x = subgroupBroadcast(data[0].u4.x, 1);
data[invocation].u4.xy = subgroupBroadcast(data[1].u4.xy, 1);
data[invocation].u4.xyz = subgroupBroadcast(data[2].u4.xyz, 1);
data[invocation].u4 = subgroupBroadcast(data[3].u4, 1);
data[invocation].d4.x = subgroupBroadcast(data[0].d4.x, 0);
data[invocation].d4.xy = subgroupBroadcast(data[1].d4.xy, 0);
data[invocation].d4.xyz = subgroupBroadcast(data[2].d4.xyz, 0);
data[invocation].d4 = subgroupBroadcast(data[3].d4, 0);
data[invocation].i4.x = int(subgroupBroadcast(data[0].i4.x < 0, 1));
data[invocation].i4.xy = ivec2(subgroupBroadcast(lessThan(data[1].i4.xy, ivec2(0)), 1));
data[invocation].i4.xyz = ivec3(subgroupBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), 1));
data[invocation].i4 = ivec4(subgroupBroadcast(lessThan(data[1].i4, ivec4(0)), 1));
}
else
{
data[invocation].f4.x = subgroupBroadcastFirst(data[0].f4.x);
data[invocation].f4.xy = subgroupBroadcastFirst(data[1].f4.xy);
data[invocation].f4.xyz = subgroupBroadcastFirst(data[2].f4.xyz);
data[invocation].f4 = subgroupBroadcastFirst(data[3].f4);
data[invocation].i4.x = subgroupBroadcastFirst(data[0].i4.x);
data[invocation].i4.xy = subgroupBroadcastFirst(data[1].i4.xy);
data[invocation].i4.xyz = subgroupBroadcastFirst(data[2].i4.xyz);
data[invocation].i4 = subgroupBroadcastFirst(data[3].i4);
data[invocation].u4.x = subgroupBroadcastFirst(data[0].u4.x);
data[invocation].u4.xy = subgroupBroadcastFirst(data[1].u4.xy);
data[invocation].u4.xyz = subgroupBroadcastFirst(data[2].u4.xyz);
data[invocation].u4 = subgroupBroadcastFirst(data[3].u4);
data[invocation].d4.x = subgroupBroadcastFirst(data[0].d4.x);
data[invocation].d4.xy = subgroupBroadcastFirst(data[1].d4.xy);
data[invocation].d4.xyz = subgroupBroadcastFirst(data[2].d4.xyz);
data[invocation].d4 = subgroupBroadcastFirst(data[3].d4);
data[invocation].i4.x = int(subgroupBroadcastFirst(data[0].i4.x < 0));
data[invocation].i4.xy = ivec2(subgroupBroadcastFirst(lessThan(data[1].i4.xy, ivec2(0))));
data[invocation].i4.xyz = ivec3(subgroupBroadcastFirst(lessThan(data[1].i4.xyz, ivec3(0))));
data[invocation].i4 = ivec4(subgroupBroadcastFirst(lessThan(data[1].i4, ivec4(0))));
}
}

View File

@ -0,0 +1,33 @@
#version 450
#extension GL_KHR_shader_subgroup_ballot: enable
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
dvec4 d4;
} data[4];
void main()
{
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
uvec4 relMask = gl_SubgroupEqMask +
gl_SubgroupGeMask +
gl_SubgroupGtMask +
gl_SubgroupLeMask +
gl_SubgroupLtMask;
uvec4 result = subgroupBallot(true);
data[invocation].u4.x = subgroupBallotBitCount(result);
data[invocation].u4.y = subgroupBallotBitExtract(result, 0) ? 1 : 0;
data[invocation].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result);
data[invocation].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result);
data[invocation].f4.x = subgroupBroadcast(data[0].f4.x, invocation); // ERROR: not constant
}

View File

@ -0,0 +1,23 @@
#version 450
#extension GL_KHR_shader_subgroup_basic: enable
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
layout(binding = 0) buffer Buffer
{
int a[];
} data;
void main()
{
data.a[gl_SubgroupSize] = 1;
data.a[gl_SubgroupInvocationID] = 1;
data.a[gl_NumSubgroups] = 1;
data.a[gl_SubgroupID] = (subgroupElect()) ? 1 : 0;
subgroupBarrier();
subgroupMemoryBarrier();
subgroupMemoryBarrierBuffer();
subgroupMemoryBarrierShared();
subgroupMemoryBarrierImage();
}

View File

@ -0,0 +1,143 @@
#version 450
#extension GL_KHR_shader_subgroup_clustered: enable
layout (local_size_x = 8) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
dvec4 d4;
} data[4];
void main()
{
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
data[invocation].f4.x = subgroupClusteredAdd(data[0].f4.x, 1);
data[invocation].f4.xy = subgroupClusteredAdd(data[1].f4.xy, 1);
data[invocation].f4.xyz = subgroupClusteredAdd(data[2].f4.xyz, 1);
data[invocation].f4 = subgroupClusteredAdd(data[3].f4, 1);
data[invocation].i4.x = subgroupClusteredAdd(data[0].i4.x, 1);
data[invocation].i4.xy = subgroupClusteredAdd(data[1].i4.xy, 1);
data[invocation].i4.xyz = subgroupClusteredAdd(data[2].i4.xyz, 1);
data[invocation].i4 = subgroupClusteredAdd(data[3].i4, 1);
data[invocation].u4.x = subgroupClusteredAdd(data[0].u4.x, 1);
data[invocation].u4.xy = subgroupClusteredAdd(data[1].u4.xy, 1);
data[invocation].u4.xyz = subgroupClusteredAdd(data[2].u4.xyz, 1);
data[invocation].u4 = subgroupClusteredAdd(data[3].u4, 1);
data[invocation].d4.x = subgroupClusteredAdd(data[0].d4.x, 1);
data[invocation].d4.xy = subgroupClusteredAdd(data[1].d4.xy, 1);
data[invocation].d4.xyz = subgroupClusteredAdd(data[2].d4.xyz, 1);
data[invocation].d4 = subgroupClusteredAdd(data[3].d4, 1);
data[invocation].f4.x = subgroupClusteredMul(data[0].f4.x, 1);
data[invocation].f4.xy = subgroupClusteredMul(data[1].f4.xy, 1);
data[invocation].f4.xyz = subgroupClusteredMul(data[2].f4.xyz, 1);
data[invocation].f4 = subgroupClusteredMul(data[3].f4, 1);
data[invocation].i4.x = subgroupClusteredMul(data[0].i4.x, 1);
data[invocation].i4.xy = subgroupClusteredMul(data[1].i4.xy, 1);
data[invocation].i4.xyz = subgroupClusteredMul(data[2].i4.xyz, 1);
data[invocation].i4 = subgroupClusteredMul(data[3].i4, 1);
data[invocation].u4.x = subgroupClusteredMul(data[0].u4.x, 1);
data[invocation].u4.xy = subgroupClusteredMul(data[1].u4.xy, 1);
data[invocation].u4.xyz = subgroupClusteredMul(data[2].u4.xyz, 1);
data[invocation].u4 = subgroupClusteredMul(data[3].u4, 1);
data[invocation].d4.x = subgroupClusteredMul(data[0].d4.x, 1);
data[invocation].d4.xy = subgroupClusteredMul(data[1].d4.xy, 1);
data[invocation].d4.xyz = subgroupClusteredMul(data[2].d4.xyz, 1);
data[invocation].d4 = subgroupClusteredMul(data[3].d4, 1);
data[invocation].f4.x = subgroupClusteredMin(data[0].f4.x, 1);
data[invocation].f4.xy = subgroupClusteredMin(data[1].f4.xy, 1);
data[invocation].f4.xyz = subgroupClusteredMin(data[2].f4.xyz, 1);
data[invocation].f4 = subgroupClusteredMin(data[3].f4, 1);
data[invocation].i4.x = subgroupClusteredMin(data[0].i4.x, 1);
data[invocation].i4.xy = subgroupClusteredMin(data[1].i4.xy, 1);
data[invocation].i4.xyz = subgroupClusteredMin(data[2].i4.xyz, 1);
data[invocation].i4 = subgroupClusteredMin(data[3].i4, 1);
data[invocation].u4.x = subgroupClusteredMin(data[0].u4.x, 1);
data[invocation].u4.xy = subgroupClusteredMin(data[1].u4.xy, 1);
data[invocation].u4.xyz = subgroupClusteredMin(data[2].u4.xyz, 1);
data[invocation].u4 = subgroupClusteredMin(data[3].u4, 1);
data[invocation].d4.x = subgroupClusteredMin(data[0].d4.x, 1);
data[invocation].d4.xy = subgroupClusteredMin(data[1].d4.xy, 1);
data[invocation].d4.xyz = subgroupClusteredMin(data[2].d4.xyz, 1);
data[invocation].d4 = subgroupClusteredMin(data[3].d4, 1);
data[invocation].f4.x = subgroupClusteredMax(data[0].f4.x, 1);
data[invocation].f4.xy = subgroupClusteredMax(data[1].f4.xy, 1);
data[invocation].f4.xyz = subgroupClusteredMax(data[2].f4.xyz, 1);
data[invocation].f4 = subgroupClusteredMax(data[3].f4, 1);
data[invocation].i4.x = subgroupClusteredMax(data[0].i4.x, 1);
data[invocation].i4.xy = subgroupClusteredMax(data[1].i4.xy, 1);
data[invocation].i4.xyz = subgroupClusteredMax(data[2].i4.xyz, 1);
data[invocation].i4 = subgroupClusteredMax(data[3].i4, 1);
data[invocation].u4.x = subgroupClusteredMax(data[0].u4.x, 1);
data[invocation].u4.xy = subgroupClusteredMax(data[1].u4.xy, 1);
data[invocation].u4.xyz = subgroupClusteredMax(data[2].u4.xyz, 1);
data[invocation].u4 = subgroupClusteredMax(data[3].u4, 1);
data[invocation].d4.x = subgroupClusteredMax(data[0].d4.x, 1);
data[invocation].d4.xy = subgroupClusteredMax(data[1].d4.xy, 1);
data[invocation].d4.xyz = subgroupClusteredMax(data[2].d4.xyz, 1);
data[invocation].d4 = subgroupClusteredMax(data[3].d4, 1);
data[invocation].i4.x = subgroupClusteredAnd(data[0].i4.x, 1);
data[invocation].i4.xy = subgroupClusteredAnd(data[1].i4.xy, 1);
data[invocation].i4.xyz = subgroupClusteredAnd(data[2].i4.xyz, 1);
data[invocation].i4 = subgroupClusteredAnd(data[3].i4, 1);
data[invocation].u4.x = subgroupClusteredAnd(data[0].u4.x, 1);
data[invocation].u4.xy = subgroupClusteredAnd(data[1].u4.xy, 1);
data[invocation].u4.xyz = subgroupClusteredAnd(data[2].u4.xyz, 1);
data[invocation].u4 = subgroupClusteredAnd(data[3].u4, 1);
data[invocation].i4.x = int(subgroupClusteredAnd(data[0].i4.x < 0, 1));
data[invocation].i4.xy = ivec2(subgroupClusteredAnd(lessThan(data[1].i4.xy, ivec2(0)), 1));
data[invocation].i4.xyz = ivec3(subgroupClusteredAnd(lessThan(data[1].i4.xyz, ivec3(0)), 1));
data[invocation].i4 = ivec4(subgroupClusteredAnd(lessThan(data[1].i4, ivec4(0)), 1));
data[invocation].i4.x = subgroupClusteredOr(data[0].i4.x, 1);
data[invocation].i4.xy = subgroupClusteredOr(data[1].i4.xy, 1);
data[invocation].i4.xyz = subgroupClusteredOr(data[2].i4.xyz, 1);
data[invocation].i4 = subgroupClusteredOr(data[3].i4, 1);
data[invocation].u4.x = subgroupClusteredOr(data[0].u4.x, 1);
data[invocation].u4.xy = subgroupClusteredOr(data[1].u4.xy, 1);
data[invocation].u4.xyz = subgroupClusteredOr(data[2].u4.xyz, 1);
data[invocation].u4 = subgroupClusteredOr(data[3].u4, 1);
data[invocation].i4.x = int(subgroupClusteredOr(data[0].i4.x < 0, 1));
data[invocation].i4.xy = ivec2(subgroupClusteredOr(lessThan(data[1].i4.xy, ivec2(0)), 1));
data[invocation].i4.xyz = ivec3(subgroupClusteredOr(lessThan(data[1].i4.xyz, ivec3(0)), 1));
data[invocation].i4 = ivec4(subgroupClusteredOr(lessThan(data[1].i4, ivec4(0)), 1));
data[invocation].i4.x = subgroupClusteredXor(data[0].i4.x, 1);
data[invocation].i4.xy = subgroupClusteredXor(data[1].i4.xy, 1);
data[invocation].i4.xyz = subgroupClusteredXor(data[2].i4.xyz, 1);
data[invocation].i4 = subgroupClusteredXor(data[3].i4, 1);
data[invocation].u4.x = subgroupClusteredXor(data[0].u4.x, 1);
data[invocation].u4.xy = subgroupClusteredXor(data[1].u4.xy, 1);
data[invocation].u4.xyz = subgroupClusteredXor(data[2].u4.xyz, 1);
data[invocation].u4 = subgroupClusteredXor(data[3].u4, 1);
data[invocation].i4.x = int(subgroupClusteredXor(data[0].i4.x < 0, 1));
data[invocation].i4.xy = ivec2(subgroupClusteredXor(lessThan(data[1].i4.xy, ivec2(0)), 1));
data[invocation].i4.xyz = ivec3(subgroupClusteredXor(lessThan(data[1].i4.xyz, ivec3(0)), 1));
data[invocation].i4 = ivec4(subgroupClusteredXor(lessThan(data[1].i4, ivec4(0)), 1));
}

View File

@ -0,0 +1,39 @@
#version 450
#extension GL_KHR_shader_subgroup_clustered: enable
layout (local_size_x = 8) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
dvec4 d4;
} data[4];
void main()
{
int a = 1;
const int aConst = 1;
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
data[invocation].f4.xy = subgroupClusteredAdd(data[1].f4.xy, 0); // ERROR, less than 1
data[invocation].f4.x = subgroupClusteredMul(data[0].f4.x, 3); // ERROR, not a power of 2
data[invocation].i4.xy = subgroupClusteredMin(data[1].i4.xy, 8);
data[invocation].i4.xyz = subgroupClusteredMin(data[2].i4.xyz, 6); // ERROR, not a power of 2
data[invocation].f4.x = subgroupClusteredMax(data[0].f4.x, -1); // ERROR, less than 1
data[invocation].i4 = subgroupClusteredAnd(data[3].i4, -3); // ERROR, less than 1
data[invocation].i4.x = subgroupClusteredOr(data[0].i4.x, a); // ERROR, not constant
data[invocation].i4.xy = subgroupClusteredOr(data[1].i4.xy, aConst);
data[invocation].i4.x = subgroupClusteredXor(data[0].i4.x, 1 + a); // ERROR, not constant
data[invocation].i4.xy = subgroupClusteredXor(data[1].i4.xy, aConst + a); // ERROR, not constant
data[invocation].i4.xyz = subgroupClusteredXor(data[2].i4.xyz, 1 + aConst);
}

View File

@ -0,0 +1,420 @@
#version 450
#extension GL_NV_shader_subgroup_partitioned: enable
layout (local_size_x = 8) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
dvec4 d4;
} data[4];
void main()
{
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
uvec4 ballot = subgroupPartitionNV(invocation);
data[invocation].u4 = subgroupPartitionNV(data[0].f4.x);
data[invocation].u4 = subgroupPartitionNV(data[0].f4.xy);
data[invocation].u4 = subgroupPartitionNV(data[0].f4.xyz);
data[invocation].u4 = subgroupPartitionNV(data[0].f4);
data[invocation].u4 = subgroupPartitionNV(data[0].i4.x);
data[invocation].u4 = subgroupPartitionNV(data[0].i4.xy);
data[invocation].u4 = subgroupPartitionNV(data[0].i4.xyz);
data[invocation].u4 = subgroupPartitionNV(data[0].i4);
data[invocation].u4 = subgroupPartitionNV(data[0].u4.x);
data[invocation].u4 = subgroupPartitionNV(data[0].u4.xy);
data[invocation].u4 = subgroupPartitionNV(data[0].u4.xyz);
data[invocation].u4 = subgroupPartitionNV(data[0].u4);
data[invocation].u4 = subgroupPartitionNV(data[0].d4.x);
data[invocation].u4 = subgroupPartitionNV(data[0].d4.xy);
data[invocation].u4 = subgroupPartitionNV(data[0].d4.xyz);
data[invocation].u4 = subgroupPartitionNV(data[0].d4);
data[invocation].u4 = subgroupPartitionNV(bool(data[0].i4.x));
data[invocation].u4 = subgroupPartitionNV(bvec2(data[0].i4.xy));
data[invocation].u4 = subgroupPartitionNV(bvec3(data[0].i4.xyz));
data[invocation].u4 = subgroupPartitionNV(bvec4(data[0].i4));
data[invocation].f4.x = subgroupPartitionedAddNV(data[0].f4.x, ballot);
data[invocation].f4.xy = subgroupPartitionedAddNV(data[1].f4.xy, ballot);
data[invocation].f4.xyz = subgroupPartitionedAddNV(data[2].f4.xyz, ballot);
data[invocation].f4 = subgroupPartitionedAddNV(data[3].f4, ballot);
data[invocation].i4.x = subgroupPartitionedAddNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedAddNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedAddNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedAddNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedAddNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedAddNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedAddNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedAddNV(data[3].u4, ballot);
data[invocation].d4.x = subgroupPartitionedAddNV(data[0].d4.x, ballot);
data[invocation].d4.xy = subgroupPartitionedAddNV(data[1].d4.xy, ballot);
data[invocation].d4.xyz = subgroupPartitionedAddNV(data[2].d4.xyz, ballot);
data[invocation].d4 = subgroupPartitionedAddNV(data[3].d4, ballot);
data[invocation].f4.x = subgroupPartitionedMulNV(data[0].f4.x, ballot);
data[invocation].f4.xy = subgroupPartitionedMulNV(data[1].f4.xy, ballot);
data[invocation].f4.xyz = subgroupPartitionedMulNV(data[2].f4.xyz, ballot);
data[invocation].f4 = subgroupPartitionedMulNV(data[3].f4, ballot);
data[invocation].i4.x = subgroupPartitionedMulNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedMulNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedMulNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedMulNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedMulNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedMulNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedMulNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedMulNV(data[3].u4, ballot);
data[invocation].d4.x = subgroupPartitionedMulNV(data[0].d4.x, ballot);
data[invocation].d4.xy = subgroupPartitionedMulNV(data[1].d4.xy, ballot);
data[invocation].d4.xyz = subgroupPartitionedMulNV(data[2].d4.xyz, ballot);
data[invocation].d4 = subgroupPartitionedMulNV(data[3].d4, ballot);
data[invocation].f4.x = subgroupPartitionedMinNV(data[0].f4.x, ballot);
data[invocation].f4.xy = subgroupPartitionedMinNV(data[1].f4.xy, ballot);
data[invocation].f4.xyz = subgroupPartitionedMinNV(data[2].f4.xyz, ballot);
data[invocation].f4 = subgroupPartitionedMinNV(data[3].f4, ballot);
data[invocation].i4.x = subgroupPartitionedMinNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedMinNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedMinNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedMinNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedMinNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedMinNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedMinNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedMinNV(data[3].u4, ballot);
data[invocation].d4.x = subgroupPartitionedMinNV(data[0].d4.x, ballot);
data[invocation].d4.xy = subgroupPartitionedMinNV(data[1].d4.xy, ballot);
data[invocation].d4.xyz = subgroupPartitionedMinNV(data[2].d4.xyz, ballot);
data[invocation].d4 = subgroupPartitionedMinNV(data[3].d4, ballot);
data[invocation].f4.x = subgroupPartitionedMaxNV(data[0].f4.x, ballot);
data[invocation].f4.xy = subgroupPartitionedMaxNV(data[1].f4.xy, ballot);
data[invocation].f4.xyz = subgroupPartitionedMaxNV(data[2].f4.xyz, ballot);
data[invocation].f4 = subgroupPartitionedMaxNV(data[3].f4, ballot);
data[invocation].i4.x = subgroupPartitionedMaxNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedMaxNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedMaxNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedMaxNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedMaxNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedMaxNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedMaxNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedMaxNV(data[3].u4, ballot);
data[invocation].d4.x = subgroupPartitionedMaxNV(data[0].d4.x, ballot);
data[invocation].d4.xy = subgroupPartitionedMaxNV(data[1].d4.xy, ballot);
data[invocation].d4.xyz = subgroupPartitionedMaxNV(data[2].d4.xyz, ballot);
data[invocation].d4 = subgroupPartitionedMaxNV(data[3].d4, ballot);
data[invocation].i4.x = subgroupPartitionedAndNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedAndNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedAndNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedAndNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedAndNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedAndNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedAndNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedAndNV(data[3].u4, ballot);
data[invocation].i4.x = int(subgroupPartitionedAndNV(data[0].i4.x < 0, ballot));
data[invocation].i4.xy = ivec2(subgroupPartitionedAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
data[invocation].i4.xyz = ivec3(subgroupPartitionedAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
data[invocation].i4 = ivec4(subgroupPartitionedAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
data[invocation].i4.x = subgroupPartitionedOrNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedOrNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedOrNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedOrNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedOrNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedOrNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedOrNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedOrNV(data[3].u4, ballot);
data[invocation].i4.x = int(subgroupPartitionedOrNV(data[0].i4.x < 0, ballot));
data[invocation].i4.xy = ivec2(subgroupPartitionedOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
data[invocation].i4.xyz = ivec3(subgroupPartitionedOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
data[invocation].i4 = ivec4(subgroupPartitionedOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
data[invocation].i4.x = subgroupPartitionedXorNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedXorNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedXorNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedXorNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedXorNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedXorNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedXorNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedXorNV(data[3].u4, ballot);
data[invocation].i4.x = int(subgroupPartitionedXorNV(data[0].i4.x < 0, ballot));
data[invocation].i4.xy = ivec2(subgroupPartitionedXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
data[invocation].i4.xyz = ivec3(subgroupPartitionedXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
data[invocation].i4 = ivec4(subgroupPartitionedXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
data[invocation].f4.x = subgroupPartitionedInclusiveAddNV(data[0].f4.x, ballot);
data[invocation].f4.xy = subgroupPartitionedInclusiveAddNV(data[1].f4.xy, ballot);
data[invocation].f4.xyz = subgroupPartitionedInclusiveAddNV(data[2].f4.xyz, ballot);
data[invocation].f4 = subgroupPartitionedInclusiveAddNV(data[3].f4, ballot);
data[invocation].i4.x = subgroupPartitionedInclusiveAddNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedInclusiveAddNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedInclusiveAddNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedInclusiveAddNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedInclusiveAddNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedInclusiveAddNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedInclusiveAddNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedInclusiveAddNV(data[3].u4, ballot);
data[invocation].d4.x = subgroupPartitionedInclusiveAddNV(data[0].d4.x, ballot);
data[invocation].d4.xy = subgroupPartitionedInclusiveAddNV(data[1].d4.xy, ballot);
data[invocation].d4.xyz = subgroupPartitionedInclusiveAddNV(data[2].d4.xyz, ballot);
data[invocation].d4 = subgroupPartitionedInclusiveAddNV(data[3].d4, ballot);
data[invocation].f4.x = subgroupPartitionedInclusiveMulNV(data[0].f4.x, ballot);
data[invocation].f4.xy = subgroupPartitionedInclusiveMulNV(data[1].f4.xy, ballot);
data[invocation].f4.xyz = subgroupPartitionedInclusiveMulNV(data[2].f4.xyz, ballot);
data[invocation].f4 = subgroupPartitionedInclusiveMulNV(data[3].f4, ballot);
data[invocation].i4.x = subgroupPartitionedInclusiveMulNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedInclusiveMulNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedInclusiveMulNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedInclusiveMulNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedInclusiveMulNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedInclusiveMulNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedInclusiveMulNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedInclusiveMulNV(data[3].u4, ballot);
data[invocation].d4.x = subgroupPartitionedInclusiveMulNV(data[0].d4.x, ballot);
data[invocation].d4.xy = subgroupPartitionedInclusiveMulNV(data[1].d4.xy, ballot);
data[invocation].d4.xyz = subgroupPartitionedInclusiveMulNV(data[2].d4.xyz, ballot);
data[invocation].d4 = subgroupPartitionedInclusiveMulNV(data[3].d4, ballot);
data[invocation].f4.x = subgroupPartitionedInclusiveMinNV(data[0].f4.x, ballot);
data[invocation].f4.xy = subgroupPartitionedInclusiveMinNV(data[1].f4.xy, ballot);
data[invocation].f4.xyz = subgroupPartitionedInclusiveMinNV(data[2].f4.xyz, ballot);
data[invocation].f4 = subgroupPartitionedInclusiveMinNV(data[3].f4, ballot);
data[invocation].i4.x = subgroupPartitionedInclusiveMinNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedInclusiveMinNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedInclusiveMinNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedInclusiveMinNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedInclusiveMinNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedInclusiveMinNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedInclusiveMinNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedInclusiveMinNV(data[3].u4, ballot);
data[invocation].d4.x = subgroupPartitionedInclusiveMinNV(data[0].d4.x, ballot);
data[invocation].d4.xy = subgroupPartitionedInclusiveMinNV(data[1].d4.xy, ballot);
data[invocation].d4.xyz = subgroupPartitionedInclusiveMinNV(data[2].d4.xyz, ballot);
data[invocation].d4 = subgroupPartitionedInclusiveMinNV(data[3].d4, ballot);
data[invocation].f4.x = subgroupPartitionedInclusiveMaxNV(data[0].f4.x, ballot);
data[invocation].f4.xy = subgroupPartitionedInclusiveMaxNV(data[1].f4.xy, ballot);
data[invocation].f4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].f4.xyz, ballot);
data[invocation].f4 = subgroupPartitionedInclusiveMaxNV(data[3].f4, ballot);
data[invocation].i4.x = subgroupPartitionedInclusiveMaxNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedInclusiveMaxNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedInclusiveMaxNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedInclusiveMaxNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedInclusiveMaxNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedInclusiveMaxNV(data[3].u4, ballot);
data[invocation].d4.x = subgroupPartitionedInclusiveMaxNV(data[0].d4.x, ballot);
data[invocation].d4.xy = subgroupPartitionedInclusiveMaxNV(data[1].d4.xy, ballot);
data[invocation].d4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].d4.xyz, ballot);
data[invocation].d4 = subgroupPartitionedInclusiveMaxNV(data[3].d4, ballot);
data[invocation].i4.x = subgroupPartitionedInclusiveAndNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedInclusiveAndNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedInclusiveAndNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedInclusiveAndNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedInclusiveAndNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedInclusiveAndNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedInclusiveAndNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedInclusiveAndNV(data[3].u4, ballot);
data[invocation].i4.x = int(subgroupPartitionedInclusiveAndNV(data[0].i4.x < 0, ballot));
data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
data[invocation].i4 = ivec4(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
data[invocation].i4.x = subgroupPartitionedInclusiveOrNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedInclusiveOrNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedInclusiveOrNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedInclusiveOrNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedInclusiveOrNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedInclusiveOrNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedInclusiveOrNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedInclusiveOrNV(data[3].u4, ballot);
data[invocation].i4.x = int(subgroupPartitionedInclusiveOrNV(data[0].i4.x < 0, ballot));
data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
data[invocation].i4 = ivec4(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
data[invocation].i4.x = subgroupPartitionedInclusiveXorNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedInclusiveXorNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedInclusiveXorNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedInclusiveXorNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedInclusiveXorNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedInclusiveXorNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedInclusiveXorNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedInclusiveXorNV(data[3].u4, ballot);
data[invocation].i4.x = int(subgroupPartitionedInclusiveXorNV(data[0].i4.x < 0, ballot));
data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
data[invocation].i4 = ivec4(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
data[invocation].f4.x = subgroupPartitionedExclusiveAddNV(data[0].f4.x, ballot);
data[invocation].f4.xy = subgroupPartitionedExclusiveAddNV(data[1].f4.xy, ballot);
data[invocation].f4.xyz = subgroupPartitionedExclusiveAddNV(data[2].f4.xyz, ballot);
data[invocation].f4 = subgroupPartitionedExclusiveAddNV(data[3].f4, ballot);
data[invocation].i4.x = subgroupPartitionedExclusiveAddNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedExclusiveAddNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedExclusiveAddNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedExclusiveAddNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedExclusiveAddNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedExclusiveAddNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedExclusiveAddNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedExclusiveAddNV(data[3].u4, ballot);
data[invocation].d4.x = subgroupPartitionedExclusiveAddNV(data[0].d4.x, ballot);
data[invocation].d4.xy = subgroupPartitionedExclusiveAddNV(data[1].d4.xy, ballot);
data[invocation].d4.xyz = subgroupPartitionedExclusiveAddNV(data[2].d4.xyz, ballot);
data[invocation].d4 = subgroupPartitionedExclusiveAddNV(data[3].d4, ballot);
data[invocation].f4.x = subgroupPartitionedExclusiveMulNV(data[0].f4.x, ballot);
data[invocation].f4.xy = subgroupPartitionedExclusiveMulNV(data[1].f4.xy, ballot);
data[invocation].f4.xyz = subgroupPartitionedExclusiveMulNV(data[2].f4.xyz, ballot);
data[invocation].f4 = subgroupPartitionedExclusiveMulNV(data[3].f4, ballot);
data[invocation].i4.x = subgroupPartitionedExclusiveMulNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedExclusiveMulNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedExclusiveMulNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedExclusiveMulNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedExclusiveMulNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedExclusiveMulNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedExclusiveMulNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedExclusiveMulNV(data[3].u4, ballot);
data[invocation].d4.x = subgroupPartitionedExclusiveMulNV(data[0].d4.x, ballot);
data[invocation].d4.xy = subgroupPartitionedExclusiveMulNV(data[1].d4.xy, ballot);
data[invocation].d4.xyz = subgroupPartitionedExclusiveMulNV(data[2].d4.xyz, ballot);
data[invocation].d4 = subgroupPartitionedExclusiveMulNV(data[3].d4, ballot);
data[invocation].f4.x = subgroupPartitionedExclusiveMinNV(data[0].f4.x, ballot);
data[invocation].f4.xy = subgroupPartitionedExclusiveMinNV(data[1].f4.xy, ballot);
data[invocation].f4.xyz = subgroupPartitionedExclusiveMinNV(data[2].f4.xyz, ballot);
data[invocation].f4 = subgroupPartitionedExclusiveMinNV(data[3].f4, ballot);
data[invocation].i4.x = subgroupPartitionedExclusiveMinNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedExclusiveMinNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedExclusiveMinNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedExclusiveMinNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedExclusiveMinNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedExclusiveMinNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedExclusiveMinNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedExclusiveMinNV(data[3].u4, ballot);
data[invocation].d4.x = subgroupPartitionedExclusiveMinNV(data[0].d4.x, ballot);
data[invocation].d4.xy = subgroupPartitionedExclusiveMinNV(data[1].d4.xy, ballot);
data[invocation].d4.xyz = subgroupPartitionedExclusiveMinNV(data[2].d4.xyz, ballot);
data[invocation].d4 = subgroupPartitionedExclusiveMinNV(data[3].d4, ballot);
data[invocation].f4.x = subgroupPartitionedExclusiveMaxNV(data[0].f4.x, ballot);
data[invocation].f4.xy = subgroupPartitionedExclusiveMaxNV(data[1].f4.xy, ballot);
data[invocation].f4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].f4.xyz, ballot);
data[invocation].f4 = subgroupPartitionedExclusiveMaxNV(data[3].f4, ballot);
data[invocation].i4.x = subgroupPartitionedExclusiveMaxNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedExclusiveMaxNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedExclusiveMaxNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedExclusiveMaxNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedExclusiveMaxNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedExclusiveMaxNV(data[3].u4, ballot);
data[invocation].d4.x = subgroupPartitionedExclusiveMaxNV(data[0].d4.x, ballot);
data[invocation].d4.xy = subgroupPartitionedExclusiveMaxNV(data[1].d4.xy, ballot);
data[invocation].d4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].d4.xyz, ballot);
data[invocation].d4 = subgroupPartitionedExclusiveMaxNV(data[3].d4, ballot);
data[invocation].i4.x = subgroupPartitionedExclusiveAndNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedExclusiveAndNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedExclusiveAndNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedExclusiveAndNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedExclusiveAndNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedExclusiveAndNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedExclusiveAndNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedExclusiveAndNV(data[3].u4, ballot);
data[invocation].i4.x = int(subgroupPartitionedExclusiveAndNV(data[0].i4.x < 0, ballot));
data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
data[invocation].i4 = ivec4(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
data[invocation].i4.x = subgroupPartitionedExclusiveOrNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedExclusiveOrNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedExclusiveOrNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedExclusiveOrNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedExclusiveOrNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedExclusiveOrNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedExclusiveOrNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedExclusiveOrNV(data[3].u4, ballot);
data[invocation].i4.x = int(subgroupPartitionedExclusiveOrNV(data[0].i4.x < 0, ballot));
data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
data[invocation].i4 = ivec4(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
data[invocation].i4.x = subgroupPartitionedExclusiveXorNV(data[0].i4.x, ballot);
data[invocation].i4.xy = subgroupPartitionedExclusiveXorNV(data[1].i4.xy, ballot);
data[invocation].i4.xyz = subgroupPartitionedExclusiveXorNV(data[2].i4.xyz, ballot);
data[invocation].i4 = subgroupPartitionedExclusiveXorNV(data[3].i4, ballot);
data[invocation].u4.x = subgroupPartitionedExclusiveXorNV(data[0].u4.x, ballot);
data[invocation].u4.xy = subgroupPartitionedExclusiveXorNV(data[1].u4.xy, ballot);
data[invocation].u4.xyz = subgroupPartitionedExclusiveXorNV(data[2].u4.xyz, ballot);
data[invocation].u4 = subgroupPartitionedExclusiveXorNV(data[3].u4, ballot);
data[invocation].i4.x = int(subgroupPartitionedExclusiveXorNV(data[0].i4.x < 0, ballot));
data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
data[invocation].i4 = ivec4(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
}

View File

@ -0,0 +1,118 @@
#version 450
#extension GL_KHR_shader_subgroup_quad: enable
layout (local_size_x = 8) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
dvec4 d4;
} data[4];
void main()
{
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
data[invocation].f4.x = subgroupQuadBroadcast(data[0].f4.x, 1);
data[invocation].f4.xy = subgroupQuadBroadcast(data[1].f4.xy, 1);
data[invocation].f4.xyz = subgroupQuadBroadcast(data[2].f4.xyz, 1);
data[invocation].f4 = subgroupQuadBroadcast(data[3].f4, 1);
data[invocation].i4.x = subgroupQuadBroadcast(data[0].i4.x, 1);
data[invocation].i4.xy = subgroupQuadBroadcast(data[1].i4.xy, 1);
data[invocation].i4.xyz = subgroupQuadBroadcast(data[2].i4.xyz, 1);
data[invocation].i4 = subgroupQuadBroadcast(data[3].i4, 1);
data[invocation].u4.x = subgroupQuadBroadcast(data[0].u4.x, 1);
data[invocation].u4.xy = subgroupQuadBroadcast(data[1].u4.xy, 1);
data[invocation].u4.xyz = subgroupQuadBroadcast(data[2].u4.xyz, 1);
data[invocation].u4 = subgroupQuadBroadcast(data[3].u4, 1);
data[invocation].d4.x = subgroupQuadBroadcast(data[0].d4.x, 1);
data[invocation].d4.xy = subgroupQuadBroadcast(data[1].d4.xy, 1);
data[invocation].d4.xyz = subgroupQuadBroadcast(data[2].d4.xyz, 1);
data[invocation].d4 = subgroupQuadBroadcast(data[3].d4, 1);
data[invocation].i4.x = int(subgroupQuadBroadcast(data[0].i4.x < 0, 1));
data[invocation].i4.xy = ivec2(subgroupQuadBroadcast(lessThan(data[1].i4.xy, ivec2(0)), 1));
data[invocation].i4.xyz = ivec3(subgroupQuadBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), 1));
data[invocation].i4 = ivec4(subgroupQuadBroadcast(lessThan(data[1].i4, ivec4(0)), 1));
data[invocation].f4.x = subgroupQuadSwapHorizontal(data[0].f4.x);
data[invocation].f4.xy = subgroupQuadSwapHorizontal(data[1].f4.xy);
data[invocation].f4.xyz = subgroupQuadSwapHorizontal(data[2].f4.xyz);
data[invocation].f4 = subgroupQuadSwapHorizontal(data[3].f4);
data[invocation].i4.x = subgroupQuadSwapHorizontal(data[0].i4.x);
data[invocation].i4.xy = subgroupQuadSwapHorizontal(data[1].i4.xy);
data[invocation].i4.xyz = subgroupQuadSwapHorizontal(data[2].i4.xyz);
data[invocation].i4 = subgroupQuadSwapHorizontal(data[3].i4);
data[invocation].u4.x = subgroupQuadSwapHorizontal(data[0].u4.x);
data[invocation].u4.xy = subgroupQuadSwapHorizontal(data[1].u4.xy);
data[invocation].u4.xyz = subgroupQuadSwapHorizontal(data[2].u4.xyz);
data[invocation].u4 = subgroupQuadSwapHorizontal(data[3].u4);
data[invocation].d4.x = subgroupQuadSwapHorizontal(data[0].d4.x);
data[invocation].d4.xy = subgroupQuadSwapHorizontal(data[1].d4.xy);
data[invocation].d4.xyz = subgroupQuadSwapHorizontal(data[2].d4.xyz);
data[invocation].d4 = subgroupQuadSwapHorizontal(data[3].d4);
data[invocation].i4.x = int(subgroupQuadSwapHorizontal(data[0].i4.x < 0));
data[invocation].i4.xy = ivec2(subgroupQuadSwapHorizontal(lessThan(data[1].i4.xy, ivec2(0))));
data[invocation].i4.xyz = ivec3(subgroupQuadSwapHorizontal(lessThan(data[1].i4.xyz, ivec3(0))));
data[invocation].i4 = ivec4(subgroupQuadSwapHorizontal(lessThan(data[1].i4, ivec4(0))));
data[invocation].f4.x = subgroupQuadSwapVertical(data[0].f4.x);
data[invocation].f4.xy = subgroupQuadSwapVertical(data[1].f4.xy);
data[invocation].f4.xyz = subgroupQuadSwapVertical(data[2].f4.xyz);
data[invocation].f4 = subgroupQuadSwapVertical(data[3].f4);
data[invocation].i4.x = subgroupQuadSwapVertical(data[0].i4.x);
data[invocation].i4.xy = subgroupQuadSwapVertical(data[1].i4.xy);
data[invocation].i4.xyz = subgroupQuadSwapVertical(data[2].i4.xyz);
data[invocation].i4 = subgroupQuadSwapVertical(data[3].i4);
data[invocation].u4.x = subgroupQuadSwapVertical(data[0].u4.x);
data[invocation].u4.xy = subgroupQuadSwapVertical(data[1].u4.xy);
data[invocation].u4.xyz = subgroupQuadSwapVertical(data[2].u4.xyz);
data[invocation].u4 = subgroupQuadSwapVertical(data[3].u4);
data[invocation].d4.x = subgroupQuadSwapVertical(data[0].d4.x);
data[invocation].d4.xy = subgroupQuadSwapVertical(data[1].d4.xy);
data[invocation].d4.xyz = subgroupQuadSwapVertical(data[2].d4.xyz);
data[invocation].d4 = subgroupQuadSwapVertical(data[3].d4);
data[invocation].i4.x = int(subgroupQuadSwapVertical(data[0].i4.x < 0));
data[invocation].i4.xy = ivec2(subgroupQuadSwapVertical(lessThan(data[1].i4.xy, ivec2(0))));
data[invocation].i4.xyz = ivec3(subgroupQuadSwapVertical(lessThan(data[1].i4.xyz, ivec3(0))));
data[invocation].i4 = ivec4(subgroupQuadSwapVertical(lessThan(data[1].i4, ivec4(0))));
data[invocation].f4.x = subgroupQuadSwapDiagonal(data[0].f4.x);
data[invocation].f4.xy = subgroupQuadSwapDiagonal(data[1].f4.xy);
data[invocation].f4.xyz = subgroupQuadSwapDiagonal(data[2].f4.xyz);
data[invocation].f4 = subgroupQuadSwapDiagonal(data[3].f4);
data[invocation].i4.x = subgroupQuadSwapDiagonal(data[0].i4.x);
data[invocation].i4.xy = subgroupQuadSwapDiagonal(data[1].i4.xy);
data[invocation].i4.xyz = subgroupQuadSwapDiagonal(data[2].i4.xyz);
data[invocation].i4 = subgroupQuadSwapDiagonal(data[3].i4);
data[invocation].u4.x = subgroupQuadSwapDiagonal(data[0].u4.x);
data[invocation].u4.xy = subgroupQuadSwapDiagonal(data[1].u4.xy);
data[invocation].u4.xyz = subgroupQuadSwapDiagonal(data[2].u4.xyz);
data[invocation].u4 = subgroupQuadSwapDiagonal(data[3].u4);
data[invocation].d4.x = subgroupQuadSwapDiagonal(data[0].d4.x);
data[invocation].d4.xy = subgroupQuadSwapDiagonal(data[1].d4.xy);
data[invocation].d4.xyz = subgroupQuadSwapDiagonal(data[2].d4.xyz);
data[invocation].d4 = subgroupQuadSwapDiagonal(data[3].d4);
data[invocation].i4.x = int(subgroupQuadSwapDiagonal(data[0].i4.x < 0));
data[invocation].i4.xy = ivec2(subgroupQuadSwapDiagonal(lessThan(data[1].i4.xy, ivec2(0))));
data[invocation].i4.xyz = ivec3(subgroupQuadSwapDiagonal(lessThan(data[1].i4.xyz, ivec3(0))));
data[invocation].i4 = ivec4(subgroupQuadSwapDiagonal(lessThan(data[1].i4, ivec4(0))));
}

View File

@ -0,0 +1,68 @@
#version 450
#extension GL_KHR_shader_subgroup_shuffle: enable
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
dvec4 d4;
} data[4];
void main()
{
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
data[invocation].f4.x = subgroupShuffle(data[0].f4.x, invocation);
data[invocation].f4.xy = subgroupShuffle(data[1].f4.xy, invocation);
data[invocation].f4.xyz = subgroupShuffle(data[2].f4.xyz, invocation);
data[invocation].f4 = subgroupShuffle(data[3].f4, invocation);
data[invocation].i4.x = subgroupShuffle(data[0].i4.x, invocation);
data[invocation].i4.xy = subgroupShuffle(data[1].i4.xy, invocation);
data[invocation].i4.xyz = subgroupShuffle(data[2].i4.xyz, invocation);
data[invocation].i4 = subgroupShuffle(data[3].i4, invocation);
data[invocation].u4.x = subgroupShuffle(data[0].u4.x, invocation);
data[invocation].u4.xy = subgroupShuffle(data[1].u4.xy, invocation);
data[invocation].u4.xyz = subgroupShuffle(data[2].u4.xyz, invocation);
data[invocation].u4 = subgroupShuffle(data[3].u4, invocation);
data[invocation].d4.x = subgroupShuffle(data[0].d4.x, invocation);
data[invocation].d4.xy = subgroupShuffle(data[1].d4.xy, invocation);
data[invocation].d4.xyz = subgroupShuffle(data[2].d4.xyz, invocation);
data[invocation].d4 = subgroupShuffle(data[3].d4, invocation);
data[invocation].i4.x = int(subgroupShuffle(data[0].i4.x < 0, invocation));
data[invocation].i4.xy = ivec2(subgroupShuffle(lessThan(data[1].i4.xy, ivec2(0)), invocation));
data[invocation].i4.xyz = ivec3(subgroupShuffle(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
data[invocation].i4 = ivec4(subgroupShuffle(lessThan(data[1].i4, ivec4(0)), invocation));
data[invocation].f4.x = subgroupShuffleXor(data[0].f4.x, invocation);
data[invocation].f4.xy = subgroupShuffleXor(data[1].f4.xy, invocation);
data[invocation].f4.xyz = subgroupShuffleXor(data[2].f4.xyz, invocation);
data[invocation].f4 = subgroupShuffleXor(data[3].f4, invocation);
data[invocation].i4.x = subgroupShuffleXor(data[0].i4.x, invocation);
data[invocation].i4.xy = subgroupShuffleXor(data[1].i4.xy, invocation);
data[invocation].i4.xyz = subgroupShuffleXor(data[2].i4.xyz, invocation);
data[invocation].i4 = subgroupShuffleXor(data[3].i4, invocation);
data[invocation].u4.x = subgroupShuffleXor(data[0].u4.x, invocation);
data[invocation].u4.xy = subgroupShuffleXor(data[1].u4.xy, invocation);
data[invocation].u4.xyz = subgroupShuffleXor(data[2].u4.xyz, invocation);
data[invocation].u4 = subgroupShuffleXor(data[3].u4, invocation);
data[invocation].d4.x = subgroupShuffleXor(data[0].d4.x, invocation);
data[invocation].d4.xy = subgroupShuffleXor(data[1].d4.xy, invocation);
data[invocation].d4.xyz = subgroupShuffleXor(data[2].d4.xyz, invocation);
data[invocation].d4 = subgroupShuffleXor(data[3].d4, invocation);
data[invocation].i4.x = int(subgroupShuffleXor(data[0].i4.x < 0, invocation));
data[invocation].i4.xy = ivec2(subgroupShuffleXor(lessThan(data[1].i4.xy, ivec2(0)), invocation));
data[invocation].i4.xyz = ivec3(subgroupShuffleXor(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
data[invocation].i4 = ivec4(subgroupShuffleXor(lessThan(data[1].i4, ivec4(0)), invocation));
}

View File

@ -0,0 +1,68 @@
#version 450
#extension GL_KHR_shader_subgroup_shuffle_relative: enable
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
dvec4 d4;
} data[4];
void main()
{
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
data[invocation].f4.x = subgroupShuffleUp(data[0].f4.x, invocation);
data[invocation].f4.xy = subgroupShuffleUp(data[1].f4.xy, invocation);
data[invocation].f4.xyz = subgroupShuffleUp(data[2].f4.xyz, invocation);
data[invocation].f4 = subgroupShuffleUp(data[3].f4, invocation);
data[invocation].i4.x = subgroupShuffleUp(data[0].i4.x, invocation);
data[invocation].i4.xy = subgroupShuffleUp(data[1].i4.xy, invocation);
data[invocation].i4.xyz = subgroupShuffleUp(data[2].i4.xyz, invocation);
data[invocation].i4 = subgroupShuffleUp(data[3].i4, invocation);
data[invocation].u4.x = subgroupShuffleUp(data[0].u4.x, invocation);
data[invocation].u4.xy = subgroupShuffleUp(data[1].u4.xy, invocation);
data[invocation].u4.xyz = subgroupShuffleUp(data[2].u4.xyz, invocation);
data[invocation].u4 = subgroupShuffleUp(data[3].u4, invocation);
data[invocation].d4.x = subgroupShuffleUp(data[0].d4.x, invocation);
data[invocation].d4.xy = subgroupShuffleUp(data[1].d4.xy, invocation);
data[invocation].d4.xyz = subgroupShuffleUp(data[2].d4.xyz, invocation);
data[invocation].d4 = subgroupShuffleUp(data[3].d4, invocation);
data[invocation].i4.x = int(subgroupShuffleUp(data[0].i4.x < 0, invocation));
data[invocation].i4.xy = ivec2(subgroupShuffleUp(lessThan(data[1].i4.xy, ivec2(0)), invocation));
data[invocation].i4.xyz = ivec3(subgroupShuffleUp(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
data[invocation].i4 = ivec4(subgroupShuffleUp(lessThan(data[1].i4, ivec4(0)), invocation));
data[invocation].f4.x = subgroupShuffleDown(data[0].f4.x, invocation);
data[invocation].f4.xy = subgroupShuffleDown(data[1].f4.xy, invocation);
data[invocation].f4.xyz = subgroupShuffleDown(data[2].f4.xyz, invocation);
data[invocation].f4 = subgroupShuffleDown(data[3].f4, invocation);
data[invocation].i4.x = subgroupShuffleDown(data[0].i4.x, invocation);
data[invocation].i4.xy = subgroupShuffleDown(data[1].i4.xy, invocation);
data[invocation].i4.xyz = subgroupShuffleDown(data[2].i4.xyz, invocation);
data[invocation].i4 = subgroupShuffleDown(data[3].i4, invocation);
data[invocation].u4.x = subgroupShuffleDown(data[0].u4.x, invocation);
data[invocation].u4.xy = subgroupShuffleDown(data[1].u4.xy, invocation);
data[invocation].u4.xyz = subgroupShuffleDown(data[2].u4.xyz, invocation);
data[invocation].u4 = subgroupShuffleDown(data[3].u4, invocation);
data[invocation].d4.x = subgroupShuffleDown(data[0].d4.x, invocation);
data[invocation].d4.xy = subgroupShuffleDown(data[1].d4.xy, invocation);
data[invocation].d4.xyz = subgroupShuffleDown(data[2].d4.xyz, invocation);
data[invocation].d4 = subgroupShuffleDown(data[3].d4, invocation);
data[invocation].i4.x = int(subgroupShuffleDown(data[0].i4.x < 0, invocation));
data[invocation].i4.xy = ivec2(subgroupShuffleDown(lessThan(data[1].i4.xy, ivec2(0)), invocation));
data[invocation].i4.xyz = ivec3(subgroupShuffleDown(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
data[invocation].i4 = ivec4(subgroupShuffleDown(lessThan(data[1].i4, ivec4(0)), invocation));
}

View File

@ -0,0 +1,49 @@
#version 450
#extension GL_KHR_shader_subgroup_vote: enable
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
dvec4 d4;
int r;
} data[4];
void main()
{
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
if (subgroupAll(data[invocation].r < 0))
{
data[invocation].r = int(subgroupAllEqual(data[0].f4.x));
data[invocation].r = int(subgroupAllEqual(data[1].f4.xy));
data[invocation].r = int(subgroupAllEqual(data[2].f4.xyz));
data[invocation].r = int(subgroupAllEqual(data[3].f4));
data[invocation].r = int(subgroupAllEqual(data[0].i4.x));
data[invocation].r = int(subgroupAllEqual(data[1].i4.xy));
data[invocation].r = int(subgroupAllEqual(data[2].i4.xyz));
data[invocation].r = int(subgroupAllEqual(data[3].i4));
data[invocation].r = int(subgroupAllEqual(data[0].u4.x));
data[invocation].r = int(subgroupAllEqual(data[1].u4.xy));
data[invocation].r = int(subgroupAllEqual(data[2].u4.xyz));
data[invocation].r = int(subgroupAllEqual(data[3].u4));
}
else if (subgroupAny(data[invocation].r < 0))
{
data[invocation].r = int(subgroupAllEqual(data[0].d4.x));
data[invocation].r = int(subgroupAllEqual(data[1].d4.xy));
data[invocation].r = int(subgroupAllEqual(data[2].d4.xyz));
data[invocation].r = int(subgroupAllEqual(data[3].d4));
data[invocation].r = int(int(subgroupAllEqual(data[0].i4.x < 0)));
data[invocation].r = int(ivec2(subgroupAllEqual(lessThan(data[1].i4.xy, ivec2(0)))));
data[invocation].r = int(ivec3(subgroupAllEqual(lessThan(data[1].i4.xyz, ivec3(0)))));
data[invocation].r = int(ivec4(subgroupAllEqual(lessThan(data[1].i4, ivec4(0)))));
}
}

View File

@ -0,0 +1,7 @@
#version 320 es
#extension GL_KHR_shader_subgroup_basic: enable
layout(location = 0) out uvec4 data;
void main (void)
{
data = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
}

View File

@ -0,0 +1,13 @@
#version 320 es
#extension GL_KHR_shader_subgroup_basic: enable
layout(points) in;
layout(points, max_vertices = 1) out;
layout(set = 0, binding = 0, std430) buffer Output
{
uvec4 result[];
};
void main (void)
{
result[gl_PrimitiveIDIn] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
}

View File

@ -0,0 +1,12 @@
#version 320 es
#extension GL_KHR_shader_subgroup_basic: enable
layout(vertices=1) out;
layout(set = 0, binding = 0, std430) buffer Output
{
uvec4 result[];
};
void main (void)
{
result[gl_PrimitiveID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
}

View File

@ -0,0 +1,12 @@
#version 320 es
#extension GL_KHR_shader_subgroup_basic: enable
layout(isolines) in;
layout(set = 0, binding = 0, std430) buffer Output
{
uvec4 result[];
};
void main (void)
{
result[gl_PrimitiveID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
}

View File

@ -0,0 +1,11 @@
#version 320 es
#extension GL_KHR_shader_subgroup_basic: enable
layout(set = 0, binding = 0, std430) buffer Output
{
uvec4 result[];
};
void main (void)
{
result[gl_VertexID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
}

View File

@ -0,0 +1,332 @@
#version 320 es
#extension GL_KHR_shader_subgroup_arithmetic: enable
layout (local_size_x = 8) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
} data[4];
void main()
{
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
data[0].f4.x = subgroupAdd(data[0].f4.x);
data[0].f4.xy = subgroupAdd(data[1].f4.xy);
data[0].f4.xyz = subgroupAdd(data[2].f4.xyz);
data[0].f4 = subgroupAdd(data[3].f4);
data[1].i4.x = subgroupAdd(data[0].i4.x);
data[1].i4.xy = subgroupAdd(data[1].i4.xy);
data[1].i4.xyz = subgroupAdd(data[2].i4.xyz);
data[1].i4 = subgroupAdd(data[3].i4);
data[2].u4.x = subgroupAdd(data[0].u4.x);
data[2].u4.xy = subgroupAdd(data[1].u4.xy);
data[2].u4.xyz = subgroupAdd(data[2].u4.xyz);
data[2].u4 = subgroupAdd(data[3].u4);
data[3].f4.x = subgroupMul(data[0].f4.x);
data[3].f4.xy = subgroupMul(data[1].f4.xy);
data[3].f4.xyz = subgroupMul(data[2].f4.xyz);
data[3].f4 = subgroupMul(data[3].f4);
data[0].i4.x = subgroupMul(data[0].i4.x);
data[0].i4.xy = subgroupMul(data[1].i4.xy);
data[0].i4.xyz = subgroupMul(data[2].i4.xyz);
data[0].i4 = subgroupMul(data[3].i4);
data[1].u4.x = subgroupMul(data[0].u4.x);
data[1].u4.xy = subgroupMul(data[1].u4.xy);
data[1].u4.xyz = subgroupMul(data[2].u4.xyz);
data[1].u4 = subgroupMul(data[3].u4);
data[2].f4.x = subgroupMin(data[0].f4.x);
data[2].f4.xy = subgroupMin(data[1].f4.xy);
data[2].f4.xyz = subgroupMin(data[2].f4.xyz);
data[2].f4 = subgroupMin(data[3].f4);
data[3].i4.x = subgroupMin(data[0].i4.x);
data[3].i4.xy = subgroupMin(data[1].i4.xy);
data[3].i4.xyz = subgroupMin(data[2].i4.xyz);
data[3].i4 = subgroupMin(data[3].i4);
data[0].u4.x = subgroupMin(data[0].u4.x);
data[0].u4.xy = subgroupMin(data[1].u4.xy);
data[0].u4.xyz = subgroupMin(data[2].u4.xyz);
data[0].u4 = subgroupMin(data[3].u4);
data[1].f4.x = subgroupMax(data[0].f4.x);
data[1].f4.xy = subgroupMax(data[1].f4.xy);
data[1].f4.xyz = subgroupMax(data[2].f4.xyz);
data[1].f4 = subgroupMax(data[3].f4);
data[2].i4.x = subgroupMax(data[0].i4.x);
data[2].i4.xy = subgroupMax(data[1].i4.xy);
data[2].i4.xyz = subgroupMax(data[2].i4.xyz);
data[2].i4 = subgroupMax(data[3].i4);
data[3].u4.x = subgroupMax(data[0].u4.x);
data[3].u4.xy = subgroupMax(data[1].u4.xy);
data[3].u4.xyz = subgroupMax(data[2].u4.xyz);
data[3].u4 = subgroupMax(data[3].u4);
data[0].i4.x = subgroupAnd(data[0].i4.x);
data[0].i4.xy = subgroupAnd(data[1].i4.xy);
data[0].i4.xyz = subgroupAnd(data[2].i4.xyz);
data[0].i4 = subgroupAnd(data[3].i4);
data[1].u4.x = subgroupAnd(data[0].u4.x);
data[1].u4.xy = subgroupAnd(data[1].u4.xy);
data[1].u4.xyz = subgroupAnd(data[2].u4.xyz);
data[1].u4 = subgroupAnd(data[3].u4);
data[2].i4.x = int(subgroupAnd(data[0].i4.x < 0));
data[2].i4.xy = ivec2(subgroupAnd(lessThan(data[1].i4.xy, ivec2(0))));
data[2].i4.xyz = ivec3(subgroupAnd(lessThan(data[1].i4.xyz, ivec3(0))));
data[2].i4 = ivec4(subgroupAnd(lessThan(data[1].i4, ivec4(0))));
data[3].i4.x = subgroupOr(data[0].i4.x);
data[3].i4.xy = subgroupOr(data[1].i4.xy);
data[3].i4.xyz = subgroupOr(data[2].i4.xyz);
data[3].i4 = subgroupOr(data[3].i4);
data[0].u4.x = subgroupOr(data[0].u4.x);
data[0].u4.xy = subgroupOr(data[1].u4.xy);
data[0].u4.xyz = subgroupOr(data[2].u4.xyz);
data[0].u4 = subgroupOr(data[3].u4);
data[1].i4.x = int(subgroupOr(data[0].i4.x < 0));
data[1].i4.xy = ivec2(subgroupOr(lessThan(data[1].i4.xy, ivec2(0))));
data[1].i4.xyz = ivec3(subgroupOr(lessThan(data[1].i4.xyz, ivec3(0))));
data[1].i4 = ivec4(subgroupOr(lessThan(data[1].i4, ivec4(0))));
data[2].i4.x = subgroupXor(data[0].i4.x);
data[2].i4.xy = subgroupXor(data[1].i4.xy);
data[2].i4.xyz = subgroupXor(data[2].i4.xyz);
data[2].i4 = subgroupXor(data[3].i4);
data[3].u4.x = subgroupXor(data[0].u4.x);
data[3].u4.xy = subgroupXor(data[1].u4.xy);
data[3].u4.xyz = subgroupXor(data[2].u4.xyz);
data[3].u4 = subgroupXor(data[3].u4);
data[0].i4.x = int(subgroupXor(data[0].i4.x < 0));
data[0].i4.xy = ivec2(subgroupXor(lessThan(data[1].i4.xy, ivec2(0))));
data[0].i4.xyz = ivec3(subgroupXor(lessThan(data[1].i4.xyz, ivec3(0))));
data[0].i4 = ivec4(subgroupXor(lessThan(data[1].i4, ivec4(0))));
data[1].f4.x = subgroupInclusiveAdd(data[0].f4.x);
data[1].f4.xy = subgroupInclusiveAdd(data[1].f4.xy);
data[1].f4.xyz = subgroupInclusiveAdd(data[2].f4.xyz);
data[1].f4 = subgroupInclusiveAdd(data[3].f4);
data[2].i4.x = subgroupInclusiveAdd(data[0].i4.x);
data[2].i4.xy = subgroupInclusiveAdd(data[1].i4.xy);
data[2].i4.xyz = subgroupInclusiveAdd(data[2].i4.xyz);
data[2].i4 = subgroupInclusiveAdd(data[3].i4);
data[3].u4.x = subgroupInclusiveAdd(data[0].u4.x);
data[3].u4.xy = subgroupInclusiveAdd(data[1].u4.xy);
data[3].u4.xyz = subgroupInclusiveAdd(data[2].u4.xyz);
data[3].u4 = subgroupInclusiveAdd(data[3].u4);
data[0].f4.x = subgroupInclusiveMul(data[0].f4.x);
data[0].f4.xy = subgroupInclusiveMul(data[1].f4.xy);
data[0].f4.xyz = subgroupInclusiveMul(data[2].f4.xyz);
data[0].f4 = subgroupInclusiveMul(data[3].f4);
data[1].i4.x = subgroupInclusiveMul(data[0].i4.x);
data[1].i4.xy = subgroupInclusiveMul(data[1].i4.xy);
data[1].i4.xyz = subgroupInclusiveMul(data[2].i4.xyz);
data[1].i4 = subgroupInclusiveMul(data[3].i4);
data[2].u4.x = subgroupInclusiveMul(data[0].u4.x);
data[2].u4.xy = subgroupInclusiveMul(data[1].u4.xy);
data[2].u4.xyz = subgroupInclusiveMul(data[2].u4.xyz);
data[2].u4 = subgroupInclusiveMul(data[3].u4);
data[3].f4.x = subgroupInclusiveMin(data[0].f4.x);
data[3].f4.xy = subgroupInclusiveMin(data[1].f4.xy);
data[3].f4.xyz = subgroupInclusiveMin(data[2].f4.xyz);
data[3].f4 = subgroupInclusiveMin(data[3].f4);
data[0].i4.x = subgroupInclusiveMin(data[0].i4.x);
data[0].i4.xy = subgroupInclusiveMin(data[1].i4.xy);
data[0].i4.xyz = subgroupInclusiveMin(data[2].i4.xyz);
data[0].i4 = subgroupInclusiveMin(data[3].i4);
data[1].u4.x = subgroupInclusiveMin(data[0].u4.x);
data[1].u4.xy = subgroupInclusiveMin(data[1].u4.xy);
data[1].u4.xyz = subgroupInclusiveMin(data[2].u4.xyz);
data[1].u4 = subgroupInclusiveMin(data[3].u4);
data[2].f4.x = subgroupInclusiveMax(data[0].f4.x);
data[2].f4.xy = subgroupInclusiveMax(data[1].f4.xy);
data[2].f4.xyz = subgroupInclusiveMax(data[2].f4.xyz);
data[2].f4 = subgroupInclusiveMax(data[3].f4);
data[3].i4.x = subgroupInclusiveMax(data[0].i4.x);
data[3].i4.xy = subgroupInclusiveMax(data[1].i4.xy);
data[3].i4.xyz = subgroupInclusiveMax(data[2].i4.xyz);
data[3].i4 = subgroupInclusiveMax(data[3].i4);
data[0].u4.x = subgroupInclusiveMax(data[0].u4.x);
data[0].u4.xy = subgroupInclusiveMax(data[1].u4.xy);
data[0].u4.xyz = subgroupInclusiveMax(data[2].u4.xyz);
data[0].u4 = subgroupInclusiveMax(data[3].u4);
data[1].i4.x = subgroupInclusiveAnd(data[0].i4.x);
data[1].i4.xy = subgroupInclusiveAnd(data[1].i4.xy);
data[1].i4.xyz = subgroupInclusiveAnd(data[2].i4.xyz);
data[1].i4 = subgroupInclusiveAnd(data[3].i4);
data[2].u4.x = subgroupInclusiveAnd(data[0].u4.x);
data[2].u4.xy = subgroupInclusiveAnd(data[1].u4.xy);
data[2].u4.xyz = subgroupInclusiveAnd(data[2].u4.xyz);
data[2].u4 = subgroupInclusiveAnd(data[3].u4);
data[3].i4.x = int(subgroupInclusiveAnd(data[0].i4.x < 0));
data[3].i4.xy = ivec2(subgroupInclusiveAnd(lessThan(data[1].i4.xy, ivec2(0))));
data[3].i4.xyz = ivec3(subgroupInclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0))));
data[3].i4 = ivec4(subgroupInclusiveAnd(lessThan(data[1].i4, ivec4(0))));
data[0].i4.x = subgroupInclusiveOr(data[0].i4.x);
data[0].i4.xy = subgroupInclusiveOr(data[1].i4.xy);
data[0].i4.xyz = subgroupInclusiveOr(data[2].i4.xyz);
data[0].i4 = subgroupInclusiveOr(data[3].i4);
data[1].u4.x = subgroupInclusiveOr(data[0].u4.x);
data[1].u4.xy = subgroupInclusiveOr(data[1].u4.xy);
data[1].u4.xyz = subgroupInclusiveOr(data[2].u4.xyz);
data[1].u4 = subgroupInclusiveOr(data[3].u4);
data[2].i4.x = int(subgroupInclusiveOr(data[0].i4.x < 0));
data[2].i4.xy = ivec2(subgroupInclusiveOr(lessThan(data[1].i4.xy, ivec2(0))));
data[2].i4.xyz = ivec3(subgroupInclusiveOr(lessThan(data[1].i4.xyz, ivec3(0))));
data[2].i4 = ivec4(subgroupInclusiveOr(lessThan(data[1].i4, ivec4(0))));
data[3].i4.x = subgroupInclusiveXor(data[0].i4.x);
data[3].i4.xy = subgroupInclusiveXor(data[1].i4.xy);
data[3].i4.xyz = subgroupInclusiveXor(data[2].i4.xyz);
data[3].i4 = subgroupInclusiveXor(data[3].i4);
data[0].u4.x = subgroupInclusiveXor(data[0].u4.x);
data[0].u4.xy = subgroupInclusiveXor(data[1].u4.xy);
data[0].u4.xyz = subgroupInclusiveXor(data[2].u4.xyz);
data[0].u4 = subgroupInclusiveXor(data[3].u4);
data[1].i4.x = int(subgroupInclusiveXor(data[0].i4.x < 0));
data[1].i4.xy = ivec2(subgroupInclusiveXor(lessThan(data[1].i4.xy, ivec2(0))));
data[1].i4.xyz = ivec3(subgroupInclusiveXor(lessThan(data[1].i4.xyz, ivec3(0))));
data[1].i4 = ivec4(subgroupInclusiveXor(lessThan(data[1].i4, ivec4(0))));
data[2].f4.x = subgroupExclusiveAdd(data[0].f4.x);
data[2].f4.xy = subgroupExclusiveAdd(data[1].f4.xy);
data[2].f4.xyz = subgroupExclusiveAdd(data[2].f4.xyz);
data[2].f4 = subgroupExclusiveAdd(data[3].f4);
data[3].i4.x = subgroupExclusiveAdd(data[0].i4.x);
data[3].i4.xy = subgroupExclusiveAdd(data[1].i4.xy);
data[3].i4.xyz = subgroupExclusiveAdd(data[2].i4.xyz);
data[3].i4 = subgroupExclusiveAdd(data[3].i4);
data[0].u4.x = subgroupExclusiveAdd(data[0].u4.x);
data[0].u4.xy = subgroupExclusiveAdd(data[1].u4.xy);
data[0].u4.xyz = subgroupExclusiveAdd(data[2].u4.xyz);
data[0].u4 = subgroupExclusiveAdd(data[3].u4);
data[1].f4.x = subgroupExclusiveMul(data[0].f4.x);
data[1].f4.xy = subgroupExclusiveMul(data[1].f4.xy);
data[1].f4.xyz = subgroupExclusiveMul(data[2].f4.xyz);
data[1].f4 = subgroupExclusiveMul(data[3].f4);
data[2].i4.x = subgroupExclusiveMul(data[0].i4.x);
data[2].i4.xy = subgroupExclusiveMul(data[1].i4.xy);
data[2].i4.xyz = subgroupExclusiveMul(data[2].i4.xyz);
data[2].i4 = subgroupExclusiveMul(data[3].i4);
data[3].u4.x = subgroupExclusiveMul(data[0].u4.x);
data[3].u4.xy = subgroupExclusiveMul(data[1].u4.xy);
data[3].u4.xyz = subgroupExclusiveMul(data[2].u4.xyz);
data[3].u4 = subgroupExclusiveMul(data[3].u4);
data[0].f4.x = subgroupExclusiveMin(data[0].f4.x);
data[0].f4.xy = subgroupExclusiveMin(data[1].f4.xy);
data[0].f4.xyz = subgroupExclusiveMin(data[2].f4.xyz);
data[0].f4 = subgroupExclusiveMin(data[3].f4);
data[1].i4.x = subgroupExclusiveMin(data[0].i4.x);
data[1].i4.xy = subgroupExclusiveMin(data[1].i4.xy);
data[1].i4.xyz = subgroupExclusiveMin(data[2].i4.xyz);
data[1].i4 = subgroupExclusiveMin(data[3].i4);
data[2].u4.x = subgroupExclusiveMin(data[0].u4.x);
data[2].u4.xy = subgroupExclusiveMin(data[1].u4.xy);
data[2].u4.xyz = subgroupExclusiveMin(data[2].u4.xyz);
data[2].u4 = subgroupExclusiveMin(data[3].u4);
data[3].f4.x = subgroupExclusiveMax(data[0].f4.x);
data[3].f4.xy = subgroupExclusiveMax(data[1].f4.xy);
data[3].f4.xyz = subgroupExclusiveMax(data[2].f4.xyz);
data[3].f4 = subgroupExclusiveMax(data[3].f4);
data[0].i4.x = subgroupExclusiveMax(data[0].i4.x);
data[0].i4.xy = subgroupExclusiveMax(data[1].i4.xy);
data[0].i4.xyz = subgroupExclusiveMax(data[2].i4.xyz);
data[0].i4 = subgroupExclusiveMax(data[3].i4);
data[1].u4.x = subgroupExclusiveMax(data[0].u4.x);
data[1].u4.xy = subgroupExclusiveMax(data[1].u4.xy);
data[1].u4.xyz = subgroupExclusiveMax(data[2].u4.xyz);
data[1].u4 = subgroupExclusiveMax(data[3].u4);
data[2].i4.x = subgroupExclusiveAnd(data[0].i4.x);
data[2].i4.xy = subgroupExclusiveAnd(data[1].i4.xy);
data[2].i4.xyz = subgroupExclusiveAnd(data[2].i4.xyz);
data[2].i4 = subgroupExclusiveAnd(data[3].i4);
data[3].u4.x = subgroupExclusiveAnd(data[0].u4.x);
data[3].u4.xy = subgroupExclusiveAnd(data[1].u4.xy);
data[3].u4.xyz = subgroupExclusiveAnd(data[2].u4.xyz);
data[3].u4 = subgroupExclusiveAnd(data[3].u4);
data[0].i4.x = int(subgroupExclusiveAnd(data[0].i4.x < 0));
data[0].i4.xy = ivec2(subgroupExclusiveAnd(lessThan(data[1].i4.xy, ivec2(0))));
data[0].i4.xyz = ivec3(subgroupExclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0))));
data[0].i4 = ivec4(subgroupExclusiveAnd(lessThan(data[1].i4, ivec4(0))));
data[1].i4.x = subgroupExclusiveOr(data[0].i4.x);
data[1].i4.xy = subgroupExclusiveOr(data[1].i4.xy);
data[1].i4.xyz = subgroupExclusiveOr(data[2].i4.xyz);
data[1].i4 = subgroupExclusiveOr(data[3].i4);
data[2].u4.x = subgroupExclusiveOr(data[0].u4.x);
data[2].u4.xy = subgroupExclusiveOr(data[1].u4.xy);
data[2].u4.xyz = subgroupExclusiveOr(data[2].u4.xyz);
data[2].u4 = subgroupExclusiveOr(data[3].u4);
data[3].i4.x = int(subgroupExclusiveOr(data[0].i4.x < 0));
data[3].i4.xy = ivec2(subgroupExclusiveOr(lessThan(data[1].i4.xy, ivec2(0))));
data[3].i4.xyz = ivec3(subgroupExclusiveOr(lessThan(data[1].i4.xyz, ivec3(0))));
data[3].i4 = ivec4(subgroupExclusiveOr(lessThan(data[1].i4, ivec4(0))));
data[0].i4.x = subgroupExclusiveXor(data[0].i4.x);
data[0].i4.xy = subgroupExclusiveXor(data[1].i4.xy);
data[0].i4.xyz = subgroupExclusiveXor(data[2].i4.xyz);
data[0].i4 = subgroupExclusiveXor(data[3].i4);
data[1].u4.x = subgroupExclusiveXor(data[0].u4.x);
data[1].u4.xy = subgroupExclusiveXor(data[1].u4.xy);
data[1].u4.xyz = subgroupExclusiveXor(data[2].u4.xyz);
data[1].u4 = subgroupExclusiveXor(data[3].u4);
data[2].i4.x = int(subgroupExclusiveXor(data[0].i4.x < 0));
data[2].i4.xy = ivec2(subgroupExclusiveXor(lessThan(data[1].i4.xy, ivec2(0))));
data[2].i4.xyz = ivec3(subgroupExclusiveXor(lessThan(data[1].i4.xyz, ivec3(0))));
data[2].i4 = ivec4(subgroupExclusiveXor(lessThan(data[1].i4, ivec4(0))));
}

View File

@ -0,0 +1,75 @@
#version 320 es
#extension GL_KHR_shader_subgroup_ballot: enable
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
} data[4];
void main()
{
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
uvec4 relMask = gl_SubgroupEqMask +
gl_SubgroupGeMask +
gl_SubgroupGtMask +
gl_SubgroupLeMask +
gl_SubgroupLtMask;
uvec4 result = subgroupBallot(true);
data[0].u4.x = subgroupBallotBitCount(result);
data[0].u4.y = subgroupBallotBitExtract(result, 0u) ? 1u : 0u;
data[0].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result);
data[0].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result);
if ((relMask == result) && subgroupInverseBallot(data[0].u4))
{
data[1].f4.x = subgroupBroadcast(data[0].f4.x, 3u);
data[1].f4.xy = subgroupBroadcast(data[1].f4.xy, 3u);
data[1].f4.xyz = subgroupBroadcast(data[2].f4.xyz, 3u);
data[1].f4 = subgroupBroadcast(data[3].f4, 3u);
data[2].i4.x = subgroupBroadcast(data[0].i4.x, 2u);
data[2].i4.xy = subgroupBroadcast(data[1].i4.xy, 2u);
data[2].i4.xyz = subgroupBroadcast(data[2].i4.xyz, 2u);
data[2].i4 = subgroupBroadcast(data[3].i4, 2u);
data[3].u4.x = subgroupBroadcast(data[0].u4.x, 1u);
data[3].u4.xy = subgroupBroadcast(data[1].u4.xy, 1u);
data[3].u4.xyz = subgroupBroadcast(data[2].u4.xyz, 1u);
data[3].u4 = subgroupBroadcast(data[3].u4, 1u);
data[0].i4.x = int(subgroupBroadcast(data[0].i4.x < 0, 1u));
data[0].i4.xy = ivec2(subgroupBroadcast(lessThan(data[1].i4.xy, ivec2(0)), 1u));
data[0].i4.xyz = ivec3(subgroupBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), 1u));
data[0].i4 = ivec4(subgroupBroadcast(lessThan(data[1].i4, ivec4(0)), 1u));
}
else
{
data[1].f4.x = subgroupBroadcastFirst(data[0].f4.x);
data[1].f4.xy = subgroupBroadcastFirst(data[1].f4.xy);
data[1].f4.xyz = subgroupBroadcastFirst(data[2].f4.xyz);
data[1].f4 = subgroupBroadcastFirst(data[3].f4);
data[2].i4.x = subgroupBroadcastFirst(data[0].i4.x);
data[2].i4.xy = subgroupBroadcastFirst(data[1].i4.xy);
data[2].i4.xyz = subgroupBroadcastFirst(data[2].i4.xyz);
data[2].i4 = subgroupBroadcastFirst(data[3].i4);
data[3].u4.x = subgroupBroadcastFirst(data[0].u4.x);
data[3].u4.xy = subgroupBroadcastFirst(data[1].u4.xy);
data[3].u4.xyz = subgroupBroadcastFirst(data[2].u4.xyz);
data[3].u4 = subgroupBroadcastFirst(data[3].u4);
data[0].i4.x = int(subgroupBroadcastFirst(data[0].i4.x < 0));
data[0].i4.xy = ivec2(subgroupBroadcastFirst(lessThan(data[1].i4.xy, ivec2(0))));
data[0].i4.xyz = ivec3(subgroupBroadcastFirst(lessThan(data[1].i4.xyz, ivec3(0))));
data[0].i4 = ivec4(subgroupBroadcastFirst(lessThan(data[1].i4, ivec4(0))));
}
}

View File

@ -0,0 +1,32 @@
#version 450
#extension GL_KHR_shader_subgroup_ballot: enable
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
} data[4];
void main()
{
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
uvec4 relMask = gl_SubgroupEqMask +
gl_SubgroupGeMask +
gl_SubgroupGtMask +
gl_SubgroupLeMask +
gl_SubgroupLtMask;
uvec4 result = subgroupBallot(true);
data[0].u4.x = subgroupBallotBitCount(result);
data[0].u4.y = subgroupBallotBitExtract(result, 0) ? 1u : 0u;
data[0].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result);
data[0].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result);
data[1].f4.x = subgroupBroadcast(data[0].f4.x, invocation); // ERROR: not constant
}

View File

@ -0,0 +1,23 @@
#version 320 es
#extension GL_KHR_shader_subgroup_basic: enable
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
layout(binding = 0) buffer Buffer
{
int a[];
} data;
void main()
{
data.a[gl_SubgroupSize] = 1;
data.a[gl_SubgroupInvocationID] = 1;
data.a[gl_NumSubgroups] = 1;
data.a[gl_SubgroupID] = (subgroupElect()) ? 1 : 0;
subgroupBarrier();
subgroupMemoryBarrier();
subgroupMemoryBarrierBuffer();
subgroupMemoryBarrierShared();
subgroupMemoryBarrierImage();
}

View File

@ -0,0 +1,122 @@
#version 320 es
#extension GL_KHR_shader_subgroup_clustered: enable
layout (local_size_x = 8) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
} data[4];
void main()
{
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
data[0].f4.x = subgroupClusteredAdd(data[0].f4.x, 1u);
data[0].f4.xy = subgroupClusteredAdd(data[1].f4.xy, 1u);
data[0].f4.xyz = subgroupClusteredAdd(data[2].f4.xyz, 1u);
data[0].f4 = subgroupClusteredAdd(data[3].f4, 1u);
data[1].i4.x = subgroupClusteredAdd(data[0].i4.x, 1u);
data[1].i4.xy = subgroupClusteredAdd(data[1].i4.xy, 1u);
data[1].i4.xyz = subgroupClusteredAdd(data[2].i4.xyz, 1u);
data[1].i4 = subgroupClusteredAdd(data[3].i4, 1u);
data[2].u4.x = subgroupClusteredAdd(data[0].u4.x, 1u);
data[2].u4.xy = subgroupClusteredAdd(data[1].u4.xy, 1u);
data[2].u4.xyz = subgroupClusteredAdd(data[2].u4.xyz, 1u);
data[2].u4 = subgroupClusteredAdd(data[3].u4, 1u);
data[3].f4.x = subgroupClusteredMul(data[0].f4.x, 1u);
data[3].f4.xy = subgroupClusteredMul(data[1].f4.xy, 1u);
data[3].f4.xyz = subgroupClusteredMul(data[2].f4.xyz, 1u);
data[3].f4 = subgroupClusteredMul(data[3].f4, 1u);
data[0].i4.x = subgroupClusteredMul(data[0].i4.x, 1u);
data[0].i4.xy = subgroupClusteredMul(data[1].i4.xy, 1u);
data[0].i4.xyz = subgroupClusteredMul(data[2].i4.xyz, 1u);
data[0].i4 = subgroupClusteredMul(data[3].i4, 1u);
data[1].u4.x = subgroupClusteredMul(data[0].u4.x, 1u);
data[1].u4.xy = subgroupClusteredMul(data[1].u4.xy, 1u);
data[1].u4.xyz = subgroupClusteredMul(data[2].u4.xyz, 1u);
data[1].u4 = subgroupClusteredMul(data[3].u4, 1u);
data[2].f4.x = subgroupClusteredMin(data[0].f4.x, 1u);
data[2].f4.xy = subgroupClusteredMin(data[1].f4.xy, 1u);
data[2].f4.xyz = subgroupClusteredMin(data[2].f4.xyz, 1u);
data[2].f4 = subgroupClusteredMin(data[3].f4, 1u);
data[3].i4.x = subgroupClusteredMin(data[0].i4.x, 1u);
data[3].i4.xy = subgroupClusteredMin(data[1].i4.xy, 1u);
data[3].i4.xyz = subgroupClusteredMin(data[2].i4.xyz, 1u);
data[3].i4 = subgroupClusteredMin(data[3].i4, 1u);
data[0].u4.x = subgroupClusteredMin(data[0].u4.x, 1u);
data[0].u4.xy = subgroupClusteredMin(data[1].u4.xy, 1u);
data[0].u4.xyz = subgroupClusteredMin(data[2].u4.xyz, 1u);
data[0].u4 = subgroupClusteredMin(data[3].u4, 1u);
data[1].f4.x = subgroupClusteredMax(data[0].f4.x, 1u);
data[1].f4.xy = subgroupClusteredMax(data[1].f4.xy, 1u);
data[1].f4.xyz = subgroupClusteredMax(data[2].f4.xyz, 1u);
data[1].f4 = subgroupClusteredMax(data[3].f4, 1u);
data[2].i4.x = subgroupClusteredMax(data[0].i4.x, 1u);
data[2].i4.xy = subgroupClusteredMax(data[1].i4.xy, 1u);
data[2].i4.xyz = subgroupClusteredMax(data[2].i4.xyz, 1u);
data[2].i4 = subgroupClusteredMax(data[3].i4, 1u);
data[3].u4.x = subgroupClusteredMax(data[0].u4.x, 1u);
data[3].u4.xy = subgroupClusteredMax(data[1].u4.xy, 1u);
data[3].u4.xyz = subgroupClusteredMax(data[2].u4.xyz, 1u);
data[3].u4 = subgroupClusteredMax(data[3].u4, 1u);
data[0].i4.x = subgroupClusteredAnd(data[0].i4.x, 1u);
data[0].i4.xy = subgroupClusteredAnd(data[1].i4.xy, 1u);
data[0].i4.xyz = subgroupClusteredAnd(data[2].i4.xyz, 1u);
data[0].i4 = subgroupClusteredAnd(data[3].i4, 1u);
data[1].u4.x = subgroupClusteredAnd(data[0].u4.x, 1u);
data[1].u4.xy = subgroupClusteredAnd(data[1].u4.xy, 1u);
data[1].u4.xyz = subgroupClusteredAnd(data[2].u4.xyz, 1u);
data[1].u4 = subgroupClusteredAnd(data[3].u4, 1u);
data[2].i4.x = int(subgroupClusteredAnd(data[0].i4.x < 0, 1u));
data[2].i4.xy = ivec2(subgroupClusteredAnd(lessThan(data[1].i4.xy, ivec2(0)), 1u));
data[2].i4.xyz = ivec3(subgroupClusteredAnd(lessThan(data[1].i4.xyz, ivec3(0)), 1u));
data[2].i4 = ivec4(subgroupClusteredAnd(lessThan(data[1].i4, ivec4(0)), 1u));
data[3].i4.x = subgroupClusteredOr(data[0].i4.x, 1u);
data[3].i4.xy = subgroupClusteredOr(data[1].i4.xy, 1u);
data[3].i4.xyz = subgroupClusteredOr(data[2].i4.xyz, 1u);
data[3].i4 = subgroupClusteredOr(data[3].i4, 1u);
data[0].u4.x = subgroupClusteredOr(data[0].u4.x, 1u);
data[0].u4.xy = subgroupClusteredOr(data[1].u4.xy, 1u);
data[0].u4.xyz = subgroupClusteredOr(data[2].u4.xyz, 1u);
data[0].u4 = subgroupClusteredOr(data[3].u4, 1u);
data[1].i4.x = int(subgroupClusteredOr(data[0].i4.x < 0, 1u));
data[1].i4.xy = ivec2(subgroupClusteredOr(lessThan(data[1].i4.xy, ivec2(0)), 1u));
data[1].i4.xyz = ivec3(subgroupClusteredOr(lessThan(data[1].i4.xyz, ivec3(0)), 1u));
data[1].i4 = ivec4(subgroupClusteredOr(lessThan(data[1].i4, ivec4(0)), 1u));
data[2].i4.x = subgroupClusteredXor(data[0].i4.x, 1u);
data[2].i4.xy = subgroupClusteredXor(data[1].i4.xy, 1u);
data[2].i4.xyz = subgroupClusteredXor(data[2].i4.xyz, 1u);
data[2].i4 = subgroupClusteredXor(data[3].i4, 1u);
data[3].u4.x = subgroupClusteredXor(data[0].u4.x, 1u);
data[3].u4.xy = subgroupClusteredXor(data[1].u4.xy, 1u);
data[3].u4.xyz = subgroupClusteredXor(data[2].u4.xyz, 1u);
data[3].u4 = subgroupClusteredXor(data[3].u4, 1u);
data[0].i4.x = int(subgroupClusteredXor(data[0].i4.x < 0, 1u));
data[0].i4.xy = ivec2(subgroupClusteredXor(lessThan(data[1].i4.xy, ivec2(0)), 1u));
data[0].i4.xyz = ivec3(subgroupClusteredXor(lessThan(data[1].i4.xyz, ivec3(0)), 1u));
data[0].i4 = ivec4(subgroupClusteredXor(lessThan(data[1].i4, ivec4(0)), 1u));
}

View File

@ -0,0 +1,34 @@
#version 320 es
#extension GL_KHR_shader_subgroup_clustered: enable
layout (local_size_x = 8) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
} data[4];
void main()
{
int a = 1;
const int aConst = 1;
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
data[0].f4.xy = subgroupClusteredAdd(data[1].f4.xy, 0u); // ERROR, less than 1
data[0].f4.x = subgroupClusteredMul(data[0].f4.x, 3u); // ERROR, not a power of 2
data[1].i4.xy = subgroupClusteredMin(data[1].i4.xy, 8u);
data[1].i4.xyz = subgroupClusteredMin(data[2].i4.xyz, 6u); // ERROR, not a power of 2
data[3].i4.x = subgroupClusteredOr(data[0].i4.x, uint(a)); // ERROR, not constant
data[3].i4.xy = subgroupClusteredOr(data[1].i4.xy, uint(aConst));
data[0].i4.x = subgroupClusteredXor(data[0].i4.x, uint(1 + a)); // ERROR, not constant
data[0].i4.xy = subgroupClusteredXor(data[1].i4.xy, uint(aConst + a)); // ERROR, not constant
data[0].i4.xyz = subgroupClusteredXor(data[2].i4.xyz, uint(1 + aConst));
}

View File

@ -0,0 +1,354 @@
#version 320 es
#extension GL_NV_shader_subgroup_partitioned: enable
layout (local_size_x = 8) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
} data[4];
void main()
{
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
uvec4 ballot = subgroupPartitionNV(invocation);
data[0].u4 = subgroupPartitionNV(data[0].f4.x);
data[0].u4 = subgroupPartitionNV(data[0].f4.xy);
data[0].u4 = subgroupPartitionNV(data[0].f4.xyz);
data[0].u4 = subgroupPartitionNV(data[0].f4);
data[0].u4 = subgroupPartitionNV(data[0].i4.x);
data[0].u4 = subgroupPartitionNV(data[0].i4.xy);
data[0].u4 = subgroupPartitionNV(data[0].i4.xyz);
data[0].u4 = subgroupPartitionNV(data[0].i4);
data[0].u4 = subgroupPartitionNV(data[0].u4.x);
data[0].u4 = subgroupPartitionNV(data[0].u4.xy);
data[0].u4 = subgroupPartitionNV(data[0].u4.xyz);
data[0].u4 = subgroupPartitionNV(data[0].u4);
data[1].u4 = subgroupPartitionNV(bool(data[0].i4.x));
data[1].u4 = subgroupPartitionNV(bvec2(data[0].i4.xy));
data[1].u4 = subgroupPartitionNV(bvec3(data[0].i4.xyz));
data[1].u4 = subgroupPartitionNV(bvec4(data[0].i4));
data[1].f4.x = subgroupPartitionedAddNV(data[0].f4.x, ballot);
data[1].f4.xy = subgroupPartitionedAddNV(data[1].f4.xy, ballot);
data[1].f4.xyz = subgroupPartitionedAddNV(data[2].f4.xyz, ballot);
data[1].f4 = subgroupPartitionedAddNV(data[3].f4, ballot);
data[1].i4.x = subgroupPartitionedAddNV(data[0].i4.x, ballot);
data[1].i4.xy = subgroupPartitionedAddNV(data[1].i4.xy, ballot);
data[1].i4.xyz = subgroupPartitionedAddNV(data[2].i4.xyz, ballot);
data[1].i4 = subgroupPartitionedAddNV(data[3].i4, ballot);
data[1].u4.x = subgroupPartitionedAddNV(data[0].u4.x, ballot);
data[1].u4.xy = subgroupPartitionedAddNV(data[1].u4.xy, ballot);
data[1].u4.xyz = subgroupPartitionedAddNV(data[2].u4.xyz, ballot);
data[1].u4 = subgroupPartitionedAddNV(data[3].u4, ballot);
data[2].f4.x = subgroupPartitionedMulNV(data[0].f4.x, ballot);
data[2].f4.xy = subgroupPartitionedMulNV(data[1].f4.xy, ballot);
data[2].f4.xyz = subgroupPartitionedMulNV(data[2].f4.xyz, ballot);
data[2].f4 = subgroupPartitionedMulNV(data[3].f4, ballot);
data[2].i4.x = subgroupPartitionedMulNV(data[0].i4.x, ballot);
data[2].i4.xy = subgroupPartitionedMulNV(data[1].i4.xy, ballot);
data[2].i4.xyz = subgroupPartitionedMulNV(data[2].i4.xyz, ballot);
data[2].i4 = subgroupPartitionedMulNV(data[3].i4, ballot);
data[2].u4.x = subgroupPartitionedMulNV(data[0].u4.x, ballot);
data[2].u4.xy = subgroupPartitionedMulNV(data[1].u4.xy, ballot);
data[2].u4.xyz = subgroupPartitionedMulNV(data[2].u4.xyz, ballot);
data[2].u4 = subgroupPartitionedMulNV(data[3].u4, ballot);
data[2].f4.x = subgroupPartitionedMinNV(data[0].f4.x, ballot);
data[2].f4.xy = subgroupPartitionedMinNV(data[1].f4.xy, ballot);
data[2].f4.xyz = subgroupPartitionedMinNV(data[2].f4.xyz, ballot);
data[2].f4 = subgroupPartitionedMinNV(data[3].f4, ballot);
data[3].i4.x = subgroupPartitionedMinNV(data[0].i4.x, ballot);
data[3].i4.xy = subgroupPartitionedMinNV(data[1].i4.xy, ballot);
data[3].i4.xyz = subgroupPartitionedMinNV(data[2].i4.xyz, ballot);
data[3].i4 = subgroupPartitionedMinNV(data[3].i4, ballot);
data[3].u4.x = subgroupPartitionedMinNV(data[0].u4.x, ballot);
data[3].u4.xy = subgroupPartitionedMinNV(data[1].u4.xy, ballot);
data[3].u4.xyz = subgroupPartitionedMinNV(data[2].u4.xyz, ballot);
data[3].u4 = subgroupPartitionedMinNV(data[3].u4, ballot);
data[3].f4.x = subgroupPartitionedMaxNV(data[0].f4.x, ballot);
data[3].f4.xy = subgroupPartitionedMaxNV(data[1].f4.xy, ballot);
data[3].f4.xyz = subgroupPartitionedMaxNV(data[2].f4.xyz, ballot);
data[3].f4 = subgroupPartitionedMaxNV(data[3].f4, ballot);
data[0].i4.x = subgroupPartitionedMaxNV(data[0].i4.x, ballot);
data[0].i4.xy = subgroupPartitionedMaxNV(data[1].i4.xy, ballot);
data[0].i4.xyz = subgroupPartitionedMaxNV(data[2].i4.xyz, ballot);
data[0].i4 = subgroupPartitionedMaxNV(data[3].i4, ballot);
data[0].u4.x = subgroupPartitionedMaxNV(data[0].u4.x, ballot);
data[0].u4.xy = subgroupPartitionedMaxNV(data[1].u4.xy, ballot);
data[0].u4.xyz = subgroupPartitionedMaxNV(data[2].u4.xyz, ballot);
data[0].u4 = subgroupPartitionedMaxNV(data[3].u4, ballot);
data[0].i4.x = subgroupPartitionedAndNV(data[0].i4.x, ballot);
data[0].i4.xy = subgroupPartitionedAndNV(data[1].i4.xy, ballot);
data[0].i4.xyz = subgroupPartitionedAndNV(data[2].i4.xyz, ballot);
data[0].i4 = subgroupPartitionedAndNV(data[3].i4, ballot);
data[1].u4.x = subgroupPartitionedAndNV(data[0].u4.x, ballot);
data[1].u4.xy = subgroupPartitionedAndNV(data[1].u4.xy, ballot);
data[1].u4.xyz = subgroupPartitionedAndNV(data[2].u4.xyz, ballot);
data[1].u4 = subgroupPartitionedAndNV(data[3].u4, ballot);
data[1].i4.x = int(subgroupPartitionedAndNV(data[0].i4.x < 0, ballot));
data[1].i4.xy = ivec2(subgroupPartitionedAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
data[1].i4.xyz = ivec3(subgroupPartitionedAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
data[1].i4 = ivec4(subgroupPartitionedAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
data[1].i4.x = subgroupPartitionedOrNV(data[0].i4.x, ballot);
data[1].i4.xy = subgroupPartitionedOrNV(data[1].i4.xy, ballot);
data[1].i4.xyz = subgroupPartitionedOrNV(data[2].i4.xyz, ballot);
data[1].i4 = subgroupPartitionedOrNV(data[3].i4, ballot);
data[2].u4.x = subgroupPartitionedOrNV(data[0].u4.x, ballot);
data[2].u4.xy = subgroupPartitionedOrNV(data[1].u4.xy, ballot);
data[2].u4.xyz = subgroupPartitionedOrNV(data[2].u4.xyz, ballot);
data[2].u4 = subgroupPartitionedOrNV(data[3].u4, ballot);
data[2].i4.x = int(subgroupPartitionedOrNV(data[0].i4.x < 0, ballot));
data[2].i4.xy = ivec2(subgroupPartitionedOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
data[2].i4.xyz = ivec3(subgroupPartitionedOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
data[2].i4 = ivec4(subgroupPartitionedOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
data[2].i4.x = subgroupPartitionedXorNV(data[0].i4.x, ballot);
data[2].i4.xy = subgroupPartitionedXorNV(data[1].i4.xy, ballot);
data[2].i4.xyz = subgroupPartitionedXorNV(data[2].i4.xyz, ballot);
data[2].i4 = subgroupPartitionedXorNV(data[3].i4, ballot);
data[2].u4.x = subgroupPartitionedXorNV(data[0].u4.x, ballot);
data[2].u4.xy = subgroupPartitionedXorNV(data[1].u4.xy, ballot);
data[2].u4.xyz = subgroupPartitionedXorNV(data[2].u4.xyz, ballot);
data[2].u4 = subgroupPartitionedXorNV(data[3].u4, ballot);
data[3].i4.x = int(subgroupPartitionedXorNV(data[0].i4.x < 0, ballot));
data[3].i4.xy = ivec2(subgroupPartitionedXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
data[3].i4.xyz = ivec3(subgroupPartitionedXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
data[3].i4 = ivec4(subgroupPartitionedXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
data[3].f4.x = subgroupPartitionedInclusiveAddNV(data[0].f4.x, ballot);
data[3].f4.xy = subgroupPartitionedInclusiveAddNV(data[1].f4.xy, ballot);
data[3].f4.xyz = subgroupPartitionedInclusiveAddNV(data[2].f4.xyz, ballot);
data[3].f4 = subgroupPartitionedInclusiveAddNV(data[3].f4, ballot);
data[3].i4.x = subgroupPartitionedInclusiveAddNV(data[0].i4.x, ballot);
data[3].i4.xy = subgroupPartitionedInclusiveAddNV(data[1].i4.xy, ballot);
data[3].i4.xyz = subgroupPartitionedInclusiveAddNV(data[2].i4.xyz, ballot);
data[3].i4 = subgroupPartitionedInclusiveAddNV(data[3].i4, ballot);
data[3].u4.x = subgroupPartitionedInclusiveAddNV(data[0].u4.x, ballot);
data[3].u4.xy = subgroupPartitionedInclusiveAddNV(data[1].u4.xy, ballot);
data[3].u4.xyz = subgroupPartitionedInclusiveAddNV(data[2].u4.xyz, ballot);
data[3].u4 = subgroupPartitionedInclusiveAddNV(data[3].u4, ballot);
data[3].f4.x = subgroupPartitionedInclusiveMulNV(data[0].f4.x, ballot);
data[3].f4.xy = subgroupPartitionedInclusiveMulNV(data[1].f4.xy, ballot);
data[3].f4.xyz = subgroupPartitionedInclusiveMulNV(data[2].f4.xyz, ballot);
data[3].f4 = subgroupPartitionedInclusiveMulNV(data[3].f4, ballot);
data[3].i4.x = subgroupPartitionedInclusiveMulNV(data[0].i4.x, ballot);
data[3].i4.xy = subgroupPartitionedInclusiveMulNV(data[1].i4.xy, ballot);
data[3].i4.xyz = subgroupPartitionedInclusiveMulNV(data[2].i4.xyz, ballot);
data[3].i4 = subgroupPartitionedInclusiveMulNV(data[3].i4, ballot);
data[0].u4.x = subgroupPartitionedInclusiveMulNV(data[0].u4.x, ballot);
data[0].u4.xy = subgroupPartitionedInclusiveMulNV(data[1].u4.xy, ballot);
data[0].u4.xyz = subgroupPartitionedInclusiveMulNV(data[2].u4.xyz, ballot);
data[0].u4 = subgroupPartitionedInclusiveMulNV(data[3].u4, ballot);
data[0].f4.x = subgroupPartitionedInclusiveMinNV(data[0].f4.x, ballot);
data[0].f4.xy = subgroupPartitionedInclusiveMinNV(data[1].f4.xy, ballot);
data[0].f4.xyz = subgroupPartitionedInclusiveMinNV(data[2].f4.xyz, ballot);
data[0].f4 = subgroupPartitionedInclusiveMinNV(data[3].f4, ballot);
data[0].i4.x = subgroupPartitionedInclusiveMinNV(data[0].i4.x, ballot);
data[0].i4.xy = subgroupPartitionedInclusiveMinNV(data[1].i4.xy, ballot);
data[0].i4.xyz = subgroupPartitionedInclusiveMinNV(data[2].i4.xyz, ballot);
data[0].i4 = subgroupPartitionedInclusiveMinNV(data[3].i4, ballot);
data[0].u4.x = subgroupPartitionedInclusiveMinNV(data[0].u4.x, ballot);
data[0].u4.xy = subgroupPartitionedInclusiveMinNV(data[1].u4.xy, ballot);
data[0].u4.xyz = subgroupPartitionedInclusiveMinNV(data[2].u4.xyz, ballot);
data[0].u4 = subgroupPartitionedInclusiveMinNV(data[3].u4, ballot);
data[1].f4.x = subgroupPartitionedInclusiveMaxNV(data[0].f4.x, ballot);
data[1].f4.xy = subgroupPartitionedInclusiveMaxNV(data[1].f4.xy, ballot);
data[1].f4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].f4.xyz, ballot);
data[1].f4 = subgroupPartitionedInclusiveMaxNV(data[3].f4, ballot);
data[1].i4.x = subgroupPartitionedInclusiveMaxNV(data[0].i4.x, ballot);
data[1].i4.xy = subgroupPartitionedInclusiveMaxNV(data[1].i4.xy, ballot);
data[1].i4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].i4.xyz, ballot);
data[1].i4 = subgroupPartitionedInclusiveMaxNV(data[3].i4, ballot);
data[1].u4.x = subgroupPartitionedInclusiveMaxNV(data[0].u4.x, ballot);
data[1].u4.xy = subgroupPartitionedInclusiveMaxNV(data[1].u4.xy, ballot);
data[1].u4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].u4.xyz, ballot);
data[1].u4 = subgroupPartitionedInclusiveMaxNV(data[3].u4, ballot);
data[1].i4.x = subgroupPartitionedInclusiveAndNV(data[0].i4.x, ballot);
data[1].i4.xy = subgroupPartitionedInclusiveAndNV(data[1].i4.xy, ballot);
data[1].i4.xyz = subgroupPartitionedInclusiveAndNV(data[2].i4.xyz, ballot);
data[1].i4 = subgroupPartitionedInclusiveAndNV(data[3].i4, ballot);
data[2].u4.x = subgroupPartitionedInclusiveAndNV(data[0].u4.x, ballot);
data[2].u4.xy = subgroupPartitionedInclusiveAndNV(data[1].u4.xy, ballot);
data[2].u4.xyz = subgroupPartitionedInclusiveAndNV(data[2].u4.xyz, ballot);
data[2].u4 = subgroupPartitionedInclusiveAndNV(data[3].u4, ballot);
data[2].i4.x = int(subgroupPartitionedInclusiveAndNV(data[0].i4.x < 0, ballot));
data[2].i4.xy = ivec2(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
data[2].i4.xyz = ivec3(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
data[2].i4 = ivec4(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
data[2].i4.x = subgroupPartitionedInclusiveOrNV(data[0].i4.x, ballot);
data[2].i4.xy = subgroupPartitionedInclusiveOrNV(data[1].i4.xy, ballot);
data[2].i4.xyz = subgroupPartitionedInclusiveOrNV(data[2].i4.xyz, ballot);
data[2].i4 = subgroupPartitionedInclusiveOrNV(data[3].i4, ballot);
data[2].u4.x = subgroupPartitionedInclusiveOrNV(data[0].u4.x, ballot);
data[2].u4.xy = subgroupPartitionedInclusiveOrNV(data[1].u4.xy, ballot);
data[2].u4.xyz = subgroupPartitionedInclusiveOrNV(data[2].u4.xyz, ballot);
data[2].u4 = subgroupPartitionedInclusiveOrNV(data[3].u4, ballot);
data[3].i4.x = int(subgroupPartitionedInclusiveOrNV(data[0].i4.x < 0, ballot));
data[3].i4.xy = ivec2(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
data[3].i4.xyz = ivec3(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
data[3].i4 = ivec4(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
data[3].i4.x = subgroupPartitionedInclusiveXorNV(data[0].i4.x, ballot);
data[3].i4.xy = subgroupPartitionedInclusiveXorNV(data[1].i4.xy, ballot);
data[3].i4.xyz = subgroupPartitionedInclusiveXorNV(data[2].i4.xyz, ballot);
data[3].i4 = subgroupPartitionedInclusiveXorNV(data[3].i4, ballot);
data[3].u4.x = subgroupPartitionedInclusiveXorNV(data[0].u4.x, ballot);
data[3].u4.xy = subgroupPartitionedInclusiveXorNV(data[1].u4.xy, ballot);
data[3].u4.xyz = subgroupPartitionedInclusiveXorNV(data[2].u4.xyz, ballot);
data[3].u4 = subgroupPartitionedInclusiveXorNV(data[3].u4, ballot);
data[3].i4.x = int(subgroupPartitionedInclusiveXorNV(data[0].i4.x < 0, ballot));
data[3].i4.xy = ivec2(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
data[3].i4.xyz = ivec3(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
data[3].i4 = ivec4(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
data[0].f4.x = subgroupPartitionedExclusiveAddNV(data[0].f4.x, ballot);
data[0].f4.xy = subgroupPartitionedExclusiveAddNV(data[1].f4.xy, ballot);
data[0].f4.xyz = subgroupPartitionedExclusiveAddNV(data[2].f4.xyz, ballot);
data[0].f4 = subgroupPartitionedExclusiveAddNV(data[3].f4, ballot);
data[0].i4.x = subgroupPartitionedExclusiveAddNV(data[0].i4.x, ballot);
data[0].i4.xy = subgroupPartitionedExclusiveAddNV(data[1].i4.xy, ballot);
data[0].i4.xyz = subgroupPartitionedExclusiveAddNV(data[2].i4.xyz, ballot);
data[0].i4 = subgroupPartitionedExclusiveAddNV(data[3].i4, ballot);
data[0].u4.x = subgroupPartitionedExclusiveAddNV(data[0].u4.x, ballot);
data[0].u4.xy = subgroupPartitionedExclusiveAddNV(data[1].u4.xy, ballot);
data[0].u4.xyz = subgroupPartitionedExclusiveAddNV(data[2].u4.xyz, ballot);
data[0].u4 = subgroupPartitionedExclusiveAddNV(data[3].u4, ballot);
data[0].f4.x = subgroupPartitionedExclusiveMulNV(data[0].f4.x, ballot);
data[0].f4.xy = subgroupPartitionedExclusiveMulNV(data[1].f4.xy, ballot);
data[0].f4.xyz = subgroupPartitionedExclusiveMulNV(data[2].f4.xyz, ballot);
data[0].f4 = subgroupPartitionedExclusiveMulNV(data[3].f4, ballot);
data[1].i4.x = subgroupPartitionedExclusiveMulNV(data[0].i4.x, ballot);
data[1].i4.xy = subgroupPartitionedExclusiveMulNV(data[1].i4.xy, ballot);
data[1].i4.xyz = subgroupPartitionedExclusiveMulNV(data[2].i4.xyz, ballot);
data[1].i4 = subgroupPartitionedExclusiveMulNV(data[3].i4, ballot);
data[1].u4.x = subgroupPartitionedExclusiveMulNV(data[0].u4.x, ballot);
data[1].u4.xy = subgroupPartitionedExclusiveMulNV(data[1].u4.xy, ballot);
data[1].u4.xyz = subgroupPartitionedExclusiveMulNV(data[2].u4.xyz, ballot);
data[1].u4 = subgroupPartitionedExclusiveMulNV(data[3].u4, ballot);
data[1].f4.x = subgroupPartitionedExclusiveMinNV(data[0].f4.x, ballot);
data[1].f4.xy = subgroupPartitionedExclusiveMinNV(data[1].f4.xy, ballot);
data[1].f4.xyz = subgroupPartitionedExclusiveMinNV(data[2].f4.xyz, ballot);
data[1].f4 = subgroupPartitionedExclusiveMinNV(data[3].f4, ballot);
data[1].i4.x = subgroupPartitionedExclusiveMinNV(data[0].i4.x, ballot);
data[1].i4.xy = subgroupPartitionedExclusiveMinNV(data[1].i4.xy, ballot);
data[1].i4.xyz = subgroupPartitionedExclusiveMinNV(data[2].i4.xyz, ballot);
data[1].i4 = subgroupPartitionedExclusiveMinNV(data[3].i4, ballot);
data[2].u4.x = subgroupPartitionedExclusiveMinNV(data[0].u4.x, ballot);
data[2].u4.xy = subgroupPartitionedExclusiveMinNV(data[1].u4.xy, ballot);
data[2].u4.xyz = subgroupPartitionedExclusiveMinNV(data[2].u4.xyz, ballot);
data[2].u4 = subgroupPartitionedExclusiveMinNV(data[3].u4, ballot);
data[2].f4.x = subgroupPartitionedExclusiveMaxNV(data[0].f4.x, ballot);
data[2].f4.xy = subgroupPartitionedExclusiveMaxNV(data[1].f4.xy, ballot);
data[2].f4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].f4.xyz, ballot);
data[2].f4 = subgroupPartitionedExclusiveMaxNV(data[3].f4, ballot);
data[2].i4.x = subgroupPartitionedExclusiveMaxNV(data[0].i4.x, ballot);
data[2].i4.xy = subgroupPartitionedExclusiveMaxNV(data[1].i4.xy, ballot);
data[2].i4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].i4.xyz, ballot);
data[2].i4 = subgroupPartitionedExclusiveMaxNV(data[3].i4, ballot);
data[2].u4.x = subgroupPartitionedExclusiveMaxNV(data[0].u4.x, ballot);
data[2].u4.xy = subgroupPartitionedExclusiveMaxNV(data[1].u4.xy, ballot);
data[2].u4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].u4.xyz, ballot);
data[2].u4 = subgroupPartitionedExclusiveMaxNV(data[3].u4, ballot);
data[2].i4.x = subgroupPartitionedExclusiveAndNV(data[0].i4.x, ballot);
data[2].i4.xy = subgroupPartitionedExclusiveAndNV(data[1].i4.xy, ballot);
data[2].i4.xyz = subgroupPartitionedExclusiveAndNV(data[2].i4.xyz, ballot);
data[2].i4 = subgroupPartitionedExclusiveAndNV(data[3].i4, ballot);
data[2].u4.x = subgroupPartitionedExclusiveAndNV(data[0].u4.x, ballot);
data[2].u4.xy = subgroupPartitionedExclusiveAndNV(data[1].u4.xy, ballot);
data[2].u4.xyz = subgroupPartitionedExclusiveAndNV(data[2].u4.xyz, ballot);
data[2].u4 = subgroupPartitionedExclusiveAndNV(data[3].u4, ballot);
data[3].i4.x = int(subgroupPartitionedExclusiveAndNV(data[0].i4.x < 0, ballot));
data[3].i4.xy = ivec2(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
data[3].i4.xyz = ivec3(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
data[3].i4 = ivec4(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
data[3].i4.x = subgroupPartitionedExclusiveOrNV(data[0].i4.x, ballot);
data[3].i4.xy = subgroupPartitionedExclusiveOrNV(data[1].i4.xy, ballot);
data[3].i4.xyz = subgroupPartitionedExclusiveOrNV(data[2].i4.xyz, ballot);
data[3].i4 = subgroupPartitionedExclusiveOrNV(data[3].i4, ballot);
data[3].u4.x = subgroupPartitionedExclusiveOrNV(data[0].u4.x, ballot);
data[3].u4.xy = subgroupPartitionedExclusiveOrNV(data[1].u4.xy, ballot);
data[3].u4.xyz = subgroupPartitionedExclusiveOrNV(data[2].u4.xyz, ballot);
data[3].u4 = subgroupPartitionedExclusiveOrNV(data[3].u4, ballot);
data[3].i4.x = int(subgroupPartitionedExclusiveOrNV(data[0].i4.x < 0, ballot));
data[3].i4.xy = ivec2(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
data[3].i4.xyz = ivec3(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
data[3].i4 = ivec4(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
data[3].i4.x = subgroupPartitionedExclusiveXorNV(data[0].i4.x, ballot);
data[3].i4.xy = subgroupPartitionedExclusiveXorNV(data[1].i4.xy, ballot);
data[3].i4.xyz = subgroupPartitionedExclusiveXorNV(data[2].i4.xyz, ballot);
data[3].i4 = subgroupPartitionedExclusiveXorNV(data[3].i4, ballot);
data[0].u4.x = subgroupPartitionedExclusiveXorNV(data[0].u4.x, ballot);
data[0].u4.xy = subgroupPartitionedExclusiveXorNV(data[1].u4.xy, ballot);
data[0].u4.xyz = subgroupPartitionedExclusiveXorNV(data[2].u4.xyz, ballot);
data[0].u4 = subgroupPartitionedExclusiveXorNV(data[3].u4, ballot);
data[0].i4.x = int(subgroupPartitionedExclusiveXorNV(data[0].i4.x < 0, ballot));
data[0].i4.xy = ivec2(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
data[0].i4.xyz = ivec3(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
data[0].i4 = ivec4(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
}

View File

@ -0,0 +1,97 @@
#version 320 es
#extension GL_KHR_shader_subgroup_quad: enable
layout (local_size_x = 8) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
} data[4];
void main()
{
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
data[0].f4.x = subgroupQuadBroadcast(data[0].f4.x, 1u);
data[0].f4.xy = subgroupQuadBroadcast(data[1].f4.xy, 1u);
data[0].f4.xyz = subgroupQuadBroadcast(data[2].f4.xyz, 1u);
data[0].f4 = subgroupQuadBroadcast(data[3].f4, 1u);
data[0].i4.x = subgroupQuadBroadcast(data[0].i4.x, 1u);
data[0].i4.xy = subgroupQuadBroadcast(data[1].i4.xy, 1u);
data[0].i4.xyz = subgroupQuadBroadcast(data[2].i4.xyz, 1u);
data[0].i4 = subgroupQuadBroadcast(data[3].i4, 1u);
data[0].u4.x = subgroupQuadBroadcast(data[0].u4.x, 1u);
data[0].u4.xy = subgroupQuadBroadcast(data[1].u4.xy, 1u);
data[0].u4.xyz = subgroupQuadBroadcast(data[2].u4.xyz, 1u);
data[0].u4 = subgroupQuadBroadcast(data[3].u4, 1u);
data[1].i4.x = int(subgroupQuadBroadcast(data[0].i4.x < 0, 1u));
data[1].i4.xy = ivec2(subgroupQuadBroadcast(lessThan(data[1].i4.xy, ivec2(0)), 1u));
data[1].i4.xyz = ivec3(subgroupQuadBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), 1u));
data[1].i4 = ivec4(subgroupQuadBroadcast(lessThan(data[1].i4, ivec4(0)), 1u));
data[1].f4.x = subgroupQuadSwapHorizontal(data[0].f4.x);
data[1].f4.xy = subgroupQuadSwapHorizontal(data[1].f4.xy);
data[1].f4.xyz = subgroupQuadSwapHorizontal(data[2].f4.xyz);
data[1].f4 = subgroupQuadSwapHorizontal(data[3].f4);
data[1].i4.x = subgroupQuadSwapHorizontal(data[0].i4.x);
data[1].i4.xy = subgroupQuadSwapHorizontal(data[1].i4.xy);
data[1].i4.xyz = subgroupQuadSwapHorizontal(data[2].i4.xyz);
data[1].i4 = subgroupQuadSwapHorizontal(data[3].i4);
data[1].u4.x = subgroupQuadSwapHorizontal(data[0].u4.x);
data[1].u4.xy = subgroupQuadSwapHorizontal(data[1].u4.xy);
data[1].u4.xyz = subgroupQuadSwapHorizontal(data[2].u4.xyz);
data[1].u4 = subgroupQuadSwapHorizontal(data[3].u4);
data[2].i4.x = int(subgroupQuadSwapHorizontal(data[0].i4.x < 0));
data[2].i4.xy = ivec2(subgroupQuadSwapHorizontal(lessThan(data[1].i4.xy, ivec2(0))));
data[2].i4.xyz = ivec3(subgroupQuadSwapHorizontal(lessThan(data[1].i4.xyz, ivec3(0))));
data[2].i4 = ivec4(subgroupQuadSwapHorizontal(lessThan(data[1].i4, ivec4(0))));
data[2].f4.x = subgroupQuadSwapVertical(data[0].f4.x);
data[2].f4.xy = subgroupQuadSwapVertical(data[1].f4.xy);
data[2].f4.xyz = subgroupQuadSwapVertical(data[2].f4.xyz);
data[2].f4 = subgroupQuadSwapVertical(data[3].f4);
data[2].i4.x = subgroupQuadSwapVertical(data[0].i4.x);
data[2].i4.xy = subgroupQuadSwapVertical(data[1].i4.xy);
data[2].i4.xyz = subgroupQuadSwapVertical(data[2].i4.xyz);
data[2].i4 = subgroupQuadSwapVertical(data[3].i4);
data[2].u4.x = subgroupQuadSwapVertical(data[0].u4.x);
data[2].u4.xy = subgroupQuadSwapVertical(data[1].u4.xy);
data[2].u4.xyz = subgroupQuadSwapVertical(data[2].u4.xyz);
data[2].u4 = subgroupQuadSwapVertical(data[3].u4);
data[3].i4.x = int(subgroupQuadSwapVertical(data[0].i4.x < 0));
data[3].i4.xy = ivec2(subgroupQuadSwapVertical(lessThan(data[1].i4.xy, ivec2(0))));
data[3].i4.xyz = ivec3(subgroupQuadSwapVertical(lessThan(data[1].i4.xyz, ivec3(0))));
data[3].i4 = ivec4(subgroupQuadSwapVertical(lessThan(data[1].i4, ivec4(0))));
data[3].f4.x = subgroupQuadSwapDiagonal(data[0].f4.x);
data[3].f4.xy = subgroupQuadSwapDiagonal(data[1].f4.xy);
data[3].f4.xyz = subgroupQuadSwapDiagonal(data[2].f4.xyz);
data[3].f4 = subgroupQuadSwapDiagonal(data[3].f4);
data[3].i4.x = subgroupQuadSwapDiagonal(data[0].i4.x);
data[3].i4.xy = subgroupQuadSwapDiagonal(data[1].i4.xy);
data[3].i4.xyz = subgroupQuadSwapDiagonal(data[2].i4.xyz);
data[3].i4 = subgroupQuadSwapDiagonal(data[3].i4);
data[3].u4.x = subgroupQuadSwapDiagonal(data[0].u4.x);
data[3].u4.xy = subgroupQuadSwapDiagonal(data[1].u4.xy);
data[3].u4.xyz = subgroupQuadSwapDiagonal(data[2].u4.xyz);
data[3].u4 = subgroupQuadSwapDiagonal(data[3].u4);
data[3].i4.x = int(subgroupQuadSwapDiagonal(data[0].i4.x < 0));
data[3].i4.xy = ivec2(subgroupQuadSwapDiagonal(lessThan(data[1].i4.xy, ivec2(0))));
data[3].i4.xyz = ivec3(subgroupQuadSwapDiagonal(lessThan(data[1].i4.xyz, ivec3(0))));
data[3].i4 = ivec4(subgroupQuadSwapDiagonal(lessThan(data[1].i4, ivec4(0))));
}

View File

@ -0,0 +1,57 @@
#version 320 es
#extension GL_KHR_shader_subgroup_shuffle: enable
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
} data[4];
void main()
{
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
data[0].f4.x = subgroupShuffle(data[0].f4.x, invocation);
data[0].f4.xy = subgroupShuffle(data[1].f4.xy, invocation);
data[0].f4.xyz = subgroupShuffle(data[2].f4.xyz, invocation);
data[0].f4 = subgroupShuffle(data[3].f4, invocation);
data[0].i4.x = subgroupShuffle(data[0].i4.x, invocation);
data[0].i4.xy = subgroupShuffle(data[1].i4.xy, invocation);
data[0].i4.xyz = subgroupShuffle(data[2].i4.xyz, invocation);
data[0].i4 = subgroupShuffle(data[3].i4, invocation);
data[1].u4.x = subgroupShuffle(data[0].u4.x, invocation);
data[1].u4.xy = subgroupShuffle(data[1].u4.xy, invocation);
data[1].u4.xyz = subgroupShuffle(data[2].u4.xyz, invocation);
data[1].u4 = subgroupShuffle(data[3].u4, invocation);
data[1].i4.x = int(subgroupShuffle(data[0].i4.x < 0, invocation));
data[1].i4.xy = ivec2(subgroupShuffle(lessThan(data[1].i4.xy, ivec2(0)), invocation));
data[1].i4.xyz = ivec3(subgroupShuffle(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
data[1].i4 = ivec4(subgroupShuffle(lessThan(data[1].i4, ivec4(0)), invocation));
data[2].f4.x = subgroupShuffleXor(data[0].f4.x, invocation);
data[2].f4.xy = subgroupShuffleXor(data[1].f4.xy, invocation);
data[2].f4.xyz = subgroupShuffleXor(data[2].f4.xyz, invocation);
data[2].f4 = subgroupShuffleXor(data[3].f4, invocation);
data[2].i4.x = subgroupShuffleXor(data[0].i4.x, invocation);
data[2].i4.xy = subgroupShuffleXor(data[1].i4.xy, invocation);
data[2].i4.xyz = subgroupShuffleXor(data[2].i4.xyz, invocation);
data[2].i4 = subgroupShuffleXor(data[3].i4, invocation);
data[3].u4.x = subgroupShuffleXor(data[0].u4.x, invocation);
data[3].u4.xy = subgroupShuffleXor(data[1].u4.xy, invocation);
data[3].u4.xyz = subgroupShuffleXor(data[2].u4.xyz, invocation);
data[3].u4 = subgroupShuffleXor(data[3].u4, invocation);
data[3].i4.x = int(subgroupShuffleXor(data[0].i4.x < 0, invocation));
data[3].i4.xy = ivec2(subgroupShuffleXor(lessThan(data[1].i4.xy, ivec2(0)), invocation));
data[3].i4.xyz = ivec3(subgroupShuffleXor(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
data[3].i4 = ivec4(subgroupShuffleXor(lessThan(data[1].i4, ivec4(0)), invocation));
}

View File

@ -0,0 +1,57 @@
#version 320 es
#extension GL_KHR_shader_subgroup_shuffle_relative: enable
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
} data[4];
void main()
{
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
data[0].f4.x = subgroupShuffleUp(data[0].f4.x, invocation);
data[0].f4.xy = subgroupShuffleUp(data[1].f4.xy, invocation);
data[0].f4.xyz = subgroupShuffleUp(data[2].f4.xyz, invocation);
data[0].f4 = subgroupShuffleUp(data[3].f4, invocation);
data[0].i4.x = subgroupShuffleUp(data[0].i4.x, invocation);
data[0].i4.xy = subgroupShuffleUp(data[1].i4.xy, invocation);
data[0].i4.xyz = subgroupShuffleUp(data[2].i4.xyz, invocation);
data[0].i4 = subgroupShuffleUp(data[3].i4, invocation);
data[1].u4.x = subgroupShuffleUp(data[0].u4.x, invocation);
data[1].u4.xy = subgroupShuffleUp(data[1].u4.xy, invocation);
data[1].u4.xyz = subgroupShuffleUp(data[2].u4.xyz, invocation);
data[1].u4 = subgroupShuffleUp(data[3].u4, invocation);
data[1].i4.x = int(subgroupShuffleUp(data[0].i4.x < 0, invocation));
data[1].i4.xy = ivec2(subgroupShuffleUp(lessThan(data[1].i4.xy, ivec2(0)), invocation));
data[1].i4.xyz = ivec3(subgroupShuffleUp(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
data[1].i4 = ivec4(subgroupShuffleUp(lessThan(data[1].i4, ivec4(0)), invocation));
data[2].f4.x = subgroupShuffleDown(data[0].f4.x, invocation);
data[2].f4.xy = subgroupShuffleDown(data[1].f4.xy, invocation);
data[2].f4.xyz = subgroupShuffleDown(data[2].f4.xyz, invocation);
data[2].f4 = subgroupShuffleDown(data[3].f4, invocation);
data[2].i4.x = subgroupShuffleDown(data[0].i4.x, invocation);
data[2].i4.xy = subgroupShuffleDown(data[1].i4.xy, invocation);
data[2].i4.xyz = subgroupShuffleDown(data[2].i4.xyz, invocation);
data[2].i4 = subgroupShuffleDown(data[3].i4, invocation);
data[3].u4.x = subgroupShuffleDown(data[0].u4.x, invocation);
data[3].u4.xy = subgroupShuffleDown(data[1].u4.xy, invocation);
data[3].u4.xyz = subgroupShuffleDown(data[2].u4.xyz, invocation);
data[3].u4 = subgroupShuffleDown(data[3].u4, invocation);
data[3].i4.x = int(subgroupShuffleDown(data[0].i4.x < 0, invocation));
data[3].i4.xy = ivec2(subgroupShuffleDown(lessThan(data[1].i4.xy, ivec2(0)), invocation));
data[3].i4.xyz = ivec3(subgroupShuffleDown(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
data[3].i4 = ivec4(subgroupShuffleDown(lessThan(data[1].i4, ivec4(0)), invocation));
}

View File

@ -0,0 +1,43 @@
#version 320 es
#extension GL_KHR_shader_subgroup_vote: enable
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
int r;
} data[4];
void main()
{
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4u;
if (subgroupAll(data[0].r < 0))
{
data[0].r = int(subgroupAllEqual(data[0].f4.x));
data[0].r = int(subgroupAllEqual(data[1].f4.xy));
data[0].r = int(subgroupAllEqual(data[2].f4.xyz));
data[0].r = int(subgroupAllEqual(data[3].f4));
data[0].r = int(subgroupAllEqual(data[0].i4.x));
data[0].r = int(subgroupAllEqual(data[1].i4.xy));
data[0].r = int(subgroupAllEqual(data[2].i4.xyz));
data[0].r = int(subgroupAllEqual(data[3].i4));
data[0].r = int(subgroupAllEqual(data[0].u4.x));
data[0].r = int(subgroupAllEqual(data[1].u4.xy));
data[0].r = int(subgroupAllEqual(data[2].u4.xyz));
data[0].r = int(subgroupAllEqual(data[3].u4));
}
else if (subgroupAny(data[1].r < 0))
{
data[1].r = int(int(subgroupAllEqual(data[0].i4.x < 0)));
data[1].r = int(ivec2(subgroupAllEqual(lessThan(data[1].i4.xy, ivec2(0)))));
data[1].r = int(ivec3(subgroupAllEqual(lessThan(data[1].i4.xyz, ivec3(0)))));
data[1].r = int(ivec4(subgroupAllEqual(lessThan(data[1].i4, ivec4(0)))));
}
}

View File

@ -1873,7 +1873,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
}
// GL_KHR_shader_subgroup
if (spvVersion.vulkan > 0) {
if ((profile == EEsProfile && version >= 310) ||
(profile != EEsProfile && version >= 140)) {
commonBuiltins.append(
"void subgroupBarrier();"
"void subgroupMemoryBarrier();"
@ -6126,7 +6127,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
}
// GL_KHR_shader_subgroup
if (spvVersion.vulkan > 0) {
if ((profile == EEsProfile && version >= 310) ||
(profile != EEsProfile && version >= 140)) {
const char* ballotDecls =
"in mediump uint gl_SubgroupSize;"
"in mediump uint gl_SubgroupInvocationID;"
@ -8160,7 +8162,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
}
// GL_KHR_shader_subgroup
if (spvVersion.vulkan > 0) {
if ((profile == EEsProfile && version >= 310) ||
(profile != EEsProfile && version >= 140)) {
symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic);
symbolTable.setVariableExtensions("gl_SubgroupInvocationID", 1, &E_GL_KHR_shader_subgroup_basic);
symbolTable.setVariableExtensions("gl_SubgroupEqMask", 1, &E_GL_KHR_shader_subgroup_ballot);
@ -8479,7 +8482,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
}
// GL_KHR_shader_subgroup
if (spvVersion.vulkan > 0) {
if ((profile == EEsProfile && version >= 310) ||
(profile != EEsProfile && version >= 140)) {
symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic);
symbolTable.setVariableExtensions("gl_SubgroupInvocationID", 1, &E_GL_KHR_shader_subgroup_basic);
symbolTable.setVariableExtensions("gl_SubgroupEqMask", 1, &E_GL_KHR_shader_subgroup_ballot);
@ -8663,7 +8667,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
}
// GL_KHR_shader_subgroup
if (spvVersion.vulkan > 0) {
if ((profile == EEsProfile && version >= 310) ||
(profile != EEsProfile && version >= 140)) {
symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic);
symbolTable.setVariableExtensions("gl_SubgroupInvocationID", 1, &E_GL_KHR_shader_subgroup_basic);
symbolTable.setVariableExtensions("gl_SubgroupEqMask", 1, &E_GL_KHR_shader_subgroup_ballot);
@ -8690,7 +8695,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
}
// GL_KHR_shader_subgroup
if (spvVersion.vulkan > 0) {
if ((profile == EEsProfile && version >= 310) ||
(profile != EEsProfile && version >= 140)) {
symbolTable.setVariableExtensions("gl_NumSubgroups", 1, &E_GL_KHR_shader_subgroup_basic);
symbolTable.setVariableExtensions("gl_SubgroupID", 1, &E_GL_KHR_shader_subgroup_basic);
@ -8859,7 +8865,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
}
// GL_KHR_shader_subgroup
if (spvVersion.vulkan > 0) {
if ((profile == EEsProfile && version >= 310) ||
(profile != EEsProfile && version >= 140)) {
symbolTable.setVariableExtensions("gl_NumSubgroups", 1, &E_GL_KHR_shader_subgroup_basic);
symbolTable.setVariableExtensions("gl_SubgroupID", 1, &E_GL_KHR_shader_subgroup_basic);
symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic);
@ -8948,7 +8955,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
}
// GL_KHR_shader_subgroup
if (spvVersion.vulkan > 0) {
if ((profile == EEsProfile && version >= 310) ||
(profile != EEsProfile && version >= 140)) {
symbolTable.setVariableExtensions("gl_NumSubgroups", 1, &E_GL_KHR_shader_subgroup_basic);
symbolTable.setVariableExtensions("gl_SubgroupID", 1, &E_GL_KHR_shader_subgroup_basic);
symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic);
@ -9365,7 +9373,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
}
// GL_KHR_shader_subgroup
if (spvVersion.vulkan > 0) {
if ((profile == EEsProfile && version >= 310) ||
(profile != EEsProfile && version >= 140)) {
symbolTable.relateToOperator("subgroupBarrier", EOpSubgroupBarrier);
symbolTable.relateToOperator("subgroupMemoryBarrier", EOpSubgroupMemoryBarrier);
symbolTable.relateToOperator("subgroupMemoryBarrierBuffer", EOpSubgroupMemoryBarrierBuffer);

View File

@ -236,7 +236,39 @@ INSTANTIATE_TEST_CASE_P(
"precise_struct_block.vert",
"maxClipDistances.vert",
"findFunction.frag",
"constantUnaryConversion.comp"
"constantUnaryConversion.comp",
"glsl.450.subgroup.frag",
"glsl.450.subgroup.geom",
"glsl.450.subgroup.tesc",
"glsl.450.subgroup.tese",
"glsl.450.subgroup.vert",
"glsl.450.subgroupArithmetic.comp",
"glsl.450.subgroupBasic.comp",
"glsl.450.subgroupBallot.comp",
"glsl.450.subgroupBallotNeg.comp",
"glsl.450.subgroupClustered.comp",
"glsl.450.subgroupClusteredNeg.comp",
"glsl.450.subgroupPartitioned.comp",
"glsl.450.subgroupShuffle.comp",
"glsl.450.subgroupShuffleRelative.comp",
"glsl.450.subgroupQuad.comp",
"glsl.450.subgroupVote.comp",
"glsl.es320.subgroup.frag",
"glsl.es320.subgroup.geom",
"glsl.es320.subgroup.tesc",
"glsl.es320.subgroup.tese",
"glsl.es320.subgroup.vert",
"glsl.es320.subgroupArithmetic.comp",
"glsl.es320.subgroupBasic.comp",
"glsl.es320.subgroupBallot.comp",
"glsl.es320.subgroupBallotNeg.comp",
"glsl.es320.subgroupClustered.comp",
"glsl.es320.subgroupClusteredNeg.comp",
"glsl.es320.subgroupPartitioned.comp",
"glsl.es320.subgroupShuffle.comp",
"glsl.es320.subgroupShuffleRelative.comp",
"glsl.es320.subgroupQuad.comp",
"glsl.es320.subgroupVote.comp",
})),
FileNameAsCustomTestSuffix
);