[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;
 }