summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/slang/hlsl.meta.slang29
1 files changed, 27 insertions, 2 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang
index 55c66ffc0..67f44cdac 100644
--- a/source/slang/hlsl.meta.slang
+++ b/source/slang/hlsl.meta.slang
@@ -1156,6 +1156,7 @@ matrix<T,N,M> exp2(matrix<T,N,M> x)
MATRIX_MAP_UNARY(T, N, M, exp2, x);
}
+
// Convert 16-bit float stored in low bits of integer
__target_intrinsic(glsl, "unpackHalf2x16($0).x")
__glsl_version(420)
@@ -2489,8 +2490,18 @@ matrix<T, N, M> trunc(matrix<T, N, M> x)
typedef uint WaveMask;
+__glsl_extension(GL_KHR_shader_subgroup_ballot)
+__spirv_version(1.3)
+__target_intrinsic(glsl, "subgroupBallot(true).x")
__target_intrinsic(cuda, "__activemask()")
-WaveMask WaveGetConvergedMask() { return 0xffffffff; }
+__target_intrinsic(hlsl, "WaveActiveBallot(true).x")
+WaveMask WaveGetConvergedMask();
+
+__glsl_extension(GL_KHR_shader_subgroup_ballot)
+__spirv_version(1.3)
+__target_intrinsic(glsl, "subgroupBallot(true).x")
+__target_intrinsic(hlsl, "WaveActiveBallot(true).x")
+WaveMask WaveGetActiveMask();
__glsl_extension(GL_KHR_shader_subgroup_basic)
__spirv_version(1.3)
@@ -3267,6 +3278,20 @@ __target_intrinsic(glsl, "subgroupBallotExclusiveBitCount(subgroupBallot($0))")
__target_intrinsic(cuda, "__popc(__ballot_sync(__activemask(), $0) & _getLaneLtMask())")
uint WavePrefixCountBits(bool value);
+
+__glsl_extension(GL_KHR_shader_subgroup_ballot)
+__spirv_version(1.3)
+__target_intrinsic(glsl, "subgroupBallot(true)")
+__target_intrinsic(cuda, "make_uint4(__activemask(), 0, 0, 0)")
+__target_intrinsic(hlsl, "WaveActiveBallot(true)")
+uint4 WaveGetConvergedMulti();
+
+__glsl_extension(GL_KHR_shader_subgroup_ballot)
+__spirv_version(1.3)
+__target_intrinsic(glsl, "subgroupBallot(true)")
+__target_intrinsic(hlsl, "WaveActiveBallot(true)")
+uint4 WaveGetActiveMulti();
+
// Shader model 6.5 stuff
// https://github.com/microsoft/DirectX-Specs/blob/master/d3d/HLSL_ShaderModel6_5.md
@@ -3294,7 +3319,7 @@ __generic<T : __BuiltinArithmeticType>
__target_intrinsic(hlsl)
__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
__spirv_version(1.3)
-//__target_intrinsic(glsl, "subgroupExclusiveAnd($0)")
+__target_intrinsic(glsl, "subgroupExclusiveAnd($0)")
__target_intrinsic(cuda, "_wavePrefixAnd(_getMultiPrefixMask(($1).x), $0)")
T WaveMultiPrefixBitAnd(T expr, uint4 mask);
__target_intrinsic(hlsl)