summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2020-02-12 10:44:07 -0500
committerGitHub <noreply@github.com>2020-02-12 10:44:07 -0500
commite1e7a6eec04ee1d04dc7e0d0212208d4c7a9592b (patch)
tree18543abbb95cb93accedf4b0ecc894b6a363f11b /tests
parentfe9d27af9de047ea75db1334c961bb025fb732f6 (diff)
Support for isinf/isfinite/isnan/ldexp (#1219)
* Added support ldexp. * Added classify-float.slang test Fixed glsl output. * Added classify-double.slang * Added ldexp test to scalar-double.slang * isnan, isinf, isfinite are macros (on some targets) so remove :: prefix.
Diffstat (limited to 'tests')
-rw-r--r--tests/hlsl-intrinsic/classify-double.slang31
-rw-r--r--tests/hlsl-intrinsic/classify-double.slang.expected.txt4
-rw-r--r--tests/hlsl-intrinsic/classify-float.slang28
-rw-r--r--tests/hlsl-intrinsic/classify-float.slang.expected.txt4
-rw-r--r--tests/hlsl-intrinsic/scalar-double.slang2
-rw-r--r--tests/hlsl-intrinsic/scalar-double.slang.expected.txt8
-rw-r--r--tests/hlsl-intrinsic/scalar-float.slang6
-rw-r--r--tests/hlsl-intrinsic/scalar-float.slang.expected.txt8
8 files changed, 81 insertions, 10 deletions
diff --git a/tests/hlsl-intrinsic/classify-double.slang b/tests/hlsl-intrinsic/classify-double.slang
new file mode 100644
index 000000000..ba7f2cbf9
--- /dev/null
+++ b/tests/hlsl-intrinsic/classify-double.slang
@@ -0,0 +1,31 @@
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute
+
+// inf, -inf, nan, finite
+//TEST_INPUT:ubuffer(data=[ 0 0x7ff00000 0 0xfff00000 0xffffffff 0x7fffffff 1 0], stride=4):name inputBuffer
+RWStructuredBuffer<uint> inputBuffer;
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
+{
+ int idx = int(dispatchThreadID.x);
+
+ uint low = inputBuffer[idx * 2 + 0];
+ uint high = inputBuffer[idx * 2 + 1];
+
+ double v = asdouble(low, high);
+
+ int flags = 0;
+
+ flags |= isnan(v) ? 1 : 0;
+ flags |= isfinite(v) ? 2 : 0;
+ flags |= isinf(v) ? 4 : 0;
+
+ outputBuffer[idx] = flags;
+} \ No newline at end of file
diff --git a/tests/hlsl-intrinsic/classify-double.slang.expected.txt b/tests/hlsl-intrinsic/classify-double.slang.expected.txt
new file mode 100644
index 000000000..1688f7508
--- /dev/null
+++ b/tests/hlsl-intrinsic/classify-double.slang.expected.txt
@@ -0,0 +1,4 @@
+4
+4
+1
+2
diff --git a/tests/hlsl-intrinsic/classify-float.slang b/tests/hlsl-intrinsic/classify-float.slang
new file mode 100644
index 000000000..1b23dc748
--- /dev/null
+++ b/tests/hlsl-intrinsic/classify-float.slang
@@ -0,0 +1,28 @@
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute
+
+// inf, -inf, nan, finite
+//TEST_INPUT:ubuffer(data=[ 0x7f800000 0xff800000 0x7fffffff 1 ], stride=4):name inputBuffer
+RWStructuredBuffer<float> inputBuffer;
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
+{
+ int idx = int(dispatchThreadID.x);
+
+ float v = inputBuffer[idx];
+
+ int flags = 0;
+
+ flags |= isnan(v) ? 1 : 0;
+ flags |= isfinite(v) ? 2 : 0;
+ flags |= isinf(v) ? 4 : 0;
+
+ outputBuffer[idx] = flags;
+} \ No newline at end of file
diff --git a/tests/hlsl-intrinsic/classify-float.slang.expected.txt b/tests/hlsl-intrinsic/classify-float.slang.expected.txt
new file mode 100644
index 000000000..1688f7508
--- /dev/null
+++ b/tests/hlsl-intrinsic/classify-float.slang.expected.txt
@@ -0,0 +1,4 @@
+4
+4
+1
+2
diff --git a/tests/hlsl-intrinsic/scalar-double.slang b/tests/hlsl-intrinsic/scalar-double.slang
index 705a6d88a..35f530269 100644
--- a/tests/hlsl-intrinsic/scalar-double.slang
+++ b/tests/hlsl-intrinsic/scalar-double.slang
@@ -86,5 +86,7 @@ void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
ft += asdouble(low, high);
}
+ ft += ldexp(23.2, f);
+
outputBuffer[idx] = int(ft * 16);
} \ No newline at end of file
diff --git a/tests/hlsl-intrinsic/scalar-double.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double.slang.expected.txt
index 2fedcded2..05bb16948 100644
--- a/tests/hlsl-intrinsic/scalar-double.slang.expected.txt
+++ b/tests/hlsl-intrinsic/scalar-double.slang.expected.txt
@@ -1,4 +1,4 @@
-FFFFFA0C
-FFFFFDE8
-1D5
-5CA
+FFFFFB7F
+FFFFFFA1
+3E2
+83B
diff --git a/tests/hlsl-intrinsic/scalar-float.slang b/tests/hlsl-intrinsic/scalar-float.slang
index 6c090cff1..e0d338075 100644
--- a/tests/hlsl-intrinsic/scalar-float.slang
+++ b/tests/hlsl-intrinsic/scalar-float.slang
@@ -82,9 +82,11 @@ void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
int vi = asint(f - f) + idx;
ft += float(vi);
-
+
+ ft += ldexp(23.2, f);
+
uint vu = asuint(f);
ft += asfloat(vu);
outputBuffer[idx] = int(ft * 16);
-} \ No newline at end of file
+}
diff --git a/tests/hlsl-intrinsic/scalar-float.slang.expected.txt b/tests/hlsl-intrinsic/scalar-float.slang.expected.txt
index 3ad5914c4..2b6c42d94 100644
--- a/tests/hlsl-intrinsic/scalar-float.slang.expected.txt
+++ b/tests/hlsl-intrinsic/scalar-float.slang.expected.txt
@@ -1,4 +1,4 @@
-FFFFFA0C
-FFFFFDF4
-1ED
-5EE
+FFFFFB7F
+FFFFFFAD
+3FA
+85F