writer/wgsl: Emit atomic types

Bug: tint:892
Change-Id: Ie483167bcf669e5f2d6b5489a915584fc3678183
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/54649
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: David Neto <dneto@google.com>
diff --git a/src/writer/wgsl/generator_impl.cc b/src/writer/wgsl/generator_impl.cc
index 8b01b28..94d7b3a 100644
--- a/src/writer/wgsl/generator_impl.cc
+++ b/src/writer/wgsl/generator_impl.cc
@@ -20,6 +20,7 @@
 #include "src/ast/access.h"
 #include "src/ast/alias.h"
 #include "src/ast/array.h"
+#include "src/ast/atomic.h"
 #include "src/ast/bool.h"
 #include "src/ast/bool_literal.h"
 #include "src/ast/call_statement.h"
@@ -409,6 +410,12 @@
       return false;
     }
     out_ << ">";
+  } else if (auto* atomic = ty->As<ast::Atomic>()) {
+    out_ << "atomic<";
+    if (!EmitType(atomic->type())) {
+      return false;
+    }
+    out_ << ">";
   } else if (auto* sampler = ty->As<ast::Sampler>()) {
     out_ << "sampler";