[shuffle] Move writer/msl to new structure.

This CL moves the msl writer into the `lang/msl/ast_writer` folder and
updates the includes. The namespaces and build groups are not updated in
this CL, just the code move.

Bug: tint:1988
Change-Id: I8804454631b74ec9745d42d489c1b76f7fa00ca4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/142002
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/include/tint/tint.h b/include/tint/tint.h
index 1ec39a9..41f9ecc 100644
--- a/include/tint/tint.h
+++ b/include/tint/tint.h
@@ -56,7 +56,7 @@
 #endif  // TINT_BUILD_WGSL_WRITER
 
 #if TINT_BUILD_MSL_WRITER
-#include "src/tint/writer/msl/generator.h"
+#include "src/tint/lang/msl/ast_writer/generator.h"
 #endif  // TINT_BUILD_MSL_WRITER
 
 #if TINT_BUILD_HLSL_WRITER
diff --git a/src/tint/BUILD.gn b/src/tint/BUILD.gn
index dead18d..d119792 100644
--- a/src/tint/BUILD.gn
+++ b/src/tint/BUILD.gn
@@ -1144,12 +1144,12 @@
 
 libtint_source_set("libtint_msl_writer_src") {
   sources = [
-    "writer/msl/generator.cc",
-    "writer/msl/generator.h",
-    "writer/msl/generator_impl.cc",
-    "writer/msl/generator_impl.h",
-    "writer/msl/generator_support.cc",
-    "writer/msl/generator_support.h",
+    "lang/msl/ast_writer/generator.cc",
+    "lang/msl/ast_writer/generator.h",
+    "lang/msl/ast_writer/generator_impl.cc",
+    "lang/msl/ast_writer/generator_impl.h",
+    "lang/msl/ast_writer/generator_support.cc",
+    "lang/msl/ast_writer/generator_support.h",
   ]
 
   deps = [
@@ -1168,8 +1168,8 @@
 
   if (tint_build_ir) {
     sources += [
-      "writer/msl/ir/generator_impl_ir.cc",
-      "writer/msl/ir/generator_impl_ir.h",
+      "lang/msl/writer/generator_impl_ir.cc",
+      "lang/msl/writer/generator_impl_ir.h",
     ]
     deps += [
       ":libtint_ir_builder_src",
@@ -2228,37 +2228,37 @@
 
   tint_unittests_source_set("tint_unittests_msl_writer_src") {
     sources = [
-      "writer/msl/generator_impl_array_accessor_test.cc",
-      "writer/msl/generator_impl_assign_test.cc",
-      "writer/msl/generator_impl_binary_test.cc",
-      "writer/msl/generator_impl_bitcast_test.cc",
-      "writer/msl/generator_impl_block_test.cc",
-      "writer/msl/generator_impl_break_test.cc",
-      "writer/msl/generator_impl_builtin_test.cc",
-      "writer/msl/generator_impl_builtin_texture_test.cc",
-      "writer/msl/generator_impl_call_test.cc",
-      "writer/msl/generator_impl_case_test.cc",
-      "writer/msl/generator_impl_cast_test.cc",
-      "writer/msl/generator_impl_const_assert_test.cc",
-      "writer/msl/generator_impl_constructor_test.cc",
-      "writer/msl/generator_impl_continue_test.cc",
-      "writer/msl/generator_impl_discard_test.cc",
-      "writer/msl/generator_impl_function_test.cc",
-      "writer/msl/generator_impl_identifier_test.cc",
-      "writer/msl/generator_impl_if_test.cc",
-      "writer/msl/generator_impl_import_test.cc",
-      "writer/msl/generator_impl_loop_test.cc",
-      "writer/msl/generator_impl_member_accessor_test.cc",
-      "writer/msl/generator_impl_module_constant_test.cc",
-      "writer/msl/generator_impl_return_test.cc",
-      "writer/msl/generator_impl_sanitizer_test.cc",
-      "writer/msl/generator_impl_switch_test.cc",
-      "writer/msl/generator_impl_test.cc",
-      "writer/msl/generator_impl_type_test.cc",
-      "writer/msl/generator_impl_unary_op_test.cc",
-      "writer/msl/generator_impl_variable_decl_statement_test.cc",
-      "writer/msl/generator_support_test.cc",
-      "writer/msl/test_helper.h",
+      "lang/msl/ast_writer/generator_impl_array_accessor_test.cc",
+      "lang/msl/ast_writer/generator_impl_assign_test.cc",
+      "lang/msl/ast_writer/generator_impl_binary_test.cc",
+      "lang/msl/ast_writer/generator_impl_bitcast_test.cc",
+      "lang/msl/ast_writer/generator_impl_block_test.cc",
+      "lang/msl/ast_writer/generator_impl_break_test.cc",
+      "lang/msl/ast_writer/generator_impl_builtin_test.cc",
+      "lang/msl/ast_writer/generator_impl_builtin_texture_test.cc",
+      "lang/msl/ast_writer/generator_impl_call_test.cc",
+      "lang/msl/ast_writer/generator_impl_case_test.cc",
+      "lang/msl/ast_writer/generator_impl_cast_test.cc",
+      "lang/msl/ast_writer/generator_impl_const_assert_test.cc",
+      "lang/msl/ast_writer/generator_impl_constructor_test.cc",
+      "lang/msl/ast_writer/generator_impl_continue_test.cc",
+      "lang/msl/ast_writer/generator_impl_discard_test.cc",
+      "lang/msl/ast_writer/generator_impl_function_test.cc",
+      "lang/msl/ast_writer/generator_impl_identifier_test.cc",
+      "lang/msl/ast_writer/generator_impl_if_test.cc",
+      "lang/msl/ast_writer/generator_impl_import_test.cc",
+      "lang/msl/ast_writer/generator_impl_loop_test.cc",
+      "lang/msl/ast_writer/generator_impl_member_accessor_test.cc",
+      "lang/msl/ast_writer/generator_impl_module_constant_test.cc",
+      "lang/msl/ast_writer/generator_impl_return_test.cc",
+      "lang/msl/ast_writer/generator_impl_sanitizer_test.cc",
+      "lang/msl/ast_writer/generator_impl_switch_test.cc",
+      "lang/msl/ast_writer/generator_impl_test.cc",
+      "lang/msl/ast_writer/generator_impl_type_test.cc",
+      "lang/msl/ast_writer/generator_impl_unary_op_test.cc",
+      "lang/msl/ast_writer/generator_impl_variable_decl_statement_test.cc",
+      "lang/msl/ast_writer/generator_support_test.cc",
+      "lang/msl/ast_writer/test_helper.h",
     ]
 
     deps = [
@@ -2269,10 +2269,10 @@
 
     if (tint_build_ir) {
       sources += [
-        "writer/msl/ir/generator_impl_ir_constant_test.cc",
-        "writer/msl/ir/generator_impl_ir_function_test.cc",
-        "writer/msl/ir/generator_impl_ir_type_test.cc",
-        "writer/msl/ir/test_helper_ir.h",
+        "lang/msl/writer/generator_impl_ir_constant_test.cc",
+        "lang/msl/writer/generator_impl_ir_function_test.cc",
+        "lang/msl/writer/generator_impl_ir_type_test.cc",
+        "lang/msl/writer/test_helper_ir.h",
       ]
       deps += [ ":libtint_ir_src" ]
     }
diff --git a/src/tint/CMakeLists.txt b/src/tint/CMakeLists.txt
index 538e31a..614b8b5 100644
--- a/src/tint/CMakeLists.txt
+++ b/src/tint/CMakeLists.txt
@@ -706,18 +706,18 @@
 
 if(${TINT_BUILD_MSL_WRITER})
   list(APPEND TINT_LIB_SRCS
-    writer/msl/generator.cc
-    writer/msl/generator.h
-    writer/msl/generator_impl.cc
-    writer/msl/generator_impl.h
-    writer/msl/generator_support.cc
-    writer/msl/generator_support.h
+    lang/msl/ast_writer/generator.cc
+    lang/msl/ast_writer/generator.h
+    lang/msl/ast_writer/generator_impl.cc
+    lang/msl/ast_writer/generator_impl.h
+    lang/msl/ast_writer/generator_support.cc
+    lang/msl/ast_writer/generator_support.h
   )
 
   if(${TINT_BUILD_IR})
     list(APPEND TINT_LIB_SRCS
-      writer/msl/ir/generator_impl_ir.cc
-      writer/msl/ir/generator_impl_ir.h
+      lang/msl/writer/generator_impl_ir.cc
+      lang/msl/writer/generator_impl_ir.h
     )
   endif()
 endif()
@@ -1466,45 +1466,45 @@
 
   if(${TINT_BUILD_MSL_WRITER})
     list(APPEND TINT_TEST_SRCS
-      writer/msl/generator_impl_array_accessor_test.cc
-      writer/msl/generator_impl_assign_test.cc
-      writer/msl/generator_impl_binary_test.cc
-      writer/msl/generator_impl_bitcast_test.cc
-      writer/msl/generator_impl_block_test.cc
-      writer/msl/generator_impl_break_test.cc
-      writer/msl/generator_impl_builtin_test.cc
-      writer/msl/generator_impl_builtin_texture_test.cc
-      writer/msl/generator_impl_call_test.cc
-      writer/msl/generator_impl_case_test.cc
-      writer/msl/generator_impl_cast_test.cc
-      writer/msl/generator_impl_const_assert_test.cc
-      writer/msl/generator_impl_constructor_test.cc
-      writer/msl/generator_impl_continue_test.cc
-      writer/msl/generator_impl_discard_test.cc
-      writer/msl/generator_impl_function_test.cc
-      writer/msl/generator_impl_identifier_test.cc
-      writer/msl/generator_impl_if_test.cc
-      writer/msl/generator_impl_import_test.cc
-      writer/msl/generator_impl_loop_test.cc
-      writer/msl/generator_impl_member_accessor_test.cc
-      writer/msl/generator_impl_module_constant_test.cc
-      writer/msl/generator_impl_return_test.cc
-      writer/msl/generator_impl_sanitizer_test.cc
-      writer/msl/generator_impl_switch_test.cc
-      writer/msl/generator_impl_test.cc
-      writer/msl/generator_impl_type_test.cc
-      writer/msl/generator_impl_unary_op_test.cc
-      writer/msl/generator_impl_variable_decl_statement_test.cc
-      writer/msl/generator_support_test.cc
-      writer/msl/test_helper.h
+      lang/msl/ast_writer/generator_impl_array_accessor_test.cc
+      lang/msl/ast_writer/generator_impl_assign_test.cc
+      lang/msl/ast_writer/generator_impl_binary_test.cc
+      lang/msl/ast_writer/generator_impl_bitcast_test.cc
+      lang/msl/ast_writer/generator_impl_block_test.cc
+      lang/msl/ast_writer/generator_impl_break_test.cc
+      lang/msl/ast_writer/generator_impl_builtin_test.cc
+      lang/msl/ast_writer/generator_impl_builtin_texture_test.cc
+      lang/msl/ast_writer/generator_impl_call_test.cc
+      lang/msl/ast_writer/generator_impl_case_test.cc
+      lang/msl/ast_writer/generator_impl_cast_test.cc
+      lang/msl/ast_writer/generator_impl_const_assert_test.cc
+      lang/msl/ast_writer/generator_impl_constructor_test.cc
+      lang/msl/ast_writer/generator_impl_continue_test.cc
+      lang/msl/ast_writer/generator_impl_discard_test.cc
+      lang/msl/ast_writer/generator_impl_function_test.cc
+      lang/msl/ast_writer/generator_impl_identifier_test.cc
+      lang/msl/ast_writer/generator_impl_if_test.cc
+      lang/msl/ast_writer/generator_impl_import_test.cc
+      lang/msl/ast_writer/generator_impl_loop_test.cc
+      lang/msl/ast_writer/generator_impl_member_accessor_test.cc
+      lang/msl/ast_writer/generator_impl_module_constant_test.cc
+      lang/msl/ast_writer/generator_impl_return_test.cc
+      lang/msl/ast_writer/generator_impl_sanitizer_test.cc
+      lang/msl/ast_writer/generator_impl_switch_test.cc
+      lang/msl/ast_writer/generator_impl_test.cc
+      lang/msl/ast_writer/generator_impl_type_test.cc
+      lang/msl/ast_writer/generator_impl_unary_op_test.cc
+      lang/msl/ast_writer/generator_impl_variable_decl_statement_test.cc
+      lang/msl/ast_writer/generator_support_test.cc
+      lang/msl/ast_writer/test_helper.h
     )
 
     if(${TINT_BUILD_IR})
       list(APPEND TINT_TEST_SRCS
-        writer/msl/ir/generator_impl_ir_constant_test.cc
-        writer/msl/ir/generator_impl_ir_function_test.cc
-        writer/msl/ir/generator_impl_ir_type_test.cc
-        writer/msl/ir/test_helper_ir.h
+        lang/msl/writer/generator_impl_ir_constant_test.cc
+        lang/msl/writer/generator_impl_ir_function_test.cc
+        lang/msl/writer/generator_impl_ir_type_test.cc
+        lang/msl/writer/test_helper_ir.h
       )
     endif()
   endif()
@@ -1720,7 +1720,7 @@
     list(APPEND TINT_BENCHMARK_SRCS writer/hlsl/generator_bench.cc)
   endif()
   if (${TINT_BUILD_MSL_WRITER})
-    list(APPEND TINT_BENCHMARK_SRCS writer/msl/generator_bench.cc)
+    list(APPEND TINT_BENCHMARK_SRCS lang/msl/ast_writer/generator_bench.cc)
   endif()
   if (${TINT_BUILD_SPV_WRITER})
     list(APPEND TINT_BENCHMARK_SRCS writer/spirv/generator_bench.cc)
diff --git a/src/tint/fuzzers/tint_concurrency_fuzzer.cc b/src/tint/fuzzers/tint_concurrency_fuzzer.cc
index 59a8140..b0f30c8 100644
--- a/src/tint/fuzzers/tint_concurrency_fuzzer.cc
+++ b/src/tint/fuzzers/tint_concurrency_fuzzer.cc
@@ -22,11 +22,11 @@
 #include "src/tint/fuzzers/apply_substitute_overrides.h"
 #include "src/tint/inspector/inspector.h"
 #include "src/tint/lang/glsl/ast_writer/generator.h"
+#include "src/tint/lang/msl/ast_writer/generator.h"
 #include "src/tint/lang/wgsl/reader/parser.h"
 #include "src/tint/utils/hash.h"
 #include "src/tint/writer/flatten_bindings.h"
 #include "src/tint/writer/hlsl/generator.h"
-#include "src/tint/writer/msl/generator.h"
 #include "src/tint/writer/spirv/generator.h"
 #include "src/tint/writer/wgsl/generator.h"
 
diff --git a/src/tint/writer/msl/generator.cc b/src/tint/lang/msl/ast_writer/generator.cc
similarity index 88%
rename from src/tint/writer/msl/generator.cc
rename to src/tint/lang/msl/ast_writer/generator.cc
index 14b317a..10555a8 100644
--- a/src/tint/writer/msl/generator.cc
+++ b/src/tint/lang/msl/ast_writer/generator.cc
@@ -12,16 +12,16 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/writer/msl/generator.h"
+#include "src/tint/lang/msl/ast_writer/generator.h"
 
 #include <utility>
 
-#include "src/tint/writer/msl/generator_impl.h"
+#include "src/tint/lang/msl/ast_writer/generator_impl.h"
 
 #if TINT_BUILD_IR
-#include "src/tint/ir/from_program.h"                  // nogncheck
-#include "src/tint/writer/msl/ir/generator_impl_ir.h"  // nogncheck
-#endif                                                 // TINT_BUILD_IR
+#include "src/tint/ir/from_program.h"                    // nogncheck
+#include "src/tint/lang/msl/writer/generator_impl_ir.h"  // nogncheck
+#endif                                                   // TINT_BUILD_IR
 
 namespace tint::writer::msl {
 
diff --git a/src/tint/writer/msl/generator.h b/src/tint/lang/msl/ast_writer/generator.h
similarity index 96%
rename from src/tint/writer/msl/generator.h
rename to src/tint/lang/msl/ast_writer/generator.h
index 886277c..13f7a43 100644
--- a/src/tint/writer/msl/generator.h
+++ b/src/tint/lang/msl/ast_writer/generator.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_WRITER_MSL_GENERATOR_H_
-#define SRC_TINT_WRITER_MSL_GENERATOR_H_
+#ifndef SRC_TINT_LANG_MSL_AST_WRITER_GENERATOR_H_
+#define SRC_TINT_LANG_MSL_AST_WRITER_GENERATOR_H_
 
 #include <memory>
 #include <string>
@@ -135,4 +135,4 @@
 
 }  // namespace tint::writer::msl
 
-#endif  // SRC_TINT_WRITER_MSL_GENERATOR_H_
+#endif  // SRC_TINT_LANG_MSL_AST_WRITER_GENERATOR_H_
diff --git a/src/tint/writer/msl/generator_bench.cc b/src/tint/lang/msl/ast_writer/generator_bench.cc
similarity index 100%
rename from src/tint/writer/msl/generator_bench.cc
rename to src/tint/lang/msl/ast_writer/generator_bench.cc
diff --git a/src/tint/writer/msl/generator_impl.cc b/src/tint/lang/msl/ast_writer/generator_impl.cc
similarity index 99%
rename from src/tint/writer/msl/generator_impl.cc
rename to src/tint/lang/msl/ast_writer/generator_impl.cc
index 4aabeef..11f71ca 100644
--- a/src/tint/writer/msl/generator_impl.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/writer/msl/generator_impl.h"
+#include "src/tint/lang/msl/ast_writer/generator_impl.h"
 
 #include <algorithm>
 #include <cmath>
@@ -51,6 +51,7 @@
 #include "src/tint/ast/variable_decl_statement.h"
 #include "src/tint/constant/splat.h"
 #include "src/tint/constant/value.h"
+#include "src/tint/lang/msl/ast_writer/generator_support.h"
 #include "src/tint/sem/call.h"
 #include "src/tint/sem/function.h"
 #include "src/tint/sem/member_accessor_expression.h"
@@ -85,7 +86,6 @@
 #include "src/tint/utils/scoped_assignment.h"
 #include "src/tint/utils/string_stream.h"
 #include "src/tint/writer/check_supported_extensions.h"
-#include "src/tint/writer/msl/generator_support.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl.h b/src/tint/lang/msl/ast_writer/generator_impl.h
similarity index 98%
rename from src/tint/writer/msl/generator_impl.h
rename to src/tint/lang/msl/ast_writer/generator_impl.h
index 42ff42b..9b691e6 100644
--- a/src/tint/writer/msl/generator_impl.h
+++ b/src/tint/lang/msl/ast_writer/generator_impl.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_WRITER_MSL_GENERATOR_IMPL_H_
-#define SRC_TINT_WRITER_MSL_GENERATOR_IMPL_H_
+#ifndef SRC_TINT_LANG_MSL_AST_WRITER_GENERATOR_IMPL_H_
+#define SRC_TINT_LANG_MSL_AST_WRITER_GENERATOR_IMPL_H_
 
 #include <string>
 #include <tuple>
@@ -37,13 +37,13 @@
 #include "src/tint/ast/switch_statement.h"
 #include "src/tint/ast/unary_op_expression.h"
 #include "src/tint/builtin/builtin_value.h"
+#include "src/tint/lang/msl/ast_writer/generator.h"
 #include "src/tint/program.h"
 #include "src/tint/scope_stack.h"
 #include "src/tint/sem/struct.h"
 #include "src/tint/utils/string_stream.h"
 #include "src/tint/writer/array_length_from_uniform_options.h"
 #include "src/tint/writer/ast_text_generator.h"
-#include "src/tint/writer/msl/generator.h"
 
 // Forward declarations
 namespace tint::sem {
@@ -418,4 +418,4 @@
 
 }  // namespace tint::writer::msl
 
-#endif  // SRC_TINT_WRITER_MSL_GENERATOR_IMPL_H_
+#endif  // SRC_TINT_LANG_MSL_AST_WRITER_GENERATOR_IMPL_H_
diff --git a/src/tint/writer/msl/generator_impl_array_accessor_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_array_accessor_test.cc
similarity index 96%
rename from src/tint/writer/msl/generator_impl_array_accessor_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_array_accessor_test.cc
index b194492..71577e2 100644
--- a/src/tint/writer/msl/generator_impl_array_accessor_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_array_accessor_test.cc
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 #include "src/tint/utils/string_stream.h"
-#include "src/tint/writer/msl/test_helper.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/writer/msl/generator_impl_assign_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_assign_test.cc
similarity index 94%
rename from src/tint/writer/msl/generator_impl_assign_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_assign_test.cc
index 0d3523f..1067ace 100644
--- a/src/tint/writer/msl/generator_impl_assign_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_assign_test.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/writer/msl/test_helper.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl_binary_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_binary_test.cc
similarity index 98%
rename from src/tint/writer/msl/generator_impl_binary_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_binary_test.cc
index 70bdf7d..ba1d5ca 100644
--- a/src/tint/writer/msl/generator_impl_binary_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_binary_test.cc
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 #include "src/tint/utils/string_stream.h"
-#include "src/tint/writer/msl/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl_bitcast_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_bitcast_test.cc
similarity index 95%
rename from src/tint/writer/msl/generator_impl_bitcast_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_bitcast_test.cc
index b48d694..cf21689 100644
--- a/src/tint/writer/msl/generator_impl_bitcast_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_bitcast_test.cc
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 #include "src/tint/utils/string_stream.h"
-#include "src/tint/writer/msl/test_helper.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/writer/msl/generator_impl_block_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_block_test.cc
similarity index 95%
rename from src/tint/writer/msl/generator_impl_block_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_block_test.cc
index cbd8741..78b3a0f 100644
--- a/src/tint/writer/msl/generator_impl_block_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_block_test.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/writer/msl/test_helper.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl_break_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_break_test.cc
similarity index 94%
rename from src/tint/writer/msl/generator_impl_break_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_break_test.cc
index cfa1826..eb861ad 100644
--- a/src/tint/writer/msl/generator_impl_break_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_break_test.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/writer/msl/test_helper.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl_builtin_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_builtin_test.cc
similarity index 99%
rename from src/tint/writer/msl/generator_impl_builtin_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_builtin_test.cc
index 162c7f2..16aeb79 100644
--- a/src/tint/writer/msl/generator_impl_builtin_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_builtin_test.cc
@@ -13,9 +13,9 @@
 // limitations under the License.
 
 #include "src/tint/ast/call_statement.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 #include "src/tint/sem/call.h"
 #include "src/tint/utils/string_stream.h"
-#include "src/tint/writer/msl/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl_builtin_texture_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_builtin_texture_test.cc
similarity index 99%
rename from src/tint/writer/msl/generator_impl_builtin_texture_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_builtin_texture_test.cc
index 54f0113..171e217 100644
--- a/src/tint/writer/msl/generator_impl_builtin_texture_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_builtin_texture_test.cc
@@ -14,8 +14,8 @@
 
 #include "src/tint/ast/builtin_texture_helper_test.h"
 #include "src/tint/ast/call_statement.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 #include "src/tint/utils/string_stream.h"
-#include "src/tint/writer/msl/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl_call_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_call_test.cc
similarity index 97%
rename from src/tint/writer/msl/generator_impl_call_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_call_test.cc
index 5af9e13..fe3fad8 100644
--- a/src/tint/writer/msl/generator_impl_call_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_call_test.cc
@@ -13,8 +13,8 @@
 // limitations under the License.
 
 #include "src/tint/ast/call_statement.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 #include "src/tint/utils/string_stream.h"
-#include "src/tint/writer/msl/test_helper.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/writer/msl/generator_impl_case_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_case_test.cc
similarity index 97%
rename from src/tint/writer/msl/generator_impl_case_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_case_test.cc
index 85e0308..8a35696 100644
--- a/src/tint/writer/msl/generator_impl_case_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_case_test.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/writer/msl/test_helper.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/writer/msl/generator_impl_cast_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_cast_test.cc
similarity index 96%
rename from src/tint/writer/msl/generator_impl_cast_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_cast_test.cc
index 3895559..7453f26 100644
--- a/src/tint/writer/msl/generator_impl_cast_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_cast_test.cc
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 #include "src/tint/utils/string_stream.h"
-#include "src/tint/writer/msl/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl_const_assert_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_const_assert_test.cc
similarity index 95%
rename from src/tint/writer/msl/generator_impl_const_assert_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_const_assert_test.cc
index b6aa537..65efdbe 100644
--- a/src/tint/writer/msl/generator_impl_const_assert_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_const_assert_test.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/writer/msl/test_helper.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/writer/msl/generator_impl_constructor_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_constructor_test.cc
similarity index 99%
rename from src/tint/writer/msl/generator_impl_constructor_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_constructor_test.cc
index 3bfddc9..69a4368 100644
--- a/src/tint/writer/msl/generator_impl_constructor_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_constructor_test.cc
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 #include "gmock/gmock.h"
-#include "src/tint/writer/msl/test_helper.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl_continue_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_continue_test.cc
similarity index 95%
rename from src/tint/writer/msl/generator_impl_continue_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_continue_test.cc
index 60b56cd..45fd112 100644
--- a/src/tint/writer/msl/generator_impl_continue_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_continue_test.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/writer/msl/test_helper.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl_discard_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_discard_test.cc
similarity index 95%
rename from src/tint/writer/msl/generator_impl_discard_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_discard_test.cc
index ae8ad38..5737bca 100644
--- a/src/tint/writer/msl/generator_impl_discard_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_discard_test.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/writer/msl/test_helper.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl_function_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_function_test.cc
similarity index 99%
rename from src/tint/writer/msl/generator_impl_function_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_function_test.cc
index d7c9ddb..c9ac56d 100644
--- a/src/tint/writer/msl/generator_impl_function_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_function_test.cc
@@ -14,7 +14,7 @@
 
 #include "src/tint/ast/stage_attribute.h"
 #include "src/tint/ast/variable_decl_statement.h"
-#include "src/tint/writer/msl/test_helper.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl_identifier_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_identifier_test.cc
similarity index 94%
rename from src/tint/writer/msl/generator_impl_identifier_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_identifier_test.cc
index 0caf77d..824e48b 100644
--- a/src/tint/writer/msl/generator_impl_identifier_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_identifier_test.cc
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 #include "src/tint/utils/string_stream.h"
-#include "src/tint/writer/msl/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl_if_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_if_test.cc
similarity index 97%
rename from src/tint/writer/msl/generator_impl_if_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_if_test.cc
index 01436f8..b00ee04 100644
--- a/src/tint/writer/msl/generator_impl_if_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_if_test.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/writer/msl/test_helper.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl_import_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_import_test.cc
similarity index 99%
rename from src/tint/writer/msl/generator_impl_import_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_import_test.cc
index 8b4a877..eb18e82 100644
--- a/src/tint/writer/msl/generator_impl_import_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_import_test.cc
@@ -12,9 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 #include "src/tint/sem/call.h"
 #include "src/tint/utils/string_stream.h"
-#include "src/tint/writer/msl/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl_loop_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_loop_test.cc
similarity index 99%
rename from src/tint/writer/msl/generator_impl_loop_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_loop_test.cc
index 88b390e..ed3ca24 100644
--- a/src/tint/writer/msl/generator_impl_loop_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_loop_test.cc
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 #include "src/tint/ast/variable_decl_statement.h"
-#include "src/tint/writer/msl/test_helper.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/writer/msl/generator_impl_member_accessor_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_member_accessor_test.cc
similarity index 96%
rename from src/tint/writer/msl/generator_impl_member_accessor_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_member_accessor_test.cc
index 5765342..4972d7f 100644
--- a/src/tint/writer/msl/generator_impl_member_accessor_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_member_accessor_test.cc
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 #include "src/tint/utils/string_stream.h"
-#include "src/tint/writer/msl/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl_module_constant_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_module_constant_test.cc
similarity index 98%
rename from src/tint/writer/msl/generator_impl_module_constant_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_module_constant_test.cc
index ad5a384..a831d11 100644
--- a/src/tint/writer/msl/generator_impl_module_constant_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_module_constant_test.cc
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 #include "src/tint/ast/id_attribute.h"
-#include "src/tint/writer/msl/test_helper.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl_return_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_return_test.cc
similarity index 95%
rename from src/tint/writer/msl/generator_impl_return_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_return_test.cc
index c3478b3..34d8012 100644
--- a/src/tint/writer/msl/generator_impl_return_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_return_test.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/writer/msl/test_helper.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/writer/msl/generator_impl_sanitizer_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_sanitizer_test.cc
similarity index 99%
rename from src/tint/writer/msl/generator_impl_sanitizer_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_sanitizer_test.cc
index e381c64..6ed2974 100644
--- a/src/tint/writer/msl/generator_impl_sanitizer_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_sanitizer_test.cc
@@ -16,7 +16,7 @@
 #include "src/tint/ast/call_statement.h"
 #include "src/tint/ast/stage_attribute.h"
 #include "src/tint/ast/variable_decl_statement.h"
-#include "src/tint/writer/msl/test_helper.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl_switch_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_switch_test.cc
similarity index 96%
rename from src/tint/writer/msl/generator_impl_switch_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_switch_test.cc
index 4001046..2899a2b 100644
--- a/src/tint/writer/msl/generator_impl_switch_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_switch_test.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/writer/msl/test_helper.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/writer/msl/generator_impl_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_test.cc
similarity index 99%
rename from src/tint/writer/msl/generator_impl_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_test.cc
index fb5bd6b..e898da1 100644
--- a/src/tint/writer/msl/generator_impl_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_test.cc
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 #include "src/tint/ast/stage_attribute.h"
-#include "src/tint/writer/msl/test_helper.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/writer/msl/generator_impl_type_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_type_test.cc
similarity index 99%
rename from src/tint/writer/msl/generator_impl_type_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_type_test.cc
index b047a24..03242b8 100644
--- a/src/tint/writer/msl/generator_impl_type_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_type_test.cc
@@ -16,6 +16,7 @@
 
 #include "gmock/gmock.h"
 
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 #include "src/tint/type/depth_multisampled_texture.h"
 #include "src/tint/type/depth_texture.h"
 #include "src/tint/type/multisampled_texture.h"
@@ -24,7 +25,6 @@
 #include "src/tint/type/storage_texture.h"
 #include "src/tint/type/texture_dimension.h"
 #include "src/tint/utils/string_stream.h"
-#include "src/tint/writer/msl/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl_unary_op_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_unary_op_test.cc
similarity index 97%
rename from src/tint/writer/msl/generator_impl_unary_op_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_unary_op_test.cc
index a19a3b4..b4fc02a 100644
--- a/src/tint/writer/msl/generator_impl_unary_op_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_unary_op_test.cc
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 #include "src/tint/utils/string_stream.h"
-#include "src/tint/writer/msl/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_impl_variable_decl_statement_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_variable_decl_statement_test.cc
similarity index 99%
rename from src/tint/writer/msl/generator_impl_variable_decl_statement_test.cc
rename to src/tint/lang/msl/ast_writer/generator_impl_variable_decl_statement_test.cc
index ac318df..0432096 100644
--- a/src/tint/writer/msl/generator_impl_variable_decl_statement_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_variable_decl_statement_test.cc
@@ -14,7 +14,7 @@
 
 #include "gmock/gmock.h"
 #include "src/tint/ast/variable_decl_statement.h"
-#include "src/tint/writer/msl/test_helper.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/generator_support.cc b/src/tint/lang/msl/ast_writer/generator_support.cc
similarity index 98%
rename from src/tint/writer/msl/generator_support.cc
rename to src/tint/lang/msl/ast_writer/generator_support.cc
index 4e3118b..7da52b3 100644
--- a/src/tint/writer/msl/generator_support.cc
+++ b/src/tint/lang/msl/ast_writer/generator_support.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/writer/msl/generator_support.h"
+#include "src/tint/lang/msl/ast_writer/generator_support.h"
 
 #include <cmath>
 #include <limits>
diff --git a/src/tint/writer/msl/generator_support.h b/src/tint/lang/msl/ast_writer/generator_support.h
similarity index 92%
rename from src/tint/writer/msl/generator_support.h
rename to src/tint/lang/msl/ast_writer/generator_support.h
index c510f56..c6f2a8d 100644
--- a/src/tint/writer/msl/generator_support.h
+++ b/src/tint/lang/msl/ast_writer/generator_support.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_WRITER_MSL_GENERATOR_SUPPORT_H_
-#define SRC_TINT_WRITER_MSL_GENERATOR_SUPPORT_H_
+#ifndef SRC_TINT_LANG_MSL_AST_WRITER_GENERATOR_SUPPORT_H_
+#define SRC_TINT_LANG_MSL_AST_WRITER_GENERATOR_SUPPORT_H_
 
 #include <cstdint>
 #include <string>
@@ -67,4 +67,4 @@
 
 }  // namespace tint::writer::msl
 
-#endif  // SRC_TINT_WRITER_MSL_GENERATOR_SUPPORT_H_
+#endif  // SRC_TINT_LANG_MSL_AST_WRITER_GENERATOR_SUPPORT_H_
diff --git a/src/tint/writer/msl/generator_support_test.cc b/src/tint/lang/msl/ast_writer/generator_support_test.cc
similarity index 95%
rename from src/tint/writer/msl/generator_support_test.cc
rename to src/tint/lang/msl/ast_writer/generator_support_test.cc
index 24f6f92..06232a7 100644
--- a/src/tint/writer/msl/generator_support_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_support_test.cc
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/writer/msl/generator_support.h"
-#include "src/tint/writer/msl/test_helper.h"
+#include "src/tint/lang/msl/ast_writer/generator_support.h"
+#include "src/tint/lang/msl/ast_writer/test_helper.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/test_helper.h b/src/tint/lang/msl/ast_writer/test_helper.h
similarity index 92%
rename from src/tint/writer/msl/test_helper.h
rename to src/tint/lang/msl/ast_writer/test_helper.h
index 78be5af..20574af 100644
--- a/src/tint/writer/msl/test_helper.h
+++ b/src/tint/lang/msl/ast_writer/test_helper.h
@@ -12,17 +12,17 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_WRITER_MSL_TEST_HELPER_H_
-#define SRC_TINT_WRITER_MSL_TEST_HELPER_H_
+#ifndef SRC_TINT_LANG_MSL_AST_WRITER_TEST_HELPER_H_
+#define SRC_TINT_LANG_MSL_AST_WRITER_TEST_HELPER_H_
 
 #include <memory>
 #include <string>
 #include <utility>
 
 #include "gtest/gtest.h"
+#include "src/tint/lang/msl/ast_writer/generator.h"
+#include "src/tint/lang/msl/ast_writer/generator_impl.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/writer/msl/generator.h"
-#include "src/tint/writer/msl/generator_impl.h"
 
 namespace tint::writer::msl {
 
@@ -103,4 +103,4 @@
 
 }  // namespace tint::writer::msl
 
-#endif  // SRC_TINT_WRITER_MSL_TEST_HELPER_H_
+#endif  // SRC_TINT_LANG_MSL_AST_WRITER_TEST_HELPER_H_
diff --git a/src/tint/writer/msl/ir/generator_impl_ir.cc b/src/tint/lang/msl/writer/generator_impl_ir.cc
similarity index 98%
rename from src/tint/writer/msl/ir/generator_impl_ir.cc
rename to src/tint/lang/msl/writer/generator_impl_ir.cc
index f17f846..8101ed1 100644
--- a/src/tint/writer/msl/ir/generator_impl_ir.cc
+++ b/src/tint/lang/msl/writer/generator_impl_ir.cc
@@ -12,12 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/writer/msl/ir/generator_impl_ir.h"
+#include "src/tint/lang/msl/writer/generator_impl_ir.h"
 
 #include "src/tint/constant/composite.h"
 #include "src/tint/constant/splat.h"
 #include "src/tint/ir/constant.h"
 #include "src/tint/ir/validator.h"
+#include "src/tint/lang/msl/ast_writer/generator_support.h"
 #include "src/tint/switch.h"
 #include "src/tint/transform/manager.h"
 #include "src/tint/type/array.h"
@@ -39,7 +40,6 @@
 #include "src/tint/type/vector.h"
 #include "src/tint/type/void.h"
 #include "src/tint/utils/scoped_assignment.h"
-#include "src/tint/writer/msl/generator_support.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/ir/generator_impl_ir.h b/src/tint/lang/msl/writer/generator_impl_ir.h
similarity index 95%
rename from src/tint/writer/msl/ir/generator_impl_ir.h
rename to src/tint/lang/msl/writer/generator_impl_ir.h
index 80f0cb2..506de7b 100644
--- a/src/tint/writer/msl/ir/generator_impl_ir.h
+++ b/src/tint/lang/msl/writer/generator_impl_ir.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_WRITER_MSL_IR_GENERATOR_IMPL_IR_H_
-#define SRC_TINT_WRITER_MSL_IR_GENERATOR_IMPL_IR_H_
+#ifndef SRC_TINT_LANG_MSL_WRITER_GENERATOR_IMPL_IR_H_
+#define SRC_TINT_LANG_MSL_WRITER_GENERATOR_IMPL_IR_H_
 
 #include <string>
 #include <unordered_set>
@@ -106,4 +106,4 @@
 
 }  // namespace tint::writer::msl
 
-#endif  // SRC_TINT_WRITER_MSL_IR_GENERATOR_IMPL_IR_H_
+#endif  // SRC_TINT_LANG_MSL_WRITER_GENERATOR_IMPL_IR_H_
diff --git a/src/tint/writer/msl/ir/generator_impl_ir_constant_test.cc b/src/tint/lang/msl/writer/generator_impl_ir_constant_test.cc
similarity index 99%
rename from src/tint/writer/msl/ir/generator_impl_ir_constant_test.cc
rename to src/tint/lang/msl/writer/generator_impl_ir_constant_test.cc
index 9cdd570..6e0e365 100644
--- a/src/tint/writer/msl/ir/generator_impl_ir_constant_test.cc
+++ b/src/tint/lang/msl/writer/generator_impl_ir_constant_test.cc
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/msl/writer/test_helper_ir.h"
 #include "src/tint/type/array.h"
 #include "src/tint/type/matrix.h"
 #include "src/tint/utils/string.h"
-#include "src/tint/writer/msl/ir/test_helper_ir.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/ir/generator_impl_ir_function_test.cc b/src/tint/lang/msl/writer/generator_impl_ir_function_test.cc
similarity index 94%
rename from src/tint/writer/msl/ir/generator_impl_ir_function_test.cc
rename to src/tint/lang/msl/writer/generator_impl_ir_function_test.cc
index 15478b7..c24bea3 100644
--- a/src/tint/writer/msl/ir/generator_impl_ir_function_test.cc
+++ b/src/tint/lang/msl/writer/generator_impl_ir_function_test.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/writer/msl/ir/test_helper_ir.h"
+#include "src/tint/lang/msl/writer/test_helper_ir.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/ir/generator_impl_ir_type_test.cc b/src/tint/lang/msl/writer/generator_impl_ir_type_test.cc
similarity index 99%
rename from src/tint/writer/msl/ir/generator_impl_ir_type_test.cc
rename to src/tint/lang/msl/writer/generator_impl_ir_type_test.cc
index 3e82c1b..c6e858b 100644
--- a/src/tint/writer/msl/ir/generator_impl_ir_type_test.cc
+++ b/src/tint/lang/msl/writer/generator_impl_ir_type_test.cc
@@ -14,6 +14,7 @@
 
 #include "gmock/gmock.h"
 
+#include "src/tint/lang/msl/writer/test_helper_ir.h"
 #include "src/tint/type/array.h"
 #include "src/tint/type/depth_multisampled_texture.h"
 #include "src/tint/type/depth_texture.h"
@@ -23,7 +24,6 @@
 #include "src/tint/type/storage_texture.h"
 #include "src/tint/type/struct.h"
 #include "src/tint/utils/string.h"
-#include "src/tint/writer/msl/ir/test_helper_ir.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/writer/msl/ir/test_helper_ir.h b/src/tint/lang/msl/writer/test_helper_ir.h
similarity index 89%
rename from src/tint/writer/msl/ir/test_helper_ir.h
rename to src/tint/lang/msl/writer/test_helper_ir.h
index f7c8d46..9dd4f32 100644
--- a/src/tint/writer/msl/ir/test_helper_ir.h
+++ b/src/tint/lang/msl/writer/test_helper_ir.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_WRITER_MSL_IR_TEST_HELPER_IR_H_
-#define SRC_TINT_WRITER_MSL_IR_TEST_HELPER_IR_H_
+#ifndef SRC_TINT_LANG_MSL_WRITER_TEST_HELPER_IR_H_
+#define SRC_TINT_LANG_MSL_WRITER_TEST_HELPER_IR_H_
 
 #include <iostream>
 #include <string>
@@ -21,7 +21,7 @@
 #include "gtest/gtest.h"
 #include "src/tint/ir/builder.h"
 #include "src/tint/ir/validator.h"
-#include "src/tint/writer/msl/ir/generator_impl_ir.h"
+#include "src/tint/lang/msl/writer/generator_impl_ir.h"
 
 namespace tint::writer::msl {
 
@@ -66,4 +66,4 @@
 
 }  // namespace tint::writer::msl
 
-#endif  // SRC_TINT_WRITER_MSL_IR_TEST_HELPER_IR_H_
+#endif  // SRC_TINT_LANG_MSL_WRITER_TEST_HELPER_IR_H_