diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2020-01-31 08:55:40 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-01-31 08:55:40 -0500 |
| commit | 52b78ad9bf99660593c49a8da0bdcec19016ee25 (patch) | |
| tree | fbf2d7181799593fde31747ed98477bba37fce6c /tests | |
| parent | ec056fd30c8b7357568e57cf9d52fc159b56602f (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.slang | 19 | ||||
| -rw-r--r-- | tests/hlsl-intrinsic/scalar-int64.slang.expected.txt | 8 | ||||
| -rw-r--r-- | tests/hlsl-intrinsic/scalar-uint64.slang | 24 | ||||
| -rw-r--r-- | tests/hlsl-intrinsic/scalar-uint64.slang.expected.txt | 8 |
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 |
