From 51760c88ca834955e22cff873f4a98b37efcd676 Mon Sep 17 00:00:00 2001 From: Daniel Koch Date: Thu, 30 May 2019 00:24:33 -0400 Subject: [PATCH] Add more subgroup testing Touch test all subgroup builtins in vert, tesc, tese, geom, frag, compute shaders before and after enabling extensions to make sure the correct errors are generated and then not generated (after enablement). --- Test/baseResults/glsl.450.subgroup.frag.out | 690 ++++++++++++++- Test/baseResults/glsl.450.subgroup.geom.out | 710 ++++++++++++++- Test/baseResults/glsl.450.subgroup.tesc.out | 710 ++++++++++++++- Test/baseResults/glsl.450.subgroup.tese.out | 710 ++++++++++++++- Test/baseResults/glsl.450.subgroup.vert.out | 710 ++++++++++++++- .../glsl.450.subgroupBasic.comp.out | 835 +++++++++++++++--- Test/glsl.450.subgroup.frag | 221 +++++ Test/glsl.450.subgroup.geom | 221 +++++ Test/glsl.450.subgroup.tesc | 221 +++++ Test/glsl.450.subgroup.tese | 220 +++++ Test/glsl.450.subgroup.vert | 221 +++++ Test/glsl.450.subgroupBasic.comp | 215 +++++ 12 files changed, 5410 insertions(+), 274 deletions(-) diff --git a/Test/baseResults/glsl.450.subgroup.frag.out b/Test/baseResults/glsl.450.subgroup.frag.out index f651d6c2..fcfe548f 100644 --- a/Test/baseResults/glsl.450.subgroup.frag.out +++ b/Test/baseResults/glsl.450.subgroup.frag.out @@ -1,19 +1,644 @@ glsl.450.subgroup.frag +ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:13: 'gl_NumSubgroups' : undeclared identifier +ERROR: 0:14: 'gl_SubgroupID' : undeclared identifier +ERROR: 0:15: 'subgroupMemoryBarrierShared' : no matching overloaded function found +ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 86 compilation errors. No code generated. + + Shader version: 450 +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic -0:? Sequence -0:4 Function Definition: main( ( global void) -0:4 Function Parameters: -0:6 Sequence -0:6 move second child to first child ( temp 4-component vector of uint) -0:6 'data' (layout( location=0) out 4-component vector of uint) -0:6 Construct uvec4 ( temp 4-component vector of uint) -0:6 'gl_SubgroupSize' ( flat in uint unknown built-in variable) -0:6 'gl_SubgroupInvocationID' ( flat in uint unknown built-in variable) -0:6 Constant: -0:6 0 (const uint) -0:6 Constant: -0:6 0 (const uint) +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_subgroup_partitioned +ERROR: node is still EOpNull! +0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) +0:3 Function Parameters: +0:3 'f4' ( in 4-component vector of float) +0:? Sequence +0:6 'gl_SubgroupSize' ( flat in uint unknown built-in variable) +0:7 'gl_SubgroupInvocationID' ( flat in uint unknown built-in variable) +0:8 subgroupBarrier ( global void) +0:9 subgroupMemoryBarrier ( global void) +0:10 subgroupMemoryBarrierBuffer ( global void) +0:11 subgroupMemoryBarrierImage ( global void) +0:12 subgroupElect ( global bool) +0:13 'gl_NumSubgroups' ( temp float) +0:14 'gl_SubgroupID' ( temp float) +0:15 Constant: +0:15 0.000000 +0:17 subgroupAll ( global bool) +0:17 Constant: +0:17 true (const bool) +0:18 subgroupAny ( global bool) +0:18 Constant: +0:18 false (const bool) +0:19 subgroupAllEqual ( global bool) +0:19 'f4' ( in 4-component vector of float) +0:21 'gl_SubgroupEqMask' ( flat in 4-component vector of uint unknown built-in variable) +0:22 'gl_SubgroupGeMask' ( flat in 4-component vector of uint unknown built-in variable) +0:23 'gl_SubgroupGtMask' ( flat in 4-component vector of uint unknown built-in variable) +0:24 'gl_SubgroupLeMask' ( flat in 4-component vector of uint unknown built-in variable) +0:25 'gl_SubgroupLtMask' ( flat in 4-component vector of uint unknown built-in variable) +0:26 subgroupBroadcast ( global 4-component vector of float) +0:26 'f4' ( in 4-component vector of float) +0:26 Constant: +0:26 0 (const uint) +0:27 subgroupBroadcastFirst ( global 4-component vector of float) +0:27 'f4' ( in 4-component vector of float) +0:28 Sequence +0:28 move second child to first child ( temp 4-component vector of uint) +0:28 'ballot' ( temp 4-component vector of uint) +0:28 subgroupBallot ( global 4-component vector of uint) +0:28 Constant: +0:28 false (const bool) +0:29 subgroupInverseBallot ( global bool) +0:29 Constant: +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:30 subgroupBallotBitExtract ( global bool) +0:30 'ballot' ( temp 4-component vector of uint) +0:30 Constant: +0:30 0 (const uint) +0:31 subgroupBallotBitCount ( global uint) +0:31 'ballot' ( temp 4-component vector of uint) +0:32 subgroupBallotInclusiveBitCount ( global uint) +0:32 'ballot' ( temp 4-component vector of uint) +0:33 subgroupBallotExclusiveBitCount ( global uint) +0:33 'ballot' ( temp 4-component vector of uint) +0:34 subgroupBallotFindLSB ( global uint) +0:34 'ballot' ( temp 4-component vector of uint) +0:35 subgroupBallotFindMSB ( global uint) +0:35 'ballot' ( temp 4-component vector of uint) +0:37 subgroupShuffle ( global 4-component vector of float) +0:37 'f4' ( in 4-component vector of float) +0:37 Constant: +0:37 0 (const uint) +0:38 subgroupShuffleXor ( global 4-component vector of float) +0:38 'f4' ( in 4-component vector of float) +0:38 Constant: +0:38 1 (const uint) +0:39 subgroupShuffleUp ( global 4-component vector of float) +0:39 'f4' ( in 4-component vector of float) +0:39 Constant: +0:39 1 (const uint) +0:40 subgroupShuffleDown ( global 4-component vector of float) +0:40 'f4' ( in 4-component vector of float) +0:40 Constant: +0:40 1 (const uint) +0:42 move second child to first child ( temp 4-component vector of float) +0:42 'result' ( temp 4-component vector of float) +0:42 subgroupAdd ( global 4-component vector of float) +0:42 'f4' ( in 4-component vector of float) +0:43 subgroupMul ( global 4-component vector of float) +0:43 'f4' ( in 4-component vector of float) +0:44 subgroupMin ( global 4-component vector of float) +0:44 'f4' ( in 4-component vector of float) +0:45 subgroupMax ( global 4-component vector of float) +0:45 'f4' ( in 4-component vector of float) +0:46 subgroupAnd ( global 4-component vector of uint) +0:46 'ballot' ( temp 4-component vector of uint) +0:47 subgroupOr ( global 4-component vector of uint) +0:47 'ballot' ( temp 4-component vector of uint) +0:48 subgroupXor ( global 4-component vector of uint) +0:48 'ballot' ( temp 4-component vector of uint) +0:49 subgroupInclusiveAdd ( global 4-component vector of float) +0:49 'f4' ( in 4-component vector of float) +0:50 subgroupInclusiveMul ( global 4-component vector of float) +0:50 'f4' ( in 4-component vector of float) +0:51 subgroupInclusiveMin ( global 4-component vector of float) +0:51 'f4' ( in 4-component vector of float) +0:52 subgroupInclusiveMax ( global 4-component vector of float) +0:52 'f4' ( in 4-component vector of float) +0:53 subgroupInclusiveAnd ( global 4-component vector of uint) +0:53 'ballot' ( temp 4-component vector of uint) +0:54 subgroupInclusiveOr ( global 4-component vector of uint) +0:54 'ballot' ( temp 4-component vector of uint) +0:55 subgroupInclusiveXor ( global 4-component vector of uint) +0:55 'ballot' ( temp 4-component vector of uint) +0:56 subgroupExclusiveAdd ( global 4-component vector of float) +0:56 'f4' ( in 4-component vector of float) +0:57 subgroupExclusiveMul ( global 4-component vector of float) +0:57 'f4' ( in 4-component vector of float) +0:58 subgroupExclusiveMin ( global 4-component vector of float) +0:58 'f4' ( in 4-component vector of float) +0:59 subgroupExclusiveMax ( global 4-component vector of float) +0:59 'f4' ( in 4-component vector of float) +0:60 subgroupExclusiveAnd ( global 4-component vector of uint) +0:60 'ballot' ( temp 4-component vector of uint) +0:61 subgroupExclusiveOr ( global 4-component vector of uint) +0:61 'ballot' ( temp 4-component vector of uint) +0:62 subgroupExclusiveXor ( global 4-component vector of uint) +0:62 'ballot' ( temp 4-component vector of uint) +0:64 subgroupClusteredAdd ( global 4-component vector of float) +0:64 'f4' ( in 4-component vector of float) +0:64 Constant: +0:64 2 (const uint) +0:65 subgroupClusteredMul ( global 4-component vector of float) +0:65 'f4' ( in 4-component vector of float) +0:65 Constant: +0:65 2 (const uint) +0:66 subgroupClusteredMin ( global 4-component vector of float) +0:66 'f4' ( in 4-component vector of float) +0:66 Constant: +0:66 2 (const uint) +0:67 subgroupClusteredMax ( global 4-component vector of float) +0:67 'f4' ( in 4-component vector of float) +0:67 Constant: +0:67 2 (const uint) +0:68 subgroupClusteredAnd ( global 4-component vector of uint) +0:68 'ballot' ( temp 4-component vector of uint) +0:68 Constant: +0:68 2 (const uint) +0:69 subgroupClusteredOr ( global 4-component vector of uint) +0:69 'ballot' ( temp 4-component vector of uint) +0:69 Constant: +0:69 2 (const uint) +0:70 subgroupClusteredXor ( global 4-component vector of uint) +0:70 'ballot' ( temp 4-component vector of uint) +0:70 Constant: +0:70 2 (const uint) +0:72 subgroupQuadBroadcast ( global 4-component vector of float) +0:72 'f4' ( in 4-component vector of float) +0:72 Constant: +0:72 0 (const uint) +0:73 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:73 'f4' ( in 4-component vector of float) +0:74 subgroupQuadSwapVertical ( global 4-component vector of float) +0:74 'f4' ( in 4-component vector of float) +0:75 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:75 'f4' ( in 4-component vector of float) +0:77 Sequence +0:77 move second child to first child ( temp 4-component vector of uint) +0:77 'parti' ( temp 4-component vector of uint) +0:77 subgroupPartitionNV ( global 4-component vector of uint) +0:77 'f4' ( in 4-component vector of float) +0:78 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:78 'f4' ( in 4-component vector of float) +0:78 'parti' ( temp 4-component vector of uint) +0:79 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:79 'f4' ( in 4-component vector of float) +0:79 'parti' ( temp 4-component vector of uint) +0:80 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:80 'f4' ( in 4-component vector of float) +0:80 'parti' ( temp 4-component vector of uint) +0:81 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:81 'f4' ( in 4-component vector of float) +0:81 'parti' ( temp 4-component vector of uint) +0:82 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:82 'ballot' ( temp 4-component vector of uint) +0:82 'parti' ( temp 4-component vector of uint) +0:83 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:83 'ballot' ( temp 4-component vector of uint) +0:83 'parti' ( temp 4-component vector of uint) +0:84 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:84 'ballot' ( temp 4-component vector of uint) +0:84 'parti' ( temp 4-component vector of uint) +0:85 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:85 'f4' ( in 4-component vector of float) +0:85 'parti' ( temp 4-component vector of uint) +0:86 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:86 'f4' ( in 4-component vector of float) +0:86 'parti' ( temp 4-component vector of uint) +0:87 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:87 'f4' ( in 4-component vector of float) +0:87 'parti' ( temp 4-component vector of uint) +0:88 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:88 'f4' ( in 4-component vector of float) +0:88 'parti' ( temp 4-component vector of uint) +0:89 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:89 'ballot' ( temp 4-component vector of uint) +0:89 'parti' ( temp 4-component vector of uint) +0:90 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:90 'ballot' ( temp 4-component vector of uint) +0:90 'parti' ( temp 4-component vector of uint) +0:91 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:91 'ballot' ( temp 4-component vector of uint) +0:91 'parti' ( temp 4-component vector of uint) +0:92 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:92 'f4' ( in 4-component vector of float) +0:92 'parti' ( temp 4-component vector of uint) +0:93 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:93 'f4' ( in 4-component vector of float) +0:93 'parti' ( temp 4-component vector of uint) +0:94 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:94 'f4' ( in 4-component vector of float) +0:94 'parti' ( temp 4-component vector of uint) +0:95 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:95 'f4' ( in 4-component vector of float) +0:95 'parti' ( temp 4-component vector of uint) +0:96 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:96 'ballot' ( temp 4-component vector of uint) +0:96 'parti' ( temp 4-component vector of uint) +0:97 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:97 'ballot' ( temp 4-component vector of uint) +0:97 'parti' ( temp 4-component vector of uint) +0:98 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:98 'ballot' ( temp 4-component vector of uint) +0:98 'parti' ( temp 4-component vector of uint) +0:100 Branch: Return with expression +0:100 'result' ( temp 4-component vector of float) +0:105 Function Definition: main( ( global void) +0:105 Function Parameters: +0:107 Sequence +0:107 move second child to first child ( temp 4-component vector of uint) +0:107 'data' (layout( location=0) out 4-component vector of uint) +0:107 Construct uvec4 ( temp 4-component vector of uint) +0:107 'gl_SubgroupSize' ( flat in uint unknown built-in variable) +0:107 'gl_SubgroupInvocationID' ( flat in uint unknown built-in variable) +0:107 Constant: +0:107 0 (const uint) +0:107 Constant: +0:107 0 (const uint) +0:108 subgroupBarrier ( global void) +0:109 subgroupMemoryBarrier ( global void) +0:110 subgroupMemoryBarrierBuffer ( global void) +0:111 subgroupMemoryBarrierImage ( global void) +0:112 subgroupElect ( global bool) +0:116 Function Definition: ballot_works(vf4; ( global void) +0:116 Function Parameters: +0:116 'f4' ( in 4-component vector of float) +0:117 Sequence +0:117 'gl_SubgroupEqMask' ( flat in 4-component vector of uint unknown built-in variable) +0:118 'gl_SubgroupGeMask' ( flat in 4-component vector of uint unknown built-in variable) +0:119 'gl_SubgroupGtMask' ( flat in 4-component vector of uint unknown built-in variable) +0:120 'gl_SubgroupLeMask' ( flat in 4-component vector of uint unknown built-in variable) +0:121 'gl_SubgroupLtMask' ( flat in 4-component vector of uint unknown built-in variable) +0:122 subgroupBroadcast ( global 4-component vector of float) +0:122 'f4' ( in 4-component vector of float) +0:122 Constant: +0:122 0 (const uint) +0:123 subgroupBroadcastFirst ( global 4-component vector of float) +0:123 'f4' ( in 4-component vector of float) +0:124 Sequence +0:124 move second child to first child ( temp 4-component vector of uint) +0:124 'ballot' ( temp 4-component vector of uint) +0:124 subgroupBallot ( global 4-component vector of uint) +0:124 Constant: +0:124 false (const bool) +0:125 subgroupInverseBallot ( global bool) +0:125 Constant: +0:125 1 (const uint) +0:125 1 (const uint) +0:125 1 (const uint) +0:125 1 (const uint) +0:126 subgroupBallotBitExtract ( global bool) +0:126 'ballot' ( temp 4-component vector of uint) +0:126 Constant: +0:126 0 (const uint) +0:127 subgroupBallotBitCount ( global uint) +0:127 'ballot' ( temp 4-component vector of uint) +0:128 subgroupBallotInclusiveBitCount ( global uint) +0:128 'ballot' ( temp 4-component vector of uint) +0:129 subgroupBallotExclusiveBitCount ( global uint) +0:129 'ballot' ( temp 4-component vector of uint) +0:130 subgroupBallotFindLSB ( global uint) +0:130 'ballot' ( temp 4-component vector of uint) +0:131 subgroupBallotFindMSB ( global uint) +0:131 'ballot' ( temp 4-component vector of uint) +0:135 Function Definition: vote_works(vf4; ( global void) +0:135 Function Parameters: +0:135 'f4' ( in 4-component vector of float) +0:137 Sequence +0:137 subgroupAll ( global bool) +0:137 Constant: +0:137 true (const bool) +0:138 subgroupAny ( global bool) +0:138 Constant: +0:138 false (const bool) +0:139 subgroupAllEqual ( global bool) +0:139 'f4' ( in 4-component vector of float) +0:144 Function Definition: shuffle_works(vf4; ( global void) +0:144 Function Parameters: +0:144 'f4' ( in 4-component vector of float) +0:146 Sequence +0:146 subgroupShuffle ( global 4-component vector of float) +0:146 'f4' ( in 4-component vector of float) +0:146 Constant: +0:146 0 (const uint) +0:147 subgroupShuffleXor ( global 4-component vector of float) +0:147 'f4' ( in 4-component vector of float) +0:147 Constant: +0:147 1 (const uint) +0:148 subgroupShuffleUp ( global 4-component vector of float) +0:148 'f4' ( in 4-component vector of float) +0:148 Constant: +0:148 1 (const uint) +0:149 subgroupShuffleDown ( global 4-component vector of float) +0:149 'f4' ( in 4-component vector of float) +0:149 Constant: +0:149 1 (const uint) +0:153 Function Definition: arith_works(vf4; ( global void) +0:153 Function Parameters: +0:153 'f4' ( in 4-component vector of float) +0:? Sequence +0:156 subgroupAdd ( global 4-component vector of float) +0:156 'f4' ( in 4-component vector of float) +0:157 subgroupMul ( global 4-component vector of float) +0:157 'f4' ( in 4-component vector of float) +0:158 subgroupMin ( global 4-component vector of float) +0:158 'f4' ( in 4-component vector of float) +0:159 subgroupMax ( global 4-component vector of float) +0:159 'f4' ( in 4-component vector of float) +0:160 subgroupAnd ( global 4-component vector of uint) +0:160 'ballot' ( temp 4-component vector of uint) +0:161 subgroupOr ( global 4-component vector of uint) +0:161 'ballot' ( temp 4-component vector of uint) +0:162 subgroupXor ( global 4-component vector of uint) +0:162 'ballot' ( temp 4-component vector of uint) +0:163 subgroupInclusiveAdd ( global 4-component vector of float) +0:163 'f4' ( in 4-component vector of float) +0:164 subgroupInclusiveMul ( global 4-component vector of float) +0:164 'f4' ( in 4-component vector of float) +0:165 subgroupInclusiveMin ( global 4-component vector of float) +0:165 'f4' ( in 4-component vector of float) +0:166 subgroupInclusiveMax ( global 4-component vector of float) +0:166 'f4' ( in 4-component vector of float) +0:167 subgroupInclusiveAnd ( global 4-component vector of uint) +0:167 'ballot' ( temp 4-component vector of uint) +0:168 subgroupInclusiveOr ( global 4-component vector of uint) +0:168 'ballot' ( temp 4-component vector of uint) +0:169 subgroupInclusiveXor ( global 4-component vector of uint) +0:169 'ballot' ( temp 4-component vector of uint) +0:170 subgroupExclusiveAdd ( global 4-component vector of float) +0:170 'f4' ( in 4-component vector of float) +0:171 subgroupExclusiveMul ( global 4-component vector of float) +0:171 'f4' ( in 4-component vector of float) +0:172 subgroupExclusiveMin ( global 4-component vector of float) +0:172 'f4' ( in 4-component vector of float) +0:173 subgroupExclusiveMax ( global 4-component vector of float) +0:173 'f4' ( in 4-component vector of float) +0:174 subgroupExclusiveAnd ( global 4-component vector of uint) +0:174 'ballot' ( temp 4-component vector of uint) +0:175 subgroupExclusiveOr ( global 4-component vector of uint) +0:175 'ballot' ( temp 4-component vector of uint) +0:176 subgroupExclusiveXor ( global 4-component vector of uint) +0:176 'ballot' ( temp 4-component vector of uint) +0:180 Function Definition: clustered_works(vf4; ( global void) +0:180 Function Parameters: +0:180 'f4' ( in 4-component vector of float) +0:182 Sequence +0:182 Sequence +0:182 move second child to first child ( temp 4-component vector of uint) +0:182 'ballot' ( temp 4-component vector of uint) +0:182 Constant: +0:182 85 (const uint) +0:182 0 (const uint) +0:182 0 (const uint) +0:182 0 (const uint) +0:183 subgroupClusteredAdd ( global 4-component vector of float) +0:183 'f4' ( in 4-component vector of float) +0:183 Constant: +0:183 2 (const uint) +0:184 subgroupClusteredMul ( global 4-component vector of float) +0:184 'f4' ( in 4-component vector of float) +0:184 Constant: +0:184 2 (const uint) +0:185 subgroupClusteredMin ( global 4-component vector of float) +0:185 'f4' ( in 4-component vector of float) +0:185 Constant: +0:185 2 (const uint) +0:186 subgroupClusteredMax ( global 4-component vector of float) +0:186 'f4' ( in 4-component vector of float) +0:186 Constant: +0:186 2 (const uint) +0:187 subgroupClusteredAnd ( global 4-component vector of uint) +0:187 'ballot' ( temp 4-component vector of uint) +0:187 Constant: +0:187 2 (const uint) +0:188 subgroupClusteredOr ( global 4-component vector of uint) +0:188 'ballot' ( temp 4-component vector of uint) +0:188 Constant: +0:188 2 (const uint) +0:189 subgroupClusteredXor ( global 4-component vector of uint) +0:189 'ballot' ( temp 4-component vector of uint) +0:189 Constant: +0:189 2 (const uint) +0:193 Function Definition: quad_works(vf4; ( global void) +0:193 Function Parameters: +0:193 'f4' ( in 4-component vector of float) +0:195 Sequence +0:195 subgroupQuadBroadcast ( global 4-component vector of float) +0:195 'f4' ( in 4-component vector of float) +0:195 Constant: +0:195 0 (const uint) +0:196 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:196 'f4' ( in 4-component vector of float) +0:197 subgroupQuadSwapVertical ( global 4-component vector of float) +0:197 'f4' ( in 4-component vector of float) +0:198 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:198 'f4' ( in 4-component vector of float) +0:202 Function Definition: partitioned_works(vf4; ( global void) +0:202 Function Parameters: +0:202 'f4' ( in 4-component vector of float) +0:204 Sequence +0:204 Sequence +0:204 move second child to first child ( temp 4-component vector of uint) +0:204 'parti' ( temp 4-component vector of uint) +0:204 subgroupPartitionNV ( global 4-component vector of uint) +0:204 'f4' ( in 4-component vector of float) +0:205 Sequence +0:205 move second child to first child ( temp 4-component vector of uint) +0:205 'ballot' ( temp 4-component vector of uint) +0:205 Constant: +0:205 85 (const uint) +0:205 0 (const uint) +0:205 0 (const uint) +0:205 0 (const uint) +0:206 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:206 'f4' ( in 4-component vector of float) +0:206 'parti' ( temp 4-component vector of uint) +0:207 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:207 'f4' ( in 4-component vector of float) +0:207 'parti' ( temp 4-component vector of uint) +0:208 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:208 'f4' ( in 4-component vector of float) +0:208 'parti' ( temp 4-component vector of uint) +0:209 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:209 'f4' ( in 4-component vector of float) +0:209 'parti' ( temp 4-component vector of uint) +0:210 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:210 'ballot' ( temp 4-component vector of uint) +0:210 'parti' ( temp 4-component vector of uint) +0:211 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:211 'ballot' ( temp 4-component vector of uint) +0:211 'parti' ( temp 4-component vector of uint) +0:212 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:212 'ballot' ( temp 4-component vector of uint) +0:212 'parti' ( temp 4-component vector of uint) +0:213 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:213 'f4' ( in 4-component vector of float) +0:213 'parti' ( temp 4-component vector of uint) +0:214 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:214 'f4' ( in 4-component vector of float) +0:214 'parti' ( temp 4-component vector of uint) +0:215 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:215 'f4' ( in 4-component vector of float) +0:215 'parti' ( temp 4-component vector of uint) +0:216 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:216 'f4' ( in 4-component vector of float) +0:216 'parti' ( temp 4-component vector of uint) +0:217 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:217 'ballot' ( temp 4-component vector of uint) +0:217 'parti' ( temp 4-component vector of uint) +0:218 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:218 'ballot' ( temp 4-component vector of uint) +0:218 'parti' ( temp 4-component vector of uint) +0:219 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:219 'ballot' ( temp 4-component vector of uint) +0:219 'parti' ( temp 4-component vector of uint) +0:220 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:220 'f4' ( in 4-component vector of float) +0:220 'parti' ( temp 4-component vector of uint) +0:221 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:221 'f4' ( in 4-component vector of float) +0:221 'parti' ( temp 4-component vector of uint) +0:222 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:222 'f4' ( in 4-component vector of float) +0:222 'parti' ( temp 4-component vector of uint) +0:223 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:223 'f4' ( in 4-component vector of float) +0:223 'parti' ( temp 4-component vector of uint) +0:224 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:224 'ballot' ( temp 4-component vector of uint) +0:224 'parti' ( temp 4-component vector of uint) +0:225 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:225 'ballot' ( temp 4-component vector of uint) +0:225 'parti' ( temp 4-component vector of uint) +0:226 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:226 'ballot' ( temp 4-component vector of uint) +0:226 'parti' ( temp 4-component vector of uint) 0:? Linker Objects 0:? 'data' (layout( location=0) out 4-component vector of uint) @@ -22,20 +647,33 @@ Linked fragment stage: Shader version: 450 +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic -0:? Sequence -0:4 Function Definition: main( ( global void) -0:4 Function Parameters: -0:6 Sequence -0:6 move second child to first child ( temp 4-component vector of uint) -0:6 'data' (layout( location=0) out 4-component vector of uint) -0:6 Construct uvec4 ( temp 4-component vector of uint) -0:6 'gl_SubgroupSize' ( flat in uint unknown built-in variable) -0:6 'gl_SubgroupInvocationID' ( flat in uint unknown built-in variable) -0:6 Constant: -0:6 0 (const uint) -0:6 Constant: -0:6 0 (const uint) +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_subgroup_partitioned +ERROR: node is still EOpNull! +0:105 Function Definition: main( ( global void) +0:105 Function Parameters: +0:107 Sequence +0:107 move second child to first child ( temp 4-component vector of uint) +0:107 'data' (layout( location=0) out 4-component vector of uint) +0:107 Construct uvec4 ( temp 4-component vector of uint) +0:107 'gl_SubgroupSize' ( flat in uint unknown built-in variable) +0:107 'gl_SubgroupInvocationID' ( flat in uint unknown built-in variable) +0:107 Constant: +0:107 0 (const uint) +0:107 Constant: +0:107 0 (const uint) +0:108 subgroupBarrier ( global void) +0:109 subgroupMemoryBarrier ( global void) +0:110 subgroupMemoryBarrierBuffer ( global void) +0:111 subgroupMemoryBarrierImage ( global void) +0:112 subgroupElect ( global bool) 0:? Linker Objects 0:? 'data' (layout( location=0) out 4-component vector of uint) diff --git a/Test/baseResults/glsl.450.subgroup.geom.out b/Test/baseResults/glsl.450.subgroup.geom.out index cddf7da7..83c97286 100644 --- a/Test/baseResults/glsl.450.subgroup.geom.out +++ b/Test/baseResults/glsl.450.subgroup.geom.out @@ -1,28 +1,653 @@ glsl.450.subgroup.geom +ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:13: 'gl_NumSubgroups' : undeclared identifier +ERROR: 0:14: 'gl_SubgroupID' : undeclared identifier +ERROR: 0:15: 'subgroupMemoryBarrierShared' : no matching overloaded function found +ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 86 compilation errors. No code generated. + + Shader version: 450 +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_subgroup_partitioned invocations = -1 max_vertices = 1 input primitive = points output primitive = points -0:? Sequence -0:10 Function Definition: main( ( global void) -0:10 Function Parameters: -0:12 Sequence -0:12 move second child to first child ( temp 4-component vector of uint) -0:12 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) -0:12 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) -0:12 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) -0:12 Constant: -0:12 0 (const uint) -0:12 'gl_PrimitiveIDIn' ( in int PrimitiveID) -0:12 Construct uvec4 ( temp 4-component vector of uint) -0:12 'gl_SubgroupSize' ( in uint unknown built-in variable) -0:12 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) -0:12 Constant: -0:12 0 (const uint) -0:12 Constant: -0:12 0 (const uint) +ERROR: node is still EOpNull! +0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) +0:3 Function Parameters: +0:3 'f4' ( in 4-component vector of float) +0:? Sequence +0:6 'gl_SubgroupSize' ( in uint unknown built-in variable) +0:7 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) +0:8 subgroupBarrier ( global void) +0:9 subgroupMemoryBarrier ( global void) +0:10 subgroupMemoryBarrierBuffer ( global void) +0:11 subgroupMemoryBarrierImage ( global void) +0:12 subgroupElect ( global bool) +0:13 'gl_NumSubgroups' ( temp float) +0:14 'gl_SubgroupID' ( temp float) +0:15 Constant: +0:15 0.000000 +0:17 subgroupAll ( global bool) +0:17 Constant: +0:17 true (const bool) +0:18 subgroupAny ( global bool) +0:18 Constant: +0:18 false (const bool) +0:19 subgroupAllEqual ( global bool) +0:19 'f4' ( in 4-component vector of float) +0:21 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable) +0:22 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable) +0:23 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable) +0:24 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable) +0:25 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable) +0:26 subgroupBroadcast ( global 4-component vector of float) +0:26 'f4' ( in 4-component vector of float) +0:26 Constant: +0:26 0 (const uint) +0:27 subgroupBroadcastFirst ( global 4-component vector of float) +0:27 'f4' ( in 4-component vector of float) +0:28 Sequence +0:28 move second child to first child ( temp 4-component vector of uint) +0:28 'ballot' ( temp 4-component vector of uint) +0:28 subgroupBallot ( global 4-component vector of uint) +0:28 Constant: +0:28 false (const bool) +0:29 subgroupInverseBallot ( global bool) +0:29 Constant: +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:30 subgroupBallotBitExtract ( global bool) +0:30 'ballot' ( temp 4-component vector of uint) +0:30 Constant: +0:30 0 (const uint) +0:31 subgroupBallotBitCount ( global uint) +0:31 'ballot' ( temp 4-component vector of uint) +0:32 subgroupBallotInclusiveBitCount ( global uint) +0:32 'ballot' ( temp 4-component vector of uint) +0:33 subgroupBallotExclusiveBitCount ( global uint) +0:33 'ballot' ( temp 4-component vector of uint) +0:34 subgroupBallotFindLSB ( global uint) +0:34 'ballot' ( temp 4-component vector of uint) +0:35 subgroupBallotFindMSB ( global uint) +0:35 'ballot' ( temp 4-component vector of uint) +0:37 subgroupShuffle ( global 4-component vector of float) +0:37 'f4' ( in 4-component vector of float) +0:37 Constant: +0:37 0 (const uint) +0:38 subgroupShuffleXor ( global 4-component vector of float) +0:38 'f4' ( in 4-component vector of float) +0:38 Constant: +0:38 1 (const uint) +0:39 subgroupShuffleUp ( global 4-component vector of float) +0:39 'f4' ( in 4-component vector of float) +0:39 Constant: +0:39 1 (const uint) +0:40 subgroupShuffleDown ( global 4-component vector of float) +0:40 'f4' ( in 4-component vector of float) +0:40 Constant: +0:40 1 (const uint) +0:42 move second child to first child ( temp 4-component vector of float) +0:42 'result' ( temp 4-component vector of float) +0:42 subgroupAdd ( global 4-component vector of float) +0:42 'f4' ( in 4-component vector of float) +0:43 subgroupMul ( global 4-component vector of float) +0:43 'f4' ( in 4-component vector of float) +0:44 subgroupMin ( global 4-component vector of float) +0:44 'f4' ( in 4-component vector of float) +0:45 subgroupMax ( global 4-component vector of float) +0:45 'f4' ( in 4-component vector of float) +0:46 subgroupAnd ( global 4-component vector of uint) +0:46 'ballot' ( temp 4-component vector of uint) +0:47 subgroupOr ( global 4-component vector of uint) +0:47 'ballot' ( temp 4-component vector of uint) +0:48 subgroupXor ( global 4-component vector of uint) +0:48 'ballot' ( temp 4-component vector of uint) +0:49 subgroupInclusiveAdd ( global 4-component vector of float) +0:49 'f4' ( in 4-component vector of float) +0:50 subgroupInclusiveMul ( global 4-component vector of float) +0:50 'f4' ( in 4-component vector of float) +0:51 subgroupInclusiveMin ( global 4-component vector of float) +0:51 'f4' ( in 4-component vector of float) +0:52 subgroupInclusiveMax ( global 4-component vector of float) +0:52 'f4' ( in 4-component vector of float) +0:53 subgroupInclusiveAnd ( global 4-component vector of uint) +0:53 'ballot' ( temp 4-component vector of uint) +0:54 subgroupInclusiveOr ( global 4-component vector of uint) +0:54 'ballot' ( temp 4-component vector of uint) +0:55 subgroupInclusiveXor ( global 4-component vector of uint) +0:55 'ballot' ( temp 4-component vector of uint) +0:56 subgroupExclusiveAdd ( global 4-component vector of float) +0:56 'f4' ( in 4-component vector of float) +0:57 subgroupExclusiveMul ( global 4-component vector of float) +0:57 'f4' ( in 4-component vector of float) +0:58 subgroupExclusiveMin ( global 4-component vector of float) +0:58 'f4' ( in 4-component vector of float) +0:59 subgroupExclusiveMax ( global 4-component vector of float) +0:59 'f4' ( in 4-component vector of float) +0:60 subgroupExclusiveAnd ( global 4-component vector of uint) +0:60 'ballot' ( temp 4-component vector of uint) +0:61 subgroupExclusiveOr ( global 4-component vector of uint) +0:61 'ballot' ( temp 4-component vector of uint) +0:62 subgroupExclusiveXor ( global 4-component vector of uint) +0:62 'ballot' ( temp 4-component vector of uint) +0:64 subgroupClusteredAdd ( global 4-component vector of float) +0:64 'f4' ( in 4-component vector of float) +0:64 Constant: +0:64 2 (const uint) +0:65 subgroupClusteredMul ( global 4-component vector of float) +0:65 'f4' ( in 4-component vector of float) +0:65 Constant: +0:65 2 (const uint) +0:66 subgroupClusteredMin ( global 4-component vector of float) +0:66 'f4' ( in 4-component vector of float) +0:66 Constant: +0:66 2 (const uint) +0:67 subgroupClusteredMax ( global 4-component vector of float) +0:67 'f4' ( in 4-component vector of float) +0:67 Constant: +0:67 2 (const uint) +0:68 subgroupClusteredAnd ( global 4-component vector of uint) +0:68 'ballot' ( temp 4-component vector of uint) +0:68 Constant: +0:68 2 (const uint) +0:69 subgroupClusteredOr ( global 4-component vector of uint) +0:69 'ballot' ( temp 4-component vector of uint) +0:69 Constant: +0:69 2 (const uint) +0:70 subgroupClusteredXor ( global 4-component vector of uint) +0:70 'ballot' ( temp 4-component vector of uint) +0:70 Constant: +0:70 2 (const uint) +0:72 subgroupQuadBroadcast ( global 4-component vector of float) +0:72 'f4' ( in 4-component vector of float) +0:72 Constant: +0:72 0 (const uint) +0:73 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:73 'f4' ( in 4-component vector of float) +0:74 subgroupQuadSwapVertical ( global 4-component vector of float) +0:74 'f4' ( in 4-component vector of float) +0:75 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:75 'f4' ( in 4-component vector of float) +0:77 Sequence +0:77 move second child to first child ( temp 4-component vector of uint) +0:77 'parti' ( temp 4-component vector of uint) +0:77 subgroupPartitionNV ( global 4-component vector of uint) +0:77 'f4' ( in 4-component vector of float) +0:78 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:78 'f4' ( in 4-component vector of float) +0:78 'parti' ( temp 4-component vector of uint) +0:79 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:79 'f4' ( in 4-component vector of float) +0:79 'parti' ( temp 4-component vector of uint) +0:80 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:80 'f4' ( in 4-component vector of float) +0:80 'parti' ( temp 4-component vector of uint) +0:81 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:81 'f4' ( in 4-component vector of float) +0:81 'parti' ( temp 4-component vector of uint) +0:82 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:82 'ballot' ( temp 4-component vector of uint) +0:82 'parti' ( temp 4-component vector of uint) +0:83 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:83 'ballot' ( temp 4-component vector of uint) +0:83 'parti' ( temp 4-component vector of uint) +0:84 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:84 'ballot' ( temp 4-component vector of uint) +0:84 'parti' ( temp 4-component vector of uint) +0:85 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:85 'f4' ( in 4-component vector of float) +0:85 'parti' ( temp 4-component vector of uint) +0:86 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:86 'f4' ( in 4-component vector of float) +0:86 'parti' ( temp 4-component vector of uint) +0:87 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:87 'f4' ( in 4-component vector of float) +0:87 'parti' ( temp 4-component vector of uint) +0:88 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:88 'f4' ( in 4-component vector of float) +0:88 'parti' ( temp 4-component vector of uint) +0:89 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:89 'ballot' ( temp 4-component vector of uint) +0:89 'parti' ( temp 4-component vector of uint) +0:90 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:90 'ballot' ( temp 4-component vector of uint) +0:90 'parti' ( temp 4-component vector of uint) +0:91 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:91 'ballot' ( temp 4-component vector of uint) +0:91 'parti' ( temp 4-component vector of uint) +0:92 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:92 'f4' ( in 4-component vector of float) +0:92 'parti' ( temp 4-component vector of uint) +0:93 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:93 'f4' ( in 4-component vector of float) +0:93 'parti' ( temp 4-component vector of uint) +0:94 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:94 'f4' ( in 4-component vector of float) +0:94 'parti' ( temp 4-component vector of uint) +0:95 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:95 'f4' ( in 4-component vector of float) +0:95 'parti' ( temp 4-component vector of uint) +0:96 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:96 'ballot' ( temp 4-component vector of uint) +0:96 'parti' ( temp 4-component vector of uint) +0:97 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:97 'ballot' ( temp 4-component vector of uint) +0:97 'parti' ( temp 4-component vector of uint) +0:98 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:98 'ballot' ( temp 4-component vector of uint) +0:98 'parti' ( temp 4-component vector of uint) +0:100 Branch: Return with expression +0:100 'result' ( temp 4-component vector of float) +0:111 Function Definition: main( ( global void) +0:111 Function Parameters: +0:113 Sequence +0:113 move second child to first child ( temp 4-component vector of uint) +0:113 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) +0:113 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) +0:113 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) +0:113 Constant: +0:113 0 (const uint) +0:113 'gl_PrimitiveIDIn' ( in int PrimitiveID) +0:113 Construct uvec4 ( temp 4-component vector of uint) +0:113 'gl_SubgroupSize' ( in uint unknown built-in variable) +0:113 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) +0:113 Constant: +0:113 0 (const uint) +0:113 Constant: +0:113 0 (const uint) +0:114 subgroupBarrier ( global void) +0:115 subgroupMemoryBarrier ( global void) +0:116 subgroupMemoryBarrierBuffer ( global void) +0:117 subgroupMemoryBarrierImage ( global void) +0:118 subgroupElect ( global bool) +0:122 Function Definition: ballot_works(vf4; ( global void) +0:122 Function Parameters: +0:122 'f4' ( in 4-component vector of float) +0:123 Sequence +0:123 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable) +0:124 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable) +0:125 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable) +0:126 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable) +0:127 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable) +0:128 subgroupBroadcast ( global 4-component vector of float) +0:128 'f4' ( in 4-component vector of float) +0:128 Constant: +0:128 0 (const uint) +0:129 subgroupBroadcastFirst ( global 4-component vector of float) +0:129 'f4' ( in 4-component vector of float) +0:130 Sequence +0:130 move second child to first child ( temp 4-component vector of uint) +0:130 'ballot' ( temp 4-component vector of uint) +0:130 subgroupBallot ( global 4-component vector of uint) +0:130 Constant: +0:130 false (const bool) +0:131 subgroupInverseBallot ( global bool) +0:131 Constant: +0:131 1 (const uint) +0:131 1 (const uint) +0:131 1 (const uint) +0:131 1 (const uint) +0:132 subgroupBallotBitExtract ( global bool) +0:132 'ballot' ( temp 4-component vector of uint) +0:132 Constant: +0:132 0 (const uint) +0:133 subgroupBallotBitCount ( global uint) +0:133 'ballot' ( temp 4-component vector of uint) +0:134 subgroupBallotInclusiveBitCount ( global uint) +0:134 'ballot' ( temp 4-component vector of uint) +0:135 subgroupBallotExclusiveBitCount ( global uint) +0:135 'ballot' ( temp 4-component vector of uint) +0:136 subgroupBallotFindLSB ( global uint) +0:136 'ballot' ( temp 4-component vector of uint) +0:137 subgroupBallotFindMSB ( global uint) +0:137 'ballot' ( temp 4-component vector of uint) +0:141 Function Definition: vote_works(vf4; ( global void) +0:141 Function Parameters: +0:141 'f4' ( in 4-component vector of float) +0:143 Sequence +0:143 subgroupAll ( global bool) +0:143 Constant: +0:143 true (const bool) +0:144 subgroupAny ( global bool) +0:144 Constant: +0:144 false (const bool) +0:145 subgroupAllEqual ( global bool) +0:145 'f4' ( in 4-component vector of float) +0:150 Function Definition: shuffle_works(vf4; ( global void) +0:150 Function Parameters: +0:150 'f4' ( in 4-component vector of float) +0:152 Sequence +0:152 subgroupShuffle ( global 4-component vector of float) +0:152 'f4' ( in 4-component vector of float) +0:152 Constant: +0:152 0 (const uint) +0:153 subgroupShuffleXor ( global 4-component vector of float) +0:153 'f4' ( in 4-component vector of float) +0:153 Constant: +0:153 1 (const uint) +0:154 subgroupShuffleUp ( global 4-component vector of float) +0:154 'f4' ( in 4-component vector of float) +0:154 Constant: +0:154 1 (const uint) +0:155 subgroupShuffleDown ( global 4-component vector of float) +0:155 'f4' ( in 4-component vector of float) +0:155 Constant: +0:155 1 (const uint) +0:159 Function Definition: arith_works(vf4; ( global void) +0:159 Function Parameters: +0:159 'f4' ( in 4-component vector of float) +0:? Sequence +0:162 subgroupAdd ( global 4-component vector of float) +0:162 'f4' ( in 4-component vector of float) +0:163 subgroupMul ( global 4-component vector of float) +0:163 'f4' ( in 4-component vector of float) +0:164 subgroupMin ( global 4-component vector of float) +0:164 'f4' ( in 4-component vector of float) +0:165 subgroupMax ( global 4-component vector of float) +0:165 'f4' ( in 4-component vector of float) +0:166 subgroupAnd ( global 4-component vector of uint) +0:166 'ballot' ( temp 4-component vector of uint) +0:167 subgroupOr ( global 4-component vector of uint) +0:167 'ballot' ( temp 4-component vector of uint) +0:168 subgroupXor ( global 4-component vector of uint) +0:168 'ballot' ( temp 4-component vector of uint) +0:169 subgroupInclusiveAdd ( global 4-component vector of float) +0:169 'f4' ( in 4-component vector of float) +0:170 subgroupInclusiveMul ( global 4-component vector of float) +0:170 'f4' ( in 4-component vector of float) +0:171 subgroupInclusiveMin ( global 4-component vector of float) +0:171 'f4' ( in 4-component vector of float) +0:172 subgroupInclusiveMax ( global 4-component vector of float) +0:172 'f4' ( in 4-component vector of float) +0:173 subgroupInclusiveAnd ( global 4-component vector of uint) +0:173 'ballot' ( temp 4-component vector of uint) +0:174 subgroupInclusiveOr ( global 4-component vector of uint) +0:174 'ballot' ( temp 4-component vector of uint) +0:175 subgroupInclusiveXor ( global 4-component vector of uint) +0:175 'ballot' ( temp 4-component vector of uint) +0:176 subgroupExclusiveAdd ( global 4-component vector of float) +0:176 'f4' ( in 4-component vector of float) +0:177 subgroupExclusiveMul ( global 4-component vector of float) +0:177 'f4' ( in 4-component vector of float) +0:178 subgroupExclusiveMin ( global 4-component vector of float) +0:178 'f4' ( in 4-component vector of float) +0:179 subgroupExclusiveMax ( global 4-component vector of float) +0:179 'f4' ( in 4-component vector of float) +0:180 subgroupExclusiveAnd ( global 4-component vector of uint) +0:180 'ballot' ( temp 4-component vector of uint) +0:181 subgroupExclusiveOr ( global 4-component vector of uint) +0:181 'ballot' ( temp 4-component vector of uint) +0:182 subgroupExclusiveXor ( global 4-component vector of uint) +0:182 'ballot' ( temp 4-component vector of uint) +0:186 Function Definition: clustered_works(vf4; ( global void) +0:186 Function Parameters: +0:186 'f4' ( in 4-component vector of float) +0:188 Sequence +0:188 Sequence +0:188 move second child to first child ( temp 4-component vector of uint) +0:188 'ballot' ( temp 4-component vector of uint) +0:188 Constant: +0:188 85 (const uint) +0:188 0 (const uint) +0:188 0 (const uint) +0:188 0 (const uint) +0:189 subgroupClusteredAdd ( global 4-component vector of float) +0:189 'f4' ( in 4-component vector of float) +0:189 Constant: +0:189 2 (const uint) +0:190 subgroupClusteredMul ( global 4-component vector of float) +0:190 'f4' ( in 4-component vector of float) +0:190 Constant: +0:190 2 (const uint) +0:191 subgroupClusteredMin ( global 4-component vector of float) +0:191 'f4' ( in 4-component vector of float) +0:191 Constant: +0:191 2 (const uint) +0:192 subgroupClusteredMax ( global 4-component vector of float) +0:192 'f4' ( in 4-component vector of float) +0:192 Constant: +0:192 2 (const uint) +0:193 subgroupClusteredAnd ( global 4-component vector of uint) +0:193 'ballot' ( temp 4-component vector of uint) +0:193 Constant: +0:193 2 (const uint) +0:194 subgroupClusteredOr ( global 4-component vector of uint) +0:194 'ballot' ( temp 4-component vector of uint) +0:194 Constant: +0:194 2 (const uint) +0:195 subgroupClusteredXor ( global 4-component vector of uint) +0:195 'ballot' ( temp 4-component vector of uint) +0:195 Constant: +0:195 2 (const uint) +0:199 Function Definition: quad_works(vf4; ( global void) +0:199 Function Parameters: +0:199 'f4' ( in 4-component vector of float) +0:201 Sequence +0:201 subgroupQuadBroadcast ( global 4-component vector of float) +0:201 'f4' ( in 4-component vector of float) +0:201 Constant: +0:201 0 (const uint) +0:202 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:202 'f4' ( in 4-component vector of float) +0:203 subgroupQuadSwapVertical ( global 4-component vector of float) +0:203 'f4' ( in 4-component vector of float) +0:204 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:204 'f4' ( in 4-component vector of float) +0:208 Function Definition: partitioned_works(vf4; ( global void) +0:208 Function Parameters: +0:208 'f4' ( in 4-component vector of float) +0:210 Sequence +0:210 Sequence +0:210 move second child to first child ( temp 4-component vector of uint) +0:210 'parti' ( temp 4-component vector of uint) +0:210 subgroupPartitionNV ( global 4-component vector of uint) +0:210 'f4' ( in 4-component vector of float) +0:211 Sequence +0:211 move second child to first child ( temp 4-component vector of uint) +0:211 'ballot' ( temp 4-component vector of uint) +0:211 Constant: +0:211 85 (const uint) +0:211 0 (const uint) +0:211 0 (const uint) +0:211 0 (const uint) +0:212 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:212 'f4' ( in 4-component vector of float) +0:212 'parti' ( temp 4-component vector of uint) +0:213 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:213 'f4' ( in 4-component vector of float) +0:213 'parti' ( temp 4-component vector of uint) +0:214 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:214 'f4' ( in 4-component vector of float) +0:214 'parti' ( temp 4-component vector of uint) +0:215 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:215 'f4' ( in 4-component vector of float) +0:215 'parti' ( temp 4-component vector of uint) +0:216 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:216 'ballot' ( temp 4-component vector of uint) +0:216 'parti' ( temp 4-component vector of uint) +0:217 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:217 'ballot' ( temp 4-component vector of uint) +0:217 'parti' ( temp 4-component vector of uint) +0:218 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:218 'ballot' ( temp 4-component vector of uint) +0:218 'parti' ( temp 4-component vector of uint) +0:219 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:219 'f4' ( in 4-component vector of float) +0:219 'parti' ( temp 4-component vector of uint) +0:220 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:220 'f4' ( in 4-component vector of float) +0:220 'parti' ( temp 4-component vector of uint) +0:221 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:221 'f4' ( in 4-component vector of float) +0:221 'parti' ( temp 4-component vector of uint) +0:222 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:222 'f4' ( in 4-component vector of float) +0:222 'parti' ( temp 4-component vector of uint) +0:223 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:223 'ballot' ( temp 4-component vector of uint) +0:223 'parti' ( temp 4-component vector of uint) +0:224 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:224 'ballot' ( temp 4-component vector of uint) +0:224 'parti' ( temp 4-component vector of uint) +0:225 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:225 'ballot' ( temp 4-component vector of uint) +0:225 'parti' ( temp 4-component vector of uint) +0:226 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:226 'f4' ( in 4-component vector of float) +0:226 'parti' ( temp 4-component vector of uint) +0:227 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:227 'f4' ( in 4-component vector of float) +0:227 'parti' ( temp 4-component vector of uint) +0:228 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:228 'f4' ( in 4-component vector of float) +0:228 'parti' ( temp 4-component vector of uint) +0:229 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:229 'f4' ( in 4-component vector of float) +0:229 'parti' ( temp 4-component vector of uint) +0:230 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:230 'ballot' ( temp 4-component vector of uint) +0:230 'parti' ( temp 4-component vector of uint) +0:231 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:231 'ballot' ( temp 4-component vector of uint) +0:231 'parti' ( temp 4-component vector of uint) +0:232 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:232 'ballot' ( temp 4-component vector of uint) +0:232 'parti' ( temp 4-component vector of uint) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) @@ -31,29 +656,42 @@ Linked geometry stage: Shader version: 450 +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_subgroup_partitioned invocations = 1 max_vertices = 1 input primitive = points output primitive = points -0:? Sequence -0:10 Function Definition: main( ( global void) -0:10 Function Parameters: -0:12 Sequence -0:12 move second child to first child ( temp 4-component vector of uint) -0:12 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) -0:12 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) -0:12 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) -0:12 Constant: -0:12 0 (const uint) -0:12 'gl_PrimitiveIDIn' ( in int PrimitiveID) -0:12 Construct uvec4 ( temp 4-component vector of uint) -0:12 'gl_SubgroupSize' ( in uint unknown built-in variable) -0:12 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) -0:12 Constant: -0:12 0 (const uint) -0:12 Constant: -0:12 0 (const uint) +ERROR: node is still EOpNull! +0:111 Function Definition: main( ( global void) +0:111 Function Parameters: +0:113 Sequence +0:113 move second child to first child ( temp 4-component vector of uint) +0:113 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) +0:113 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) +0:113 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) +0:113 Constant: +0:113 0 (const uint) +0:113 'gl_PrimitiveIDIn' ( in int PrimitiveID) +0:113 Construct uvec4 ( temp 4-component vector of uint) +0:113 'gl_SubgroupSize' ( in uint unknown built-in variable) +0:113 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) +0:113 Constant: +0:113 0 (const uint) +0:113 Constant: +0:113 0 (const uint) +0:114 subgroupBarrier ( global void) +0:115 subgroupMemoryBarrier ( global void) +0:116 subgroupMemoryBarrierBuffer ( global void) +0:117 subgroupMemoryBarrierImage ( global void) +0:118 subgroupElect ( global bool) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) diff --git a/Test/baseResults/glsl.450.subgroup.tesc.out b/Test/baseResults/glsl.450.subgroup.tesc.out index d4466646..19e1296c 100644 --- a/Test/baseResults/glsl.450.subgroup.tesc.out +++ b/Test/baseResults/glsl.450.subgroup.tesc.out @@ -1,25 +1,650 @@ glsl.450.subgroup.tesc +ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:13: 'gl_NumSubgroups' : undeclared identifier +ERROR: 0:14: 'gl_SubgroupID' : undeclared identifier +ERROR: 0:15: 'subgroupMemoryBarrierShared' : no matching overloaded function found +ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 86 compilation errors. No code generated. + + Shader version: 450 +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_subgroup_partitioned vertices = 1 -0:? Sequence -0:9 Function Definition: main( ( global void) -0:9 Function Parameters: -0:11 Sequence -0:11 move second child to first child ( temp 4-component vector of uint) -0:11 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) -0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) -0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) -0:11 Constant: -0:11 0 (const uint) -0:11 'gl_PrimitiveID' ( in int PrimitiveID) -0:11 Construct uvec4 ( temp 4-component vector of uint) -0:11 'gl_SubgroupSize' ( in uint unknown built-in variable) -0:11 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) -0:11 Constant: -0:11 0 (const uint) -0:11 Constant: -0:11 0 (const uint) +ERROR: node is still EOpNull! +0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) +0:3 Function Parameters: +0:3 'f4' ( in 4-component vector of float) +0:? Sequence +0:6 'gl_SubgroupSize' ( in uint unknown built-in variable) +0:7 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) +0:8 subgroupBarrier ( global void) +0:9 subgroupMemoryBarrier ( global void) +0:10 subgroupMemoryBarrierBuffer ( global void) +0:11 subgroupMemoryBarrierImage ( global void) +0:12 subgroupElect ( global bool) +0:13 'gl_NumSubgroups' ( temp float) +0:14 'gl_SubgroupID' ( temp float) +0:15 Constant: +0:15 0.000000 +0:17 subgroupAll ( global bool) +0:17 Constant: +0:17 true (const bool) +0:18 subgroupAny ( global bool) +0:18 Constant: +0:18 false (const bool) +0:19 subgroupAllEqual ( global bool) +0:19 'f4' ( in 4-component vector of float) +0:21 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable) +0:22 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable) +0:23 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable) +0:24 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable) +0:25 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable) +0:26 subgroupBroadcast ( global 4-component vector of float) +0:26 'f4' ( in 4-component vector of float) +0:26 Constant: +0:26 0 (const uint) +0:27 subgroupBroadcastFirst ( global 4-component vector of float) +0:27 'f4' ( in 4-component vector of float) +0:28 Sequence +0:28 move second child to first child ( temp 4-component vector of uint) +0:28 'ballot' ( temp 4-component vector of uint) +0:28 subgroupBallot ( global 4-component vector of uint) +0:28 Constant: +0:28 false (const bool) +0:29 subgroupInverseBallot ( global bool) +0:29 Constant: +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:30 subgroupBallotBitExtract ( global bool) +0:30 'ballot' ( temp 4-component vector of uint) +0:30 Constant: +0:30 0 (const uint) +0:31 subgroupBallotBitCount ( global uint) +0:31 'ballot' ( temp 4-component vector of uint) +0:32 subgroupBallotInclusiveBitCount ( global uint) +0:32 'ballot' ( temp 4-component vector of uint) +0:33 subgroupBallotExclusiveBitCount ( global uint) +0:33 'ballot' ( temp 4-component vector of uint) +0:34 subgroupBallotFindLSB ( global uint) +0:34 'ballot' ( temp 4-component vector of uint) +0:35 subgroupBallotFindMSB ( global uint) +0:35 'ballot' ( temp 4-component vector of uint) +0:37 subgroupShuffle ( global 4-component vector of float) +0:37 'f4' ( in 4-component vector of float) +0:37 Constant: +0:37 0 (const uint) +0:38 subgroupShuffleXor ( global 4-component vector of float) +0:38 'f4' ( in 4-component vector of float) +0:38 Constant: +0:38 1 (const uint) +0:39 subgroupShuffleUp ( global 4-component vector of float) +0:39 'f4' ( in 4-component vector of float) +0:39 Constant: +0:39 1 (const uint) +0:40 subgroupShuffleDown ( global 4-component vector of float) +0:40 'f4' ( in 4-component vector of float) +0:40 Constant: +0:40 1 (const uint) +0:42 move second child to first child ( temp 4-component vector of float) +0:42 'result' ( temp 4-component vector of float) +0:42 subgroupAdd ( global 4-component vector of float) +0:42 'f4' ( in 4-component vector of float) +0:43 subgroupMul ( global 4-component vector of float) +0:43 'f4' ( in 4-component vector of float) +0:44 subgroupMin ( global 4-component vector of float) +0:44 'f4' ( in 4-component vector of float) +0:45 subgroupMax ( global 4-component vector of float) +0:45 'f4' ( in 4-component vector of float) +0:46 subgroupAnd ( global 4-component vector of uint) +0:46 'ballot' ( temp 4-component vector of uint) +0:47 subgroupOr ( global 4-component vector of uint) +0:47 'ballot' ( temp 4-component vector of uint) +0:48 subgroupXor ( global 4-component vector of uint) +0:48 'ballot' ( temp 4-component vector of uint) +0:49 subgroupInclusiveAdd ( global 4-component vector of float) +0:49 'f4' ( in 4-component vector of float) +0:50 subgroupInclusiveMul ( global 4-component vector of float) +0:50 'f4' ( in 4-component vector of float) +0:51 subgroupInclusiveMin ( global 4-component vector of float) +0:51 'f4' ( in 4-component vector of float) +0:52 subgroupInclusiveMax ( global 4-component vector of float) +0:52 'f4' ( in 4-component vector of float) +0:53 subgroupInclusiveAnd ( global 4-component vector of uint) +0:53 'ballot' ( temp 4-component vector of uint) +0:54 subgroupInclusiveOr ( global 4-component vector of uint) +0:54 'ballot' ( temp 4-component vector of uint) +0:55 subgroupInclusiveXor ( global 4-component vector of uint) +0:55 'ballot' ( temp 4-component vector of uint) +0:56 subgroupExclusiveAdd ( global 4-component vector of float) +0:56 'f4' ( in 4-component vector of float) +0:57 subgroupExclusiveMul ( global 4-component vector of float) +0:57 'f4' ( in 4-component vector of float) +0:58 subgroupExclusiveMin ( global 4-component vector of float) +0:58 'f4' ( in 4-component vector of float) +0:59 subgroupExclusiveMax ( global 4-component vector of float) +0:59 'f4' ( in 4-component vector of float) +0:60 subgroupExclusiveAnd ( global 4-component vector of uint) +0:60 'ballot' ( temp 4-component vector of uint) +0:61 subgroupExclusiveOr ( global 4-component vector of uint) +0:61 'ballot' ( temp 4-component vector of uint) +0:62 subgroupExclusiveXor ( global 4-component vector of uint) +0:62 'ballot' ( temp 4-component vector of uint) +0:64 subgroupClusteredAdd ( global 4-component vector of float) +0:64 'f4' ( in 4-component vector of float) +0:64 Constant: +0:64 2 (const uint) +0:65 subgroupClusteredMul ( global 4-component vector of float) +0:65 'f4' ( in 4-component vector of float) +0:65 Constant: +0:65 2 (const uint) +0:66 subgroupClusteredMin ( global 4-component vector of float) +0:66 'f4' ( in 4-component vector of float) +0:66 Constant: +0:66 2 (const uint) +0:67 subgroupClusteredMax ( global 4-component vector of float) +0:67 'f4' ( in 4-component vector of float) +0:67 Constant: +0:67 2 (const uint) +0:68 subgroupClusteredAnd ( global 4-component vector of uint) +0:68 'ballot' ( temp 4-component vector of uint) +0:68 Constant: +0:68 2 (const uint) +0:69 subgroupClusteredOr ( global 4-component vector of uint) +0:69 'ballot' ( temp 4-component vector of uint) +0:69 Constant: +0:69 2 (const uint) +0:70 subgroupClusteredXor ( global 4-component vector of uint) +0:70 'ballot' ( temp 4-component vector of uint) +0:70 Constant: +0:70 2 (const uint) +0:72 subgroupQuadBroadcast ( global 4-component vector of float) +0:72 'f4' ( in 4-component vector of float) +0:72 Constant: +0:72 0 (const uint) +0:73 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:73 'f4' ( in 4-component vector of float) +0:74 subgroupQuadSwapVertical ( global 4-component vector of float) +0:74 'f4' ( in 4-component vector of float) +0:75 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:75 'f4' ( in 4-component vector of float) +0:77 Sequence +0:77 move second child to first child ( temp 4-component vector of uint) +0:77 'parti' ( temp 4-component vector of uint) +0:77 subgroupPartitionNV ( global 4-component vector of uint) +0:77 'f4' ( in 4-component vector of float) +0:78 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:78 'f4' ( in 4-component vector of float) +0:78 'parti' ( temp 4-component vector of uint) +0:79 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:79 'f4' ( in 4-component vector of float) +0:79 'parti' ( temp 4-component vector of uint) +0:80 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:80 'f4' ( in 4-component vector of float) +0:80 'parti' ( temp 4-component vector of uint) +0:81 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:81 'f4' ( in 4-component vector of float) +0:81 'parti' ( temp 4-component vector of uint) +0:82 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:82 'ballot' ( temp 4-component vector of uint) +0:82 'parti' ( temp 4-component vector of uint) +0:83 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:83 'ballot' ( temp 4-component vector of uint) +0:83 'parti' ( temp 4-component vector of uint) +0:84 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:84 'ballot' ( temp 4-component vector of uint) +0:84 'parti' ( temp 4-component vector of uint) +0:85 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:85 'f4' ( in 4-component vector of float) +0:85 'parti' ( temp 4-component vector of uint) +0:86 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:86 'f4' ( in 4-component vector of float) +0:86 'parti' ( temp 4-component vector of uint) +0:87 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:87 'f4' ( in 4-component vector of float) +0:87 'parti' ( temp 4-component vector of uint) +0:88 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:88 'f4' ( in 4-component vector of float) +0:88 'parti' ( temp 4-component vector of uint) +0:89 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:89 'ballot' ( temp 4-component vector of uint) +0:89 'parti' ( temp 4-component vector of uint) +0:90 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:90 'ballot' ( temp 4-component vector of uint) +0:90 'parti' ( temp 4-component vector of uint) +0:91 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:91 'ballot' ( temp 4-component vector of uint) +0:91 'parti' ( temp 4-component vector of uint) +0:92 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:92 'f4' ( in 4-component vector of float) +0:92 'parti' ( temp 4-component vector of uint) +0:93 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:93 'f4' ( in 4-component vector of float) +0:93 'parti' ( temp 4-component vector of uint) +0:94 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:94 'f4' ( in 4-component vector of float) +0:94 'parti' ( temp 4-component vector of uint) +0:95 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:95 'f4' ( in 4-component vector of float) +0:95 'parti' ( temp 4-component vector of uint) +0:96 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:96 'ballot' ( temp 4-component vector of uint) +0:96 'parti' ( temp 4-component vector of uint) +0:97 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:97 'ballot' ( temp 4-component vector of uint) +0:97 'parti' ( temp 4-component vector of uint) +0:98 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:98 'ballot' ( temp 4-component vector of uint) +0:98 'parti' ( temp 4-component vector of uint) +0:100 Branch: Return with expression +0:100 'result' ( temp 4-component vector of float) +0:110 Function Definition: main( ( global void) +0:110 Function Parameters: +0:112 Sequence +0:112 move second child to first child ( temp 4-component vector of uint) +0:112 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) +0:112 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) +0:112 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) +0:112 Constant: +0:112 0 (const uint) +0:112 'gl_PrimitiveID' ( in int PrimitiveID) +0:112 Construct uvec4 ( temp 4-component vector of uint) +0:112 'gl_SubgroupSize' ( in uint unknown built-in variable) +0:112 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) +0:112 Constant: +0:112 0 (const uint) +0:112 Constant: +0:112 0 (const uint) +0:113 subgroupBarrier ( global void) +0:114 subgroupMemoryBarrier ( global void) +0:115 subgroupMemoryBarrierBuffer ( global void) +0:116 subgroupMemoryBarrierImage ( global void) +0:117 subgroupElect ( global bool) +0:121 Function Definition: ballot_works(vf4; ( global void) +0:121 Function Parameters: +0:121 'f4' ( in 4-component vector of float) +0:122 Sequence +0:122 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable) +0:123 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable) +0:124 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable) +0:125 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable) +0:126 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable) +0:127 subgroupBroadcast ( global 4-component vector of float) +0:127 'f4' ( in 4-component vector of float) +0:127 Constant: +0:127 0 (const uint) +0:128 subgroupBroadcastFirst ( global 4-component vector of float) +0:128 'f4' ( in 4-component vector of float) +0:129 Sequence +0:129 move second child to first child ( temp 4-component vector of uint) +0:129 'ballot' ( temp 4-component vector of uint) +0:129 subgroupBallot ( global 4-component vector of uint) +0:129 Constant: +0:129 false (const bool) +0:130 subgroupInverseBallot ( global bool) +0:130 Constant: +0:130 1 (const uint) +0:130 1 (const uint) +0:130 1 (const uint) +0:130 1 (const uint) +0:131 subgroupBallotBitExtract ( global bool) +0:131 'ballot' ( temp 4-component vector of uint) +0:131 Constant: +0:131 0 (const uint) +0:132 subgroupBallotBitCount ( global uint) +0:132 'ballot' ( temp 4-component vector of uint) +0:133 subgroupBallotInclusiveBitCount ( global uint) +0:133 'ballot' ( temp 4-component vector of uint) +0:134 subgroupBallotExclusiveBitCount ( global uint) +0:134 'ballot' ( temp 4-component vector of uint) +0:135 subgroupBallotFindLSB ( global uint) +0:135 'ballot' ( temp 4-component vector of uint) +0:136 subgroupBallotFindMSB ( global uint) +0:136 'ballot' ( temp 4-component vector of uint) +0:140 Function Definition: vote_works(vf4; ( global void) +0:140 Function Parameters: +0:140 'f4' ( in 4-component vector of float) +0:142 Sequence +0:142 subgroupAll ( global bool) +0:142 Constant: +0:142 true (const bool) +0:143 subgroupAny ( global bool) +0:143 Constant: +0:143 false (const bool) +0:144 subgroupAllEqual ( global bool) +0:144 'f4' ( in 4-component vector of float) +0:149 Function Definition: shuffle_works(vf4; ( global void) +0:149 Function Parameters: +0:149 'f4' ( in 4-component vector of float) +0:151 Sequence +0:151 subgroupShuffle ( global 4-component vector of float) +0:151 'f4' ( in 4-component vector of float) +0:151 Constant: +0:151 0 (const uint) +0:152 subgroupShuffleXor ( global 4-component vector of float) +0:152 'f4' ( in 4-component vector of float) +0:152 Constant: +0:152 1 (const uint) +0:153 subgroupShuffleUp ( global 4-component vector of float) +0:153 'f4' ( in 4-component vector of float) +0:153 Constant: +0:153 1 (const uint) +0:154 subgroupShuffleDown ( global 4-component vector of float) +0:154 'f4' ( in 4-component vector of float) +0:154 Constant: +0:154 1 (const uint) +0:158 Function Definition: arith_works(vf4; ( global void) +0:158 Function Parameters: +0:158 'f4' ( in 4-component vector of float) +0:? Sequence +0:161 subgroupAdd ( global 4-component vector of float) +0:161 'f4' ( in 4-component vector of float) +0:162 subgroupMul ( global 4-component vector of float) +0:162 'f4' ( in 4-component vector of float) +0:163 subgroupMin ( global 4-component vector of float) +0:163 'f4' ( in 4-component vector of float) +0:164 subgroupMax ( global 4-component vector of float) +0:164 'f4' ( in 4-component vector of float) +0:165 subgroupAnd ( global 4-component vector of uint) +0:165 'ballot' ( temp 4-component vector of uint) +0:166 subgroupOr ( global 4-component vector of uint) +0:166 'ballot' ( temp 4-component vector of uint) +0:167 subgroupXor ( global 4-component vector of uint) +0:167 'ballot' ( temp 4-component vector of uint) +0:168 subgroupInclusiveAdd ( global 4-component vector of float) +0:168 'f4' ( in 4-component vector of float) +0:169 subgroupInclusiveMul ( global 4-component vector of float) +0:169 'f4' ( in 4-component vector of float) +0:170 subgroupInclusiveMin ( global 4-component vector of float) +0:170 'f4' ( in 4-component vector of float) +0:171 subgroupInclusiveMax ( global 4-component vector of float) +0:171 'f4' ( in 4-component vector of float) +0:172 subgroupInclusiveAnd ( global 4-component vector of uint) +0:172 'ballot' ( temp 4-component vector of uint) +0:173 subgroupInclusiveOr ( global 4-component vector of uint) +0:173 'ballot' ( temp 4-component vector of uint) +0:174 subgroupInclusiveXor ( global 4-component vector of uint) +0:174 'ballot' ( temp 4-component vector of uint) +0:175 subgroupExclusiveAdd ( global 4-component vector of float) +0:175 'f4' ( in 4-component vector of float) +0:176 subgroupExclusiveMul ( global 4-component vector of float) +0:176 'f4' ( in 4-component vector of float) +0:177 subgroupExclusiveMin ( global 4-component vector of float) +0:177 'f4' ( in 4-component vector of float) +0:178 subgroupExclusiveMax ( global 4-component vector of float) +0:178 'f4' ( in 4-component vector of float) +0:179 subgroupExclusiveAnd ( global 4-component vector of uint) +0:179 'ballot' ( temp 4-component vector of uint) +0:180 subgroupExclusiveOr ( global 4-component vector of uint) +0:180 'ballot' ( temp 4-component vector of uint) +0:181 subgroupExclusiveXor ( global 4-component vector of uint) +0:181 'ballot' ( temp 4-component vector of uint) +0:185 Function Definition: clustered_works(vf4; ( global void) +0:185 Function Parameters: +0:185 'f4' ( in 4-component vector of float) +0:187 Sequence +0:187 Sequence +0:187 move second child to first child ( temp 4-component vector of uint) +0:187 'ballot' ( temp 4-component vector of uint) +0:187 Constant: +0:187 85 (const uint) +0:187 0 (const uint) +0:187 0 (const uint) +0:187 0 (const uint) +0:188 subgroupClusteredAdd ( global 4-component vector of float) +0:188 'f4' ( in 4-component vector of float) +0:188 Constant: +0:188 2 (const uint) +0:189 subgroupClusteredMul ( global 4-component vector of float) +0:189 'f4' ( in 4-component vector of float) +0:189 Constant: +0:189 2 (const uint) +0:190 subgroupClusteredMin ( global 4-component vector of float) +0:190 'f4' ( in 4-component vector of float) +0:190 Constant: +0:190 2 (const uint) +0:191 subgroupClusteredMax ( global 4-component vector of float) +0:191 'f4' ( in 4-component vector of float) +0:191 Constant: +0:191 2 (const uint) +0:192 subgroupClusteredAnd ( global 4-component vector of uint) +0:192 'ballot' ( temp 4-component vector of uint) +0:192 Constant: +0:192 2 (const uint) +0:193 subgroupClusteredOr ( global 4-component vector of uint) +0:193 'ballot' ( temp 4-component vector of uint) +0:193 Constant: +0:193 2 (const uint) +0:194 subgroupClusteredXor ( global 4-component vector of uint) +0:194 'ballot' ( temp 4-component vector of uint) +0:194 Constant: +0:194 2 (const uint) +0:198 Function Definition: quad_works(vf4; ( global void) +0:198 Function Parameters: +0:198 'f4' ( in 4-component vector of float) +0:200 Sequence +0:200 subgroupQuadBroadcast ( global 4-component vector of float) +0:200 'f4' ( in 4-component vector of float) +0:200 Constant: +0:200 0 (const uint) +0:201 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:201 'f4' ( in 4-component vector of float) +0:202 subgroupQuadSwapVertical ( global 4-component vector of float) +0:202 'f4' ( in 4-component vector of float) +0:203 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:203 'f4' ( in 4-component vector of float) +0:207 Function Definition: partitioned_works(vf4; ( global void) +0:207 Function Parameters: +0:207 'f4' ( in 4-component vector of float) +0:209 Sequence +0:209 Sequence +0:209 move second child to first child ( temp 4-component vector of uint) +0:209 'parti' ( temp 4-component vector of uint) +0:209 subgroupPartitionNV ( global 4-component vector of uint) +0:209 'f4' ( in 4-component vector of float) +0:210 Sequence +0:210 move second child to first child ( temp 4-component vector of uint) +0:210 'ballot' ( temp 4-component vector of uint) +0:210 Constant: +0:210 85 (const uint) +0:210 0 (const uint) +0:210 0 (const uint) +0:210 0 (const uint) +0:211 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:211 'f4' ( in 4-component vector of float) +0:211 'parti' ( temp 4-component vector of uint) +0:212 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:212 'f4' ( in 4-component vector of float) +0:212 'parti' ( temp 4-component vector of uint) +0:213 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:213 'f4' ( in 4-component vector of float) +0:213 'parti' ( temp 4-component vector of uint) +0:214 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:214 'f4' ( in 4-component vector of float) +0:214 'parti' ( temp 4-component vector of uint) +0:215 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:215 'ballot' ( temp 4-component vector of uint) +0:215 'parti' ( temp 4-component vector of uint) +0:216 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:216 'ballot' ( temp 4-component vector of uint) +0:216 'parti' ( temp 4-component vector of uint) +0:217 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:217 'ballot' ( temp 4-component vector of uint) +0:217 'parti' ( temp 4-component vector of uint) +0:218 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:218 'f4' ( in 4-component vector of float) +0:218 'parti' ( temp 4-component vector of uint) +0:219 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:219 'f4' ( in 4-component vector of float) +0:219 'parti' ( temp 4-component vector of uint) +0:220 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:220 'f4' ( in 4-component vector of float) +0:220 'parti' ( temp 4-component vector of uint) +0:221 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:221 'f4' ( in 4-component vector of float) +0:221 'parti' ( temp 4-component vector of uint) +0:222 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:222 'ballot' ( temp 4-component vector of uint) +0:222 'parti' ( temp 4-component vector of uint) +0:223 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:223 'ballot' ( temp 4-component vector of uint) +0:223 'parti' ( temp 4-component vector of uint) +0:224 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:224 'ballot' ( temp 4-component vector of uint) +0:224 'parti' ( temp 4-component vector of uint) +0:225 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:225 'f4' ( in 4-component vector of float) +0:225 'parti' ( temp 4-component vector of uint) +0:226 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:226 'f4' ( in 4-component vector of float) +0:226 'parti' ( temp 4-component vector of uint) +0:227 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:227 'f4' ( in 4-component vector of float) +0:227 'parti' ( temp 4-component vector of uint) +0:228 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:228 'f4' ( in 4-component vector of float) +0:228 'parti' ( temp 4-component vector of uint) +0:229 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:229 'ballot' ( temp 4-component vector of uint) +0:229 'parti' ( temp 4-component vector of uint) +0:230 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:230 'ballot' ( temp 4-component vector of uint) +0:230 'parti' ( temp 4-component vector of uint) +0:231 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:231 'ballot' ( temp 4-component vector of uint) +0:231 'parti' ( temp 4-component vector of uint) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) @@ -28,26 +653,39 @@ Linked tessellation control stage: Shader version: 450 +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_subgroup_partitioned vertices = 1 -0:? Sequence -0:9 Function Definition: main( ( global void) -0:9 Function Parameters: -0:11 Sequence -0:11 move second child to first child ( temp 4-component vector of uint) -0:11 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) -0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) -0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) -0:11 Constant: -0:11 0 (const uint) -0:11 'gl_PrimitiveID' ( in int PrimitiveID) -0:11 Construct uvec4 ( temp 4-component vector of uint) -0:11 'gl_SubgroupSize' ( in uint unknown built-in variable) -0:11 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) -0:11 Constant: -0:11 0 (const uint) -0:11 Constant: -0:11 0 (const uint) +ERROR: node is still EOpNull! +0:110 Function Definition: main( ( global void) +0:110 Function Parameters: +0:112 Sequence +0:112 move second child to first child ( temp 4-component vector of uint) +0:112 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) +0:112 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) +0:112 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) +0:112 Constant: +0:112 0 (const uint) +0:112 'gl_PrimitiveID' ( in int PrimitiveID) +0:112 Construct uvec4 ( temp 4-component vector of uint) +0:112 'gl_SubgroupSize' ( in uint unknown built-in variable) +0:112 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) +0:112 Constant: +0:112 0 (const uint) +0:112 Constant: +0:112 0 (const uint) +0:113 subgroupBarrier ( global void) +0:114 subgroupMemoryBarrier ( global void) +0:115 subgroupMemoryBarrierBuffer ( global void) +0:116 subgroupMemoryBarrierImage ( global void) +0:117 subgroupElect ( global bool) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) diff --git a/Test/baseResults/glsl.450.subgroup.tese.out b/Test/baseResults/glsl.450.subgroup.tese.out index 7a005238..6f568c30 100644 --- a/Test/baseResults/glsl.450.subgroup.tese.out +++ b/Test/baseResults/glsl.450.subgroup.tese.out @@ -1,27 +1,652 @@ glsl.450.subgroup.tese +ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:13: 'gl_NumSubgroups' : undeclared identifier +ERROR: 0:14: 'gl_SubgroupID' : undeclared identifier +ERROR: 0:15: 'subgroupMemoryBarrierShared' : no matching overloaded function found +ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 86 compilation errors. No code generated. + + Shader version: 450 +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_subgroup_partitioned input primitive = isolines vertex spacing = none triangle order = none -0:? Sequence -0:9 Function Definition: main( ( global void) -0:9 Function Parameters: -0:11 Sequence -0:11 move second child to first child ( temp 4-component vector of uint) -0:11 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) -0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) -0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) -0:11 Constant: -0:11 0 (const uint) -0:11 'gl_PrimitiveID' ( in int PrimitiveID) -0:11 Construct uvec4 ( temp 4-component vector of uint) -0:11 'gl_SubgroupSize' ( in uint unknown built-in variable) -0:11 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) -0:11 Constant: -0:11 0 (const uint) -0:11 Constant: -0:11 0 (const uint) +ERROR: node is still EOpNull! +0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) +0:3 Function Parameters: +0:3 'f4' ( in 4-component vector of float) +0:? Sequence +0:6 'gl_SubgroupSize' ( in uint unknown built-in variable) +0:7 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) +0:8 subgroupBarrier ( global void) +0:9 subgroupMemoryBarrier ( global void) +0:10 subgroupMemoryBarrierBuffer ( global void) +0:11 subgroupMemoryBarrierImage ( global void) +0:12 subgroupElect ( global bool) +0:13 'gl_NumSubgroups' ( temp float) +0:14 'gl_SubgroupID' ( temp float) +0:15 Constant: +0:15 0.000000 +0:17 subgroupAll ( global bool) +0:17 Constant: +0:17 true (const bool) +0:18 subgroupAny ( global bool) +0:18 Constant: +0:18 false (const bool) +0:19 subgroupAllEqual ( global bool) +0:19 'f4' ( in 4-component vector of float) +0:21 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable) +0:22 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable) +0:23 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable) +0:24 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable) +0:25 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable) +0:26 subgroupBroadcast ( global 4-component vector of float) +0:26 'f4' ( in 4-component vector of float) +0:26 Constant: +0:26 0 (const uint) +0:27 subgroupBroadcastFirst ( global 4-component vector of float) +0:27 'f4' ( in 4-component vector of float) +0:28 Sequence +0:28 move second child to first child ( temp 4-component vector of uint) +0:28 'ballot' ( temp 4-component vector of uint) +0:28 subgroupBallot ( global 4-component vector of uint) +0:28 Constant: +0:28 false (const bool) +0:29 subgroupInverseBallot ( global bool) +0:29 Constant: +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:30 subgroupBallotBitExtract ( global bool) +0:30 'ballot' ( temp 4-component vector of uint) +0:30 Constant: +0:30 0 (const uint) +0:31 subgroupBallotBitCount ( global uint) +0:31 'ballot' ( temp 4-component vector of uint) +0:32 subgroupBallotInclusiveBitCount ( global uint) +0:32 'ballot' ( temp 4-component vector of uint) +0:33 subgroupBallotExclusiveBitCount ( global uint) +0:33 'ballot' ( temp 4-component vector of uint) +0:34 subgroupBallotFindLSB ( global uint) +0:34 'ballot' ( temp 4-component vector of uint) +0:35 subgroupBallotFindMSB ( global uint) +0:35 'ballot' ( temp 4-component vector of uint) +0:37 subgroupShuffle ( global 4-component vector of float) +0:37 'f4' ( in 4-component vector of float) +0:37 Constant: +0:37 0 (const uint) +0:38 subgroupShuffleXor ( global 4-component vector of float) +0:38 'f4' ( in 4-component vector of float) +0:38 Constant: +0:38 1 (const uint) +0:39 subgroupShuffleUp ( global 4-component vector of float) +0:39 'f4' ( in 4-component vector of float) +0:39 Constant: +0:39 1 (const uint) +0:40 subgroupShuffleDown ( global 4-component vector of float) +0:40 'f4' ( in 4-component vector of float) +0:40 Constant: +0:40 1 (const uint) +0:42 move second child to first child ( temp 4-component vector of float) +0:42 'result' ( temp 4-component vector of float) +0:42 subgroupAdd ( global 4-component vector of float) +0:42 'f4' ( in 4-component vector of float) +0:43 subgroupMul ( global 4-component vector of float) +0:43 'f4' ( in 4-component vector of float) +0:44 subgroupMin ( global 4-component vector of float) +0:44 'f4' ( in 4-component vector of float) +0:45 subgroupMax ( global 4-component vector of float) +0:45 'f4' ( in 4-component vector of float) +0:46 subgroupAnd ( global 4-component vector of uint) +0:46 'ballot' ( temp 4-component vector of uint) +0:47 subgroupOr ( global 4-component vector of uint) +0:47 'ballot' ( temp 4-component vector of uint) +0:48 subgroupXor ( global 4-component vector of uint) +0:48 'ballot' ( temp 4-component vector of uint) +0:49 subgroupInclusiveAdd ( global 4-component vector of float) +0:49 'f4' ( in 4-component vector of float) +0:50 subgroupInclusiveMul ( global 4-component vector of float) +0:50 'f4' ( in 4-component vector of float) +0:51 subgroupInclusiveMin ( global 4-component vector of float) +0:51 'f4' ( in 4-component vector of float) +0:52 subgroupInclusiveMax ( global 4-component vector of float) +0:52 'f4' ( in 4-component vector of float) +0:53 subgroupInclusiveAnd ( global 4-component vector of uint) +0:53 'ballot' ( temp 4-component vector of uint) +0:54 subgroupInclusiveOr ( global 4-component vector of uint) +0:54 'ballot' ( temp 4-component vector of uint) +0:55 subgroupInclusiveXor ( global 4-component vector of uint) +0:55 'ballot' ( temp 4-component vector of uint) +0:56 subgroupExclusiveAdd ( global 4-component vector of float) +0:56 'f4' ( in 4-component vector of float) +0:57 subgroupExclusiveMul ( global 4-component vector of float) +0:57 'f4' ( in 4-component vector of float) +0:58 subgroupExclusiveMin ( global 4-component vector of float) +0:58 'f4' ( in 4-component vector of float) +0:59 subgroupExclusiveMax ( global 4-component vector of float) +0:59 'f4' ( in 4-component vector of float) +0:60 subgroupExclusiveAnd ( global 4-component vector of uint) +0:60 'ballot' ( temp 4-component vector of uint) +0:61 subgroupExclusiveOr ( global 4-component vector of uint) +0:61 'ballot' ( temp 4-component vector of uint) +0:62 subgroupExclusiveXor ( global 4-component vector of uint) +0:62 'ballot' ( temp 4-component vector of uint) +0:64 subgroupClusteredAdd ( global 4-component vector of float) +0:64 'f4' ( in 4-component vector of float) +0:64 Constant: +0:64 2 (const uint) +0:65 subgroupClusteredMul ( global 4-component vector of float) +0:65 'f4' ( in 4-component vector of float) +0:65 Constant: +0:65 2 (const uint) +0:66 subgroupClusteredMin ( global 4-component vector of float) +0:66 'f4' ( in 4-component vector of float) +0:66 Constant: +0:66 2 (const uint) +0:67 subgroupClusteredMax ( global 4-component vector of float) +0:67 'f4' ( in 4-component vector of float) +0:67 Constant: +0:67 2 (const uint) +0:68 subgroupClusteredAnd ( global 4-component vector of uint) +0:68 'ballot' ( temp 4-component vector of uint) +0:68 Constant: +0:68 2 (const uint) +0:69 subgroupClusteredOr ( global 4-component vector of uint) +0:69 'ballot' ( temp 4-component vector of uint) +0:69 Constant: +0:69 2 (const uint) +0:70 subgroupClusteredXor ( global 4-component vector of uint) +0:70 'ballot' ( temp 4-component vector of uint) +0:70 Constant: +0:70 2 (const uint) +0:72 subgroupQuadBroadcast ( global 4-component vector of float) +0:72 'f4' ( in 4-component vector of float) +0:72 Constant: +0:72 0 (const uint) +0:73 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:73 'f4' ( in 4-component vector of float) +0:74 subgroupQuadSwapVertical ( global 4-component vector of float) +0:74 'f4' ( in 4-component vector of float) +0:75 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:75 'f4' ( in 4-component vector of float) +0:77 Sequence +0:77 move second child to first child ( temp 4-component vector of uint) +0:77 'parti' ( temp 4-component vector of uint) +0:77 subgroupPartitionNV ( global 4-component vector of uint) +0:77 'f4' ( in 4-component vector of float) +0:78 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:78 'f4' ( in 4-component vector of float) +0:78 'parti' ( temp 4-component vector of uint) +0:79 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:79 'f4' ( in 4-component vector of float) +0:79 'parti' ( temp 4-component vector of uint) +0:80 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:80 'f4' ( in 4-component vector of float) +0:80 'parti' ( temp 4-component vector of uint) +0:81 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:81 'f4' ( in 4-component vector of float) +0:81 'parti' ( temp 4-component vector of uint) +0:82 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:82 'ballot' ( temp 4-component vector of uint) +0:82 'parti' ( temp 4-component vector of uint) +0:83 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:83 'ballot' ( temp 4-component vector of uint) +0:83 'parti' ( temp 4-component vector of uint) +0:84 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:84 'ballot' ( temp 4-component vector of uint) +0:84 'parti' ( temp 4-component vector of uint) +0:85 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:85 'f4' ( in 4-component vector of float) +0:85 'parti' ( temp 4-component vector of uint) +0:86 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:86 'f4' ( in 4-component vector of float) +0:86 'parti' ( temp 4-component vector of uint) +0:87 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:87 'f4' ( in 4-component vector of float) +0:87 'parti' ( temp 4-component vector of uint) +0:88 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:88 'f4' ( in 4-component vector of float) +0:88 'parti' ( temp 4-component vector of uint) +0:89 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:89 'ballot' ( temp 4-component vector of uint) +0:89 'parti' ( temp 4-component vector of uint) +0:90 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:90 'ballot' ( temp 4-component vector of uint) +0:90 'parti' ( temp 4-component vector of uint) +0:91 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:91 'ballot' ( temp 4-component vector of uint) +0:91 'parti' ( temp 4-component vector of uint) +0:92 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:92 'f4' ( in 4-component vector of float) +0:92 'parti' ( temp 4-component vector of uint) +0:93 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:93 'f4' ( in 4-component vector of float) +0:93 'parti' ( temp 4-component vector of uint) +0:94 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:94 'f4' ( in 4-component vector of float) +0:94 'parti' ( temp 4-component vector of uint) +0:95 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:95 'f4' ( in 4-component vector of float) +0:95 'parti' ( temp 4-component vector of uint) +0:96 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:96 'ballot' ( temp 4-component vector of uint) +0:96 'parti' ( temp 4-component vector of uint) +0:97 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:97 'ballot' ( temp 4-component vector of uint) +0:97 'parti' ( temp 4-component vector of uint) +0:98 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:98 'ballot' ( temp 4-component vector of uint) +0:98 'parti' ( temp 4-component vector of uint) +0:100 Branch: Return with expression +0:100 'result' ( temp 4-component vector of float) +0:110 Function Definition: main( ( global void) +0:110 Function Parameters: +0:112 Sequence +0:112 move second child to first child ( temp 4-component vector of uint) +0:112 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) +0:112 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) +0:112 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) +0:112 Constant: +0:112 0 (const uint) +0:112 'gl_PrimitiveID' ( in int PrimitiveID) +0:112 Construct uvec4 ( temp 4-component vector of uint) +0:112 'gl_SubgroupSize' ( in uint unknown built-in variable) +0:112 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) +0:112 Constant: +0:112 0 (const uint) +0:112 Constant: +0:112 0 (const uint) +0:113 subgroupBarrier ( global void) +0:114 subgroupMemoryBarrier ( global void) +0:115 subgroupMemoryBarrierBuffer ( global void) +0:116 subgroupMemoryBarrierImage ( global void) +0:117 subgroupElect ( global bool) +0:121 Function Definition: ballot_works(vf4; ( global void) +0:121 Function Parameters: +0:121 'f4' ( in 4-component vector of float) +0:122 Sequence +0:122 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable) +0:123 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable) +0:124 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable) +0:125 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable) +0:126 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable) +0:127 subgroupBroadcast ( global 4-component vector of float) +0:127 'f4' ( in 4-component vector of float) +0:127 Constant: +0:127 0 (const uint) +0:128 subgroupBroadcastFirst ( global 4-component vector of float) +0:128 'f4' ( in 4-component vector of float) +0:129 Sequence +0:129 move second child to first child ( temp 4-component vector of uint) +0:129 'ballot' ( temp 4-component vector of uint) +0:129 subgroupBallot ( global 4-component vector of uint) +0:129 Constant: +0:129 false (const bool) +0:130 subgroupInverseBallot ( global bool) +0:130 Constant: +0:130 1 (const uint) +0:130 1 (const uint) +0:130 1 (const uint) +0:130 1 (const uint) +0:131 subgroupBallotBitExtract ( global bool) +0:131 'ballot' ( temp 4-component vector of uint) +0:131 Constant: +0:131 0 (const uint) +0:132 subgroupBallotBitCount ( global uint) +0:132 'ballot' ( temp 4-component vector of uint) +0:133 subgroupBallotInclusiveBitCount ( global uint) +0:133 'ballot' ( temp 4-component vector of uint) +0:134 subgroupBallotExclusiveBitCount ( global uint) +0:134 'ballot' ( temp 4-component vector of uint) +0:135 subgroupBallotFindLSB ( global uint) +0:135 'ballot' ( temp 4-component vector of uint) +0:136 subgroupBallotFindMSB ( global uint) +0:136 'ballot' ( temp 4-component vector of uint) +0:140 Function Definition: vote_works(vf4; ( global void) +0:140 Function Parameters: +0:140 'f4' ( in 4-component vector of float) +0:142 Sequence +0:142 subgroupAll ( global bool) +0:142 Constant: +0:142 true (const bool) +0:143 subgroupAny ( global bool) +0:143 Constant: +0:143 false (const bool) +0:144 subgroupAllEqual ( global bool) +0:144 'f4' ( in 4-component vector of float) +0:149 Function Definition: shuffle_works(vf4; ( global void) +0:149 Function Parameters: +0:149 'f4' ( in 4-component vector of float) +0:151 Sequence +0:151 subgroupShuffle ( global 4-component vector of float) +0:151 'f4' ( in 4-component vector of float) +0:151 Constant: +0:151 0 (const uint) +0:152 subgroupShuffleXor ( global 4-component vector of float) +0:152 'f4' ( in 4-component vector of float) +0:152 Constant: +0:152 1 (const uint) +0:153 subgroupShuffleUp ( global 4-component vector of float) +0:153 'f4' ( in 4-component vector of float) +0:153 Constant: +0:153 1 (const uint) +0:154 subgroupShuffleDown ( global 4-component vector of float) +0:154 'f4' ( in 4-component vector of float) +0:154 Constant: +0:154 1 (const uint) +0:158 Function Definition: arith_works(vf4; ( global void) +0:158 Function Parameters: +0:158 'f4' ( in 4-component vector of float) +0:? Sequence +0:161 subgroupAdd ( global 4-component vector of float) +0:161 'f4' ( in 4-component vector of float) +0:162 subgroupMul ( global 4-component vector of float) +0:162 'f4' ( in 4-component vector of float) +0:163 subgroupMin ( global 4-component vector of float) +0:163 'f4' ( in 4-component vector of float) +0:164 subgroupMax ( global 4-component vector of float) +0:164 'f4' ( in 4-component vector of float) +0:165 subgroupAnd ( global 4-component vector of uint) +0:165 'ballot' ( temp 4-component vector of uint) +0:166 subgroupOr ( global 4-component vector of uint) +0:166 'ballot' ( temp 4-component vector of uint) +0:167 subgroupXor ( global 4-component vector of uint) +0:167 'ballot' ( temp 4-component vector of uint) +0:168 subgroupInclusiveAdd ( global 4-component vector of float) +0:168 'f4' ( in 4-component vector of float) +0:169 subgroupInclusiveMul ( global 4-component vector of float) +0:169 'f4' ( in 4-component vector of float) +0:170 subgroupInclusiveMin ( global 4-component vector of float) +0:170 'f4' ( in 4-component vector of float) +0:171 subgroupInclusiveMax ( global 4-component vector of float) +0:171 'f4' ( in 4-component vector of float) +0:172 subgroupInclusiveAnd ( global 4-component vector of uint) +0:172 'ballot' ( temp 4-component vector of uint) +0:173 subgroupInclusiveOr ( global 4-component vector of uint) +0:173 'ballot' ( temp 4-component vector of uint) +0:174 subgroupInclusiveXor ( global 4-component vector of uint) +0:174 'ballot' ( temp 4-component vector of uint) +0:175 subgroupExclusiveAdd ( global 4-component vector of float) +0:175 'f4' ( in 4-component vector of float) +0:176 subgroupExclusiveMul ( global 4-component vector of float) +0:176 'f4' ( in 4-component vector of float) +0:177 subgroupExclusiveMin ( global 4-component vector of float) +0:177 'f4' ( in 4-component vector of float) +0:178 subgroupExclusiveMax ( global 4-component vector of float) +0:178 'f4' ( in 4-component vector of float) +0:179 subgroupExclusiveAnd ( global 4-component vector of uint) +0:179 'ballot' ( temp 4-component vector of uint) +0:180 subgroupExclusiveOr ( global 4-component vector of uint) +0:180 'ballot' ( temp 4-component vector of uint) +0:181 subgroupExclusiveXor ( global 4-component vector of uint) +0:181 'ballot' ( temp 4-component vector of uint) +0:185 Function Definition: clustered_works(vf4; ( global void) +0:185 Function Parameters: +0:185 'f4' ( in 4-component vector of float) +0:187 Sequence +0:187 Sequence +0:187 move second child to first child ( temp 4-component vector of uint) +0:187 'ballot' ( temp 4-component vector of uint) +0:187 Constant: +0:187 85 (const uint) +0:187 0 (const uint) +0:187 0 (const uint) +0:187 0 (const uint) +0:188 subgroupClusteredAdd ( global 4-component vector of float) +0:188 'f4' ( in 4-component vector of float) +0:188 Constant: +0:188 2 (const uint) +0:189 subgroupClusteredMul ( global 4-component vector of float) +0:189 'f4' ( in 4-component vector of float) +0:189 Constant: +0:189 2 (const uint) +0:190 subgroupClusteredMin ( global 4-component vector of float) +0:190 'f4' ( in 4-component vector of float) +0:190 Constant: +0:190 2 (const uint) +0:191 subgroupClusteredMax ( global 4-component vector of float) +0:191 'f4' ( in 4-component vector of float) +0:191 Constant: +0:191 2 (const uint) +0:192 subgroupClusteredAnd ( global 4-component vector of uint) +0:192 'ballot' ( temp 4-component vector of uint) +0:192 Constant: +0:192 2 (const uint) +0:193 subgroupClusteredOr ( global 4-component vector of uint) +0:193 'ballot' ( temp 4-component vector of uint) +0:193 Constant: +0:193 2 (const uint) +0:194 subgroupClusteredXor ( global 4-component vector of uint) +0:194 'ballot' ( temp 4-component vector of uint) +0:194 Constant: +0:194 2 (const uint) +0:198 Function Definition: quad_works(vf4; ( global void) +0:198 Function Parameters: +0:198 'f4' ( in 4-component vector of float) +0:200 Sequence +0:200 subgroupQuadBroadcast ( global 4-component vector of float) +0:200 'f4' ( in 4-component vector of float) +0:200 Constant: +0:200 0 (const uint) +0:201 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:201 'f4' ( in 4-component vector of float) +0:202 subgroupQuadSwapVertical ( global 4-component vector of float) +0:202 'f4' ( in 4-component vector of float) +0:203 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:203 'f4' ( in 4-component vector of float) +0:207 Function Definition: partitioned_works(vf4; ( global void) +0:207 Function Parameters: +0:207 'f4' ( in 4-component vector of float) +0:209 Sequence +0:209 Sequence +0:209 move second child to first child ( temp 4-component vector of uint) +0:209 'parti' ( temp 4-component vector of uint) +0:209 subgroupPartitionNV ( global 4-component vector of uint) +0:209 'f4' ( in 4-component vector of float) +0:210 Sequence +0:210 move second child to first child ( temp 4-component vector of uint) +0:210 'ballot' ( temp 4-component vector of uint) +0:210 Constant: +0:210 85 (const uint) +0:210 0 (const uint) +0:210 0 (const uint) +0:210 0 (const uint) +0:211 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:211 'f4' ( in 4-component vector of float) +0:211 'parti' ( temp 4-component vector of uint) +0:212 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:212 'f4' ( in 4-component vector of float) +0:212 'parti' ( temp 4-component vector of uint) +0:213 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:213 'f4' ( in 4-component vector of float) +0:213 'parti' ( temp 4-component vector of uint) +0:214 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:214 'f4' ( in 4-component vector of float) +0:214 'parti' ( temp 4-component vector of uint) +0:215 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:215 'ballot' ( temp 4-component vector of uint) +0:215 'parti' ( temp 4-component vector of uint) +0:216 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:216 'ballot' ( temp 4-component vector of uint) +0:216 'parti' ( temp 4-component vector of uint) +0:217 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:217 'ballot' ( temp 4-component vector of uint) +0:217 'parti' ( temp 4-component vector of uint) +0:218 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:218 'f4' ( in 4-component vector of float) +0:218 'parti' ( temp 4-component vector of uint) +0:219 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:219 'f4' ( in 4-component vector of float) +0:219 'parti' ( temp 4-component vector of uint) +0:220 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:220 'f4' ( in 4-component vector of float) +0:220 'parti' ( temp 4-component vector of uint) +0:221 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:221 'f4' ( in 4-component vector of float) +0:221 'parti' ( temp 4-component vector of uint) +0:222 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:222 'ballot' ( temp 4-component vector of uint) +0:222 'parti' ( temp 4-component vector of uint) +0:223 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:223 'ballot' ( temp 4-component vector of uint) +0:223 'parti' ( temp 4-component vector of uint) +0:224 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:224 'ballot' ( temp 4-component vector of uint) +0:224 'parti' ( temp 4-component vector of uint) +0:225 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:225 'f4' ( in 4-component vector of float) +0:225 'parti' ( temp 4-component vector of uint) +0:226 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:226 'f4' ( in 4-component vector of float) +0:226 'parti' ( temp 4-component vector of uint) +0:227 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:227 'f4' ( in 4-component vector of float) +0:227 'parti' ( temp 4-component vector of uint) +0:228 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:228 'f4' ( in 4-component vector of float) +0:228 'parti' ( temp 4-component vector of uint) +0:229 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:229 'ballot' ( temp 4-component vector of uint) +0:229 'parti' ( temp 4-component vector of uint) +0:230 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:230 'ballot' ( temp 4-component vector of uint) +0:230 'parti' ( temp 4-component vector of uint) +0:231 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:231 'ballot' ( temp 4-component vector of uint) +0:231 'parti' ( temp 4-component vector of uint) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) @@ -30,28 +655,41 @@ Linked tessellation evaluation stage: Shader version: 450 +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_subgroup_partitioned input primitive = isolines vertex spacing = equal_spacing triangle order = ccw -0:? Sequence -0:9 Function Definition: main( ( global void) -0:9 Function Parameters: -0:11 Sequence -0:11 move second child to first child ( temp 4-component vector of uint) -0:11 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) -0:11 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) -0:11 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) -0:11 Constant: -0:11 0 (const uint) -0:11 'gl_PrimitiveID' ( in int PrimitiveID) -0:11 Construct uvec4 ( temp 4-component vector of uint) -0:11 'gl_SubgroupSize' ( in uint unknown built-in variable) -0:11 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) -0:11 Constant: -0:11 0 (const uint) -0:11 Constant: -0:11 0 (const uint) +ERROR: node is still EOpNull! +0:110 Function Definition: main( ( global void) +0:110 Function Parameters: +0:112 Sequence +0:112 move second child to first child ( temp 4-component vector of uint) +0:112 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) +0:112 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) +0:112 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) +0:112 Constant: +0:112 0 (const uint) +0:112 'gl_PrimitiveID' ( in int PrimitiveID) +0:112 Construct uvec4 ( temp 4-component vector of uint) +0:112 'gl_SubgroupSize' ( in uint unknown built-in variable) +0:112 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) +0:112 Constant: +0:112 0 (const uint) +0:112 Constant: +0:112 0 (const uint) +0:113 subgroupBarrier ( global void) +0:114 subgroupMemoryBarrier ( global void) +0:115 subgroupMemoryBarrierBuffer ( global void) +0:116 subgroupMemoryBarrierImage ( global void) +0:117 subgroupElect ( global bool) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) diff --git a/Test/baseResults/glsl.450.subgroup.vert.out b/Test/baseResults/glsl.450.subgroup.vert.out index 54c54129..1da9d60e 100644 --- a/Test/baseResults/glsl.450.subgroup.vert.out +++ b/Test/baseResults/glsl.450.subgroup.vert.out @@ -1,24 +1,649 @@ glsl.450.subgroup.vert +ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:13: 'gl_NumSubgroups' : undeclared identifier +ERROR: 0:14: 'gl_SubgroupID' : undeclared identifier +ERROR: 0:15: 'subgroupMemoryBarrierShared' : no matching overloaded function found +ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 86 compilation errors. No code generated. + + Shader version: 450 +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic -0:? Sequence -0:8 Function Definition: main( ( global void) -0:8 Function Parameters: -0:10 Sequence -0:10 move second child to first child ( temp 4-component vector of uint) -0:10 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) -0:10 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) -0:10 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) -0:10 Constant: -0:10 0 (const uint) -0:10 'gl_VertexID' ( gl_VertexId int VertexId) -0:10 Construct uvec4 ( temp 4-component vector of uint) -0:10 'gl_SubgroupSize' ( in uint unknown built-in variable) -0:10 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) -0:10 Constant: -0:10 0 (const uint) -0:10 Constant: -0:10 0 (const uint) +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_subgroup_partitioned +ERROR: node is still EOpNull! +0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) +0:3 Function Parameters: +0:3 'f4' ( in 4-component vector of float) +0:? Sequence +0:6 'gl_SubgroupSize' ( in uint unknown built-in variable) +0:7 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) +0:8 subgroupBarrier ( global void) +0:9 subgroupMemoryBarrier ( global void) +0:10 subgroupMemoryBarrierBuffer ( global void) +0:11 subgroupMemoryBarrierImage ( global void) +0:12 subgroupElect ( global bool) +0:13 'gl_NumSubgroups' ( temp float) +0:14 'gl_SubgroupID' ( temp float) +0:15 Constant: +0:15 0.000000 +0:17 subgroupAll ( global bool) +0:17 Constant: +0:17 true (const bool) +0:18 subgroupAny ( global bool) +0:18 Constant: +0:18 false (const bool) +0:19 subgroupAllEqual ( global bool) +0:19 'f4' ( in 4-component vector of float) +0:21 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable) +0:22 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable) +0:23 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable) +0:24 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable) +0:25 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable) +0:26 subgroupBroadcast ( global 4-component vector of float) +0:26 'f4' ( in 4-component vector of float) +0:26 Constant: +0:26 0 (const uint) +0:27 subgroupBroadcastFirst ( global 4-component vector of float) +0:27 'f4' ( in 4-component vector of float) +0:28 Sequence +0:28 move second child to first child ( temp 4-component vector of uint) +0:28 'ballot' ( temp 4-component vector of uint) +0:28 subgroupBallot ( global 4-component vector of uint) +0:28 Constant: +0:28 false (const bool) +0:29 subgroupInverseBallot ( global bool) +0:29 Constant: +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:30 subgroupBallotBitExtract ( global bool) +0:30 'ballot' ( temp 4-component vector of uint) +0:30 Constant: +0:30 0 (const uint) +0:31 subgroupBallotBitCount ( global uint) +0:31 'ballot' ( temp 4-component vector of uint) +0:32 subgroupBallotInclusiveBitCount ( global uint) +0:32 'ballot' ( temp 4-component vector of uint) +0:33 subgroupBallotExclusiveBitCount ( global uint) +0:33 'ballot' ( temp 4-component vector of uint) +0:34 subgroupBallotFindLSB ( global uint) +0:34 'ballot' ( temp 4-component vector of uint) +0:35 subgroupBallotFindMSB ( global uint) +0:35 'ballot' ( temp 4-component vector of uint) +0:37 subgroupShuffle ( global 4-component vector of float) +0:37 'f4' ( in 4-component vector of float) +0:37 Constant: +0:37 0 (const uint) +0:38 subgroupShuffleXor ( global 4-component vector of float) +0:38 'f4' ( in 4-component vector of float) +0:38 Constant: +0:38 1 (const uint) +0:39 subgroupShuffleUp ( global 4-component vector of float) +0:39 'f4' ( in 4-component vector of float) +0:39 Constant: +0:39 1 (const uint) +0:40 subgroupShuffleDown ( global 4-component vector of float) +0:40 'f4' ( in 4-component vector of float) +0:40 Constant: +0:40 1 (const uint) +0:42 move second child to first child ( temp 4-component vector of float) +0:42 'result' ( temp 4-component vector of float) +0:42 subgroupAdd ( global 4-component vector of float) +0:42 'f4' ( in 4-component vector of float) +0:43 subgroupMul ( global 4-component vector of float) +0:43 'f4' ( in 4-component vector of float) +0:44 subgroupMin ( global 4-component vector of float) +0:44 'f4' ( in 4-component vector of float) +0:45 subgroupMax ( global 4-component vector of float) +0:45 'f4' ( in 4-component vector of float) +0:46 subgroupAnd ( global 4-component vector of uint) +0:46 'ballot' ( temp 4-component vector of uint) +0:47 subgroupOr ( global 4-component vector of uint) +0:47 'ballot' ( temp 4-component vector of uint) +0:48 subgroupXor ( global 4-component vector of uint) +0:48 'ballot' ( temp 4-component vector of uint) +0:49 subgroupInclusiveAdd ( global 4-component vector of float) +0:49 'f4' ( in 4-component vector of float) +0:50 subgroupInclusiveMul ( global 4-component vector of float) +0:50 'f4' ( in 4-component vector of float) +0:51 subgroupInclusiveMin ( global 4-component vector of float) +0:51 'f4' ( in 4-component vector of float) +0:52 subgroupInclusiveMax ( global 4-component vector of float) +0:52 'f4' ( in 4-component vector of float) +0:53 subgroupInclusiveAnd ( global 4-component vector of uint) +0:53 'ballot' ( temp 4-component vector of uint) +0:54 subgroupInclusiveOr ( global 4-component vector of uint) +0:54 'ballot' ( temp 4-component vector of uint) +0:55 subgroupInclusiveXor ( global 4-component vector of uint) +0:55 'ballot' ( temp 4-component vector of uint) +0:56 subgroupExclusiveAdd ( global 4-component vector of float) +0:56 'f4' ( in 4-component vector of float) +0:57 subgroupExclusiveMul ( global 4-component vector of float) +0:57 'f4' ( in 4-component vector of float) +0:58 subgroupExclusiveMin ( global 4-component vector of float) +0:58 'f4' ( in 4-component vector of float) +0:59 subgroupExclusiveMax ( global 4-component vector of float) +0:59 'f4' ( in 4-component vector of float) +0:60 subgroupExclusiveAnd ( global 4-component vector of uint) +0:60 'ballot' ( temp 4-component vector of uint) +0:61 subgroupExclusiveOr ( global 4-component vector of uint) +0:61 'ballot' ( temp 4-component vector of uint) +0:62 subgroupExclusiveXor ( global 4-component vector of uint) +0:62 'ballot' ( temp 4-component vector of uint) +0:64 subgroupClusteredAdd ( global 4-component vector of float) +0:64 'f4' ( in 4-component vector of float) +0:64 Constant: +0:64 2 (const uint) +0:65 subgroupClusteredMul ( global 4-component vector of float) +0:65 'f4' ( in 4-component vector of float) +0:65 Constant: +0:65 2 (const uint) +0:66 subgroupClusteredMin ( global 4-component vector of float) +0:66 'f4' ( in 4-component vector of float) +0:66 Constant: +0:66 2 (const uint) +0:67 subgroupClusteredMax ( global 4-component vector of float) +0:67 'f4' ( in 4-component vector of float) +0:67 Constant: +0:67 2 (const uint) +0:68 subgroupClusteredAnd ( global 4-component vector of uint) +0:68 'ballot' ( temp 4-component vector of uint) +0:68 Constant: +0:68 2 (const uint) +0:69 subgroupClusteredOr ( global 4-component vector of uint) +0:69 'ballot' ( temp 4-component vector of uint) +0:69 Constant: +0:69 2 (const uint) +0:70 subgroupClusteredXor ( global 4-component vector of uint) +0:70 'ballot' ( temp 4-component vector of uint) +0:70 Constant: +0:70 2 (const uint) +0:72 subgroupQuadBroadcast ( global 4-component vector of float) +0:72 'f4' ( in 4-component vector of float) +0:72 Constant: +0:72 0 (const uint) +0:73 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:73 'f4' ( in 4-component vector of float) +0:74 subgroupQuadSwapVertical ( global 4-component vector of float) +0:74 'f4' ( in 4-component vector of float) +0:75 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:75 'f4' ( in 4-component vector of float) +0:77 Sequence +0:77 move second child to first child ( temp 4-component vector of uint) +0:77 'parti' ( temp 4-component vector of uint) +0:77 subgroupPartitionNV ( global 4-component vector of uint) +0:77 'f4' ( in 4-component vector of float) +0:78 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:78 'f4' ( in 4-component vector of float) +0:78 'parti' ( temp 4-component vector of uint) +0:79 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:79 'f4' ( in 4-component vector of float) +0:79 'parti' ( temp 4-component vector of uint) +0:80 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:80 'f4' ( in 4-component vector of float) +0:80 'parti' ( temp 4-component vector of uint) +0:81 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:81 'f4' ( in 4-component vector of float) +0:81 'parti' ( temp 4-component vector of uint) +0:82 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:82 'ballot' ( temp 4-component vector of uint) +0:82 'parti' ( temp 4-component vector of uint) +0:83 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:83 'ballot' ( temp 4-component vector of uint) +0:83 'parti' ( temp 4-component vector of uint) +0:84 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:84 'ballot' ( temp 4-component vector of uint) +0:84 'parti' ( temp 4-component vector of uint) +0:85 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:85 'f4' ( in 4-component vector of float) +0:85 'parti' ( temp 4-component vector of uint) +0:86 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:86 'f4' ( in 4-component vector of float) +0:86 'parti' ( temp 4-component vector of uint) +0:87 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:87 'f4' ( in 4-component vector of float) +0:87 'parti' ( temp 4-component vector of uint) +0:88 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:88 'f4' ( in 4-component vector of float) +0:88 'parti' ( temp 4-component vector of uint) +0:89 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:89 'ballot' ( temp 4-component vector of uint) +0:89 'parti' ( temp 4-component vector of uint) +0:90 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:90 'ballot' ( temp 4-component vector of uint) +0:90 'parti' ( temp 4-component vector of uint) +0:91 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:91 'ballot' ( temp 4-component vector of uint) +0:91 'parti' ( temp 4-component vector of uint) +0:92 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:92 'f4' ( in 4-component vector of float) +0:92 'parti' ( temp 4-component vector of uint) +0:93 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:93 'f4' ( in 4-component vector of float) +0:93 'parti' ( temp 4-component vector of uint) +0:94 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:94 'f4' ( in 4-component vector of float) +0:94 'parti' ( temp 4-component vector of uint) +0:95 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:95 'f4' ( in 4-component vector of float) +0:95 'parti' ( temp 4-component vector of uint) +0:96 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:96 'ballot' ( temp 4-component vector of uint) +0:96 'parti' ( temp 4-component vector of uint) +0:97 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:97 'ballot' ( temp 4-component vector of uint) +0:97 'parti' ( temp 4-component vector of uint) +0:98 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:98 'ballot' ( temp 4-component vector of uint) +0:98 'parti' ( temp 4-component vector of uint) +0:100 Branch: Return with expression +0:100 'result' ( temp 4-component vector of float) +0:109 Function Definition: main( ( global void) +0:109 Function Parameters: +0:111 Sequence +0:111 move second child to first child ( temp 4-component vector of uint) +0:111 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) +0:111 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) +0:111 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) +0:111 Constant: +0:111 0 (const uint) +0:111 'gl_VertexID' ( gl_VertexId int VertexId) +0:111 Construct uvec4 ( temp 4-component vector of uint) +0:111 'gl_SubgroupSize' ( in uint unknown built-in variable) +0:111 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) +0:111 Constant: +0:111 0 (const uint) +0:111 Constant: +0:111 0 (const uint) +0:112 subgroupBarrier ( global void) +0:113 subgroupMemoryBarrier ( global void) +0:114 subgroupMemoryBarrierBuffer ( global void) +0:115 subgroupMemoryBarrierImage ( global void) +0:116 subgroupElect ( global bool) +0:120 Function Definition: ballot_works(vf4; ( global void) +0:120 Function Parameters: +0:120 'f4' ( in 4-component vector of float) +0:121 Sequence +0:121 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable) +0:122 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable) +0:123 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable) +0:124 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable) +0:125 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable) +0:126 subgroupBroadcast ( global 4-component vector of float) +0:126 'f4' ( in 4-component vector of float) +0:126 Constant: +0:126 0 (const uint) +0:127 subgroupBroadcastFirst ( global 4-component vector of float) +0:127 'f4' ( in 4-component vector of float) +0:128 Sequence +0:128 move second child to first child ( temp 4-component vector of uint) +0:128 'ballot' ( temp 4-component vector of uint) +0:128 subgroupBallot ( global 4-component vector of uint) +0:128 Constant: +0:128 false (const bool) +0:129 subgroupInverseBallot ( global bool) +0:129 Constant: +0:129 1 (const uint) +0:129 1 (const uint) +0:129 1 (const uint) +0:129 1 (const uint) +0:130 subgroupBallotBitExtract ( global bool) +0:130 'ballot' ( temp 4-component vector of uint) +0:130 Constant: +0:130 0 (const uint) +0:131 subgroupBallotBitCount ( global uint) +0:131 'ballot' ( temp 4-component vector of uint) +0:132 subgroupBallotInclusiveBitCount ( global uint) +0:132 'ballot' ( temp 4-component vector of uint) +0:133 subgroupBallotExclusiveBitCount ( global uint) +0:133 'ballot' ( temp 4-component vector of uint) +0:134 subgroupBallotFindLSB ( global uint) +0:134 'ballot' ( temp 4-component vector of uint) +0:135 subgroupBallotFindMSB ( global uint) +0:135 'ballot' ( temp 4-component vector of uint) +0:139 Function Definition: vote_works(vf4; ( global void) +0:139 Function Parameters: +0:139 'f4' ( in 4-component vector of float) +0:141 Sequence +0:141 subgroupAll ( global bool) +0:141 Constant: +0:141 true (const bool) +0:142 subgroupAny ( global bool) +0:142 Constant: +0:142 false (const bool) +0:143 subgroupAllEqual ( global bool) +0:143 'f4' ( in 4-component vector of float) +0:148 Function Definition: shuffle_works(vf4; ( global void) +0:148 Function Parameters: +0:148 'f4' ( in 4-component vector of float) +0:150 Sequence +0:150 subgroupShuffle ( global 4-component vector of float) +0:150 'f4' ( in 4-component vector of float) +0:150 Constant: +0:150 0 (const uint) +0:151 subgroupShuffleXor ( global 4-component vector of float) +0:151 'f4' ( in 4-component vector of float) +0:151 Constant: +0:151 1 (const uint) +0:152 subgroupShuffleUp ( global 4-component vector of float) +0:152 'f4' ( in 4-component vector of float) +0:152 Constant: +0:152 1 (const uint) +0:153 subgroupShuffleDown ( global 4-component vector of float) +0:153 'f4' ( in 4-component vector of float) +0:153 Constant: +0:153 1 (const uint) +0:157 Function Definition: arith_works(vf4; ( global void) +0:157 Function Parameters: +0:157 'f4' ( in 4-component vector of float) +0:? Sequence +0:160 subgroupAdd ( global 4-component vector of float) +0:160 'f4' ( in 4-component vector of float) +0:161 subgroupMul ( global 4-component vector of float) +0:161 'f4' ( in 4-component vector of float) +0:162 subgroupMin ( global 4-component vector of float) +0:162 'f4' ( in 4-component vector of float) +0:163 subgroupMax ( global 4-component vector of float) +0:163 'f4' ( in 4-component vector of float) +0:164 subgroupAnd ( global 4-component vector of uint) +0:164 'ballot' ( temp 4-component vector of uint) +0:165 subgroupOr ( global 4-component vector of uint) +0:165 'ballot' ( temp 4-component vector of uint) +0:166 subgroupXor ( global 4-component vector of uint) +0:166 'ballot' ( temp 4-component vector of uint) +0:167 subgroupInclusiveAdd ( global 4-component vector of float) +0:167 'f4' ( in 4-component vector of float) +0:168 subgroupInclusiveMul ( global 4-component vector of float) +0:168 'f4' ( in 4-component vector of float) +0:169 subgroupInclusiveMin ( global 4-component vector of float) +0:169 'f4' ( in 4-component vector of float) +0:170 subgroupInclusiveMax ( global 4-component vector of float) +0:170 'f4' ( in 4-component vector of float) +0:171 subgroupInclusiveAnd ( global 4-component vector of uint) +0:171 'ballot' ( temp 4-component vector of uint) +0:172 subgroupInclusiveOr ( global 4-component vector of uint) +0:172 'ballot' ( temp 4-component vector of uint) +0:173 subgroupInclusiveXor ( global 4-component vector of uint) +0:173 'ballot' ( temp 4-component vector of uint) +0:174 subgroupExclusiveAdd ( global 4-component vector of float) +0:174 'f4' ( in 4-component vector of float) +0:175 subgroupExclusiveMul ( global 4-component vector of float) +0:175 'f4' ( in 4-component vector of float) +0:176 subgroupExclusiveMin ( global 4-component vector of float) +0:176 'f4' ( in 4-component vector of float) +0:177 subgroupExclusiveMax ( global 4-component vector of float) +0:177 'f4' ( in 4-component vector of float) +0:178 subgroupExclusiveAnd ( global 4-component vector of uint) +0:178 'ballot' ( temp 4-component vector of uint) +0:179 subgroupExclusiveOr ( global 4-component vector of uint) +0:179 'ballot' ( temp 4-component vector of uint) +0:180 subgroupExclusiveXor ( global 4-component vector of uint) +0:180 'ballot' ( temp 4-component vector of uint) +0:184 Function Definition: clustered_works(vf4; ( global void) +0:184 Function Parameters: +0:184 'f4' ( in 4-component vector of float) +0:186 Sequence +0:186 Sequence +0:186 move second child to first child ( temp 4-component vector of uint) +0:186 'ballot' ( temp 4-component vector of uint) +0:186 Constant: +0:186 85 (const uint) +0:186 0 (const uint) +0:186 0 (const uint) +0:186 0 (const uint) +0:187 subgroupClusteredAdd ( global 4-component vector of float) +0:187 'f4' ( in 4-component vector of float) +0:187 Constant: +0:187 2 (const uint) +0:188 subgroupClusteredMul ( global 4-component vector of float) +0:188 'f4' ( in 4-component vector of float) +0:188 Constant: +0:188 2 (const uint) +0:189 subgroupClusteredMin ( global 4-component vector of float) +0:189 'f4' ( in 4-component vector of float) +0:189 Constant: +0:189 2 (const uint) +0:190 subgroupClusteredMax ( global 4-component vector of float) +0:190 'f4' ( in 4-component vector of float) +0:190 Constant: +0:190 2 (const uint) +0:191 subgroupClusteredAnd ( global 4-component vector of uint) +0:191 'ballot' ( temp 4-component vector of uint) +0:191 Constant: +0:191 2 (const uint) +0:192 subgroupClusteredOr ( global 4-component vector of uint) +0:192 'ballot' ( temp 4-component vector of uint) +0:192 Constant: +0:192 2 (const uint) +0:193 subgroupClusteredXor ( global 4-component vector of uint) +0:193 'ballot' ( temp 4-component vector of uint) +0:193 Constant: +0:193 2 (const uint) +0:197 Function Definition: quad_works(vf4; ( global void) +0:197 Function Parameters: +0:197 'f4' ( in 4-component vector of float) +0:199 Sequence +0:199 subgroupQuadBroadcast ( global 4-component vector of float) +0:199 'f4' ( in 4-component vector of float) +0:199 Constant: +0:199 0 (const uint) +0:200 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:200 'f4' ( in 4-component vector of float) +0:201 subgroupQuadSwapVertical ( global 4-component vector of float) +0:201 'f4' ( in 4-component vector of float) +0:202 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:202 'f4' ( in 4-component vector of float) +0:206 Function Definition: partitioned_works(vf4; ( global void) +0:206 Function Parameters: +0:206 'f4' ( in 4-component vector of float) +0:208 Sequence +0:208 Sequence +0:208 move second child to first child ( temp 4-component vector of uint) +0:208 'parti' ( temp 4-component vector of uint) +0:208 subgroupPartitionNV ( global 4-component vector of uint) +0:208 'f4' ( in 4-component vector of float) +0:209 Sequence +0:209 move second child to first child ( temp 4-component vector of uint) +0:209 'ballot' ( temp 4-component vector of uint) +0:209 Constant: +0:209 85 (const uint) +0:209 0 (const uint) +0:209 0 (const uint) +0:209 0 (const uint) +0:210 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:210 'f4' ( in 4-component vector of float) +0:210 'parti' ( temp 4-component vector of uint) +0:211 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:211 'f4' ( in 4-component vector of float) +0:211 'parti' ( temp 4-component vector of uint) +0:212 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:212 'f4' ( in 4-component vector of float) +0:212 'parti' ( temp 4-component vector of uint) +0:213 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:213 'f4' ( in 4-component vector of float) +0:213 'parti' ( temp 4-component vector of uint) +0:214 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:214 'ballot' ( temp 4-component vector of uint) +0:214 'parti' ( temp 4-component vector of uint) +0:215 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:215 'ballot' ( temp 4-component vector of uint) +0:215 'parti' ( temp 4-component vector of uint) +0:216 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:216 'ballot' ( temp 4-component vector of uint) +0:216 'parti' ( temp 4-component vector of uint) +0:217 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:217 'f4' ( in 4-component vector of float) +0:217 'parti' ( temp 4-component vector of uint) +0:218 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:218 'f4' ( in 4-component vector of float) +0:218 'parti' ( temp 4-component vector of uint) +0:219 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:219 'f4' ( in 4-component vector of float) +0:219 'parti' ( temp 4-component vector of uint) +0:220 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:220 'f4' ( in 4-component vector of float) +0:220 'parti' ( temp 4-component vector of uint) +0:221 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:221 'ballot' ( temp 4-component vector of uint) +0:221 'parti' ( temp 4-component vector of uint) +0:222 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:222 'ballot' ( temp 4-component vector of uint) +0:222 'parti' ( temp 4-component vector of uint) +0:223 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:223 'ballot' ( temp 4-component vector of uint) +0:223 'parti' ( temp 4-component vector of uint) +0:224 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:224 'f4' ( in 4-component vector of float) +0:224 'parti' ( temp 4-component vector of uint) +0:225 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:225 'f4' ( in 4-component vector of float) +0:225 'parti' ( temp 4-component vector of uint) +0:226 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:226 'f4' ( in 4-component vector of float) +0:226 'parti' ( temp 4-component vector of uint) +0:227 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:227 'f4' ( in 4-component vector of float) +0:227 'parti' ( temp 4-component vector of uint) +0:228 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:228 'ballot' ( temp 4-component vector of uint) +0:228 'parti' ( temp 4-component vector of uint) +0:229 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:229 'ballot' ( temp 4-component vector of uint) +0:229 'parti' ( temp 4-component vector of uint) +0:230 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:230 'ballot' ( temp 4-component vector of uint) +0:230 'parti' ( temp 4-component vector of uint) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) @@ -29,25 +654,38 @@ Linked vertex stage: Shader version: 450 +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic -0:? Sequence -0:8 Function Definition: main( ( global void) -0:8 Function Parameters: -0:10 Sequence -0:10 move second child to first child ( temp 4-component vector of uint) -0:10 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) -0:10 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) -0:10 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) -0:10 Constant: -0:10 0 (const uint) -0:10 'gl_VertexID' ( gl_VertexId int VertexId) -0:10 Construct uvec4 ( temp 4-component vector of uint) -0:10 'gl_SubgroupSize' ( in uint unknown built-in variable) -0:10 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) -0:10 Constant: -0:10 0 (const uint) -0:10 Constant: -0:10 0 (const uint) +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_subgroup_partitioned +ERROR: node is still EOpNull! +0:109 Function Definition: main( ( global void) +0:109 Function Parameters: +0:111 Sequence +0:111 move second child to first child ( temp 4-component vector of uint) +0:111 indirect index (layout( column_major std430 offset=0) temp 4-component vector of uint) +0:111 result: direct index for structure (layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint) +0:111 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) +0:111 Constant: +0:111 0 (const uint) +0:111 'gl_VertexID' ( gl_VertexId int VertexId) +0:111 Construct uvec4 ( temp 4-component vector of uint) +0:111 'gl_SubgroupSize' ( in uint unknown built-in variable) +0:111 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) +0:111 Constant: +0:111 0 (const uint) +0:111 Constant: +0:111 0 (const uint) +0:112 subgroupBarrier ( global void) +0:113 subgroupMemoryBarrier ( global void) +0:114 subgroupMemoryBarrierBuffer ( global void) +0:115 subgroupMemoryBarrierImage ( global void) +0:116 subgroupElect ( global bool) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) diff --git a/Test/baseResults/glsl.450.subgroupBasic.comp.out b/Test/baseResults/glsl.450.subgroupBasic.comp.out index 59fd193f..8cef4e5f 100644 --- a/Test/baseResults/glsl.450.subgroupBasic.comp.out +++ b/Test/baseResults/glsl.450.subgroupBasic.comp.out @@ -1,59 +1,678 @@ glsl.450.subgroupBasic.comp +ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:13: 'gl_NumSubgroups' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:14: 'gl_SubgroupID' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:15: 'subgroupMemoryBarrierShared' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:77: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:78: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:79: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:80: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:81: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:82: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:83: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:84: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:85: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:86: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:87: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:88: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:89: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:90: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:91: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:92: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:93: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:94: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 86 compilation errors. No code generated. + + Shader version: 450 +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_subgroup_partitioned local_size = (8, 8, 1) -0:? Sequence -0:12 Function Definition: main( ( global void) -0:12 Function Parameters: -0:14 Sequence -0:14 move second child to first child ( temp int) -0:14 indirect index (layout( column_major shared) temp int) -0:14 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) -0:14 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) -0:14 Constant: -0:14 0 (const int) -0:14 'gl_SubgroupSize' ( in uint unknown built-in variable) -0:14 Constant: -0:14 1 (const int) -0:15 move second child to first child ( temp int) -0:15 indirect index (layout( column_major shared) temp int) -0:15 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) -0:15 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) -0:15 Constant: -0:15 0 (const int) -0:15 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) -0:15 Constant: -0:15 1 (const int) -0:16 move second child to first child ( temp int) -0:16 indirect index (layout( column_major shared) temp int) -0:16 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) -0:16 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) -0:16 Constant: -0:16 0 (const int) -0:16 'gl_NumSubgroups' ( in uint unknown built-in variable) -0:16 Constant: -0:16 1 (const int) -0:17 move second child to first child ( temp int) -0:17 indirect index (layout( column_major shared) temp int) -0:17 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) -0:17 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) -0:17 Constant: -0:17 0 (const int) -0:17 'gl_SubgroupID' ( in uint unknown built-in variable) -0:17 Test condition and select ( temp int) -0:17 Condition -0:17 subgroupElect ( global bool) -0:17 true case -0:17 Constant: -0:17 1 (const int) -0:17 false case -0:17 Constant: -0:17 0 (const int) -0:18 subgroupBarrier ( global void) -0:19 subgroupMemoryBarrier ( global void) -0:20 subgroupMemoryBarrierBuffer ( global void) -0:21 subgroupMemoryBarrierShared ( global void) -0:22 subgroupMemoryBarrierImage ( global void) +ERROR: node is still EOpNull! +0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) +0:3 Function Parameters: +0:3 'f4' ( in 4-component vector of float) +0:? Sequence +0:6 'gl_SubgroupSize' ( in uint unknown built-in variable) +0:7 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) +0:8 subgroupBarrier ( global void) +0:9 subgroupMemoryBarrier ( global void) +0:10 subgroupMemoryBarrierBuffer ( global void) +0:11 subgroupMemoryBarrierImage ( global void) +0:12 subgroupElect ( global bool) +0:13 'gl_NumSubgroups' ( in uint unknown built-in variable) +0:14 'gl_SubgroupID' ( in uint unknown built-in variable) +0:15 subgroupMemoryBarrierShared ( global void) +0:17 subgroupAll ( global bool) +0:17 Constant: +0:17 true (const bool) +0:18 subgroupAny ( global bool) +0:18 Constant: +0:18 false (const bool) +0:19 subgroupAllEqual ( global bool) +0:19 'f4' ( in 4-component vector of float) +0:21 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable) +0:22 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable) +0:23 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable) +0:24 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable) +0:25 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable) +0:26 subgroupBroadcast ( global 4-component vector of float) +0:26 'f4' ( in 4-component vector of float) +0:26 Constant: +0:26 0 (const uint) +0:27 subgroupBroadcastFirst ( global 4-component vector of float) +0:27 'f4' ( in 4-component vector of float) +0:28 Sequence +0:28 move second child to first child ( temp 4-component vector of uint) +0:28 'ballot' ( temp 4-component vector of uint) +0:28 subgroupBallot ( global 4-component vector of uint) +0:28 Constant: +0:28 false (const bool) +0:29 subgroupInverseBallot ( global bool) +0:29 Constant: +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:30 subgroupBallotBitExtract ( global bool) +0:30 'ballot' ( temp 4-component vector of uint) +0:30 Constant: +0:30 0 (const uint) +0:31 subgroupBallotBitCount ( global uint) +0:31 'ballot' ( temp 4-component vector of uint) +0:32 subgroupBallotInclusiveBitCount ( global uint) +0:32 'ballot' ( temp 4-component vector of uint) +0:33 subgroupBallotExclusiveBitCount ( global uint) +0:33 'ballot' ( temp 4-component vector of uint) +0:34 subgroupBallotFindLSB ( global uint) +0:34 'ballot' ( temp 4-component vector of uint) +0:35 subgroupBallotFindMSB ( global uint) +0:35 'ballot' ( temp 4-component vector of uint) +0:37 subgroupShuffle ( global 4-component vector of float) +0:37 'f4' ( in 4-component vector of float) +0:37 Constant: +0:37 0 (const uint) +0:38 subgroupShuffleXor ( global 4-component vector of float) +0:38 'f4' ( in 4-component vector of float) +0:38 Constant: +0:38 1 (const uint) +0:39 subgroupShuffleUp ( global 4-component vector of float) +0:39 'f4' ( in 4-component vector of float) +0:39 Constant: +0:39 1 (const uint) +0:40 subgroupShuffleDown ( global 4-component vector of float) +0:40 'f4' ( in 4-component vector of float) +0:40 Constant: +0:40 1 (const uint) +0:42 move second child to first child ( temp 4-component vector of float) +0:42 'result' ( temp 4-component vector of float) +0:42 subgroupAdd ( global 4-component vector of float) +0:42 'f4' ( in 4-component vector of float) +0:43 subgroupMul ( global 4-component vector of float) +0:43 'f4' ( in 4-component vector of float) +0:44 subgroupMin ( global 4-component vector of float) +0:44 'f4' ( in 4-component vector of float) +0:45 subgroupMax ( global 4-component vector of float) +0:45 'f4' ( in 4-component vector of float) +0:46 subgroupAnd ( global 4-component vector of uint) +0:46 'ballot' ( temp 4-component vector of uint) +0:47 subgroupOr ( global 4-component vector of uint) +0:47 'ballot' ( temp 4-component vector of uint) +0:48 subgroupXor ( global 4-component vector of uint) +0:48 'ballot' ( temp 4-component vector of uint) +0:49 subgroupInclusiveAdd ( global 4-component vector of float) +0:49 'f4' ( in 4-component vector of float) +0:50 subgroupInclusiveMul ( global 4-component vector of float) +0:50 'f4' ( in 4-component vector of float) +0:51 subgroupInclusiveMin ( global 4-component vector of float) +0:51 'f4' ( in 4-component vector of float) +0:52 subgroupInclusiveMax ( global 4-component vector of float) +0:52 'f4' ( in 4-component vector of float) +0:53 subgroupInclusiveAnd ( global 4-component vector of uint) +0:53 'ballot' ( temp 4-component vector of uint) +0:54 subgroupInclusiveOr ( global 4-component vector of uint) +0:54 'ballot' ( temp 4-component vector of uint) +0:55 subgroupInclusiveXor ( global 4-component vector of uint) +0:55 'ballot' ( temp 4-component vector of uint) +0:56 subgroupExclusiveAdd ( global 4-component vector of float) +0:56 'f4' ( in 4-component vector of float) +0:57 subgroupExclusiveMul ( global 4-component vector of float) +0:57 'f4' ( in 4-component vector of float) +0:58 subgroupExclusiveMin ( global 4-component vector of float) +0:58 'f4' ( in 4-component vector of float) +0:59 subgroupExclusiveMax ( global 4-component vector of float) +0:59 'f4' ( in 4-component vector of float) +0:60 subgroupExclusiveAnd ( global 4-component vector of uint) +0:60 'ballot' ( temp 4-component vector of uint) +0:61 subgroupExclusiveOr ( global 4-component vector of uint) +0:61 'ballot' ( temp 4-component vector of uint) +0:62 subgroupExclusiveXor ( global 4-component vector of uint) +0:62 'ballot' ( temp 4-component vector of uint) +0:64 subgroupClusteredAdd ( global 4-component vector of float) +0:64 'f4' ( in 4-component vector of float) +0:64 Constant: +0:64 2 (const uint) +0:65 subgroupClusteredMul ( global 4-component vector of float) +0:65 'f4' ( in 4-component vector of float) +0:65 Constant: +0:65 2 (const uint) +0:66 subgroupClusteredMin ( global 4-component vector of float) +0:66 'f4' ( in 4-component vector of float) +0:66 Constant: +0:66 2 (const uint) +0:67 subgroupClusteredMax ( global 4-component vector of float) +0:67 'f4' ( in 4-component vector of float) +0:67 Constant: +0:67 2 (const uint) +0:68 subgroupClusteredAnd ( global 4-component vector of uint) +0:68 'ballot' ( temp 4-component vector of uint) +0:68 Constant: +0:68 2 (const uint) +0:69 subgroupClusteredOr ( global 4-component vector of uint) +0:69 'ballot' ( temp 4-component vector of uint) +0:69 Constant: +0:69 2 (const uint) +0:70 subgroupClusteredXor ( global 4-component vector of uint) +0:70 'ballot' ( temp 4-component vector of uint) +0:70 Constant: +0:70 2 (const uint) +0:72 subgroupQuadBroadcast ( global 4-component vector of float) +0:72 'f4' ( in 4-component vector of float) +0:72 Constant: +0:72 0 (const uint) +0:73 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:73 'f4' ( in 4-component vector of float) +0:74 subgroupQuadSwapVertical ( global 4-component vector of float) +0:74 'f4' ( in 4-component vector of float) +0:75 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:75 'f4' ( in 4-component vector of float) +0:77 Sequence +0:77 move second child to first child ( temp 4-component vector of uint) +0:77 'parti' ( temp 4-component vector of uint) +0:77 subgroupPartitionNV ( global 4-component vector of uint) +0:77 'f4' ( in 4-component vector of float) +0:78 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:78 'f4' ( in 4-component vector of float) +0:78 'parti' ( temp 4-component vector of uint) +0:79 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:79 'f4' ( in 4-component vector of float) +0:79 'parti' ( temp 4-component vector of uint) +0:80 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:80 'f4' ( in 4-component vector of float) +0:80 'parti' ( temp 4-component vector of uint) +0:81 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:81 'f4' ( in 4-component vector of float) +0:81 'parti' ( temp 4-component vector of uint) +0:82 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:82 'ballot' ( temp 4-component vector of uint) +0:82 'parti' ( temp 4-component vector of uint) +0:83 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:83 'ballot' ( temp 4-component vector of uint) +0:83 'parti' ( temp 4-component vector of uint) +0:84 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:84 'ballot' ( temp 4-component vector of uint) +0:84 'parti' ( temp 4-component vector of uint) +0:85 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:85 'f4' ( in 4-component vector of float) +0:85 'parti' ( temp 4-component vector of uint) +0:86 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:86 'f4' ( in 4-component vector of float) +0:86 'parti' ( temp 4-component vector of uint) +0:87 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:87 'f4' ( in 4-component vector of float) +0:87 'parti' ( temp 4-component vector of uint) +0:88 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:88 'f4' ( in 4-component vector of float) +0:88 'parti' ( temp 4-component vector of uint) +0:89 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:89 'ballot' ( temp 4-component vector of uint) +0:89 'parti' ( temp 4-component vector of uint) +0:90 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:90 'ballot' ( temp 4-component vector of uint) +0:90 'parti' ( temp 4-component vector of uint) +0:91 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:91 'ballot' ( temp 4-component vector of uint) +0:91 'parti' ( temp 4-component vector of uint) +0:92 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:92 'f4' ( in 4-component vector of float) +0:92 'parti' ( temp 4-component vector of uint) +0:93 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:93 'f4' ( in 4-component vector of float) +0:93 'parti' ( temp 4-component vector of uint) +0:94 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:94 'f4' ( in 4-component vector of float) +0:94 'parti' ( temp 4-component vector of uint) +0:95 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:95 'f4' ( in 4-component vector of float) +0:95 'parti' ( temp 4-component vector of uint) +0:96 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:96 'ballot' ( temp 4-component vector of uint) +0:96 'parti' ( temp 4-component vector of uint) +0:97 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:97 'ballot' ( temp 4-component vector of uint) +0:97 'parti' ( temp 4-component vector of uint) +0:98 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:98 'ballot' ( temp 4-component vector of uint) +0:98 'parti' ( temp 4-component vector of uint) +0:100 Branch: Return with expression +0:100 'result' ( temp 4-component vector of float) +0:112 Function Definition: main( ( global void) +0:112 Function Parameters: +0:114 Sequence +0:114 move second child to first child ( temp int) +0:114 indirect index (layout( column_major shared) temp int) +0:114 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) +0:114 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) +0:114 Constant: +0:114 0 (const int) +0:114 'gl_SubgroupSize' ( in uint unknown built-in variable) +0:114 Constant: +0:114 1 (const int) +0:115 move second child to first child ( temp int) +0:115 indirect index (layout( column_major shared) temp int) +0:115 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) +0:115 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) +0:115 Constant: +0:115 0 (const int) +0:115 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) +0:115 Constant: +0:115 1 (const int) +0:116 move second child to first child ( temp int) +0:116 indirect index (layout( column_major shared) temp int) +0:116 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) +0:116 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) +0:116 Constant: +0:116 0 (const int) +0:116 'gl_NumSubgroups' ( in uint unknown built-in variable) +0:116 Constant: +0:116 1 (const int) +0:117 move second child to first child ( temp int) +0:117 indirect index (layout( column_major shared) temp int) +0:117 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) +0:117 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) +0:117 Constant: +0:117 0 (const int) +0:117 'gl_SubgroupID' ( in uint unknown built-in variable) +0:117 Test condition and select ( temp int) +0:117 Condition +0:117 subgroupElect ( global bool) +0:117 true case +0:117 Constant: +0:117 1 (const int) +0:117 false case +0:117 Constant: +0:117 0 (const int) +0:118 subgroupBarrier ( global void) +0:119 subgroupMemoryBarrier ( global void) +0:120 subgroupMemoryBarrierBuffer ( global void) +0:121 subgroupMemoryBarrierShared ( global void) +0:122 subgroupMemoryBarrierImage ( global void) +0:126 Function Definition: ballot_works(vf4; ( global void) +0:126 Function Parameters: +0:126 'f4' ( in 4-component vector of float) +0:127 Sequence +0:127 'gl_SubgroupEqMask' ( in 4-component vector of uint unknown built-in variable) +0:128 'gl_SubgroupGeMask' ( in 4-component vector of uint unknown built-in variable) +0:129 'gl_SubgroupGtMask' ( in 4-component vector of uint unknown built-in variable) +0:130 'gl_SubgroupLeMask' ( in 4-component vector of uint unknown built-in variable) +0:131 'gl_SubgroupLtMask' ( in 4-component vector of uint unknown built-in variable) +0:132 subgroupBroadcast ( global 4-component vector of float) +0:132 'f4' ( in 4-component vector of float) +0:132 Constant: +0:132 0 (const uint) +0:133 subgroupBroadcastFirst ( global 4-component vector of float) +0:133 'f4' ( in 4-component vector of float) +0:134 Sequence +0:134 move second child to first child ( temp 4-component vector of uint) +0:134 'ballot' ( temp 4-component vector of uint) +0:134 subgroupBallot ( global 4-component vector of uint) +0:134 Constant: +0:134 false (const bool) +0:135 subgroupInverseBallot ( global bool) +0:135 Constant: +0:135 1 (const uint) +0:135 1 (const uint) +0:135 1 (const uint) +0:135 1 (const uint) +0:136 subgroupBallotBitExtract ( global bool) +0:136 'ballot' ( temp 4-component vector of uint) +0:136 Constant: +0:136 0 (const uint) +0:137 subgroupBallotBitCount ( global uint) +0:137 'ballot' ( temp 4-component vector of uint) +0:138 subgroupBallotInclusiveBitCount ( global uint) +0:138 'ballot' ( temp 4-component vector of uint) +0:139 subgroupBallotExclusiveBitCount ( global uint) +0:139 'ballot' ( temp 4-component vector of uint) +0:140 subgroupBallotFindLSB ( global uint) +0:140 'ballot' ( temp 4-component vector of uint) +0:141 subgroupBallotFindMSB ( global uint) +0:141 'ballot' ( temp 4-component vector of uint) +0:145 Function Definition: vote_works(vf4; ( global void) +0:145 Function Parameters: +0:145 'f4' ( in 4-component vector of float) +0:147 Sequence +0:147 subgroupAll ( global bool) +0:147 Constant: +0:147 true (const bool) +0:148 subgroupAny ( global bool) +0:148 Constant: +0:148 false (const bool) +0:149 subgroupAllEqual ( global bool) +0:149 'f4' ( in 4-component vector of float) +0:154 Function Definition: shuffle_works(vf4; ( global void) +0:154 Function Parameters: +0:154 'f4' ( in 4-component vector of float) +0:156 Sequence +0:156 subgroupShuffle ( global 4-component vector of float) +0:156 'f4' ( in 4-component vector of float) +0:156 Constant: +0:156 0 (const uint) +0:157 subgroupShuffleXor ( global 4-component vector of float) +0:157 'f4' ( in 4-component vector of float) +0:157 Constant: +0:157 1 (const uint) +0:158 subgroupShuffleUp ( global 4-component vector of float) +0:158 'f4' ( in 4-component vector of float) +0:158 Constant: +0:158 1 (const uint) +0:159 subgroupShuffleDown ( global 4-component vector of float) +0:159 'f4' ( in 4-component vector of float) +0:159 Constant: +0:159 1 (const uint) +0:163 Function Definition: arith_works(vf4; ( global void) +0:163 Function Parameters: +0:163 'f4' ( in 4-component vector of float) +0:? Sequence +0:166 subgroupAdd ( global 4-component vector of float) +0:166 'f4' ( in 4-component vector of float) +0:167 subgroupMul ( global 4-component vector of float) +0:167 'f4' ( in 4-component vector of float) +0:168 subgroupMin ( global 4-component vector of float) +0:168 'f4' ( in 4-component vector of float) +0:169 subgroupMax ( global 4-component vector of float) +0:169 'f4' ( in 4-component vector of float) +0:170 subgroupAnd ( global 4-component vector of uint) +0:170 'ballot' ( temp 4-component vector of uint) +0:171 subgroupOr ( global 4-component vector of uint) +0:171 'ballot' ( temp 4-component vector of uint) +0:172 subgroupXor ( global 4-component vector of uint) +0:172 'ballot' ( temp 4-component vector of uint) +0:173 subgroupInclusiveAdd ( global 4-component vector of float) +0:173 'f4' ( in 4-component vector of float) +0:174 subgroupInclusiveMul ( global 4-component vector of float) +0:174 'f4' ( in 4-component vector of float) +0:175 subgroupInclusiveMin ( global 4-component vector of float) +0:175 'f4' ( in 4-component vector of float) +0:176 subgroupInclusiveMax ( global 4-component vector of float) +0:176 'f4' ( in 4-component vector of float) +0:177 subgroupInclusiveAnd ( global 4-component vector of uint) +0:177 'ballot' ( temp 4-component vector of uint) +0:178 subgroupInclusiveOr ( global 4-component vector of uint) +0:178 'ballot' ( temp 4-component vector of uint) +0:179 subgroupInclusiveXor ( global 4-component vector of uint) +0:179 'ballot' ( temp 4-component vector of uint) +0:180 subgroupExclusiveAdd ( global 4-component vector of float) +0:180 'f4' ( in 4-component vector of float) +0:181 subgroupExclusiveMul ( global 4-component vector of float) +0:181 'f4' ( in 4-component vector of float) +0:182 subgroupExclusiveMin ( global 4-component vector of float) +0:182 'f4' ( in 4-component vector of float) +0:183 subgroupExclusiveMax ( global 4-component vector of float) +0:183 'f4' ( in 4-component vector of float) +0:184 subgroupExclusiveAnd ( global 4-component vector of uint) +0:184 'ballot' ( temp 4-component vector of uint) +0:185 subgroupExclusiveOr ( global 4-component vector of uint) +0:185 'ballot' ( temp 4-component vector of uint) +0:186 subgroupExclusiveXor ( global 4-component vector of uint) +0:186 'ballot' ( temp 4-component vector of uint) +0:190 Function Definition: clustered_works(vf4; ( global void) +0:190 Function Parameters: +0:190 'f4' ( in 4-component vector of float) +0:192 Sequence +0:192 Sequence +0:192 move second child to first child ( temp 4-component vector of uint) +0:192 'ballot' ( temp 4-component vector of uint) +0:192 Constant: +0:192 85 (const uint) +0:192 0 (const uint) +0:192 0 (const uint) +0:192 0 (const uint) +0:193 subgroupClusteredAdd ( global 4-component vector of float) +0:193 'f4' ( in 4-component vector of float) +0:193 Constant: +0:193 2 (const uint) +0:194 subgroupClusteredMul ( global 4-component vector of float) +0:194 'f4' ( in 4-component vector of float) +0:194 Constant: +0:194 2 (const uint) +0:195 subgroupClusteredMin ( global 4-component vector of float) +0:195 'f4' ( in 4-component vector of float) +0:195 Constant: +0:195 2 (const uint) +0:196 subgroupClusteredMax ( global 4-component vector of float) +0:196 'f4' ( in 4-component vector of float) +0:196 Constant: +0:196 2 (const uint) +0:197 subgroupClusteredAnd ( global 4-component vector of uint) +0:197 'ballot' ( temp 4-component vector of uint) +0:197 Constant: +0:197 2 (const uint) +0:198 subgroupClusteredOr ( global 4-component vector of uint) +0:198 'ballot' ( temp 4-component vector of uint) +0:198 Constant: +0:198 2 (const uint) +0:199 subgroupClusteredXor ( global 4-component vector of uint) +0:199 'ballot' ( temp 4-component vector of uint) +0:199 Constant: +0:199 2 (const uint) +0:203 Function Definition: quad_works(vf4; ( global void) +0:203 Function Parameters: +0:203 'f4' ( in 4-component vector of float) +0:205 Sequence +0:205 subgroupQuadBroadcast ( global 4-component vector of float) +0:205 'f4' ( in 4-component vector of float) +0:205 Constant: +0:205 0 (const uint) +0:206 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:206 'f4' ( in 4-component vector of float) +0:207 subgroupQuadSwapVertical ( global 4-component vector of float) +0:207 'f4' ( in 4-component vector of float) +0:208 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:208 'f4' ( in 4-component vector of float) +0:212 Function Definition: partitioned_works(vf4; ( global void) +0:212 Function Parameters: +0:212 'f4' ( in 4-component vector of float) +0:214 Sequence +0:214 Sequence +0:214 move second child to first child ( temp 4-component vector of uint) +0:214 'parti' ( temp 4-component vector of uint) +0:214 subgroupPartitionNV ( global 4-component vector of uint) +0:214 'f4' ( in 4-component vector of float) +0:215 Sequence +0:215 move second child to first child ( temp 4-component vector of uint) +0:215 'ballot' ( temp 4-component vector of uint) +0:215 Constant: +0:215 85 (const uint) +0:215 0 (const uint) +0:215 0 (const uint) +0:215 0 (const uint) +0:216 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:216 'f4' ( in 4-component vector of float) +0:216 'parti' ( temp 4-component vector of uint) +0:217 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:217 'f4' ( in 4-component vector of float) +0:217 'parti' ( temp 4-component vector of uint) +0:218 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:218 'f4' ( in 4-component vector of float) +0:218 'parti' ( temp 4-component vector of uint) +0:219 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:219 'f4' ( in 4-component vector of float) +0:219 'parti' ( temp 4-component vector of uint) +0:220 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:220 'ballot' ( temp 4-component vector of uint) +0:220 'parti' ( temp 4-component vector of uint) +0:221 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:221 'ballot' ( temp 4-component vector of uint) +0:221 'parti' ( temp 4-component vector of uint) +0:222 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:222 'ballot' ( temp 4-component vector of uint) +0:222 'parti' ( temp 4-component vector of uint) +0:223 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:223 'f4' ( in 4-component vector of float) +0:223 'parti' ( temp 4-component vector of uint) +0:224 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:224 'f4' ( in 4-component vector of float) +0:224 'parti' ( temp 4-component vector of uint) +0:225 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:225 'f4' ( in 4-component vector of float) +0:225 'parti' ( temp 4-component vector of uint) +0:226 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:226 'f4' ( in 4-component vector of float) +0:226 'parti' ( temp 4-component vector of uint) +0:227 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:227 'ballot' ( temp 4-component vector of uint) +0:227 'parti' ( temp 4-component vector of uint) +0:228 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:228 'ballot' ( temp 4-component vector of uint) +0:228 'parti' ( temp 4-component vector of uint) +0:229 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:229 'ballot' ( temp 4-component vector of uint) +0:229 'parti' ( temp 4-component vector of uint) +0:230 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:230 'f4' ( in 4-component vector of float) +0:230 'parti' ( temp 4-component vector of uint) +0:231 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:231 'f4' ( in 4-component vector of float) +0:231 'parti' ( temp 4-component vector of uint) +0:232 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:232 'f4' ( in 4-component vector of float) +0:232 'parti' ( temp 4-component vector of uint) +0:233 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:233 'f4' ( in 4-component vector of float) +0:233 'parti' ( temp 4-component vector of uint) +0:234 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:234 'ballot' ( temp 4-component vector of uint) +0:234 'parti' ( temp 4-component vector of uint) +0:235 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:235 'ballot' ( temp 4-component vector of uint) +0:235 'parti' ( temp 4-component vector of uint) +0:236 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:236 'ballot' ( temp 4-component vector of uint) +0:236 'parti' ( temp 4-component vector of uint) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) @@ -66,60 +685,68 @@ Linked compute stage: Shader version: 450 +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_subgroup_partitioned local_size = (8, 8, 1) -0:? Sequence -0:12 Function Definition: main( ( global void) -0:12 Function Parameters: -0:14 Sequence -0:14 move second child to first child ( temp int) -0:14 indirect index (layout( column_major shared) temp int) -0:14 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) -0:14 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) -0:14 Constant: -0:14 0 (const int) -0:14 'gl_SubgroupSize' ( in uint unknown built-in variable) -0:14 Constant: -0:14 1 (const int) -0:15 move second child to first child ( temp int) -0:15 indirect index (layout( column_major shared) temp int) -0:15 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) -0:15 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) -0:15 Constant: -0:15 0 (const int) -0:15 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) -0:15 Constant: -0:15 1 (const int) -0:16 move second child to first child ( temp int) -0:16 indirect index (layout( column_major shared) temp int) -0:16 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) -0:16 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) -0:16 Constant: -0:16 0 (const int) -0:16 'gl_NumSubgroups' ( in uint unknown built-in variable) -0:16 Constant: -0:16 1 (const int) -0:17 move second child to first child ( temp int) -0:17 indirect index (layout( column_major shared) temp int) -0:17 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) -0:17 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) -0:17 Constant: -0:17 0 (const int) -0:17 'gl_SubgroupID' ( in uint unknown built-in variable) -0:17 Test condition and select ( temp int) -0:17 Condition -0:17 subgroupElect ( global bool) -0:17 true case -0:17 Constant: -0:17 1 (const int) -0:17 false case -0:17 Constant: -0:17 0 (const int) -0:18 subgroupBarrier ( global void) -0:19 subgroupMemoryBarrier ( global void) -0:20 subgroupMemoryBarrierBuffer ( global void) -0:21 subgroupMemoryBarrierShared ( global void) -0:22 subgroupMemoryBarrierImage ( global void) +ERROR: node is still EOpNull! +0:112 Function Definition: main( ( global void) +0:112 Function Parameters: +0:114 Sequence +0:114 move second child to first child ( temp int) +0:114 indirect index (layout( column_major shared) temp int) +0:114 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) +0:114 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) +0:114 Constant: +0:114 0 (const int) +0:114 'gl_SubgroupSize' ( in uint unknown built-in variable) +0:114 Constant: +0:114 1 (const int) +0:115 move second child to first child ( temp int) +0:115 indirect index (layout( column_major shared) temp int) +0:115 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) +0:115 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) +0:115 Constant: +0:115 0 (const int) +0:115 'gl_SubgroupInvocationID' ( in uint unknown built-in variable) +0:115 Constant: +0:115 1 (const int) +0:116 move second child to first child ( temp int) +0:116 indirect index (layout( column_major shared) temp int) +0:116 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) +0:116 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) +0:116 Constant: +0:116 0 (const int) +0:116 'gl_NumSubgroups' ( in uint unknown built-in variable) +0:116 Constant: +0:116 1 (const int) +0:117 move second child to first child ( temp int) +0:117 indirect index (layout( column_major shared) temp int) +0:117 a: direct index for structure (layout( column_major shared) buffer runtime-sized array of int) +0:117 'data' (layout( binding=0 column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a}) +0:117 Constant: +0:117 0 (const int) +0:117 'gl_SubgroupID' ( in uint unknown built-in variable) +0:117 Test condition and select ( temp int) +0:117 Condition +0:117 subgroupElect ( global bool) +0:117 true case +0:117 Constant: +0:117 1 (const int) +0:117 false case +0:117 Constant: +0:117 0 (const int) +0:118 subgroupBarrier ( global void) +0:119 subgroupMemoryBarrier ( global void) +0:120 subgroupMemoryBarrierBuffer ( global void) +0:121 subgroupMemoryBarrierShared ( global void) +0:122 subgroupMemoryBarrierImage ( global void) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) diff --git a/Test/glsl.450.subgroup.frag b/Test/glsl.450.subgroup.frag index 520052fa..26011ed9 100644 --- a/Test/glsl.450.subgroup.frag +++ b/Test/glsl.450.subgroup.frag @@ -1,7 +1,228 @@ #version 450 + +vec4 undeclared_errors(vec4 f4) +{ + vec4 result; + gl_SubgroupSize; // ERROR, extension not enabled (basic) + gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) + subgroupBarrier(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) + subgroupElect(); // ERROR, extension not enabled (basic) + gl_NumSubgroups; // ERROR, only defined in compute + gl_SubgroupID; // ERROR, only defined in compute + subgroupMemoryBarrierShared(); // ERROR, only defined in compute + + subgroupAll(true); // ERROR extension not enabled (vote) + subgroupAny(false); // ERROR extension not enabled (vote) + subgroupAllEqual(f4); // ERROR extension not enabled (vote) + + gl_SubgroupEqMask; // ERROR extension not enabled (ballot) + gl_SubgroupGeMask; // ERROR extension not enabled (ballot) + gl_SubgroupGtMask; // ERROR extension not enabled (ballot) + gl_SubgroupLeMask; // ERROR extension not enabled (ballot) + gl_SubgroupLtMask; // ERROR extension not enabled (ballot) + subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) + subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) + uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) + subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) + subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) + subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) + subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) + + subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) + subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) + subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) + subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) + + result = subgroupAdd(f4); // ERROR, extension not enabled (arith) + subgroupMul(f4); // ERROR, extension not enabled (arith) + subgroupMin(f4); // ERROR, extension not enabled (arith) + subgroupMax(f4); // ERROR, extension not enabled (arith) + subgroupAnd(ballot); // ERROR, extension not enabled (arith) + subgroupOr(ballot); // ERROR, extension not enabled (arith) + subgroupXor(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) + + subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) + + subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) + subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) + subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) + subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) + + uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) + subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + + return result; +} + #extension GL_KHR_shader_subgroup_basic: enable layout(location = 0) out uvec4 data; void main (void) { data = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); + subgroupBarrier(); + subgroupMemoryBarrier(); + subgroupMemoryBarrierBuffer(); + subgroupMemoryBarrierImage(); + subgroupElect(); } + +#extension GL_KHR_shader_subgroup_ballot: enable +void ballot_works(vec4 f4) { + gl_SubgroupEqMask; + gl_SubgroupGeMask; + gl_SubgroupGtMask; + gl_SubgroupLeMask; + gl_SubgroupLtMask; + subgroupBroadcast(f4, 0); + subgroupBroadcastFirst(f4); + uvec4 ballot = subgroupBallot(false); + subgroupInverseBallot(uvec4(0x1)); + subgroupBallotBitExtract(ballot, 0); + subgroupBallotBitCount(ballot); + subgroupBallotInclusiveBitCount(ballot); + subgroupBallotExclusiveBitCount(ballot); + subgroupBallotFindLSB(ballot); + subgroupBallotFindMSB(ballot); +} + +#extension GL_KHR_shader_subgroup_vote: enable +void vote_works(vec4 f4) +{ + subgroupAll(true); + subgroupAny(false); + subgroupAllEqual(f4); +} + +#extension GL_KHR_shader_subgroup_shuffle: enable +#extension GL_KHR_shader_subgroup_shuffle_relative: enable +void shuffle_works(vec4 f4) +{ + subgroupShuffle(f4, 0); + subgroupShuffleXor(f4, 0x1); + subgroupShuffleUp(f4, 1); + subgroupShuffleDown(f4, 1); +} + +#extension GL_KHR_shader_subgroup_arithmetic: enable +void arith_works(vec4 f4) +{ + uvec4 ballot; + subgroupAdd(f4); + subgroupMul(f4); + subgroupMin(f4); + subgroupMax(f4); + subgroupAnd(ballot); + subgroupOr(ballot); + subgroupXor(ballot); + subgroupInclusiveAdd(f4); + subgroupInclusiveMul(f4); + subgroupInclusiveMin(f4); + subgroupInclusiveMax(f4); + subgroupInclusiveAnd(ballot); + subgroupInclusiveOr(ballot); + subgroupInclusiveXor(ballot); + subgroupExclusiveAdd(f4); + subgroupExclusiveMul(f4); + subgroupExclusiveMin(f4); + subgroupExclusiveMax(f4); + subgroupExclusiveAnd(ballot); + subgroupExclusiveOr(ballot); + subgroupExclusiveXor(ballot); +} + +#extension GL_KHR_shader_subgroup_clustered: enable +void clustered_works(vec4 f4) +{ + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupClusteredAdd(f4, 2); + subgroupClusteredMul(f4, 2); + subgroupClusteredMin(f4, 2); + subgroupClusteredMax(f4, 2); + subgroupClusteredAnd(ballot, 2); + subgroupClusteredOr(ballot, 2); + subgroupClusteredXor(ballot, 2); +} + +#extension GL_KHR_shader_subgroup_quad: enable +void quad_works(vec4 f4) +{ + subgroupQuadBroadcast(f4, 0); + subgroupQuadSwapHorizontal(f4); + subgroupQuadSwapVertical(f4); + subgroupQuadSwapDiagonal(f4); +} + +#extension GL_NV_shader_subgroup_partitioned: enable +void partitioned_works(vec4 f4) +{ + uvec4 parti = subgroupPartitionNV(f4); + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupPartitionedAddNV(f4, parti); + subgroupPartitionedMulNV(f4, parti); + subgroupPartitionedMinNV(f4, parti); + subgroupPartitionedMaxNV(f4, parti); + subgroupPartitionedAndNV(ballot, parti); + subgroupPartitionedOrNV(ballot, parti); + subgroupPartitionedXorNV(ballot, parti); + subgroupPartitionedInclusiveAddNV(f4, parti); + subgroupPartitionedInclusiveMulNV(f4, parti); + subgroupPartitionedInclusiveMinNV(f4, parti); + subgroupPartitionedInclusiveMaxNV(f4, parti); + subgroupPartitionedInclusiveAndNV(ballot, parti); + subgroupPartitionedInclusiveOrNV(ballot, parti); + subgroupPartitionedInclusiveXorNV(ballot, parti); + subgroupPartitionedExclusiveAddNV(f4, parti); + subgroupPartitionedExclusiveMulNV(f4, parti); + subgroupPartitionedExclusiveMinNV(f4, parti); + subgroupPartitionedExclusiveMaxNV(f4, parti); + subgroupPartitionedExclusiveAndNV(ballot, parti); + subgroupPartitionedExclusiveOrNV(ballot, parti); + subgroupPartitionedExclusiveXorNV(ballot, parti); +} + diff --git a/Test/glsl.450.subgroup.geom b/Test/glsl.450.subgroup.geom index 70e9dd48..affe0453 100644 --- a/Test/glsl.450.subgroup.geom +++ b/Test/glsl.450.subgroup.geom @@ -1,4 +1,105 @@ #version 450 + +vec4 undeclared_errors(vec4 f4) +{ + vec4 result; + gl_SubgroupSize; // ERROR, extension not enabled (basic) + gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) + subgroupBarrier(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) + subgroupElect(); // ERROR, extension not enabled (basic) + gl_NumSubgroups; // ERROR, only defined in compute + gl_SubgroupID; // ERROR, only defined in compute + subgroupMemoryBarrierShared(); // ERROR, only defined in compute + + subgroupAll(true); // ERROR extension not enabled (vote) + subgroupAny(false); // ERROR extension not enabled (vote) + subgroupAllEqual(f4); // ERROR extension not enabled (vote) + + gl_SubgroupEqMask; // ERROR extension not enabled (ballot) + gl_SubgroupGeMask; // ERROR extension not enabled (ballot) + gl_SubgroupGtMask; // ERROR extension not enabled (ballot) + gl_SubgroupLeMask; // ERROR extension not enabled (ballot) + gl_SubgroupLtMask; // ERROR extension not enabled (ballot) + subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) + subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) + uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) + subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) + subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) + subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) + subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) + + subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) + subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) + subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) + subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) + + result = subgroupAdd(f4); // ERROR, extension not enabled (arith) + subgroupMul(f4); // ERROR, extension not enabled (arith) + subgroupMin(f4); // ERROR, extension not enabled (arith) + subgroupMax(f4); // ERROR, extension not enabled (arith) + subgroupAnd(ballot); // ERROR, extension not enabled (arith) + subgroupOr(ballot); // ERROR, extension not enabled (arith) + subgroupXor(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) + + subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) + + subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) + subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) + subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) + subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) + + uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) + subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + + return result; +} + #extension GL_KHR_shader_subgroup_basic: enable layout(points) in; layout(points, max_vertices = 1) out; @@ -10,4 +111,124 @@ layout(set = 0, binding = 0, std430) buffer Output void main (void) { result[gl_PrimitiveIDIn] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); + subgroupBarrier(); + subgroupMemoryBarrier(); + subgroupMemoryBarrierBuffer(); + subgroupMemoryBarrierImage(); + subgroupElect(); } + +#extension GL_KHR_shader_subgroup_ballot: enable +void ballot_works(vec4 f4) { + gl_SubgroupEqMask; + gl_SubgroupGeMask; + gl_SubgroupGtMask; + gl_SubgroupLeMask; + gl_SubgroupLtMask; + subgroupBroadcast(f4, 0); + subgroupBroadcastFirst(f4); + uvec4 ballot = subgroupBallot(false); + subgroupInverseBallot(uvec4(0x1)); + subgroupBallotBitExtract(ballot, 0); + subgroupBallotBitCount(ballot); + subgroupBallotInclusiveBitCount(ballot); + subgroupBallotExclusiveBitCount(ballot); + subgroupBallotFindLSB(ballot); + subgroupBallotFindMSB(ballot); +} + +#extension GL_KHR_shader_subgroup_vote: enable +void vote_works(vec4 f4) +{ + subgroupAll(true); + subgroupAny(false); + subgroupAllEqual(f4); +} + +#extension GL_KHR_shader_subgroup_shuffle: enable +#extension GL_KHR_shader_subgroup_shuffle_relative: enable +void shuffle_works(vec4 f4) +{ + subgroupShuffle(f4, 0); + subgroupShuffleXor(f4, 0x1); + subgroupShuffleUp(f4, 1); + subgroupShuffleDown(f4, 1); +} + +#extension GL_KHR_shader_subgroup_arithmetic: enable +void arith_works(vec4 f4) +{ + uvec4 ballot; + subgroupAdd(f4); + subgroupMul(f4); + subgroupMin(f4); + subgroupMax(f4); + subgroupAnd(ballot); + subgroupOr(ballot); + subgroupXor(ballot); + subgroupInclusiveAdd(f4); + subgroupInclusiveMul(f4); + subgroupInclusiveMin(f4); + subgroupInclusiveMax(f4); + subgroupInclusiveAnd(ballot); + subgroupInclusiveOr(ballot); + subgroupInclusiveXor(ballot); + subgroupExclusiveAdd(f4); + subgroupExclusiveMul(f4); + subgroupExclusiveMin(f4); + subgroupExclusiveMax(f4); + subgroupExclusiveAnd(ballot); + subgroupExclusiveOr(ballot); + subgroupExclusiveXor(ballot); +} + +#extension GL_KHR_shader_subgroup_clustered: enable +void clustered_works(vec4 f4) +{ + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupClusteredAdd(f4, 2); + subgroupClusteredMul(f4, 2); + subgroupClusteredMin(f4, 2); + subgroupClusteredMax(f4, 2); + subgroupClusteredAnd(ballot, 2); + subgroupClusteredOr(ballot, 2); + subgroupClusteredXor(ballot, 2); +} + +#extension GL_KHR_shader_subgroup_quad: enable +void quad_works(vec4 f4) +{ + subgroupQuadBroadcast(f4, 0); + subgroupQuadSwapHorizontal(f4); + subgroupQuadSwapVertical(f4); + subgroupQuadSwapDiagonal(f4); +} + +#extension GL_NV_shader_subgroup_partitioned: enable +void partitioned_works(vec4 f4) +{ + uvec4 parti = subgroupPartitionNV(f4); + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupPartitionedAddNV(f4, parti); + subgroupPartitionedMulNV(f4, parti); + subgroupPartitionedMinNV(f4, parti); + subgroupPartitionedMaxNV(f4, parti); + subgroupPartitionedAndNV(ballot, parti); + subgroupPartitionedOrNV(ballot, parti); + subgroupPartitionedXorNV(ballot, parti); + subgroupPartitionedInclusiveAddNV(f4, parti); + subgroupPartitionedInclusiveMulNV(f4, parti); + subgroupPartitionedInclusiveMinNV(f4, parti); + subgroupPartitionedInclusiveMaxNV(f4, parti); + subgroupPartitionedInclusiveAndNV(ballot, parti); + subgroupPartitionedInclusiveOrNV(ballot, parti); + subgroupPartitionedInclusiveXorNV(ballot, parti); + subgroupPartitionedExclusiveAddNV(f4, parti); + subgroupPartitionedExclusiveMulNV(f4, parti); + subgroupPartitionedExclusiveMinNV(f4, parti); + subgroupPartitionedExclusiveMaxNV(f4, parti); + subgroupPartitionedExclusiveAndNV(ballot, parti); + subgroupPartitionedExclusiveOrNV(ballot, parti); + subgroupPartitionedExclusiveXorNV(ballot, parti); +} + diff --git a/Test/glsl.450.subgroup.tesc b/Test/glsl.450.subgroup.tesc index 63bf5e55..a67af25b 100644 --- a/Test/glsl.450.subgroup.tesc +++ b/Test/glsl.450.subgroup.tesc @@ -1,4 +1,105 @@ #version 450 + +vec4 undeclared_errors(vec4 f4) +{ + vec4 result; + gl_SubgroupSize; // ERROR, extension not enabled (basic) + gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) + subgroupBarrier(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) + subgroupElect(); // ERROR, extension not enabled (basic) + gl_NumSubgroups; // ERROR, only defined in compute + gl_SubgroupID; // ERROR, only defined in compute + subgroupMemoryBarrierShared(); // ERROR, only defined in compute + + subgroupAll(true); // ERROR extension not enabled (vote) + subgroupAny(false); // ERROR extension not enabled (vote) + subgroupAllEqual(f4); // ERROR extension not enabled (vote) + + gl_SubgroupEqMask; // ERROR extension not enabled (ballot) + gl_SubgroupGeMask; // ERROR extension not enabled (ballot) + gl_SubgroupGtMask; // ERROR extension not enabled (ballot) + gl_SubgroupLeMask; // ERROR extension not enabled (ballot) + gl_SubgroupLtMask; // ERROR extension not enabled (ballot) + subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) + subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) + uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) + subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) + subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) + subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) + subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) + + subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) + subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) + subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) + subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) + + result = subgroupAdd(f4); // ERROR, extension not enabled (arith) + subgroupMul(f4); // ERROR, extension not enabled (arith) + subgroupMin(f4); // ERROR, extension not enabled (arith) + subgroupMax(f4); // ERROR, extension not enabled (arith) + subgroupAnd(ballot); // ERROR, extension not enabled (arith) + subgroupOr(ballot); // ERROR, extension not enabled (arith) + subgroupXor(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) + + subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) + + subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) + subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) + subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) + subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) + + uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) + subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + + return result; +} + #extension GL_KHR_shader_subgroup_basic: enable layout(vertices=1) out; layout(set = 0, binding = 0, std430) buffer Output @@ -9,4 +110,124 @@ layout(set = 0, binding = 0, std430) buffer Output void main (void) { result[gl_PrimitiveID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); + subgroupBarrier(); + subgroupMemoryBarrier(); + subgroupMemoryBarrierBuffer(); + subgroupMemoryBarrierImage(); + subgroupElect(); } + +#extension GL_KHR_shader_subgroup_ballot: enable +void ballot_works(vec4 f4) { + gl_SubgroupEqMask; + gl_SubgroupGeMask; + gl_SubgroupGtMask; + gl_SubgroupLeMask; + gl_SubgroupLtMask; + subgroupBroadcast(f4, 0); + subgroupBroadcastFirst(f4); + uvec4 ballot = subgroupBallot(false); + subgroupInverseBallot(uvec4(0x1)); + subgroupBallotBitExtract(ballot, 0); + subgroupBallotBitCount(ballot); + subgroupBallotInclusiveBitCount(ballot); + subgroupBallotExclusiveBitCount(ballot); + subgroupBallotFindLSB(ballot); + subgroupBallotFindMSB(ballot); +} + +#extension GL_KHR_shader_subgroup_vote: enable +void vote_works(vec4 f4) +{ + subgroupAll(true); + subgroupAny(false); + subgroupAllEqual(f4); +} + +#extension GL_KHR_shader_subgroup_shuffle: enable +#extension GL_KHR_shader_subgroup_shuffle_relative: enable +void shuffle_works(vec4 f4) +{ + subgroupShuffle(f4, 0); + subgroupShuffleXor(f4, 0x1); + subgroupShuffleUp(f4, 1); + subgroupShuffleDown(f4, 1); +} + +#extension GL_KHR_shader_subgroup_arithmetic: enable +void arith_works(vec4 f4) +{ + uvec4 ballot; + subgroupAdd(f4); + subgroupMul(f4); + subgroupMin(f4); + subgroupMax(f4); + subgroupAnd(ballot); + subgroupOr(ballot); + subgroupXor(ballot); + subgroupInclusiveAdd(f4); + subgroupInclusiveMul(f4); + subgroupInclusiveMin(f4); + subgroupInclusiveMax(f4); + subgroupInclusiveAnd(ballot); + subgroupInclusiveOr(ballot); + subgroupInclusiveXor(ballot); + subgroupExclusiveAdd(f4); + subgroupExclusiveMul(f4); + subgroupExclusiveMin(f4); + subgroupExclusiveMax(f4); + subgroupExclusiveAnd(ballot); + subgroupExclusiveOr(ballot); + subgroupExclusiveXor(ballot); +} + +#extension GL_KHR_shader_subgroup_clustered: enable +void clustered_works(vec4 f4) +{ + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupClusteredAdd(f4, 2); + subgroupClusteredMul(f4, 2); + subgroupClusteredMin(f4, 2); + subgroupClusteredMax(f4, 2); + subgroupClusteredAnd(ballot, 2); + subgroupClusteredOr(ballot, 2); + subgroupClusteredXor(ballot, 2); +} + +#extension GL_KHR_shader_subgroup_quad: enable +void quad_works(vec4 f4) +{ + subgroupQuadBroadcast(f4, 0); + subgroupQuadSwapHorizontal(f4); + subgroupQuadSwapVertical(f4); + subgroupQuadSwapDiagonal(f4); +} + +#extension GL_NV_shader_subgroup_partitioned: enable +void partitioned_works(vec4 f4) +{ + uvec4 parti = subgroupPartitionNV(f4); + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupPartitionedAddNV(f4, parti); + subgroupPartitionedMulNV(f4, parti); + subgroupPartitionedMinNV(f4, parti); + subgroupPartitionedMaxNV(f4, parti); + subgroupPartitionedAndNV(ballot, parti); + subgroupPartitionedOrNV(ballot, parti); + subgroupPartitionedXorNV(ballot, parti); + subgroupPartitionedInclusiveAddNV(f4, parti); + subgroupPartitionedInclusiveMulNV(f4, parti); + subgroupPartitionedInclusiveMinNV(f4, parti); + subgroupPartitionedInclusiveMaxNV(f4, parti); + subgroupPartitionedInclusiveAndNV(ballot, parti); + subgroupPartitionedInclusiveOrNV(ballot, parti); + subgroupPartitionedInclusiveXorNV(ballot, parti); + subgroupPartitionedExclusiveAddNV(f4, parti); + subgroupPartitionedExclusiveMulNV(f4, parti); + subgroupPartitionedExclusiveMinNV(f4, parti); + subgroupPartitionedExclusiveMaxNV(f4, parti); + subgroupPartitionedExclusiveAndNV(ballot, parti); + subgroupPartitionedExclusiveOrNV(ballot, parti); + subgroupPartitionedExclusiveXorNV(ballot, parti); +} + diff --git a/Test/glsl.450.subgroup.tese b/Test/glsl.450.subgroup.tese index e504df79..ebfd1232 100644 --- a/Test/glsl.450.subgroup.tese +++ b/Test/glsl.450.subgroup.tese @@ -1,4 +1,105 @@ #version 450 + +vec4 undeclared_errors(vec4 f4) +{ + vec4 result; + gl_SubgroupSize; // ERROR, extension not enabled (basic) + gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) + subgroupBarrier(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) + subgroupElect(); // ERROR, extension not enabled (basic) + gl_NumSubgroups; // ERROR, only defined in compute + gl_SubgroupID; // ERROR, only defined in compute + subgroupMemoryBarrierShared(); // ERROR, only defined in compute + + subgroupAll(true); // ERROR extension not enabled (vote) + subgroupAny(false); // ERROR extension not enabled (vote) + subgroupAllEqual(f4); // ERROR extension not enabled (vote) + + gl_SubgroupEqMask; // ERROR extension not enabled (ballot) + gl_SubgroupGeMask; // ERROR extension not enabled (ballot) + gl_SubgroupGtMask; // ERROR extension not enabled (ballot) + gl_SubgroupLeMask; // ERROR extension not enabled (ballot) + gl_SubgroupLtMask; // ERROR extension not enabled (ballot) + subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) + subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) + uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) + subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) + subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) + subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) + subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) + + subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) + subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) + subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) + subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) + + result = subgroupAdd(f4); // ERROR, extension not enabled (arith) + subgroupMul(f4); // ERROR, extension not enabled (arith) + subgroupMin(f4); // ERROR, extension not enabled (arith) + subgroupMax(f4); // ERROR, extension not enabled (arith) + subgroupAnd(ballot); // ERROR, extension not enabled (arith) + subgroupOr(ballot); // ERROR, extension not enabled (arith) + subgroupXor(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) + + subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) + + subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) + subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) + subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) + subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) + + uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) + subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + + return result; +} + #extension GL_KHR_shader_subgroup_basic: enable layout(isolines) in; layout(set = 0, binding = 0, std430) buffer Output @@ -9,4 +110,123 @@ layout(set = 0, binding = 0, std430) buffer Output void main (void) { result[gl_PrimitiveID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); + subgroupBarrier(); + subgroupMemoryBarrier(); + subgroupMemoryBarrierBuffer(); + subgroupMemoryBarrierImage(); + subgroupElect(); +} + +#extension GL_KHR_shader_subgroup_ballot: enable +void ballot_works(vec4 f4) { + gl_SubgroupEqMask; + gl_SubgroupGeMask; + gl_SubgroupGtMask; + gl_SubgroupLeMask; + gl_SubgroupLtMask; + subgroupBroadcast(f4, 0); + subgroupBroadcastFirst(f4); + uvec4 ballot = subgroupBallot(false); + subgroupInverseBallot(uvec4(0x1)); + subgroupBallotBitExtract(ballot, 0); + subgroupBallotBitCount(ballot); + subgroupBallotInclusiveBitCount(ballot); + subgroupBallotExclusiveBitCount(ballot); + subgroupBallotFindLSB(ballot); + subgroupBallotFindMSB(ballot); +} + +#extension GL_KHR_shader_subgroup_vote: enable +void vote_works(vec4 f4) +{ + subgroupAll(true); + subgroupAny(false); + subgroupAllEqual(f4); +} + +#extension GL_KHR_shader_subgroup_shuffle: enable +#extension GL_KHR_shader_subgroup_shuffle_relative: enable +void shuffle_works(vec4 f4) +{ + subgroupShuffle(f4, 0); + subgroupShuffleXor(f4, 0x1); + subgroupShuffleUp(f4, 1); + subgroupShuffleDown(f4, 1); +} + +#extension GL_KHR_shader_subgroup_arithmetic: enable +void arith_works(vec4 f4) +{ + uvec4 ballot; + subgroupAdd(f4); + subgroupMul(f4); + subgroupMin(f4); + subgroupMax(f4); + subgroupAnd(ballot); + subgroupOr(ballot); + subgroupXor(ballot); + subgroupInclusiveAdd(f4); + subgroupInclusiveMul(f4); + subgroupInclusiveMin(f4); + subgroupInclusiveMax(f4); + subgroupInclusiveAnd(ballot); + subgroupInclusiveOr(ballot); + subgroupInclusiveXor(ballot); + subgroupExclusiveAdd(f4); + subgroupExclusiveMul(f4); + subgroupExclusiveMin(f4); + subgroupExclusiveMax(f4); + subgroupExclusiveAnd(ballot); + subgroupExclusiveOr(ballot); + subgroupExclusiveXor(ballot); +} + +#extension GL_KHR_shader_subgroup_clustered: enable +void clustered_works(vec4 f4) +{ + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupClusteredAdd(f4, 2); + subgroupClusteredMul(f4, 2); + subgroupClusteredMin(f4, 2); + subgroupClusteredMax(f4, 2); + subgroupClusteredAnd(ballot, 2); + subgroupClusteredOr(ballot, 2); + subgroupClusteredXor(ballot, 2); +} + +#extension GL_KHR_shader_subgroup_quad: enable +void quad_works(vec4 f4) +{ + subgroupQuadBroadcast(f4, 0); + subgroupQuadSwapHorizontal(f4); + subgroupQuadSwapVertical(f4); + subgroupQuadSwapDiagonal(f4); +} + +#extension GL_NV_shader_subgroup_partitioned: enable +void partitioned_works(vec4 f4) +{ + uvec4 parti = subgroupPartitionNV(f4); + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupPartitionedAddNV(f4, parti); + subgroupPartitionedMulNV(f4, parti); + subgroupPartitionedMinNV(f4, parti); + subgroupPartitionedMaxNV(f4, parti); + subgroupPartitionedAndNV(ballot, parti); + subgroupPartitionedOrNV(ballot, parti); + subgroupPartitionedXorNV(ballot, parti); + subgroupPartitionedInclusiveAddNV(f4, parti); + subgroupPartitionedInclusiveMulNV(f4, parti); + subgroupPartitionedInclusiveMinNV(f4, parti); + subgroupPartitionedInclusiveMaxNV(f4, parti); + subgroupPartitionedInclusiveAndNV(ballot, parti); + subgroupPartitionedInclusiveOrNV(ballot, parti); + subgroupPartitionedInclusiveXorNV(ballot, parti); + subgroupPartitionedExclusiveAddNV(f4, parti); + subgroupPartitionedExclusiveMulNV(f4, parti); + subgroupPartitionedExclusiveMinNV(f4, parti); + subgroupPartitionedExclusiveMaxNV(f4, parti); + subgroupPartitionedExclusiveAndNV(ballot, parti); + subgroupPartitionedExclusiveOrNV(ballot, parti); + subgroupPartitionedExclusiveXorNV(ballot, parti); } diff --git a/Test/glsl.450.subgroup.vert b/Test/glsl.450.subgroup.vert index a6f0a9d6..0be08b52 100644 --- a/Test/glsl.450.subgroup.vert +++ b/Test/glsl.450.subgroup.vert @@ -1,4 +1,105 @@ #version 450 + +vec4 undeclared_errors(vec4 f4) +{ + vec4 result; + gl_SubgroupSize; // ERROR, extension not enabled (basic) + gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) + subgroupBarrier(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) + subgroupElect(); // ERROR, extension not enabled (basic) + gl_NumSubgroups; // ERROR, only defined in compute + gl_SubgroupID; // ERROR, only defined in compute + subgroupMemoryBarrierShared(); // ERROR, only defined in compute + + subgroupAll(true); // ERROR extension not enabled (vote) + subgroupAny(false); // ERROR extension not enabled (vote) + subgroupAllEqual(f4); // ERROR extension not enabled (vote) + + gl_SubgroupEqMask; // ERROR extension not enabled (ballot) + gl_SubgroupGeMask; // ERROR extension not enabled (ballot) + gl_SubgroupGtMask; // ERROR extension not enabled (ballot) + gl_SubgroupLeMask; // ERROR extension not enabled (ballot) + gl_SubgroupLtMask; // ERROR extension not enabled (ballot) + subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) + subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) + uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) + subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) + subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) + subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) + subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) + + subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) + subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) + subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) + subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) + + result = subgroupAdd(f4); // ERROR, extension not enabled (arith) + subgroupMul(f4); // ERROR, extension not enabled (arith) + subgroupMin(f4); // ERROR, extension not enabled (arith) + subgroupMax(f4); // ERROR, extension not enabled (arith) + subgroupAnd(ballot); // ERROR, extension not enabled (arith) + subgroupOr(ballot); // ERROR, extension not enabled (arith) + subgroupXor(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) + + subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) + + subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) + subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) + subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) + subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) + + uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) + subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + + return result; +} + #extension GL_KHR_shader_subgroup_basic: enable layout(set = 0, binding = 0, std430) buffer Output { @@ -8,4 +109,124 @@ layout(set = 0, binding = 0, std430) buffer Output void main (void) { result[gl_VertexID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0); + subgroupBarrier(); + subgroupMemoryBarrier(); + subgroupMemoryBarrierBuffer(); + subgroupMemoryBarrierImage(); + subgroupElect(); } + +#extension GL_KHR_shader_subgroup_ballot: enable +void ballot_works(vec4 f4) { + gl_SubgroupEqMask; + gl_SubgroupGeMask; + gl_SubgroupGtMask; + gl_SubgroupLeMask; + gl_SubgroupLtMask; + subgroupBroadcast(f4, 0); + subgroupBroadcastFirst(f4); + uvec4 ballot = subgroupBallot(false); + subgroupInverseBallot(uvec4(0x1)); + subgroupBallotBitExtract(ballot, 0); + subgroupBallotBitCount(ballot); + subgroupBallotInclusiveBitCount(ballot); + subgroupBallotExclusiveBitCount(ballot); + subgroupBallotFindLSB(ballot); + subgroupBallotFindMSB(ballot); +} + +#extension GL_KHR_shader_subgroup_vote: enable +void vote_works(vec4 f4) +{ + subgroupAll(true); + subgroupAny(false); + subgroupAllEqual(f4); +} + +#extension GL_KHR_shader_subgroup_shuffle: enable +#extension GL_KHR_shader_subgroup_shuffle_relative: enable +void shuffle_works(vec4 f4) +{ + subgroupShuffle(f4, 0); + subgroupShuffleXor(f4, 0x1); + subgroupShuffleUp(f4, 1); + subgroupShuffleDown(f4, 1); +} + +#extension GL_KHR_shader_subgroup_arithmetic: enable +void arith_works(vec4 f4) +{ + uvec4 ballot; + subgroupAdd(f4); + subgroupMul(f4); + subgroupMin(f4); + subgroupMax(f4); + subgroupAnd(ballot); + subgroupOr(ballot); + subgroupXor(ballot); + subgroupInclusiveAdd(f4); + subgroupInclusiveMul(f4); + subgroupInclusiveMin(f4); + subgroupInclusiveMax(f4); + subgroupInclusiveAnd(ballot); + subgroupInclusiveOr(ballot); + subgroupInclusiveXor(ballot); + subgroupExclusiveAdd(f4); + subgroupExclusiveMul(f4); + subgroupExclusiveMin(f4); + subgroupExclusiveMax(f4); + subgroupExclusiveAnd(ballot); + subgroupExclusiveOr(ballot); + subgroupExclusiveXor(ballot); +} + +#extension GL_KHR_shader_subgroup_clustered: enable +void clustered_works(vec4 f4) +{ + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupClusteredAdd(f4, 2); + subgroupClusteredMul(f4, 2); + subgroupClusteredMin(f4, 2); + subgroupClusteredMax(f4, 2); + subgroupClusteredAnd(ballot, 2); + subgroupClusteredOr(ballot, 2); + subgroupClusteredXor(ballot, 2); +} + +#extension GL_KHR_shader_subgroup_quad: enable +void quad_works(vec4 f4) +{ + subgroupQuadBroadcast(f4, 0); + subgroupQuadSwapHorizontal(f4); + subgroupQuadSwapVertical(f4); + subgroupQuadSwapDiagonal(f4); +} + +#extension GL_NV_shader_subgroup_partitioned: enable +void partitioned_works(vec4 f4) +{ + uvec4 parti = subgroupPartitionNV(f4); + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupPartitionedAddNV(f4, parti); + subgroupPartitionedMulNV(f4, parti); + subgroupPartitionedMinNV(f4, parti); + subgroupPartitionedMaxNV(f4, parti); + subgroupPartitionedAndNV(ballot, parti); + subgroupPartitionedOrNV(ballot, parti); + subgroupPartitionedXorNV(ballot, parti); + subgroupPartitionedInclusiveAddNV(f4, parti); + subgroupPartitionedInclusiveMulNV(f4, parti); + subgroupPartitionedInclusiveMinNV(f4, parti); + subgroupPartitionedInclusiveMaxNV(f4, parti); + subgroupPartitionedInclusiveAndNV(ballot, parti); + subgroupPartitionedInclusiveOrNV(ballot, parti); + subgroupPartitionedInclusiveXorNV(ballot, parti); + subgroupPartitionedExclusiveAddNV(f4, parti); + subgroupPartitionedExclusiveMulNV(f4, parti); + subgroupPartitionedExclusiveMinNV(f4, parti); + subgroupPartitionedExclusiveMaxNV(f4, parti); + subgroupPartitionedExclusiveAndNV(ballot, parti); + subgroupPartitionedExclusiveOrNV(ballot, parti); + subgroupPartitionedExclusiveXorNV(ballot, parti); +} + diff --git a/Test/glsl.450.subgroupBasic.comp b/Test/glsl.450.subgroupBasic.comp index 4801c107..1bcd4869 100644 --- a/Test/glsl.450.subgroupBasic.comp +++ b/Test/glsl.450.subgroupBasic.comp @@ -1,5 +1,105 @@ #version 450 +vec4 undeclared_errors(vec4 f4) +{ + vec4 result; + gl_SubgroupSize; // ERROR, extension not enabled (basic) + gl_SubgroupInvocationID; // ERROR, extension not enabled (basic) + subgroupBarrier(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrier(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrierBuffer(); // ERROR, extension not enabled (basic) + subgroupMemoryBarrierImage(); // ERROR, extension not enabled (basic) + subgroupElect(); // ERROR, extension not enabled (basic) + gl_NumSubgroups; // ERROR, extension not enabled (basic) + gl_SubgroupID; // ERROR, extension not enabled (basic) + subgroupMemoryBarrierShared(); // ERROR, extension not enabled (basic) + + subgroupAll(true); // ERROR extension not enabled (vote) + subgroupAny(false); // ERROR extension not enabled (vote) + subgroupAllEqual(f4); // ERROR extension not enabled (vote) + + gl_SubgroupEqMask; // ERROR extension not enabled (ballot) + gl_SubgroupGeMask; // ERROR extension not enabled (ballot) + gl_SubgroupGtMask; // ERROR extension not enabled (ballot) + gl_SubgroupLeMask; // ERROR extension not enabled (ballot) + gl_SubgroupLtMask; // ERROR extension not enabled (ballot) + subgroupBroadcast(f4, 0); // ERROR extension not enabled (ballot) + subgroupBroadcastFirst(f4); // ERROR extension not enabled (ballot) + uvec4 ballot = subgroupBallot(false); // ERROR extension not enabled (ballot) + subgroupInverseBallot(uvec4(0x1)); // ERROR extension not enabled (ballot) + subgroupBallotBitExtract(ballot, 0); // ERROR extension not enabled (ballot) + subgroupBallotBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotInclusiveBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotExclusiveBitCount(ballot); // ERROR extension not enabled (ballot) + subgroupBallotFindLSB(ballot); // ERROR extension not enabled (ballot) + subgroupBallotFindMSB(ballot); // ERROR extension not enabled (ballot) + + subgroupShuffle(f4, 0); // ERROR extension not enabled (shuffle) + subgroupShuffleXor(f4, 0x1); // ERROR extension not enabled (shuffle) + subgroupShuffleUp(f4, 1); // ERROR extension not enabled (shuffle_relative) + subgroupShuffleDown(f4, 1); // ERROR extension not enabled (shuffle_relative) + + result = subgroupAdd(f4); // ERROR, extension not enabled (arith) + subgroupMul(f4); // ERROR, extension not enabled (arith) + subgroupMin(f4); // ERROR, extension not enabled (arith) + subgroupMax(f4); // ERROR, extension not enabled (arith) + subgroupAnd(ballot); // ERROR, extension not enabled (arith) + subgroupOr(ballot); // ERROR, extension not enabled (arith) + subgroupXor(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveAdd(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMul(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMin(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveMax(f4); // ERROR, extension not enabled (arith) + subgroupInclusiveAnd(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveOr(ballot); // ERROR, extension not enabled (arith) + subgroupInclusiveXor(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveAdd(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMul(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMin(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveMax(f4); // ERROR, extension not enabled (arith) + subgroupExclusiveAnd(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveOr(ballot); // ERROR, extension not enabled (arith) + subgroupExclusiveXor(ballot); // ERROR, extension not enabled (arith) + + subgroupClusteredAdd(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMul(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMin(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredMax(f4, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredAnd(ballot, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredOr(ballot, 2); // ERROR, extension not enabled (clustered) + subgroupClusteredXor(ballot, 2); // ERROR, extension not enabled (clustered) + + subgroupQuadBroadcast(f4, 0); // ERROR, extension not enabled (quad) + subgroupQuadSwapHorizontal(f4); // ERROR, extension not enabled (quad) + subgroupQuadSwapVertical(f4); // ERROR, extension not enabled (quad) + subgroupQuadSwapDiagonal(f4); // ERROR, extension not enabled (quad) + + uvec4 parti = subgroupPartitionNV(f4); // ERROR, extension not enabled (partitioned) + subgroupPartitionedAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedInclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveAddNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMulNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMinNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveMaxNV(f4, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveAndNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveOrNV(ballot, parti); // ERROR, extension not enabled (partitioned) + subgroupPartitionedExclusiveXorNV(ballot, parti); // ERROR, extension not enabled (partitioned) + + return result; +} + #extension GL_KHR_shader_subgroup_basic: enable layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; @@ -21,3 +121,118 @@ void main() subgroupMemoryBarrierShared(); subgroupMemoryBarrierImage(); } + +#extension GL_KHR_shader_subgroup_ballot: enable +void ballot_works(vec4 f4) { + gl_SubgroupEqMask; + gl_SubgroupGeMask; + gl_SubgroupGtMask; + gl_SubgroupLeMask; + gl_SubgroupLtMask; + subgroupBroadcast(f4, 0); + subgroupBroadcastFirst(f4); + uvec4 ballot = subgroupBallot(false); + subgroupInverseBallot(uvec4(0x1)); + subgroupBallotBitExtract(ballot, 0); + subgroupBallotBitCount(ballot); + subgroupBallotInclusiveBitCount(ballot); + subgroupBallotExclusiveBitCount(ballot); + subgroupBallotFindLSB(ballot); + subgroupBallotFindMSB(ballot); +} + +#extension GL_KHR_shader_subgroup_vote: enable +void vote_works(vec4 f4) +{ + subgroupAll(true); + subgroupAny(false); + subgroupAllEqual(f4); +} + +#extension GL_KHR_shader_subgroup_shuffle: enable +#extension GL_KHR_shader_subgroup_shuffle_relative: enable +void shuffle_works(vec4 f4) +{ + subgroupShuffle(f4, 0); + subgroupShuffleXor(f4, 0x1); + subgroupShuffleUp(f4, 1); + subgroupShuffleDown(f4, 1); +} + +#extension GL_KHR_shader_subgroup_arithmetic: enable +void arith_works(vec4 f4) +{ + uvec4 ballot; + subgroupAdd(f4); + subgroupMul(f4); + subgroupMin(f4); + subgroupMax(f4); + subgroupAnd(ballot); + subgroupOr(ballot); + subgroupXor(ballot); + subgroupInclusiveAdd(f4); + subgroupInclusiveMul(f4); + subgroupInclusiveMin(f4); + subgroupInclusiveMax(f4); + subgroupInclusiveAnd(ballot); + subgroupInclusiveOr(ballot); + subgroupInclusiveXor(ballot); + subgroupExclusiveAdd(f4); + subgroupExclusiveMul(f4); + subgroupExclusiveMin(f4); + subgroupExclusiveMax(f4); + subgroupExclusiveAnd(ballot); + subgroupExclusiveOr(ballot); + subgroupExclusiveXor(ballot); +} + +#extension GL_KHR_shader_subgroup_clustered: enable +void clustered_works(vec4 f4) +{ + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupClusteredAdd(f4, 2); + subgroupClusteredMul(f4, 2); + subgroupClusteredMin(f4, 2); + subgroupClusteredMax(f4, 2); + subgroupClusteredAnd(ballot, 2); + subgroupClusteredOr(ballot, 2); + subgroupClusteredXor(ballot, 2); +} + +#extension GL_KHR_shader_subgroup_quad: enable +void quad_works(vec4 f4) +{ + subgroupQuadBroadcast(f4, 0); + subgroupQuadSwapHorizontal(f4); + subgroupQuadSwapVertical(f4); + subgroupQuadSwapDiagonal(f4); +} + +#extension GL_NV_shader_subgroup_partitioned: enable +void partitioned_works(vec4 f4) +{ + uvec4 parti = subgroupPartitionNV(f4); + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupPartitionedAddNV(f4, parti); + subgroupPartitionedMulNV(f4, parti); + subgroupPartitionedMinNV(f4, parti); + subgroupPartitionedMaxNV(f4, parti); + subgroupPartitionedAndNV(ballot, parti); + subgroupPartitionedOrNV(ballot, parti); + subgroupPartitionedXorNV(ballot, parti); + subgroupPartitionedInclusiveAddNV(f4, parti); + subgroupPartitionedInclusiveMulNV(f4, parti); + subgroupPartitionedInclusiveMinNV(f4, parti); + subgroupPartitionedInclusiveMaxNV(f4, parti); + subgroupPartitionedInclusiveAndNV(ballot, parti); + subgroupPartitionedInclusiveOrNV(ballot, parti); + subgroupPartitionedInclusiveXorNV(ballot, parti); + subgroupPartitionedExclusiveAddNV(f4, parti); + subgroupPartitionedExclusiveMulNV(f4, parti); + subgroupPartitionedExclusiveMinNV(f4, parti); + subgroupPartitionedExclusiveMaxNV(f4, parti); + subgroupPartitionedExclusiveAndNV(ballot, parti); + subgroupPartitionedExclusiveOrNV(ballot, parti); + subgroupPartitionedExclusiveXorNV(ballot, parti); +} +