[writer/hlsl]: Fix order of atomic method arguments.
Change-Id: Ice1b07c748bc6502a51b29690dfc00466a684c12
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/57461
Auto-Submit: Ben Clayton <bclayton@google.com>
Commit-Queue: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/src/writer/hlsl/generator_impl.cc b/src/writer/hlsl/generator_impl.cc
index 7ab9ea5..4cbb6ce 100644
--- a/src/writer/hlsl/generator_impl.cc
+++ b/src/writer/hlsl/generator_impl.cc
@@ -880,6 +880,10 @@
auto* offset = expr->params()[1];
auto call_buffer_method = [&](const char* name) {
+ // First two arguments to the DecomposeMemoryAccess::Intrinsic are the
+ // buffer and offset. The buffer is the moved to the LHS of the '.', and the
+ // offset becomes the first argument. The rest of the method's arguments are
+ // the same.
auto pre = line();
if (!EmitExpression(pre, buffer)) {
return false;
@@ -891,7 +895,7 @@
return false;
}
- for (size_t i = 1; i < expr->params().size() - 1; i++) {
+ for (size_t i = 2; i < expr->params().size(); i++) {
auto* arg = expr->params()[i];
pre << ", ";
if (!EmitExpression(pre, arg)) {
diff --git a/test/bug/tint/926.wgsl.expected.hlsl b/test/bug/tint/926.wgsl.expected.hlsl
index 287e01d..febfdb4 100644
--- a/test/bug/tint/926.wgsl.expected.hlsl
+++ b/test/bug/tint/926.wgsl.expected.hlsl
@@ -9,7 +9,7 @@
void computeMain(tint_symbol_1 tint_symbol) {
const uint3 global_id = tint_symbol.global_id;
uint atomic_result = 0u;
- drawOut.InterlockedAdd(0u, 0u, atomic_result);
+ drawOut.InterlockedAdd(0u, cubeVerts, atomic_result);
const uint firstVertex = atomic_result;
return;
}
diff --git a/test/intrinsics/gen/atomicAdd/8a199a.wgsl.expected.hlsl b/test/intrinsics/gen/atomicAdd/8a199a.wgsl.expected.hlsl
index b13b466..d8bcd22 100644
--- a/test/intrinsics/gen/atomicAdd/8a199a.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/atomicAdd/8a199a.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
void atomicAdd_8a199a() {
uint atomic_result = 0u;
- sb_rw.InterlockedAdd(0u, 0u, atomic_result);
+ sb_rw.InterlockedAdd(0u, 1u, atomic_result);
uint res = atomic_result;
}
diff --git a/test/intrinsics/gen/atomicAdd/d32fe4.wgsl.expected.hlsl b/test/intrinsics/gen/atomicAdd/d32fe4.wgsl.expected.hlsl
index a578c6e..392d656 100644
--- a/test/intrinsics/gen/atomicAdd/d32fe4.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/atomicAdd/d32fe4.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
void atomicAdd_d32fe4() {
int atomic_result = 0;
- sb_rw.InterlockedAdd(0u, 0u, atomic_result);
+ sb_rw.InterlockedAdd(0u, 1, atomic_result);
int res = atomic_result;
}
diff --git a/test/intrinsics/gen/atomicAnd/152966.wgsl.expected.hlsl b/test/intrinsics/gen/atomicAnd/152966.wgsl.expected.hlsl
index 819eaf2..6080eba 100644
--- a/test/intrinsics/gen/atomicAnd/152966.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/atomicAnd/152966.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
void atomicAnd_152966() {
int atomic_result = 0;
- sb_rw.InterlockedAnd(0u, 0u, atomic_result);
+ sb_rw.InterlockedAnd(0u, 1, atomic_result);
int res = atomic_result;
}
diff --git a/test/intrinsics/gen/atomicAnd/85a8d9.wgsl.expected.hlsl b/test/intrinsics/gen/atomicAnd/85a8d9.wgsl.expected.hlsl
index 434f98d..c0d64fc 100644
--- a/test/intrinsics/gen/atomicAnd/85a8d9.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/atomicAnd/85a8d9.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
void atomicAnd_85a8d9() {
uint atomic_result = 0u;
- sb_rw.InterlockedAnd(0u, 0u, atomic_result);
+ sb_rw.InterlockedAnd(0u, 1u, atomic_result);
uint res = atomic_result;
}
diff --git a/test/intrinsics/gen/atomicExchange/d59712.wgsl.expected.hlsl b/test/intrinsics/gen/atomicExchange/d59712.wgsl.expected.hlsl
index 736c4f5..a54642c 100644
--- a/test/intrinsics/gen/atomicExchange/d59712.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/atomicExchange/d59712.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
void atomicExchange_d59712() {
uint atomic_result = 0u;
- sb_rw.InterlockedExchange(0u, 0u, atomic_result);
+ sb_rw.InterlockedExchange(0u, 1u, atomic_result);
uint res = atomic_result;
}
diff --git a/test/intrinsics/gen/atomicExchange/f2e22f.wgsl.expected.hlsl b/test/intrinsics/gen/atomicExchange/f2e22f.wgsl.expected.hlsl
index ce77930..e361c93 100644
--- a/test/intrinsics/gen/atomicExchange/f2e22f.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/atomicExchange/f2e22f.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
void atomicExchange_f2e22f() {
int atomic_result = 0;
- sb_rw.InterlockedExchange(0u, 0u, atomic_result);
+ sb_rw.InterlockedExchange(0u, 1, atomic_result);
int res = atomic_result;
}
diff --git a/test/intrinsics/gen/atomicMax/51b9be.wgsl.expected.hlsl b/test/intrinsics/gen/atomicMax/51b9be.wgsl.expected.hlsl
index fc4250b..41dae87 100644
--- a/test/intrinsics/gen/atomicMax/51b9be.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/atomicMax/51b9be.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
void atomicMax_51b9be() {
uint atomic_result = 0u;
- sb_rw.InterlockedMax(0u, 0u, atomic_result);
+ sb_rw.InterlockedMax(0u, 1u, atomic_result);
uint res = atomic_result;
}
diff --git a/test/intrinsics/gen/atomicMax/92aa72.wgsl.expected.hlsl b/test/intrinsics/gen/atomicMax/92aa72.wgsl.expected.hlsl
index d23b380..e29705e 100644
--- a/test/intrinsics/gen/atomicMax/92aa72.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/atomicMax/92aa72.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
void atomicMax_92aa72() {
int atomic_result = 0;
- sb_rw.InterlockedMax(0u, 0u, atomic_result);
+ sb_rw.InterlockedMax(0u, 1, atomic_result);
int res = atomic_result;
}
diff --git a/test/intrinsics/gen/atomicMin/8e38dc.wgsl.expected.hlsl b/test/intrinsics/gen/atomicMin/8e38dc.wgsl.expected.hlsl
index 304bc49..ab52cbd 100644
--- a/test/intrinsics/gen/atomicMin/8e38dc.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/atomicMin/8e38dc.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
void atomicMin_8e38dc() {
int atomic_result = 0;
- sb_rw.InterlockedMin(0u, 0u, atomic_result);
+ sb_rw.InterlockedMin(0u, 1, atomic_result);
int res = atomic_result;
}
diff --git a/test/intrinsics/gen/atomicMin/c67a74.wgsl.expected.hlsl b/test/intrinsics/gen/atomicMin/c67a74.wgsl.expected.hlsl
index 104ecf1..ac804d0 100644
--- a/test/intrinsics/gen/atomicMin/c67a74.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/atomicMin/c67a74.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
void atomicMin_c67a74() {
uint atomic_result = 0u;
- sb_rw.InterlockedMin(0u, 0u, atomic_result);
+ sb_rw.InterlockedMin(0u, 1u, atomic_result);
uint res = atomic_result;
}
diff --git a/test/intrinsics/gen/atomicOr/5e95d4.wgsl.expected.hlsl b/test/intrinsics/gen/atomicOr/5e95d4.wgsl.expected.hlsl
index 315eee7..63db7ef 100644
--- a/test/intrinsics/gen/atomicOr/5e95d4.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/atomicOr/5e95d4.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
void atomicOr_5e95d4() {
uint atomic_result = 0u;
- sb_rw.InterlockedOr(0u, 0u, atomic_result);
+ sb_rw.InterlockedOr(0u, 1u, atomic_result);
uint res = atomic_result;
}
diff --git a/test/intrinsics/gen/atomicOr/8d96a0.wgsl.expected.hlsl b/test/intrinsics/gen/atomicOr/8d96a0.wgsl.expected.hlsl
index 5b68897..b5de43e 100644
--- a/test/intrinsics/gen/atomicOr/8d96a0.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/atomicOr/8d96a0.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
void atomicOr_8d96a0() {
int atomic_result = 0;
- sb_rw.InterlockedOr(0u, 0u, atomic_result);
+ sb_rw.InterlockedOr(0u, 1, atomic_result);
int res = atomic_result;
}
diff --git a/test/intrinsics/gen/atomicXor/54510e.wgsl.expected.hlsl b/test/intrinsics/gen/atomicXor/54510e.wgsl.expected.hlsl
index d81f8e5..401a107 100644
--- a/test/intrinsics/gen/atomicXor/54510e.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/atomicXor/54510e.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
void atomicXor_54510e() {
uint atomic_result = 0u;
- sb_rw.InterlockedXor(0u, 0u, atomic_result);
+ sb_rw.InterlockedXor(0u, 1u, atomic_result);
uint res = atomic_result;
}
diff --git a/test/intrinsics/gen/atomicXor/c1b78c.wgsl.expected.hlsl b/test/intrinsics/gen/atomicXor/c1b78c.wgsl.expected.hlsl
index 660aaf1..d10eedd 100644
--- a/test/intrinsics/gen/atomicXor/c1b78c.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/atomicXor/c1b78c.wgsl.expected.hlsl
@@ -2,7 +2,7 @@
void atomicXor_c1b78c() {
int atomic_result = 0;
- sb_rw.InterlockedXor(0u, 0u, atomic_result);
+ sb_rw.InterlockedXor(0u, 1, atomic_result);
int res = atomic_result;
}