diff options
Diffstat (limited to 'tests')
3 files changed, 37 insertions, 1 deletions
diff --git a/tests/slang-extension/atomic-float-byte-address-buffer.slang b/tests/slang-extension/atomic-float-byte-address-buffer.slang index e6e2268ff..d89ee8bd1 100644 --- a/tests/slang-extension/atomic-float-byte-address-buffer.slang +++ b/tests/slang-extension/atomic-float-byte-address-buffer.slang @@ -7,7 +7,7 @@ // Disabled because requires nvapi to work // Note for this feature we require dxc and we can force that with -use-dxil //DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-d3d12 -compute -use-dxil -//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -use-dxil +//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute //TEST_INPUT:ubuffer(data=[0.1 0.2 0.3 0.4]):out,name=outputBuffer RWByteAddressBuffer outputBuffer; diff --git a/tests/slang-extension/atomic-int64-byte-address-buffer.slang b/tests/slang-extension/atomic-int64-byte-address-buffer.slang new file mode 100644 index 000000000..22f21408c --- /dev/null +++ b/tests/slang-extension/atomic-int64-byte-address-buffer.slang @@ -0,0 +1,28 @@ +// No atomic support on CPU +//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute +// No support for int64_t on DX11 +//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute +// No support for int64_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 +// Disable for now, because can only test when NVAPI is available, and it is not by default. +//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil +//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute +//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute + +//TEST_INPUT:ubuffer(data=[0 1 2 3 4 5 6 7]):out,name=outputBuffer +RWByteAddressBuffer outputBuffer; + +[numthreads(16, 1, 1)] +void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) +{ + uint tid = dispatchThreadID.x; + int idx = (tid & 3) ^ (tid >> 2); + + int64_t previousValue = 0; + outputBuffer.InterlockedAddI64((idx << 3), 1, previousValue); + + int anotherIdx = tid >> 2; + outputBuffer.InterlockedAddI64(anotherIdx << 3, 3); +} + diff --git a/tests/slang-extension/atomic-int64-byte-address-buffer.slang.expected.txt b/tests/slang-extension/atomic-int64-byte-address-buffer.slang.expected.txt new file mode 100644 index 000000000..811dc1584 --- /dev/null +++ b/tests/slang-extension/atomic-int64-byte-address-buffer.slang.expected.txt @@ -0,0 +1,8 @@ +10 +1 +12 +3 +14 +5 +16 +7 |
