From b3c13b443f1069591890840503ecb3f20dae8046 Mon Sep 17 00:00:00 2001 From: Shaun Ren Date: Tue, 7 Jan 2025 16:19:37 -0500 Subject: [PATCH] tests/hlsl: Add tests to check the void return type of atomic ops. --- tests/hlsl/uav-atomics.shader_test | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/tests/hlsl/uav-atomics.shader_test b/tests/hlsl/uav-atomics.shader_test index bdee2c63..64b41a03 100644 --- a/tests/hlsl/uav-atomics.shader_test +++ b/tests/hlsl/uav-atomics.shader_test @@ -254,3 +254,44 @@ if(sm<6) probe uav 2 (1) ri (0) if(sm<6) probe uav 2 (2) ri (0) probe uav 2 (3) ri (-1) if(sm<6) probe uav 2 (4) ri (-1) + + +% Interlocked* functions return void. + +[compute shader fail] +RWBuffer u : register(u1); + + [numthreads(3, 1, 1)] +void main() +{ + uint err = InterlockedAdd(u[0], 1); +} + +[compute shader fail] +RWBuffer u : register(u1); + + [numthreads(3, 1, 1)] +void main() +{ + uint old; + uint err = InterlockedAdd(u[0], 1, old); +} + +[compute shader fail] +RWBuffer u : register(u1); + + [numthreads(3, 1, 1)] +void main() +{ + uint err = InterlockedCompareStore(u[0], 0, 1); +} + +[compute shader fail] +RWBuffer u : register(u1); + + [numthreads(3, 1, 1)] +void main() +{ + uint old; + uint err = InterlockedCompareExchange(u[0], 0, 1, old); +}