diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2020-02-12 10:44:07 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-02-12 10:44:07 -0500 |
| commit | e1e7a6eec04ee1d04dc7e0d0212208d4c7a9592b (patch) | |
| tree | 18543abbb95cb93accedf4b0ecc894b6a363f11b /tests | |
| parent | fe9d27af9de047ea75db1334c961bb025fb732f6 (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.slang | 31 | ||||
| -rw-r--r-- | tests/hlsl-intrinsic/classify-double.slang.expected.txt | 4 | ||||
| -rw-r--r-- | tests/hlsl-intrinsic/classify-float.slang | 28 | ||||
| -rw-r--r-- | tests/hlsl-intrinsic/classify-float.slang.expected.txt | 4 | ||||
| -rw-r--r-- | tests/hlsl-intrinsic/scalar-double.slang | 2 | ||||
| -rw-r--r-- | tests/hlsl-intrinsic/scalar-double.slang.expected.txt | 8 | ||||
| -rw-r--r-- | tests/hlsl-intrinsic/scalar-float.slang | 6 | ||||
| -rw-r--r-- | tests/hlsl-intrinsic/scalar-float.slang.expected.txt | 8 |
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 |
