diff --git a/Test/baseResults/glsl.460.subgroup.rahit.out b/Test/baseResults/glsl.460.subgroup.rahit.out new file mode 100644 index 00000000..01ba0a10 --- /dev/null +++ b/Test/baseResults/glsl.460.subgroup.rahit.out @@ -0,0 +1,824 @@ +glsl.460.subgroup.rahit +ERROR: 0:7: 'gl_SubgroupSize' : undeclared identifier +ERROR: 0:8: 'gl_SubgroupInvocationID' : undeclared identifier +ERROR: 0:9: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:10: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:11: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:12: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:13: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:14: 'gl_NumSubgroups' : undeclared identifier +ERROR: 0:15: 'gl_SubgroupID' : undeclared identifier +ERROR: 0:16: 'subgroupMemoryBarrierShared' : no matching overloaded function found +ERROR: 0:18: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:19: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:20: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:22: 'gl_SubgroupEqMask' : undeclared identifier +ERROR: 0:23: 'gl_SubgroupGeMask' : undeclared identifier +ERROR: 0:24: 'gl_SubgroupGtMask' : undeclared identifier +ERROR: 0:25: 'gl_SubgroupLeMask' : undeclared identifier +ERROR: 0:26: 'gl_SubgroupLtMask' : undeclared identifier +ERROR: 0:27: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:28: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:29: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:30: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:31: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:32: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:33: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:34: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:35: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:36: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:38: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:39: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:40: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:41: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:43: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:44: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:45: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:46: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:47: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:48: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:49: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:50: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:51: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:52: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:53: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:54: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:55: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:56: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:57: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:58: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:59: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:60: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:61: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:62: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:63: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:65: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:66: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:67: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:68: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:69: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:70: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:71: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:73: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:74: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:75: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:76: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:78: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:79: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:80: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:81: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:82: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:83: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:84: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:85: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:86: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:87: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:88: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:89: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:90: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:91: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:92: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:93: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:94: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:95: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:133: 'gl_SubgroupSize' : undeclared identifier +ERROR: 0:134: 'gl_SubgroupInvocationID' : undeclared identifier +ERROR: 0:144: 'gl_SubgroupEqMask' : undeclared identifier +ERROR: 0:145: 'gl_SubgroupGeMask' : undeclared identifier +ERROR: 0:146: 'gl_SubgroupGtMask' : undeclared identifier +ERROR: 0:147: 'gl_SubgroupLeMask' : undeclared identifier +ERROR: 0:148: 'gl_SubgroupLtMask' : undeclared identifier +ERROR: 93 compilation errors. No code generated. + + +Shader version: 460 +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_ray_tracing +Requested GL_NV_shader_subgroup_partitioned +ERROR: node is still EOpNull! +0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) +0:4 Function Parameters: +0:4 'f4' ( in 4-component vector of float) +0:? Sequence +0:7 'gl_SubgroupSize' ( temp float) +0:8 'gl_SubgroupInvocationID' ( temp float) +0:9 subgroupBarrier ( global void) +0:10 subgroupMemoryBarrier ( global void) +0:11 subgroupMemoryBarrierBuffer ( global void) +0:12 subgroupMemoryBarrierImage ( global void) +0:13 subgroupElect ( global bool) +0:14 'gl_NumSubgroups' ( temp float) +0:15 'gl_SubgroupID' ( temp float) +0:16 Constant: +0:16 0.000000 +0:18 subgroupAll ( global bool) +0:18 Constant: +0:18 true (const bool) +0:19 subgroupAny ( global bool) +0:19 Constant: +0:19 false (const bool) +0:20 subgroupAllEqual ( global bool) +0:20 'f4' ( in 4-component vector of float) +0:22 'gl_SubgroupEqMask' ( temp float) +0:23 'gl_SubgroupGeMask' ( temp float) +0:24 'gl_SubgroupGtMask' ( temp float) +0:25 'gl_SubgroupLeMask' ( temp float) +0:26 'gl_SubgroupLtMask' ( temp float) +0:27 subgroupBroadcast ( global 4-component vector of float) +0:27 'f4' ( in 4-component vector of float) +0:27 Constant: +0:27 0 (const uint) +0:28 subgroupBroadcastFirst ( global 4-component vector of float) +0:28 'f4' ( in 4-component vector of float) +0:29 Sequence +0:29 move second child to first child ( temp 4-component vector of uint) +0:29 'ballot' ( temp 4-component vector of uint) +0:29 subgroupBallot ( global 4-component vector of uint) +0:29 Constant: +0:29 false (const bool) +0:30 subgroupInverseBallot ( global bool) +0:30 Constant: +0:30 1 (const uint) +0:30 1 (const uint) +0:30 1 (const uint) +0:30 1 (const uint) +0:31 subgroupBallotBitExtract ( global bool) +0:31 'ballot' ( temp 4-component vector of uint) +0:31 Constant: +0:31 0 (const uint) +0:32 subgroupBallotBitCount ( global uint) +0:32 'ballot' ( temp 4-component vector of uint) +0:33 subgroupBallotInclusiveBitCount ( global uint) +0:33 'ballot' ( temp 4-component vector of uint) +0:34 subgroupBallotExclusiveBitCount ( global uint) +0:34 'ballot' ( temp 4-component vector of uint) +0:35 subgroupBallotFindLSB ( global uint) +0:35 'ballot' ( temp 4-component vector of uint) +0:36 subgroupBallotFindMSB ( global uint) +0:36 'ballot' ( temp 4-component vector of uint) +0:38 subgroupShuffle ( global 4-component vector of float) +0:38 'f4' ( in 4-component vector of float) +0:38 Constant: +0:38 0 (const uint) +0:39 subgroupShuffleXor ( 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 subgroupShuffleUp ( global 4-component vector of float) +0:40 'f4' ( in 4-component vector of float) +0:40 Constant: +0:40 1 (const uint) +0:41 subgroupShuffleDown ( global 4-component vector of float) +0:41 'f4' ( in 4-component vector of float) +0:41 Constant: +0:41 1 (const uint) +0:43 move second child to first child ( temp 4-component vector of float) +0:43 'result' ( temp 4-component vector of float) +0:43 subgroupAdd ( global 4-component vector of float) +0:43 'f4' ( in 4-component vector of float) +0:44 subgroupMul ( global 4-component vector of float) +0:44 'f4' ( in 4-component vector of float) +0:45 subgroupMin ( global 4-component vector of float) +0:45 'f4' ( in 4-component vector of float) +0:46 subgroupMax ( global 4-component vector of float) +0:46 'f4' ( in 4-component vector of float) +0:47 subgroupAnd ( global 4-component vector of uint) +0:47 'ballot' ( temp 4-component vector of uint) +0:48 subgroupOr ( global 4-component vector of uint) +0:48 'ballot' ( temp 4-component vector of uint) +0:49 subgroupXor ( global 4-component vector of uint) +0:49 'ballot' ( temp 4-component vector of uint) +0:50 subgroupInclusiveAdd ( global 4-component vector of float) +0:50 'f4' ( in 4-component vector of float) +0:51 subgroupInclusiveMul ( global 4-component vector of float) +0:51 'f4' ( in 4-component vector of float) +0:52 subgroupInclusiveMin ( global 4-component vector of float) +0:52 'f4' ( in 4-component vector of float) +0:53 subgroupInclusiveMax ( global 4-component vector of float) +0:53 'f4' ( in 4-component vector of float) +0:54 subgroupInclusiveAnd ( global 4-component vector of uint) +0:54 'ballot' ( temp 4-component vector of uint) +0:55 subgroupInclusiveOr ( global 4-component vector of uint) +0:55 'ballot' ( temp 4-component vector of uint) +0:56 subgroupInclusiveXor ( global 4-component vector of uint) +0:56 'ballot' ( temp 4-component vector of uint) +0:57 subgroupExclusiveAdd ( global 4-component vector of float) +0:57 'f4' ( in 4-component vector of float) +0:58 subgroupExclusiveMul ( global 4-component vector of float) +0:58 'f4' ( in 4-component vector of float) +0:59 subgroupExclusiveMin ( global 4-component vector of float) +0:59 'f4' ( in 4-component vector of float) +0:60 subgroupExclusiveMax ( global 4-component vector of float) +0:60 'f4' ( in 4-component vector of float) +0:61 subgroupExclusiveAnd ( global 4-component vector of uint) +0:61 'ballot' ( temp 4-component vector of uint) +0:62 subgroupExclusiveOr ( global 4-component vector of uint) +0:62 'ballot' ( temp 4-component vector of uint) +0:63 subgroupExclusiveXor ( global 4-component vector of uint) +0:63 'ballot' ( temp 4-component vector of uint) +0:65 subgroupClusteredAdd ( 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 subgroupClusteredMul ( 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 subgroupClusteredMin ( 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 subgroupClusteredMax ( global 4-component vector of float) +0:68 'f4' ( in 4-component vector of float) +0:68 Constant: +0:68 2 (const uint) +0:69 subgroupClusteredAnd ( 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 subgroupClusteredOr ( global 4-component vector of uint) +0:70 'ballot' ( temp 4-component vector of uint) +0:70 Constant: +0:70 2 (const uint) +0:71 subgroupClusteredXor ( global 4-component vector of uint) +0:71 'ballot' ( temp 4-component vector of uint) +0:71 Constant: +0:71 2 (const uint) +0:73 subgroupQuadBroadcast ( global 4-component vector of float) +0:73 'f4' ( in 4-component vector of float) +0:73 Constant: +0:73 0 (const uint) +0:74 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:74 'f4' ( in 4-component vector of float) +0:75 subgroupQuadSwapVertical ( global 4-component vector of float) +0:75 'f4' ( in 4-component vector of float) +0:76 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:76 'f4' ( in 4-component vector of float) +0:78 Sequence +0:78 move second child to first child ( temp 4-component vector of uint) +0:78 'parti' ( temp 4-component vector of uint) +0:78 subgroupPartitionNV ( global 4-component vector of uint) +0:78 'f4' ( in 4-component vector of float) +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 float) +0:82 'f4' ( in 4-component vector of float) +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 uint) +0:85 'ballot' ( temp 4-component vector of uint) +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 float) +0:89 'f4' ( in 4-component vector of float) +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 uint) +0:92 'ballot' ( temp 4-component vector of uint) +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 float) +0:96 'f4' ( in 4-component vector of float) +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:99 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:99 'ballot' ( temp 4-component vector of uint) +0:99 'parti' ( temp 4-component vector of uint) +0:101 Branch: Return with expression +0:101 'result' ( temp 4-component vector of float) +0:106 Function Definition: main( ( global void) +0:106 Function Parameters: +0:108 Sequence +0:108 Sequence +0:108 move second child to first child ( temp 3-component vector of uint) +0:108 'v0' ( temp 3-component vector of uint) +0:108 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) +0:109 Sequence +0:109 move second child to first child ( temp 3-component vector of uint) +0:109 'v1' ( temp 3-component vector of uint) +0:109 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) +0:110 Sequence +0:110 move second child to first child ( temp int) +0:110 'v2' ( temp int) +0:110 'gl_PrimitiveID' ( in int PrimitiveID) +0:111 Sequence +0:111 move second child to first child ( temp int) +0:111 'v3' ( temp int) +0:111 'gl_InstanceID' ( in int InstanceId) +0:112 Sequence +0:112 move second child to first child ( temp int) +0:112 'v4' ( temp int) +0:112 'gl_InstanceCustomIndexNV' ( in int InstanceCustomIndexNV) +0:113 Sequence +0:113 move second child to first child ( temp 3-component vector of float) +0:113 'v5' ( temp 3-component vector of float) +0:113 'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV) +0:114 Sequence +0:114 move second child to first child ( temp 3-component vector of float) +0:114 'v6' ( temp 3-component vector of float) +0:114 'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV) +0:115 Sequence +0:115 move second child to first child ( temp 3-component vector of float) +0:115 'v7' ( temp 3-component vector of float) +0:115 'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV) +0:116 Sequence +0:116 move second child to first child ( temp 3-component vector of float) +0:116 'v8' ( temp 3-component vector of float) +0:116 'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV) +0:117 Sequence +0:117 move second child to first child ( temp float) +0:117 'v9' ( temp float) +0:117 'gl_RayTminNV' ( in float ObjectRayTminNV) +0:118 Sequence +0:118 move second child to first child ( temp float) +0:118 'v10' ( temp float) +0:118 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) +0:119 Sequence +0:119 move second child to first child ( temp float) +0:119 'v11' ( temp float) +0:119 'gl_HitTNV' ( in float HitTNV) +0:120 Sequence +0:120 move second child to first child ( temp uint) +0:120 'v12' ( temp uint) +0:120 'gl_HitKindNV' ( in uint HitKindNV) +0:121 Sequence +0:121 move second child to first child ( temp 4X3 matrix of float) +0:121 'v13' ( temp 4X3 matrix of float) +0:121 'gl_ObjectToWorldNV' ( in 4X3 matrix of float ObjectToWorldNV) +0:122 Sequence +0:122 move second child to first child ( temp 4X3 matrix of float) +0:122 'v14' ( temp 4X3 matrix of float) +0:122 'gl_WorldToObjectNV' ( in 4X3 matrix of float WorldToObjectNV) +0:123 move second child to first child ( temp 4-component vector of float) +0:123 'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float) +0:123 Constant: +0:123 0.500000 +0:123 0.500000 +0:123 0.500000 +0:123 0.500000 +0:124 Test condition and select ( temp void) +0:124 Condition +0:124 Compare Equal ( temp bool) +0:124 'v2' ( temp int) +0:124 Constant: +0:124 1 (const int) +0:124 true case +0:125 ignoreIntersectionNV ( global void) +0:124 false case +0:127 terminateRayNV ( global void) +0:131 Function Definition: basic_works( ( global void) +0:131 Function Parameters: +0:133 Sequence +0:133 'gl_SubgroupSize' ( temp float) +0:134 'gl_SubgroupInvocationID' ( temp float) +0:135 subgroupBarrier ( global void) +0:136 subgroupMemoryBarrier ( global void) +0:137 subgroupMemoryBarrierBuffer ( global void) +0:138 subgroupMemoryBarrierImage ( global void) +0:139 subgroupElect ( global bool) +0:143 Function Definition: ballot_works(vf4; ( global void) +0:143 Function Parameters: +0:143 'f4' ( in 4-component vector of float) +0:144 Sequence +0:144 'gl_SubgroupEqMask' ( temp float) +0:145 'gl_SubgroupGeMask' ( temp float) +0:146 'gl_SubgroupGtMask' ( temp float) +0:147 'gl_SubgroupLeMask' ( temp float) +0:148 'gl_SubgroupLtMask' ( temp float) +0:149 subgroupBroadcast ( global 4-component vector of float) +0:149 'f4' ( in 4-component vector of float) +0:149 Constant: +0:149 0 (const uint) +0:150 subgroupBroadcastFirst ( global 4-component vector of float) +0:150 'f4' ( in 4-component vector of float) +0:151 Sequence +0:151 move second child to first child ( temp 4-component vector of uint) +0:151 'ballot' ( temp 4-component vector of uint) +0:151 subgroupBallot ( global 4-component vector of uint) +0:151 Constant: +0:151 false (const bool) +0:152 subgroupInverseBallot ( global bool) +0:152 Constant: +0:152 1 (const uint) +0:152 1 (const uint) +0:152 1 (const uint) +0:152 1 (const uint) +0:153 subgroupBallotBitExtract ( global bool) +0:153 'ballot' ( temp 4-component vector of uint) +0:153 Constant: +0:153 0 (const uint) +0:154 subgroupBallotBitCount ( global uint) +0:154 'ballot' ( temp 4-component vector of uint) +0:155 subgroupBallotInclusiveBitCount ( global uint) +0:155 'ballot' ( temp 4-component vector of uint) +0:156 subgroupBallotExclusiveBitCount ( global uint) +0:156 'ballot' ( temp 4-component vector of uint) +0:157 subgroupBallotFindLSB ( global uint) +0:157 'ballot' ( temp 4-component vector of uint) +0:158 subgroupBallotFindMSB ( global uint) +0:158 'ballot' ( temp 4-component vector of uint) +0:162 Function Definition: vote_works(vf4; ( global void) +0:162 Function Parameters: +0:162 'f4' ( in 4-component vector of float) +0:164 Sequence +0:164 subgroupAll ( global bool) +0:164 Constant: +0:164 true (const bool) +0:165 subgroupAny ( global bool) +0:165 Constant: +0:165 false (const bool) +0:166 subgroupAllEqual ( global bool) +0:166 'f4' ( in 4-component vector of float) +0:171 Function Definition: shuffle_works(vf4; ( global void) +0:171 Function Parameters: +0:171 'f4' ( in 4-component vector of float) +0:173 Sequence +0:173 subgroupShuffle ( global 4-component vector of float) +0:173 'f4' ( in 4-component vector of float) +0:173 Constant: +0:173 0 (const uint) +0:174 subgroupShuffleXor ( global 4-component vector of float) +0:174 'f4' ( in 4-component vector of float) +0:174 Constant: +0:174 1 (const uint) +0:175 subgroupShuffleUp ( global 4-component vector of float) +0:175 'f4' ( in 4-component vector of float) +0:175 Constant: +0:175 1 (const uint) +0:176 subgroupShuffleDown ( global 4-component vector of float) +0:176 'f4' ( in 4-component vector of float) +0:176 Constant: +0:176 1 (const uint) +0:180 Function Definition: arith_works(vf4; ( global void) +0:180 Function Parameters: +0:180 'f4' ( in 4-component vector of float) +0:? Sequence +0:183 subgroupAdd ( global 4-component vector of float) +0:183 'f4' ( in 4-component vector of float) +0:184 subgroupMul ( global 4-component vector of float) +0:184 'f4' ( in 4-component vector of float) +0:185 subgroupMin ( global 4-component vector of float) +0:185 'f4' ( in 4-component vector of float) +0:186 subgroupMax ( global 4-component vector of float) +0:186 'f4' ( in 4-component vector of float) +0:187 subgroupAnd ( global 4-component vector of uint) +0:187 'ballot' ( temp 4-component vector of uint) +0:188 subgroupOr ( global 4-component vector of uint) +0:188 'ballot' ( temp 4-component vector of uint) +0:189 subgroupXor ( global 4-component vector of uint) +0:189 'ballot' ( temp 4-component vector of uint) +0:190 subgroupInclusiveAdd ( global 4-component vector of float) +0:190 'f4' ( in 4-component vector of float) +0:191 subgroupInclusiveMul ( global 4-component vector of float) +0:191 'f4' ( in 4-component vector of float) +0:192 subgroupInclusiveMin ( global 4-component vector of float) +0:192 'f4' ( in 4-component vector of float) +0:193 subgroupInclusiveMax ( global 4-component vector of float) +0:193 'f4' ( in 4-component vector of float) +0:194 subgroupInclusiveAnd ( global 4-component vector of uint) +0:194 'ballot' ( temp 4-component vector of uint) +0:195 subgroupInclusiveOr ( global 4-component vector of uint) +0:195 'ballot' ( temp 4-component vector of uint) +0:196 subgroupInclusiveXor ( global 4-component vector of uint) +0:196 'ballot' ( temp 4-component vector of uint) +0:197 subgroupExclusiveAdd ( global 4-component vector of float) +0:197 'f4' ( in 4-component vector of float) +0:198 subgroupExclusiveMul ( global 4-component vector of float) +0:198 'f4' ( in 4-component vector of float) +0:199 subgroupExclusiveMin ( global 4-component vector of float) +0:199 'f4' ( in 4-component vector of float) +0:200 subgroupExclusiveMax ( global 4-component vector of float) +0:200 'f4' ( in 4-component vector of float) +0:201 subgroupExclusiveAnd ( global 4-component vector of uint) +0:201 'ballot' ( temp 4-component vector of uint) +0:202 subgroupExclusiveOr ( global 4-component vector of uint) +0:202 'ballot' ( temp 4-component vector of uint) +0:203 subgroupExclusiveXor ( global 4-component vector of uint) +0:203 'ballot' ( temp 4-component vector of uint) +0:207 Function Definition: clustered_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 '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 subgroupClusteredAdd ( global 4-component vector of float) +0:210 'f4' ( in 4-component vector of float) +0:210 Constant: +0:210 2 (const uint) +0:211 subgroupClusteredMul ( global 4-component vector of float) +0:211 'f4' ( in 4-component vector of float) +0:211 Constant: +0:211 2 (const uint) +0:212 subgroupClusteredMin ( global 4-component vector of float) +0:212 'f4' ( in 4-component vector of float) +0:212 Constant: +0:212 2 (const uint) +0:213 subgroupClusteredMax ( global 4-component vector of float) +0:213 'f4' ( in 4-component vector of float) +0:213 Constant: +0:213 2 (const uint) +0:214 subgroupClusteredAnd ( global 4-component vector of uint) +0:214 'ballot' ( temp 4-component vector of uint) +0:214 Constant: +0:214 2 (const uint) +0:215 subgroupClusteredOr ( global 4-component vector of uint) +0:215 'ballot' ( temp 4-component vector of uint) +0:215 Constant: +0:215 2 (const uint) +0:216 subgroupClusteredXor ( global 4-component vector of uint) +0:216 'ballot' ( temp 4-component vector of uint) +0:216 Constant: +0:216 2 (const uint) +0:220 Function Definition: quad_works(vf4; ( global void) +0:220 Function Parameters: +0:220 'f4' ( in 4-component vector of float) +0:222 Sequence +0:222 subgroupQuadBroadcast ( global 4-component vector of float) +0:222 'f4' ( in 4-component vector of float) +0:222 Constant: +0:222 0 (const uint) +0:223 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:223 'f4' ( in 4-component vector of float) +0:224 subgroupQuadSwapVertical ( global 4-component vector of float) +0:224 'f4' ( in 4-component vector of float) +0:225 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:225 'f4' ( in 4-component vector of float) +0:229 Function Definition: partitioned_works(vf4; ( global void) +0:229 Function Parameters: +0:229 'f4' ( in 4-component vector of float) +0:231 Sequence +0:231 Sequence +0:231 move second child to first child ( temp 4-component vector of uint) +0:231 'parti' ( temp 4-component vector of uint) +0:231 subgroupPartitionNV ( global 4-component vector of uint) +0:231 'f4' ( in 4-component vector of float) +0:232 Sequence +0:232 move second child to first child ( temp 4-component vector of uint) +0:232 'ballot' ( temp 4-component vector of uint) +0:232 Constant: +0:232 85 (const uint) +0:232 0 (const uint) +0:232 0 (const uint) +0:232 0 (const 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 float) +0:234 'f4' ( in 4-component vector of float) +0:234 'parti' ( temp 4-component vector of uint) +0:235 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:235 'f4' ( in 4-component vector of float) +0:235 'parti' ( temp 4-component vector of uint) +0:236 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:236 'f4' ( in 4-component vector of float) +0:236 'parti' ( temp 4-component vector of uint) +0:237 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:237 'ballot' ( temp 4-component vector of uint) +0:237 'parti' ( temp 4-component vector of uint) +0:238 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:238 'ballot' ( temp 4-component vector of uint) +0:238 'parti' ( temp 4-component vector of uint) +0:239 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:239 'ballot' ( temp 4-component vector of uint) +0:239 'parti' ( temp 4-component vector of uint) +0:240 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:240 'f4' ( in 4-component vector of float) +0:240 'parti' ( temp 4-component vector of uint) +0:241 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:241 'f4' ( in 4-component vector of float) +0:241 'parti' ( temp 4-component vector of uint) +0:242 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:242 'f4' ( in 4-component vector of float) +0:242 'parti' ( temp 4-component vector of uint) +0:243 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:243 'f4' ( in 4-component vector of float) +0:243 'parti' ( temp 4-component vector of uint) +0:244 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:244 'ballot' ( temp 4-component vector of uint) +0:244 'parti' ( temp 4-component vector of uint) +0:245 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:245 'ballot' ( temp 4-component vector of uint) +0:245 'parti' ( temp 4-component vector of uint) +0:246 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:246 'ballot' ( temp 4-component vector of uint) +0:246 'parti' ( temp 4-component vector of uint) +0:247 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:247 'f4' ( in 4-component vector of float) +0:247 'parti' ( temp 4-component vector of uint) +0:248 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:248 'f4' ( in 4-component vector of float) +0:248 'parti' ( temp 4-component vector of uint) +0:249 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:249 'f4' ( in 4-component vector of float) +0:249 'parti' ( temp 4-component vector of uint) +0:250 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:250 'f4' ( in 4-component vector of float) +0:250 'parti' ( temp 4-component vector of uint) +0:251 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:251 'ballot' ( temp 4-component vector of uint) +0:251 'parti' ( temp 4-component vector of uint) +0:252 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:252 'ballot' ( temp 4-component vector of uint) +0:252 'parti' ( temp 4-component vector of uint) +0:253 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:253 'ballot' ( temp 4-component vector of uint) +0:253 'parti' ( temp 4-component vector of uint) +0:? Linker Objects +0:? 'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float) + + +Linked any-hit stage: + + +Shader version: 460 +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_ray_tracing +Requested GL_NV_shader_subgroup_partitioned +ERROR: node is still EOpNull! +0:106 Function Definition: main( ( global void) +0:106 Function Parameters: +0:108 Sequence +0:108 Sequence +0:108 move second child to first child ( temp 3-component vector of uint) +0:108 'v0' ( temp 3-component vector of uint) +0:108 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) +0:109 Sequence +0:109 move second child to first child ( temp 3-component vector of uint) +0:109 'v1' ( temp 3-component vector of uint) +0:109 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) +0:110 Sequence +0:110 move second child to first child ( temp int) +0:110 'v2' ( temp int) +0:110 'gl_PrimitiveID' ( in int PrimitiveID) +0:111 Sequence +0:111 move second child to first child ( temp int) +0:111 'v3' ( temp int) +0:111 'gl_InstanceID' ( in int InstanceId) +0:112 Sequence +0:112 move second child to first child ( temp int) +0:112 'v4' ( temp int) +0:112 'gl_InstanceCustomIndexNV' ( in int InstanceCustomIndexNV) +0:113 Sequence +0:113 move second child to first child ( temp 3-component vector of float) +0:113 'v5' ( temp 3-component vector of float) +0:113 'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV) +0:114 Sequence +0:114 move second child to first child ( temp 3-component vector of float) +0:114 'v6' ( temp 3-component vector of float) +0:114 'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV) +0:115 Sequence +0:115 move second child to first child ( temp 3-component vector of float) +0:115 'v7' ( temp 3-component vector of float) +0:115 'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV) +0:116 Sequence +0:116 move second child to first child ( temp 3-component vector of float) +0:116 'v8' ( temp 3-component vector of float) +0:116 'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV) +0:117 Sequence +0:117 move second child to first child ( temp float) +0:117 'v9' ( temp float) +0:117 'gl_RayTminNV' ( in float ObjectRayTminNV) +0:118 Sequence +0:118 move second child to first child ( temp float) +0:118 'v10' ( temp float) +0:118 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) +0:119 Sequence +0:119 move second child to first child ( temp float) +0:119 'v11' ( temp float) +0:119 'gl_HitTNV' ( in float HitTNV) +0:120 Sequence +0:120 move second child to first child ( temp uint) +0:120 'v12' ( temp uint) +0:120 'gl_HitKindNV' ( in uint HitKindNV) +0:121 Sequence +0:121 move second child to first child ( temp 4X3 matrix of float) +0:121 'v13' ( temp 4X3 matrix of float) +0:121 'gl_ObjectToWorldNV' ( in 4X3 matrix of float ObjectToWorldNV) +0:122 Sequence +0:122 move second child to first child ( temp 4X3 matrix of float) +0:122 'v14' ( temp 4X3 matrix of float) +0:122 'gl_WorldToObjectNV' ( in 4X3 matrix of float WorldToObjectNV) +0:123 move second child to first child ( temp 4-component vector of float) +0:123 'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float) +0:123 Constant: +0:123 0.500000 +0:123 0.500000 +0:123 0.500000 +0:123 0.500000 +0:124 Test condition and select ( temp void) +0:124 Condition +0:124 Compare Equal ( temp bool) +0:124 'v2' ( temp int) +0:124 Constant: +0:124 1 (const int) +0:124 true case +0:125 ignoreIntersectionNV ( global void) +0:124 false case +0:127 terminateRayNV ( global void) +0:? Linker Objects +0:? 'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float) + diff --git a/Test/baseResults/glsl.460.subgroup.rcall.out b/Test/baseResults/glsl.460.subgroup.rcall.out new file mode 100644 index 00000000..9f5890f2 --- /dev/null +++ b/Test/baseResults/glsl.460.subgroup.rcall.out @@ -0,0 +1,712 @@ +glsl.460.subgroup.rcall +ERROR: 0:7: 'gl_SubgroupSize' : undeclared identifier +ERROR: 0:8: 'gl_SubgroupInvocationID' : undeclared identifier +ERROR: 0:9: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:10: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:11: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:12: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:13: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:14: 'gl_NumSubgroups' : undeclared identifier +ERROR: 0:15: 'gl_SubgroupID' : undeclared identifier +ERROR: 0:16: 'subgroupMemoryBarrierShared' : no matching overloaded function found +ERROR: 0:18: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:19: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:20: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:22: 'gl_SubgroupEqMask' : undeclared identifier +ERROR: 0:23: 'gl_SubgroupGeMask' : undeclared identifier +ERROR: 0:24: 'gl_SubgroupGtMask' : undeclared identifier +ERROR: 0:25: 'gl_SubgroupLeMask' : undeclared identifier +ERROR: 0:26: 'gl_SubgroupLtMask' : undeclared identifier +ERROR: 0:27: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:28: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:29: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:30: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:31: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:32: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:33: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:34: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:35: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:36: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:38: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:39: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:40: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:41: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:43: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:44: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:45: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:46: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:47: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:48: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:49: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:50: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:51: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:52: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:53: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:54: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:55: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:56: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:57: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:58: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:59: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:60: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:61: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:62: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:63: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:65: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:66: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:67: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:68: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:69: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:70: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:71: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:73: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:74: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:75: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:76: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:78: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:79: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:80: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:81: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:82: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:83: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:84: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:85: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:86: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:87: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:88: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:89: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:90: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:91: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:92: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:93: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:94: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:95: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:121: 'gl_SubgroupSize' : undeclared identifier +ERROR: 0:122: 'gl_SubgroupInvocationID' : undeclared identifier +ERROR: 0:132: 'gl_SubgroupEqMask' : undeclared identifier +ERROR: 0:133: 'gl_SubgroupGeMask' : undeclared identifier +ERROR: 0:134: 'gl_SubgroupGtMask' : undeclared identifier +ERROR: 0:135: 'gl_SubgroupLeMask' : undeclared identifier +ERROR: 0:136: 'gl_SubgroupLtMask' : undeclared identifier +ERROR: 93 compilation errors. No code generated. + + +Shader version: 460 +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_ray_tracing +Requested GL_NV_shader_subgroup_partitioned +ERROR: node is still EOpNull! +0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) +0:4 Function Parameters: +0:4 'f4' ( in 4-component vector of float) +0:? Sequence +0:7 'gl_SubgroupSize' ( temp float) +0:8 'gl_SubgroupInvocationID' ( temp float) +0:9 subgroupBarrier ( global void) +0:10 subgroupMemoryBarrier ( global void) +0:11 subgroupMemoryBarrierBuffer ( global void) +0:12 subgroupMemoryBarrierImage ( global void) +0:13 subgroupElect ( global bool) +0:14 'gl_NumSubgroups' ( temp float) +0:15 'gl_SubgroupID' ( temp float) +0:16 Constant: +0:16 0.000000 +0:18 subgroupAll ( global bool) +0:18 Constant: +0:18 true (const bool) +0:19 subgroupAny ( global bool) +0:19 Constant: +0:19 false (const bool) +0:20 subgroupAllEqual ( global bool) +0:20 'f4' ( in 4-component vector of float) +0:22 'gl_SubgroupEqMask' ( temp float) +0:23 'gl_SubgroupGeMask' ( temp float) +0:24 'gl_SubgroupGtMask' ( temp float) +0:25 'gl_SubgroupLeMask' ( temp float) +0:26 'gl_SubgroupLtMask' ( temp float) +0:27 subgroupBroadcast ( global 4-component vector of float) +0:27 'f4' ( in 4-component vector of float) +0:27 Constant: +0:27 0 (const uint) +0:28 subgroupBroadcastFirst ( global 4-component vector of float) +0:28 'f4' ( in 4-component vector of float) +0:29 Sequence +0:29 move second child to first child ( temp 4-component vector of uint) +0:29 'ballot' ( temp 4-component vector of uint) +0:29 subgroupBallot ( global 4-component vector of uint) +0:29 Constant: +0:29 false (const bool) +0:30 subgroupInverseBallot ( global bool) +0:30 Constant: +0:30 1 (const uint) +0:30 1 (const uint) +0:30 1 (const uint) +0:30 1 (const uint) +0:31 subgroupBallotBitExtract ( global bool) +0:31 'ballot' ( temp 4-component vector of uint) +0:31 Constant: +0:31 0 (const uint) +0:32 subgroupBallotBitCount ( global uint) +0:32 'ballot' ( temp 4-component vector of uint) +0:33 subgroupBallotInclusiveBitCount ( global uint) +0:33 'ballot' ( temp 4-component vector of uint) +0:34 subgroupBallotExclusiveBitCount ( global uint) +0:34 'ballot' ( temp 4-component vector of uint) +0:35 subgroupBallotFindLSB ( global uint) +0:35 'ballot' ( temp 4-component vector of uint) +0:36 subgroupBallotFindMSB ( global uint) +0:36 'ballot' ( temp 4-component vector of uint) +0:38 subgroupShuffle ( global 4-component vector of float) +0:38 'f4' ( in 4-component vector of float) +0:38 Constant: +0:38 0 (const uint) +0:39 subgroupShuffleXor ( 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 subgroupShuffleUp ( global 4-component vector of float) +0:40 'f4' ( in 4-component vector of float) +0:40 Constant: +0:40 1 (const uint) +0:41 subgroupShuffleDown ( global 4-component vector of float) +0:41 'f4' ( in 4-component vector of float) +0:41 Constant: +0:41 1 (const uint) +0:43 move second child to first child ( temp 4-component vector of float) +0:43 'result' ( temp 4-component vector of float) +0:43 subgroupAdd ( global 4-component vector of float) +0:43 'f4' ( in 4-component vector of float) +0:44 subgroupMul ( global 4-component vector of float) +0:44 'f4' ( in 4-component vector of float) +0:45 subgroupMin ( global 4-component vector of float) +0:45 'f4' ( in 4-component vector of float) +0:46 subgroupMax ( global 4-component vector of float) +0:46 'f4' ( in 4-component vector of float) +0:47 subgroupAnd ( global 4-component vector of uint) +0:47 'ballot' ( temp 4-component vector of uint) +0:48 subgroupOr ( global 4-component vector of uint) +0:48 'ballot' ( temp 4-component vector of uint) +0:49 subgroupXor ( global 4-component vector of uint) +0:49 'ballot' ( temp 4-component vector of uint) +0:50 subgroupInclusiveAdd ( global 4-component vector of float) +0:50 'f4' ( in 4-component vector of float) +0:51 subgroupInclusiveMul ( global 4-component vector of float) +0:51 'f4' ( in 4-component vector of float) +0:52 subgroupInclusiveMin ( global 4-component vector of float) +0:52 'f4' ( in 4-component vector of float) +0:53 subgroupInclusiveMax ( global 4-component vector of float) +0:53 'f4' ( in 4-component vector of float) +0:54 subgroupInclusiveAnd ( global 4-component vector of uint) +0:54 'ballot' ( temp 4-component vector of uint) +0:55 subgroupInclusiveOr ( global 4-component vector of uint) +0:55 'ballot' ( temp 4-component vector of uint) +0:56 subgroupInclusiveXor ( global 4-component vector of uint) +0:56 'ballot' ( temp 4-component vector of uint) +0:57 subgroupExclusiveAdd ( global 4-component vector of float) +0:57 'f4' ( in 4-component vector of float) +0:58 subgroupExclusiveMul ( global 4-component vector of float) +0:58 'f4' ( in 4-component vector of float) +0:59 subgroupExclusiveMin ( global 4-component vector of float) +0:59 'f4' ( in 4-component vector of float) +0:60 subgroupExclusiveMax ( global 4-component vector of float) +0:60 'f4' ( in 4-component vector of float) +0:61 subgroupExclusiveAnd ( global 4-component vector of uint) +0:61 'ballot' ( temp 4-component vector of uint) +0:62 subgroupExclusiveOr ( global 4-component vector of uint) +0:62 'ballot' ( temp 4-component vector of uint) +0:63 subgroupExclusiveXor ( global 4-component vector of uint) +0:63 'ballot' ( temp 4-component vector of uint) +0:65 subgroupClusteredAdd ( 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 subgroupClusteredMul ( 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 subgroupClusteredMin ( 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 subgroupClusteredMax ( global 4-component vector of float) +0:68 'f4' ( in 4-component vector of float) +0:68 Constant: +0:68 2 (const uint) +0:69 subgroupClusteredAnd ( 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 subgroupClusteredOr ( global 4-component vector of uint) +0:70 'ballot' ( temp 4-component vector of uint) +0:70 Constant: +0:70 2 (const uint) +0:71 subgroupClusteredXor ( global 4-component vector of uint) +0:71 'ballot' ( temp 4-component vector of uint) +0:71 Constant: +0:71 2 (const uint) +0:73 subgroupQuadBroadcast ( global 4-component vector of float) +0:73 'f4' ( in 4-component vector of float) +0:73 Constant: +0:73 0 (const uint) +0:74 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:74 'f4' ( in 4-component vector of float) +0:75 subgroupQuadSwapVertical ( global 4-component vector of float) +0:75 'f4' ( in 4-component vector of float) +0:76 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:76 'f4' ( in 4-component vector of float) +0:78 Sequence +0:78 move second child to first child ( temp 4-component vector of uint) +0:78 'parti' ( temp 4-component vector of uint) +0:78 subgroupPartitionNV ( global 4-component vector of uint) +0:78 'f4' ( in 4-component vector of float) +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 float) +0:82 'f4' ( in 4-component vector of float) +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 uint) +0:85 'ballot' ( temp 4-component vector of uint) +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 float) +0:89 'f4' ( in 4-component vector of float) +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 uint) +0:92 'ballot' ( temp 4-component vector of uint) +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 float) +0:96 'f4' ( in 4-component vector of float) +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:99 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:99 'ballot' ( temp 4-component vector of uint) +0:99 'parti' ( temp 4-component vector of uint) +0:101 Branch: Return with expression +0:101 'result' ( temp 4-component vector of float) +0:109 Function Definition: main( ( global void) +0:109 Function Parameters: +0:111 Sequence +0:111 Sequence +0:111 move second child to first child ( temp 3-component vector of uint) +0:111 'id' ( temp 3-component vector of uint) +0:111 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) +0:112 Sequence +0:112 move second child to first child ( temp 3-component vector of uint) +0:112 'size' ( temp 3-component vector of uint) +0:112 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) +0:113 move second child to first child ( temp uint) +0:113 data1: direct index for structure ( callableDataInNV uint) +0:113 'anon@0' (layout( location=1) callableDataInNV block{ callableDataInNV uint data1}) +0:113 Constant: +0:113 0 (const uint) +0:113 Constant: +0:113 256 (const uint) +0:114 executeCallableNV ( global void) +0:114 Constant: +0:114 2 (const uint) +0:114 Constant: +0:114 1 (const int) +0:119 Function Definition: basic_works( ( global void) +0:119 Function Parameters: +0:121 Sequence +0:121 'gl_SubgroupSize' ( temp float) +0:122 'gl_SubgroupInvocationID' ( temp float) +0:123 subgroupBarrier ( global void) +0:124 subgroupMemoryBarrier ( global void) +0:125 subgroupMemoryBarrierBuffer ( global void) +0:126 subgroupMemoryBarrierImage ( global void) +0:127 subgroupElect ( global bool) +0:131 Function Definition: ballot_works(vf4; ( global void) +0:131 Function Parameters: +0:131 'f4' ( in 4-component vector of float) +0:132 Sequence +0:132 'gl_SubgroupEqMask' ( temp float) +0:133 'gl_SubgroupGeMask' ( temp float) +0:134 'gl_SubgroupGtMask' ( temp float) +0:135 'gl_SubgroupLeMask' ( temp float) +0:136 'gl_SubgroupLtMask' ( temp float) +0:137 subgroupBroadcast ( global 4-component vector of float) +0:137 'f4' ( in 4-component vector of float) +0:137 Constant: +0:137 0 (const uint) +0:138 subgroupBroadcastFirst ( global 4-component vector of float) +0:138 'f4' ( in 4-component vector of float) +0:139 Sequence +0:139 move second child to first child ( temp 4-component vector of uint) +0:139 'ballot' ( temp 4-component vector of uint) +0:139 subgroupBallot ( global 4-component vector of uint) +0:139 Constant: +0:139 false (const bool) +0:140 subgroupInverseBallot ( global bool) +0:140 Constant: +0:140 1 (const uint) +0:140 1 (const uint) +0:140 1 (const uint) +0:140 1 (const uint) +0:141 subgroupBallotBitExtract ( global bool) +0:141 'ballot' ( temp 4-component vector of uint) +0:141 Constant: +0:141 0 (const uint) +0:142 subgroupBallotBitCount ( global uint) +0:142 'ballot' ( temp 4-component vector of uint) +0:143 subgroupBallotInclusiveBitCount ( global uint) +0:143 'ballot' ( temp 4-component vector of uint) +0:144 subgroupBallotExclusiveBitCount ( global uint) +0:144 'ballot' ( temp 4-component vector of uint) +0:145 subgroupBallotFindLSB ( global uint) +0:145 'ballot' ( temp 4-component vector of uint) +0:146 subgroupBallotFindMSB ( global uint) +0:146 'ballot' ( temp 4-component vector of uint) +0:150 Function Definition: vote_works(vf4; ( global void) +0:150 Function Parameters: +0:150 'f4' ( in 4-component vector of float) +0:152 Sequence +0:152 subgroupAll ( global bool) +0:152 Constant: +0:152 true (const bool) +0:153 subgroupAny ( global bool) +0:153 Constant: +0:153 false (const bool) +0:154 subgroupAllEqual ( global bool) +0:154 'f4' ( in 4-component vector of float) +0:159 Function Definition: shuffle_works(vf4; ( global void) +0:159 Function Parameters: +0:159 'f4' ( in 4-component vector of float) +0:161 Sequence +0:161 subgroupShuffle ( global 4-component vector of float) +0:161 'f4' ( in 4-component vector of float) +0:161 Constant: +0:161 0 (const uint) +0:162 subgroupShuffleXor ( global 4-component vector of float) +0:162 'f4' ( in 4-component vector of float) +0:162 Constant: +0:162 1 (const uint) +0:163 subgroupShuffleUp ( global 4-component vector of float) +0:163 'f4' ( in 4-component vector of float) +0:163 Constant: +0:163 1 (const uint) +0:164 subgroupShuffleDown ( global 4-component vector of float) +0:164 'f4' ( in 4-component vector of float) +0:164 Constant: +0:164 1 (const uint) +0:168 Function Definition: arith_works(vf4; ( global void) +0:168 Function Parameters: +0:168 'f4' ( in 4-component vector of float) +0:? Sequence +0:171 subgroupAdd ( global 4-component vector of float) +0:171 'f4' ( in 4-component vector of float) +0:172 subgroupMul ( global 4-component vector of float) +0:172 'f4' ( in 4-component vector of float) +0:173 subgroupMin ( global 4-component vector of float) +0:173 'f4' ( in 4-component vector of float) +0:174 subgroupMax ( global 4-component vector of float) +0:174 'f4' ( in 4-component vector of float) +0:175 subgroupAnd ( global 4-component vector of uint) +0:175 'ballot' ( temp 4-component vector of uint) +0:176 subgroupOr ( global 4-component vector of uint) +0:176 'ballot' ( temp 4-component vector of uint) +0:177 subgroupXor ( global 4-component vector of uint) +0:177 'ballot' ( temp 4-component vector of uint) +0:178 subgroupInclusiveAdd ( global 4-component vector of float) +0:178 'f4' ( in 4-component vector of float) +0:179 subgroupInclusiveMul ( global 4-component vector of float) +0:179 'f4' ( in 4-component vector of float) +0:180 subgroupInclusiveMin ( global 4-component vector of float) +0:180 'f4' ( in 4-component vector of float) +0:181 subgroupInclusiveMax ( global 4-component vector of float) +0:181 'f4' ( in 4-component vector of float) +0:182 subgroupInclusiveAnd ( global 4-component vector of uint) +0:182 'ballot' ( temp 4-component vector of uint) +0:183 subgroupInclusiveOr ( global 4-component vector of uint) +0:183 'ballot' ( temp 4-component vector of uint) +0:184 subgroupInclusiveXor ( global 4-component vector of uint) +0:184 'ballot' ( temp 4-component vector of uint) +0:185 subgroupExclusiveAdd ( global 4-component vector of float) +0:185 'f4' ( in 4-component vector of float) +0:186 subgroupExclusiveMul ( global 4-component vector of float) +0:186 'f4' ( in 4-component vector of float) +0:187 subgroupExclusiveMin ( global 4-component vector of float) +0:187 'f4' ( in 4-component vector of float) +0:188 subgroupExclusiveMax ( global 4-component vector of float) +0:188 'f4' ( in 4-component vector of float) +0:189 subgroupExclusiveAnd ( global 4-component vector of uint) +0:189 'ballot' ( temp 4-component vector of uint) +0:190 subgroupExclusiveOr ( global 4-component vector of uint) +0:190 'ballot' ( temp 4-component vector of uint) +0:191 subgroupExclusiveXor ( global 4-component vector of uint) +0:191 'ballot' ( temp 4-component vector of uint) +0:195 Function Definition: clustered_works(vf4; ( global void) +0:195 Function Parameters: +0:195 'f4' ( in 4-component vector of float) +0:197 Sequence +0:197 Sequence +0:197 move second child to first child ( temp 4-component vector of uint) +0:197 'ballot' ( temp 4-component vector of uint) +0:197 Constant: +0:197 85 (const uint) +0:197 0 (const uint) +0:197 0 (const uint) +0:197 0 (const uint) +0:198 subgroupClusteredAdd ( global 4-component vector of float) +0:198 'f4' ( in 4-component vector of float) +0:198 Constant: +0:198 2 (const uint) +0:199 subgroupClusteredMul ( global 4-component vector of float) +0:199 'f4' ( in 4-component vector of float) +0:199 Constant: +0:199 2 (const uint) +0:200 subgroupClusteredMin ( global 4-component vector of float) +0:200 'f4' ( in 4-component vector of float) +0:200 Constant: +0:200 2 (const uint) +0:201 subgroupClusteredMax ( global 4-component vector of float) +0:201 'f4' ( in 4-component vector of float) +0:201 Constant: +0:201 2 (const uint) +0:202 subgroupClusteredAnd ( global 4-component vector of uint) +0:202 'ballot' ( temp 4-component vector of uint) +0:202 Constant: +0:202 2 (const uint) +0:203 subgroupClusteredOr ( global 4-component vector of uint) +0:203 'ballot' ( temp 4-component vector of uint) +0:203 Constant: +0:203 2 (const uint) +0:204 subgroupClusteredXor ( global 4-component vector of uint) +0:204 'ballot' ( temp 4-component vector of uint) +0:204 Constant: +0:204 2 (const uint) +0:208 Function Definition: quad_works(vf4; ( global void) +0:208 Function Parameters: +0:208 'f4' ( in 4-component vector of float) +0:210 Sequence +0:210 subgroupQuadBroadcast ( global 4-component vector of float) +0:210 'f4' ( in 4-component vector of float) +0:210 Constant: +0:210 0 (const uint) +0:211 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:211 'f4' ( in 4-component vector of float) +0:212 subgroupQuadSwapVertical ( global 4-component vector of float) +0:212 'f4' ( in 4-component vector of float) +0:213 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:213 'f4' ( in 4-component vector of float) +0:217 Function Definition: partitioned_works(vf4; ( global void) +0:217 Function Parameters: +0:217 'f4' ( in 4-component vector of float) +0:219 Sequence +0:219 Sequence +0:219 move second child to first child ( temp 4-component vector of uint) +0:219 'parti' ( temp 4-component vector of uint) +0:219 subgroupPartitionNV ( global 4-component vector of uint) +0:219 'f4' ( in 4-component vector of float) +0:220 Sequence +0:220 move second child to first child ( temp 4-component vector of uint) +0:220 'ballot' ( temp 4-component vector of uint) +0:220 Constant: +0:220 85 (const uint) +0:220 0 (const uint) +0:220 0 (const uint) +0:220 0 (const 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 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 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: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 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 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 uint) +0:232 'ballot' ( temp 4-component vector of uint) +0:232 'parti' ( temp 4-component vector of uint) +0:233 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:233 'ballot' ( temp 4-component vector of uint) +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 float) +0:235 'f4' ( in 4-component vector of float) +0:235 'parti' ( temp 4-component vector of uint) +0:236 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:236 'f4' ( in 4-component vector of float) +0:236 'parti' ( temp 4-component vector of uint) +0:237 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:237 'f4' ( in 4-component vector of float) +0:237 'parti' ( temp 4-component vector of uint) +0:238 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:238 'f4' ( in 4-component vector of float) +0:238 'parti' ( temp 4-component vector of uint) +0:239 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:239 'ballot' ( temp 4-component vector of uint) +0:239 'parti' ( temp 4-component vector of uint) +0:240 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:240 'ballot' ( temp 4-component vector of uint) +0:240 'parti' ( temp 4-component vector of uint) +0:241 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:241 'ballot' ( temp 4-component vector of uint) +0:241 'parti' ( temp 4-component vector of uint) +0:? Linker Objects +0:? 'data0' (layout( location=0) callableDataNV 4-component vector of float) +0:? 'anon@0' (layout( location=1) callableDataInNV block{ callableDataInNV uint data1}) + + +Linked callable stage: + + +Shader version: 460 +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_ray_tracing +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 Sequence +0:111 move second child to first child ( temp 3-component vector of uint) +0:111 'id' ( temp 3-component vector of uint) +0:111 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) +0:112 Sequence +0:112 move second child to first child ( temp 3-component vector of uint) +0:112 'size' ( temp 3-component vector of uint) +0:112 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) +0:113 move second child to first child ( temp uint) +0:113 data1: direct index for structure ( callableDataInNV uint) +0:113 'anon@0' (layout( location=1) callableDataInNV block{ callableDataInNV uint data1}) +0:113 Constant: +0:113 0 (const uint) +0:113 Constant: +0:113 256 (const uint) +0:114 executeCallableNV ( global void) +0:114 Constant: +0:114 2 (const uint) +0:114 Constant: +0:114 1 (const int) +0:? Linker Objects +0:? 'data0' (layout( location=0) callableDataNV 4-component vector of float) +0:? 'anon@0' (layout( location=1) callableDataInNV block{ callableDataInNV uint data1}) + diff --git a/Test/baseResults/glsl.460.subgroup.rchit.out b/Test/baseResults/glsl.460.subgroup.rchit.out new file mode 100644 index 00000000..46bef57d --- /dev/null +++ b/Test/baseResults/glsl.460.subgroup.rchit.out @@ -0,0 +1,846 @@ +glsl.460.subgroup.rchit +ERROR: 0:7: 'gl_SubgroupSize' : undeclared identifier +ERROR: 0:8: 'gl_SubgroupInvocationID' : undeclared identifier +ERROR: 0:9: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:10: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:11: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:12: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:13: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:14: 'gl_NumSubgroups' : undeclared identifier +ERROR: 0:15: 'gl_SubgroupID' : undeclared identifier +ERROR: 0:16: 'subgroupMemoryBarrierShared' : no matching overloaded function found +ERROR: 0:18: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:19: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:20: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:22: 'gl_SubgroupEqMask' : undeclared identifier +ERROR: 0:23: 'gl_SubgroupGeMask' : undeclared identifier +ERROR: 0:24: 'gl_SubgroupGtMask' : undeclared identifier +ERROR: 0:25: 'gl_SubgroupLeMask' : undeclared identifier +ERROR: 0:26: 'gl_SubgroupLtMask' : undeclared identifier +ERROR: 0:27: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:28: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:29: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:30: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:31: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:32: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:33: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:34: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:35: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:36: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:38: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:39: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:40: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:41: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:43: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:44: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:45: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:46: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:47: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:48: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:49: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:50: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:51: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:52: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:53: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:54: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:55: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:56: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:57: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:58: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:59: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:60: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:61: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:62: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:63: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:65: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:66: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:67: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:68: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:69: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:70: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:71: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:73: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:74: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:75: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:76: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:78: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:79: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:80: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:81: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:82: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:83: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:84: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:85: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:86: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:87: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:88: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:89: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:90: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:91: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:92: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:93: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:94: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:95: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:131: 'gl_SubgroupSize' : undeclared identifier +ERROR: 0:132: 'gl_SubgroupInvocationID' : undeclared identifier +ERROR: 0:142: 'gl_SubgroupEqMask' : undeclared identifier +ERROR: 0:143: 'gl_SubgroupGeMask' : undeclared identifier +ERROR: 0:144: 'gl_SubgroupGtMask' : undeclared identifier +ERROR: 0:145: 'gl_SubgroupLeMask' : undeclared identifier +ERROR: 0:146: 'gl_SubgroupLtMask' : undeclared identifier +ERROR: 93 compilation errors. No code generated. + + +Shader version: 460 +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_ray_tracing +Requested GL_NV_shader_subgroup_partitioned +ERROR: node is still EOpNull! +0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) +0:4 Function Parameters: +0:4 'f4' ( in 4-component vector of float) +0:? Sequence +0:7 'gl_SubgroupSize' ( temp float) +0:8 'gl_SubgroupInvocationID' ( temp float) +0:9 subgroupBarrier ( global void) +0:10 subgroupMemoryBarrier ( global void) +0:11 subgroupMemoryBarrierBuffer ( global void) +0:12 subgroupMemoryBarrierImage ( global void) +0:13 subgroupElect ( global bool) +0:14 'gl_NumSubgroups' ( temp float) +0:15 'gl_SubgroupID' ( temp float) +0:16 Constant: +0:16 0.000000 +0:18 subgroupAll ( global bool) +0:18 Constant: +0:18 true (const bool) +0:19 subgroupAny ( global bool) +0:19 Constant: +0:19 false (const bool) +0:20 subgroupAllEqual ( global bool) +0:20 'f4' ( in 4-component vector of float) +0:22 'gl_SubgroupEqMask' ( temp float) +0:23 'gl_SubgroupGeMask' ( temp float) +0:24 'gl_SubgroupGtMask' ( temp float) +0:25 'gl_SubgroupLeMask' ( temp float) +0:26 'gl_SubgroupLtMask' ( temp float) +0:27 subgroupBroadcast ( global 4-component vector of float) +0:27 'f4' ( in 4-component vector of float) +0:27 Constant: +0:27 0 (const uint) +0:28 subgroupBroadcastFirst ( global 4-component vector of float) +0:28 'f4' ( in 4-component vector of float) +0:29 Sequence +0:29 move second child to first child ( temp 4-component vector of uint) +0:29 'ballot' ( temp 4-component vector of uint) +0:29 subgroupBallot ( global 4-component vector of uint) +0:29 Constant: +0:29 false (const bool) +0:30 subgroupInverseBallot ( global bool) +0:30 Constant: +0:30 1 (const uint) +0:30 1 (const uint) +0:30 1 (const uint) +0:30 1 (const uint) +0:31 subgroupBallotBitExtract ( global bool) +0:31 'ballot' ( temp 4-component vector of uint) +0:31 Constant: +0:31 0 (const uint) +0:32 subgroupBallotBitCount ( global uint) +0:32 'ballot' ( temp 4-component vector of uint) +0:33 subgroupBallotInclusiveBitCount ( global uint) +0:33 'ballot' ( temp 4-component vector of uint) +0:34 subgroupBallotExclusiveBitCount ( global uint) +0:34 'ballot' ( temp 4-component vector of uint) +0:35 subgroupBallotFindLSB ( global uint) +0:35 'ballot' ( temp 4-component vector of uint) +0:36 subgroupBallotFindMSB ( global uint) +0:36 'ballot' ( temp 4-component vector of uint) +0:38 subgroupShuffle ( global 4-component vector of float) +0:38 'f4' ( in 4-component vector of float) +0:38 Constant: +0:38 0 (const uint) +0:39 subgroupShuffleXor ( 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 subgroupShuffleUp ( global 4-component vector of float) +0:40 'f4' ( in 4-component vector of float) +0:40 Constant: +0:40 1 (const uint) +0:41 subgroupShuffleDown ( global 4-component vector of float) +0:41 'f4' ( in 4-component vector of float) +0:41 Constant: +0:41 1 (const uint) +0:43 move second child to first child ( temp 4-component vector of float) +0:43 'result' ( temp 4-component vector of float) +0:43 subgroupAdd ( global 4-component vector of float) +0:43 'f4' ( in 4-component vector of float) +0:44 subgroupMul ( global 4-component vector of float) +0:44 'f4' ( in 4-component vector of float) +0:45 subgroupMin ( global 4-component vector of float) +0:45 'f4' ( in 4-component vector of float) +0:46 subgroupMax ( global 4-component vector of float) +0:46 'f4' ( in 4-component vector of float) +0:47 subgroupAnd ( global 4-component vector of uint) +0:47 'ballot' ( temp 4-component vector of uint) +0:48 subgroupOr ( global 4-component vector of uint) +0:48 'ballot' ( temp 4-component vector of uint) +0:49 subgroupXor ( global 4-component vector of uint) +0:49 'ballot' ( temp 4-component vector of uint) +0:50 subgroupInclusiveAdd ( global 4-component vector of float) +0:50 'f4' ( in 4-component vector of float) +0:51 subgroupInclusiveMul ( global 4-component vector of float) +0:51 'f4' ( in 4-component vector of float) +0:52 subgroupInclusiveMin ( global 4-component vector of float) +0:52 'f4' ( in 4-component vector of float) +0:53 subgroupInclusiveMax ( global 4-component vector of float) +0:53 'f4' ( in 4-component vector of float) +0:54 subgroupInclusiveAnd ( global 4-component vector of uint) +0:54 'ballot' ( temp 4-component vector of uint) +0:55 subgroupInclusiveOr ( global 4-component vector of uint) +0:55 'ballot' ( temp 4-component vector of uint) +0:56 subgroupInclusiveXor ( global 4-component vector of uint) +0:56 'ballot' ( temp 4-component vector of uint) +0:57 subgroupExclusiveAdd ( global 4-component vector of float) +0:57 'f4' ( in 4-component vector of float) +0:58 subgroupExclusiveMul ( global 4-component vector of float) +0:58 'f4' ( in 4-component vector of float) +0:59 subgroupExclusiveMin ( global 4-component vector of float) +0:59 'f4' ( in 4-component vector of float) +0:60 subgroupExclusiveMax ( global 4-component vector of float) +0:60 'f4' ( in 4-component vector of float) +0:61 subgroupExclusiveAnd ( global 4-component vector of uint) +0:61 'ballot' ( temp 4-component vector of uint) +0:62 subgroupExclusiveOr ( global 4-component vector of uint) +0:62 'ballot' ( temp 4-component vector of uint) +0:63 subgroupExclusiveXor ( global 4-component vector of uint) +0:63 'ballot' ( temp 4-component vector of uint) +0:65 subgroupClusteredAdd ( 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 subgroupClusteredMul ( 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 subgroupClusteredMin ( 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 subgroupClusteredMax ( global 4-component vector of float) +0:68 'f4' ( in 4-component vector of float) +0:68 Constant: +0:68 2 (const uint) +0:69 subgroupClusteredAnd ( 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 subgroupClusteredOr ( global 4-component vector of uint) +0:70 'ballot' ( temp 4-component vector of uint) +0:70 Constant: +0:70 2 (const uint) +0:71 subgroupClusteredXor ( global 4-component vector of uint) +0:71 'ballot' ( temp 4-component vector of uint) +0:71 Constant: +0:71 2 (const uint) +0:73 subgroupQuadBroadcast ( global 4-component vector of float) +0:73 'f4' ( in 4-component vector of float) +0:73 Constant: +0:73 0 (const uint) +0:74 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:74 'f4' ( in 4-component vector of float) +0:75 subgroupQuadSwapVertical ( global 4-component vector of float) +0:75 'f4' ( in 4-component vector of float) +0:76 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:76 'f4' ( in 4-component vector of float) +0:78 Sequence +0:78 move second child to first child ( temp 4-component vector of uint) +0:78 'parti' ( temp 4-component vector of uint) +0:78 subgroupPartitionNV ( global 4-component vector of uint) +0:78 'f4' ( in 4-component vector of float) +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 float) +0:82 'f4' ( in 4-component vector of float) +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 uint) +0:85 'ballot' ( temp 4-component vector of uint) +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 float) +0:89 'f4' ( in 4-component vector of float) +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 uint) +0:92 'ballot' ( temp 4-component vector of uint) +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 float) +0:96 'f4' ( in 4-component vector of float) +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:99 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:99 'ballot' ( temp 4-component vector of uint) +0:99 'parti' ( temp 4-component vector of uint) +0:101 Branch: Return with expression +0:101 'result' ( temp 4-component vector of float) +0:108 Function Definition: main( ( global void) +0:108 Function Parameters: +0:110 Sequence +0:110 Sequence +0:110 move second child to first child ( temp 3-component vector of uint) +0:110 'v0' ( temp 3-component vector of uint) +0:110 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) +0:111 Sequence +0:111 move second child to first child ( temp 3-component vector of uint) +0:111 'v1' ( temp 3-component vector of uint) +0:111 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) +0:112 Sequence +0:112 move second child to first child ( temp int) +0:112 'v2' ( temp int) +0:112 'gl_PrimitiveID' ( in int PrimitiveID) +0:113 Sequence +0:113 move second child to first child ( temp int) +0:113 'v3' ( temp int) +0:113 'gl_InstanceID' ( in int InstanceId) +0:114 Sequence +0:114 move second child to first child ( temp int) +0:114 'v4' ( temp int) +0:114 'gl_InstanceCustomIndexNV' ( in int InstanceCustomIndexNV) +0:115 Sequence +0:115 move second child to first child ( temp 3-component vector of float) +0:115 'v5' ( temp 3-component vector of float) +0:115 'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV) +0:116 Sequence +0:116 move second child to first child ( temp 3-component vector of float) +0:116 'v6' ( temp 3-component vector of float) +0:116 'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV) +0:117 Sequence +0:117 move second child to first child ( temp 3-component vector of float) +0:117 'v7' ( temp 3-component vector of float) +0:117 'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV) +0:118 Sequence +0:118 move second child to first child ( temp 3-component vector of float) +0:118 'v8' ( temp 3-component vector of float) +0:118 'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV) +0:119 Sequence +0:119 move second child to first child ( temp float) +0:119 'v9' ( temp float) +0:119 'gl_RayTminNV' ( in float ObjectRayTminNV) +0:120 Sequence +0:120 move second child to first child ( temp float) +0:120 'v10' ( temp float) +0:120 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) +0:121 Sequence +0:121 move second child to first child ( temp float) +0:121 'v11' ( temp float) +0:121 'gl_HitTNV' ( in float HitTNV) +0:122 Sequence +0:122 move second child to first child ( temp uint) +0:122 'v12' ( temp uint) +0:122 'gl_HitKindNV' ( in uint HitKindNV) +0:123 Sequence +0:123 move second child to first child ( temp 4X3 matrix of float) +0:123 'v13' ( temp 4X3 matrix of float) +0:123 'gl_ObjectToWorldNV' ( in 4X3 matrix of float ObjectToWorldNV) +0:124 Sequence +0:124 move second child to first child ( temp 4X3 matrix of float) +0:124 'v14' ( temp 4X3 matrix of float) +0:124 'gl_WorldToObjectNV' ( in 4X3 matrix of float WorldToObjectNV) +0:125 traceNV ( global void) +0:125 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) +0:125 Constant: +0:125 0 (const uint) +0:125 Constant: +0:125 1 (const uint) +0:125 Constant: +0:125 2 (const uint) +0:125 Constant: +0:125 3 (const uint) +0:125 Constant: +0:125 0 (const uint) +0:125 Constant: +0:125 0.500000 +0:125 0.500000 +0:125 0.500000 +0:125 Constant: +0:125 0.500000 +0:125 Constant: +0:125 1.000000 +0:125 1.000000 +0:125 1.000000 +0:125 Constant: +0:125 0.750000 +0:125 Constant: +0:125 1 (const int) +0:129 Function Definition: basic_works( ( global void) +0:129 Function Parameters: +0:131 Sequence +0:131 'gl_SubgroupSize' ( temp float) +0:132 'gl_SubgroupInvocationID' ( temp float) +0:133 subgroupBarrier ( global void) +0:134 subgroupMemoryBarrier ( global void) +0:135 subgroupMemoryBarrierBuffer ( global void) +0:136 subgroupMemoryBarrierImage ( global void) +0:137 subgroupElect ( global bool) +0:141 Function Definition: ballot_works(vf4; ( global void) +0:141 Function Parameters: +0:141 'f4' ( in 4-component vector of float) +0:142 Sequence +0:142 'gl_SubgroupEqMask' ( temp float) +0:143 'gl_SubgroupGeMask' ( temp float) +0:144 'gl_SubgroupGtMask' ( temp float) +0:145 'gl_SubgroupLeMask' ( temp float) +0:146 'gl_SubgroupLtMask' ( temp float) +0:147 subgroupBroadcast ( global 4-component vector of float) +0:147 'f4' ( in 4-component vector of float) +0:147 Constant: +0:147 0 (const uint) +0:148 subgroupBroadcastFirst ( global 4-component vector of float) +0:148 'f4' ( in 4-component vector of float) +0:149 Sequence +0:149 move second child to first child ( temp 4-component vector of uint) +0:149 'ballot' ( temp 4-component vector of uint) +0:149 subgroupBallot ( global 4-component vector of uint) +0:149 Constant: +0:149 false (const bool) +0:150 subgroupInverseBallot ( global bool) +0:150 Constant: +0:150 1 (const uint) +0:150 1 (const uint) +0:150 1 (const uint) +0:150 1 (const uint) +0:151 subgroupBallotBitExtract ( global bool) +0:151 'ballot' ( temp 4-component vector of uint) +0:151 Constant: +0:151 0 (const uint) +0:152 subgroupBallotBitCount ( global uint) +0:152 'ballot' ( temp 4-component vector of uint) +0:153 subgroupBallotInclusiveBitCount ( global uint) +0:153 'ballot' ( temp 4-component vector of uint) +0:154 subgroupBallotExclusiveBitCount ( global uint) +0:154 'ballot' ( temp 4-component vector of uint) +0:155 subgroupBallotFindLSB ( global uint) +0:155 'ballot' ( temp 4-component vector of uint) +0:156 subgroupBallotFindMSB ( global uint) +0:156 'ballot' ( temp 4-component vector of uint) +0:160 Function Definition: vote_works(vf4; ( global void) +0:160 Function Parameters: +0:160 'f4' ( in 4-component vector of float) +0:162 Sequence +0:162 subgroupAll ( global bool) +0:162 Constant: +0:162 true (const bool) +0:163 subgroupAny ( global bool) +0:163 Constant: +0:163 false (const bool) +0:164 subgroupAllEqual ( global bool) +0:164 'f4' ( in 4-component vector of float) +0:169 Function Definition: shuffle_works(vf4; ( global void) +0:169 Function Parameters: +0:169 'f4' ( in 4-component vector of float) +0:171 Sequence +0:171 subgroupShuffle ( global 4-component vector of float) +0:171 'f4' ( in 4-component vector of float) +0:171 Constant: +0:171 0 (const uint) +0:172 subgroupShuffleXor ( global 4-component vector of float) +0:172 'f4' ( in 4-component vector of float) +0:172 Constant: +0:172 1 (const uint) +0:173 subgroupShuffleUp ( global 4-component vector of float) +0:173 'f4' ( in 4-component vector of float) +0:173 Constant: +0:173 1 (const uint) +0:174 subgroupShuffleDown ( global 4-component vector of float) +0:174 'f4' ( in 4-component vector of float) +0:174 Constant: +0:174 1 (const uint) +0:178 Function Definition: arith_works(vf4; ( global void) +0:178 Function Parameters: +0:178 'f4' ( in 4-component vector of float) +0:? Sequence +0:181 subgroupAdd ( global 4-component vector of float) +0:181 'f4' ( in 4-component vector of float) +0:182 subgroupMul ( global 4-component vector of float) +0:182 'f4' ( in 4-component vector of float) +0:183 subgroupMin ( global 4-component vector of float) +0:183 'f4' ( in 4-component vector of float) +0:184 subgroupMax ( global 4-component vector of float) +0:184 'f4' ( in 4-component vector of float) +0:185 subgroupAnd ( global 4-component vector of uint) +0:185 'ballot' ( temp 4-component vector of uint) +0:186 subgroupOr ( global 4-component vector of uint) +0:186 'ballot' ( temp 4-component vector of uint) +0:187 subgroupXor ( global 4-component vector of uint) +0:187 'ballot' ( temp 4-component vector of uint) +0:188 subgroupInclusiveAdd ( global 4-component vector of float) +0:188 'f4' ( in 4-component vector of float) +0:189 subgroupInclusiveMul ( global 4-component vector of float) +0:189 'f4' ( in 4-component vector of float) +0:190 subgroupInclusiveMin ( global 4-component vector of float) +0:190 'f4' ( in 4-component vector of float) +0:191 subgroupInclusiveMax ( global 4-component vector of float) +0:191 'f4' ( in 4-component vector of float) +0:192 subgroupInclusiveAnd ( global 4-component vector of uint) +0:192 'ballot' ( temp 4-component vector of uint) +0:193 subgroupInclusiveOr ( global 4-component vector of uint) +0:193 'ballot' ( temp 4-component vector of uint) +0:194 subgroupInclusiveXor ( global 4-component vector of uint) +0:194 'ballot' ( temp 4-component vector of uint) +0:195 subgroupExclusiveAdd ( global 4-component vector of float) +0:195 'f4' ( in 4-component vector of float) +0:196 subgroupExclusiveMul ( global 4-component vector of float) +0:196 'f4' ( in 4-component vector of float) +0:197 subgroupExclusiveMin ( global 4-component vector of float) +0:197 'f4' ( in 4-component vector of float) +0:198 subgroupExclusiveMax ( global 4-component vector of float) +0:198 'f4' ( in 4-component vector of float) +0:199 subgroupExclusiveAnd ( global 4-component vector of uint) +0:199 'ballot' ( temp 4-component vector of uint) +0:200 subgroupExclusiveOr ( global 4-component vector of uint) +0:200 'ballot' ( temp 4-component vector of uint) +0:201 subgroupExclusiveXor ( global 4-component vector of uint) +0:201 'ballot' ( temp 4-component vector of uint) +0:205 Function Definition: clustered_works(vf4; ( global void) +0:205 Function Parameters: +0:205 'f4' ( in 4-component vector of float) +0:207 Sequence +0:207 Sequence +0:207 move second child to first child ( temp 4-component vector of uint) +0:207 'ballot' ( temp 4-component vector of uint) +0:207 Constant: +0:207 85 (const uint) +0:207 0 (const uint) +0:207 0 (const uint) +0:207 0 (const uint) +0:208 subgroupClusteredAdd ( global 4-component vector of float) +0:208 'f4' ( in 4-component vector of float) +0:208 Constant: +0:208 2 (const uint) +0:209 subgroupClusteredMul ( global 4-component vector of float) +0:209 'f4' ( in 4-component vector of float) +0:209 Constant: +0:209 2 (const uint) +0:210 subgroupClusteredMin ( global 4-component vector of float) +0:210 'f4' ( in 4-component vector of float) +0:210 Constant: +0:210 2 (const uint) +0:211 subgroupClusteredMax ( global 4-component vector of float) +0:211 'f4' ( in 4-component vector of float) +0:211 Constant: +0:211 2 (const uint) +0:212 subgroupClusteredAnd ( global 4-component vector of uint) +0:212 'ballot' ( temp 4-component vector of uint) +0:212 Constant: +0:212 2 (const uint) +0:213 subgroupClusteredOr ( global 4-component vector of uint) +0:213 'ballot' ( temp 4-component vector of uint) +0:213 Constant: +0:213 2 (const uint) +0:214 subgroupClusteredXor ( global 4-component vector of uint) +0:214 'ballot' ( temp 4-component vector of uint) +0:214 Constant: +0:214 2 (const uint) +0:218 Function Definition: quad_works(vf4; ( global void) +0:218 Function Parameters: +0:218 'f4' ( in 4-component vector of float) +0:220 Sequence +0:220 subgroupQuadBroadcast ( global 4-component vector of float) +0:220 'f4' ( in 4-component vector of float) +0:220 Constant: +0:220 0 (const uint) +0:221 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:221 'f4' ( in 4-component vector of float) +0:222 subgroupQuadSwapVertical ( global 4-component vector of float) +0:222 'f4' ( in 4-component vector of float) +0:223 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:223 'f4' ( in 4-component vector of float) +0:227 Function Definition: partitioned_works(vf4; ( global void) +0:227 Function Parameters: +0:227 'f4' ( in 4-component vector of float) +0:229 Sequence +0:229 Sequence +0:229 move second child to first child ( temp 4-component vector of uint) +0:229 'parti' ( temp 4-component vector of uint) +0:229 subgroupPartitionNV ( global 4-component vector of uint) +0:229 'f4' ( in 4-component vector of float) +0:230 Sequence +0:230 move second child to first child ( temp 4-component vector of uint) +0:230 'ballot' ( temp 4-component vector of uint) +0:230 Constant: +0:230 85 (const uint) +0:230 0 (const uint) +0:230 0 (const uint) +0:230 0 (const 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 float) +0:234 'f4' ( in 4-component vector of float) +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:237 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:237 'ballot' ( temp 4-component vector of uint) +0:237 'parti' ( temp 4-component vector of uint) +0:238 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:238 'f4' ( in 4-component vector of float) +0:238 'parti' ( temp 4-component vector of uint) +0:239 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:239 'f4' ( in 4-component vector of float) +0:239 'parti' ( temp 4-component vector of uint) +0:240 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:240 'f4' ( in 4-component vector of float) +0:240 'parti' ( temp 4-component vector of uint) +0:241 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:241 'f4' ( in 4-component vector of float) +0:241 'parti' ( temp 4-component vector of uint) +0:242 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:242 'ballot' ( temp 4-component vector of uint) +0:242 'parti' ( temp 4-component vector of uint) +0:243 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:243 'ballot' ( temp 4-component vector of uint) +0:243 'parti' ( temp 4-component vector of uint) +0:244 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:244 'ballot' ( temp 4-component vector of uint) +0:244 'parti' ( temp 4-component vector of uint) +0:245 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:245 'f4' ( in 4-component vector of float) +0:245 'parti' ( temp 4-component vector of uint) +0:246 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:246 'f4' ( in 4-component vector of float) +0:246 'parti' ( temp 4-component vector of uint) +0:247 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:247 'f4' ( in 4-component vector of float) +0:247 'parti' ( temp 4-component vector of uint) +0:248 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:248 'f4' ( in 4-component vector of float) +0:248 'parti' ( temp 4-component vector of uint) +0:249 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:249 'ballot' ( temp 4-component vector of uint) +0:249 'parti' ( temp 4-component vector of uint) +0:250 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:250 'ballot' ( temp 4-component vector of uint) +0:250 'parti' ( temp 4-component vector of uint) +0:251 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:251 'ballot' ( temp 4-component vector of uint) +0:251 'parti' ( temp 4-component vector of uint) +0:? Linker Objects +0:? 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) +0:? 'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float) +0:? 'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float) + + +Linked closest-hit stage: + + +Shader version: 460 +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_ray_tracing +Requested GL_NV_shader_subgroup_partitioned +ERROR: node is still EOpNull! +0:108 Function Definition: main( ( global void) +0:108 Function Parameters: +0:110 Sequence +0:110 Sequence +0:110 move second child to first child ( temp 3-component vector of uint) +0:110 'v0' ( temp 3-component vector of uint) +0:110 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) +0:111 Sequence +0:111 move second child to first child ( temp 3-component vector of uint) +0:111 'v1' ( temp 3-component vector of uint) +0:111 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) +0:112 Sequence +0:112 move second child to first child ( temp int) +0:112 'v2' ( temp int) +0:112 'gl_PrimitiveID' ( in int PrimitiveID) +0:113 Sequence +0:113 move second child to first child ( temp int) +0:113 'v3' ( temp int) +0:113 'gl_InstanceID' ( in int InstanceId) +0:114 Sequence +0:114 move second child to first child ( temp int) +0:114 'v4' ( temp int) +0:114 'gl_InstanceCustomIndexNV' ( in int InstanceCustomIndexNV) +0:115 Sequence +0:115 move second child to first child ( temp 3-component vector of float) +0:115 'v5' ( temp 3-component vector of float) +0:115 'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV) +0:116 Sequence +0:116 move second child to first child ( temp 3-component vector of float) +0:116 'v6' ( temp 3-component vector of float) +0:116 'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV) +0:117 Sequence +0:117 move second child to first child ( temp 3-component vector of float) +0:117 'v7' ( temp 3-component vector of float) +0:117 'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV) +0:118 Sequence +0:118 move second child to first child ( temp 3-component vector of float) +0:118 'v8' ( temp 3-component vector of float) +0:118 'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV) +0:119 Sequence +0:119 move second child to first child ( temp float) +0:119 'v9' ( temp float) +0:119 'gl_RayTminNV' ( in float ObjectRayTminNV) +0:120 Sequence +0:120 move second child to first child ( temp float) +0:120 'v10' ( temp float) +0:120 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) +0:121 Sequence +0:121 move second child to first child ( temp float) +0:121 'v11' ( temp float) +0:121 'gl_HitTNV' ( in float HitTNV) +0:122 Sequence +0:122 move second child to first child ( temp uint) +0:122 'v12' ( temp uint) +0:122 'gl_HitKindNV' ( in uint HitKindNV) +0:123 Sequence +0:123 move second child to first child ( temp 4X3 matrix of float) +0:123 'v13' ( temp 4X3 matrix of float) +0:123 'gl_ObjectToWorldNV' ( in 4X3 matrix of float ObjectToWorldNV) +0:124 Sequence +0:124 move second child to first child ( temp 4X3 matrix of float) +0:124 'v14' ( temp 4X3 matrix of float) +0:124 'gl_WorldToObjectNV' ( in 4X3 matrix of float WorldToObjectNV) +0:125 traceNV ( global void) +0:125 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) +0:125 Constant: +0:125 0 (const uint) +0:125 Constant: +0:125 1 (const uint) +0:125 Constant: +0:125 2 (const uint) +0:125 Constant: +0:125 3 (const uint) +0:125 Constant: +0:125 0 (const uint) +0:125 Constant: +0:125 0.500000 +0:125 0.500000 +0:125 0.500000 +0:125 Constant: +0:125 0.500000 +0:125 Constant: +0:125 1.000000 +0:125 1.000000 +0:125 1.000000 +0:125 Constant: +0:125 0.750000 +0:125 Constant: +0:125 1 (const int) +0:? Linker Objects +0:? 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) +0:? 'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float) +0:? 'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float) + diff --git a/Test/baseResults/glsl.460.subgroup.rgen.out b/Test/baseResults/glsl.460.subgroup.rgen.out new file mode 100644 index 00000000..58214ec3 --- /dev/null +++ b/Test/baseResults/glsl.460.subgroup.rgen.out @@ -0,0 +1,776 @@ +glsl.460.subgroup.rgen +ERROR: 0:7: 'gl_SubgroupSize' : undeclared identifier +ERROR: 0:8: 'gl_SubgroupInvocationID' : undeclared identifier +ERROR: 0:9: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:10: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:11: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:12: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:13: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:14: 'gl_NumSubgroups' : undeclared identifier +ERROR: 0:15: 'gl_SubgroupID' : undeclared identifier +ERROR: 0:16: 'subgroupMemoryBarrierShared' : no matching overloaded function found +ERROR: 0:18: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:19: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:20: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:22: 'gl_SubgroupEqMask' : undeclared identifier +ERROR: 0:23: 'gl_SubgroupGeMask' : undeclared identifier +ERROR: 0:24: 'gl_SubgroupGtMask' : undeclared identifier +ERROR: 0:25: 'gl_SubgroupLeMask' : undeclared identifier +ERROR: 0:26: 'gl_SubgroupLtMask' : undeclared identifier +ERROR: 0:27: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:28: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:29: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:30: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:31: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:32: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:33: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:34: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:35: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:36: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:38: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:39: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:40: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:41: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:43: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:44: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:45: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:46: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:47: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:48: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:49: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:50: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:51: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:52: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:53: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:54: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:55: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:56: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:57: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:58: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:59: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:60: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:61: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:62: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:63: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:65: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:66: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:67: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:68: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:69: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:70: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:71: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:73: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:74: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:75: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:76: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:78: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:79: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:80: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:81: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:82: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:83: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:84: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:85: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:86: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:87: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:88: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:89: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:90: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:91: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:92: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:93: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:94: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:95: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:125: 'gl_SubgroupSize' : undeclared identifier +ERROR: 0:126: 'gl_SubgroupInvocationID' : undeclared identifier +ERROR: 0:136: 'gl_SubgroupEqMask' : undeclared identifier +ERROR: 0:137: 'gl_SubgroupGeMask' : undeclared identifier +ERROR: 0:138: 'gl_SubgroupGtMask' : undeclared identifier +ERROR: 0:139: 'gl_SubgroupLeMask' : undeclared identifier +ERROR: 0:140: 'gl_SubgroupLtMask' : undeclared identifier +ERROR: 93 compilation errors. No code generated. + + +Shader version: 460 +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_ray_tracing +Requested GL_NV_shader_subgroup_partitioned +ERROR: node is still EOpNull! +0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) +0:4 Function Parameters: +0:4 'f4' ( in 4-component vector of float) +0:? Sequence +0:7 'gl_SubgroupSize' ( temp float) +0:8 'gl_SubgroupInvocationID' ( temp float) +0:9 subgroupBarrier ( global void) +0:10 subgroupMemoryBarrier ( global void) +0:11 subgroupMemoryBarrierBuffer ( global void) +0:12 subgroupMemoryBarrierImage ( global void) +0:13 subgroupElect ( global bool) +0:14 'gl_NumSubgroups' ( temp float) +0:15 'gl_SubgroupID' ( temp float) +0:16 Constant: +0:16 0.000000 +0:18 subgroupAll ( global bool) +0:18 Constant: +0:18 true (const bool) +0:19 subgroupAny ( global bool) +0:19 Constant: +0:19 false (const bool) +0:20 subgroupAllEqual ( global bool) +0:20 'f4' ( in 4-component vector of float) +0:22 'gl_SubgroupEqMask' ( temp float) +0:23 'gl_SubgroupGeMask' ( temp float) +0:24 'gl_SubgroupGtMask' ( temp float) +0:25 'gl_SubgroupLeMask' ( temp float) +0:26 'gl_SubgroupLtMask' ( temp float) +0:27 subgroupBroadcast ( global 4-component vector of float) +0:27 'f4' ( in 4-component vector of float) +0:27 Constant: +0:27 0 (const uint) +0:28 subgroupBroadcastFirst ( global 4-component vector of float) +0:28 'f4' ( in 4-component vector of float) +0:29 Sequence +0:29 move second child to first child ( temp 4-component vector of uint) +0:29 'ballot' ( temp 4-component vector of uint) +0:29 subgroupBallot ( global 4-component vector of uint) +0:29 Constant: +0:29 false (const bool) +0:30 subgroupInverseBallot ( global bool) +0:30 Constant: +0:30 1 (const uint) +0:30 1 (const uint) +0:30 1 (const uint) +0:30 1 (const uint) +0:31 subgroupBallotBitExtract ( global bool) +0:31 'ballot' ( temp 4-component vector of uint) +0:31 Constant: +0:31 0 (const uint) +0:32 subgroupBallotBitCount ( global uint) +0:32 'ballot' ( temp 4-component vector of uint) +0:33 subgroupBallotInclusiveBitCount ( global uint) +0:33 'ballot' ( temp 4-component vector of uint) +0:34 subgroupBallotExclusiveBitCount ( global uint) +0:34 'ballot' ( temp 4-component vector of uint) +0:35 subgroupBallotFindLSB ( global uint) +0:35 'ballot' ( temp 4-component vector of uint) +0:36 subgroupBallotFindMSB ( global uint) +0:36 'ballot' ( temp 4-component vector of uint) +0:38 subgroupShuffle ( global 4-component vector of float) +0:38 'f4' ( in 4-component vector of float) +0:38 Constant: +0:38 0 (const uint) +0:39 subgroupShuffleXor ( 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 subgroupShuffleUp ( global 4-component vector of float) +0:40 'f4' ( in 4-component vector of float) +0:40 Constant: +0:40 1 (const uint) +0:41 subgroupShuffleDown ( global 4-component vector of float) +0:41 'f4' ( in 4-component vector of float) +0:41 Constant: +0:41 1 (const uint) +0:43 move second child to first child ( temp 4-component vector of float) +0:43 'result' ( temp 4-component vector of float) +0:43 subgroupAdd ( global 4-component vector of float) +0:43 'f4' ( in 4-component vector of float) +0:44 subgroupMul ( global 4-component vector of float) +0:44 'f4' ( in 4-component vector of float) +0:45 subgroupMin ( global 4-component vector of float) +0:45 'f4' ( in 4-component vector of float) +0:46 subgroupMax ( global 4-component vector of float) +0:46 'f4' ( in 4-component vector of float) +0:47 subgroupAnd ( global 4-component vector of uint) +0:47 'ballot' ( temp 4-component vector of uint) +0:48 subgroupOr ( global 4-component vector of uint) +0:48 'ballot' ( temp 4-component vector of uint) +0:49 subgroupXor ( global 4-component vector of uint) +0:49 'ballot' ( temp 4-component vector of uint) +0:50 subgroupInclusiveAdd ( global 4-component vector of float) +0:50 'f4' ( in 4-component vector of float) +0:51 subgroupInclusiveMul ( global 4-component vector of float) +0:51 'f4' ( in 4-component vector of float) +0:52 subgroupInclusiveMin ( global 4-component vector of float) +0:52 'f4' ( in 4-component vector of float) +0:53 subgroupInclusiveMax ( global 4-component vector of float) +0:53 'f4' ( in 4-component vector of float) +0:54 subgroupInclusiveAnd ( global 4-component vector of uint) +0:54 'ballot' ( temp 4-component vector of uint) +0:55 subgroupInclusiveOr ( global 4-component vector of uint) +0:55 'ballot' ( temp 4-component vector of uint) +0:56 subgroupInclusiveXor ( global 4-component vector of uint) +0:56 'ballot' ( temp 4-component vector of uint) +0:57 subgroupExclusiveAdd ( global 4-component vector of float) +0:57 'f4' ( in 4-component vector of float) +0:58 subgroupExclusiveMul ( global 4-component vector of float) +0:58 'f4' ( in 4-component vector of float) +0:59 subgroupExclusiveMin ( global 4-component vector of float) +0:59 'f4' ( in 4-component vector of float) +0:60 subgroupExclusiveMax ( global 4-component vector of float) +0:60 'f4' ( in 4-component vector of float) +0:61 subgroupExclusiveAnd ( global 4-component vector of uint) +0:61 'ballot' ( temp 4-component vector of uint) +0:62 subgroupExclusiveOr ( global 4-component vector of uint) +0:62 'ballot' ( temp 4-component vector of uint) +0:63 subgroupExclusiveXor ( global 4-component vector of uint) +0:63 'ballot' ( temp 4-component vector of uint) +0:65 subgroupClusteredAdd ( 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 subgroupClusteredMul ( 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 subgroupClusteredMin ( 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 subgroupClusteredMax ( global 4-component vector of float) +0:68 'f4' ( in 4-component vector of float) +0:68 Constant: +0:68 2 (const uint) +0:69 subgroupClusteredAnd ( 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 subgroupClusteredOr ( global 4-component vector of uint) +0:70 'ballot' ( temp 4-component vector of uint) +0:70 Constant: +0:70 2 (const uint) +0:71 subgroupClusteredXor ( global 4-component vector of uint) +0:71 'ballot' ( temp 4-component vector of uint) +0:71 Constant: +0:71 2 (const uint) +0:73 subgroupQuadBroadcast ( global 4-component vector of float) +0:73 'f4' ( in 4-component vector of float) +0:73 Constant: +0:73 0 (const uint) +0:74 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:74 'f4' ( in 4-component vector of float) +0:75 subgroupQuadSwapVertical ( global 4-component vector of float) +0:75 'f4' ( in 4-component vector of float) +0:76 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:76 'f4' ( in 4-component vector of float) +0:78 Sequence +0:78 move second child to first child ( temp 4-component vector of uint) +0:78 'parti' ( temp 4-component vector of uint) +0:78 subgroupPartitionNV ( global 4-component vector of uint) +0:78 'f4' ( in 4-component vector of float) +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 float) +0:82 'f4' ( in 4-component vector of float) +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 uint) +0:85 'ballot' ( temp 4-component vector of uint) +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 float) +0:89 'f4' ( in 4-component vector of float) +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 uint) +0:92 'ballot' ( temp 4-component vector of uint) +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 float) +0:96 'f4' ( in 4-component vector of float) +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:99 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:99 'ballot' ( temp 4-component vector of uint) +0:99 'parti' ( temp 4-component vector of uint) +0:101 Branch: Return with expression +0:101 'result' ( temp 4-component vector of float) +0:113 Function Definition: main( ( global void) +0:113 Function Parameters: +0:115 Sequence +0:115 Sequence +0:115 move second child to first child ( temp uint) +0:115 'lx' ( temp uint) +0:115 direct index ( temp uint) +0:115 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) +0:115 Constant: +0:115 0 (const int) +0:116 Sequence +0:116 move second child to first child ( temp uint) +0:116 'ly' ( temp uint) +0:116 direct index ( temp uint) +0:116 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) +0:116 Constant: +0:116 1 (const int) +0:117 Sequence +0:117 move second child to first child ( temp uint) +0:117 'sx' ( temp uint) +0:117 direct index ( temp uint) +0:117 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) +0:117 Constant: +0:117 0 (const int) +0:118 Sequence +0:118 move second child to first child ( temp uint) +0:118 'sy' ( temp uint) +0:118 direct index ( temp uint) +0:118 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) +0:118 Constant: +0:118 1 (const int) +0:119 traceNV ( global void) +0:119 'accNV0' (layout( set=0 binding=0) uniform accelerationStructureNV) +0:119 'lx' ( temp uint) +0:119 'ly' ( temp uint) +0:119 'sx' ( temp uint) +0:119 'sy' ( temp uint) +0:119 Constant: +0:119 0 (const uint) +0:119 origin: direct index for structure (layout( column_major std430 offset=16) buffer 3-component vector of float) +0:119 'anon@0' (layout( column_major std430 shaderRecordNV) buffer block{layout( column_major std430 offset=0) buffer 3-component vector of float dir, layout( column_major std430 offset=16) buffer 3-component vector of float origin}) +0:119 Constant: +0:119 1 (const uint) +0:119 Constant: +0:119 0.500000 +0:119 dir: direct index for structure (layout( column_major std430 offset=0) buffer 3-component vector of float) +0:119 'anon@0' (layout( column_major std430 shaderRecordNV) buffer block{layout( column_major std430 offset=0) buffer 3-component vector of float dir, layout( column_major std430 offset=16) buffer 3-component vector of float origin}) +0:119 Constant: +0:119 0 (const uint) +0:119 Constant: +0:119 0.750000 +0:119 Constant: +0:119 1 (const int) +0:123 Function Definition: basic_works( ( global void) +0:123 Function Parameters: +0:125 Sequence +0:125 'gl_SubgroupSize' ( temp float) +0:126 'gl_SubgroupInvocationID' ( temp float) +0:127 subgroupBarrier ( global void) +0:128 subgroupMemoryBarrier ( global void) +0:129 subgroupMemoryBarrierBuffer ( global void) +0:130 subgroupMemoryBarrierImage ( global void) +0:131 subgroupElect ( global bool) +0:135 Function Definition: ballot_works(vf4; ( global void) +0:135 Function Parameters: +0:135 'f4' ( in 4-component vector of float) +0:136 Sequence +0:136 'gl_SubgroupEqMask' ( temp float) +0:137 'gl_SubgroupGeMask' ( temp float) +0:138 'gl_SubgroupGtMask' ( temp float) +0:139 'gl_SubgroupLeMask' ( temp float) +0:140 'gl_SubgroupLtMask' ( temp float) +0:141 subgroupBroadcast ( global 4-component vector of float) +0:141 'f4' ( in 4-component vector of float) +0:141 Constant: +0:141 0 (const uint) +0:142 subgroupBroadcastFirst ( global 4-component vector of float) +0:142 'f4' ( in 4-component vector of float) +0:143 Sequence +0:143 move second child to first child ( temp 4-component vector of uint) +0:143 'ballot' ( temp 4-component vector of uint) +0:143 subgroupBallot ( global 4-component vector of uint) +0:143 Constant: +0:143 false (const bool) +0:144 subgroupInverseBallot ( global bool) +0:144 Constant: +0:144 1 (const uint) +0:144 1 (const uint) +0:144 1 (const uint) +0:144 1 (const uint) +0:145 subgroupBallotBitExtract ( global bool) +0:145 'ballot' ( temp 4-component vector of uint) +0:145 Constant: +0:145 0 (const uint) +0:146 subgroupBallotBitCount ( global uint) +0:146 'ballot' ( temp 4-component vector of uint) +0:147 subgroupBallotInclusiveBitCount ( global uint) +0:147 'ballot' ( temp 4-component vector of uint) +0:148 subgroupBallotExclusiveBitCount ( global uint) +0:148 'ballot' ( temp 4-component vector of uint) +0:149 subgroupBallotFindLSB ( global uint) +0:149 'ballot' ( temp 4-component vector of uint) +0:150 subgroupBallotFindMSB ( global uint) +0:150 'ballot' ( temp 4-component vector of uint) +0:154 Function Definition: vote_works(vf4; ( global void) +0:154 Function Parameters: +0:154 'f4' ( in 4-component vector of float) +0:156 Sequence +0:156 subgroupAll ( global bool) +0:156 Constant: +0:156 true (const bool) +0:157 subgroupAny ( global bool) +0:157 Constant: +0:157 false (const bool) +0:158 subgroupAllEqual ( global bool) +0:158 'f4' ( in 4-component vector of float) +0:163 Function Definition: shuffle_works(vf4; ( global void) +0:163 Function Parameters: +0:163 'f4' ( in 4-component vector of float) +0:165 Sequence +0:165 subgroupShuffle ( global 4-component vector of float) +0:165 'f4' ( in 4-component vector of float) +0:165 Constant: +0:165 0 (const uint) +0:166 subgroupShuffleXor ( global 4-component vector of float) +0:166 'f4' ( in 4-component vector of float) +0:166 Constant: +0:166 1 (const uint) +0:167 subgroupShuffleUp ( global 4-component vector of float) +0:167 'f4' ( in 4-component vector of float) +0:167 Constant: +0:167 1 (const uint) +0:168 subgroupShuffleDown ( global 4-component vector of float) +0:168 'f4' ( in 4-component vector of float) +0:168 Constant: +0:168 1 (const uint) +0:172 Function Definition: arith_works(vf4; ( global void) +0:172 Function Parameters: +0:172 'f4' ( in 4-component vector of float) +0:? Sequence +0:175 subgroupAdd ( global 4-component vector of float) +0:175 'f4' ( in 4-component vector of float) +0:176 subgroupMul ( global 4-component vector of float) +0:176 'f4' ( in 4-component vector of float) +0:177 subgroupMin ( global 4-component vector of float) +0:177 'f4' ( in 4-component vector of float) +0:178 subgroupMax ( global 4-component vector of float) +0:178 'f4' ( in 4-component vector of float) +0:179 subgroupAnd ( global 4-component vector of uint) +0:179 'ballot' ( temp 4-component vector of uint) +0:180 subgroupOr ( global 4-component vector of uint) +0:180 'ballot' ( temp 4-component vector of uint) +0:181 subgroupXor ( global 4-component vector of uint) +0:181 'ballot' ( temp 4-component vector of uint) +0:182 subgroupInclusiveAdd ( global 4-component vector of float) +0:182 'f4' ( in 4-component vector of float) +0:183 subgroupInclusiveMul ( global 4-component vector of float) +0:183 'f4' ( in 4-component vector of float) +0:184 subgroupInclusiveMin ( global 4-component vector of float) +0:184 'f4' ( in 4-component vector of float) +0:185 subgroupInclusiveMax ( global 4-component vector of float) +0:185 'f4' ( in 4-component vector of float) +0:186 subgroupInclusiveAnd ( global 4-component vector of uint) +0:186 'ballot' ( temp 4-component vector of uint) +0:187 subgroupInclusiveOr ( global 4-component vector of uint) +0:187 'ballot' ( temp 4-component vector of uint) +0:188 subgroupInclusiveXor ( global 4-component vector of uint) +0:188 'ballot' ( temp 4-component vector of uint) +0:189 subgroupExclusiveAdd ( global 4-component vector of float) +0:189 'f4' ( in 4-component vector of float) +0:190 subgroupExclusiveMul ( global 4-component vector of float) +0:190 'f4' ( in 4-component vector of float) +0:191 subgroupExclusiveMin ( global 4-component vector of float) +0:191 'f4' ( in 4-component vector of float) +0:192 subgroupExclusiveMax ( global 4-component vector of float) +0:192 'f4' ( in 4-component vector of float) +0:193 subgroupExclusiveAnd ( global 4-component vector of uint) +0:193 'ballot' ( temp 4-component vector of uint) +0:194 subgroupExclusiveOr ( global 4-component vector of uint) +0:194 'ballot' ( temp 4-component vector of uint) +0:195 subgroupExclusiveXor ( global 4-component vector of uint) +0:195 'ballot' ( temp 4-component vector of uint) +0:199 Function Definition: clustered_works(vf4; ( global void) +0:199 Function Parameters: +0:199 'f4' ( in 4-component vector of float) +0:201 Sequence +0:201 Sequence +0:201 move second child to first child ( temp 4-component vector of uint) +0:201 'ballot' ( temp 4-component vector of uint) +0:201 Constant: +0:201 85 (const uint) +0:201 0 (const uint) +0:201 0 (const uint) +0:201 0 (const uint) +0:202 subgroupClusteredAdd ( global 4-component vector of float) +0:202 'f4' ( in 4-component vector of float) +0:202 Constant: +0:202 2 (const uint) +0:203 subgroupClusteredMul ( global 4-component vector of float) +0:203 'f4' ( in 4-component vector of float) +0:203 Constant: +0:203 2 (const uint) +0:204 subgroupClusteredMin ( global 4-component vector of float) +0:204 'f4' ( in 4-component vector of float) +0:204 Constant: +0:204 2 (const uint) +0:205 subgroupClusteredMax ( global 4-component vector of float) +0:205 'f4' ( in 4-component vector of float) +0:205 Constant: +0:205 2 (const uint) +0:206 subgroupClusteredAnd ( global 4-component vector of uint) +0:206 'ballot' ( temp 4-component vector of uint) +0:206 Constant: +0:206 2 (const uint) +0:207 subgroupClusteredOr ( global 4-component vector of uint) +0:207 'ballot' ( temp 4-component vector of uint) +0:207 Constant: +0:207 2 (const uint) +0:208 subgroupClusteredXor ( global 4-component vector of uint) +0:208 'ballot' ( temp 4-component vector of uint) +0:208 Constant: +0:208 2 (const uint) +0:212 Function Definition: quad_works(vf4; ( global void) +0:212 Function Parameters: +0:212 'f4' ( in 4-component vector of float) +0:214 Sequence +0:214 subgroupQuadBroadcast ( global 4-component vector of float) +0:214 'f4' ( in 4-component vector of float) +0:214 Constant: +0:214 0 (const uint) +0:215 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:215 'f4' ( in 4-component vector of float) +0:216 subgroupQuadSwapVertical ( global 4-component vector of float) +0:216 'f4' ( in 4-component vector of float) +0:217 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:217 'f4' ( in 4-component vector of float) +0:221 Function Definition: partitioned_works(vf4; ( global void) +0:221 Function Parameters: +0:221 'f4' ( in 4-component vector of float) +0:223 Sequence +0:223 Sequence +0:223 move second child to first child ( temp 4-component vector of uint) +0:223 'parti' ( temp 4-component vector of uint) +0:223 subgroupPartitionNV ( global 4-component vector of uint) +0:223 'f4' ( in 4-component vector of float) +0:224 Sequence +0:224 move second child to first child ( temp 4-component vector of uint) +0:224 'ballot' ( temp 4-component vector of uint) +0:224 Constant: +0:224 85 (const uint) +0:224 0 (const uint) +0:224 0 (const uint) +0:224 0 (const 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: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 float) +0:234 'f4' ( in 4-component vector of float) +0:234 'parti' ( temp 4-component vector of uint) +0:235 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:235 'f4' ( in 4-component vector of float) +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:237 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:237 'ballot' ( temp 4-component vector of uint) +0:237 'parti' ( temp 4-component vector of uint) +0:238 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:238 'ballot' ( temp 4-component vector of uint) +0:238 'parti' ( temp 4-component vector of uint) +0:239 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:239 'f4' ( in 4-component vector of float) +0:239 'parti' ( temp 4-component vector of uint) +0:240 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:240 'f4' ( in 4-component vector of float) +0:240 'parti' ( temp 4-component vector of uint) +0:241 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:241 'f4' ( in 4-component vector of float) +0:241 'parti' ( temp 4-component vector of uint) +0:242 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:242 'f4' ( in 4-component vector of float) +0:242 'parti' ( temp 4-component vector of uint) +0:243 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:243 'ballot' ( temp 4-component vector of uint) +0:243 'parti' ( temp 4-component vector of uint) +0:244 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:244 'ballot' ( temp 4-component vector of uint) +0:244 'parti' ( temp 4-component vector of uint) +0:245 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:245 'ballot' ( temp 4-component vector of uint) +0:245 'parti' ( temp 4-component vector of uint) +0:? Linker Objects +0:? 'accNV0' (layout( set=0 binding=0) uniform accelerationStructureNV) +0:? 'accNV1' (layout( set=0 binding=1) uniform accelerationStructureNV) +0:? 'payload' (layout( location=0) rayPayloadNV 4-component vector of float) +0:? 'anon@0' (layout( column_major std430 shaderRecordNV) buffer block{layout( column_major std430 offset=0) buffer 3-component vector of float dir, layout( column_major std430 offset=16) buffer 3-component vector of float origin}) + + +Linked ray-generation stage: + + +Shader version: 460 +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_ray_tracing +Requested GL_NV_shader_subgroup_partitioned +ERROR: node is still EOpNull! +0:113 Function Definition: main( ( global void) +0:113 Function Parameters: +0:115 Sequence +0:115 Sequence +0:115 move second child to first child ( temp uint) +0:115 'lx' ( temp uint) +0:115 direct index ( temp uint) +0:115 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) +0:115 Constant: +0:115 0 (const int) +0:116 Sequence +0:116 move second child to first child ( temp uint) +0:116 'ly' ( temp uint) +0:116 direct index ( temp uint) +0:116 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) +0:116 Constant: +0:116 1 (const int) +0:117 Sequence +0:117 move second child to first child ( temp uint) +0:117 'sx' ( temp uint) +0:117 direct index ( temp uint) +0:117 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) +0:117 Constant: +0:117 0 (const int) +0:118 Sequence +0:118 move second child to first child ( temp uint) +0:118 'sy' ( temp uint) +0:118 direct index ( temp uint) +0:118 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) +0:118 Constant: +0:118 1 (const int) +0:119 traceNV ( global void) +0:119 'accNV0' (layout( set=0 binding=0) uniform accelerationStructureNV) +0:119 'lx' ( temp uint) +0:119 'ly' ( temp uint) +0:119 'sx' ( temp uint) +0:119 'sy' ( temp uint) +0:119 Constant: +0:119 0 (const uint) +0:119 origin: direct index for structure (layout( column_major std430 offset=16) buffer 3-component vector of float) +0:119 'anon@0' (layout( column_major std430 shaderRecordNV) buffer block{layout( column_major std430 offset=0) buffer 3-component vector of float dir, layout( column_major std430 offset=16) buffer 3-component vector of float origin}) +0:119 Constant: +0:119 1 (const uint) +0:119 Constant: +0:119 0.500000 +0:119 dir: direct index for structure (layout( column_major std430 offset=0) buffer 3-component vector of float) +0:119 'anon@0' (layout( column_major std430 shaderRecordNV) buffer block{layout( column_major std430 offset=0) buffer 3-component vector of float dir, layout( column_major std430 offset=16) buffer 3-component vector of float origin}) +0:119 Constant: +0:119 0 (const uint) +0:119 Constant: +0:119 0.750000 +0:119 Constant: +0:119 1 (const int) +0:? Linker Objects +0:? 'accNV0' (layout( set=0 binding=0) uniform accelerationStructureNV) +0:? 'accNV1' (layout( set=0 binding=1) uniform accelerationStructureNV) +0:? 'payload' (layout( location=0) rayPayloadNV 4-component vector of float) +0:? 'anon@0' (layout( column_major std430 shaderRecordNV) buffer block{layout( column_major std430 offset=0) buffer 3-component vector of float dir, layout( column_major std430 offset=16) buffer 3-component vector of float origin}) + diff --git a/Test/baseResults/glsl.460.subgroup.rint.out b/Test/baseResults/glsl.460.subgroup.rint.out new file mode 100644 index 00000000..65c42d76 --- /dev/null +++ b/Test/baseResults/glsl.460.subgroup.rint.out @@ -0,0 +1,798 @@ +glsl.460.subgroup.rint +ERROR: 0:8: 'gl_SubgroupSize' : undeclared identifier +ERROR: 0:9: 'gl_SubgroupInvocationID' : undeclared identifier +ERROR: 0:10: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:11: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:12: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:13: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:14: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:15: 'gl_NumSubgroups' : undeclared identifier +ERROR: 0:16: 'gl_SubgroupID' : undeclared identifier +ERROR: 0:17: 'subgroupMemoryBarrierShared' : no matching overloaded function found +ERROR: 0:19: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:20: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:21: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:23: 'gl_SubgroupEqMask' : undeclared identifier +ERROR: 0:24: 'gl_SubgroupGeMask' : undeclared identifier +ERROR: 0:25: 'gl_SubgroupGtMask' : undeclared identifier +ERROR: 0:26: 'gl_SubgroupLeMask' : undeclared identifier +ERROR: 0:27: 'gl_SubgroupLtMask' : undeclared identifier +ERROR: 0:28: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:29: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:30: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:31: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:32: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:33: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:34: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:35: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:36: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:37: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:39: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:40: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:41: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:42: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:44: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:45: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:46: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:47: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:48: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:49: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:50: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:51: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:52: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:53: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:54: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:55: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:56: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:57: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:58: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:59: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:60: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:61: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:62: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:63: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:64: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:66: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:67: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:68: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:69: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:70: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:71: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:72: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:74: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:75: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:76: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:77: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:79: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:80: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:81: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:82: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:83: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:84: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:85: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:86: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:87: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:88: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:89: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:90: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:91: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:92: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:93: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:94: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:95: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:96: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:97: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:98: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:99: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:100: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:131: 'gl_SubgroupSize' : undeclared identifier +ERROR: 0:132: 'gl_SubgroupInvocationID' : undeclared identifier +ERROR: 0:142: 'gl_SubgroupEqMask' : undeclared identifier +ERROR: 0:143: 'gl_SubgroupGeMask' : undeclared identifier +ERROR: 0:144: 'gl_SubgroupGtMask' : undeclared identifier +ERROR: 0:145: 'gl_SubgroupLeMask' : undeclared identifier +ERROR: 0:146: 'gl_SubgroupLtMask' : undeclared identifier +ERROR: 93 compilation errors. No code generated. + + +Shader version: 460 +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_ray_tracing +Requested GL_NV_shader_subgroup_partitioned +ERROR: node is still EOpNull! +0:5 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) +0:5 Function Parameters: +0:5 'f4' ( in 4-component vector of float) +0:? Sequence +0:8 'gl_SubgroupSize' ( temp float) +0:9 'gl_SubgroupInvocationID' ( temp float) +0:10 subgroupBarrier ( global void) +0:11 subgroupMemoryBarrier ( global void) +0:12 subgroupMemoryBarrierBuffer ( global void) +0:13 subgroupMemoryBarrierImage ( global void) +0:14 subgroupElect ( global bool) +0:15 'gl_NumSubgroups' ( temp float) +0:16 'gl_SubgroupID' ( temp float) +0:17 Constant: +0:17 0.000000 +0:19 subgroupAll ( global bool) +0:19 Constant: +0:19 true (const bool) +0:20 subgroupAny ( global bool) +0:20 Constant: +0:20 false (const bool) +0:21 subgroupAllEqual ( global bool) +0:21 'f4' ( in 4-component vector of float) +0:23 'gl_SubgroupEqMask' ( temp float) +0:24 'gl_SubgroupGeMask' ( temp float) +0:25 'gl_SubgroupGtMask' ( temp float) +0:26 'gl_SubgroupLeMask' ( temp float) +0:27 'gl_SubgroupLtMask' ( temp float) +0:28 subgroupBroadcast ( global 4-component vector of float) +0:28 'f4' ( in 4-component vector of float) +0:28 Constant: +0:28 0 (const uint) +0:29 subgroupBroadcastFirst ( global 4-component vector of float) +0:29 'f4' ( in 4-component vector of float) +0:30 Sequence +0:30 move second child to first child ( temp 4-component vector of uint) +0:30 'ballot' ( temp 4-component vector of uint) +0:30 subgroupBallot ( global 4-component vector of uint) +0:30 Constant: +0:30 false (const bool) +0:31 subgroupInverseBallot ( global bool) +0:31 Constant: +0:31 1 (const uint) +0:31 1 (const uint) +0:31 1 (const uint) +0:31 1 (const uint) +0:32 subgroupBallotBitExtract ( global bool) +0:32 'ballot' ( temp 4-component vector of uint) +0:32 Constant: +0:32 0 (const uint) +0:33 subgroupBallotBitCount ( global uint) +0:33 'ballot' ( temp 4-component vector of uint) +0:34 subgroupBallotInclusiveBitCount ( global uint) +0:34 'ballot' ( temp 4-component vector of uint) +0:35 subgroupBallotExclusiveBitCount ( global uint) +0:35 'ballot' ( temp 4-component vector of uint) +0:36 subgroupBallotFindLSB ( global uint) +0:36 'ballot' ( temp 4-component vector of uint) +0:37 subgroupBallotFindMSB ( global uint) +0:37 'ballot' ( temp 4-component vector of uint) +0:39 subgroupShuffle ( global 4-component vector of float) +0:39 'f4' ( in 4-component vector of float) +0:39 Constant: +0:39 0 (const uint) +0:40 subgroupShuffleXor ( global 4-component vector of float) +0:40 'f4' ( in 4-component vector of float) +0:40 Constant: +0:40 1 (const uint) +0:41 subgroupShuffleUp ( global 4-component vector of float) +0:41 'f4' ( in 4-component vector of float) +0:41 Constant: +0:41 1 (const uint) +0:42 subgroupShuffleDown ( global 4-component vector of float) +0:42 'f4' ( in 4-component vector of float) +0:42 Constant: +0:42 1 (const uint) +0:44 move second child to first child ( temp 4-component vector of float) +0:44 'result' ( temp 4-component vector of float) +0:44 subgroupAdd ( global 4-component vector of float) +0:44 'f4' ( in 4-component vector of float) +0:45 subgroupMul ( global 4-component vector of float) +0:45 'f4' ( in 4-component vector of float) +0:46 subgroupMin ( global 4-component vector of float) +0:46 'f4' ( in 4-component vector of float) +0:47 subgroupMax ( global 4-component vector of float) +0:47 'f4' ( in 4-component vector of float) +0:48 subgroupAnd ( global 4-component vector of uint) +0:48 'ballot' ( temp 4-component vector of uint) +0:49 subgroupOr ( global 4-component vector of uint) +0:49 'ballot' ( temp 4-component vector of uint) +0:50 subgroupXor ( global 4-component vector of uint) +0:50 'ballot' ( temp 4-component vector of uint) +0:51 subgroupInclusiveAdd ( global 4-component vector of float) +0:51 'f4' ( in 4-component vector of float) +0:52 subgroupInclusiveMul ( global 4-component vector of float) +0:52 'f4' ( in 4-component vector of float) +0:53 subgroupInclusiveMin ( global 4-component vector of float) +0:53 'f4' ( in 4-component vector of float) +0:54 subgroupInclusiveMax ( global 4-component vector of float) +0:54 'f4' ( in 4-component vector of float) +0:55 subgroupInclusiveAnd ( global 4-component vector of uint) +0:55 'ballot' ( temp 4-component vector of uint) +0:56 subgroupInclusiveOr ( global 4-component vector of uint) +0:56 'ballot' ( temp 4-component vector of uint) +0:57 subgroupInclusiveXor ( global 4-component vector of uint) +0:57 'ballot' ( temp 4-component vector of uint) +0:58 subgroupExclusiveAdd ( global 4-component vector of float) +0:58 'f4' ( in 4-component vector of float) +0:59 subgroupExclusiveMul ( global 4-component vector of float) +0:59 'f4' ( in 4-component vector of float) +0:60 subgroupExclusiveMin ( global 4-component vector of float) +0:60 'f4' ( in 4-component vector of float) +0:61 subgroupExclusiveMax ( global 4-component vector of float) +0:61 'f4' ( in 4-component vector of float) +0:62 subgroupExclusiveAnd ( global 4-component vector of uint) +0:62 'ballot' ( temp 4-component vector of uint) +0:63 subgroupExclusiveOr ( global 4-component vector of uint) +0:63 'ballot' ( temp 4-component vector of uint) +0:64 subgroupExclusiveXor ( global 4-component vector of uint) +0:64 'ballot' ( temp 4-component vector of uint) +0:66 subgroupClusteredAdd ( 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 subgroupClusteredMul ( 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 subgroupClusteredMin ( global 4-component vector of float) +0:68 'f4' ( in 4-component vector of float) +0:68 Constant: +0:68 2 (const uint) +0:69 subgroupClusteredMax ( global 4-component vector of float) +0:69 'f4' ( in 4-component vector of float) +0:69 Constant: +0:69 2 (const uint) +0:70 subgroupClusteredAnd ( global 4-component vector of uint) +0:70 'ballot' ( temp 4-component vector of uint) +0:70 Constant: +0:70 2 (const uint) +0:71 subgroupClusteredOr ( global 4-component vector of uint) +0:71 'ballot' ( temp 4-component vector of uint) +0:71 Constant: +0:71 2 (const uint) +0:72 subgroupClusteredXor ( global 4-component vector of uint) +0:72 'ballot' ( temp 4-component vector of uint) +0:72 Constant: +0:72 2 (const uint) +0:74 subgroupQuadBroadcast ( global 4-component vector of float) +0:74 'f4' ( in 4-component vector of float) +0:74 Constant: +0:74 0 (const uint) +0:75 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:75 'f4' ( in 4-component vector of float) +0:76 subgroupQuadSwapVertical ( global 4-component vector of float) +0:76 'f4' ( in 4-component vector of float) +0:77 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:77 'f4' ( in 4-component vector of float) +0:79 Sequence +0:79 move second child to first child ( temp 4-component vector of uint) +0:79 'parti' ( temp 4-component vector of uint) +0:79 subgroupPartitionNV ( global 4-component vector of uint) +0:79 'f4' ( in 4-component vector of float) +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 float) +0:82 'f4' ( in 4-component vector of float) +0:82 'parti' ( temp 4-component vector of uint) +0:83 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:83 'f4' ( in 4-component vector of float) +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 uint) +0:85 'ballot' ( temp 4-component vector of uint) +0:85 'parti' ( temp 4-component vector of uint) +0:86 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:86 'ballot' ( temp 4-component vector of uint) +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 float) +0:89 'f4' ( in 4-component vector of float) +0:89 'parti' ( temp 4-component vector of uint) +0:90 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:90 'f4' ( in 4-component vector of float) +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 uint) +0:92 'ballot' ( temp 4-component vector of uint) +0:92 'parti' ( temp 4-component vector of uint) +0:93 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:93 'ballot' ( temp 4-component vector of uint) +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 float) +0:96 'f4' ( in 4-component vector of float) +0:96 'parti' ( temp 4-component vector of uint) +0:97 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:97 'f4' ( in 4-component vector of float) +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:99 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:99 'ballot' ( temp 4-component vector of uint) +0:99 'parti' ( temp 4-component vector of uint) +0:100 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:100 'ballot' ( temp 4-component vector of uint) +0:100 'parti' ( temp 4-component vector of uint) +0:102 Branch: Return with expression +0:102 'result' ( temp 4-component vector of float) +0:108 Function Definition: main( ( global void) +0:108 Function Parameters: +0:110 Sequence +0:110 Sequence +0:110 move second child to first child ( temp 3-component vector of uint) +0:110 'v0' ( temp 3-component vector of uint) +0:110 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) +0:111 Sequence +0:111 move second child to first child ( temp 3-component vector of uint) +0:111 'v1' ( temp 3-component vector of uint) +0:111 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) +0:112 Sequence +0:112 move second child to first child ( temp int) +0:112 'v2' ( temp int) +0:112 'gl_PrimitiveID' ( in int PrimitiveID) +0:113 Sequence +0:113 move second child to first child ( temp int) +0:113 'v3' ( temp int) +0:113 'gl_InstanceID' ( in int InstanceId) +0:114 Sequence +0:114 move second child to first child ( temp int) +0:114 'v4' ( temp int) +0:114 'gl_InstanceCustomIndexNV' ( in int InstanceCustomIndexNV) +0:115 Sequence +0:115 move second child to first child ( temp 3-component vector of float) +0:115 'v5' ( temp 3-component vector of float) +0:115 'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV) +0:116 Sequence +0:116 move second child to first child ( temp 3-component vector of float) +0:116 'v6' ( temp 3-component vector of float) +0:116 'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV) +0:117 Sequence +0:117 move second child to first child ( temp 3-component vector of float) +0:117 'v7' ( temp 3-component vector of float) +0:117 'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV) +0:118 Sequence +0:118 move second child to first child ( temp 3-component vector of float) +0:118 'v8' ( temp 3-component vector of float) +0:118 'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV) +0:119 Sequence +0:119 move second child to first child ( temp float) +0:119 'v9' ( temp float) +0:119 'gl_RayTminNV' ( in float ObjectRayTminNV) +0:120 Sequence +0:120 move second child to first child ( temp float) +0:120 'v10' ( temp float) +0:120 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) +0:121 Sequence +0:121 move second child to first child ( temp 4X3 matrix of float) +0:121 'v11' ( temp 4X3 matrix of float) +0:121 'gl_ObjectToWorldNV' ( in 4X3 matrix of float ObjectToWorldNV) +0:122 Sequence +0:122 move second child to first child ( temp 4X3 matrix of float) +0:122 'v12' ( temp 4X3 matrix of float) +0:122 'gl_WorldToObjectNV' ( in 4X3 matrix of float WorldToObjectNV) +0:123 move second child to first child ( temp 4-component vector of float) +0:123 'iAttr' ( hitAttributeNV 4-component vector of float) +0:123 Constant: +0:123 0.500000 +0:123 0.500000 +0:123 0.000000 +0:123 1.000000 +0:124 reportIntersectionNV ( global bool) +0:124 Constant: +0:124 0.500000 +0:124 Constant: +0:124 1 (const uint) +0:129 Function Definition: basic_works( ( global void) +0:129 Function Parameters: +0:131 Sequence +0:131 'gl_SubgroupSize' ( temp float) +0:132 'gl_SubgroupInvocationID' ( temp float) +0:133 subgroupBarrier ( global void) +0:134 subgroupMemoryBarrier ( global void) +0:135 subgroupMemoryBarrierBuffer ( global void) +0:136 subgroupMemoryBarrierImage ( global void) +0:137 subgroupElect ( global bool) +0:141 Function Definition: ballot_works(vf4; ( global void) +0:141 Function Parameters: +0:141 'f4' ( in 4-component vector of float) +0:142 Sequence +0:142 'gl_SubgroupEqMask' ( temp float) +0:143 'gl_SubgroupGeMask' ( temp float) +0:144 'gl_SubgroupGtMask' ( temp float) +0:145 'gl_SubgroupLeMask' ( temp float) +0:146 'gl_SubgroupLtMask' ( temp float) +0:147 subgroupBroadcast ( global 4-component vector of float) +0:147 'f4' ( in 4-component vector of float) +0:147 Constant: +0:147 0 (const uint) +0:148 subgroupBroadcastFirst ( global 4-component vector of float) +0:148 'f4' ( in 4-component vector of float) +0:149 Sequence +0:149 move second child to first child ( temp 4-component vector of uint) +0:149 'ballot' ( temp 4-component vector of uint) +0:149 subgroupBallot ( global 4-component vector of uint) +0:149 Constant: +0:149 false (const bool) +0:150 subgroupInverseBallot ( global bool) +0:150 Constant: +0:150 1 (const uint) +0:150 1 (const uint) +0:150 1 (const uint) +0:150 1 (const uint) +0:151 subgroupBallotBitExtract ( global bool) +0:151 'ballot' ( temp 4-component vector of uint) +0:151 Constant: +0:151 0 (const uint) +0:152 subgroupBallotBitCount ( global uint) +0:152 'ballot' ( temp 4-component vector of uint) +0:153 subgroupBallotInclusiveBitCount ( global uint) +0:153 'ballot' ( temp 4-component vector of uint) +0:154 subgroupBallotExclusiveBitCount ( global uint) +0:154 'ballot' ( temp 4-component vector of uint) +0:155 subgroupBallotFindLSB ( global uint) +0:155 'ballot' ( temp 4-component vector of uint) +0:156 subgroupBallotFindMSB ( global uint) +0:156 'ballot' ( temp 4-component vector of uint) +0:160 Function Definition: vote_works(vf4; ( global void) +0:160 Function Parameters: +0:160 'f4' ( in 4-component vector of float) +0:162 Sequence +0:162 subgroupAll ( global bool) +0:162 Constant: +0:162 true (const bool) +0:163 subgroupAny ( global bool) +0:163 Constant: +0:163 false (const bool) +0:164 subgroupAllEqual ( global bool) +0:164 'f4' ( in 4-component vector of float) +0:169 Function Definition: shuffle_works(vf4; ( global void) +0:169 Function Parameters: +0:169 'f4' ( in 4-component vector of float) +0:171 Sequence +0:171 subgroupShuffle ( global 4-component vector of float) +0:171 'f4' ( in 4-component vector of float) +0:171 Constant: +0:171 0 (const uint) +0:172 subgroupShuffleXor ( global 4-component vector of float) +0:172 'f4' ( in 4-component vector of float) +0:172 Constant: +0:172 1 (const uint) +0:173 subgroupShuffleUp ( global 4-component vector of float) +0:173 'f4' ( in 4-component vector of float) +0:173 Constant: +0:173 1 (const uint) +0:174 subgroupShuffleDown ( global 4-component vector of float) +0:174 'f4' ( in 4-component vector of float) +0:174 Constant: +0:174 1 (const uint) +0:178 Function Definition: arith_works(vf4; ( global void) +0:178 Function Parameters: +0:178 'f4' ( in 4-component vector of float) +0:? Sequence +0:181 subgroupAdd ( global 4-component vector of float) +0:181 'f4' ( in 4-component vector of float) +0:182 subgroupMul ( global 4-component vector of float) +0:182 'f4' ( in 4-component vector of float) +0:183 subgroupMin ( global 4-component vector of float) +0:183 'f4' ( in 4-component vector of float) +0:184 subgroupMax ( global 4-component vector of float) +0:184 'f4' ( in 4-component vector of float) +0:185 subgroupAnd ( global 4-component vector of uint) +0:185 'ballot' ( temp 4-component vector of uint) +0:186 subgroupOr ( global 4-component vector of uint) +0:186 'ballot' ( temp 4-component vector of uint) +0:187 subgroupXor ( global 4-component vector of uint) +0:187 'ballot' ( temp 4-component vector of uint) +0:188 subgroupInclusiveAdd ( global 4-component vector of float) +0:188 'f4' ( in 4-component vector of float) +0:189 subgroupInclusiveMul ( global 4-component vector of float) +0:189 'f4' ( in 4-component vector of float) +0:190 subgroupInclusiveMin ( global 4-component vector of float) +0:190 'f4' ( in 4-component vector of float) +0:191 subgroupInclusiveMax ( global 4-component vector of float) +0:191 'f4' ( in 4-component vector of float) +0:192 subgroupInclusiveAnd ( global 4-component vector of uint) +0:192 'ballot' ( temp 4-component vector of uint) +0:193 subgroupInclusiveOr ( global 4-component vector of uint) +0:193 'ballot' ( temp 4-component vector of uint) +0:194 subgroupInclusiveXor ( global 4-component vector of uint) +0:194 'ballot' ( temp 4-component vector of uint) +0:195 subgroupExclusiveAdd ( global 4-component vector of float) +0:195 'f4' ( in 4-component vector of float) +0:196 subgroupExclusiveMul ( global 4-component vector of float) +0:196 'f4' ( in 4-component vector of float) +0:197 subgroupExclusiveMin ( global 4-component vector of float) +0:197 'f4' ( in 4-component vector of float) +0:198 subgroupExclusiveMax ( global 4-component vector of float) +0:198 'f4' ( in 4-component vector of float) +0:199 subgroupExclusiveAnd ( global 4-component vector of uint) +0:199 'ballot' ( temp 4-component vector of uint) +0:200 subgroupExclusiveOr ( global 4-component vector of uint) +0:200 'ballot' ( temp 4-component vector of uint) +0:201 subgroupExclusiveXor ( global 4-component vector of uint) +0:201 'ballot' ( temp 4-component vector of uint) +0:205 Function Definition: clustered_works(vf4; ( global void) +0:205 Function Parameters: +0:205 'f4' ( in 4-component vector of float) +0:207 Sequence +0:207 Sequence +0:207 move second child to first child ( temp 4-component vector of uint) +0:207 'ballot' ( temp 4-component vector of uint) +0:207 Constant: +0:207 85 (const uint) +0:207 0 (const uint) +0:207 0 (const uint) +0:207 0 (const uint) +0:208 subgroupClusteredAdd ( global 4-component vector of float) +0:208 'f4' ( in 4-component vector of float) +0:208 Constant: +0:208 2 (const uint) +0:209 subgroupClusteredMul ( global 4-component vector of float) +0:209 'f4' ( in 4-component vector of float) +0:209 Constant: +0:209 2 (const uint) +0:210 subgroupClusteredMin ( global 4-component vector of float) +0:210 'f4' ( in 4-component vector of float) +0:210 Constant: +0:210 2 (const uint) +0:211 subgroupClusteredMax ( global 4-component vector of float) +0:211 'f4' ( in 4-component vector of float) +0:211 Constant: +0:211 2 (const uint) +0:212 subgroupClusteredAnd ( global 4-component vector of uint) +0:212 'ballot' ( temp 4-component vector of uint) +0:212 Constant: +0:212 2 (const uint) +0:213 subgroupClusteredOr ( global 4-component vector of uint) +0:213 'ballot' ( temp 4-component vector of uint) +0:213 Constant: +0:213 2 (const uint) +0:214 subgroupClusteredXor ( global 4-component vector of uint) +0:214 'ballot' ( temp 4-component vector of uint) +0:214 Constant: +0:214 2 (const uint) +0:218 Function Definition: quad_works(vf4; ( global void) +0:218 Function Parameters: +0:218 'f4' ( in 4-component vector of float) +0:220 Sequence +0:220 subgroupQuadBroadcast ( global 4-component vector of float) +0:220 'f4' ( in 4-component vector of float) +0:220 Constant: +0:220 0 (const uint) +0:221 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:221 'f4' ( in 4-component vector of float) +0:222 subgroupQuadSwapVertical ( global 4-component vector of float) +0:222 'f4' ( in 4-component vector of float) +0:223 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:223 'f4' ( in 4-component vector of float) +0:227 Function Definition: partitioned_works(vf4; ( global void) +0:227 Function Parameters: +0:227 'f4' ( in 4-component vector of float) +0:229 Sequence +0:229 Sequence +0:229 move second child to first child ( temp 4-component vector of uint) +0:229 'parti' ( temp 4-component vector of uint) +0:229 subgroupPartitionNV ( global 4-component vector of uint) +0:229 'f4' ( in 4-component vector of float) +0:230 Sequence +0:230 move second child to first child ( temp 4-component vector of uint) +0:230 'ballot' ( temp 4-component vector of uint) +0:230 Constant: +0:230 85 (const uint) +0:230 0 (const uint) +0:230 0 (const uint) +0:230 0 (const 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 float) +0:234 'f4' ( in 4-component vector of float) +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:237 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:237 'ballot' ( temp 4-component vector of uint) +0:237 'parti' ( temp 4-component vector of uint) +0:238 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:238 'f4' ( in 4-component vector of float) +0:238 'parti' ( temp 4-component vector of uint) +0:239 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:239 'f4' ( in 4-component vector of float) +0:239 'parti' ( temp 4-component vector of uint) +0:240 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:240 'f4' ( in 4-component vector of float) +0:240 'parti' ( temp 4-component vector of uint) +0:241 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:241 'f4' ( in 4-component vector of float) +0:241 'parti' ( temp 4-component vector of uint) +0:242 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:242 'ballot' ( temp 4-component vector of uint) +0:242 'parti' ( temp 4-component vector of uint) +0:243 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:243 'ballot' ( temp 4-component vector of uint) +0:243 'parti' ( temp 4-component vector of uint) +0:244 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:244 'ballot' ( temp 4-component vector of uint) +0:244 'parti' ( temp 4-component vector of uint) +0:245 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:245 'f4' ( in 4-component vector of float) +0:245 'parti' ( temp 4-component vector of uint) +0:246 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:246 'f4' ( in 4-component vector of float) +0:246 'parti' ( temp 4-component vector of uint) +0:247 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:247 'f4' ( in 4-component vector of float) +0:247 'parti' ( temp 4-component vector of uint) +0:248 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:248 'f4' ( in 4-component vector of float) +0:248 'parti' ( temp 4-component vector of uint) +0:249 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:249 'ballot' ( temp 4-component vector of uint) +0:249 'parti' ( temp 4-component vector of uint) +0:250 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:250 'ballot' ( temp 4-component vector of uint) +0:250 'parti' ( temp 4-component vector of uint) +0:251 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:251 'ballot' ( temp 4-component vector of uint) +0:251 'parti' ( temp 4-component vector of uint) +0:? Linker Objects +0:? 'iAttr' ( hitAttributeNV 4-component vector of float) + + +Linked intersection stage: + + +Shader version: 460 +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_ray_tracing +Requested GL_NV_shader_subgroup_partitioned +ERROR: node is still EOpNull! +0:108 Function Definition: main( ( global void) +0:108 Function Parameters: +0:110 Sequence +0:110 Sequence +0:110 move second child to first child ( temp 3-component vector of uint) +0:110 'v0' ( temp 3-component vector of uint) +0:110 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) +0:111 Sequence +0:111 move second child to first child ( temp 3-component vector of uint) +0:111 'v1' ( temp 3-component vector of uint) +0:111 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) +0:112 Sequence +0:112 move second child to first child ( temp int) +0:112 'v2' ( temp int) +0:112 'gl_PrimitiveID' ( in int PrimitiveID) +0:113 Sequence +0:113 move second child to first child ( temp int) +0:113 'v3' ( temp int) +0:113 'gl_InstanceID' ( in int InstanceId) +0:114 Sequence +0:114 move second child to first child ( temp int) +0:114 'v4' ( temp int) +0:114 'gl_InstanceCustomIndexNV' ( in int InstanceCustomIndexNV) +0:115 Sequence +0:115 move second child to first child ( temp 3-component vector of float) +0:115 'v5' ( temp 3-component vector of float) +0:115 'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV) +0:116 Sequence +0:116 move second child to first child ( temp 3-component vector of float) +0:116 'v6' ( temp 3-component vector of float) +0:116 'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV) +0:117 Sequence +0:117 move second child to first child ( temp 3-component vector of float) +0:117 'v7' ( temp 3-component vector of float) +0:117 'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV) +0:118 Sequence +0:118 move second child to first child ( temp 3-component vector of float) +0:118 'v8' ( temp 3-component vector of float) +0:118 'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV) +0:119 Sequence +0:119 move second child to first child ( temp float) +0:119 'v9' ( temp float) +0:119 'gl_RayTminNV' ( in float ObjectRayTminNV) +0:120 Sequence +0:120 move second child to first child ( temp float) +0:120 'v10' ( temp float) +0:120 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) +0:121 Sequence +0:121 move second child to first child ( temp 4X3 matrix of float) +0:121 'v11' ( temp 4X3 matrix of float) +0:121 'gl_ObjectToWorldNV' ( in 4X3 matrix of float ObjectToWorldNV) +0:122 Sequence +0:122 move second child to first child ( temp 4X3 matrix of float) +0:122 'v12' ( temp 4X3 matrix of float) +0:122 'gl_WorldToObjectNV' ( in 4X3 matrix of float WorldToObjectNV) +0:123 move second child to first child ( temp 4-component vector of float) +0:123 'iAttr' ( hitAttributeNV 4-component vector of float) +0:123 Constant: +0:123 0.500000 +0:123 0.500000 +0:123 0.000000 +0:123 1.000000 +0:124 reportIntersectionNV ( global bool) +0:124 Constant: +0:124 0.500000 +0:124 Constant: +0:124 1 (const uint) +0:? Linker Objects +0:? 'iAttr' ( hitAttributeNV 4-component vector of float) + diff --git a/Test/baseResults/glsl.460.subgroup.rmiss.out b/Test/baseResults/glsl.460.subgroup.rmiss.out new file mode 100644 index 00000000..2636c98f --- /dev/null +++ b/Test/baseResults/glsl.460.subgroup.rmiss.out @@ -0,0 +1,790 @@ +glsl.460.subgroup.rmiss +ERROR: 0:8: 'gl_SubgroupSize' : undeclared identifier +ERROR: 0:9: 'gl_SubgroupInvocationID' : undeclared identifier +ERROR: 0:10: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:11: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:12: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:13: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:14: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:15: 'gl_NumSubgroups' : undeclared identifier +ERROR: 0:16: 'gl_SubgroupID' : undeclared identifier +ERROR: 0:17: 'subgroupMemoryBarrierShared' : no matching overloaded function found +ERROR: 0:19: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:20: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:21: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:23: 'gl_SubgroupEqMask' : undeclared identifier +ERROR: 0:24: 'gl_SubgroupGeMask' : undeclared identifier +ERROR: 0:25: 'gl_SubgroupGtMask' : undeclared identifier +ERROR: 0:26: 'gl_SubgroupLeMask' : undeclared identifier +ERROR: 0:27: 'gl_SubgroupLtMask' : undeclared identifier +ERROR: 0:28: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:29: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:30: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:31: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:32: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:33: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:34: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:35: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:36: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:37: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:39: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:40: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:41: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:42: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:44: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:45: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:46: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:47: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:48: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:49: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:50: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:51: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:52: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:53: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:54: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:55: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:56: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:57: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:58: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:59: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:60: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:61: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:62: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:63: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:64: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:66: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:67: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:68: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:69: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:70: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:71: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:72: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:74: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:75: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:76: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:77: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:79: 'subgroupPartitionNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:80: 'subgroupPartitionedAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:81: 'subgroupPartitionedMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:82: 'subgroupPartitionedMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:83: 'subgroupPartitionedMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:84: 'subgroupPartitionedAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:85: 'subgroupPartitionedOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:86: 'subgroupPartitionedXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:87: 'subgroupPartitionedInclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:88: 'subgroupPartitionedInclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:89: 'subgroupPartitionedInclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:90: 'subgroupPartitionedInclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:91: 'subgroupPartitionedInclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:92: 'subgroupPartitionedInclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:93: 'subgroupPartitionedInclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:94: 'subgroupPartitionedExclusiveAddNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:95: 'subgroupPartitionedExclusiveMulNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:96: 'subgroupPartitionedExclusiveMinNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:97: 'subgroupPartitionedExclusiveMaxNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:98: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:99: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:100: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned +ERROR: 0:125: 'gl_SubgroupSize' : undeclared identifier +ERROR: 0:126: 'gl_SubgroupInvocationID' : undeclared identifier +ERROR: 0:136: 'gl_SubgroupEqMask' : undeclared identifier +ERROR: 0:137: 'gl_SubgroupGeMask' : undeclared identifier +ERROR: 0:138: 'gl_SubgroupGtMask' : undeclared identifier +ERROR: 0:139: 'gl_SubgroupLeMask' : undeclared identifier +ERROR: 0:140: 'gl_SubgroupLtMask' : undeclared identifier +ERROR: 93 compilation errors. No code generated. + + +Shader version: 460 +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_ray_tracing +Requested GL_NV_shader_subgroup_partitioned +ERROR: node is still EOpNull! +0:5 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) +0:5 Function Parameters: +0:5 'f4' ( in 4-component vector of float) +0:? Sequence +0:8 'gl_SubgroupSize' ( temp float) +0:9 'gl_SubgroupInvocationID' ( temp float) +0:10 subgroupBarrier ( global void) +0:11 subgroupMemoryBarrier ( global void) +0:12 subgroupMemoryBarrierBuffer ( global void) +0:13 subgroupMemoryBarrierImage ( global void) +0:14 subgroupElect ( global bool) +0:15 'gl_NumSubgroups' ( temp float) +0:16 'gl_SubgroupID' ( temp float) +0:17 Constant: +0:17 0.000000 +0:19 subgroupAll ( global bool) +0:19 Constant: +0:19 true (const bool) +0:20 subgroupAny ( global bool) +0:20 Constant: +0:20 false (const bool) +0:21 subgroupAllEqual ( global bool) +0:21 'f4' ( in 4-component vector of float) +0:23 'gl_SubgroupEqMask' ( temp float) +0:24 'gl_SubgroupGeMask' ( temp float) +0:25 'gl_SubgroupGtMask' ( temp float) +0:26 'gl_SubgroupLeMask' ( temp float) +0:27 'gl_SubgroupLtMask' ( temp float) +0:28 subgroupBroadcast ( global 4-component vector of float) +0:28 'f4' ( in 4-component vector of float) +0:28 Constant: +0:28 0 (const uint) +0:29 subgroupBroadcastFirst ( global 4-component vector of float) +0:29 'f4' ( in 4-component vector of float) +0:30 Sequence +0:30 move second child to first child ( temp 4-component vector of uint) +0:30 'ballot' ( temp 4-component vector of uint) +0:30 subgroupBallot ( global 4-component vector of uint) +0:30 Constant: +0:30 false (const bool) +0:31 subgroupInverseBallot ( global bool) +0:31 Constant: +0:31 1 (const uint) +0:31 1 (const uint) +0:31 1 (const uint) +0:31 1 (const uint) +0:32 subgroupBallotBitExtract ( global bool) +0:32 'ballot' ( temp 4-component vector of uint) +0:32 Constant: +0:32 0 (const uint) +0:33 subgroupBallotBitCount ( global uint) +0:33 'ballot' ( temp 4-component vector of uint) +0:34 subgroupBallotInclusiveBitCount ( global uint) +0:34 'ballot' ( temp 4-component vector of uint) +0:35 subgroupBallotExclusiveBitCount ( global uint) +0:35 'ballot' ( temp 4-component vector of uint) +0:36 subgroupBallotFindLSB ( global uint) +0:36 'ballot' ( temp 4-component vector of uint) +0:37 subgroupBallotFindMSB ( global uint) +0:37 'ballot' ( temp 4-component vector of uint) +0:39 subgroupShuffle ( global 4-component vector of float) +0:39 'f4' ( in 4-component vector of float) +0:39 Constant: +0:39 0 (const uint) +0:40 subgroupShuffleXor ( global 4-component vector of float) +0:40 'f4' ( in 4-component vector of float) +0:40 Constant: +0:40 1 (const uint) +0:41 subgroupShuffleUp ( global 4-component vector of float) +0:41 'f4' ( in 4-component vector of float) +0:41 Constant: +0:41 1 (const uint) +0:42 subgroupShuffleDown ( global 4-component vector of float) +0:42 'f4' ( in 4-component vector of float) +0:42 Constant: +0:42 1 (const uint) +0:44 move second child to first child ( temp 4-component vector of float) +0:44 'result' ( temp 4-component vector of float) +0:44 subgroupAdd ( global 4-component vector of float) +0:44 'f4' ( in 4-component vector of float) +0:45 subgroupMul ( global 4-component vector of float) +0:45 'f4' ( in 4-component vector of float) +0:46 subgroupMin ( global 4-component vector of float) +0:46 'f4' ( in 4-component vector of float) +0:47 subgroupMax ( global 4-component vector of float) +0:47 'f4' ( in 4-component vector of float) +0:48 subgroupAnd ( global 4-component vector of uint) +0:48 'ballot' ( temp 4-component vector of uint) +0:49 subgroupOr ( global 4-component vector of uint) +0:49 'ballot' ( temp 4-component vector of uint) +0:50 subgroupXor ( global 4-component vector of uint) +0:50 'ballot' ( temp 4-component vector of uint) +0:51 subgroupInclusiveAdd ( global 4-component vector of float) +0:51 'f4' ( in 4-component vector of float) +0:52 subgroupInclusiveMul ( global 4-component vector of float) +0:52 'f4' ( in 4-component vector of float) +0:53 subgroupInclusiveMin ( global 4-component vector of float) +0:53 'f4' ( in 4-component vector of float) +0:54 subgroupInclusiveMax ( global 4-component vector of float) +0:54 'f4' ( in 4-component vector of float) +0:55 subgroupInclusiveAnd ( global 4-component vector of uint) +0:55 'ballot' ( temp 4-component vector of uint) +0:56 subgroupInclusiveOr ( global 4-component vector of uint) +0:56 'ballot' ( temp 4-component vector of uint) +0:57 subgroupInclusiveXor ( global 4-component vector of uint) +0:57 'ballot' ( temp 4-component vector of uint) +0:58 subgroupExclusiveAdd ( global 4-component vector of float) +0:58 'f4' ( in 4-component vector of float) +0:59 subgroupExclusiveMul ( global 4-component vector of float) +0:59 'f4' ( in 4-component vector of float) +0:60 subgroupExclusiveMin ( global 4-component vector of float) +0:60 'f4' ( in 4-component vector of float) +0:61 subgroupExclusiveMax ( global 4-component vector of float) +0:61 'f4' ( in 4-component vector of float) +0:62 subgroupExclusiveAnd ( global 4-component vector of uint) +0:62 'ballot' ( temp 4-component vector of uint) +0:63 subgroupExclusiveOr ( global 4-component vector of uint) +0:63 'ballot' ( temp 4-component vector of uint) +0:64 subgroupExclusiveXor ( global 4-component vector of uint) +0:64 'ballot' ( temp 4-component vector of uint) +0:66 subgroupClusteredAdd ( 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 subgroupClusteredMul ( 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 subgroupClusteredMin ( global 4-component vector of float) +0:68 'f4' ( in 4-component vector of float) +0:68 Constant: +0:68 2 (const uint) +0:69 subgroupClusteredMax ( global 4-component vector of float) +0:69 'f4' ( in 4-component vector of float) +0:69 Constant: +0:69 2 (const uint) +0:70 subgroupClusteredAnd ( global 4-component vector of uint) +0:70 'ballot' ( temp 4-component vector of uint) +0:70 Constant: +0:70 2 (const uint) +0:71 subgroupClusteredOr ( global 4-component vector of uint) +0:71 'ballot' ( temp 4-component vector of uint) +0:71 Constant: +0:71 2 (const uint) +0:72 subgroupClusteredXor ( global 4-component vector of uint) +0:72 'ballot' ( temp 4-component vector of uint) +0:72 Constant: +0:72 2 (const uint) +0:74 subgroupQuadBroadcast ( global 4-component vector of float) +0:74 'f4' ( in 4-component vector of float) +0:74 Constant: +0:74 0 (const uint) +0:75 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:75 'f4' ( in 4-component vector of float) +0:76 subgroupQuadSwapVertical ( global 4-component vector of float) +0:76 'f4' ( in 4-component vector of float) +0:77 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:77 'f4' ( in 4-component vector of float) +0:79 Sequence +0:79 move second child to first child ( temp 4-component vector of uint) +0:79 'parti' ( temp 4-component vector of uint) +0:79 subgroupPartitionNV ( global 4-component vector of uint) +0:79 'f4' ( in 4-component vector of float) +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 float) +0:82 'f4' ( in 4-component vector of float) +0:82 'parti' ( temp 4-component vector of uint) +0:83 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:83 'f4' ( in 4-component vector of float) +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 uint) +0:85 'ballot' ( temp 4-component vector of uint) +0:85 'parti' ( temp 4-component vector of uint) +0:86 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:86 'ballot' ( temp 4-component vector of uint) +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 float) +0:89 'f4' ( in 4-component vector of float) +0:89 'parti' ( temp 4-component vector of uint) +0:90 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:90 'f4' ( in 4-component vector of float) +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 uint) +0:92 'ballot' ( temp 4-component vector of uint) +0:92 'parti' ( temp 4-component vector of uint) +0:93 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:93 'ballot' ( temp 4-component vector of uint) +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 float) +0:96 'f4' ( in 4-component vector of float) +0:96 'parti' ( temp 4-component vector of uint) +0:97 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:97 'f4' ( in 4-component vector of float) +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:99 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:99 'ballot' ( temp 4-component vector of uint) +0:99 'parti' ( temp 4-component vector of uint) +0:100 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:100 'ballot' ( temp 4-component vector of uint) +0:100 'parti' ( temp 4-component vector of uint) +0:102 Branch: Return with expression +0:102 'result' ( temp 4-component vector of float) +0:109 Function Definition: main( ( global void) +0:109 Function Parameters: +0:111 Sequence +0:111 Sequence +0:111 move second child to first child ( temp 3-component vector of uint) +0:111 'v0' ( temp 3-component vector of uint) +0:111 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) +0:112 Sequence +0:112 move second child to first child ( temp 3-component vector of uint) +0:112 'v1' ( temp 3-component vector of uint) +0:112 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) +0:113 Sequence +0:113 move second child to first child ( temp 3-component vector of float) +0:113 'v2' ( temp 3-component vector of float) +0:113 'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV) +0:114 Sequence +0:114 move second child to first child ( temp 3-component vector of float) +0:114 'v3' ( temp 3-component vector of float) +0:114 'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV) +0:115 Sequence +0:115 move second child to first child ( temp 3-component vector of float) +0:115 'v4' ( temp 3-component vector of float) +0:115 'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV) +0:116 Sequence +0:116 move second child to first child ( temp 3-component vector of float) +0:116 'v5' ( temp 3-component vector of float) +0:116 'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV) +0:117 Sequence +0:117 move second child to first child ( temp float) +0:117 'v6' ( temp float) +0:117 'gl_RayTminNV' ( in float ObjectRayTminNV) +0:118 Sequence +0:118 move second child to first child ( temp float) +0:118 'v7' ( temp float) +0:118 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) +0:119 traceNV ( global void) +0:119 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) +0:119 Constant: +0:119 0 (const uint) +0:119 Constant: +0:119 1 (const uint) +0:119 Constant: +0:119 2 (const uint) +0:119 Constant: +0:119 3 (const uint) +0:119 Constant: +0:119 0 (const uint) +0:119 Constant: +0:119 0.500000 +0:119 0.500000 +0:119 0.500000 +0:119 Constant: +0:119 0.500000 +0:119 Constant: +0:119 1.000000 +0:119 1.000000 +0:119 1.000000 +0:119 Constant: +0:119 0.750000 +0:119 Constant: +0:119 1 (const int) +0:123 Function Definition: basic_works( ( global void) +0:123 Function Parameters: +0:125 Sequence +0:125 'gl_SubgroupSize' ( temp float) +0:126 'gl_SubgroupInvocationID' ( temp float) +0:127 subgroupBarrier ( global void) +0:128 subgroupMemoryBarrier ( global void) +0:129 subgroupMemoryBarrierBuffer ( global void) +0:130 subgroupMemoryBarrierImage ( global void) +0:131 subgroupElect ( global bool) +0:135 Function Definition: ballot_works(vf4; ( global void) +0:135 Function Parameters: +0:135 'f4' ( in 4-component vector of float) +0:136 Sequence +0:136 'gl_SubgroupEqMask' ( temp float) +0:137 'gl_SubgroupGeMask' ( temp float) +0:138 'gl_SubgroupGtMask' ( temp float) +0:139 'gl_SubgroupLeMask' ( temp float) +0:140 'gl_SubgroupLtMask' ( temp float) +0:141 subgroupBroadcast ( global 4-component vector of float) +0:141 'f4' ( in 4-component vector of float) +0:141 Constant: +0:141 0 (const uint) +0:142 subgroupBroadcastFirst ( global 4-component vector of float) +0:142 'f4' ( in 4-component vector of float) +0:143 Sequence +0:143 move second child to first child ( temp 4-component vector of uint) +0:143 'ballot' ( temp 4-component vector of uint) +0:143 subgroupBallot ( global 4-component vector of uint) +0:143 Constant: +0:143 false (const bool) +0:144 subgroupInverseBallot ( global bool) +0:144 Constant: +0:144 1 (const uint) +0:144 1 (const uint) +0:144 1 (const uint) +0:144 1 (const uint) +0:145 subgroupBallotBitExtract ( global bool) +0:145 'ballot' ( temp 4-component vector of uint) +0:145 Constant: +0:145 0 (const uint) +0:146 subgroupBallotBitCount ( global uint) +0:146 'ballot' ( temp 4-component vector of uint) +0:147 subgroupBallotInclusiveBitCount ( global uint) +0:147 'ballot' ( temp 4-component vector of uint) +0:148 subgroupBallotExclusiveBitCount ( global uint) +0:148 'ballot' ( temp 4-component vector of uint) +0:149 subgroupBallotFindLSB ( global uint) +0:149 'ballot' ( temp 4-component vector of uint) +0:150 subgroupBallotFindMSB ( global uint) +0:150 'ballot' ( temp 4-component vector of uint) +0:154 Function Definition: vote_works(vf4; ( global void) +0:154 Function Parameters: +0:154 'f4' ( in 4-component vector of float) +0:156 Sequence +0:156 subgroupAll ( global bool) +0:156 Constant: +0:156 true (const bool) +0:157 subgroupAny ( global bool) +0:157 Constant: +0:157 false (const bool) +0:158 subgroupAllEqual ( global bool) +0:158 'f4' ( in 4-component vector of float) +0:163 Function Definition: shuffle_works(vf4; ( global void) +0:163 Function Parameters: +0:163 'f4' ( in 4-component vector of float) +0:165 Sequence +0:165 subgroupShuffle ( global 4-component vector of float) +0:165 'f4' ( in 4-component vector of float) +0:165 Constant: +0:165 0 (const uint) +0:166 subgroupShuffleXor ( global 4-component vector of float) +0:166 'f4' ( in 4-component vector of float) +0:166 Constant: +0:166 1 (const uint) +0:167 subgroupShuffleUp ( global 4-component vector of float) +0:167 'f4' ( in 4-component vector of float) +0:167 Constant: +0:167 1 (const uint) +0:168 subgroupShuffleDown ( global 4-component vector of float) +0:168 'f4' ( in 4-component vector of float) +0:168 Constant: +0:168 1 (const uint) +0:172 Function Definition: arith_works(vf4; ( global void) +0:172 Function Parameters: +0:172 'f4' ( in 4-component vector of float) +0:? Sequence +0:175 subgroupAdd ( global 4-component vector of float) +0:175 'f4' ( in 4-component vector of float) +0:176 subgroupMul ( global 4-component vector of float) +0:176 'f4' ( in 4-component vector of float) +0:177 subgroupMin ( global 4-component vector of float) +0:177 'f4' ( in 4-component vector of float) +0:178 subgroupMax ( global 4-component vector of float) +0:178 'f4' ( in 4-component vector of float) +0:179 subgroupAnd ( global 4-component vector of uint) +0:179 'ballot' ( temp 4-component vector of uint) +0:180 subgroupOr ( global 4-component vector of uint) +0:180 'ballot' ( temp 4-component vector of uint) +0:181 subgroupXor ( global 4-component vector of uint) +0:181 'ballot' ( temp 4-component vector of uint) +0:182 subgroupInclusiveAdd ( global 4-component vector of float) +0:182 'f4' ( in 4-component vector of float) +0:183 subgroupInclusiveMul ( global 4-component vector of float) +0:183 'f4' ( in 4-component vector of float) +0:184 subgroupInclusiveMin ( global 4-component vector of float) +0:184 'f4' ( in 4-component vector of float) +0:185 subgroupInclusiveMax ( global 4-component vector of float) +0:185 'f4' ( in 4-component vector of float) +0:186 subgroupInclusiveAnd ( global 4-component vector of uint) +0:186 'ballot' ( temp 4-component vector of uint) +0:187 subgroupInclusiveOr ( global 4-component vector of uint) +0:187 'ballot' ( temp 4-component vector of uint) +0:188 subgroupInclusiveXor ( global 4-component vector of uint) +0:188 'ballot' ( temp 4-component vector of uint) +0:189 subgroupExclusiveAdd ( global 4-component vector of float) +0:189 'f4' ( in 4-component vector of float) +0:190 subgroupExclusiveMul ( global 4-component vector of float) +0:190 'f4' ( in 4-component vector of float) +0:191 subgroupExclusiveMin ( global 4-component vector of float) +0:191 'f4' ( in 4-component vector of float) +0:192 subgroupExclusiveMax ( global 4-component vector of float) +0:192 'f4' ( in 4-component vector of float) +0:193 subgroupExclusiveAnd ( global 4-component vector of uint) +0:193 'ballot' ( temp 4-component vector of uint) +0:194 subgroupExclusiveOr ( global 4-component vector of uint) +0:194 'ballot' ( temp 4-component vector of uint) +0:195 subgroupExclusiveXor ( global 4-component vector of uint) +0:195 'ballot' ( temp 4-component vector of uint) +0:199 Function Definition: clustered_works(vf4; ( global void) +0:199 Function Parameters: +0:199 'f4' ( in 4-component vector of float) +0:201 Sequence +0:201 Sequence +0:201 move second child to first child ( temp 4-component vector of uint) +0:201 'ballot' ( temp 4-component vector of uint) +0:201 Constant: +0:201 85 (const uint) +0:201 0 (const uint) +0:201 0 (const uint) +0:201 0 (const uint) +0:202 subgroupClusteredAdd ( global 4-component vector of float) +0:202 'f4' ( in 4-component vector of float) +0:202 Constant: +0:202 2 (const uint) +0:203 subgroupClusteredMul ( global 4-component vector of float) +0:203 'f4' ( in 4-component vector of float) +0:203 Constant: +0:203 2 (const uint) +0:204 subgroupClusteredMin ( global 4-component vector of float) +0:204 'f4' ( in 4-component vector of float) +0:204 Constant: +0:204 2 (const uint) +0:205 subgroupClusteredMax ( global 4-component vector of float) +0:205 'f4' ( in 4-component vector of float) +0:205 Constant: +0:205 2 (const uint) +0:206 subgroupClusteredAnd ( global 4-component vector of uint) +0:206 'ballot' ( temp 4-component vector of uint) +0:206 Constant: +0:206 2 (const uint) +0:207 subgroupClusteredOr ( global 4-component vector of uint) +0:207 'ballot' ( temp 4-component vector of uint) +0:207 Constant: +0:207 2 (const uint) +0:208 subgroupClusteredXor ( global 4-component vector of uint) +0:208 'ballot' ( temp 4-component vector of uint) +0:208 Constant: +0:208 2 (const uint) +0:212 Function Definition: quad_works(vf4; ( global void) +0:212 Function Parameters: +0:212 'f4' ( in 4-component vector of float) +0:214 Sequence +0:214 subgroupQuadBroadcast ( global 4-component vector of float) +0:214 'f4' ( in 4-component vector of float) +0:214 Constant: +0:214 0 (const uint) +0:215 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:215 'f4' ( in 4-component vector of float) +0:216 subgroupQuadSwapVertical ( global 4-component vector of float) +0:216 'f4' ( in 4-component vector of float) +0:217 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:217 'f4' ( in 4-component vector of float) +0:221 Function Definition: partitioned_works(vf4; ( global void) +0:221 Function Parameters: +0:221 'f4' ( in 4-component vector of float) +0:223 Sequence +0:223 Sequence +0:223 move second child to first child ( temp 4-component vector of uint) +0:223 'parti' ( temp 4-component vector of uint) +0:223 subgroupPartitionNV ( global 4-component vector of uint) +0:223 'f4' ( in 4-component vector of float) +0:224 Sequence +0:224 move second child to first child ( temp 4-component vector of uint) +0:224 'ballot' ( temp 4-component vector of uint) +0:224 Constant: +0:224 85 (const uint) +0:224 0 (const uint) +0:224 0 (const uint) +0:224 0 (const 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: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 float) +0:234 'f4' ( in 4-component vector of float) +0:234 'parti' ( temp 4-component vector of uint) +0:235 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:235 'f4' ( in 4-component vector of float) +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:237 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:237 'ballot' ( temp 4-component vector of uint) +0:237 'parti' ( temp 4-component vector of uint) +0:238 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:238 'ballot' ( temp 4-component vector of uint) +0:238 'parti' ( temp 4-component vector of uint) +0:239 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:239 'f4' ( in 4-component vector of float) +0:239 'parti' ( temp 4-component vector of uint) +0:240 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:240 'f4' ( in 4-component vector of float) +0:240 'parti' ( temp 4-component vector of uint) +0:241 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:241 'f4' ( in 4-component vector of float) +0:241 'parti' ( temp 4-component vector of uint) +0:242 ERROR: Bad aggregation op + ( global 4-component vector of float) +0:242 'f4' ( in 4-component vector of float) +0:242 'parti' ( temp 4-component vector of uint) +0:243 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:243 'ballot' ( temp 4-component vector of uint) +0:243 'parti' ( temp 4-component vector of uint) +0:244 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:244 'ballot' ( temp 4-component vector of uint) +0:244 'parti' ( temp 4-component vector of uint) +0:245 ERROR: Bad aggregation op + ( global 4-component vector of uint) +0:245 'ballot' ( temp 4-component vector of uint) +0:245 'parti' ( temp 4-component vector of uint) +0:? Linker Objects +0:? 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) +0:? 'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float) +0:? 'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float) + + +Linked miss stage: + + +Shader version: 460 +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_ray_tracing +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 Sequence +0:111 move second child to first child ( temp 3-component vector of uint) +0:111 'v0' ( temp 3-component vector of uint) +0:111 'gl_LaunchIDNV' ( in 3-component vector of uint LaunchIdNV) +0:112 Sequence +0:112 move second child to first child ( temp 3-component vector of uint) +0:112 'v1' ( temp 3-component vector of uint) +0:112 'gl_LaunchSizeNV' ( in 3-component vector of uint LaunchSizeNV) +0:113 Sequence +0:113 move second child to first child ( temp 3-component vector of float) +0:113 'v2' ( temp 3-component vector of float) +0:113 'gl_WorldRayOriginNV' ( in 3-component vector of float WorldRayOriginNV) +0:114 Sequence +0:114 move second child to first child ( temp 3-component vector of float) +0:114 'v3' ( temp 3-component vector of float) +0:114 'gl_WorldRayDirectionNV' ( in 3-component vector of float WorldRayDirectionNV) +0:115 Sequence +0:115 move second child to first child ( temp 3-component vector of float) +0:115 'v4' ( temp 3-component vector of float) +0:115 'gl_ObjectRayOriginNV' ( in 3-component vector of float ObjectRayOriginNV) +0:116 Sequence +0:116 move second child to first child ( temp 3-component vector of float) +0:116 'v5' ( temp 3-component vector of float) +0:116 'gl_ObjectRayDirectionNV' ( in 3-component vector of float ObjectRayDirectionNV) +0:117 Sequence +0:117 move second child to first child ( temp float) +0:117 'v6' ( temp float) +0:117 'gl_RayTminNV' ( in float ObjectRayTminNV) +0:118 Sequence +0:118 move second child to first child ( temp float) +0:118 'v7' ( temp float) +0:118 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) +0:119 traceNV ( global void) +0:119 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) +0:119 Constant: +0:119 0 (const uint) +0:119 Constant: +0:119 1 (const uint) +0:119 Constant: +0:119 2 (const uint) +0:119 Constant: +0:119 3 (const uint) +0:119 Constant: +0:119 0 (const uint) +0:119 Constant: +0:119 0.500000 +0:119 0.500000 +0:119 0.500000 +0:119 Constant: +0:119 0.500000 +0:119 Constant: +0:119 1.000000 +0:119 1.000000 +0:119 1.000000 +0:119 Constant: +0:119 0.750000 +0:119 Constant: +0:119 1 (const int) +0:? Linker Objects +0:? 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) +0:? 'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float) +0:? 'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float) + diff --git a/Test/glsl.460.subgroup.rahit b/Test/glsl.460.subgroup.rahit new file mode 100644 index 00000000..3ee73785 --- /dev/null +++ b/Test/glsl.460.subgroup.rahit @@ -0,0 +1,255 @@ +#version 460 +#extension GL_NV_ray_tracing : enable + +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; +} + + +layout(location = 1) rayPayloadInNV vec4 incomingPayload; +void main() +{ + uvec3 v0 = gl_LaunchIDNV; + uvec3 v1 = gl_LaunchSizeNV; + int v2 = gl_PrimitiveID; + int v3 = gl_InstanceID; + int v4 = gl_InstanceCustomIndexNV; + vec3 v5 = gl_WorldRayOriginNV; + vec3 v6 = gl_WorldRayDirectionNV; + vec3 v7 = gl_ObjectRayOriginNV; + vec3 v8 = gl_ObjectRayDirectionNV; + float v9 = gl_RayTminNV; + float v10 = gl_RayTmaxNV; + float v11 = gl_HitTNV; + uint v12 = gl_HitKindNV; + mat4x3 v13 = gl_ObjectToWorldNV; + mat4x3 v14 = gl_WorldToObjectNV; + incomingPayload = vec4(0.5f); + if (v2 == 1) + ignoreIntersectionNV(); + else + terminateRayNV(); +} + +#extension GL_KHR_shader_subgroup_basic: enable +void basic_works (void) +{ + gl_SubgroupSize; + gl_SubgroupInvocationID; + 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.460.subgroup.rcall b/Test/glsl.460.subgroup.rcall new file mode 100644 index 00000000..dc7ad2e6 --- /dev/null +++ b/Test/glsl.460.subgroup.rcall @@ -0,0 +1,243 @@ +#version 460 +#extension GL_NV_ray_tracing : enable + +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; +} + + +layout(location = 0) callableDataNV vec4 data0; +layout(location = 1) callableDataInNV dataBlock { + uint data1; +}; +void main() +{ + uvec3 id = gl_LaunchIDNV; + uvec3 size = gl_LaunchSizeNV; + data1 = 256U; + executeCallableNV(2,1); +} + + +#extension GL_KHR_shader_subgroup_basic: enable +void basic_works (void) +{ + gl_SubgroupSize; + gl_SubgroupInvocationID; + 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.460.subgroup.rchit b/Test/glsl.460.subgroup.rchit new file mode 100644 index 00000000..cbe3517a --- /dev/null +++ b/Test/glsl.460.subgroup.rchit @@ -0,0 +1,253 @@ +#version 460 +#extension GL_NV_ray_tracing : enable + +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; +} + + +layout(binding = 0, set = 0) uniform accelerationStructureNV accNV; +layout(location = 0) rayPayloadNV vec4 localPayload; +layout(location = 1) rayPayloadInNV vec4 incomingPayload; +void main() +{ + uvec3 v0 = gl_LaunchIDNV; + uvec3 v1 = gl_LaunchSizeNV; + int v2 = gl_PrimitiveID; + int v3 = gl_InstanceID; + int v4 = gl_InstanceCustomIndexNV; + vec3 v5 = gl_WorldRayOriginNV; + vec3 v6 = gl_WorldRayDirectionNV; + vec3 v7 = gl_ObjectRayOriginNV; + vec3 v8 = gl_ObjectRayDirectionNV; + float v9 = gl_RayTminNV; + float v10 = gl_RayTmaxNV; + float v11 = gl_HitTNV; + uint v12 = gl_HitKindNV; + mat4x3 v13 = gl_ObjectToWorldNV; + mat4x3 v14 = gl_WorldToObjectNV; + traceNV(accNV, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1); +} + +#extension GL_KHR_shader_subgroup_basic: enable +void basic_works (void) +{ + gl_SubgroupSize; + gl_SubgroupInvocationID; + 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.460.subgroup.rgen b/Test/glsl.460.subgroup.rgen new file mode 100644 index 00000000..9184e15f --- /dev/null +++ b/Test/glsl.460.subgroup.rgen @@ -0,0 +1,247 @@ +#version 460 +#extension GL_NV_ray_tracing : enable + +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; +} + +layout(binding = 0, set = 0) uniform accelerationStructureNV accNV0; +layout(binding = 1, set = 0) uniform accelerationStructureNV accNV1; // Unused +layout(location = 0) rayPayloadNV vec4 payload; +layout(shaderRecordNV) buffer block +{ + vec3 dir; + vec3 origin; + +}; +void main() +{ + uint lx = gl_LaunchIDNV.x; + uint ly = gl_LaunchIDNV.y; + uint sx = gl_LaunchSizeNV.x; + uint sy = gl_LaunchSizeNV.y; + traceNV(accNV0, lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); +} + +#extension GL_KHR_shader_subgroup_basic: enable +void basic_works (void) +{ + gl_SubgroupSize; + gl_SubgroupInvocationID; + 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.460.subgroup.rint b/Test/glsl.460.subgroup.rint new file mode 100644 index 00000000..7a58804a --- /dev/null +++ b/Test/glsl.460.subgroup.rint @@ -0,0 +1,253 @@ +#version 460 +#extension GL_NV_ray_tracing : enable + + +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; +} + + + +hitAttributeNV vec4 iAttr; +void main() +{ + uvec3 v0 = gl_LaunchIDNV; + uvec3 v1 = gl_LaunchSizeNV; + int v2 = gl_PrimitiveID; + int v3 = gl_InstanceID; + int v4 = gl_InstanceCustomIndexNV; + vec3 v5 = gl_WorldRayOriginNV; + vec3 v6 = gl_WorldRayDirectionNV; + vec3 v7 = gl_ObjectRayOriginNV; + vec3 v8 = gl_ObjectRayDirectionNV; + float v9 = gl_RayTminNV; + float v10 = gl_RayTmaxNV; + mat4x3 v11 = gl_ObjectToWorldNV; + mat4x3 v12 = gl_WorldToObjectNV; + iAttr = vec4(0.5f,0.5f,0.0f,1.0f); + reportIntersectionNV(0.5, 1U); +} + + +#extension GL_KHR_shader_subgroup_basic: enable +void basic_works (void) +{ + gl_SubgroupSize; + gl_SubgroupInvocationID; + 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.460.subgroup.rmiss b/Test/glsl.460.subgroup.rmiss new file mode 100644 index 00000000..4d629d67 --- /dev/null +++ b/Test/glsl.460.subgroup.rmiss @@ -0,0 +1,247 @@ +#version 460 +#extension GL_NV_ray_tracing : enable + + +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; +} + + +layout(binding = 0, set = 0) uniform accelerationStructureNV accNV; +layout(location = 0) rayPayloadNV vec4 localPayload; +layout(location = 1) rayPayloadInNV vec4 incomingPayload; +void main() +{ + uvec3 v0 = gl_LaunchIDNV; + uvec3 v1 = gl_LaunchSizeNV; + vec3 v2 = gl_WorldRayOriginNV; + vec3 v3 = gl_WorldRayDirectionNV; + vec3 v4 = gl_ObjectRayOriginNV; + vec3 v5 = gl_ObjectRayDirectionNV; + float v6 = gl_RayTminNV; + float v7 = gl_RayTmaxNV; + traceNV(accNV, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1); +} + +#extension GL_KHR_shader_subgroup_basic: enable +void basic_works (void) +{ + gl_SubgroupSize; + gl_SubgroupInvocationID; + 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/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index 5e79144c..b24a4a16 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -255,6 +255,12 @@ INSTANTIATE_TEST_CASE_P( "glsl.450.subgroupVote.comp", "glsl.460.subgroup.mesh", "glsl.460.subgroup.task", + "glsl.460.subgroup.rahit", + "glsl.460.subgroup.rcall", + "glsl.460.subgroup.rchit", + "glsl.460.subgroup.rgen", + "glsl.460.subgroup.rint", + "glsl.460.subgroup.rmiss", "glsl.es320.subgroup.frag", "glsl.es320.subgroup.geom", "glsl.es320.subgroup.tesc",