[spirv-reader] Fix order of arguments for atomicCompareExchangeWeak
In WGSL the comparator comes first, which is the opposite to SPIR-V.
Fixed: 435495236
Change-Id: Ia1d6c8efe0aef32af26c5b869a1d143652a92ea9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/255558
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: James Price <jrprice@google.com>
diff --git a/src/tint/lang/spirv/reader/lower/atomics.cc b/src/tint/lang/spirv/reader/lower/atomics.cc
index 1bcceba..7a64995 100644
--- a/src/tint/lang/spirv/reader/lower/atomics.cc
+++ b/src/tint/lang/spirv/reader/lower/atomics.cc
@@ -221,7 +221,7 @@
auto* strct =
core::type::CreateAtomicCompareExchangeResult(ty, ir.symbols, val->Type());
- auto* bi = b.Call(strct, core::BuiltinFn::kAtomicCompareExchangeWeak, var, val, comp);
+ auto* bi = b.Call(strct, core::BuiltinFn::kAtomicCompareExchangeWeak, var, comp, val);
b.AccessWithResult(call->DetachResult(), bi, 0_u);
});
call->Destroy();
diff --git a/src/tint/lang/spirv/reader/lower/atomics_test.cc b/src/tint/lang/spirv/reader/lower/atomics_test.cc
index a5ef867..47072da 100644
--- a/src/tint/lang/spirv/reader/lower/atomics_test.cc
+++ b/src/tint/lang/spirv/reader/lower/atomics_test.cc
@@ -1645,14 +1645,14 @@
%main = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B2: {
%5:ptr<storage, atomic<i32>, read_write> = access %sb, 0u
- %6:__atomic_compare_exchange_result_i32 = atomicCompareExchangeWeak %5, 2i, 3i
+ %6:__atomic_compare_exchange_result_i32 = atomicCompareExchangeWeak %5, 3i, 2i
%7:i32 = access %6, 0u
%8:ptr<storage, atomic<u32>, read_write> = access %sb, 1u
- %9:__atomic_compare_exchange_result_u32 = atomicCompareExchangeWeak %8, 4u, 5u
+ %9:__atomic_compare_exchange_result_u32 = atomicCompareExchangeWeak %8, 5u, 4u
%10:u32 = access %9, 0u
- %11:__atomic_compare_exchange_result_i32 = atomicCompareExchangeWeak %wg_i32, 6i, 7i
+ %11:__atomic_compare_exchange_result_i32 = atomicCompareExchangeWeak %wg_i32, 7i, 6i
%12:i32 = access %11, 0u
- %13:__atomic_compare_exchange_result_u32 = atomicCompareExchangeWeak %wg_u32, 8u, 9u
+ %13:__atomic_compare_exchange_result_u32 = atomicCompareExchangeWeak %wg_u32, 9u, 8u
%14:u32 = access %13, 0u
ret
}