[shuffle] Move sem to new structure.

This CL moves the sem folder into the `lang/wgsl/sem` 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: I910072b7384ab7622e502034b13bf0f421024ef6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/142040
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/tint/BUILD.gn b/src/tint/BUILD.gn
index 5756fdf..2060c17 100644
--- a/src/tint/BUILD.gn
+++ b/src/tint/BUILD.gn
@@ -730,76 +730,76 @@
 
 libtint_source_set("libtint_sem_src") {
   sources = [
-    "sem/accessor_expression.cc",
-    "sem/accessor_expression.h",
-    "sem/array_count.cc",
-    "sem/array_count.h",
-    "sem/behavior.cc",
-    "sem/behavior.h",
-    "sem/binding_point.h",
-    "sem/block_statement.cc",
-    "sem/block_statement.h",
-    "sem/break_if_statement.cc",
-    "sem/break_if_statement.h",
-    "sem/builtin.cc",
-    "sem/builtin.h",
-    "sem/builtin_enum_expression.cc",
-    "sem/builtin_enum_expression.h",
-    "sem/call.cc",
-    "sem/call.h",
-    "sem/call_target.cc",
-    "sem/call_target.h",
-    "sem/evaluation_stage.h",
-    "sem/expression.cc",
-    "sem/expression.h",
-    "sem/external_texture.h",
-    "sem/for_loop_statement.cc",
-    "sem/for_loop_statement.h",
-    "sem/function.cc",
-    "sem/function.h",
-    "sem/function_expression.cc",
-    "sem/function_expression.h",
-    "sem/if_statement.cc",
-    "sem/if_statement.h",
-    "sem/index_accessor_expression.cc",
-    "sem/index_accessor_expression.h",
-    "sem/info.cc",
-    "sem/info.h",
-    "sem/load.cc",
-    "sem/load.h",
-    "sem/loop_statement.cc",
-    "sem/loop_statement.h",
-    "sem/materialize.cc",
-    "sem/materialize.h",
-    "sem/member_accessor_expression.cc",
-    "sem/member_accessor_expression.h",
-    "sem/module.cc",
-    "sem/module.h",
-    "sem/node.cc",
-    "sem/node.h",
-    "sem/parameter_usage.cc",
-    "sem/parameter_usage.h",
-    "sem/pipeline_stage_set.h",
-    "sem/sampler_texture_pair.h",
-    "sem/statement.cc",
-    "sem/statement.h",
-    "sem/struct.cc",
-    "sem/struct.h",
-    "sem/switch_statement.cc",
-    "sem/switch_statement.h",
-    "sem/type_expression.cc",
-    "sem/type_expression.h",
-    "sem/type_mappings.h",
-    "sem/value_constructor.cc",
-    "sem/value_constructor.h",
-    "sem/value_conversion.cc",
-    "sem/value_conversion.h",
-    "sem/value_expression.cc",
-    "sem/value_expression.h",
-    "sem/variable.cc",
-    "sem/variable.h",
-    "sem/while_statement.cc",
-    "sem/while_statement.h",
+    "lang/wgsl/sem/accessor_expression.cc",
+    "lang/wgsl/sem/accessor_expression.h",
+    "lang/wgsl/sem/array_count.cc",
+    "lang/wgsl/sem/array_count.h",
+    "lang/wgsl/sem/behavior.cc",
+    "lang/wgsl/sem/behavior.h",
+    "lang/wgsl/sem/binding_point.h",
+    "lang/wgsl/sem/block_statement.cc",
+    "lang/wgsl/sem/block_statement.h",
+    "lang/wgsl/sem/break_if_statement.cc",
+    "lang/wgsl/sem/break_if_statement.h",
+    "lang/wgsl/sem/builtin.cc",
+    "lang/wgsl/sem/builtin.h",
+    "lang/wgsl/sem/builtin_enum_expression.cc",
+    "lang/wgsl/sem/builtin_enum_expression.h",
+    "lang/wgsl/sem/call.cc",
+    "lang/wgsl/sem/call.h",
+    "lang/wgsl/sem/call_target.cc",
+    "lang/wgsl/sem/call_target.h",
+    "lang/wgsl/sem/evaluation_stage.h",
+    "lang/wgsl/sem/expression.cc",
+    "lang/wgsl/sem/expression.h",
+    "lang/wgsl/sem/external_texture.h",
+    "lang/wgsl/sem/for_loop_statement.cc",
+    "lang/wgsl/sem/for_loop_statement.h",
+    "lang/wgsl/sem/function.cc",
+    "lang/wgsl/sem/function.h",
+    "lang/wgsl/sem/function_expression.cc",
+    "lang/wgsl/sem/function_expression.h",
+    "lang/wgsl/sem/if_statement.cc",
+    "lang/wgsl/sem/if_statement.h",
+    "lang/wgsl/sem/index_accessor_expression.cc",
+    "lang/wgsl/sem/index_accessor_expression.h",
+    "lang/wgsl/sem/info.cc",
+    "lang/wgsl/sem/info.h",
+    "lang/wgsl/sem/load.cc",
+    "lang/wgsl/sem/load.h",
+    "lang/wgsl/sem/loop_statement.cc",
+    "lang/wgsl/sem/loop_statement.h",
+    "lang/wgsl/sem/materialize.cc",
+    "lang/wgsl/sem/materialize.h",
+    "lang/wgsl/sem/member_accessor_expression.cc",
+    "lang/wgsl/sem/member_accessor_expression.h",
+    "lang/wgsl/sem/module.cc",
+    "lang/wgsl/sem/module.h",
+    "lang/wgsl/sem/node.cc",
+    "lang/wgsl/sem/node.h",
+    "lang/wgsl/sem/parameter_usage.cc",
+    "lang/wgsl/sem/parameter_usage.h",
+    "lang/wgsl/sem/pipeline_stage_set.h",
+    "lang/wgsl/sem/sampler_texture_pair.h",
+    "lang/wgsl/sem/statement.cc",
+    "lang/wgsl/sem/statement.h",
+    "lang/wgsl/sem/struct.cc",
+    "lang/wgsl/sem/struct.h",
+    "lang/wgsl/sem/switch_statement.cc",
+    "lang/wgsl/sem/switch_statement.h",
+    "lang/wgsl/sem/type_expression.cc",
+    "lang/wgsl/sem/type_expression.h",
+    "lang/wgsl/sem/type_mappings.h",
+    "lang/wgsl/sem/value_constructor.cc",
+    "lang/wgsl/sem/value_constructor.h",
+    "lang/wgsl/sem/value_conversion.cc",
+    "lang/wgsl/sem/value_conversion.h",
+    "lang/wgsl/sem/value_expression.cc",
+    "lang/wgsl/sem/value_expression.h",
+    "lang/wgsl/sem/variable.cc",
+    "lang/wgsl/sem/variable.h",
+    "lang/wgsl/sem/while_statement.cc",
+    "lang/wgsl/sem/while_statement.h",
   ]
 
   deps = [
@@ -1777,10 +1777,10 @@
 
   tint_unittests_source_set("tint_unittests_sem_src") {
     sources = [
-      "sem/builtin_test.cc",
-      "sem/diagnostic_severity_test.cc",
-      "sem/struct_test.cc",
-      "sem/value_expression_test.cc",
+      "lang/wgsl/sem/builtin_test.cc",
+      "lang/wgsl/sem/diagnostic_severity_test.cc",
+      "lang/wgsl/sem/struct_test.cc",
+      "lang/wgsl/sem/value_expression_test.cc",
     ]
   }
 
diff --git a/src/tint/CMakeLists.txt b/src/tint/CMakeLists.txt
index fc1ab0e..e171120 100644
--- a/src/tint/CMakeLists.txt
+++ b/src/tint/CMakeLists.txt
@@ -286,70 +286,70 @@
   resolver/validator.h
   scope_stack.h
   switch.h
-  sem/accessor_expression.cc
-  sem/accessor_expression.h
-  sem/array_count.cc
-  sem/array_count.h
-  sem/behavior.cc
-  sem/behavior.h
-  sem/binding_point.h
-  sem/block_statement.cc
-  sem/block_statement.h
-  sem/break_if_statement.cc
-  sem/break_if_statement.h
-  sem/builtin.cc
-  sem/builtin.h
-  sem/builtin_enum_expression.cc
-  sem/builtin_enum_expression.h
-  sem/call_target.cc
-  sem/call_target.h
-  sem/call.cc
-  sem/call.h
-  sem/evaluation_stage.h
-  sem/expression.cc
-  sem/expression.h
-  sem/external_texture.h
-  sem/for_loop_statement.cc
-  sem/for_loop_statement.h
-  sem/function_expression.cc
-  sem/function_expression.h
-  sem/function.cc
-  sem/if_statement.cc
-  sem/if_statement.h
-  sem/index_accessor_expression.cc
-  sem/index_accessor_expression.h
-  sem/info.cc
-  sem/info.h
-  sem/load.cc
-  sem/load.h
-  sem/loop_statement.cc
-  sem/loop_statement.h
-  sem/materialize.cc
-  sem/materialize.h
-  sem/member_accessor_expression.cc
-  sem/module.cc
-  sem/module.h
-  sem/node.cc
-  sem/node.h
-  sem/pipeline_stage_set.h
-  sem/sampler_texture_pair.h
-  sem/statement.cc
-  sem/struct.cc
-  sem/struct.h
-  sem/switch_statement.cc
-  sem/switch_statement.h
-  sem/type_expression.cc
-  sem/type_expression.h
-  sem/type_mappings.h
-  sem/variable.cc
-  sem/value_constructor.cc
-  sem/value_constructor.h
-  sem/value_conversion.cc
-  sem/value_conversion.h
-  sem/value_expression.cc
-  sem/value_expression.h
-  sem/while_statement.cc
-  sem/while_statement.h
+  lang/wgsl/sem/accessor_expression.cc
+  lang/wgsl/sem/accessor_expression.h
+  lang/wgsl/sem/array_count.cc
+  lang/wgsl/sem/array_count.h
+  lang/wgsl/sem/behavior.cc
+  lang/wgsl/sem/behavior.h
+  lang/wgsl/sem/binding_point.h
+  lang/wgsl/sem/block_statement.cc
+  lang/wgsl/sem/block_statement.h
+  lang/wgsl/sem/break_if_statement.cc
+  lang/wgsl/sem/break_if_statement.h
+  lang/wgsl/sem/builtin.cc
+  lang/wgsl/sem/builtin.h
+  lang/wgsl/sem/builtin_enum_expression.cc
+  lang/wgsl/sem/builtin_enum_expression.h
+  lang/wgsl/sem/call_target.cc
+  lang/wgsl/sem/call_target.h
+  lang/wgsl/sem/call.cc
+  lang/wgsl/sem/call.h
+  lang/wgsl/sem/evaluation_stage.h
+  lang/wgsl/sem/expression.cc
+  lang/wgsl/sem/expression.h
+  lang/wgsl/sem/external_texture.h
+  lang/wgsl/sem/for_loop_statement.cc
+  lang/wgsl/sem/for_loop_statement.h
+  lang/wgsl/sem/function_expression.cc
+  lang/wgsl/sem/function_expression.h
+  lang/wgsl/sem/function.cc
+  lang/wgsl/sem/if_statement.cc
+  lang/wgsl/sem/if_statement.h
+  lang/wgsl/sem/index_accessor_expression.cc
+  lang/wgsl/sem/index_accessor_expression.h
+  lang/wgsl/sem/info.cc
+  lang/wgsl/sem/info.h
+  lang/wgsl/sem/load.cc
+  lang/wgsl/sem/load.h
+  lang/wgsl/sem/loop_statement.cc
+  lang/wgsl/sem/loop_statement.h
+  lang/wgsl/sem/materialize.cc
+  lang/wgsl/sem/materialize.h
+  lang/wgsl/sem/member_accessor_expression.cc
+  lang/wgsl/sem/module.cc
+  lang/wgsl/sem/module.h
+  lang/wgsl/sem/node.cc
+  lang/wgsl/sem/node.h
+  lang/wgsl/sem/pipeline_stage_set.h
+  lang/wgsl/sem/sampler_texture_pair.h
+  lang/wgsl/sem/statement.cc
+  lang/wgsl/sem/struct.cc
+  lang/wgsl/sem/struct.h
+  lang/wgsl/sem/switch_statement.cc
+  lang/wgsl/sem/switch_statement.h
+  lang/wgsl/sem/type_expression.cc
+  lang/wgsl/sem/type_expression.h
+  lang/wgsl/sem/type_mappings.h
+  lang/wgsl/sem/variable.cc
+  lang/wgsl/sem/value_constructor.cc
+  lang/wgsl/sem/value_constructor.h
+  lang/wgsl/sem/value_conversion.cc
+  lang/wgsl/sem/value_conversion.h
+  lang/wgsl/sem/value_expression.cc
+  lang/wgsl/sem/value_expression.h
+  lang/wgsl/sem/while_statement.cc
+  lang/wgsl/sem/while_statement.h
   symbol_table.cc
   symbol_table.h
   symbol.cc
@@ -603,7 +603,7 @@
 tint_generated(builtin/texel_format BENCH TEST)
 
 tint_generated(resolver/ctor_conv_intrinsic)
-tint_generated(sem/parameter_usage)
+tint_generated(lang/wgsl/sem/parameter_usage)
 
 if(UNIX)
   list(APPEND TINT_LIB_SRCS diagnostic/printer_posix.cc)
@@ -1088,10 +1088,10 @@
     resolver/variable_test.cc
     resolver/variable_validation_test.cc
     scope_stack_test.cc
-    sem/builtin_test.cc
-    sem/diagnostic_severity_test.cc
-    sem/struct_test.cc
-    sem/value_expression_test.cc
+    lang/wgsl/sem/builtin_test.cc
+    lang/wgsl/sem/diagnostic_severity_test.cc
+    lang/wgsl/sem/struct_test.cc
+    lang/wgsl/sem/value_expression_test.cc
     source_test.cc
     switch_test.cc
     symbol_table_test.cc
diff --git a/src/tint/cmd/generate_external_texture_bindings.cc b/src/tint/cmd/generate_external_texture_bindings.cc
index 5e022b9..3c8656f 100644
--- a/src/tint/cmd/generate_external_texture_bindings.cc
+++ b/src/tint/cmd/generate_external_texture_bindings.cc
@@ -19,9 +19,9 @@
 #include <vector>
 
 #include "src/tint/lang/wgsl/ast/module.h"
+#include "src/tint/lang/wgsl/sem/binding_point.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program.h"
-#include "src/tint/sem/binding_point.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/type/external_texture.h"
 
 namespace tint::cmd {
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/jump_tracker.cc b/src/tint/fuzzers/tint_ast_fuzzer/jump_tracker.cc
index cf34941..e9baead 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/jump_tracker.cc
+++ b/src/tint/fuzzers/tint_ast_fuzzer/jump_tracker.cc
@@ -24,7 +24,7 @@
 #include "src/tint/lang/wgsl/ast/return_statement.h"
 #include "src/tint/lang/wgsl/ast/switch_statement.h"
 #include "src/tint/lang/wgsl/ast/while_statement.h"
-#include "src/tint/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
 
 namespace tint::fuzzers::ast_fuzzer {
 
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/mutation_finders/delete_statements.cc b/src/tint/fuzzers/tint_ast_fuzzer/mutation_finders/delete_statements.cc
index 90c0820..e3fcf60 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/mutation_finders/delete_statements.cc
+++ b/src/tint/fuzzers/tint_ast_fuzzer/mutation_finders/delete_statements.cc
@@ -19,9 +19,9 @@
 #include "src/tint/fuzzers/tint_ast_fuzzer/jump_tracker.h"
 #include "src/tint/fuzzers/tint_ast_fuzzer/mutations/delete_statement.h"
 #include "src/tint/fuzzers/tint_ast_fuzzer/util.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/value_expression.h"
-#include "src/tint/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 
 namespace tint::fuzzers::ast_fuzzer {
 
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/mutation_finders/replace_identifiers.cc b/src/tint/fuzzers/tint_ast_fuzzer/mutation_finders/replace_identifiers.cc
index 7560cf7..a382b6c 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/mutation_finders/replace_identifiers.cc
+++ b/src/tint/fuzzers/tint_ast_fuzzer/mutation_finders/replace_identifiers.cc
@@ -19,9 +19,9 @@
 #include "src/tint/fuzzers/tint_ast_fuzzer/mutations/replace_identifier.h"
 #include "src/tint/fuzzers/tint_ast_fuzzer/util.h"
 
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/value_expression.h"
-#include "src/tint/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 
 namespace tint::fuzzers::ast_fuzzer {
 
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/mutation_finders/wrap_unary_operators.cc b/src/tint/fuzzers/tint_ast_fuzzer/mutation_finders/wrap_unary_operators.cc
index 7b3c416..674df0d 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/mutation_finders/wrap_unary_operators.cc
+++ b/src/tint/fuzzers/tint_ast_fuzzer/mutation_finders/wrap_unary_operators.cc
@@ -20,8 +20,8 @@
 #include "src/tint/fuzzers/tint_ast_fuzzer/expression_size.h"
 #include "src/tint/fuzzers/tint_ast_fuzzer/mutations/wrap_unary_operator.h"
 #include "src/tint/fuzzers/tint_ast_fuzzer/util.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 
 namespace tint::fuzzers::ast_fuzzer {
 
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_binary_operator.h b/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_binary_operator.h
index 00d6af3..b446eb6 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_binary_operator.h
+++ b/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_binary_operator.h
@@ -18,8 +18,8 @@
 #include "src/tint/fuzzers/tint_ast_fuzzer/mutation.h"
 
 #include "src/tint/lang/wgsl/ast/binary_expression.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program.h"
-#include "src/tint/sem/variable.h"
 
 namespace tint::fuzzers::ast_fuzzer {
 
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_unary_operator.h b/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_unary_operator.h
index 7fd2ff0..8baf194 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_unary_operator.h
+++ b/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_unary_operator.h
@@ -17,7 +17,7 @@
 
 #include "src/tint/fuzzers/tint_ast_fuzzer/mutation.h"
 #include "src/tint/lang/wgsl/ast/unary_op.h"
-#include "src/tint/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 
 namespace tint::fuzzers::ast_fuzzer {
 
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/mutations/delete_statement.cc b/src/tint/fuzzers/tint_ast_fuzzer/mutations/delete_statement.cc
index b91b9d0..b052755 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/mutations/delete_statement.cc
+++ b/src/tint/fuzzers/tint_ast_fuzzer/mutations/delete_statement.cc
@@ -25,11 +25,11 @@
 #include "src/tint/lang/wgsl/ast/if_statement.h"
 #include "src/tint/lang/wgsl/ast/loop_statement.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
+#include "src/tint/lang/wgsl/sem/for_loop_statement.h"
+#include "src/tint/lang/wgsl/sem/if_statement.h"
+#include "src/tint/lang/wgsl/sem/loop_statement.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/for_loop_statement.h"
-#include "src/tint/sem/if_statement.h"
-#include "src/tint/sem/loop_statement.h"
-#include "src/tint/sem/statement.h"
 
 namespace tint::fuzzers::ast_fuzzer {
 
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/mutations/replace_identifier.h b/src/tint/fuzzers/tint_ast_fuzzer/mutations/replace_identifier.h
index 66490ad..3fe729a 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/mutations/replace_identifier.h
+++ b/src/tint/fuzzers/tint_ast_fuzzer/mutations/replace_identifier.h
@@ -17,7 +17,7 @@
 
 #include "src/tint/fuzzers/tint_ast_fuzzer/mutation.h"
 
-#include "src/tint/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 
 namespace tint::fuzzers::ast_fuzzer {
 
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/mutations/wrap_unary_operator.cc b/src/tint/fuzzers/tint_ast_fuzzer/mutations/wrap_unary_operator.cc
index 6f6efc2..c1cad51 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/mutations/wrap_unary_operator.cc
+++ b/src/tint/fuzzers/tint_ast_fuzzer/mutations/wrap_unary_operator.cc
@@ -17,9 +17,9 @@
 #include <utility>
 #include <vector>
 
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/statement.h"
 #include "src/tint/type/abstract_float.h"
 #include "src/tint/type/abstract_int.h"
 
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/mutations/wrap_unary_operator.h b/src/tint/fuzzers/tint_ast_fuzzer/mutations/wrap_unary_operator.h
index 9af431f..58c70ee 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/mutations/wrap_unary_operator.h
+++ b/src/tint/fuzzers/tint_ast_fuzzer/mutations/wrap_unary_operator.h
@@ -20,7 +20,7 @@
 #include "src/tint/fuzzers/tint_ast_fuzzer/mutation.h"
 
 #include "src/tint/lang/wgsl/ast/unary_op.h"
-#include "src/tint/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 
 namespace tint::fuzzers::ast_fuzzer {
 
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/util.h b/src/tint/fuzzers/tint_ast_fuzzer/util.h
index 59d9bf1..d723c09 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/util.h
+++ b/src/tint/fuzzers/tint_ast_fuzzer/util.h
@@ -19,11 +19,11 @@
 
 #include "src/tint/lang/wgsl/ast/module.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/utils/castable.h"
 
 namespace tint::fuzzers::ast_fuzzer::util {
diff --git a/src/tint/fuzzers/tint_common_fuzzer.cc b/src/tint/fuzzers/tint_common_fuzzer.cc
index 51895e1..1464cdb 100644
--- a/src/tint/fuzzers/tint_common_fuzzer.cc
+++ b/src/tint/fuzzers/tint_common_fuzzer.cc
@@ -33,9 +33,9 @@
 #include "src/tint/diagnostic/formatter.h"
 #include "src/tint/fuzzers/apply_substitute_overrides.h"
 #include "src/tint/lang/wgsl/ast/module.h"
+#include "src/tint/lang/wgsl/sem/binding_point.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program.h"
-#include "src/tint/sem/binding_point.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/type/external_texture.h"
 #include "src/tint/utils/hash.h"
 #include "src/tint/writer/flatten_bindings.h"
diff --git a/src/tint/inspector/inspector.cc b/src/tint/inspector/inspector.cc
index 6d45a6c..01cf7a0 100644
--- a/src/tint/inspector/inspector.cc
+++ b/src/tint/inspector/inspector.cc
@@ -32,13 +32,13 @@
 #include "src/tint/lang/wgsl/ast/module.h"
 #include "src/tint/lang/wgsl/ast/override.h"
 #include "src/tint/lang/wgsl/ast/var.h"
-#include "src/tint/sem/builtin_enum_expression.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/module.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/struct.h"
-#include "src/tint/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/builtin_enum_expression.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/module.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/switch.h"
 #include "src/tint/type/array.h"
 #include "src/tint/type/bool.h"
diff --git a/src/tint/inspector/inspector.h b/src/tint/inspector/inspector.h
index a4cfe6e..b0780d1 100644
--- a/src/tint/inspector/inspector.h
+++ b/src/tint/inspector/inspector.h
@@ -29,8 +29,8 @@
 #include "src/tint/inspector/entry_point.h"
 #include "src/tint/inspector/resource_binding.h"
 #include "src/tint/inspector/scalar.h"
+#include "src/tint/lang/wgsl/sem/sampler_texture_pair.h"
 #include "src/tint/program.h"
-#include "src/tint/sem/sampler_texture_pair.h"
 #include "src/tint/utils/unique_vector.h"
 
 namespace tint::inspector {
diff --git a/src/tint/inspector/inspector_test.cc b/src/tint/inspector/inspector_test.cc
index 04a58d6..e24ca98 100644
--- a/src/tint/inspector/inspector_test.cc
+++ b/src/tint/inspector/inspector_test.cc
@@ -21,8 +21,8 @@
 #include "src/tint/lang/wgsl/ast/id_attribute.h"
 #include "src/tint/lang/wgsl/ast/stage_attribute.h"
 #include "src/tint/lang/wgsl/ast/workgroup_attribute.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/type/depth_texture.h"
 #include "src/tint/type/external_texture.h"
 #include "src/tint/type/multisampled_texture.h"
diff --git a/src/tint/inspector/test_inspector_builder.h b/src/tint/inspector/test_inspector_builder.h
index ed6d1c0..45b5e0b 100644
--- a/src/tint/inspector/test_inspector_builder.h
+++ b/src/tint/inspector/test_inspector_builder.h
@@ -25,8 +25,8 @@
 #include "src/tint/lang/wgsl/ast/id_attribute.h"
 #include "src/tint/lang/wgsl/ast/stage_attribute.h"
 #include "src/tint/lang/wgsl/ast/workgroup_attribute.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/type/depth_texture.h"
 #include "src/tint/type/external_texture.h"
 #include "src/tint/type/multisampled_texture.h"
diff --git a/src/tint/ir/from_program.cc b/src/tint/ir/from_program.cc
index 9c3aec1..dadbd3a 100644
--- a/src/tint/ir/from_program.cc
+++ b/src/tint/ir/from_program.cc
@@ -80,21 +80,21 @@
 #include "src/tint/lang/wgsl/ast/var.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
 #include "src/tint/lang/wgsl/ast/while_statement.h"
+#include "src/tint/lang/wgsl/sem/builtin.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/load.h"
+#include "src/tint/lang/wgsl/sem/materialize.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/module.h"
+#include "src/tint/lang/wgsl/sem/switch_statement.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
+#include "src/tint/lang/wgsl/sem/value_conversion.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program.h"
 #include "src/tint/scope_stack.h"
-#include "src/tint/sem/builtin.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/index_accessor_expression.h"
-#include "src/tint/sem/load.h"
-#include "src/tint/sem/materialize.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/module.h"
-#include "src/tint/sem/switch_statement.h"
-#include "src/tint/sem/value_constructor.h"
-#include "src/tint/sem/value_conversion.h"
-#include "src/tint/sem/value_expression.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/switch.h"
 #include "src/tint/type/pointer.h"
 #include "src/tint/type/reference.h"
diff --git a/src/tint/lang/glsl/ast_writer/generator.h b/src/tint/lang/glsl/ast_writer/generator.h
index 039d75a..06e4e18 100644
--- a/src/tint/lang/glsl/ast_writer/generator.h
+++ b/src/tint/lang/glsl/ast_writer/generator.h
@@ -24,8 +24,8 @@
 #include "src/tint/builtin/access.h"
 #include "src/tint/lang/glsl/ast_writer/version.h"
 #include "src/tint/lang/wgsl/ast/pipeline_stage.h"
-#include "src/tint/sem/binding_point.h"
-#include "src/tint/sem/sampler_texture_pair.h"
+#include "src/tint/lang/wgsl/sem/binding_point.h"
+#include "src/tint/lang/wgsl/sem/sampler_texture_pair.h"
 #include "src/tint/writer/external_texture_options.h"
 #include "src/tint/writer/text.h"
 
diff --git a/src/tint/lang/glsl/ast_writer/generator_impl.cc b/src/tint/lang/glsl/ast_writer/generator_impl.cc
index a877cb4..a36f8ad 100644
--- a/src/tint/lang/glsl/ast_writer/generator_impl.cc
+++ b/src/tint/lang/glsl/ast_writer/generator_impl.cc
@@ -55,17 +55,17 @@
 #include "src/tint/lang/wgsl/ast/transform/unshadow.h"
 #include "src/tint/lang/wgsl/ast/transform/zero_init_workgroup_memory.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/module.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/struct.h"
-#include "src/tint/sem/switch_statement.h"
-#include "src/tint/sem/value_constructor.h"
-#include "src/tint/sem/value_conversion.h"
-#include "src/tint/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/module.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
+#include "src/tint/lang/wgsl/sem/switch_statement.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
+#include "src/tint/lang/wgsl/sem/value_conversion.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/switch.h"
 #include "src/tint/transform/manager.h"
 #include "src/tint/type/array.h"
diff --git a/src/tint/lang/glsl/ast_writer/generator_impl_builtin_test.cc b/src/tint/lang/glsl/ast_writer/generator_impl_builtin_test.cc
index 4ea0f0d..f6cd9f3 100644
--- a/src/tint/lang/glsl/ast_writer/generator_impl_builtin_test.cc
+++ b/src/tint/lang/glsl/ast_writer/generator_impl_builtin_test.cc
@@ -16,7 +16,7 @@
 #include "src/tint/lang/glsl/ast_writer/test_helper.h"
 #include "src/tint/lang/wgsl/ast/call_statement.h"
 #include "src/tint/lang/wgsl/ast/stage_attribute.h"
-#include "src/tint/sem/call.h"
+#include "src/tint/lang/wgsl/sem/call.h"
 #include "src/tint/utils/string_stream.h"
 
 namespace tint::writer::glsl {
diff --git a/src/tint/lang/hlsl/ast_writer/generator.h b/src/tint/lang/hlsl/ast_writer/generator.h
index 7f74834..1d78af5 100644
--- a/src/tint/lang/hlsl/ast_writer/generator.h
+++ b/src/tint/lang/hlsl/ast_writer/generator.h
@@ -24,8 +24,8 @@
 #include <vector>
 
 #include "src/tint/lang/wgsl/ast/pipeline_stage.h"
+#include "src/tint/lang/wgsl/sem/binding_point.h"
 #include "src/tint/reflection.h"
-#include "src/tint/sem/binding_point.h"
 #include "src/tint/utils/bitset.h"
 #include "src/tint/writer/array_length_from_uniform_options.h"
 #include "src/tint/writer/binding_remapper_options.h"
diff --git a/src/tint/lang/hlsl/ast_writer/generator_impl.cc b/src/tint/lang/hlsl/ast_writer/generator_impl.cc
index eb40897..3ef8e7e 100644
--- a/src/tint/lang/hlsl/ast_writer/generator_impl.cc
+++ b/src/tint/lang/hlsl/ast_writer/generator_impl.cc
@@ -54,17 +54,17 @@
 #include "src/tint/lang/wgsl/ast/transform/vectorize_scalar_matrix_initializers.h"
 #include "src/tint/lang/wgsl/ast/transform/zero_init_workgroup_memory.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/module.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/struct.h"
-#include "src/tint/sem/switch_statement.h"
-#include "src/tint/sem/value_constructor.h"
-#include "src/tint/sem/value_conversion.h"
-#include "src/tint/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/module.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
+#include "src/tint/lang/wgsl/sem/switch_statement.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
+#include "src/tint/lang/wgsl/sem/value_conversion.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/switch.h"
 #include "src/tint/transform/manager.h"
 #include "src/tint/type/array.h"
diff --git a/src/tint/lang/hlsl/ast_writer/generator_impl.h b/src/tint/lang/hlsl/ast_writer/generator_impl.h
index 8e355ff..cc8b7e9 100644
--- a/src/tint/lang/hlsl/ast_writer/generator_impl.h
+++ b/src/tint/lang/hlsl/ast_writer/generator_impl.h
@@ -35,9 +35,9 @@
 #include "src/tint/lang/wgsl/ast/switch_statement.h"
 #include "src/tint/lang/wgsl/ast/transform/decompose_memory_access.h"
 #include "src/tint/lang/wgsl/ast/unary_op_expression.h"
+#include "src/tint/lang/wgsl/sem/binding_point.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/scope_stack.h"
-#include "src/tint/sem/binding_point.h"
 #include "src/tint/utils/hash.h"
 #include "src/tint/writer/array_length_from_uniform_options.h"
 #include "src/tint/writer/ast_text_generator.h"
diff --git a/src/tint/lang/hlsl/ast_writer/generator_impl_builtin_test.cc b/src/tint/lang/hlsl/ast_writer/generator_impl_builtin_test.cc
index 082c735..0135649 100644
--- a/src/tint/lang/hlsl/ast_writer/generator_impl_builtin_test.cc
+++ b/src/tint/lang/hlsl/ast_writer/generator_impl_builtin_test.cc
@@ -16,7 +16,7 @@
 #include "src/tint/lang/hlsl/ast_writer/test_helper.h"
 #include "src/tint/lang/wgsl/ast/call_statement.h"
 #include "src/tint/lang/wgsl/ast/stage_attribute.h"
-#include "src/tint/sem/call.h"
+#include "src/tint/lang/wgsl/sem/call.h"
 #include "src/tint/utils/string_stream.h"
 
 namespace tint::writer::hlsl {
diff --git a/src/tint/lang/msl/ast_writer/generator_bench.cc b/src/tint/lang/msl/ast_writer/generator_bench.cc
index c1478c9..8e7415d 100644
--- a/src/tint/lang/msl/ast_writer/generator_bench.cc
+++ b/src/tint/lang/msl/ast_writer/generator_bench.cc
@@ -16,7 +16,7 @@
 
 #include "src/tint/bench/benchmark.h"
 #include "src/tint/lang/wgsl/ast/module.h"
-#include "src/tint/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 
 namespace tint::writer::msl {
 namespace {
diff --git a/src/tint/lang/msl/ast_writer/generator_impl.cc b/src/tint/lang/msl/ast_writer/generator_impl.cc
index c82807c..bb37514 100644
--- a/src/tint/lang/msl/ast_writer/generator_impl.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl.cc
@@ -52,15 +52,15 @@
 #include "src/tint/lang/wgsl/ast/transform/vectorize_scalar_matrix_initializers.h"
 #include "src/tint/lang/wgsl/ast/transform/zero_init_workgroup_memory.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/module.h"
-#include "src/tint/sem/struct.h"
-#include "src/tint/sem/switch_statement.h"
-#include "src/tint/sem/value_constructor.h"
-#include "src/tint/sem/value_conversion.h"
-#include "src/tint/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/module.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
+#include "src/tint/lang/wgsl/sem/switch_statement.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
+#include "src/tint/lang/wgsl/sem/value_conversion.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/switch.h"
 #include "src/tint/transform/manager.h"
 #include "src/tint/type/array.h"
diff --git a/src/tint/lang/msl/ast_writer/generator_impl.h b/src/tint/lang/msl/ast_writer/generator_impl.h
index 07837c4..fe7011d 100644
--- a/src/tint/lang/msl/ast_writer/generator_impl.h
+++ b/src/tint/lang/msl/ast_writer/generator_impl.h
@@ -38,9 +38,9 @@
 #include "src/tint/lang/wgsl/ast/return_statement.h"
 #include "src/tint/lang/wgsl/ast/switch_statement.h"
 #include "src/tint/lang/wgsl/ast/unary_op_expression.h"
+#include "src/tint/lang/wgsl/sem/struct.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"
diff --git a/src/tint/lang/msl/ast_writer/generator_impl_builtin_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_builtin_test.cc
index 9305d9a..438dfd0 100644
--- a/src/tint/lang/msl/ast_writer/generator_impl_builtin_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_builtin_test.cc
@@ -14,7 +14,7 @@
 
 #include "src/tint/lang/msl/ast_writer/test_helper.h"
 #include "src/tint/lang/wgsl/ast/call_statement.h"
-#include "src/tint/sem/call.h"
+#include "src/tint/lang/wgsl/sem/call.h"
 #include "src/tint/utils/string_stream.h"
 
 namespace tint::writer::msl {
diff --git a/src/tint/lang/msl/ast_writer/generator_impl_import_test.cc b/src/tint/lang/msl/ast_writer/generator_impl_import_test.cc
index eb18e82..cafd3bb 100644
--- a/src/tint/lang/msl/ast_writer/generator_impl_import_test.cc
+++ b/src/tint/lang/msl/ast_writer/generator_impl_import_test.cc
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 #include "src/tint/lang/msl/ast_writer/test_helper.h"
-#include "src/tint/sem/call.h"
+#include "src/tint/lang/wgsl/sem/call.h"
 #include "src/tint/utils/string_stream.h"
 
 namespace tint::writer::msl {
diff --git a/src/tint/lang/spirv/reader/parser_impl_barrier_test.cc b/src/tint/lang/spirv/reader/parser_impl_barrier_test.cc
index e245fa7..1e37718 100644
--- a/src/tint/lang/spirv/reader/parser_impl_barrier_test.cc
+++ b/src/tint/lang/spirv/reader/parser_impl_barrier_test.cc
@@ -17,7 +17,7 @@
 #include "src/tint/lang/spirv/reader/parser_impl_test_helper.h"
 #include "src/tint/lang/spirv/reader/spirv_tools_helpers_test.h"
 #include "src/tint/lang/wgsl/ast/call_statement.h"
-#include "src/tint/sem/call.h"
+#include "src/tint/lang/wgsl/sem/call.h"
 
 namespace tint::reader::spirv {
 namespace {
diff --git a/src/tint/lang/wgsl/ast/transform/add_block_attribute.cc b/src/tint/lang/wgsl/ast/transform/add_block_attribute.cc
index 1c53ecb..f227eed 100644
--- a/src/tint/lang/wgsl/ast/transform/add_block_attribute.cc
+++ b/src/tint/lang/wgsl/ast/transform/add_block_attribute.cc
@@ -17,8 +17,8 @@
 #include <unordered_set>
 #include <utility>
 
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/utils/hashmap.h"
 #include "src/tint/utils/hashset.h"
 
diff --git a/src/tint/lang/wgsl/ast/transform/array_length_from_uniform.cc b/src/tint/lang/wgsl/ast/transform/array_length_from_uniform.cc
index 5f404b4..d40e6c4 100644
--- a/src/tint/lang/wgsl/ast/transform/array_length_from_uniform.cc
+++ b/src/tint/lang/wgsl/ast/transform/array_length_from_uniform.cc
@@ -19,11 +19,11 @@
 #include <utility>
 
 #include "src/tint/lang/wgsl/ast/transform/simplify_pointers.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/variable.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::ArrayLengthFromUniform);
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::ArrayLengthFromUniform::Config);
diff --git a/src/tint/lang/wgsl/ast/transform/array_length_from_uniform.h b/src/tint/lang/wgsl/ast/transform/array_length_from_uniform.h
index 9b4cc2f..a3be8a1 100644
--- a/src/tint/lang/wgsl/ast/transform/array_length_from_uniform.h
+++ b/src/tint/lang/wgsl/ast/transform/array_length_from_uniform.h
@@ -19,7 +19,7 @@
 #include <unordered_set>
 
 #include "src/tint/lang/wgsl/ast/transform/transform.h"
-#include "src/tint/sem/binding_point.h"
+#include "src/tint/lang/wgsl/sem/binding_point.h"
 
 // Forward declarations
 namespace tint {
diff --git a/src/tint/lang/wgsl/ast/transform/binding_remapper.cc b/src/tint/lang/wgsl/ast/transform/binding_remapper.cc
index 0b226c0..566a89a 100644
--- a/src/tint/lang/wgsl/ast/transform/binding_remapper.cc
+++ b/src/tint/lang/wgsl/ast/transform/binding_remapper.cc
@@ -19,9 +19,9 @@
 #include <utility>
 
 #include "src/tint/lang/wgsl/ast/disable_validation_attribute.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/utils/string.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::BindingRemapper);
diff --git a/src/tint/lang/wgsl/ast/transform/binding_remapper.h b/src/tint/lang/wgsl/ast/transform/binding_remapper.h
index 00241bc..2c03601 100644
--- a/src/tint/lang/wgsl/ast/transform/binding_remapper.h
+++ b/src/tint/lang/wgsl/ast/transform/binding_remapper.h
@@ -19,7 +19,7 @@
 
 #include "src/tint/builtin/access.h"
 #include "src/tint/lang/wgsl/ast/transform/transform.h"
-#include "src/tint/sem/binding_point.h"
+#include "src/tint/lang/wgsl/sem/binding_point.h"
 
 namespace tint::ast::transform {
 
diff --git a/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc b/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
index aa6e0d6..086a0cf 100644
--- a/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
+++ b/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
@@ -19,11 +19,11 @@
 #include <unordered_map>
 #include <utility>
 
+#include "src/tint/lang/wgsl/sem/builtin.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/type_expression.h"
+#include "src/tint/lang/wgsl/sem/value_conversion.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/builtin.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/type_expression.h"
-#include "src/tint/sem/value_conversion.h"
 #include "src/tint/switch.h"
 #include "src/tint/type/storage_texture.h"
 #include "src/tint/type/texture_dimension.h"
diff --git a/src/tint/lang/wgsl/ast/transform/calculate_array_length.cc b/src/tint/lang/wgsl/ast/transform/calculate_array_length.cc
index 7844aca..5a43780 100644
--- a/src/tint/lang/wgsl/ast/transform/calculate_array_length.cc
+++ b/src/tint/lang/wgsl/ast/transform/calculate_array_length.cc
@@ -20,13 +20,13 @@
 #include "src/tint/lang/wgsl/ast/call_statement.h"
 #include "src/tint/lang/wgsl/ast/disable_validation_attribute.h"
 #include "src/tint/lang/wgsl/ast/transform/simplify_pointers.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/struct.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/switch.h"
 #include "src/tint/type/reference.h"
 #include "src/tint/utils/hash.h"
diff --git a/src/tint/lang/wgsl/ast/transform/canonicalize_entry_point_io.cc b/src/tint/lang/wgsl/ast/transform/canonicalize_entry_point_io.cc
index de1c5f5..3666c62 100644
--- a/src/tint/lang/wgsl/ast/transform/canonicalize_entry_point_io.cc
+++ b/src/tint/lang/wgsl/ast/transform/canonicalize_entry_point_io.cc
@@ -23,8 +23,8 @@
 #include "src/tint/builtin/builtin_value.h"
 #include "src/tint/lang/wgsl/ast/disable_validation_attribute.h"
 #include "src/tint/lang/wgsl/ast/transform/unshadow.h"
+#include "src/tint/lang/wgsl/sem/function.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/function.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/lang/wgsl/ast/transform/clamp_frag_depth.cc b/src/tint/lang/wgsl/ast/transform/clamp_frag_depth.cc
index 6910727..368b896 100644
--- a/src/tint/lang/wgsl/ast/transform/clamp_frag_depth.cc
+++ b/src/tint/lang/wgsl/ast/transform/clamp_frag_depth.cc
@@ -22,10 +22,10 @@
 #include "src/tint/lang/wgsl/ast/function.h"
 #include "src/tint/lang/wgsl/ast/module.h"
 #include "src/tint/lang/wgsl/ast/struct.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/struct.h"
 #include "src/tint/utils/scoped_assignment.h"
 #include "src/tint/utils/vector.h"
 
diff --git a/src/tint/lang/wgsl/ast/transform/combine_samplers.cc b/src/tint/lang/wgsl/ast/transform/combine_samplers.cc
index 2e6775f..7196bd7 100644
--- a/src/tint/lang/wgsl/ast/transform/combine_samplers.cc
+++ b/src/tint/lang/wgsl/ast/transform/combine_samplers.cc
@@ -19,9 +19,9 @@
 #include <utility>
 #include <vector>
 
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/statement.h"
 
 #include "src/tint/utils/map.h"
 
diff --git a/src/tint/lang/wgsl/ast/transform/combine_samplers.h b/src/tint/lang/wgsl/ast/transform/combine_samplers.h
index ffc793d..c49f7eb 100644
--- a/src/tint/lang/wgsl/ast/transform/combine_samplers.h
+++ b/src/tint/lang/wgsl/ast/transform/combine_samplers.h
@@ -19,7 +19,7 @@
 #include <unordered_map>
 
 #include "src/tint/lang/wgsl/ast/transform/transform.h"
-#include "src/tint/sem/sampler_texture_pair.h"
+#include "src/tint/lang/wgsl/sem/sampler_texture_pair.h"
 
 namespace tint::ast::transform {
 
diff --git a/src/tint/lang/wgsl/ast/transform/decompose_memory_access.cc b/src/tint/lang/wgsl/ast/transform/decompose_memory_access.cc
index b4a06c7..4d8756a 100644
--- a/src/tint/lang/wgsl/ast/transform/decompose_memory_access.cc
+++ b/src/tint/lang/wgsl/ast/transform/decompose_memory_access.cc
@@ -24,12 +24,12 @@
 #include "src/tint/lang/wgsl/ast/call_statement.h"
 #include "src/tint/lang/wgsl/ast/disable_validation_attribute.h"
 #include "src/tint/lang/wgsl/ast/unary_op.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/struct.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/switch.h"
 #include "src/tint/type/array.h"
 #include "src/tint/type/atomic.h"
diff --git a/src/tint/lang/wgsl/ast/transform/decompose_strided_array.cc b/src/tint/lang/wgsl/ast/transform/decompose_strided_array.cc
index 08dec78..6450031 100644
--- a/src/tint/lang/wgsl/ast/transform/decompose_strided_array.cc
+++ b/src/tint/lang/wgsl/ast/transform/decompose_strided_array.cc
@@ -19,12 +19,12 @@
 #include <vector>
 
 #include "src/tint/lang/wgsl/ast/transform/simplify_pointers.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/type_expression.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/type_expression.h"
-#include "src/tint/sem/value_constructor.h"
-#include "src/tint/sem/value_expression.h"
 #include "src/tint/utils/hash.h"
 #include "src/tint/utils/map.h"
 
diff --git a/src/tint/lang/wgsl/ast/transform/decompose_strided_matrix.cc b/src/tint/lang/wgsl/ast/transform/decompose_strided_matrix.cc
index fc7a6d4..3c4359e 100644
--- a/src/tint/lang/wgsl/ast/transform/decompose_strided_matrix.cc
+++ b/src/tint/lang/wgsl/ast/transform/decompose_strided_matrix.cc
@@ -19,9 +19,9 @@
 #include <vector>
 
 #include "src/tint/lang/wgsl/ast/transform/simplify_pointers.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/value_expression.h"
 #include "src/tint/utils/hash.h"
 #include "src/tint/utils/map.h"
 
diff --git a/src/tint/lang/wgsl/ast/transform/demote_to_helper.cc b/src/tint/lang/wgsl/ast/transform/demote_to_helper.cc
index 97a6670..c86287a 100644
--- a/src/tint/lang/wgsl/ast/transform/demote_to_helper.cc
+++ b/src/tint/lang/wgsl/ast/transform/demote_to_helper.cc
@@ -19,11 +19,11 @@
 #include <utility>
 
 #include "src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/statement.h"
 #include "src/tint/switch.h"
 #include "src/tint/type/reference.h"
 #include "src/tint/utils/map.h"
diff --git a/src/tint/lang/wgsl/ast/transform/direct_variable_access.cc b/src/tint/lang/wgsl/ast/transform/direct_variable_access.cc
index 2e39b11..8de4326 100644
--- a/src/tint/lang/wgsl/ast/transform/direct_variable_access.cc
+++ b/src/tint/lang/wgsl/ast/transform/direct_variable_access.cc
@@ -20,15 +20,15 @@
 
 #include "src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.h"
 #include "src/tint/lang/wgsl/ast/traverse_expressions.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/module.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/index_accessor_expression.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/module.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/struct.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/type/abstract_int.h"
 #include "src/tint/utils/reverse.h"
 #include "src/tint/utils/scoped_assignment.h"
diff --git a/src/tint/lang/wgsl/ast/transform/disable_uniformity_analysis.cc b/src/tint/lang/wgsl/ast/transform/disable_uniformity_analysis.cc
index d02d9de..0f56865 100644
--- a/src/tint/lang/wgsl/ast/transform/disable_uniformity_analysis.cc
+++ b/src/tint/lang/wgsl/ast/transform/disable_uniformity_analysis.cc
@@ -16,8 +16,8 @@
 
 #include <utility>
 
+#include "src/tint/lang/wgsl/sem/module.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/module.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::DisableUniformityAnalysis);
 
diff --git a/src/tint/lang/wgsl/ast/transform/expand_compound_assignment.cc b/src/tint/lang/wgsl/ast/transform/expand_compound_assignment.cc
index b9e17a4..4205f4c 100644
--- a/src/tint/lang/wgsl/ast/transform/expand_compound_assignment.cc
+++ b/src/tint/lang/wgsl/ast/transform/expand_compound_assignment.cc
@@ -19,11 +19,11 @@
 #include "src/tint/lang/wgsl/ast/compound_assignment_statement.h"
 #include "src/tint/lang/wgsl/ast/increment_decrement_statement.h"
 #include "src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/for_loop_statement.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/for_loop_statement.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/value_expression.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::ExpandCompoundAssignment);
 
diff --git a/src/tint/lang/wgsl/ast/transform/first_index_offset.cc b/src/tint/lang/wgsl/ast/transform/first_index_offset.cc
index c570a6d..e2fd2c1 100644
--- a/src/tint/lang/wgsl/ast/transform/first_index_offset.cc
+++ b/src/tint/lang/wgsl/ast/transform/first_index_offset.cc
@@ -19,11 +19,11 @@
 #include <utility>
 
 #include "src/tint/builtin/builtin_value.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/struct.h"
-#include "src/tint/sem/variable.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::FirstIndexOffset);
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::FirstIndexOffset::BindingPoint);
diff --git a/src/tint/lang/wgsl/ast/transform/fold_trivial_lets.cc b/src/tint/lang/wgsl/ast/transform/fold_trivial_lets.cc
index dbaac2a..da2f9ac 100644
--- a/src/tint/lang/wgsl/ast/transform/fold_trivial_lets.cc
+++ b/src/tint/lang/wgsl/ast/transform/fold_trivial_lets.cc
@@ -17,8 +17,8 @@
 #include <utility>
 
 #include "src/tint/lang/wgsl/ast/traverse_expressions.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/value_expression.h"
 #include "src/tint/utils/hashmap.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::FoldTrivialLets);
diff --git a/src/tint/lang/wgsl/ast/transform/localize_struct_array_assignment.cc b/src/tint/lang/wgsl/ast/transform/localize_struct_array_assignment.cc
index ccb6095..f2f21a8 100644
--- a/src/tint/lang/wgsl/ast/transform/localize_struct_array_assignment.cc
+++ b/src/tint/lang/wgsl/ast/transform/localize_struct_array_assignment.cc
@@ -20,11 +20,11 @@
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
 #include "src/tint/lang/wgsl/ast/transform/simplify_pointers.h"
 #include "src/tint/lang/wgsl/ast/traverse_expressions.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/value_expression.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/type/reference.h"
 #include "src/tint/utils/scoped_assignment.h"
 
diff --git a/src/tint/lang/wgsl/ast/transform/merge_return.cc b/src/tint/lang/wgsl/ast/transform/merge_return.cc
index d522300..fc9da69 100644
--- a/src/tint/lang/wgsl/ast/transform/merge_return.cc
+++ b/src/tint/lang/wgsl/ast/transform/merge_return.cc
@@ -16,8 +16,8 @@
 
 #include <utility>
 
+#include "src/tint/lang/wgsl/sem/statement.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/statement.h"
 #include "src/tint/switch.h"
 #include "src/tint/utils/scoped_assignment.h"
 
diff --git a/src/tint/lang/wgsl/ast/transform/module_scope_var_to_entry_point_param.cc b/src/tint/lang/wgsl/ast/transform/module_scope_var_to_entry_point_param.cc
index 96658d8..baaa9cb 100644
--- a/src/tint/lang/wgsl/ast/transform/module_scope_var_to_entry_point_param.cc
+++ b/src/tint/lang/wgsl/ast/transform/module_scope_var_to_entry_point_param.cc
@@ -20,12 +20,12 @@
 #include <vector>
 
 #include "src/tint/lang/wgsl/ast/disable_validation_attribute.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/module.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/module.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/utils/string.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::ModuleScopeVarToEntryPointParam);
diff --git a/src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.cc b/src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.cc
index 90f00a4..452b75b 100644
--- a/src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.cc
+++ b/src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.cc
@@ -18,10 +18,10 @@
 #include <vector>
 
 #include "src/tint/lang/wgsl/ast/function.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/type/texture_dimension.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::MultiplanarExternalTexture);
diff --git a/src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.h b/src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.h
index e2b0d80..3b89288 100644
--- a/src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.h
+++ b/src/tint/lang/wgsl/ast/transform/multiplanar_external_texture.h
@@ -21,8 +21,8 @@
 #include "src/tint/builtin/function.h"
 #include "src/tint/lang/wgsl/ast/struct_member.h"
 #include "src/tint/lang/wgsl/ast/transform/transform.h"
-#include "src/tint/sem/binding_point.h"
-#include "src/tint/sem/external_texture.h"
+#include "src/tint/lang/wgsl/sem/binding_point.h"
+#include "src/tint/lang/wgsl/sem/external_texture.h"
 
 namespace tint::ast::transform {
 
diff --git a/src/tint/lang/wgsl/ast/transform/num_workgroups_from_uniform.cc b/src/tint/lang/wgsl/ast/transform/num_workgroups_from_uniform.cc
index 6360631..eabb0fb 100644
--- a/src/tint/lang/wgsl/ast/transform/num_workgroups_from_uniform.cc
+++ b/src/tint/lang/wgsl/ast/transform/num_workgroups_from_uniform.cc
@@ -21,8 +21,8 @@
 
 #include "src/tint/builtin/builtin_value.h"
 #include "src/tint/lang/wgsl/ast/transform/canonicalize_entry_point_io.h"
+#include "src/tint/lang/wgsl/sem/function.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/function.h"
 #include "src/tint/utils/hash.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::NumWorkgroupsFromUniform);
diff --git a/src/tint/lang/wgsl/ast/transform/num_workgroups_from_uniform.h b/src/tint/lang/wgsl/ast/transform/num_workgroups_from_uniform.h
index 947ece5..728c984 100644
--- a/src/tint/lang/wgsl/ast/transform/num_workgroups_from_uniform.h
+++ b/src/tint/lang/wgsl/ast/transform/num_workgroups_from_uniform.h
@@ -18,7 +18,7 @@
 #include <optional>
 
 #include "src/tint/lang/wgsl/ast/transform/transform.h"
-#include "src/tint/sem/binding_point.h"
+#include "src/tint/lang/wgsl/sem/binding_point.h"
 
 // Forward declarations
 namespace tint {
diff --git a/src/tint/lang/wgsl/ast/transform/packed_vec3.cc b/src/tint/lang/wgsl/ast/transform/packed_vec3.cc
index da02d5b..369f719 100644
--- a/src/tint/lang/wgsl/ast/transform/packed_vec3.cc
+++ b/src/tint/lang/wgsl/ast/transform/packed_vec3.cc
@@ -20,13 +20,13 @@
 
 #include "src/tint/builtin/builtin.h"
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
+#include "src/tint/lang/wgsl/sem/array_count.h"
+#include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/load.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/type_expression.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/array_count.h"
-#include "src/tint/sem/index_accessor_expression.h"
-#include "src/tint/sem/load.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/type_expression.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/switch.h"
 #include "src/tint/type/array.h"
 #include "src/tint/type/reference.h"
diff --git a/src/tint/lang/wgsl/ast/transform/packed_vec3_test.cc b/src/tint/lang/wgsl/ast/transform/packed_vec3_test.cc
index 0461f26..08fe567 100644
--- a/src/tint/lang/wgsl/ast/transform/packed_vec3_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/packed_vec3_test.cc
@@ -20,9 +20,9 @@
 
 #include "src/tint/lang/wgsl/ast/module.h"
 #include "src/tint/lang/wgsl/ast/transform/test_helper.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/struct.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/type/array.h"
 #include "src/tint/utils/string.h"
 
diff --git a/src/tint/lang/wgsl/ast/transform/pad_structs.cc b/src/tint/lang/wgsl/ast/transform/pad_structs.cc
index d276b15..4e8fdb4 100644
--- a/src/tint/lang/wgsl/ast/transform/pad_structs.cc
+++ b/src/tint/lang/wgsl/ast/transform/pad_structs.cc
@@ -20,10 +20,10 @@
 
 #include "src/tint/lang/wgsl/ast/disable_validation_attribute.h"
 #include "src/tint/lang/wgsl/ast/parameter.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/module.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/module.h"
-#include "src/tint/sem/value_constructor.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/lang/wgsl/ast/transform/preserve_padding.cc b/src/tint/lang/wgsl/ast/transform/preserve_padding.cc
index ac48194..1dee7ee 100644
--- a/src/tint/lang/wgsl/ast/transform/preserve_padding.cc
+++ b/src/tint/lang/wgsl/ast/transform/preserve_padding.cc
@@ -17,8 +17,8 @@
 #include <unordered_set>
 #include <utility>
 
+#include "src/tint/lang/wgsl/sem/struct.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/struct.h"
 #include "src/tint/switch.h"
 #include "src/tint/type/reference.h"
 #include "src/tint/utils/map.h"
diff --git a/src/tint/lang/wgsl/ast/transform/promote_initializers_to_let.cc b/src/tint/lang/wgsl/ast/transform/promote_initializers_to_let.cc
index 4569d99..aed70ae 100644
--- a/src/tint/lang/wgsl/ast/transform/promote_initializers_to_let.cc
+++ b/src/tint/lang/wgsl/ast/transform/promote_initializers_to_let.cc
@@ -18,10 +18,10 @@
 
 #include "src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.h"
 #include "src/tint/lang/wgsl/ast/traverse_expressions.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/value_constructor.h"
 #include "src/tint/type/struct.h"
 #include "src/tint/utils/hashset.h"
 
diff --git a/src/tint/lang/wgsl/ast/transform/promote_side_effects_to_decl.cc b/src/tint/lang/wgsl/ast/transform/promote_side_effects_to_decl.cc
index 6adde0d..c7eccaf 100644
--- a/src/tint/lang/wgsl/ast/transform/promote_side_effects_to_decl.cc
+++ b/src/tint/lang/wgsl/ast/transform/promote_side_effects_to_decl.cc
@@ -23,13 +23,13 @@
 #include "src/tint/lang/wgsl/ast/transform/utils/get_insertion_point.h"
 #include "src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.h"
 #include "src/tint/lang/wgsl/ast/traverse_expressions.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/for_loop_statement.h"
-#include "src/tint/sem/if_statement.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/variable.h"
-#include "src/tint/sem/while_statement.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/for_loop_statement.h"
+#include "src/tint/lang/wgsl/sem/if_statement.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/while_statement.h"
 #include "src/tint/transform/manager.h"
 #include "src/tint/utils/scoped_assignment.h"
 
diff --git a/src/tint/lang/wgsl/ast/transform/remove_continue_in_switch.cc b/src/tint/lang/wgsl/ast/transform/remove_continue_in_switch.cc
index 2558ba4..506392d 100644
--- a/src/tint/lang/wgsl/ast/transform/remove_continue_in_switch.cc
+++ b/src/tint/lang/wgsl/ast/transform/remove_continue_in_switch.cc
@@ -21,12 +21,12 @@
 #include "src/tint/lang/wgsl/ast/continue_statement.h"
 #include "src/tint/lang/wgsl/ast/switch_statement.h"
 #include "src/tint/lang/wgsl/ast/transform/utils/get_insertion_point.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/for_loop_statement.h"
+#include "src/tint/lang/wgsl/sem/loop_statement.h"
+#include "src/tint/lang/wgsl/sem/switch_statement.h"
+#include "src/tint/lang/wgsl/sem/while_statement.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/for_loop_statement.h"
-#include "src/tint/sem/loop_statement.h"
-#include "src/tint/sem/switch_statement.h"
-#include "src/tint/sem/while_statement.h"
 #include "src/tint/utils/map.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::RemoveContinueInSwitch);
diff --git a/src/tint/lang/wgsl/ast/transform/remove_phonies.cc b/src/tint/lang/wgsl/ast/transform/remove_phonies.cc
index 290eeee..1e95835 100644
--- a/src/tint/lang/wgsl/ast/transform/remove_phonies.cc
+++ b/src/tint/lang/wgsl/ast/transform/remove_phonies.cc
@@ -20,11 +20,11 @@
 #include <vector>
 
 #include "src/tint/lang/wgsl/ast/traverse_expressions.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/utils/map.h"
 #include "src/tint/utils/scoped_assignment.h"
 
diff --git a/src/tint/lang/wgsl/ast/transform/remove_unreachable_statements.cc b/src/tint/lang/wgsl/ast/transform/remove_unreachable_statements.cc
index 50b9dfa..338b49e 100644
--- a/src/tint/lang/wgsl/ast/transform/remove_unreachable_statements.cc
+++ b/src/tint/lang/wgsl/ast/transform/remove_unreachable_statements.cc
@@ -20,11 +20,11 @@
 #include <vector>
 
 #include "src/tint/lang/wgsl/ast/traverse_expressions.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/utils/map.h"
 #include "src/tint/utils/scoped_assignment.h"
 
diff --git a/src/tint/lang/wgsl/ast/transform/renamer.cc b/src/tint/lang/wgsl/ast/transform/renamer.cc
index 34f796c..45b7020 100644
--- a/src/tint/lang/wgsl/ast/transform/renamer.cc
+++ b/src/tint/lang/wgsl/ast/transform/renamer.cc
@@ -17,13 +17,13 @@
 #include <memory>
 #include <utility>
 
+#include "src/tint/lang/wgsl/sem/builtin_enum_expression.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/type_expression.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
+#include "src/tint/lang/wgsl/sem/value_conversion.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/builtin_enum_expression.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/type_expression.h"
-#include "src/tint/sem/value_constructor.h"
-#include "src/tint/sem/value_conversion.h"
 #include "src/tint/switch.h"
 #include "src/tint/utils/unicode.h"
 
diff --git a/src/tint/lang/wgsl/ast/transform/robustness.cc b/src/tint/lang/wgsl/ast/transform/robustness.cc
index c5b7bbb..2b7796a 100644
--- a/src/tint/lang/wgsl/ast/transform/robustness.cc
+++ b/src/tint/lang/wgsl/ast/transform/robustness.cc
@@ -19,16 +19,16 @@
 #include <utility>
 
 #include "src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/builtin.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/load.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/builtin.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/index_accessor_expression.h"
-#include "src/tint/sem/load.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/value_expression.h"
 #include "src/tint/switch.h"
 #include "src/tint/type/reference.h"
 
diff --git a/src/tint/lang/wgsl/ast/transform/robustness.h b/src/tint/lang/wgsl/ast/transform/robustness.h
index 8f12e04..e69f83c 100644
--- a/src/tint/lang/wgsl/ast/transform/robustness.h
+++ b/src/tint/lang/wgsl/ast/transform/robustness.h
@@ -18,7 +18,7 @@
 #include <unordered_set>
 
 #include "src/tint/lang/wgsl/ast/transform/transform.h"
-#include "src/tint/sem/binding_point.h"
+#include "src/tint/lang/wgsl/sem/binding_point.h"
 
 namespace tint::ast::transform {
 
diff --git a/src/tint/lang/wgsl/ast/transform/simplify_pointers.cc b/src/tint/lang/wgsl/ast/transform/simplify_pointers.cc
index 8f37331..cdb798f 100644
--- a/src/tint/lang/wgsl/ast/transform/simplify_pointers.cc
+++ b/src/tint/lang/wgsl/ast/transform/simplify_pointers.cc
@@ -20,11 +20,11 @@
 #include <vector>
 
 #include "src/tint/lang/wgsl/ast/transform/unshadow.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/switch.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::SimplifyPointers);
diff --git a/src/tint/lang/wgsl/ast/transform/single_entry_point.cc b/src/tint/lang/wgsl/ast/transform/single_entry_point.cc
index 3cd47cc..a0d52af 100644
--- a/src/tint/lang/wgsl/ast/transform/single_entry_point.cc
+++ b/src/tint/lang/wgsl/ast/transform/single_entry_point.cc
@@ -17,9 +17,9 @@
 #include <unordered_set>
 #include <utility>
 
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/switch.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::SingleEntryPoint);
diff --git a/src/tint/lang/wgsl/ast/transform/spirv_atomic.cc b/src/tint/lang/wgsl/ast/transform/spirv_atomic.cc
index 5eb8de8..9a7336f 100644
--- a/src/tint/lang/wgsl/ast/transform/spirv_atomic.cc
+++ b/src/tint/lang/wgsl/ast/transform/spirv_atomic.cc
@@ -20,12 +20,12 @@
 #include <utility>
 #include <vector>
 
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/index_accessor_expression.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/statement.h"
 #include "src/tint/switch.h"
 #include "src/tint/type/reference.h"
 #include "src/tint/utils/map.h"
diff --git a/src/tint/lang/wgsl/ast/transform/std140.cc b/src/tint/lang/wgsl/ast/transform/std140.cc
index 3b12c15..13f346f 100644
--- a/src/tint/lang/wgsl/ast/transform/std140.cc
+++ b/src/tint/lang/wgsl/ast/transform/std140.cc
@@ -19,12 +19,12 @@
 #include <utility>
 #include <variant>
 
+#include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/module.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/index_accessor_expression.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/module.h"
-#include "src/tint/sem/struct.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/switch.h"
 #include "src/tint/utils/compiler_macros.h"
 #include "src/tint/utils/hashmap.h"
diff --git a/src/tint/lang/wgsl/ast/transform/substitute_override.cc b/src/tint/lang/wgsl/ast/transform/substitute_override.cc
index 1b97062..33068f1 100644
--- a/src/tint/lang/wgsl/ast/transform/substitute_override.cc
+++ b/src/tint/lang/wgsl/ast/transform/substitute_override.cc
@@ -18,10 +18,10 @@
 #include <utility>
 
 #include "src/tint/builtin/function.h"
+#include "src/tint/lang/wgsl/sem/builtin.h"
+#include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/builtin.h"
-#include "src/tint/sem/index_accessor_expression.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/switch.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::SubstituteOverride);
diff --git a/src/tint/lang/wgsl/ast/transform/texture_1d_to_2d.cc b/src/tint/lang/wgsl/ast/transform/texture_1d_to_2d.cc
index 4a82a5c..d35cbf9 100644
--- a/src/tint/lang/wgsl/ast/transform/texture_1d_to_2d.cc
+++ b/src/tint/lang/wgsl/ast/transform/texture_1d_to_2d.cc
@@ -16,10 +16,10 @@
 
 #include <utility>
 
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/type_expression.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/type_expression.h"
 #include "src/tint/switch.h"
 #include "src/tint/type/texture_dimension.h"
 
diff --git a/src/tint/lang/wgsl/ast/transform/transform.cc b/src/tint/lang/wgsl/ast/transform/transform.cc
index 5bb87d7..798bd83 100644
--- a/src/tint/lang/wgsl/ast/transform/transform.cc
+++ b/src/tint/lang/wgsl/ast/transform/transform.cc
@@ -18,10 +18,10 @@
 #include <string>
 
 #include "src/tint/builtin/builtin.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/for_loop_statement.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/for_loop_statement.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/type/atomic.h"
 #include "src/tint/type/depth_multisampled_texture.h"
 #include "src/tint/type/reference.h"
diff --git a/src/tint/lang/wgsl/ast/transform/truncate_interstage_variables.cc b/src/tint/lang/wgsl/ast/transform/truncate_interstage_variables.cc
index e63f471..e1f798d 100644
--- a/src/tint/lang/wgsl/ast/transform/truncate_interstage_variables.cc
+++ b/src/tint/lang/wgsl/ast/transform/truncate_interstage_variables.cc
@@ -18,12 +18,12 @@
 #include <string>
 #include <utility>
 
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/utils/unicode.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::TruncateInterstageVariables);
diff --git a/src/tint/lang/wgsl/ast/transform/truncate_interstage_variables.h b/src/tint/lang/wgsl/ast/transform/truncate_interstage_variables.h
index 2d91e67..d1b1cb6 100644
--- a/src/tint/lang/wgsl/ast/transform/truncate_interstage_variables.h
+++ b/src/tint/lang/wgsl/ast/transform/truncate_interstage_variables.h
@@ -18,7 +18,7 @@
 #include <bitset>
 
 #include "src/tint/lang/wgsl/ast/transform/transform.h"
-#include "src/tint/sem/binding_point.h"
+#include "src/tint/lang/wgsl/sem/binding_point.h"
 
 namespace tint::ast::transform {
 
diff --git a/src/tint/lang/wgsl/ast/transform/unshadow.cc b/src/tint/lang/wgsl/ast/transform/unshadow.cc
index bf804d1..9252b5d 100644
--- a/src/tint/lang/wgsl/ast/transform/unshadow.cc
+++ b/src/tint/lang/wgsl/ast/transform/unshadow.cc
@@ -18,11 +18,11 @@
 #include <unordered_map>
 #include <utility>
 
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/switch.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::Unshadow);
diff --git a/src/tint/lang/wgsl/ast/transform/utils/get_insertion_point.cc b/src/tint/lang/wgsl/ast/transform/utils/get_insertion_point.cc
index 32ba34b..d311536 100644
--- a/src/tint/lang/wgsl/ast/transform/utils/get_insertion_point.cc
+++ b/src/tint/lang/wgsl/ast/transform/utils/get_insertion_point.cc
@@ -15,7 +15,7 @@
 #include "src/tint/lang/wgsl/ast/transform/utils/get_insertion_point.h"
 #include "src/tint/debug.h"
 #include "src/tint/diagnostic/diagnostic.h"
-#include "src/tint/sem/for_loop_statement.h"
+#include "src/tint/lang/wgsl/sem/for_loop_statement.h"
 #include "src/tint/switch.h"
 
 namespace tint::ast::transform::utils {
diff --git a/src/tint/lang/wgsl/ast/transform/utils/get_insertion_point.h b/src/tint/lang/wgsl/ast/transform/utils/get_insertion_point.h
index 687e155..806f17e 100644
--- a/src/tint/lang/wgsl/ast/transform/utils/get_insertion_point.h
+++ b/src/tint/lang/wgsl/ast/transform/utils/get_insertion_point.h
@@ -17,8 +17,8 @@
 
 #include <utility>
 
+#include "src/tint/lang/wgsl/sem/block_statement.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/block_statement.h"
 
 namespace tint::ast::transform::utils {
 
diff --git a/src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.cc b/src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.cc
index 799c790..91f3ec7 100644
--- a/src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.cc
+++ b/src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.cc
@@ -16,12 +16,12 @@
 
 #include <utility>
 
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/for_loop_statement.h"
+#include "src/tint/lang/wgsl/sem/if_statement.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/while_statement.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/for_loop_statement.h"
-#include "src/tint/sem/if_statement.h"
-#include "src/tint/sem/variable.h"
-#include "src/tint/sem/while_statement.h"
 #include "src/tint/type/reference.h"
 #include "src/tint/utils/hashmap.h"
 #include "src/tint/utils/reverse.h"
diff --git a/src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.h b/src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.h
index 7c55042..237860a 100644
--- a/src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.h
+++ b/src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.h
@@ -19,7 +19,7 @@
 #include <memory>
 
 #include "src/tint/lang/wgsl/ast/transform/transform.h"
-#include "src/tint/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 
 namespace tint::ast::transform {
 
diff --git a/src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before_test.cc b/src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before_test.cc
index f2c1bbc..07e5c82 100644
--- a/src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before_test.cc
@@ -17,10 +17,10 @@
 #include "gtest/gtest-spi.h"
 #include "src/tint/lang/wgsl/ast/transform/test_helper.h"
 #include "src/tint/lang/wgsl/ast/transform/utils/hoist_to_decl_before.h"
+#include "src/tint/lang/wgsl/sem/if_statement.h"
+#include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/if_statement.h"
-#include "src/tint/sem/index_accessor_expression.h"
-#include "src/tint/sem/statement.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/lang/wgsl/ast/transform/vectorize_matrix_conversions.cc b/src/tint/lang/wgsl/ast/transform/vectorize_matrix_conversions.cc
index 511cfbc..2cad9e2 100644
--- a/src/tint/lang/wgsl/ast/transform/vectorize_matrix_conversions.cc
+++ b/src/tint/lang/wgsl/ast/transform/vectorize_matrix_conversions.cc
@@ -18,10 +18,10 @@
 #include <unordered_map>
 #include <utility>
 
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/value_conversion.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/value_conversion.h"
-#include "src/tint/sem/value_expression.h"
 #include "src/tint/type/abstract_numeric.h"
 #include "src/tint/utils/hash.h"
 #include "src/tint/utils/map.h"
diff --git a/src/tint/lang/wgsl/ast/transform/vectorize_scalar_matrix_initializers.cc b/src/tint/lang/wgsl/ast/transform/vectorize_scalar_matrix_initializers.cc
index 763e3da..7f2c661 100644
--- a/src/tint/lang/wgsl/ast/transform/vectorize_scalar_matrix_initializers.cc
+++ b/src/tint/lang/wgsl/ast/transform/vectorize_scalar_matrix_initializers.cc
@@ -17,10 +17,10 @@
 #include <unordered_map>
 #include <utility>
 
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/value_constructor.h"
-#include "src/tint/sem/value_expression.h"
 #include "src/tint/type/abstract_numeric.h"
 #include "src/tint/utils/map.h"
 
diff --git a/src/tint/lang/wgsl/ast/transform/vertex_pulling.cc b/src/tint/lang/wgsl/ast/transform/vertex_pulling.cc
index 3857d16..4ee73c4 100644
--- a/src/tint/lang/wgsl/ast/transform/vertex_pulling.cc
+++ b/src/tint/lang/wgsl/ast/transform/vertex_pulling.cc
@@ -21,8 +21,8 @@
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
 #include "src/tint/lang/wgsl/ast/bitcast_expression.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/switch.h"
 #include "src/tint/utils/compiler_macros.h"
 #include "src/tint/utils/map.h"
diff --git a/src/tint/lang/wgsl/ast/transform/zero_init_workgroup_memory.cc b/src/tint/lang/wgsl/ast/transform/zero_init_workgroup_memory.cc
index a6edc6d..7ff6154 100644
--- a/src/tint/lang/wgsl/ast/transform/zero_init_workgroup_memory.cc
+++ b/src/tint/lang/wgsl/ast/transform/zero_init_workgroup_memory.cc
@@ -22,9 +22,9 @@
 
 #include "src/tint/builtin/builtin_value.h"
 #include "src/tint/lang/wgsl/ast/workgroup_attribute.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/type/atomic.h"
 #include "src/tint/utils/map.h"
 #include "src/tint/utils/unique_vector.h"
diff --git a/src/tint/lang/wgsl/ast_writer/generator_impl.cc b/src/tint/lang/wgsl/ast_writer/generator_impl.cc
index a046225b..2794eb7 100644
--- a/src/tint/lang/wgsl/ast_writer/generator_impl.cc
+++ b/src/tint/lang/wgsl/ast_writer/generator_impl.cc
@@ -32,8 +32,8 @@
 #include "src/tint/lang/wgsl/ast/struct_member_size_attribute.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
 #include "src/tint/lang/wgsl/ast/workgroup_attribute.h"
-#include "src/tint/sem/struct.h"
-#include "src/tint/sem/switch_statement.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
+#include "src/tint/lang/wgsl/sem/switch_statement.h"
 #include "src/tint/switch.h"
 #include "src/tint/utils/defer.h"
 #include "src/tint/utils/math.h"
diff --git a/src/tint/lang/wgsl/ast_writer/generator_impl.h b/src/tint/lang/wgsl/ast_writer/generator_impl.h
index fe98186..7da98e7 100644
--- a/src/tint/lang/wgsl/ast_writer/generator_impl.h
+++ b/src/tint/lang/wgsl/ast_writer/generator_impl.h
@@ -33,8 +33,8 @@
 #include "src/tint/lang/wgsl/ast/return_statement.h"
 #include "src/tint/lang/wgsl/ast/switch_statement.h"
 #include "src/tint/lang/wgsl/ast/unary_op_expression.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
 #include "src/tint/program.h"
-#include "src/tint/sem/struct.h"
 #include "src/tint/utils/string_stream.h"
 #include "src/tint/writer/ast_text_generator.h"
 
diff --git a/src/tint/lang/wgsl/ast_writer/generator_impl_test.cc b/src/tint/lang/wgsl/ast_writer/generator_impl_test.cc
index f0fcfd4..d50bc2e 100644
--- a/src/tint/lang/wgsl/ast_writer/generator_impl_test.cc
+++ b/src/tint/lang/wgsl/ast_writer/generator_impl_test.cc
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 #include "src/tint/lang/wgsl/ast_writer/test_helper.h"
-#include "src/tint/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 
 #include "gmock/gmock.h"
 
diff --git a/src/tint/sem/accessor_expression.cc b/src/tint/lang/wgsl/sem/accessor_expression.cc
similarity index 96%
rename from src/tint/sem/accessor_expression.cc
rename to src/tint/lang/wgsl/sem/accessor_expression.cc
index 81ca6dc..d737218 100644
--- a/src/tint/sem/accessor_expression.cc
+++ b/src/tint/lang/wgsl/sem/accessor_expression.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/accessor_expression.h"
 
 #include <utility>
 
diff --git a/src/tint/sem/accessor_expression.h b/src/tint/lang/wgsl/sem/accessor_expression.h
similarity index 91%
rename from src/tint/sem/accessor_expression.h
rename to src/tint/lang/wgsl/sem/accessor_expression.h
index ac35191..02f0288 100644
--- a/src/tint/sem/accessor_expression.h
+++ b/src/tint/lang/wgsl/sem/accessor_expression.h
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_ACCESSOR_EXPRESSION_H_
-#define SRC_TINT_SEM_ACCESSOR_EXPRESSION_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_ACCESSOR_EXPRESSION_H_
+#define SRC_TINT_LANG_WGSL_SEM_ACCESSOR_EXPRESSION_H_
 
 #include <vector>
 
 #include "src/tint/lang/wgsl/ast/index_accessor_expression.h"
-#include "src/tint/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 
 namespace tint::sem {
 
@@ -62,4 +62,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_ACCESSOR_EXPRESSION_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_ACCESSOR_EXPRESSION_H_
diff --git a/src/tint/sem/array_count.cc b/src/tint/lang/wgsl/sem/array_count.cc
similarity index 97%
rename from src/tint/sem/array_count.cc
rename to src/tint/lang/wgsl/sem/array_count.cc
index 91828fc..5e52e72 100644
--- a/src/tint/sem/array_count.cc
+++ b/src/tint/lang/wgsl/sem/array_count.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/array_count.h"
+#include "src/tint/lang/wgsl/sem/array_count.h"
 
 #include "src/tint/lang/wgsl/ast/identifier.h"
 
diff --git a/src/tint/sem/array_count.h b/src/tint/lang/wgsl/sem/array_count.h
similarity index 92%
rename from src/tint/sem/array_count.h
rename to src/tint/lang/wgsl/sem/array_count.h
index 9f0cd53..9303466 100644
--- a/src/tint/sem/array_count.h
+++ b/src/tint/lang/wgsl/sem/array_count.h
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_ARRAY_COUNT_H_
-#define SRC_TINT_SEM_ARRAY_COUNT_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_ARRAY_COUNT_H_
+#define SRC_TINT_LANG_WGSL_SEM_ARRAY_COUNT_H_
 
 #include <string>
 
-#include "src/tint/sem/value_expression.h"
-#include "src/tint/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/type/array_count.h"
 
 namespace tint::sem {
@@ -94,4 +94,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_ARRAY_COUNT_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_ARRAY_COUNT_H_
diff --git a/src/tint/sem/behavior.cc b/src/tint/lang/wgsl/sem/behavior.cc
similarity index 95%
rename from src/tint/sem/behavior.cc
rename to src/tint/lang/wgsl/sem/behavior.cc
index b2c7897..8a66fb2 100644
--- a/src/tint/sem/behavior.cc
+++ b/src/tint/lang/wgsl/sem/behavior.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/behavior.h"
+#include "src/tint/lang/wgsl/sem/behavior.h"
 
 namespace tint::sem {
 
diff --git a/src/tint/sem/behavior.h b/src/tint/lang/wgsl/sem/behavior.h
similarity index 89%
rename from src/tint/sem/behavior.h
rename to src/tint/lang/wgsl/sem/behavior.h
index 27eba3f..3ab4909 100644
--- a/src/tint/sem/behavior.h
+++ b/src/tint/lang/wgsl/sem/behavior.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_BEHAVIOR_H_
-#define SRC_TINT_SEM_BEHAVIOR_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_BEHAVIOR_H_
+#define SRC_TINT_LANG_WGSL_SEM_BEHAVIOR_H_
 
 #include "src/tint/utils/enum_set.h"
 
@@ -39,4 +39,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_BEHAVIOR_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_BEHAVIOR_H_
diff --git a/src/tint/sem/binding_point.h b/src/tint/lang/wgsl/sem/binding_point.h
similarity index 94%
rename from src/tint/sem/binding_point.h
rename to src/tint/lang/wgsl/sem/binding_point.h
index 6837310..452c411 100644
--- a/src/tint/sem/binding_point.h
+++ b/src/tint/lang/wgsl/sem/binding_point.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_BINDING_POINT_H_
-#define SRC_TINT_SEM_BINDING_POINT_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_BINDING_POINT_H_
+#define SRC_TINT_LANG_WGSL_SEM_BINDING_POINT_H_
 
 #include <stdint.h>
 
@@ -75,4 +75,4 @@
 
 }  // namespace std
 
-#endif  // SRC_TINT_SEM_BINDING_POINT_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_BINDING_POINT_H_
diff --git a/src/tint/sem/block_statement.cc b/src/tint/lang/wgsl/sem/block_statement.cc
similarity index 95%
rename from src/tint/sem/block_statement.cc
rename to src/tint/lang/wgsl/sem/block_statement.cc
index 218f2fe..19c9211 100644
--- a/src/tint/sem/block_statement.cc
+++ b/src/tint/lang/wgsl/sem/block_statement.cc
@@ -12,11 +12,11 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
 
 #include "src/tint/lang/wgsl/ast/block_statement.h"
 #include "src/tint/lang/wgsl/ast/function.h"
-#include "src/tint/sem/function.h"
+#include "src/tint/lang/wgsl/sem/function.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::BlockStatement);
 TINT_INSTANTIATE_TYPEINFO(tint::sem::FunctionBlockStatement);
diff --git a/src/tint/sem/block_statement.h b/src/tint/lang/wgsl/sem/block_statement.h
similarity index 94%
rename from src/tint/sem/block_statement.h
rename to src/tint/lang/wgsl/sem/block_statement.h
index 9cf1e3e..ae9b40a 100644
--- a/src/tint/sem/block_statement.h
+++ b/src/tint/lang/wgsl/sem/block_statement.h
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_BLOCK_STATEMENT_H_
-#define SRC_TINT_SEM_BLOCK_STATEMENT_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_BLOCK_STATEMENT_H_
+#define SRC_TINT_LANG_WGSL_SEM_BLOCK_STATEMENT_H_
 
 #include <cstddef>
 #include <vector>
 
-#include "src/tint/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
 
 // Forward declarations
 namespace tint::ast {
@@ -99,4 +99,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_BLOCK_STATEMENT_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_BLOCK_STATEMENT_H_
diff --git a/src/tint/sem/break_if_statement.cc b/src/tint/lang/wgsl/sem/break_if_statement.cc
similarity index 95%
rename from src/tint/sem/break_if_statement.cc
rename to src/tint/lang/wgsl/sem/break_if_statement.cc
index a790f77..01bb9c0 100644
--- a/src/tint/sem/break_if_statement.cc
+++ b/src/tint/lang/wgsl/sem/break_if_statement.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/break_if_statement.h"
+#include "src/tint/lang/wgsl/sem/break_if_statement.h"
 
 #include "src/tint/lang/wgsl/ast/break_if_statement.h"
 
diff --git a/src/tint/sem/break_if_statement.h b/src/tint/lang/wgsl/sem/break_if_statement.h
similarity index 89%
rename from src/tint/sem/break_if_statement.h
rename to src/tint/lang/wgsl/sem/break_if_statement.h
index dcab9bb..20ed60c 100644
--- a/src/tint/sem/break_if_statement.h
+++ b/src/tint/lang/wgsl/sem/break_if_statement.h
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_BREAK_IF_STATEMENT_H_
-#define SRC_TINT_SEM_BREAK_IF_STATEMENT_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_BREAK_IF_STATEMENT_H_
+#define SRC_TINT_LANG_WGSL_SEM_BREAK_IF_STATEMENT_H_
 
-#include "src/tint/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
 
 // Forward declarations
 namespace tint::ast {
@@ -57,4 +57,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_BREAK_IF_STATEMENT_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_BREAK_IF_STATEMENT_H_
diff --git a/src/tint/sem/builtin.cc b/src/tint/lang/wgsl/sem/builtin.cc
similarity index 97%
rename from src/tint/sem/builtin.cc
rename to src/tint/lang/wgsl/sem/builtin.cc
index d5d214b..abcaac1 100644
--- a/src/tint/sem/builtin.cc
+++ b/src/tint/lang/wgsl/sem/builtin.cc
@@ -15,7 +15,7 @@
 // Doxygen seems to trip over this file for some unknown reason. Disable.
 //! @cond Doxygen_Suppress
 
-#include "src/tint/sem/builtin.h"
+#include "src/tint/lang/wgsl/sem/builtin.h"
 
 #include <utility>
 #include <vector>
diff --git a/src/tint/sem/builtin.h b/src/tint/lang/wgsl/sem/builtin.h
similarity index 94%
rename from src/tint/sem/builtin.h
rename to src/tint/lang/wgsl/sem/builtin.h
index 614afac..5d818ca 100644
--- a/src/tint/sem/builtin.h
+++ b/src/tint/lang/wgsl/sem/builtin.h
@@ -12,16 +12,16 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_BUILTIN_H_
-#define SRC_TINT_SEM_BUILTIN_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_BUILTIN_H_
+#define SRC_TINT_LANG_WGSL_SEM_BUILTIN_H_
 
 #include <string>
 #include <vector>
 
 #include "src/tint/builtin/extension.h"
 #include "src/tint/builtin/function.h"
-#include "src/tint/sem/call_target.h"
-#include "src/tint/sem/pipeline_stage_set.h"
+#include "src/tint/lang/wgsl/sem/call_target.h"
+#include "src/tint/lang/wgsl/sem/pipeline_stage_set.h"
 #include "src/tint/utils/hash.h"
 
 namespace tint::sem {
@@ -130,4 +130,4 @@
 
 }  // namespace std
 
-#endif  // SRC_TINT_SEM_BUILTIN_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_BUILTIN_H_
diff --git a/src/tint/sem/builtin_enum_expression.cc b/src/tint/lang/wgsl/sem/builtin_enum_expression.cc
similarity index 93%
rename from src/tint/sem/builtin_enum_expression.cc
rename to src/tint/lang/wgsl/sem/builtin_enum_expression.cc
index 0e44220..fe5bff6 100644
--- a/src/tint/sem/builtin_enum_expression.cc
+++ b/src/tint/lang/wgsl/sem/builtin_enum_expression.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/builtin_enum_expression.h"
+#include "src/tint/lang/wgsl/sem/builtin_enum_expression.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::BuiltinEnumExpressionBase);
 
diff --git a/src/tint/sem/builtin_enum_expression.h b/src/tint/lang/wgsl/sem/builtin_enum_expression.h
similarity index 89%
rename from src/tint/sem/builtin_enum_expression.h
rename to src/tint/lang/wgsl/sem/builtin_enum_expression.h
index 86c70c3..4c934ed 100644
--- a/src/tint/sem/builtin_enum_expression.h
+++ b/src/tint/lang/wgsl/sem/builtin_enum_expression.h
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_BUILTIN_ENUM_EXPRESSION_H_
-#define SRC_TINT_SEM_BUILTIN_ENUM_EXPRESSION_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_BUILTIN_ENUM_EXPRESSION_H_
+#define SRC_TINT_LANG_WGSL_SEM_BUILTIN_ENUM_EXPRESSION_H_
 
-#include "src/tint/sem/expression.h"
+#include "src/tint/lang/wgsl/sem/expression.h"
 
 // Forward declarations
 namespace tint::type {
@@ -64,4 +64,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_BUILTIN_ENUM_EXPRESSION_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_BUILTIN_ENUM_EXPRESSION_H_
diff --git a/src/tint/sem/builtin_test.cc b/src/tint/lang/wgsl/sem/builtin_test.cc
similarity index 99%
rename from src/tint/sem/builtin_test.cc
rename to src/tint/lang/wgsl/sem/builtin_test.cc
index ef63dc6..1051dfd 100644
--- a/src/tint/sem/builtin_test.cc
+++ b/src/tint/lang/wgsl/sem/builtin_test.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/builtin.h"
+#include "src/tint/lang/wgsl/sem/builtin.h"
 
 #include "gtest/gtest.h"
 
diff --git a/src/tint/sem/call.cc b/src/tint/lang/wgsl/sem/call.cc
similarity index 96%
rename from src/tint/sem/call.cc
rename to src/tint/lang/wgsl/sem/call.cc
index 69485f5..38e71b4 100644
--- a/src/tint/sem/call.cc
+++ b/src/tint/lang/wgsl/sem/call.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/call.h"
+#include "src/tint/lang/wgsl/sem/call.h"
 
 #include <utility>
 #include <vector>
diff --git a/src/tint/sem/call.h b/src/tint/lang/wgsl/sem/call.h
similarity index 90%
rename from src/tint/sem/call.h
rename to src/tint/lang/wgsl/sem/call.h
index e39aef3..5796a02 100644
--- a/src/tint/sem/call.h
+++ b/src/tint/lang/wgsl/sem/call.h
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_CALL_H_
-#define SRC_TINT_SEM_CALL_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_CALL_H_
+#define SRC_TINT_LANG_WGSL_SEM_CALL_H_
 
 #include <vector>
 
 #include "src/tint/lang/wgsl/ast/call_expression.h"
-#include "src/tint/sem/builtin.h"
-#include "src/tint/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/builtin.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/utils/vector.h"
 
 namespace tint::sem {
@@ -65,4 +65,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_CALL_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_CALL_H_
diff --git a/src/tint/sem/call_target.cc b/src/tint/lang/wgsl/sem/call_target.cc
similarity index 98%
rename from src/tint/sem/call_target.cc
rename to src/tint/lang/wgsl/sem/call_target.cc
index 9ef0059..00f1c7c 100644
--- a/src/tint/sem/call_target.cc
+++ b/src/tint/lang/wgsl/sem/call_target.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/call_target.h"
+#include "src/tint/lang/wgsl/sem/call_target.h"
 
 #include <utility>
 
diff --git a/src/tint/sem/call_target.h b/src/tint/lang/wgsl/sem/call_target.h
similarity index 95%
rename from src/tint/sem/call_target.h
rename to src/tint/lang/wgsl/sem/call_target.h
index 0bcb5d2..0d29f32 100644
--- a/src/tint/sem/call_target.h
+++ b/src/tint/lang/wgsl/sem/call_target.h
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_CALL_TARGET_H_
-#define SRC_TINT_SEM_CALL_TARGET_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_CALL_TARGET_H_
+#define SRC_TINT_LANG_WGSL_SEM_CALL_TARGET_H_
 
 #include <vector>
 
-#include "src/tint/sem/node.h"
-#include "src/tint/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/node.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/type/sampler.h"
 #include "src/tint/utils/hash.h"
 #include "src/tint/utils/vector.h"
@@ -142,4 +142,4 @@
 
 }  // namespace std
 
-#endif  // SRC_TINT_SEM_CALL_TARGET_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_CALL_TARGET_H_
diff --git a/src/tint/sem/diagnostic_severity_test.cc b/src/tint/lang/wgsl/sem/diagnostic_severity_test.cc
similarity index 98%
rename from src/tint/sem/diagnostic_severity_test.cc
rename to src/tint/lang/wgsl/sem/diagnostic_severity_test.cc
index a378add..bb5b775 100644
--- a/src/tint/sem/diagnostic_severity_test.cc
+++ b/src/tint/lang/wgsl/sem/diagnostic_severity_test.cc
@@ -12,9 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/test_helper.h"
+#include "src/tint/lang/wgsl/sem/test_helper.h"
 
-#include "src/tint/sem/module.h"
+#include "src/tint/lang/wgsl/sem/module.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/sem/evaluation_stage.h b/src/tint/lang/wgsl/sem/evaluation_stage.h
similarity index 92%
rename from src/tint/sem/evaluation_stage.h
rename to src/tint/lang/wgsl/sem/evaluation_stage.h
index a41f345..462070d 100644
--- a/src/tint/sem/evaluation_stage.h
+++ b/src/tint/lang/wgsl/sem/evaluation_stage.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_EVALUATION_STAGE_H_
-#define SRC_TINT_SEM_EVALUATION_STAGE_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_EVALUATION_STAGE_H_
+#define SRC_TINT_LANG_WGSL_SEM_EVALUATION_STAGE_H_
 
 #include <algorithm>
 #include <initializer_list>
@@ -59,4 +59,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_EVALUATION_STAGE_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_EVALUATION_STAGE_H_
diff --git a/src/tint/sem/expression.cc b/src/tint/lang/wgsl/sem/expression.cc
similarity index 94%
rename from src/tint/sem/expression.cc
rename to src/tint/lang/wgsl/sem/expression.cc
index f491ab4..1831065 100644
--- a/src/tint/sem/expression.cc
+++ b/src/tint/lang/wgsl/sem/expression.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/expression.h"
+#include "src/tint/lang/wgsl/sem/expression.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::Expression);
 
diff --git a/src/tint/sem/expression.h b/src/tint/lang/wgsl/sem/expression.h
similarity index 89%
rename from src/tint/sem/expression.h
rename to src/tint/lang/wgsl/sem/expression.h
index 8aee313..fabe326 100644
--- a/src/tint/sem/expression.h
+++ b/src/tint/lang/wgsl/sem/expression.h
@@ -12,11 +12,11 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_EXPRESSION_H_
-#define SRC_TINT_SEM_EXPRESSION_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_EXPRESSION_H_
+#define SRC_TINT_LANG_WGSL_SEM_EXPRESSION_H_
 
 #include "src/tint/lang/wgsl/ast/expression.h"
-#include "src/tint/sem/node.h"
+#include "src/tint/lang/wgsl/sem/node.h"
 
 // Forward declarations
 namespace tint::sem {
@@ -52,4 +52,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_EXPRESSION_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_EXPRESSION_H_
diff --git a/src/tint/sem/external_texture.h b/src/tint/lang/wgsl/sem/external_texture.h
similarity index 88%
rename from src/tint/sem/external_texture.h
rename to src/tint/lang/wgsl/sem/external_texture.h
index 2ad5673..5e24993 100644
--- a/src/tint/sem/external_texture.h
+++ b/src/tint/lang/wgsl/sem/external_texture.h
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_EXTERNAL_TEXTURE_H_
-#define SRC_TINT_SEM_EXTERNAL_TEXTURE_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_EXTERNAL_TEXTURE_H_
+#define SRC_TINT_LANG_WGSL_SEM_EXTERNAL_TEXTURE_H_
 
 #include <unordered_map>
 
-#include "src/tint/sem/binding_point.h"
+#include "src/tint/lang/wgsl/sem/binding_point.h"
 
 namespace tint::sem::external_texture {
 
@@ -42,4 +42,4 @@
 
 }  // namespace tint::sem::external_texture
 
-#endif  // SRC_TINT_SEM_EXTERNAL_TEXTURE_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_EXTERNAL_TEXTURE_H_
diff --git a/src/tint/sem/for_loop_statement.cc b/src/tint/lang/wgsl/sem/for_loop_statement.cc
similarity index 95%
rename from src/tint/sem/for_loop_statement.cc
rename to src/tint/lang/wgsl/sem/for_loop_statement.cc
index ce0b20c..00d4a2a 100644
--- a/src/tint/sem/for_loop_statement.cc
+++ b/src/tint/lang/wgsl/sem/for_loop_statement.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/for_loop_statement.h"
+#include "src/tint/lang/wgsl/sem/for_loop_statement.h"
 
 #include "src/tint/lang/wgsl/ast/for_loop_statement.h"
 
diff --git a/src/tint/sem/for_loop_statement.h b/src/tint/lang/wgsl/sem/for_loop_statement.h
similarity index 89%
rename from src/tint/sem/for_loop_statement.h
rename to src/tint/lang/wgsl/sem/for_loop_statement.h
index 154e00d..b3d038b 100644
--- a/src/tint/sem/for_loop_statement.h
+++ b/src/tint/lang/wgsl/sem/for_loop_statement.h
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_FOR_LOOP_STATEMENT_H_
-#define SRC_TINT_SEM_FOR_LOOP_STATEMENT_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_FOR_LOOP_STATEMENT_H_
+#define SRC_TINT_LANG_WGSL_SEM_FOR_LOOP_STATEMENT_H_
 
-#include "src/tint/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
 
 // Forward declarations
 namespace tint::ast {
@@ -57,4 +57,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_FOR_LOOP_STATEMENT_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_FOR_LOOP_STATEMENT_H_
diff --git a/src/tint/sem/function.cc b/src/tint/lang/wgsl/sem/function.cc
similarity index 98%
rename from src/tint/sem/function.cc
rename to src/tint/lang/wgsl/sem/function.cc
index 18d271a..a4bf14e 100644
--- a/src/tint/sem/function.cc
+++ b/src/tint/lang/wgsl/sem/function.cc
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/function.h"
+#include "src/tint/lang/wgsl/sem/function.h"
 
 #include "src/tint/lang/wgsl/ast/function.h"
 #include "src/tint/lang/wgsl/ast/identifier.h"
 #include "src/tint/lang/wgsl/ast/must_use_attribute.h"
-#include "src/tint/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/type/depth_texture.h"
 #include "src/tint/type/external_texture.h"
 #include "src/tint/type/multisampled_texture.h"
diff --git a/src/tint/sem/function.h b/src/tint/lang/wgsl/sem/function.h
similarity index 98%
rename from src/tint/sem/function.h
rename to src/tint/lang/wgsl/sem/function.h
index e9edcb2..9d29ae7 100644
--- a/src/tint/sem/function.h
+++ b/src/tint/lang/wgsl/sem/function.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_FUNCTION_H_
-#define SRC_TINT_SEM_FUNCTION_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_FUNCTION_H_
+#define SRC_TINT_LANG_WGSL_SEM_FUNCTION_H_
 
 #include <array>
 #include <optional>
@@ -22,7 +22,7 @@
 
 #include "src/tint/lang/wgsl/ast/diagnostic_control.h"
 #include "src/tint/lang/wgsl/ast/variable.h"
-#include "src/tint/sem/call.h"
+#include "src/tint/lang/wgsl/sem/call.h"
 #include "src/tint/utils/unique_vector.h"
 #include "src/tint/utils/vector.h"
 
@@ -302,4 +302,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_FUNCTION_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_FUNCTION_H_
diff --git a/src/tint/sem/function_expression.cc b/src/tint/lang/wgsl/sem/function_expression.cc
similarity index 94%
rename from src/tint/sem/function_expression.cc
rename to src/tint/lang/wgsl/sem/function_expression.cc
index 8695655..7d5ae72 100644
--- a/src/tint/sem/function_expression.cc
+++ b/src/tint/lang/wgsl/sem/function_expression.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/function_expression.h"
+#include "src/tint/lang/wgsl/sem/function_expression.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::FunctionExpression);
 
diff --git a/src/tint/sem/function_expression.h b/src/tint/lang/wgsl/sem/function_expression.h
similarity index 87%
rename from src/tint/sem/function_expression.h
rename to src/tint/lang/wgsl/sem/function_expression.h
index 9d9e8ec..2be70ff 100644
--- a/src/tint/sem/function_expression.h
+++ b/src/tint/lang/wgsl/sem/function_expression.h
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_FUNCTION_EXPRESSION_H_
-#define SRC_TINT_SEM_FUNCTION_EXPRESSION_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_FUNCTION_EXPRESSION_H_
+#define SRC_TINT_LANG_WGSL_SEM_FUNCTION_EXPRESSION_H_
 
-#include "src/tint/sem/expression.h"
+#include "src/tint/lang/wgsl/sem/expression.h"
 
 // Forward declarations
 namespace tint::sem {
@@ -48,4 +48,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_FUNCTION_EXPRESSION_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_FUNCTION_EXPRESSION_H_
diff --git a/src/tint/sem/if_statement.cc b/src/tint/lang/wgsl/sem/if_statement.cc
similarity index 95%
rename from src/tint/sem/if_statement.cc
rename to src/tint/lang/wgsl/sem/if_statement.cc
index e576830..b7f1a48 100644
--- a/src/tint/sem/if_statement.cc
+++ b/src/tint/lang/wgsl/sem/if_statement.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/if_statement.h"
+#include "src/tint/lang/wgsl/sem/if_statement.h"
 
 #include "src/tint/lang/wgsl/ast/if_statement.h"
 
diff --git a/src/tint/sem/if_statement.h b/src/tint/lang/wgsl/sem/if_statement.h
similarity index 90%
rename from src/tint/sem/if_statement.h
rename to src/tint/lang/wgsl/sem/if_statement.h
index 42146fc..7fed592 100644
--- a/src/tint/sem/if_statement.h
+++ b/src/tint/lang/wgsl/sem/if_statement.h
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_IF_STATEMENT_H_
-#define SRC_TINT_SEM_IF_STATEMENT_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_IF_STATEMENT_H_
+#define SRC_TINT_LANG_WGSL_SEM_IF_STATEMENT_H_
 
-#include "src/tint/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
 
 // Forward declarations
 namespace tint::ast {
@@ -57,4 +57,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_IF_STATEMENT_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_IF_STATEMENT_H_
diff --git a/src/tint/sem/index_accessor_expression.cc b/src/tint/lang/wgsl/sem/index_accessor_expression.cc
similarity index 96%
rename from src/tint/sem/index_accessor_expression.cc
rename to src/tint/lang/wgsl/sem/index_accessor_expression.cc
index 06ef447..bcb1531 100644
--- a/src/tint/sem/index_accessor_expression.cc
+++ b/src/tint/lang/wgsl/sem/index_accessor_expression.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/index_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
 
 #include "src/tint/lang/wgsl/ast/index_accessor_expression.h"
 
diff --git a/src/tint/sem/index_accessor_expression.h b/src/tint/lang/wgsl/sem/index_accessor_expression.h
similarity index 90%
rename from src/tint/sem/index_accessor_expression.h
rename to src/tint/lang/wgsl/sem/index_accessor_expression.h
index fc9890f..3a30e0c 100644
--- a/src/tint/sem/index_accessor_expression.h
+++ b/src/tint/lang/wgsl/sem/index_accessor_expression.h
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_INDEX_ACCESSOR_EXPRESSION_H_
-#define SRC_TINT_SEM_INDEX_ACCESSOR_EXPRESSION_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_INDEX_ACCESSOR_EXPRESSION_H_
+#define SRC_TINT_LANG_WGSL_SEM_INDEX_ACCESSOR_EXPRESSION_H_
 
 #include <vector>
 
 #include "src/tint/lang/wgsl/ast/index_accessor_expression.h"
-#include "src/tint/sem/accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/accessor_expression.h"
 
 namespace tint::sem {
 
@@ -63,4 +63,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_INDEX_ACCESSOR_EXPRESSION_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_INDEX_ACCESSOR_EXPRESSION_H_
diff --git a/src/tint/sem/info.cc b/src/tint/lang/wgsl/sem/info.cc
similarity index 92%
rename from src/tint/sem/info.cc
rename to src/tint/lang/wgsl/sem/info.cc
index 52a04b5..5643ff1 100644
--- a/src/tint/sem/info.cc
+++ b/src/tint/lang/wgsl/sem/info.cc
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/info.h"
+#include "src/tint/lang/wgsl/sem/info.h"
 
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/module.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/module.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/switch.h"
 
 namespace tint::sem {
diff --git a/src/tint/sem/info.h b/src/tint/lang/wgsl/sem/info.h
similarity index 96%
rename from src/tint/sem/info.h
rename to src/tint/lang/wgsl/sem/info.h
index e29eb9a..a5acc92 100644
--- a/src/tint/sem/info.h
+++ b/src/tint/lang/wgsl/sem/info.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_INFO_H_
-#define SRC_TINT_SEM_INFO_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_INFO_H_
+#define SRC_TINT_LANG_WGSL_SEM_INFO_H_
 
 #include <algorithm>
 #include <type_traits>
@@ -23,8 +23,8 @@
 #include "src/tint/debug.h"
 #include "src/tint/lang/wgsl/ast/diagnostic_control.h"
 #include "src/tint/lang/wgsl/ast/node.h"
-#include "src/tint/sem/node.h"
-#include "src/tint/sem/type_mappings.h"
+#include "src/tint/lang/wgsl/sem/node.h"
+#include "src/tint/lang/wgsl/sem/type_mappings.h"
 #include "src/tint/utils/unique_vector.h"
 
 // Forward declarations
@@ -177,4 +177,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_INFO_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_INFO_H_
diff --git a/src/tint/sem/load.cc b/src/tint/lang/wgsl/sem/load.cc
similarity index 96%
rename from src/tint/sem/load.cc
rename to src/tint/lang/wgsl/sem/load.cc
index acabdc7..66f8a30 100644
--- a/src/tint/sem/load.cc
+++ b/src/tint/lang/wgsl/sem/load.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/load.h"
+#include "src/tint/lang/wgsl/sem/load.h"
 
 #include "src/tint/debug.h"
 #include "src/tint/type/reference.h"
diff --git a/src/tint/sem/load.h b/src/tint/lang/wgsl/sem/load.h
similarity index 90%
rename from src/tint/sem/load.h
rename to src/tint/lang/wgsl/sem/load.h
index 674b631..29cb734 100644
--- a/src/tint/sem/load.h
+++ b/src/tint/lang/wgsl/sem/load.h
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_LOAD_H_
-#define SRC_TINT_SEM_LOAD_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_LOAD_H_
+#define SRC_TINT_LANG_WGSL_SEM_LOAD_H_
 
-#include "src/tint/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/type/reference.h"
 
 namespace tint::sem {
@@ -47,4 +47,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_LOAD_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_LOAD_H_
diff --git a/src/tint/sem/loop_statement.cc b/src/tint/lang/wgsl/sem/loop_statement.cc
similarity index 96%
rename from src/tint/sem/loop_statement.cc
rename to src/tint/lang/wgsl/sem/loop_statement.cc
index c9e08d7..b125176 100644
--- a/src/tint/sem/loop_statement.cc
+++ b/src/tint/lang/wgsl/sem/loop_statement.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/loop_statement.h"
+#include "src/tint/lang/wgsl/sem/loop_statement.h"
 
 #include "src/tint/lang/wgsl/ast/block_statement.h"
 #include "src/tint/lang/wgsl/ast/loop_statement.h"
diff --git a/src/tint/sem/loop_statement.h b/src/tint/lang/wgsl/sem/loop_statement.h
similarity index 90%
rename from src/tint/sem/loop_statement.h
rename to src/tint/lang/wgsl/sem/loop_statement.h
index c09bbb5..e2d2af4 100644
--- a/src/tint/sem/loop_statement.h
+++ b/src/tint/lang/wgsl/sem/loop_statement.h
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_LOOP_STATEMENT_H_
-#define SRC_TINT_SEM_LOOP_STATEMENT_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_LOOP_STATEMENT_H_
+#define SRC_TINT_LANG_WGSL_SEM_LOOP_STATEMENT_H_
 
-#include "src/tint/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
 
 // Forward declarations
 namespace tint::ast {
@@ -60,4 +60,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_LOOP_STATEMENT_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_LOOP_STATEMENT_H_
diff --git a/src/tint/sem/materialize.cc b/src/tint/lang/wgsl/sem/materialize.cc
similarity index 96%
rename from src/tint/sem/materialize.cc
rename to src/tint/lang/wgsl/sem/materialize.cc
index 1c27dba..8a6d756 100644
--- a/src/tint/sem/materialize.cc
+++ b/src/tint/lang/wgsl/sem/materialize.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/materialize.h"
+#include "src/tint/lang/wgsl/sem/materialize.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::Materialize);
 
diff --git a/src/tint/sem/materialize.h b/src/tint/lang/wgsl/sem/materialize.h
similarity index 90%
rename from src/tint/sem/materialize.h
rename to src/tint/lang/wgsl/sem/materialize.h
index c7b612f..2c998bc 100644
--- a/src/tint/sem/materialize.h
+++ b/src/tint/lang/wgsl/sem/materialize.h
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_MATERIALIZE_H_
-#define SRC_TINT_SEM_MATERIALIZE_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_MATERIALIZE_H_
+#define SRC_TINT_LANG_WGSL_SEM_MATERIALIZE_H_
 
-#include "src/tint/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 
 namespace tint::sem {
 
@@ -49,4 +49,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_MATERIALIZE_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_MATERIALIZE_H_
diff --git a/src/tint/sem/member_accessor_expression.cc b/src/tint/lang/wgsl/sem/member_accessor_expression.cc
similarity index 97%
rename from src/tint/sem/member_accessor_expression.cc
rename to src/tint/lang/wgsl/sem/member_accessor_expression.cc
index b1ad2c3..529f446 100644
--- a/src/tint/sem/member_accessor_expression.cc
+++ b/src/tint/lang/wgsl/sem/member_accessor_expression.cc
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 #include "src/tint/lang/wgsl/ast/member_accessor_expression.h"
-#include "src/tint/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
 
 #include <utility>
 
diff --git a/src/tint/sem/member_accessor_expression.h b/src/tint/lang/wgsl/sem/member_accessor_expression.h
similarity index 95%
rename from src/tint/sem/member_accessor_expression.h
rename to src/tint/lang/wgsl/sem/member_accessor_expression.h
index feb11f6..58ba2d2 100644
--- a/src/tint/sem/member_accessor_expression.h
+++ b/src/tint/lang/wgsl/sem/member_accessor_expression.h
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_MEMBER_ACCESSOR_EXPRESSION_H_
-#define SRC_TINT_SEM_MEMBER_ACCESSOR_EXPRESSION_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_MEMBER_ACCESSOR_EXPRESSION_H_
+#define SRC_TINT_LANG_WGSL_SEM_MEMBER_ACCESSOR_EXPRESSION_H_
 
-#include "src/tint/sem/accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/accessor_expression.h"
 #include "src/tint/utils/vector.h"
 
 // Forward declarations
@@ -124,4 +124,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_MEMBER_ACCESSOR_EXPRESSION_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_MEMBER_ACCESSOR_EXPRESSION_H_
diff --git a/src/tint/sem/module.cc b/src/tint/lang/wgsl/sem/module.cc
similarity index 95%
rename from src/tint/sem/module.cc
rename to src/tint/lang/wgsl/sem/module.cc
index 971c7f2..a9fa178 100644
--- a/src/tint/sem/module.cc
+++ b/src/tint/lang/wgsl/sem/module.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/module.h"
+#include "src/tint/lang/wgsl/sem/module.h"
 
 #include <utility>
 #include <vector>
diff --git a/src/tint/sem/module.h b/src/tint/lang/wgsl/sem/module.h
similarity index 93%
rename from src/tint/sem/module.h
rename to src/tint/lang/wgsl/sem/module.h
index 70f1254..e8498f3 100644
--- a/src/tint/sem/module.h
+++ b/src/tint/lang/wgsl/sem/module.h
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_MODULE_H_
-#define SRC_TINT_SEM_MODULE_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_MODULE_H_
+#define SRC_TINT_LANG_WGSL_SEM_MODULE_H_
 
 #include "src/tint/builtin/extension.h"
 #include "src/tint/lang/wgsl/ast/diagnostic_control.h"
-#include "src/tint/sem/node.h"
+#include "src/tint/lang/wgsl/sem/node.h"
 #include "src/tint/utils/vector.h"
 
 // Forward declarations
@@ -67,4 +67,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_MODULE_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_MODULE_H_
diff --git a/src/tint/sem/node.cc b/src/tint/lang/wgsl/sem/node.cc
similarity index 94%
rename from src/tint/sem/node.cc
rename to src/tint/lang/wgsl/sem/node.cc
index d069797..b834c84 100644
--- a/src/tint/sem/node.cc
+++ b/src/tint/lang/wgsl/sem/node.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/node.h"
+#include "src/tint/lang/wgsl/sem/node.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::Node);
 
diff --git a/src/tint/sem/node.h b/src/tint/lang/wgsl/sem/node.h
similarity index 88%
rename from src/tint/sem/node.h
rename to src/tint/lang/wgsl/sem/node.h
index 9a1c706..e354e5c 100644
--- a/src/tint/sem/node.h
+++ b/src/tint/lang/wgsl/sem/node.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_NODE_H_
-#define SRC_TINT_SEM_NODE_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_NODE_H_
+#define SRC_TINT_LANG_WGSL_SEM_NODE_H_
 
 #include "src/tint/utils/castable.h"
 
@@ -34,4 +34,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_NODE_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_NODE_H_
diff --git a/src/tint/sem/parameter_usage.cc b/src/tint/lang/wgsl/sem/parameter_usage.cc
similarity index 95%
rename from src/tint/sem/parameter_usage.cc
rename to src/tint/lang/wgsl/sem/parameter_usage.cc
index f929ce1..d60f30b 100644
--- a/src/tint/sem/parameter_usage.cc
+++ b/src/tint/lang/wgsl/sem/parameter_usage.cc
@@ -15,12 +15,12 @@
 ////////////////////////////////////////////////////////////////////////////////
 // File generated by tools/src/cmd/gen
 // using the template:
-//   src/tint/sem/parameter_usage.cc.tmpl
+//   src/tint/lang/wgsl/sem/parameter_usage.cc.tmpl
 //
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-#include "src/tint/sem/parameter_usage.h"
+#include "src/tint/lang/wgsl/sem/parameter_usage.h"
 
 namespace tint::sem {
 
diff --git a/src/tint/sem/parameter_usage.cc.tmpl b/src/tint/lang/wgsl/sem/parameter_usage.cc.tmpl
similarity index 93%
rename from src/tint/sem/parameter_usage.cc.tmpl
rename to src/tint/lang/wgsl/sem/parameter_usage.cc.tmpl
index 62cb42e..afdc67f 100644
--- a/src/tint/sem/parameter_usage.cc.tmpl
+++ b/src/tint/lang/wgsl/sem/parameter_usage.cc.tmpl
@@ -11,7 +11,7 @@
 --------------------------------------------------------------------------------
 */ -}}
 
-#include "src/tint/sem/parameter_usage.h"
+#include "src/tint/lang/wgsl/sem/parameter_usage.h"
 
 namespace tint::sem {
 
diff --git a/src/tint/sem/parameter_usage.h b/src/tint/lang/wgsl/sem/parameter_usage.h
similarity index 87%
rename from src/tint/sem/parameter_usage.h
rename to src/tint/lang/wgsl/sem/parameter_usage.h
index b358534..1f10df2 100644
--- a/src/tint/sem/parameter_usage.h
+++ b/src/tint/lang/wgsl/sem/parameter_usage.h
@@ -15,13 +15,13 @@
 ////////////////////////////////////////////////////////////////////////////////
 // File generated by tools/src/cmd/gen
 // using the template:
-//   src/tint/sem/parameter_usage.h.tmpl
+//   src/tint/lang/wgsl/sem/parameter_usage.h.tmpl
 //
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-#ifndef SRC_TINT_SEM_PARAMETER_USAGE_H_
-#define SRC_TINT_SEM_PARAMETER_USAGE_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_PARAMETER_USAGE_H_
+#define SRC_TINT_LANG_WGSL_SEM_PARAMETER_USAGE_H_
 
 namespace tint::sem {
 
@@ -58,4 +58,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_PARAMETER_USAGE_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_PARAMETER_USAGE_H_
diff --git a/src/tint/sem/parameter_usage.h.tmpl b/src/tint/lang/wgsl/sem/parameter_usage.h.tmpl
similarity index 84%
rename from src/tint/sem/parameter_usage.h.tmpl
rename to src/tint/lang/wgsl/sem/parameter_usage.h.tmpl
index 7c09805..ddaf7e9 100644
--- a/src/tint/sem/parameter_usage.h.tmpl
+++ b/src/tint/lang/wgsl/sem/parameter_usage.h.tmpl
@@ -11,8 +11,8 @@
 --------------------------------------------------------------------------------
 */ -}}
 
-#ifndef SRC_TINT_SEM_PARAMETER_USAGE_H_
-#define SRC_TINT_SEM_PARAMETER_USAGE_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_PARAMETER_USAGE_H_
+#define SRC_TINT_LANG_WGSL_SEM_PARAMETER_USAGE_H_
 
 namespace tint::sem {
 
@@ -30,4 +30,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_PARAMETER_USAGE_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_PARAMETER_USAGE_H_
diff --git a/src/tint/sem/pipeline_stage_set.h b/src/tint/lang/wgsl/sem/pipeline_stage_set.h
similarity index 82%
rename from src/tint/sem/pipeline_stage_set.h
rename to src/tint/lang/wgsl/sem/pipeline_stage_set.h
index f9b86de..ebefe1b 100644
--- a/src/tint/sem/pipeline_stage_set.h
+++ b/src/tint/lang/wgsl/sem/pipeline_stage_set.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_PIPELINE_STAGE_SET_H_
-#define SRC_TINT_SEM_PIPELINE_STAGE_SET_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_PIPELINE_STAGE_SET_H_
+#define SRC_TINT_LANG_WGSL_SEM_PIPELINE_STAGE_SET_H_
 
 #include "src/tint/lang/wgsl/ast/pipeline_stage.h"
 #include "src/tint/utils/enum_set.h"
@@ -24,4 +24,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_PIPELINE_STAGE_SET_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_PIPELINE_STAGE_SET_H_
diff --git a/src/tint/sem/sampler_texture_pair.h b/src/tint/lang/wgsl/sem/sampler_texture_pair.h
similarity index 91%
rename from src/tint/sem/sampler_texture_pair.h
rename to src/tint/lang/wgsl/sem/sampler_texture_pair.h
index b0199bb..3455801 100644
--- a/src/tint/sem/sampler_texture_pair.h
+++ b/src/tint/lang/wgsl/sem/sampler_texture_pair.h
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_SAMPLER_TEXTURE_PAIR_H_
-#define SRC_TINT_SEM_SAMPLER_TEXTURE_PAIR_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_SAMPLER_TEXTURE_PAIR_H_
+#define SRC_TINT_LANG_WGSL_SEM_SAMPLER_TEXTURE_PAIR_H_
 
 #include <cstdint>
 #include <functional>
 
-#include "src/tint/sem/binding_point.h"
+#include "src/tint/lang/wgsl/sem/binding_point.h"
 #include "src/tint/utils/string_stream.h"
 
 namespace tint::sem {
@@ -72,4 +72,4 @@
 
 }  // namespace std
 
-#endif  // SRC_TINT_SEM_SAMPLER_TEXTURE_PAIR_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_SAMPLER_TEXTURE_PAIR_H_
diff --git a/src/tint/sem/statement.cc b/src/tint/lang/wgsl/sem/statement.cc
similarity index 92%
rename from src/tint/sem/statement.cc
rename to src/tint/lang/wgsl/sem/statement.cc
index 79ce24f..4d2cbf3 100644
--- a/src/tint/sem/statement.cc
+++ b/src/tint/lang/wgsl/sem/statement.cc
@@ -19,9 +19,9 @@
 #include "src/tint/lang/wgsl/ast/loop_statement.h"
 #include "src/tint/lang/wgsl/ast/statement.h"
 #include "src/tint/lang/wgsl/ast/variable.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::Statement);
 TINT_INSTANTIATE_TYPEINFO(tint::sem::CompoundStatement);
diff --git a/src/tint/sem/statement.h b/src/tint/lang/wgsl/sem/statement.h
similarity index 96%
rename from src/tint/sem/statement.h
rename to src/tint/lang/wgsl/sem/statement.h
index 87c560c..495516a 100644
--- a/src/tint/sem/statement.h
+++ b/src/tint/lang/wgsl/sem/statement.h
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_STATEMENT_H_
-#define SRC_TINT_SEM_STATEMENT_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_STATEMENT_H_
+#define SRC_TINT_LANG_WGSL_SEM_STATEMENT_H_
 
 #include "src/tint/lang/wgsl/ast/diagnostic_control.h"
-#include "src/tint/sem/behavior.h"
-#include "src/tint/sem/node.h"
+#include "src/tint/lang/wgsl/sem/behavior.h"
+#include "src/tint/lang/wgsl/sem/node.h"
 #include "src/tint/symbol.h"
 #include "src/tint/utils/hashmap.h"
 
@@ -211,4 +211,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_STATEMENT_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_STATEMENT_H_
diff --git a/src/tint/sem/struct.cc b/src/tint/lang/wgsl/sem/struct.cc
similarity index 97%
rename from src/tint/sem/struct.cc
rename to src/tint/lang/wgsl/sem/struct.cc
index 03c88cc..e71a6ad 100644
--- a/src/tint/sem/struct.cc
+++ b/src/tint/lang/wgsl/sem/struct.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/struct.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
 
 #include "src/tint/lang/wgsl/ast/struct_member.h"
 
diff --git a/src/tint/sem/struct.h b/src/tint/lang/wgsl/sem/struct.h
similarity index 96%
rename from src/tint/sem/struct.h
rename to src/tint/lang/wgsl/sem/struct.h
index 9107cf6..4e750b8 100644
--- a/src/tint/sem/struct.h
+++ b/src/tint/lang/wgsl/sem/struct.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_STRUCT_H_
-#define SRC_TINT_SEM_STRUCT_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_STRUCT_H_
+#define SRC_TINT_LANG_WGSL_SEM_STRUCT_H_
 
 #include <optional>
 
@@ -107,4 +107,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_STRUCT_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_STRUCT_H_
diff --git a/src/tint/sem/struct_test.cc b/src/tint/lang/wgsl/sem/struct_test.cc
similarity index 95%
rename from src/tint/sem/struct_test.cc
rename to src/tint/lang/wgsl/sem/struct_test.cc
index c267234..a811112 100644
--- a/src/tint/sem/struct_test.cc
+++ b/src/tint/lang/wgsl/sem/struct_test.cc
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/struct.h"
-#include "src/tint/sem/test_helper.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
+#include "src/tint/lang/wgsl/sem/test_helper.h"
 #include "src/tint/type/texture.h"
 
 namespace tint::sem {
diff --git a/src/tint/sem/switch_statement.cc b/src/tint/lang/wgsl/sem/switch_statement.cc
similarity index 97%
rename from src/tint/sem/switch_statement.cc
rename to src/tint/lang/wgsl/sem/switch_statement.cc
index ef737d2..53213d6 100644
--- a/src/tint/sem/switch_statement.cc
+++ b/src/tint/lang/wgsl/sem/switch_statement.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/switch_statement.h"
+#include "src/tint/lang/wgsl/sem/switch_statement.h"
 
 #include "src/tint/lang/wgsl/ast/case_statement.h"
 #include "src/tint/lang/wgsl/ast/switch_statement.h"
diff --git a/src/tint/sem/switch_statement.h b/src/tint/lang/wgsl/sem/switch_statement.h
similarity index 94%
rename from src/tint/sem/switch_statement.h
rename to src/tint/lang/wgsl/sem/switch_statement.h
index 68c754f..43c6bc6 100644
--- a/src/tint/sem/switch_statement.h
+++ b/src/tint/lang/wgsl/sem/switch_statement.h
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_SWITCH_STATEMENT_H_
-#define SRC_TINT_SEM_SWITCH_STATEMENT_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_SWITCH_STATEMENT_H_
+#define SRC_TINT_LANG_WGSL_SEM_SWITCH_STATEMENT_H_
 
 #include <vector>
 
-#include "src/tint/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
 
 // Forward declarations
 namespace tint::ast {
@@ -124,4 +124,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_SWITCH_STATEMENT_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_SWITCH_STATEMENT_H_
diff --git a/src/tint/sem/test_helper.h b/src/tint/lang/wgsl/sem/test_helper.h
similarity index 90%
rename from src/tint/sem/test_helper.h
rename to src/tint/lang/wgsl/sem/test_helper.h
index 9433a8c..ddafbfe 100644
--- a/src/tint/sem/test_helper.h
+++ b/src/tint/lang/wgsl/sem/test_helper.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_TEST_HELPER_H_
-#define SRC_TINT_SEM_TEST_HELPER_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_TEST_HELPER_H_
+#define SRC_TINT_LANG_WGSL_SEM_TEST_HELPER_H_
 
 #include <utility>
 
@@ -44,4 +44,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_TEST_HELPER_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_TEST_HELPER_H_
diff --git a/src/tint/sem/type_expression.cc b/src/tint/lang/wgsl/sem/type_expression.cc
similarity index 94%
rename from src/tint/sem/type_expression.cc
rename to src/tint/lang/wgsl/sem/type_expression.cc
index 5129def..aeab271 100644
--- a/src/tint/sem/type_expression.cc
+++ b/src/tint/lang/wgsl/sem/type_expression.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/type_expression.h"
+#include "src/tint/lang/wgsl/sem/type_expression.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::TypeExpression);
 
diff --git a/src/tint/sem/type_expression.h b/src/tint/lang/wgsl/sem/type_expression.h
similarity index 87%
rename from src/tint/sem/type_expression.h
rename to src/tint/lang/wgsl/sem/type_expression.h
index 981be69..45baee7 100644
--- a/src/tint/sem/type_expression.h
+++ b/src/tint/lang/wgsl/sem/type_expression.h
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_TYPE_EXPRESSION_H_
-#define SRC_TINT_SEM_TYPE_EXPRESSION_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_TYPE_EXPRESSION_H_
+#define SRC_TINT_LANG_WGSL_SEM_TYPE_EXPRESSION_H_
 
-#include "src/tint/sem/expression.h"
+#include "src/tint/lang/wgsl/sem/expression.h"
 
 // Forward declarations
 namespace tint::type {
@@ -47,4 +47,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_TYPE_EXPRESSION_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_TYPE_EXPRESSION_H_
diff --git a/src/tint/sem/type_mappings.h b/src/tint/lang/wgsl/sem/type_mappings.h
similarity index 93%
rename from src/tint/sem/type_mappings.h
rename to src/tint/lang/wgsl/sem/type_mappings.h
index 4f31254..25434a1 100644
--- a/src/tint/sem/type_mappings.h
+++ b/src/tint/lang/wgsl/sem/type_mappings.h
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_TYPE_MAPPINGS_H_
-#define SRC_TINT_SEM_TYPE_MAPPINGS_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_TYPE_MAPPINGS_H_
+#define SRC_TINT_LANG_WGSL_SEM_TYPE_MAPPINGS_H_
 
 #include <type_traits>
 
-#include "src/tint/sem/builtin_enum_expression.h"
+#include "src/tint/lang/wgsl/sem/builtin_enum_expression.h"
 
 // Forward declarations
 namespace tint::utils {
@@ -109,4 +109,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_TYPE_MAPPINGS_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_TYPE_MAPPINGS_H_
diff --git a/src/tint/sem/value_constructor.cc b/src/tint/lang/wgsl/sem/value_constructor.cc
similarity index 94%
rename from src/tint/sem/value_constructor.cc
rename to src/tint/lang/wgsl/sem/value_constructor.cc
index b270414..97e811e 100644
--- a/src/tint/sem/value_constructor.cc
+++ b/src/tint/lang/wgsl/sem/value_constructor.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/value_constructor.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
 
 #include <utility>
 
diff --git a/src/tint/sem/value_constructor.h b/src/tint/lang/wgsl/sem/value_constructor.h
similarity index 85%
rename from src/tint/sem/value_constructor.h
rename to src/tint/lang/wgsl/sem/value_constructor.h
index 02fff3b..6a5f86f 100644
--- a/src/tint/sem/value_constructor.h
+++ b/src/tint/lang/wgsl/sem/value_constructor.h
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_VALUE_CONSTRUCTOR_H_
-#define SRC_TINT_SEM_VALUE_CONSTRUCTOR_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_VALUE_CONSTRUCTOR_H_
+#define SRC_TINT_LANG_WGSL_SEM_VALUE_CONSTRUCTOR_H_
 
-#include "src/tint/sem/call_target.h"
+#include "src/tint/lang/wgsl/sem/call_target.h"
 #include "src/tint/utils/vector.h"
 
 namespace tint::sem {
@@ -37,4 +37,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_VALUE_CONSTRUCTOR_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_VALUE_CONSTRUCTOR_H_
diff --git a/src/tint/sem/value_conversion.cc b/src/tint/lang/wgsl/sem/value_conversion.cc
similarity index 94%
rename from src/tint/sem/value_conversion.cc
rename to src/tint/lang/wgsl/sem/value_conversion.cc
index 95587fe..3049f74 100644
--- a/src/tint/sem/value_conversion.cc
+++ b/src/tint/lang/wgsl/sem/value_conversion.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/value_conversion.h"
+#include "src/tint/lang/wgsl/sem/value_conversion.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::ValueConversion);
 
diff --git a/src/tint/sem/value_conversion.h b/src/tint/lang/wgsl/sem/value_conversion.h
similarity index 86%
rename from src/tint/sem/value_conversion.h
rename to src/tint/lang/wgsl/sem/value_conversion.h
index 890856e..2eb0fd1 100644
--- a/src/tint/sem/value_conversion.h
+++ b/src/tint/lang/wgsl/sem/value_conversion.h
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_VALUE_CONVERSION_H_
-#define SRC_TINT_SEM_VALUE_CONVERSION_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_VALUE_CONVERSION_H_
+#define SRC_TINT_LANG_WGSL_SEM_VALUE_CONVERSION_H_
 
-#include "src/tint/sem/call_target.h"
+#include "src/tint/lang/wgsl/sem/call_target.h"
 
 namespace tint::sem {
 
@@ -40,4 +40,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_VALUE_CONVERSION_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_VALUE_CONVERSION_H_
diff --git a/src/tint/sem/value_expression.cc b/src/tint/lang/wgsl/sem/value_expression.cc
similarity index 93%
rename from src/tint/sem/value_expression.cc
rename to src/tint/lang/wgsl/sem/value_expression.cc
index 9aacfa3..0098722 100644
--- a/src/tint/sem/value_expression.cc
+++ b/src/tint/lang/wgsl/sem/value_expression.cc
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 
 #include <utility>
 
-#include "src/tint/sem/load.h"
-#include "src/tint/sem/materialize.h"
+#include "src/tint/lang/wgsl/sem/load.h"
+#include "src/tint/lang/wgsl/sem/materialize.h"
 #include "src/tint/switch.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::ValueExpression);
diff --git a/src/tint/sem/value_expression.h b/src/tint/lang/wgsl/sem/value_expression.h
similarity index 92%
rename from src/tint/sem/value_expression.h
rename to src/tint/lang/wgsl/sem/value_expression.h
index 2059ae3..924cc7e 100644
--- a/src/tint/sem/value_expression.h
+++ b/src/tint/lang/wgsl/sem/value_expression.h
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_VALUE_EXPRESSION_H_
-#define SRC_TINT_SEM_VALUE_EXPRESSION_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_VALUE_EXPRESSION_H_
+#define SRC_TINT_LANG_WGSL_SEM_VALUE_EXPRESSION_H_
 
 #include "src/tint/constant/value.h"
-#include "src/tint/sem/behavior.h"
-#include "src/tint/sem/evaluation_stage.h"
-#include "src/tint/sem/expression.h"
+#include "src/tint/lang/wgsl/sem/behavior.h"
+#include "src/tint/lang/wgsl/sem/evaluation_stage.h"
+#include "src/tint/lang/wgsl/sem/expression.h"
 
 // Forward declarations
 namespace tint::sem {
@@ -98,4 +98,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_VALUE_EXPRESSION_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_VALUE_EXPRESSION_H_
diff --git a/src/tint/sem/value_expression_test.cc b/src/tint/lang/wgsl/sem/value_expression_test.cc
similarity index 93%
rename from src/tint/sem/value_expression_test.cc
rename to src/tint/lang/wgsl/sem/value_expression_test.cc
index 0a2c9ef..541c8d3 100644
--- a/src/tint/sem/value_expression_test.cc
+++ b/src/tint/lang/wgsl/sem/value_expression_test.cc
@@ -12,11 +12,11 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 
-#include "src/tint/sem/test_helper.h"
+#include "src/tint/lang/wgsl/sem/test_helper.h"
 
-#include "src/tint/sem/materialize.h"
+#include "src/tint/lang/wgsl/sem/materialize.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/sem/variable.cc b/src/tint/lang/wgsl/sem/variable.cc
similarity index 98%
rename from src/tint/sem/variable.cc
rename to src/tint/lang/wgsl/sem/variable.cc
index a37bde1..b9b69e0 100644
--- a/src/tint/sem/variable.cc
+++ b/src/tint/lang/wgsl/sem/variable.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 
 #include <utility>
 
diff --git a/src/tint/sem/variable.h b/src/tint/lang/wgsl/sem/variable.h
similarity index 97%
rename from src/tint/sem/variable.h
rename to src/tint/lang/wgsl/sem/variable.h
index 9ddfd51..2764a83 100644
--- a/src/tint/sem/variable.h
+++ b/src/tint/lang/wgsl/sem/variable.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_VARIABLE_H_
-#define SRC_TINT_SEM_VARIABLE_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_VARIABLE_H_
+#define SRC_TINT_LANG_WGSL_SEM_VARIABLE_H_
 
 #include <optional>
 #include <utility>
@@ -24,9 +24,9 @@
 #include "src/tint/builtin/access.h"
 #include "src/tint/builtin/address_space.h"
 #include "src/tint/lang/wgsl/ast/parameter.h"
-#include "src/tint/sem/binding_point.h"
-#include "src/tint/sem/parameter_usage.h"
-#include "src/tint/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/binding_point.h"
+#include "src/tint/lang/wgsl/sem/parameter_usage.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/type/type.h"
 #include "src/tint/utils/unique_vector.h"
 
@@ -300,4 +300,4 @@
 
 }  // namespace std
 
-#endif  // SRC_TINT_SEM_VARIABLE_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_VARIABLE_H_
diff --git a/src/tint/sem/while_statement.cc b/src/tint/lang/wgsl/sem/while_statement.cc
similarity index 95%
rename from src/tint/sem/while_statement.cc
rename to src/tint/lang/wgsl/sem/while_statement.cc
index 2ec0924..eb078cf 100644
--- a/src/tint/sem/while_statement.cc
+++ b/src/tint/lang/wgsl/sem/while_statement.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/while_statement.h"
+#include "src/tint/lang/wgsl/sem/while_statement.h"
 
 #include "src/tint/lang/wgsl/ast/while_statement.h"
 
diff --git a/src/tint/sem/while_statement.h b/src/tint/lang/wgsl/sem/while_statement.h
similarity index 89%
rename from src/tint/sem/while_statement.h
rename to src/tint/lang/wgsl/sem/while_statement.h
index 75d9d93..edd1e2d 100644
--- a/src/tint/sem/while_statement.h
+++ b/src/tint/lang/wgsl/sem/while_statement.h
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_WHILE_STATEMENT_H_
-#define SRC_TINT_SEM_WHILE_STATEMENT_H_
+#ifndef SRC_TINT_LANG_WGSL_SEM_WHILE_STATEMENT_H_
+#define SRC_TINT_LANG_WGSL_SEM_WHILE_STATEMENT_H_
 
-#include "src/tint/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
 
 // Forward declarations
 namespace tint::ast {
@@ -57,4 +57,4 @@
 
 }  // namespace tint::sem
 
-#endif  // SRC_TINT_SEM_WHILE_STATEMENT_H_
+#endif  // SRC_TINT_LANG_WGSL_SEM_WHILE_STATEMENT_H_
diff --git a/src/tint/lang/wgsl/syntax_tree_writer/generator_impl.cc b/src/tint/lang/wgsl/syntax_tree_writer/generator_impl.cc
index a861e66..784749e 100644
--- a/src/tint/lang/wgsl/syntax_tree_writer/generator_impl.cc
+++ b/src/tint/lang/wgsl/syntax_tree_writer/generator_impl.cc
@@ -32,8 +32,8 @@
 #include "src/tint/lang/wgsl/ast/struct_member_size_attribute.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
 #include "src/tint/lang/wgsl/ast/workgroup_attribute.h"
-#include "src/tint/sem/struct.h"
-#include "src/tint/sem/switch_statement.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
+#include "src/tint/lang/wgsl/sem/switch_statement.h"
 #include "src/tint/switch.h"
 #include "src/tint/utils/math.h"
 #include "src/tint/utils/scoped_assignment.h"
diff --git a/src/tint/lang/wgsl/syntax_tree_writer/generator_impl.h b/src/tint/lang/wgsl/syntax_tree_writer/generator_impl.h
index 871ae7f..f25b613 100644
--- a/src/tint/lang/wgsl/syntax_tree_writer/generator_impl.h
+++ b/src/tint/lang/wgsl/syntax_tree_writer/generator_impl.h
@@ -33,8 +33,8 @@
 #include "src/tint/lang/wgsl/ast/return_statement.h"
 #include "src/tint/lang/wgsl/ast/switch_statement.h"
 #include "src/tint/lang/wgsl/ast/unary_op_expression.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
 #include "src/tint/program.h"
-#include "src/tint/sem/struct.h"
 #include "src/tint/utils/string_stream.h"
 #include "src/tint/writer/ast_text_generator.h"
 
diff --git a/src/tint/program.cc b/src/tint/program.cc
index 92a9f02..f08e09b 100644
--- a/src/tint/program.cc
+++ b/src/tint/program.cc
@@ -16,9 +16,9 @@
 
 #include <utility>
 
+#include "src/tint/lang/wgsl/sem/type_expression.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/resolver/resolver.h"
-#include "src/tint/sem/type_expression.h"
-#include "src/tint/sem/value_expression.h"
 #include "src/tint/switch.h"
 
 namespace tint {
diff --git a/src/tint/program.h b/src/tint/program.h
index 8d3b4ac..cdc2041 100644
--- a/src/tint/program.h
+++ b/src/tint/program.h
@@ -20,8 +20,8 @@
 
 #include "src/tint/constant/manager.h"
 #include "src/tint/lang/wgsl/ast/function.h"
+#include "src/tint/lang/wgsl/sem/info.h"
 #include "src/tint/program_id.h"
-#include "src/tint/sem/info.h"
 #include "src/tint/symbol_table.h"
 #include "src/tint/type/manager.h"
 
diff --git a/src/tint/program_builder.cc b/src/tint/program_builder.cc
index c82e4b0..b68a2fd 100644
--- a/src/tint/program_builder.cc
+++ b/src/tint/program_builder.cc
@@ -18,9 +18,9 @@
 #include "src/tint/lang/wgsl/ast/assignment_statement.h"
 #include "src/tint/lang/wgsl/ast/call_statement.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
-#include "src/tint/sem/type_expression.h"
-#include "src/tint/sem/value_expression.h"
-#include "src/tint/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/type_expression.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/switch.h"
 #include "src/tint/utils/compiler_macros.h"
 
diff --git a/src/tint/program_builder.h b/src/tint/program_builder.h
index 0362ef6..16964a7 100644
--- a/src/tint/program_builder.h
+++ b/src/tint/program_builder.h
@@ -82,10 +82,10 @@
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
 #include "src/tint/lang/wgsl/ast/while_statement.h"
 #include "src/tint/lang/wgsl/ast/workgroup_attribute.h"
+#include "src/tint/lang/wgsl/sem/array_count.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
 #include "src/tint/program.h"
 #include "src/tint/program_id.h"
-#include "src/tint/sem/array_count.h"
-#include "src/tint/sem/struct.h"
 #include "src/tint/type/array.h"
 #include "src/tint/type/bool.h"
 #include "src/tint/type/depth_texture.h"
diff --git a/src/tint/resolver/address_space_validation_test.cc b/src/tint/resolver/address_space_validation_test.cc
index a5bd21e..c66884e 100644
--- a/src/tint/resolver/address_space_validation_test.cc
+++ b/src/tint/resolver/address_space_validation_test.cc
@@ -15,8 +15,8 @@
 #include "src/tint/resolver/resolver.h"
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/sem/struct.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/array_accessor_test.cc b/src/tint/resolver/array_accessor_test.cc
index 3b12afd..f1acc5b 100644
--- a/src/tint/resolver/array_accessor_test.cc
+++ b/src/tint/resolver/array_accessor_test.cc
@@ -15,8 +15,8 @@
 #include "src/tint/resolver/resolver.h"
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/sem/index_accessor_expression.h"
 #include "src/tint/type/reference.h"
 
 namespace tint::resolver {
diff --git a/src/tint/resolver/builtin_test.cc b/src/tint/resolver/builtin_test.cc
index 1c9334b..7a28ab7 100644
--- a/src/tint/resolver/builtin_test.cc
+++ b/src/tint/resolver/builtin_test.cc
@@ -28,12 +28,12 @@
 #include "src/tint/lang/wgsl/ast/switch_statement.h"
 #include "src/tint/lang/wgsl/ast/unary_op_expression.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/type/sampled_texture.h"
 #include "src/tint/type/test_helper.h"
 #include "src/tint/type/texture_dimension.h"
diff --git a/src/tint/resolver/builtin_validation_test.cc b/src/tint/resolver/builtin_validation_test.cc
index 07c5578..dd8eac4 100644
--- a/src/tint/resolver/builtin_validation_test.cc
+++ b/src/tint/resolver/builtin_validation_test.cc
@@ -15,8 +15,8 @@
 #include <unordered_set>
 
 #include "src/tint/lang/wgsl/ast/builtin_texture_helper_test.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/sem/value_constructor.h"
 #include "src/tint/utils/string_stream.h"
 
 namespace tint::resolver {
diff --git a/src/tint/resolver/compound_statement_test.cc b/src/tint/resolver/compound_statement_test.cc
index b5a5ba9..b693bac 100644
--- a/src/tint/resolver/compound_statement_test.cc
+++ b/src/tint/resolver/compound_statement_test.cc
@@ -15,13 +15,13 @@
 #include "src/tint/resolver/resolver.h"
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/for_loop_statement.h"
+#include "src/tint/lang/wgsl/sem/if_statement.h"
+#include "src/tint/lang/wgsl/sem/loop_statement.h"
+#include "src/tint/lang/wgsl/sem/switch_statement.h"
+#include "src/tint/lang/wgsl/sem/while_statement.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/for_loop_statement.h"
-#include "src/tint/sem/if_statement.h"
-#include "src/tint/sem/loop_statement.h"
-#include "src/tint/sem/switch_statement.h"
-#include "src/tint/sem/while_statement.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/resolver/const_eval.cc b/src/tint/resolver/const_eval.cc
index 0a0391d..7073617 100644
--- a/src/tint/resolver/const_eval.cc
+++ b/src/tint/resolver/const_eval.cc
@@ -27,9 +27,9 @@
 #include "src/tint/constant/scalar.h"
 #include "src/tint/constant/splat.h"
 #include "src/tint/constant/value.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/value_constructor.h"
 #include "src/tint/switch.h"
 #include "src/tint/type/abstract_float.h"
 #include "src/tint/type/abstract_int.h"
diff --git a/src/tint/resolver/const_eval_conversion_test.cc b/src/tint/resolver/const_eval_conversion_test.cc
index 57d6c43..6a148e8 100644
--- a/src/tint/resolver/const_eval_conversion_test.cc
+++ b/src/tint/resolver/const_eval_conversion_test.cc
@@ -13,8 +13,8 @@
 // limitations under the License.
 
 #include "src/tint/constant/splat.h"
+#include "src/tint/lang/wgsl/sem/materialize.h"
 #include "src/tint/resolver/const_eval_test.h"
-#include "src/tint/sem/materialize.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/dependency_graph.cc b/src/tint/resolver/dependency_graph.cc
index 6e82d59..6f6d503 100644
--- a/src/tint/resolver/dependency_graph.cc
+++ b/src/tint/resolver/dependency_graph.cc
@@ -60,8 +60,8 @@
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
 #include "src/tint/lang/wgsl/ast/while_statement.h"
 #include "src/tint/lang/wgsl/ast/workgroup_attribute.h"
+#include "src/tint/lang/wgsl/sem/builtin.h"
 #include "src/tint/scope_stack.h"
-#include "src/tint/sem/builtin.h"
 #include "src/tint/switch.h"
 #include "src/tint/utils/block_allocator.h"
 #include "src/tint/utils/compiler_macros.h"
diff --git a/src/tint/resolver/host_shareable_validation_test.cc b/src/tint/resolver/host_shareable_validation_test.cc
index b32c669..24710dd 100644
--- a/src/tint/resolver/host_shareable_validation_test.cc
+++ b/src/tint/resolver/host_shareable_validation_test.cc
@@ -15,8 +15,8 @@
 #include "src/tint/resolver/resolver.h"
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/sem/struct.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/intrinsic_table.cc b/src/tint/resolver/intrinsic_table.cc
index fbc3963..5a362f0 100644
--- a/src/tint/resolver/intrinsic_table.cc
+++ b/src/tint/resolver/intrinsic_table.cc
@@ -19,11 +19,11 @@
 #include <utility>
 
 #include "src/tint/lang/wgsl/ast/binary_expression.h"
+#include "src/tint/lang/wgsl/sem/evaluation_stage.h"
+#include "src/tint/lang/wgsl/sem/pipeline_stage_set.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
+#include "src/tint/lang/wgsl/sem/value_conversion.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/evaluation_stage.h"
-#include "src/tint/sem/pipeline_stage_set.h"
-#include "src/tint/sem/value_constructor.h"
-#include "src/tint/sem/value_conversion.h"
 #include "src/tint/switch.h"
 #include "src/tint/type/abstract_float.h"
 #include "src/tint/type/abstract_int.h"
diff --git a/src/tint/resolver/intrinsic_table.h b/src/tint/resolver/intrinsic_table.h
index e35b323..497b860 100644
--- a/src/tint/resolver/intrinsic_table.h
+++ b/src/tint/resolver/intrinsic_table.h
@@ -20,9 +20,9 @@
 
 #include "src/tint/lang/wgsl/ast/binary_expression.h"
 #include "src/tint/lang/wgsl/ast/unary_op.h"
+#include "src/tint/lang/wgsl/sem/builtin.h"
 #include "src/tint/resolver/const_eval.h"
 #include "src/tint/resolver/ctor_conv_intrinsic.h"
-#include "src/tint/sem/builtin.h"
 #include "src/tint/utils/vector.h"
 
 // Forward declarations
diff --git a/src/tint/resolver/intrinsic_table_test.cc b/src/tint/resolver/intrinsic_table_test.cc
index 7b658ad8..51b48ec 100644
--- a/src/tint/resolver/intrinsic_table_test.cc
+++ b/src/tint/resolver/intrinsic_table_test.cc
@@ -17,10 +17,10 @@
 #include <utility>
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
+#include "src/tint/lang/wgsl/sem/value_conversion.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/sem/value_constructor.h"
-#include "src/tint/sem/value_conversion.h"
 #include "src/tint/type/atomic.h"
 #include "src/tint/type/depth_multisampled_texture.h"
 #include "src/tint/type/depth_texture.h"
diff --git a/src/tint/resolver/load_test.cc b/src/tint/resolver/load_test.cc
index 48b9886..d7ca8ab 100644
--- a/src/tint/resolver/load_test.cc
+++ b/src/tint/resolver/load_test.cc
@@ -12,11 +12,11 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/load.h"
+#include "src/tint/lang/wgsl/sem/load.h"
 #include "gmock/gmock.h"
+#include "src/tint/lang/wgsl/sem/test_helper.h"
 #include "src/tint/resolver/resolver.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/sem/test_helper.h"
 #include "src/tint/type/reference.h"
 #include "src/tint/type/texture_dimension.h"
 
diff --git a/src/tint/resolver/materialize_test.cc b/src/tint/resolver/materialize_test.cc
index 7a45bf8..5161531 100644
--- a/src/tint/resolver/materialize_test.cc
+++ b/src/tint/resolver/materialize_test.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/materialize.h"
+#include "src/tint/lang/wgsl/sem/materialize.h"
 
 #include "src/tint/resolver/resolver.h"
 #include "src/tint/resolver/resolver_test_helper.h"
diff --git a/src/tint/resolver/ptr_ref_test.cc b/src/tint/resolver/ptr_ref_test.cc
index ddb2e3b..40de655 100644
--- a/src/tint/resolver/ptr_ref_test.cc
+++ b/src/tint/resolver/ptr_ref_test.cc
@@ -12,9 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/tint/lang/wgsl/sem/load.h"
 #include "src/tint/resolver/resolver.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/sem/load.h"
 #include "src/tint/type/reference.h"
 
 #include "gmock/gmock.h"
diff --git a/src/tint/resolver/resolver.cc b/src/tint/resolver/resolver.cc
index aacc057..a940c39 100644
--- a/src/tint/resolver/resolver.cc
+++ b/src/tint/resolver/resolver.cc
@@ -43,28 +43,28 @@
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
 #include "src/tint/lang/wgsl/ast/while_statement.h"
 #include "src/tint/lang/wgsl/ast/workgroup_attribute.h"
+#include "src/tint/lang/wgsl/sem/break_if_statement.h"
+#include "src/tint/lang/wgsl/sem/builtin_enum_expression.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/for_loop_statement.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/function_expression.h"
+#include "src/tint/lang/wgsl/sem/if_statement.h"
+#include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/load.h"
+#include "src/tint/lang/wgsl/sem/loop_statement.h"
+#include "src/tint/lang/wgsl/sem/materialize.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/module.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
+#include "src/tint/lang/wgsl/sem/switch_statement.h"
+#include "src/tint/lang/wgsl/sem/type_expression.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
+#include "src/tint/lang/wgsl/sem/value_conversion.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/while_statement.h"
 #include "src/tint/resolver/uniformity.h"
-#include "src/tint/sem/break_if_statement.h"
-#include "src/tint/sem/builtin_enum_expression.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/for_loop_statement.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/function_expression.h"
-#include "src/tint/sem/if_statement.h"
-#include "src/tint/sem/index_accessor_expression.h"
-#include "src/tint/sem/load.h"
-#include "src/tint/sem/loop_statement.h"
-#include "src/tint/sem/materialize.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/module.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/struct.h"
-#include "src/tint/sem/switch_statement.h"
-#include "src/tint/sem/type_expression.h"
-#include "src/tint/sem/value_constructor.h"
-#include "src/tint/sem/value_conversion.h"
-#include "src/tint/sem/variable.h"
-#include "src/tint/sem/while_statement.h"
 #include "src/tint/type/abstract_float.h"
 #include "src/tint/type/abstract_int.h"
 #include "src/tint/type/array.h"
diff --git a/src/tint/resolver/resolver.h b/src/tint/resolver/resolver.h
index 46ac83f..a7dba3b 100644
--- a/src/tint/resolver/resolver.h
+++ b/src/tint/resolver/resolver.h
@@ -24,16 +24,16 @@
 #include <vector>
 
 #include "src/tint/constant/value.h"
+#include "src/tint/lang/wgsl/sem/binding_point.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/resolver/const_eval.h"
 #include "src/tint/resolver/dependency_graph.h"
 #include "src/tint/resolver/intrinsic_table.h"
 #include "src/tint/resolver/sem_helper.h"
 #include "src/tint/resolver/validator.h"
-#include "src/tint/sem/binding_point.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/struct.h"
 #include "src/tint/utils/bitset.h"
 #include "src/tint/utils/unique_vector.h"
 
diff --git a/src/tint/resolver/resolver_behavior_test.cc b/src/tint/resolver/resolver_behavior_test.cc
index 378642b..518d385 100644
--- a/src/tint/resolver/resolver_behavior_test.cc
+++ b/src/tint/resolver/resolver_behavior_test.cc
@@ -15,12 +15,12 @@
 #include "src/tint/resolver/resolver.h"
 
 #include "gtest/gtest.h"
+#include "src/tint/lang/wgsl/sem/for_loop_statement.h"
+#include "src/tint/lang/wgsl/sem/if_statement.h"
+#include "src/tint/lang/wgsl/sem/switch_statement.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/while_statement.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/sem/for_loop_statement.h"
-#include "src/tint/sem/if_statement.h"
-#include "src/tint/sem/switch_statement.h"
-#include "src/tint/sem/value_expression.h"
-#include "src/tint/sem/while_statement.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/resolver_test.cc b/src/tint/resolver/resolver_test.cc
index 3f99b16..904c618 100644
--- a/src/tint/resolver/resolver_test.cc
+++ b/src/tint/resolver/resolver_test.cc
@@ -35,14 +35,14 @@
 #include "src/tint/lang/wgsl/ast/unary_op_expression.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
 #include "src/tint/lang/wgsl/ast/workgroup_attribute.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/module.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/switch_statement.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/module.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/switch_statement.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/type/reference.h"
 #include "src/tint/type/sampled_texture.h"
 #include "src/tint/type/texture_dimension.h"
diff --git a/src/tint/resolver/resolver_test_helper.h b/src/tint/resolver/resolver_test_helper.h
index 4f72b9c..19df5a6 100644
--- a/src/tint/resolver/resolver_test_helper.h
+++ b/src/tint/resolver/resolver_test_helper.h
@@ -24,11 +24,11 @@
 #include <variant>
 
 #include "gtest/gtest.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/resolver/resolver.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/value_expression.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/type/abstract_float.h"
 #include "src/tint/type/abstract_int.h"
 #include "src/tint/utils/traits.h"
diff --git a/src/tint/resolver/root_identifier_test.cc b/src/tint/resolver/root_identifier_test.cc
index f6d88f8..84bec8f 100644
--- a/src/tint/resolver/root_identifier_test.cc
+++ b/src/tint/resolver/root_identifier_test.cc
@@ -14,9 +14,9 @@
 
 #include "src/tint/resolver/resolver.h"
 
+#include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/sem/index_accessor_expression.h"
-#include "src/tint/sem/member_accessor_expression.h"
 #include "src/tint/type/texture_dimension.h"
 
 namespace tint::resolver {
diff --git a/src/tint/resolver/sem_helper.cc b/src/tint/resolver/sem_helper.cc
index dd2341f..293b754 100644
--- a/src/tint/resolver/sem_helper.cc
+++ b/src/tint/resolver/sem_helper.cc
@@ -14,11 +14,11 @@
 
 #include "src/tint/resolver/sem_helper.h"
 
-#include "src/tint/sem/builtin_enum_expression.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/function_expression.h"
-#include "src/tint/sem/type_expression.h"
-#include "src/tint/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/builtin_enum_expression.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/function_expression.h"
+#include "src/tint/lang/wgsl/sem/type_expression.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/switch.h"
 
 namespace tint::resolver {
diff --git a/src/tint/resolver/sem_helper.h b/src/tint/resolver/sem_helper.h
index 514367b..13cf74b 100644
--- a/src/tint/resolver/sem_helper.h
+++ b/src/tint/resolver/sem_helper.h
@@ -21,11 +21,11 @@
 #include "src/tint/builtin/interpolation_sampling.h"
 #include "src/tint/builtin/interpolation_type.h"
 #include "src/tint/diagnostic/diagnostic.h"
+#include "src/tint/lang/wgsl/sem/builtin_enum_expression.h"
+#include "src/tint/lang/wgsl/sem/function_expression.h"
+#include "src/tint/lang/wgsl/sem/type_expression.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/resolver/dependency_graph.h"
-#include "src/tint/sem/builtin_enum_expression.h"
-#include "src/tint/sem/function_expression.h"
-#include "src/tint/sem/type_expression.h"
 #include "src/tint/utils/map.h"
 
 namespace tint::resolver {
diff --git a/src/tint/resolver/side_effects_test.cc b/src/tint/resolver/side_effects_test.cc
index f6ce399..7199d00 100644
--- a/src/tint/resolver/side_effects_test.cc
+++ b/src/tint/resolver/side_effects_test.cc
@@ -18,10 +18,10 @@
 #include "src/tint/builtin/address_space.h"
 #include "src/tint/builtin/extension.h"
 #include "src/tint/builtin/texel_format.h"
+#include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/sem/index_accessor_expression.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/value_expression.h"
 #include "src/tint/type/texture_dimension.h"
 #include "src/tint/utils/vector.h"
 
diff --git a/src/tint/resolver/struct_address_space_use_test.cc b/src/tint/resolver/struct_address_space_use_test.cc
index e97a6ac..10ccc7a 100644
--- a/src/tint/resolver/struct_address_space_use_test.cc
+++ b/src/tint/resolver/struct_address_space_use_test.cc
@@ -15,8 +15,8 @@
 #include "src/tint/resolver/resolver.h"
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/sem/struct.h"
 
 using ::testing::UnorderedElementsAre;
 
diff --git a/src/tint/resolver/struct_layout_test.cc b/src/tint/resolver/struct_layout_test.cc
index 33f7599..34e75cc 100644
--- a/src/tint/resolver/struct_layout_test.cc
+++ b/src/tint/resolver/struct_layout_test.cc
@@ -15,8 +15,8 @@
 #include "src/tint/resolver/resolver.h"
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/sem/struct.h"
 
 using namespace tint::number_suffixes;  // NOLINT
 
diff --git a/src/tint/resolver/struct_pipeline_stage_use_test.cc b/src/tint/resolver/struct_pipeline_stage_use_test.cc
index daa9e12..353422c 100644
--- a/src/tint/resolver/struct_pipeline_stage_use_test.cc
+++ b/src/tint/resolver/struct_pipeline_stage_use_test.cc
@@ -17,8 +17,8 @@
 #include "gmock/gmock.h"
 #include "src/tint/builtin/builtin_value.h"
 #include "src/tint/lang/wgsl/ast/stage_attribute.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/sem/struct.h"
 
 namespace tint::resolver {
 namespace {
diff --git a/src/tint/resolver/uniformity.cc b/src/tint/resolver/uniformity.cc
index 007de95..2187c00 100644
--- a/src/tint/resolver/uniformity.cc
+++ b/src/tint/resolver/uniformity.cc
@@ -20,23 +20,23 @@
 #include <vector>
 
 #include "src/tint/builtin/builtin_value.h"
+#include "src/tint/lang/wgsl/sem/block_statement.h"
+#include "src/tint/lang/wgsl/sem/builtin.h"
+#include "src/tint/lang/wgsl/sem/for_loop_statement.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/if_statement.h"
+#include "src/tint/lang/wgsl/sem/info.h"
+#include "src/tint/lang/wgsl/sem/load.h"
+#include "src/tint/lang/wgsl/sem/loop_statement.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/switch_statement.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
+#include "src/tint/lang/wgsl/sem/value_conversion.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/while_statement.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/resolver/dependency_graph.h"
 #include "src/tint/scope_stack.h"
-#include "src/tint/sem/block_statement.h"
-#include "src/tint/sem/builtin.h"
-#include "src/tint/sem/for_loop_statement.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/if_statement.h"
-#include "src/tint/sem/info.h"
-#include "src/tint/sem/load.h"
-#include "src/tint/sem/loop_statement.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/switch_statement.h"
-#include "src/tint/sem/value_constructor.h"
-#include "src/tint/sem/value_conversion.h"
-#include "src/tint/sem/variable.h"
-#include "src/tint/sem/while_statement.h"
 #include "src/tint/switch.h"
 #include "src/tint/utils/block_allocator.h"
 #include "src/tint/utils/defer.h"
diff --git a/src/tint/resolver/validation_test.cc b/src/tint/resolver/validation_test.cc
index 184cc06..c92628d 100644
--- a/src/tint/resolver/validation_test.cc
+++ b/src/tint/resolver/validation_test.cc
@@ -31,12 +31,12 @@
 #include "src/tint/lang/wgsl/ast/switch_statement.h"
 #include "src/tint/lang/wgsl/ast/unary_op_expression.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/type/sampled_texture.h"
 #include "src/tint/type/texture_dimension.h"
 
diff --git a/src/tint/resolver/validator.cc b/src/tint/resolver/validator.cc
index a66e953..a7b5329 100644
--- a/src/tint/resolver/validator.cc
+++ b/src/tint/resolver/validator.cc
@@ -39,21 +39,21 @@
 #include "src/tint/lang/wgsl/ast/unary_op_expression.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
 #include "src/tint/lang/wgsl/ast/workgroup_attribute.h"
-#include "src/tint/sem/break_if_statement.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/for_loop_statement.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/if_statement.h"
-#include "src/tint/sem/loop_statement.h"
-#include "src/tint/sem/materialize.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/struct.h"
-#include "src/tint/sem/switch_statement.h"
-#include "src/tint/sem/value_constructor.h"
-#include "src/tint/sem/value_conversion.h"
-#include "src/tint/sem/variable.h"
-#include "src/tint/sem/while_statement.h"
+#include "src/tint/lang/wgsl/sem/break_if_statement.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/for_loop_statement.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/if_statement.h"
+#include "src/tint/lang/wgsl/sem/loop_statement.h"
+#include "src/tint/lang/wgsl/sem/materialize.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
+#include "src/tint/lang/wgsl/sem/switch_statement.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
+#include "src/tint/lang/wgsl/sem/value_conversion.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/while_statement.h"
 #include "src/tint/type/abstract_numeric.h"
 #include "src/tint/type/array.h"
 #include "src/tint/type/atomic.h"
diff --git a/src/tint/resolver/validator.h b/src/tint/resolver/validator.h
index 0ee21a3..3641e50 100644
--- a/src/tint/resolver/validator.h
+++ b/src/tint/resolver/validator.h
@@ -20,10 +20,10 @@
 #include <utility>
 
 #include "src/tint/lang/wgsl/ast/pipeline_stage.h"
+#include "src/tint/lang/wgsl/sem/evaluation_stage.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/resolver/sem_helper.h"
 #include "src/tint/scope_stack.h"
-#include "src/tint/sem/evaluation_stage.h"
 #include "src/tint/source.h"
 #include "src/tint/utils/hash.h"
 #include "src/tint/utils/hashmap.h"
diff --git a/src/tint/resolver/value_constructor_validation_test.cc b/src/tint/resolver/value_constructor_validation_test.cc
index 4e41d25..e002a8e 100644
--- a/src/tint/resolver/value_constructor_validation_test.cc
+++ b/src/tint/resolver/value_constructor_validation_test.cc
@@ -13,9 +13,9 @@
 // limitations under the License.
 
 #include "gmock/gmock.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
+#include "src/tint/lang/wgsl/sem/value_conversion.h"
 #include "src/tint/resolver/resolver_test_helper.h"
-#include "src/tint/sem/value_constructor.h"
-#include "src/tint/sem/value_conversion.h"
 #include "src/tint/type/reference.h"
 #include "src/tint/utils/string_stream.h"
 
diff --git a/src/tint/type/array_test.cc b/src/tint/type/array_test.cc
index 545fd74..6d047c2 100644
--- a/src/tint/type/array_test.cc
+++ b/src/tint/type/array_test.cc
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/array_count.h"
+#include "src/tint/lang/wgsl/sem/array_count.h"
 #include "src/tint/type/test_helper.h"
 #include "src/tint/type/texture.h"
 
diff --git a/src/tint/writer/append_vector.cc b/src/tint/writer/append_vector.cc
index b66f9fd..f3e5643 100644
--- a/src/tint/writer/append_vector.cc
+++ b/src/tint/writer/append_vector.cc
@@ -17,10 +17,10 @@
 #include <utility>
 #include <vector>
 
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/value_constructor.h"
-#include "src/tint/sem/value_conversion.h"
-#include "src/tint/sem/value_expression.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
+#include "src/tint/lang/wgsl/sem/value_conversion.h"
+#include "src/tint/lang/wgsl/sem/value_expression.h"
 #include "src/tint/switch.h"
 #include "src/tint/utils/transform.h"
 
diff --git a/src/tint/writer/append_vector_test.cc b/src/tint/writer/append_vector_test.cc
index 8df4282..0b0a24e 100644
--- a/src/tint/writer/append_vector_test.cc
+++ b/src/tint/writer/append_vector_test.cc
@@ -14,9 +14,9 @@
 
 #include "src/tint/writer/append_vector.h"
 #include "src/tint/lang/wgsl/ast/test_helper.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/resolver/resolver.h"
-#include "src/tint/sem/value_constructor.h"
 
 #include "gmock/gmock.h"
 
diff --git a/src/tint/writer/binding_point.h b/src/tint/writer/binding_point.h
index 796c54a..b66c7e3 100644
--- a/src/tint/writer/binding_point.h
+++ b/src/tint/writer/binding_point.h
@@ -15,7 +15,7 @@
 #ifndef SRC_TINT_WRITER_BINDING_POINT_H_
 #define SRC_TINT_WRITER_BINDING_POINT_H_
 
-#include "src/tint/sem/binding_point.h"
+#include "src/tint/lang/wgsl/sem/binding_point.h"
 
 namespace tint::writer {
 
diff --git a/src/tint/writer/external_texture_options.h b/src/tint/writer/external_texture_options.h
index 926eabd..55879d6 100644
--- a/src/tint/writer/external_texture_options.h
+++ b/src/tint/writer/external_texture_options.h
@@ -17,7 +17,7 @@
 
 #include <unordered_map>
 
-#include "src/tint/sem/external_texture.h"
+#include "src/tint/lang/wgsl/sem/external_texture.h"
 
 namespace tint::writer {
 
diff --git a/src/tint/writer/flatten_bindings_test.cc b/src/tint/writer/flatten_bindings_test.cc
index d1351d8..9db5ea9 100644
--- a/src/tint/writer/flatten_bindings_test.cc
+++ b/src/tint/writer/flatten_bindings_test.cc
@@ -17,8 +17,8 @@
 #include <utility>
 
 #include "gtest/gtest.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/program_builder.h"
-#include "src/tint/sem/variable.h"
 #include "src/tint/type/texture_dimension.h"
 
 namespace tint::writer {
diff --git a/src/tint/writer/spirv/builder.cc b/src/tint/writer/spirv/builder.cc
index c1436b6..b85b6af 100644
--- a/src/tint/writer/spirv/builder.cc
+++ b/src/tint/writer/spirv/builder.cc
@@ -24,19 +24,19 @@
 #include "src/tint/lang/wgsl/ast/internal_attribute.h"
 #include "src/tint/lang/wgsl/ast/transform/add_block_attribute.h"
 #include "src/tint/lang/wgsl/ast/traverse_expressions.h"
-#include "src/tint/sem/builtin.h"
-#include "src/tint/sem/call.h"
-#include "src/tint/sem/function.h"
-#include "src/tint/sem/load.h"
-#include "src/tint/sem/materialize.h"
-#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/module.h"
-#include "src/tint/sem/statement.h"
-#include "src/tint/sem/struct.h"
-#include "src/tint/sem/switch_statement.h"
-#include "src/tint/sem/value_constructor.h"
-#include "src/tint/sem/value_conversion.h"
-#include "src/tint/sem/variable.h"
+#include "src/tint/lang/wgsl/sem/builtin.h"
+#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/load.h"
+#include "src/tint/lang/wgsl/sem/materialize.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
+#include "src/tint/lang/wgsl/sem/module.h"
+#include "src/tint/lang/wgsl/sem/statement.h"
+#include "src/tint/lang/wgsl/sem/struct.h"
+#include "src/tint/lang/wgsl/sem/switch_statement.h"
+#include "src/tint/lang/wgsl/sem/value_constructor.h"
+#include "src/tint/lang/wgsl/sem/value_conversion.h"
+#include "src/tint/lang/wgsl/sem/variable.h"
 #include "src/tint/type/array.h"
 #include "src/tint/type/atomic.h"
 #include "src/tint/type/depth_multisampled_texture.h"
diff --git a/src/tint/writer/spirv/builder.h b/src/tint/writer/spirv/builder.h
index 1454780..410002a 100644
--- a/src/tint/writer/spirv/builder.h
+++ b/src/tint/writer/spirv/builder.h
@@ -35,9 +35,9 @@
 #include "src/tint/lang/wgsl/ast/switch_statement.h"
 #include "src/tint/lang/wgsl/ast/unary_op_expression.h"
 #include "src/tint/lang/wgsl/ast/variable_decl_statement.h"
+#include "src/tint/lang/wgsl/sem/builtin.h"
 #include "src/tint/program_builder.h"
 #include "src/tint/scope_stack.h"
-#include "src/tint/sem/builtin.h"
 #include "src/tint/type/storage_texture.h"
 #include "src/tint/writer/spirv/function.h"
 #include "src/tint/writer/spirv/module.h"