summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/glslang/Test/glsl.460.subgroup.rint
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/3rdparty/glslang/Test/glsl.460.subgroup.rint')
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/glsl.460.subgroup.rint273
1 files changed, 273 insertions, 0 deletions
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/glsl.460.subgroup.rint b/3rdparty/bgfx/3rdparty/glslang/Test/glsl.460.subgroup.rint
new file mode 100644
index 00000000000..1909c5af3b0
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/glsl.460.subgroup.rint
@@ -0,0 +1,273 @@
+#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);
+}
+
+// tests for NV_shader_sm_builtins
+void sm_builtins_err()
+{
+ gl_WarpsPerSMNV; // ERROR, no extension
+ gl_SMCountNV; // ERROR, no extension
+ gl_WarpIDNV; // ERROR, no extension
+ gl_SMIDNV; // ERROR, no extension
+}
+
+#ifdef GL_NV_shader_sm_builtins
+#extension GL_NV_shader_sm_builtins : enable
+#endif
+
+void sm_builtins()
+{
+ gl_WarpsPerSMNV;
+ gl_SMCountNV;
+ gl_WarpIDNV;
+ gl_SMIDNV;
+}