summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbprb <58124331+bprb@users.noreply.github.com>2024-11-20 14:52:34 -0800
committerGitHub <noreply@github.com>2024-11-20 14:52:34 -0800
commit4f6b928f54d2cc7f1fb6f40c16be7754b2ddcdc6 (patch)
treef9e885b0a79f8f3b398c691eb4855da670119438
parent54ec7553c20673c541298ac39b95ccd25542aa7a (diff)
Add Matrix overload for exp10() core lib function (#5620)
Fixes #5579
-rw-r--r--source/slang/hlsl.meta.slang12
-rw-r--r--tests/hlsl-intrinsic/matrix-double.slang1
-rw-r--r--tests/hlsl-intrinsic/matrix-double.slang.expected.txt8
-rw-r--r--tests/hlsl-intrinsic/matrix-float.slang1
-rw-r--r--tests/hlsl-intrinsic/matrix-float.slang.expected.txt8
5 files changed, 22 insertions, 8 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang
index 256f65224..7eb4af135 100644
--- a/source/slang/hlsl.meta.slang
+++ b/source/slang/hlsl.meta.slang
@@ -8245,6 +8245,18 @@ vector<T,N> exp10(vector<T,N> x)
}
}
+__generic<T : __BuiltinFloatingPointType, let N : int, let M : int>
+[__readNone]
+[require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, sm_4_0_version)]
+matrix<T,N,M> exp10(matrix<T,N,M> x)
+{
+ __target_switch
+ {
+ default:
+ MATRIX_MAP_UNARY(T, N, M, exp10, x);
+ }
+}
+
/// Convert 16-bit float stored in low bits of integer
/// @category conversion Conversion functions
diff --git a/tests/hlsl-intrinsic/matrix-double.slang b/tests/hlsl-intrinsic/matrix-double.slang
index 6df89bb40..a21574855 100644
--- a/tests/hlsl-intrinsic/matrix-double.slang
+++ b/tests/hlsl-intrinsic/matrix-double.slang
@@ -91,6 +91,7 @@ void test1(inout FloatMatrix ft, inout FloatMatrix f, int idx)
ft += exp2(f);
ft += exp(f);
+ ft += exp10(f);
ft += frac(f * makeFloatMatrix(3));
ft += ceil(f * makeFloatMatrix(5) - makeFloatMatrix(3));
diff --git a/tests/hlsl-intrinsic/matrix-double.slang.expected.txt b/tests/hlsl-intrinsic/matrix-double.slang.expected.txt
index 0067ec549..0f4ef5262 100644
--- a/tests/hlsl-intrinsic/matrix-double.slang.expected.txt
+++ b/tests/hlsl-intrinsic/matrix-double.slang.expected.txt
@@ -1,5 +1,5 @@
type: double
--363.570686
--128.281824
-134.883405
-383.294965
+-359.422651
+-120.905458
+148.000645
+406.621082
diff --git a/tests/hlsl-intrinsic/matrix-float.slang b/tests/hlsl-intrinsic/matrix-float.slang
index f61097a0c..4cd35bc65 100644
--- a/tests/hlsl-intrinsic/matrix-float.slang
+++ b/tests/hlsl-intrinsic/matrix-float.slang
@@ -96,6 +96,7 @@ void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
ft += exp2(f);
ft += exp(f);
+ ft += exp10(f);
ft += frac(f * makeFloatMatrix(3));
ft += ceil(f * makeFloatMatrix(5) - makeFloatMatrix(3));
diff --git a/tests/hlsl-intrinsic/matrix-float.slang.expected.txt b/tests/hlsl-intrinsic/matrix-float.slang.expected.txt
index d7c998048..06f7b94a8 100644
--- a/tests/hlsl-intrinsic/matrix-float.slang.expected.txt
+++ b/tests/hlsl-intrinsic/matrix-float.slang.expected.txt
@@ -1,5 +1,5 @@
type: float
--916.058716
--315.978027
-358.120331
-1035.545532
+-905.656372
+-297.479736
+391.015503
+1094.042358