summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2020-01-31 08:55:40 -0500
committerGitHub <noreply@github.com>2020-01-31 08:55:40 -0500
commit52b78ad9bf99660593c49a8da0bdcec19016ee25 (patch)
treefbf2d7181799593fde31747ed98477bba37fce6c /tests
parentec056fd30c8b7357568e57cf9d52fc159b56602f (diff)
64 bit types doc (#1194)
* * For integer literals add postfix, and use unsigned/signed output appropriately * Extend GLSL extension handling by type, and for adding 64 bit int extensions * Added tests for int/uint64 types * Add explicit Int/UInt64 emit functions to avoid ambiguity. * Fix uint64_t intrinsics on CUDA/C++. * WIP 64 bit types documentation. * Testing int64 intrinsic support. * Dx12 Dxil sm6.0 does actually support int64_t.
Diffstat (limited to 'tests')
-rw-r--r--tests/hlsl-intrinsic/scalar-int64.slang19
-rw-r--r--tests/hlsl-intrinsic/scalar-int64.slang.expected.txt8
-rw-r--r--tests/hlsl-intrinsic/scalar-uint64.slang24
-rw-r--r--tests/hlsl-intrinsic/scalar-uint64.slang.expected.txt8
4 files changed, 40 insertions, 19 deletions
diff --git a/tests/hlsl-intrinsic/scalar-int64.slang b/tests/hlsl-intrinsic/scalar-int64.slang
index 4da2a553e..4ad805081 100644
--- a/tests/hlsl-intrinsic/scalar-int64.slang
+++ b/tests/hlsl-intrinsic/scalar-int64.slang
@@ -1,9 +1,9 @@
//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
-// No support for int64_t on dx11
+// No support for int64_t on dx11 (no sm 6.0)
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-// No support for int64_t on HLSL
+// No support with Dx12 with dxbc. Needs SM6.0 + dxil
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -profile cs_6_0 -dx12 -use-dxil
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute
@@ -13,9 +13,18 @@ RWStructuredBuffer<int> outputBuffer;
[numthreads(4, 1, 1)]
void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
{
- uint idx = dispatchThreadID.x;
+ int64_t idx = int64_t(dispatchThreadID.x);
- int64_t v = int64_t(idx) * 0x400010035435435ll;
+ int64_t ti =0;
+
+ ti += max(2, idx);
+ ti += min(idx, 1);
+ ti += abs(idx - 2);
+ ti += (idx * 3) % 5;
+
+ ti += clamp(idx * 10, 11, 23);
+
+ int64_t v = (ti * 0x400010035435435ll) / 3ll + 7ll - 9ll;
outputBuffer[idx] = int(v) ^ int(((v >> 32) & 0xffffffff));
} \ No newline at end of file
diff --git a/tests/hlsl-intrinsic/scalar-int64.slang.expected.txt b/tests/hlsl-intrinsic/scalar-int64.slang.expected.txt
index c0bb016cd..6ca5a87e0 100644
--- a/tests/hlsl-intrinsic/scalar-int64.slang.expected.txt
+++ b/tests/hlsl-intrinsic/scalar-int64.slang.expected.txt
@@ -1,4 +1,4 @@
-0
-31435535
-6286AA6A
-93C9FF9F
+1E50A006
+2793FF3D
+8A1AA9A7
+ED76E236
diff --git a/tests/hlsl-intrinsic/scalar-uint64.slang b/tests/hlsl-intrinsic/scalar-uint64.slang
index a990ccc22..dd165d8b8 100644
--- a/tests/hlsl-intrinsic/scalar-uint64.slang
+++ b/tests/hlsl-intrinsic/scalar-uint64.slang
@@ -4,7 +4,7 @@
// No support for uint64_t on fxc - we need SM6.0 and dxil
// https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/hlsl-shader-model-6-0-features-for-direct3d-12
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_3 -use-dxil
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute
@@ -13,12 +13,24 @@ RWStructuredBuffer<int> outputBuffer;
[numthreads(4, 1, 1)]
void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
-{
- uint idx = dispatchThreadID.x;
+{
+ uint64_t idx = dispatchThreadID.x;
- uint64_t v = uint64_t(idx) * 0x8000100354354354ull;
+ uint64_t ti = 0;
+
+ ti += max(2, idx);
+ ti += min(idx, 1ull);
+ ti += (idx * 3) % 5;
+
+ ti += clamp(idx * 10, 11, 23);
+
+ ti += countbits(idx * 13);
+
+ uint64_t v = uint64_t(ti) * 0x8000100354354354ull;
// Let's check all the bits make it
- v |= 0x8000000000000000ull;
+ uint64_t u = v | 0x8000000000000000ull;
- outputBuffer[idx] = int(v) ^ int(v >> 32);
+ v = max(u, v);
+
+ outputBuffer[dispatchThreadID.x] = int(v) ^ int(v >> 32);
} \ No newline at end of file
diff --git a/tests/hlsl-intrinsic/scalar-uint64.slang.expected.txt b/tests/hlsl-intrinsic/scalar-uint64.slang.expected.txt
index b8be0469a..d3843ea52 100644
--- a/tests/hlsl-intrinsic/scalar-uint64.slang.expected.txt
+++ b/tests/hlsl-intrinsic/scalar-uint64.slang.expected.txt
@@ -1,4 +1,4 @@
-80000000
-D4355357
-286AA6AE
-7C9FF9F5
+C6B4BB6F
+142802D2
+619FA985
+34A0408