summaryrefslogtreecommitdiff
path: root/source/slang
diff options
context:
space:
mode:
authorEllie Hermaszewska <ellieh@nvidia.com>2023-10-27 06:03:34 +0800
committerGitHub <noreply@github.com>2023-10-26 15:03:34 -0700
commit41e17d370d67a584fbac9bbbe435c057c18715f4 (patch)
tree7d262d4734186fda93ea32ab9f1a7c31b7ef2e1c /source/slang
parentbee74b16eafa64ccc33bb386a1dc753cd6c41a82 (diff)
Make the exponent return value from frexp int (#3284)
* Make the exponent return value from frexp int Fixes https://github.com/shader-slang/slang/issues/3282 * Update slang-llvm. --------- Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang')
-rw-r--r--source/slang/hlsl.meta.slang8
1 files changed, 5 insertions, 3 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang
index 1d5c68a0d..92ccbe9c5 100644
--- a/source/slang/hlsl.meta.slang
+++ b/source/slang/hlsl.meta.slang
@@ -2888,18 +2888,20 @@ matrix<T, N, M> frac(matrix<T, N, M> x)
// Split float into mantissa and exponent
__generic<T : __BuiltinFloatingPointType>
+__target_intrinsic(cpp, "$P_frexp($0, $1)")
+__target_intrinsic(cuda, "$P_frexp($0, $1)")
__target_intrinsic(hlsl)
__target_intrinsic(glsl)
__target_intrinsic(spirv, "OpExtInst resultType resultId glsl450 Frexp _0 _1")
[__readNone]
-T frexp(T x, out T exp);
+T frexp(T x, out int exp);
__generic<T : __BuiltinFloatingPointType, let N : int>
__target_intrinsic(hlsl)
__target_intrinsic(glsl)
__target_intrinsic(spirv, "OpExtInst resultType resultId glsl450 Frexp _0 _1")
[__readNone]
-vector<T, N> frexp(vector<T, N> x, out vector<T, N> exp)
+vector<T, N> frexp(vector<T, N> x, out vector<int, N> exp)
{
VECTOR_MAP_BINARY(T, N, frexp, x, exp);
}
@@ -2907,7 +2909,7 @@ vector<T, N> frexp(vector<T, N> x, out vector<T, N> exp)
__generic<T : __BuiltinFloatingPointType, let N : int, let M : int, let L : int>
__target_intrinsic(hlsl)
[__readNone]
-matrix<T, N, M> frexp(matrix<T, N, M> x, out matrix<T, N, M, L> exp)
+matrix<T, N, M> frexp(matrix<T, N, M> x, out matrix<int, N, M, L> exp)
{
MATRIX_MAP_BINARY(T, N, M, frexp, x, exp);
}