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); +} +