Updated glslang.

This commit is contained in:
Бранимир Караџић 2019-03-30 20:48:58 -07:00
parent 244847e6e8
commit 2ddefa50b7
71 changed files with 95085 additions and 57 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

@ -1,13 +1,13 @@
spv.RayCallable.rcall
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 38
// Id's are bound by 30
Capability RayTracingNV
Extension "SPV_NV_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint CallableNV 4 "main" 11 14 19
EntryPoint CallableNV 4 "main" 11 14
Source GLSL 460
SourceExtension "GL_NV_ray_tracing"
Name 4 "main"
@ -15,18 +15,15 @@ spv.RayCallable.rcall
Name 11 "gl_LaunchIDNV"
Name 13 "size"
Name 14 "gl_LaunchSizeNV"
Name 17 "curFlags"
Name 19 "gl_IncomingRayFlagsNV"
Name 24 "dataBlock"
MemberName 24(dataBlock) 0 "data1"
Name 26 ""
Name 37 "data0"
Name 16 "dataBlock"
MemberName 16(dataBlock) 0 "data1"
Name 18 ""
Name 29 "data0"
Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV
Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
Decorate 19(gl_IncomingRayFlagsNV) BuiltIn IncomingRayFlagsNV
Decorate 24(dataBlock) Block
Decorate 26 Location 1
Decorate 37(data0) Location 0
Decorate 16(dataBlock) Block
Decorate 18 Location 1
Decorate 29(data0) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@ -35,39 +32,29 @@ spv.RayCallable.rcall
10: TypePointer Input 7(ivec3)
11(gl_LaunchIDNV): 10(ptr) Variable Input
14(gl_LaunchSizeNV): 10(ptr) Variable Input
16: TypePointer Function 6(int)
18: TypePointer Input 6(int)
19(gl_IncomingRayFlagsNV): 18(ptr) Variable Input
22: 6(int) Constant 1
24(dataBlock): TypeStruct 6(int)
25: TypePointer IncomingCallableDataNV 24(dataBlock)
26: 25(ptr) Variable IncomingCallableDataNV
27: TypeInt 32 1
28: 27(int) Constant 0
29: 6(int) Constant 256
30: TypePointer IncomingCallableDataNV 6(int)
32: 6(int) Constant 2
33: 27(int) Constant 1
34: TypeFloat 32
35: TypeVector 34(float) 4
36: TypePointer CallableDataNV 35(fvec4)
37(data0): 36(ptr) Variable CallableDataNV
16(dataBlock): TypeStruct 6(int)
17: TypePointer IncomingCallableDataNV 16(dataBlock)
18: 17(ptr) Variable IncomingCallableDataNV
19: TypeInt 32 1
20: 19(int) Constant 0
21: 6(int) Constant 256
22: TypePointer IncomingCallableDataNV 6(int)
24: 6(int) Constant 2
25: 19(int) Constant 1
26: TypeFloat 32
27: TypeVector 26(float) 4
28: TypePointer CallableDataNV 27(fvec4)
29(data0): 28(ptr) Variable CallableDataNV
4(main): 2 Function None 3
5: Label
9(id): 8(ptr) Variable Function
13(size): 8(ptr) Variable Function
17(curFlags): 16(ptr) Variable Function
12: 7(ivec3) Load 11(gl_LaunchIDNV)
Store 9(id) 12
15: 7(ivec3) Load 14(gl_LaunchSizeNV)
Store 13(size) 15
20: 6(int) Load 19(gl_IncomingRayFlagsNV)
Store 17(curFlags) 20
21: 6(int) Load 17(curFlags)
23: 6(int) BitwiseAnd 21 22
Store 17(curFlags) 23
31: 30(ptr) AccessChain 26 28
Store 31 29
ExecuteCallableNV 32 33
23: 22(ptr) AccessChain 18 20
Store 23 21
ExecuteCallableNV 24 25
Return
FunctionEnd

View File

@ -24,10 +24,12 @@ ERROR: 0:19: 'gl_WorldToObjectNV' : undeclared identifier
ERROR: 0:19: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
ERROR: 0:20: 'gl_HitTNV' : undeclared identifier
ERROR: 0:21: 'gl_HitKindNV' : undeclared identifier
ERROR: 0:22: 'reportIntersectionNV' : no matching overloaded function found
ERROR: 0:23: 'ignoreIntersectionNV' : no matching overloaded function found
ERROR: 0:24: 'terminateRayNV' : no matching overloaded function found
ERROR: 28 compilation errors. No code generated.
ERROR: 0:22: 'gl_IncomingRayFlagsNV' : undeclared identifier
ERROR: 0:22: '=' : cannot convert from ' temp float' to ' temp highp uint'
ERROR: 0:23: 'reportIntersectionNV' : no matching overloaded function found
ERROR: 0:24: 'ignoreIntersectionNV' : no matching overloaded function found
ERROR: 0:25: 'terminateRayNV' : no matching overloaded function found
ERROR: 30 compilation errors. No code generated.
SPIR-V is not generated for failed compile or link

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

@ -8,8 +8,6 @@ void main()
{
uvec3 id = gl_LaunchIDNV;
uvec3 size = gl_LaunchSizeNV;
uint curFlags = gl_IncomingRayFlagsNV;
curFlags = curFlags & gl_RayFlagsOpaqueNV;
data1 = 256U;
executeCallableNV(2,1);
}

View File

@ -19,6 +19,7 @@ void main()
mat4x3 e11 = gl_WorldToObjectNV; // ERROR, unsupported builtin in stage
float e12 = gl_HitTNV; // ERROR, unsupported builtin in stage
float e13 = gl_HitKindNV; // ERROR, unsupported builtin in stage
uint curFlags = gl_IncomingRayFlagsNV; // ERROR, unsupported builtin in stage
reportIntersectionNV(1.0, 1U); // ERROR, unsupported builtin in stage
ignoreIntersectionNV(); // ERROR, unsupported builtin in stage
terminateRayNV(); // ERROR, unsupported builtin in stage

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;"
@ -6240,7 +6242,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
const char *callableDecls =
"in uvec3 gl_LaunchIDNV;"
"in uvec3 gl_LaunchSizeNV;"
"in uint gl_IncomingRayFlagsNV;"
"\n";
stageBuiltins[EShLangRayGenNV].append(rayGenDecls);
@ -8160,7 +8161,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 +8481,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 +8666,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 +8694,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 +8864,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 +8954,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 +9372,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
);

View File

@ -5,14 +5,14 @@
"site" : "github",
"subrepo" : "KhronosGroup/SPIRV-Tools",
"subdir" : "External/spirv-tools",
"commit" : "b12e7338eeeaa06571839d1dfbc21126180090cc"
"commit" : "2ff54e34ed3730477401f340c71ae14b7641031e"
},
{
"name" : "spirv-tools/external/spirv-headers",
"site" : "github",
"subrepo" : "KhronosGroup/SPIRV-Headers",
"subdir" : "External/spirv-tools/external/spirv-headers",
"commit" : "3beb2a0373101562e1a1206edc33cf64fae87b54"
"commit" : "111a25e4ae45e2b4d7c18415e1d6884712b958c4"
}
]
}