diff --git a/src/tint/api/BUILD.bazel b/src/tint/api/BUILD.bazel
index 950f202..00f3628 100644
--- a/src/tint/api/BUILD.bazel
+++ b/src/tint/api/BUILD.bazel
@@ -39,6 +39,7 @@
     "//src/tint/lang/core/type",
     "//src/tint/lang/hlsl/writer/common",
     "//src/tint/lang/spirv/reader/common",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/reader",
diff --git a/src/tint/api/BUILD.cmake b/src/tint/api/BUILD.cmake
index 0329dcd..05e09ff 100644
--- a/src/tint/api/BUILD.cmake
+++ b/src/tint/api/BUILD.cmake
@@ -41,6 +41,7 @@
   tint_lang_core_type
   tint_lang_hlsl_writer_common
   tint_lang_spirv_reader_common
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_reader
diff --git a/src/tint/api/BUILD.gn b/src/tint/api/BUILD.gn
index fa28e6f..e70d3af 100644
--- a/src/tint/api/BUILD.gn
+++ b/src/tint/api/BUILD.gn
@@ -38,6 +38,7 @@
     "${tint_src_dir}/lang/core/type",
     "${tint_src_dir}/lang/hlsl/writer/common",
     "${tint_src_dir}/lang/spirv/reader/common",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/lang/wgsl/program",
     "${tint_src_dir}/lang/wgsl/reader",
diff --git a/src/tint/cmd/bench/BUILD.bazel b/src/tint/cmd/bench/BUILD.bazel
index 450439a..7995335 100644
--- a/src/tint/cmd/bench/BUILD.bazel
+++ b/src/tint/cmd/bench/BUILD.bazel
@@ -35,6 +35,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/sem",
@@ -66,6 +67,7 @@
     "//src/tint/lang/core/type",
     "//src/tint/lang/core:bench",
     "//src/tint/lang/spirv/reader/common",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/reader",
@@ -73,6 +75,7 @@
     "//src/tint/lang/wgsl/sem",
     "//src/tint/lang/wgsl/writer",
     "//src/tint/lang/wgsl/writer:bench",
+    "//src/tint/lang/wgsl:bench",
     "//src/tint/utils/containers",
     "//src/tint/utils/diagnostic",
     "//src/tint/utils/ice",
diff --git a/src/tint/cmd/bench/BUILD.cmake b/src/tint/cmd/bench/BUILD.cmake
index e6ec3dd..fdde451 100644
--- a/src/tint/cmd/bench/BUILD.cmake
+++ b/src/tint/cmd/bench/BUILD.cmake
@@ -34,6 +34,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_sem
@@ -66,6 +67,7 @@
   tint_lang_core_type
   tint_lang_core_bench
   tint_lang_spirv_reader_common
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_reader
@@ -73,6 +75,7 @@
   tint_lang_wgsl_sem
   tint_lang_wgsl_writer
   tint_lang_wgsl_writer_bench
+  tint_lang_wgsl_bench
   tint_utils_containers
   tint_utils_diagnostic
   tint_utils_ice
diff --git a/src/tint/cmd/bench/BUILD.gn b/src/tint/cmd/bench/BUILD.gn
index 484acf7..e17e2de 100644
--- a/src/tint/cmd/bench/BUILD.gn
+++ b/src/tint/cmd/bench/BUILD.gn
@@ -34,6 +34,7 @@
     "${tint_src_dir}/lang/core",
     "${tint_src_dir}/lang/core/constant",
     "${tint_src_dir}/lang/core/type",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/lang/wgsl/program",
     "${tint_src_dir}/lang/wgsl/sem",
diff --git a/src/tint/cmd/common/BUILD.bazel b/src/tint/cmd/common/BUILD.bazel
index 4215394..7cf4691 100644
--- a/src/tint/cmd/common/BUILD.bazel
+++ b/src/tint/cmd/common/BUILD.bazel
@@ -40,6 +40,7 @@
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
     "//src/tint/lang/spirv/reader/common",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/inspector",
     "//src/tint/lang/wgsl/program",
@@ -86,6 +87,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/resolver",
diff --git a/src/tint/cmd/common/BUILD.cmake b/src/tint/cmd/common/BUILD.cmake
index 01f44f5..a10c867 100644
--- a/src/tint/cmd/common/BUILD.cmake
+++ b/src/tint/cmd/common/BUILD.cmake
@@ -39,6 +39,7 @@
   tint_lang_core_constant
   tint_lang_core_type
   tint_lang_spirv_reader_common
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_inspector
   tint_lang_wgsl_program
@@ -87,6 +88,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_resolver
diff --git a/src/tint/cmd/common/BUILD.gn b/src/tint/cmd/common/BUILD.gn
index 2b10c18..b66d0ba 100644
--- a/src/tint/cmd/common/BUILD.gn
+++ b/src/tint/cmd/common/BUILD.gn
@@ -43,6 +43,7 @@
     "${tint_src_dir}/lang/core/constant",
     "${tint_src_dir}/lang/core/type",
     "${tint_src_dir}/lang/spirv/reader/common",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/lang/wgsl/inspector",
     "${tint_src_dir}/lang/wgsl/program",
@@ -87,6 +88,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/program",
       "${tint_src_dir}/lang/wgsl/resolver",
diff --git a/src/tint/cmd/info/BUILD.bazel b/src/tint/cmd/info/BUILD.bazel
index 9e5f3b2..3b9fc16 100644
--- a/src/tint/cmd/info/BUILD.bazel
+++ b/src/tint/cmd/info/BUILD.bazel
@@ -35,6 +35,7 @@
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
     "//src/tint/lang/spirv/reader/common",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/inspector",
     "//src/tint/lang/wgsl/program",
diff --git a/src/tint/cmd/info/BUILD.cmake b/src/tint/cmd/info/BUILD.cmake
index 10870a1..d15b74e 100644
--- a/src/tint/cmd/info/BUILD.cmake
+++ b/src/tint/cmd/info/BUILD.cmake
@@ -36,6 +36,7 @@
   tint_lang_core_constant
   tint_lang_core_type
   tint_lang_spirv_reader_common
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_inspector
   tint_lang_wgsl_program
diff --git a/src/tint/cmd/info/BUILD.gn b/src/tint/cmd/info/BUILD.gn
index c049a44..e9d84ce 100644
--- a/src/tint/cmd/info/BUILD.gn
+++ b/src/tint/cmd/info/BUILD.gn
@@ -35,6 +35,7 @@
     "${tint_src_dir}/lang/core/constant",
     "${tint_src_dir}/lang/core/type",
     "${tint_src_dir}/lang/spirv/reader/common",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/lang/wgsl/inspector",
     "${tint_src_dir}/lang/wgsl/program",
diff --git a/src/tint/cmd/loopy/BUILD.bazel b/src/tint/cmd/loopy/BUILD.bazel
index 2d2910c..194e728 100644
--- a/src/tint/cmd/loopy/BUILD.bazel
+++ b/src/tint/cmd/loopy/BUILD.bazel
@@ -39,6 +39,7 @@
     "//src/tint/lang/core/type",
     "//src/tint/lang/hlsl/writer/common",
     "//src/tint/lang/spirv/reader/common",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/helpers",
     "//src/tint/lang/wgsl/inspector",
diff --git a/src/tint/cmd/loopy/BUILD.cmake b/src/tint/cmd/loopy/BUILD.cmake
index 0e12784..86eee38 100644
--- a/src/tint/cmd/loopy/BUILD.cmake
+++ b/src/tint/cmd/loopy/BUILD.cmake
@@ -40,6 +40,7 @@
   tint_lang_core_type
   tint_lang_hlsl_writer_common
   tint_lang_spirv_reader_common
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_helpers
   tint_lang_wgsl_inspector
diff --git a/src/tint/cmd/loopy/BUILD.gn b/src/tint/cmd/loopy/BUILD.gn
index fa59018..4c54f72 100644
--- a/src/tint/cmd/loopy/BUILD.gn
+++ b/src/tint/cmd/loopy/BUILD.gn
@@ -39,6 +39,7 @@
     "${tint_src_dir}/lang/core/type",
     "${tint_src_dir}/lang/hlsl/writer/common",
     "${tint_src_dir}/lang/spirv/reader/common",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/lang/wgsl/helpers",
     "${tint_src_dir}/lang/wgsl/inspector",
diff --git a/src/tint/cmd/tint/BUILD.bazel b/src/tint/cmd/tint/BUILD.bazel
index 410ea9d..321c15e 100644
--- a/src/tint/cmd/tint/BUILD.bazel
+++ b/src/tint/cmd/tint/BUILD.bazel
@@ -39,6 +39,7 @@
     "//src/tint/lang/core/type",
     "//src/tint/lang/hlsl/writer/common",
     "//src/tint/lang/spirv/reader/common",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/helpers",
diff --git a/src/tint/cmd/tint/BUILD.cmake b/src/tint/cmd/tint/BUILD.cmake
index 32fc985..1d500ac 100644
--- a/src/tint/cmd/tint/BUILD.cmake
+++ b/src/tint/cmd/tint/BUILD.cmake
@@ -40,6 +40,7 @@
   tint_lang_core_type
   tint_lang_hlsl_writer_common
   tint_lang_spirv_reader_common
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_helpers
diff --git a/src/tint/cmd/tint/BUILD.gn b/src/tint/cmd/tint/BUILD.gn
index b53853e..e6c897c 100644
--- a/src/tint/cmd/tint/BUILD.gn
+++ b/src/tint/cmd/tint/BUILD.gn
@@ -39,6 +39,7 @@
     "${tint_src_dir}/lang/core/type",
     "${tint_src_dir}/lang/hlsl/writer/common",
     "${tint_src_dir}/lang/spirv/reader/common",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/lang/wgsl/ast/transform",
     "${tint_src_dir}/lang/wgsl/helpers",
diff --git a/src/tint/cmd/tint/main.cc b/src/tint/cmd/tint/main.cc
index da47439..31d7286 100644
--- a/src/tint/cmd/tint/main.cc
+++ b/src/tint/cmd/tint/main.cc
@@ -718,10 +718,10 @@
     // If subgroups are used, bump the version to 2.1.
     auto msl_version = tint::msl::validate::MslVersion::kMsl_1_2;
     for (auto* enable : program->AST().Enables()) {
-        if (enable->HasExtension(tint::core::Extension::kChromiumExperimentalSubgroups)) {
+        if (enable->HasExtension(tint::wgsl::Extension::kChromiumExperimentalSubgroups)) {
             msl_version = std::max(msl_version, tint::msl::validate::MslVersion::kMsl_2_1);
         }
-        if (enable->HasExtension(tint::core::Extension::kChromiumExperimentalPixelLocal)) {
+        if (enable->HasExtension(tint::wgsl::Extension::kChromiumExperimentalPixelLocal)) {
             msl_version = std::max(msl_version, tint::msl::validate::MslVersion::kMsl_2_3);
         }
     }
@@ -806,7 +806,7 @@
                 auto enable_list = program->AST().Enables();
                 bool dxc_require_16bit_types = false;
                 for (auto* enable : enable_list) {
-                    if (enable->HasExtension(tint::core::Extension::kF16)) {
+                    if (enable->HasExtension(tint::wgsl::Extension::kF16)) {
                         dxc_require_16bit_types = true;
                         break;
                     }
diff --git a/src/tint/fuzzers/tint_common_fuzzer.cc b/src/tint/fuzzers/tint_common_fuzzer.cc
index 421cbbc..93ec9ea 100644
--- a/src/tint/fuzzers/tint_common_fuzzer.cc
+++ b/src/tint/fuzzers/tint_common_fuzzer.cc
@@ -189,7 +189,7 @@
     }
 
     // Helper that returns `true` if the program uses the given extension.
-    auto uses_extension = [&program](tint::core::Extension extension) {
+    auto uses_extension = [&program](tint::wgsl::Extension extension) {
         for (auto* enable : program.AST().Enables()) {
             if (enable->HasExtension(extension)) {
                 return true;
@@ -301,7 +301,7 @@
 #if TINT_BUILD_SPV_WRITER
             // Skip fuzzing the SPIR-V writer when the `clamp_frag_depth` option is used with a
             // module that already contains push constants.
-            if (uses_extension(tint::core::Extension::kChromiumExperimentalPushConstant) &&
+            if (uses_extension(tint::wgsl::Extension::kChromiumExperimentalPushConstant) &&
                 options_spirv_.clamp_frag_depth) {
                 return 0;
             }
diff --git a/src/tint/fuzzers/tint_ir_roundtrip_fuzzer.cc b/src/tint/fuzzers/tint_ir_roundtrip_fuzzer.cc
index 4df9f49..74e198f 100644
--- a/src/tint/fuzzers/tint_ir_roundtrip_fuzzer.cc
+++ b/src/tint/fuzzers/tint_ir_roundtrip_fuzzer.cc
@@ -48,12 +48,12 @@
     auto is_unsupported = [](const tint::ast::Enable* enable) {
         for (auto ext : enable->extensions) {
             switch (ext->name) {
-                case tint::core::Extension::kChromiumExperimentalDp4A:
-                case tint::core::Extension::kChromiumExperimentalFullPtrParameters:
-                case tint::core::Extension::kChromiumExperimentalPixelLocal:
-                case tint::core::Extension::kChromiumExperimentalPushConstant:
-                case tint::core::Extension::kChromiumInternalDualSourceBlending:
-                case tint::core::Extension::kChromiumInternalRelaxedUniformLayout:
+                case tint::wgsl::Extension::kChromiumExperimentalDp4A:
+                case tint::wgsl::Extension::kChromiumExperimentalFullPtrParameters:
+                case tint::wgsl::Extension::kChromiumExperimentalPixelLocal:
+                case tint::wgsl::Extension::kChromiumExperimentalPushConstant:
+                case tint::wgsl::Extension::kChromiumInternalDualSourceBlending:
+                case tint::wgsl::Extension::kChromiumInternalRelaxedUniformLayout:
                     return true;
                 default:
                     break;
diff --git a/src/tint/lang/core/BUILD.bazel b/src/tint/lang/core/BUILD.bazel
index ce01f3f..8f69c1d 100644
--- a/src/tint/lang/core/BUILD.bazel
+++ b/src/tint/lang/core/BUILD.bazel
@@ -32,9 +32,6 @@
     "binary_op.cc",
     "builtin.cc",
     "builtin_value.cc",
-    "diagnostic_rule.cc",
-    "diagnostic_severity.cc",
-    "extension.cc",
     "function.cc",
     "interpolation_sampling.cc",
     "interpolation_type.cc",
@@ -50,10 +47,7 @@
     "binary_op.h",
     "builtin.h",
     "builtin_value.h",
-    "diagnostic_rule.h",
-    "diagnostic_severity.h",
     "evaluation_stage.h",
-    "extension.h",
     "fluent_types.h",
     "function.h",
     "interpolation.h",
@@ -65,14 +59,10 @@
     "unary_op.h",
   ],
   deps = [
-    "//src/tint/utils/containers",
-    "//src/tint/utils/diagnostic",
     "//src/tint/utils/ice",
     "//src/tint/utils/macros",
-    "//src/tint/utils/math",
     "//src/tint/utils/memory",
     "//src/tint/utils/result",
-    "//src/tint/utils/rtti",
     "//src/tint/utils/text",
     "//src/tint/utils/traits",
   ],
@@ -88,9 +78,6 @@
     "attribute_test.cc",
     "builtin_test.cc",
     "builtin_value_test.cc",
-    "diagnostic_rule_test.cc",
-    "diagnostic_severity_test.cc",
-    "extension_test.cc",
     "interpolation_sampling_test.cc",
     "interpolation_type_test.cc",
     "number_test.cc",
@@ -101,6 +88,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/sem",
@@ -130,23 +118,12 @@
     "attribute_bench.cc",
     "builtin_bench.cc",
     "builtin_value_bench.cc",
-    "diagnostic_rule_bench.cc",
-    "diagnostic_severity_bench.cc",
-    "extension_bench.cc",
     "interpolation_sampling_bench.cc",
     "interpolation_type_bench.cc",
     "texel_format_bench.cc",
   ],
   deps = [
     "//src/tint/lang/core",
-    "//src/tint/utils/containers",
-    "//src/tint/utils/diagnostic",
-    "//src/tint/utils/ice",
-    "//src/tint/utils/macros",
-    "//src/tint/utils/math",
-    "//src/tint/utils/memory",
-    "//src/tint/utils/rtti",
-    "//src/tint/utils/text",
     "//src/tint/utils/traits",
   ],
   copts = COPTS,
diff --git a/src/tint/lang/core/BUILD.cmake b/src/tint/lang/core/BUILD.cmake
index 6be18a3..5e02dac 100644
--- a/src/tint/lang/core/BUILD.cmake
+++ b/src/tint/lang/core/BUILD.cmake
@@ -43,13 +43,7 @@
   lang/core/builtin.h
   lang/core/builtin_value.cc
   lang/core/builtin_value.h
-  lang/core/diagnostic_rule.cc
-  lang/core/diagnostic_rule.h
-  lang/core/diagnostic_severity.cc
-  lang/core/diagnostic_severity.h
   lang/core/evaluation_stage.h
-  lang/core/extension.cc
-  lang/core/extension.h
   lang/core/fluent_types.h
   lang/core/function.cc
   lang/core/function.h
@@ -69,14 +63,10 @@
 )
 
 tint_target_add_dependencies(tint_lang_core lib
-  tint_utils_containers
-  tint_utils_diagnostic
   tint_utils_ice
   tint_utils_macros
-  tint_utils_math
   tint_utils_memory
   tint_utils_result
-  tint_utils_rtti
   tint_utils_text
   tint_utils_traits
 )
@@ -91,9 +81,6 @@
   lang/core/attribute_test.cc
   lang/core/builtin_test.cc
   lang/core/builtin_value_test.cc
-  lang/core/diagnostic_rule_test.cc
-  lang/core/diagnostic_severity_test.cc
-  lang/core/extension_test.cc
   lang/core/interpolation_sampling_test.cc
   lang/core/interpolation_type_test.cc
   lang/core/number_test.cc
@@ -105,6 +92,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_sem
@@ -137,9 +125,6 @@
   lang/core/attribute_bench.cc
   lang/core/builtin_bench.cc
   lang/core/builtin_value_bench.cc
-  lang/core/diagnostic_rule_bench.cc
-  lang/core/diagnostic_severity_bench.cc
-  lang/core/extension_bench.cc
   lang/core/interpolation_sampling_bench.cc
   lang/core/interpolation_type_bench.cc
   lang/core/texel_format_bench.cc
@@ -147,13 +132,5 @@
 
 tint_target_add_dependencies(tint_lang_core_bench bench
   tint_lang_core
-  tint_utils_containers
-  tint_utils_diagnostic
-  tint_utils_ice
-  tint_utils_macros
-  tint_utils_math
-  tint_utils_memory
-  tint_utils_rtti
-  tint_utils_text
   tint_utils_traits
 )
diff --git a/src/tint/lang/core/BUILD.gn b/src/tint/lang/core/BUILD.gn
index d7f838f..c096493 100644
--- a/src/tint/lang/core/BUILD.gn
+++ b/src/tint/lang/core/BUILD.gn
@@ -43,13 +43,7 @@
     "builtin.h",
     "builtin_value.cc",
     "builtin_value.h",
-    "diagnostic_rule.cc",
-    "diagnostic_rule.h",
-    "diagnostic_severity.cc",
-    "diagnostic_severity.h",
     "evaluation_stage.h",
-    "extension.cc",
-    "extension.h",
     "fluent_types.h",
     "function.cc",
     "function.h",
@@ -68,14 +62,10 @@
     "unary_op.h",
   ]
   deps = [
-    "${tint_src_dir}/utils/containers",
-    "${tint_src_dir}/utils/diagnostic",
     "${tint_src_dir}/utils/ice",
     "${tint_src_dir}/utils/macros",
-    "${tint_src_dir}/utils/math",
     "${tint_src_dir}/utils/memory",
     "${tint_src_dir}/utils/result",
-    "${tint_src_dir}/utils/rtti",
     "${tint_src_dir}/utils/text",
     "${tint_src_dir}/utils/traits",
   ]
@@ -89,9 +79,6 @@
       "attribute_test.cc",
       "builtin_test.cc",
       "builtin_value_test.cc",
-      "diagnostic_rule_test.cc",
-      "diagnostic_severity_test.cc",
-      "extension_test.cc",
       "interpolation_sampling_test.cc",
       "interpolation_type_test.cc",
       "number_test.cc",
@@ -103,6 +90,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/program",
       "${tint_src_dir}/lang/wgsl/sem",
diff --git a/src/tint/lang/core/constant/BUILD.bazel b/src/tint/lang/core/constant/BUILD.bazel
index 95c577b..402a7e3 100644
--- a/src/tint/lang/core/constant/BUILD.bazel
+++ b/src/tint/lang/core/constant/BUILD.bazel
@@ -91,6 +91,7 @@
     "//src/tint/lang/core/intrinsic",
     "//src/tint/lang/core/type",
     "//src/tint/lang/core/type:test",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/reader",
diff --git a/src/tint/lang/core/constant/BUILD.cmake b/src/tint/lang/core/constant/BUILD.cmake
index c8a657a..d3829a2 100644
--- a/src/tint/lang/core/constant/BUILD.cmake
+++ b/src/tint/lang/core/constant/BUILD.cmake
@@ -90,6 +90,7 @@
   tint_lang_core_intrinsic
   tint_lang_core_type
   tint_lang_core_type_test
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_reader
diff --git a/src/tint/lang/core/constant/BUILD.gn b/src/tint/lang/core/constant/BUILD.gn
index cbb4a13..39ae73f 100644
--- a/src/tint/lang/core/constant/BUILD.gn
+++ b/src/tint/lang/core/constant/BUILD.gn
@@ -93,6 +93,7 @@
       "${tint_src_dir}/lang/core/intrinsic",
       "${tint_src_dir}/lang/core/type",
       "${tint_src_dir}/lang/core/type:unittests",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/program",
       "${tint_src_dir}/lang/wgsl/reader",
diff --git a/src/tint/lang/core/constant/eval_binary_op_test.cc b/src/tint/lang/core/constant/eval_binary_op_test.cc
index ed064a7..8860d48 100644
--- a/src/tint/lang/core/constant/eval_binary_op_test.cc
+++ b/src/tint/lang/core/constant/eval_binary_op_test.cc
@@ -84,7 +84,7 @@
 
 using ConstEvalBinaryOpTest = ConstEvalTestWithParam<std::tuple<core::BinaryOp, Case>>;
 TEST_P(ConstEvalBinaryOpTest, Test) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
     auto op = std::get<0>(GetParam());
     auto& c = std::get<1>(GetParam());
 
diff --git a/src/tint/lang/core/constant/eval_builtin_test.cc b/src/tint/lang/core/constant/eval_builtin_test.cc
index 7b1e198..6a31120 100644
--- a/src/tint/lang/core/constant/eval_builtin_test.cc
+++ b/src/tint/lang/core/constant/eval_builtin_test.cc
@@ -142,7 +142,7 @@
 using ConstEvalBuiltinTest = ConstEvalTestWithParam<std::tuple<core::Function, Case>>;
 
 TEST_P(ConstEvalBuiltinTest, Test) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto builtin = std::get<0>(GetParam());
     auto& c = std::get<1>(GetParam());
diff --git a/src/tint/lang/core/constant/eval_construction_test.cc b/src/tint/lang/core/constant/eval_construction_test.cc
index f9f7c29..36b5ace 100644
--- a/src/tint/lang/core/constant/eval_construction_test.cc
+++ b/src/tint/lang/core/constant/eval_construction_test.cc
@@ -98,7 +98,7 @@
 }
 
 TEST_F(ConstEvalTest, Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* expr = Expr(9.9_h);
     WrapInFunction(expr);
@@ -140,7 +140,7 @@
 }
 using ConstEvalZeroInitTest = ConstEvalTestWithParam<Case>;
 TEST_P(ConstEvalZeroInitTest, Test) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
     auto& param = GetParam();
     auto ty = param.type(*this);
     auto* expr = Call(ty);
@@ -296,7 +296,7 @@
 }
 
 TEST_F(ConstEvalTest, Vec3_ZeroInit_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* expr = Call<vec3<f16>>();
     WrapInFunction(expr);
@@ -443,7 +443,7 @@
 }
 
 TEST_F(ConstEvalTest, Vec3_Splat_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* expr = Call<vec3<f16>>(9.9_h);
     WrapInFunction(expr);
@@ -651,7 +651,7 @@
 }
 
 TEST_F(ConstEvalTest, Vec3_FullConstruct_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* expr = Call<vec3<f16>>(1_h, 2_h, 3_h);
     WrapInFunction(expr);
@@ -914,7 +914,7 @@
 }
 
 TEST_F(ConstEvalTest, Vec3_MixConstruct_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* expr = Call<vec3<f16>>(1_h, Call<vec2<f16>>(2_h, 3_h));
     WrapInFunction(expr);
@@ -945,7 +945,7 @@
 }
 
 TEST_F(ConstEvalTest, Vec3_MixConstruct_f16_all_10) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* expr = Call<vec3<f16>>(10_h, Call<vec2<f16>>(10_h, 10_h));
     WrapInFunction(expr);
@@ -976,7 +976,7 @@
 }
 
 TEST_F(ConstEvalTest, Vec3_MixConstruct_f16_all_positive_0) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* expr = Call<vec3<f16>>(0_h, Call<vec2<f16>>(0_h, 0_h));
     WrapInFunction(expr);
@@ -1007,7 +1007,7 @@
 }
 
 TEST_F(ConstEvalTest, Vec3_MixConstruct_f16_all_negative_0) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* expr = Call<vec3<f16>>(Call<vec2<f16>>(-0_h, -0_h), -0_h);
     WrapInFunction(expr);
@@ -1038,7 +1038,7 @@
 }
 
 TEST_F(ConstEvalTest, Vec3_MixConstruct_f16_mixed_sign_0) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* expr = Call<vec3<f16>>(0_h, Call<vec2<f16>>(-0_h, 0_h));
     WrapInFunction(expr);
@@ -1198,7 +1198,7 @@
 }
 
 TEST_F(ConstEvalTest, Mat2x3_ZeroInit_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* expr = Call<mat2x3<f16>>();
     WrapInFunction(expr);
@@ -1513,7 +1513,7 @@
 
 using ResolverConstEvalArrayInitTest = ConstEvalTestWithParam<Case>;
 TEST_P(ResolverConstEvalArrayInitTest, Test) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
     auto& param = GetParam();
     auto* expr = param.input.Expr(*this);
     auto* a = Const("a", expr);
@@ -1686,7 +1686,7 @@
 }
 
 TEST_F(ConstEvalTest, Struct_ZeroInit) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
     auto* s = Structure("S", Vector{
                                  Member("a", ty.i32()),
                                  Member("b", ty.u32()),
@@ -1729,7 +1729,7 @@
 }
 
 TEST_F(ConstEvalTest, Struct_Nested_ZeroInit) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
     auto* inner = Structure("Inner", Vector{
                                          Member("a", ty.i32()),
                                          Member("b", ty.u32()),
@@ -1812,7 +1812,7 @@
 }
 
 TEST_F(ConstEvalTest, Struct_MixedScalars_ZeroInit) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Structure("S", Vector{
                        Member("m1", ty.i32()),
@@ -1924,7 +1924,7 @@
 }
 
 TEST_F(ConstEvalTest, Struct_MixedVectors_ZeroInit) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Structure("S", Vector{
                        Member("m1", ty.vec2<i32>()),
@@ -2055,7 +2055,7 @@
 }
 
 TEST_F(ConstEvalTest, Struct_MixedScalars_Construct) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Structure("S", Vector{
                        Member("m1", ty.i32()),
@@ -2106,7 +2106,7 @@
 }
 
 TEST_F(ConstEvalTest, Struct_MixedVectors_Construct) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Structure("S", Vector{
                        Member("m1", ty.vec2<i32>()),
diff --git a/src/tint/lang/core/constant/eval_conversion_test.cc b/src/tint/lang/core/constant/eval_conversion_test.cc
index c55bea2..2ff6ce6 100644
--- a/src/tint/lang/core/constant/eval_conversion_test.cc
+++ b/src/tint/lang/core/constant/eval_conversion_test.cc
@@ -284,7 +284,7 @@
 }
 
 TEST_F(ConstEvalTest, Vec3_Convert_f16_to_i32) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* expr = Call<vec3<i32>>(Call<vec3<f16>>(1.1_h, 2.2_h, 3.3_h));
     WrapInFunction(expr);
@@ -315,7 +315,7 @@
 }
 
 TEST_F(ConstEvalTest, Vec3_Convert_u32_to_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* expr = Call<vec3<f16>>(Call<vec3<u32>>(10_u, 20_u, 30_u));
     WrapInFunction(expr);
@@ -404,7 +404,7 @@
 }
 
 TEST_F(ConstEvalTest, Vec3_Convert_Large_f32_to_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* expr = Call<vec3<f16>>(Source{{12, 34}}, Call<vec3<f32>>(1e10_f, 0_f, 0_f));
     WrapInFunction(expr);
@@ -414,7 +414,7 @@
 }
 
 TEST_F(ConstEvalTest, Vec3_Convert_Small_f32_to_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     // These values are chosen to force underflow when converting to f16.
     // When the result is zero, the sign bit is *not* guaranteed to be preserved.
diff --git a/src/tint/lang/core/constant/eval_indexing_test.cc b/src/tint/lang/core/constant/eval_indexing_test.cc
index 90cd759..71d7a02 100644
--- a/src/tint/lang/core/constant/eval_indexing_test.cc
+++ b/src/tint/lang/core/constant/eval_indexing_test.cc
@@ -68,7 +68,7 @@
 
 using ConstEvalSwizzleTest = ConstEvalTestWithParam<Case>;
 TEST_P(ConstEvalSwizzleTest, Test) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
     auto& param = GetParam();
     auto* expr = MemberAccessor(param.input.Expr(*this), param.swizzle);
     auto* a = Const("a", expr);
diff --git a/src/tint/lang/core/constant/eval_member_access_test.cc b/src/tint/lang/core/constant/eval_member_access_test.cc
index 4bf4001..0d7b71f 100644
--- a/src/tint/lang/core/constant/eval_member_access_test.cc
+++ b/src/tint/lang/core/constant/eval_member_access_test.cc
@@ -258,7 +258,7 @@
 
 using ConstEvalArrayAccessTest = ConstEvalTestWithParam<Case>;
 TEST_P(ConstEvalArrayAccessTest, Test) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto& param = GetParam();
     auto* expr = param.input.Expr(*this);
@@ -333,7 +333,7 @@
 
 using ConstEvalVectorAccessTest = ConstEvalTestWithParam<Case>;
 TEST_P(ConstEvalVectorAccessTest, Test) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto& param = GetParam();
     auto* expr = param.input.Expr(*this);
diff --git a/src/tint/lang/core/constant/eval_unary_op_test.cc b/src/tint/lang/core/constant/eval_unary_op_test.cc
index 668cf21..a7a7511 100644
--- a/src/tint/lang/core/constant/eval_unary_op_test.cc
+++ b/src/tint/lang/core/constant/eval_unary_op_test.cc
@@ -42,7 +42,7 @@
 using ConstEvalUnaryOpTest = ConstEvalTestWithParam<std::tuple<core::UnaryOp, Case>>;
 
 TEST_P(ConstEvalUnaryOpTest, Test) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto op = std::get<0>(GetParam());
     auto& c = std::get<1>(GetParam());
diff --git a/src/tint/lang/core/core.def b/src/tint/lang/core/core.def
index b52d9bb..77b445a 100644
--- a/src/tint/lang/core/core.def
+++ b/src/tint/lang/core/core.def
@@ -46,52 +46,6 @@
   __point_size
 }
 
-// https://gpuweb.github.io/gpuweb/wgsl/#filterable-triggering-rules
-enum core_diagnostic_rule {
-  // Rules defined in the spec.
-  derivative_uniformity
-}
-
-// chromium-specific diagnostics
-enum chromium_diagnostic_rule {
-  // Chromium specific rules not defined in the spec.
-  unreachable_code
-}
-
-// https://gpuweb.github.io/gpuweb/wgsl/#syntax-severity_control_name
-enum diagnostic_severity {
-  error
-  warning
-  info
-  off
-}
-
-// https://gpuweb.github.io/gpuweb/wgsl/#extension
-enum extension {
-  // WGSL Extension "f16"
-  f16
-  // An extension for the experimental feature "chromium_experimental_dp4a".
-  // See crbug.com/tint/1497 for more details
-  chromium_experimental_dp4a
-  // A Chromium-specific extension for disabling uniformity analysis.
-  chromium_disable_uniformity_analysis
-  // A Chromium-specific extension for push constants
-  chromium_experimental_push_constant
-  // A Chromium-specific extension that enables passing of uniform, storage and workgroup
-  // address-spaced pointers as parameters, as well as pointers into sub-objects.
-  chromium_experimental_full_ptr_parameters
-  // A Chromium-specific extension that adds support for read-write storage textures.
-  chromium_experimental_read_write_storage_texture
-  // A Chromium-specific extension that adds basic subgroup functionality.
-  chromium_experimental_subgroups
-  // A Chromium-specific extension that relaxes memory layout requirements for uniform storage.
-  chromium_internal_relaxed_uniform_layout
-  // A Chromium-specific extension that enables dual source blending.
-  chromium_internal_dual_source_blending
-  // A Chromium-specific extension that enables pixel local storage.
-  chromium_experimental_pixel_local
-}
-
 // https://gpuweb.github.io/gpuweb/wgsl/#storage-class
 enum address_space {
   function
diff --git a/src/tint/lang/core/intrinsic/BUILD.bazel b/src/tint/lang/core/intrinsic/BUILD.bazel
index de13dd6..2ef3c24 100644
--- a/src/tint/lang/core/intrinsic/BUILD.bazel
+++ b/src/tint/lang/core/intrinsic/BUILD.bazel
@@ -68,6 +68,7 @@
     "//src/tint/lang/core/intrinsic/data",
     "//src/tint/lang/core/type",
     "//src/tint/lang/core/type:test",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/resolver",
diff --git a/src/tint/lang/core/intrinsic/BUILD.cmake b/src/tint/lang/core/intrinsic/BUILD.cmake
index 4aa2870..713c8eb 100644
--- a/src/tint/lang/core/intrinsic/BUILD.cmake
+++ b/src/tint/lang/core/intrinsic/BUILD.cmake
@@ -69,6 +69,7 @@
   tint_lang_core_intrinsic_data
   tint_lang_core_type
   tint_lang_core_type_test
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_resolver
diff --git a/src/tint/lang/core/intrinsic/BUILD.gn b/src/tint/lang/core/intrinsic/BUILD.gn
index c5b985b..f66d3fe 100644
--- a/src/tint/lang/core/intrinsic/BUILD.gn
+++ b/src/tint/lang/core/intrinsic/BUILD.gn
@@ -68,6 +68,7 @@
       "${tint_src_dir}/lang/core/intrinsic/data",
       "${tint_src_dir}/lang/core/type",
       "${tint_src_dir}/lang/core/type:unittests",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/program",
       "${tint_src_dir}/lang/wgsl/resolver",
diff --git a/src/tint/lang/core/type/BUILD.bazel b/src/tint/lang/core/type/BUILD.bazel
index 4103661..c36edbc 100644
--- a/src/tint/lang/core/type/BUILD.bazel
+++ b/src/tint/lang/core/type/BUILD.bazel
@@ -150,6 +150,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/resolver",
diff --git a/src/tint/lang/core/type/BUILD.cmake b/src/tint/lang/core/type/BUILD.cmake
index d3349e9..107db59 100644
--- a/src/tint/lang/core/type/BUILD.cmake
+++ b/src/tint/lang/core/type/BUILD.cmake
@@ -149,6 +149,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_resolver
diff --git a/src/tint/lang/core/type/BUILD.gn b/src/tint/lang/core/type/BUILD.gn
index 2da1377..c80abf5 100644
--- a/src/tint/lang/core/type/BUILD.gn
+++ b/src/tint/lang/core/type/BUILD.gn
@@ -152,6 +152,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/program",
       "${tint_src_dir}/lang/wgsl/resolver",
diff --git a/src/tint/lang/glsl/writer/BUILD.bazel b/src/tint/lang/glsl/writer/BUILD.bazel
index 00cd0bd..a0e6bb2 100644
--- a/src/tint/lang/glsl/writer/BUILD.bazel
+++ b/src/tint/lang/glsl/writer/BUILD.bazel
@@ -39,6 +39,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/program",
@@ -79,6 +80,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/sem",
diff --git a/src/tint/lang/glsl/writer/BUILD.cmake b/src/tint/lang/glsl/writer/BUILD.cmake
index 3a28fff..232ff0d 100644
--- a/src/tint/lang/glsl/writer/BUILD.cmake
+++ b/src/tint/lang/glsl/writer/BUILD.cmake
@@ -44,6 +44,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_program
@@ -89,6 +90,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_sem
diff --git a/src/tint/lang/glsl/writer/BUILD.gn b/src/tint/lang/glsl/writer/BUILD.gn
index 96d9eb7..96574b1 100644
--- a/src/tint/lang/glsl/writer/BUILD.gn
+++ b/src/tint/lang/glsl/writer/BUILD.gn
@@ -38,6 +38,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/ast/transform",
       "${tint_src_dir}/lang/wgsl/program",
diff --git a/src/tint/lang/glsl/writer/ast_printer/BUILD.bazel b/src/tint/lang/glsl/writer/ast_printer/BUILD.bazel
index 35217ed..23ab99f 100644
--- a/src/tint/lang/glsl/writer/ast_printer/BUILD.bazel
+++ b/src/tint/lang/glsl/writer/ast_printer/BUILD.bazel
@@ -37,6 +37,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/helpers",
@@ -115,6 +116,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/ast:test",
diff --git a/src/tint/lang/glsl/writer/ast_printer/BUILD.cmake b/src/tint/lang/glsl/writer/ast_printer/BUILD.cmake
index 2addfbb..80b5a82 100644
--- a/src/tint/lang/glsl/writer/ast_printer/BUILD.cmake
+++ b/src/tint/lang/glsl/writer/ast_printer/BUILD.cmake
@@ -38,6 +38,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_helpers
@@ -121,6 +122,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_ast_test
diff --git a/src/tint/lang/glsl/writer/ast_printer/BUILD.gn b/src/tint/lang/glsl/writer/ast_printer/BUILD.gn
index 690ceb2..fc1c41e 100644
--- a/src/tint/lang/glsl/writer/ast_printer/BUILD.gn
+++ b/src/tint/lang/glsl/writer/ast_printer/BUILD.gn
@@ -40,6 +40,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/ast/transform",
       "${tint_src_dir}/lang/wgsl/helpers",
@@ -119,6 +120,7 @@
         "${tint_src_dir}/lang/core",
         "${tint_src_dir}/lang/core/constant",
         "${tint_src_dir}/lang/core/type",
+        "${tint_src_dir}/lang/wgsl",
         "${tint_src_dir}/lang/wgsl/ast",
         "${tint_src_dir}/lang/wgsl/ast:unittests",
         "${tint_src_dir}/lang/wgsl/ast/transform",
diff --git a/src/tint/lang/glsl/writer/ast_printer/ast_printer.cc b/src/tint/lang/glsl/writer/ast_printer/ast_printer.cc
index b99b1bd..839cdb1 100644
--- a/src/tint/lang/glsl/writer/ast_printer/ast_printer.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/ast_printer.cc
@@ -280,13 +280,13 @@
     if (!tint::writer::CheckSupportedExtensions(
             "GLSL", builder_.AST(), diagnostics_,
             Vector{
-                core::Extension::kChromiumDisableUniformityAnalysis,
-                core::Extension::kChromiumExperimentalDp4A,
-                core::Extension::kChromiumExperimentalFullPtrParameters,
-                core::Extension::kChromiumInternalDualSourceBlending,
-                core::Extension::kChromiumExperimentalReadWriteStorageTexture,
-                core::Extension::kChromiumExperimentalPushConstant,
-                core::Extension::kF16,
+                wgsl::Extension::kChromiumDisableUniformityAnalysis,
+                wgsl::Extension::kChromiumExperimentalDp4A,
+                wgsl::Extension::kChromiumExperimentalFullPtrParameters,
+                wgsl::Extension::kChromiumInternalDualSourceBlending,
+                wgsl::Extension::kChromiumExperimentalReadWriteStorageTexture,
+                wgsl::Extension::kChromiumExperimentalPushConstant,
+                wgsl::Extension::kF16,
             })) {
         return false;
     }
@@ -378,11 +378,11 @@
 void ASTPrinter::RecordExtension(const ast::Enable* enable) {
     // Deal with extension node here, recording it within the generator for later emition.
 
-    if (enable->HasExtension(core::Extension::kF16)) {
+    if (enable->HasExtension(wgsl::Extension::kF16)) {
         requires_f16_extension_ = true;
     }
 
-    if (enable->HasExtension(core::Extension::kChromiumInternalDualSourceBlending)) {
+    if (enable->HasExtension(wgsl::Extension::kChromiumInternalDualSourceBlending)) {
         requires_dual_source_blending_extension_ = true;
     }
 }
diff --git a/src/tint/lang/glsl/writer/ast_printer/ast_printer_test.cc b/src/tint/lang/glsl/writer/ast_printer/ast_printer_test.cc
index e699eea..d0445c3 100644
--- a/src/tint/lang/glsl/writer/ast_printer/ast_printer_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/ast_printer_test.cc
@@ -109,7 +109,7 @@
 }
 
 TEST_F(GlslASTPrinterTest, UnsupportedExtension) {
-    Enable(Source{{12, 34}}, core::Extension::kUndefined);
+    Enable(Source{{12, 34}}, wgsl::Extension::kUndefined);
 
     ASTPrinter& gen = Build();
 
diff --git a/src/tint/lang/glsl/writer/ast_printer/binary_test.cc b/src/tint/lang/glsl/writer/ast_printer/binary_test.cc
index f980c78..22093c5 100644
--- a/src/tint/lang/glsl/writer/ast_printer/binary_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/binary_test.cc
@@ -76,7 +76,7 @@
         return;
     }
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("left", ty.f16(), core::AddressSpace::kPrivate);
     GlobalVar("right", ty.f16(), core::AddressSpace::kPrivate);
@@ -178,7 +178,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Binary, Multiply_VectorScalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("a", Call<vec3<f16>>(1_h, 1_h, 1_h), core::AddressSpace::kPrivate);
     auto* lhs = Expr("a");
@@ -214,7 +214,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Binary, Multiply_ScalarVector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("a", Call<vec3<f16>>(1_h, 1_h, 1_h), core::AddressSpace::kPrivate);
     auto* lhs = Expr(1_h);
@@ -249,7 +249,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Binary, Multiply_MatrixScalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("mat", ty.mat3x3<f16>(), core::AddressSpace::kPrivate);
     auto* lhs = Expr("mat");
@@ -283,7 +283,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Binary, Multiply_ScalarMatrix_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("mat", ty.mat3x3<f16>(), core::AddressSpace::kPrivate);
     auto* lhs = Expr(1_h);
@@ -317,7 +317,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Binary, Multiply_MatrixVector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("mat", ty.mat3x3<f16>(), core::AddressSpace::kPrivate);
     auto* lhs = Expr("mat");
@@ -351,7 +351,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Binary, Multiply_VectorMatrix_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("mat", ty.mat3x3<f16>(), core::AddressSpace::kPrivate);
     auto* lhs = Call<vec3<f16>>(1_h, 1_h, 1_h);
@@ -384,7 +384,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Binary, Multiply_MatrixMatrix_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("lhs", ty.mat3x3<f16>(), core::AddressSpace::kPrivate);
     GlobalVar("rhs", ty.mat3x3<f16>(), core::AddressSpace::kPrivate);
@@ -416,7 +416,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Binary, ModF16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("a", ty.f16(), core::AddressSpace::kPrivate);
     GlobalVar("b", ty.f16(), core::AddressSpace::kPrivate);
@@ -448,7 +448,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Binary, ModVec3F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("a", ty.vec3<f16>(), core::AddressSpace::kPrivate);
     GlobalVar("b", ty.vec3<f16>(), core::AddressSpace::kPrivate);
@@ -480,7 +480,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Binary, ModVec3F16ScalarF16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("a", ty.vec3<f16>(), core::AddressSpace::kPrivate);
     GlobalVar("b", ty.f16(), core::AddressSpace::kPrivate);
@@ -512,7 +512,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Binary, ModScalarF16Vec3F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("a", ty.f16(), core::AddressSpace::kPrivate);
     GlobalVar("b", ty.vec3<f16>(), core::AddressSpace::kPrivate);
@@ -572,7 +572,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Binary, ModMixedVec3ScalarF16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("a", ty.vec3<f16>(), core::AddressSpace::kPrivate);
     GlobalVar("b", ty.f16(), core::AddressSpace::kPrivate);
diff --git a/src/tint/lang/glsl/writer/ast_printer/bitcast_test.cc b/src/tint/lang/glsl/writer/ast_printer/bitcast_test.cc
index 0a1de5e..f551cb7 100644
--- a/src/tint/lang/glsl/writer/ast_printer/bitcast_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/bitcast_test.cc
@@ -66,7 +66,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Bitcast, EmitExpression_Bitcast_F16_Vec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* a = Let("a", Call<vec2<f16>>(1_h, 2_h));
     auto* b = Let("b", Bitcast<i32>(Expr("a")));
@@ -124,7 +124,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Bitcast, EmitExpression_Bitcast_F16_Vec4) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* a = Let("a", Call<vec4<f16>>(1_h, 2_h, 3_h, 4_h));
     auto* b = Let("b", Bitcast<vec2<i32>>(Expr("a")));
diff --git a/src/tint/lang/glsl/writer/ast_printer/builtin_test.cc b/src/tint/lang/glsl/writer/ast_printer/builtin_test.cc
index 303e78f..2694b2c 100644
--- a/src/tint/lang/glsl/writer/ast_printer/builtin_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/builtin_test.cc
@@ -195,7 +195,7 @@
     auto param = GetParam();
 
     if (param.type == CallParamType::kF16) {
-        Enable(core::Extension::kF16);
+        Enable(wgsl::Extension::kF16);
 
         GlobalVar("h2", ty.vec2<f16>(), core::AddressSpace::kPrivate);
         GlobalVar("h3", ty.vec3<f16>(), core::AddressSpace::kPrivate);
@@ -403,7 +403,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Builtin, FMA_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("a", ty.vec3<f16>(), core::AddressSpace::kPrivate);
     GlobalVar("b", ty.vec3<f16>(), core::AddressSpace::kPrivate);
@@ -457,7 +457,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Builtin, Runtime_Modf_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Let("f", Expr(1.5_h))),  //
                    Decl(Let("v", Call("modf", "f"))));
@@ -530,7 +530,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Builtin, Runtime_Modf_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Let("f", Call<vec3<f16>>(1.5_h, 2.5_h, 3.5_h))),  //
                    Decl(Let("v", Call("modf", "f"))));
@@ -595,7 +595,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Builtin, Const_Modf_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Let("v", Call("modf", 1.5_h))));
 
@@ -652,7 +652,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Builtin, Const_Modf_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Let("v", Call("modf", Call<vec3<f16>>(1.5_h, 2.5_h, 3.5_h)))));
 
@@ -717,7 +717,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Builtin, Runtime_Frexp_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Var("f", Expr(1_h)),  //
                    Var("v", Call("frexp", "f")));
@@ -790,7 +790,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Builtin, Runtime_Frexp_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Var("f", Call<vec3<f16>>()),  //
                    Var("v", Call("frexp", "f")));
@@ -855,7 +855,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Builtin, Const_Frexp_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Let("v", Call("frexp", 1_h))));
 
@@ -912,7 +912,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Builtin, Const_Frexp_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Let("v", Call("frexp", Call<vec3<f16>>()))));
 
@@ -1000,7 +1000,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Builtin, Degrees_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* val = Var("val", ty.f16());
     auto* call = Call("degrees", val);
@@ -1032,7 +1032,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Builtin, Degrees_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* val = Var("val", ty.vec3<f16>());
     auto* call = Call("degrees", val);
@@ -1122,7 +1122,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Builtin, Radians_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* val = Var("val", ty.f16());
     auto* call = Call("radians", val);
@@ -1154,7 +1154,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Builtin, Radians_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* val = Var("val", ty.vec3<f16>());
     auto* call = Call("radians", val);
diff --git a/src/tint/lang/glsl/writer/ast_printer/constructor_test.cc b/src/tint/lang/glsl/writer/ast_printer/constructor_test.cc
index c75cd8b..fe5faf4 100644
--- a/src/tint/lang/glsl/writer/ast_printer/constructor_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/constructor_test.cc
@@ -62,7 +62,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Constructor, F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     // Use a number close to 1<<16 but whose decimal representation ends in 0.
     WrapInFunction(Expr(f16((1 << 15) - 8)));
@@ -83,7 +83,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Constructor, Type_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<f16>(-1.2e-3_h));
 
@@ -130,7 +130,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Constructor, Type_Vec_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<vec3<f16>>(1_h, 2_h, 3_h));
 
@@ -150,7 +150,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Constructor, Type_Vec_Empty_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<vec3<f16>>());
 
@@ -170,7 +170,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Constructor, Type_Vec_SingleScalar_F16_Literal) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<vec3<f16>>(2_h));
 
@@ -193,7 +193,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Constructor, Type_Vec_SingleScalar_F16_Var) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Var("v", Expr(2_h));
     auto* cast = Call<vec3<f16>>(var);
@@ -244,7 +244,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Constructor, Type_Mat_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(
         Call<mat2x3<f16>>(Call<vec3<f16>>(1_h, 2_h, 3_h), Call<vec3<f16>>(3_h, 4_h, 5_h)));
@@ -289,7 +289,7 @@
     //     vec4<f16>(7.0h),
     //     vec4<f16>(vec4<f16>(42.0h, 21.0h, 6.0h, -5.0h)),
     //   );
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vector_literal =
         Call<vec4<f16>>(Expr(f16(2.0)), Expr(f16(3.0)), Expr(f16(4.0)), Expr(f16(8.0)));
@@ -321,7 +321,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Constructor, Type_Mat_Empty_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<mat2x3<f16>>());
 
@@ -355,7 +355,7 @@
     //     var m_2: mat4x4<f16> = mat4x4<f16>(m_1);
     // }
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* m_1 = Var("m_1", ty.mat4x4(ty.f16()), Call<mat4x4<f16>>());
     auto* m_2 = Var("m_2", ty.mat4x4(ty.f16()), Call<mat4x4<f16>>(m_1));
diff --git a/src/tint/lang/glsl/writer/ast_printer/module_constant_test.cc b/src/tint/lang/glsl/writer/ast_printer/module_constant_test.cc
index 32e8ace..2bf9e44 100644
--- a/src/tint/lang/glsl/writer/ast_printer/module_constant_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/module_constant_test.cc
@@ -131,7 +131,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_ModuleConstant, Emit_GlobalConst_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = GlobalConst("G", Expr(1_h));
     Func("f", tint::Empty, ty.void_(),
@@ -210,7 +210,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_ModuleConstant, Emit_GlobalConst_vec3_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = GlobalConst("G", Call<vec3<f16>>(1_h, 2_h, 3_h));
     Func("f", tint::Empty, ty.void_(),
@@ -270,7 +270,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_ModuleConstant, Emit_GlobalConst_mat2x3_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = GlobalConst("G", Call<mat2x3<f16>>(1_h, 2_h, 3_h, 4_h, 5_h, 6_h));
     Func("f", tint::Empty, ty.void_(),
diff --git a/src/tint/lang/glsl/writer/ast_printer/type_test.cc b/src/tint/lang/glsl/writer/ast_printer/type_test.cc
index 01f0738..842149a 100644
--- a/src/tint/lang/glsl/writer/ast_printer/type_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/type_test.cc
@@ -109,7 +109,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Type, EmitType_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* f16 = create<core::type::F16>();
 
@@ -146,7 +146,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Type, EmitType_Matrix_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* f16 = create<core::type::F16>();
     auto* vec3 = create<core::type::Vector>(f16, 3u);
@@ -259,7 +259,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_Type, EmitType_Vector_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* f16 = create<core::type::F16>();
     auto* vec3 = create<core::type::Vector>(f16, 3u);
diff --git a/src/tint/lang/glsl/writer/ast_printer/variable_decl_statement_test.cc b/src/tint/lang/glsl/writer/ast_printer/variable_decl_statement_test.cc
index 84f2776..d61a679 100644
--- a/src/tint/lang/glsl/writer/ast_printer/variable_decl_statement_test.cc
+++ b/src/tint/lang/glsl/writer/ast_printer/variable_decl_statement_test.cc
@@ -163,7 +163,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_VariableDecl, Emit_VariableDeclStatement_Const_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* C = Const("C", Expr(1_h));
     Func("f", tint::Empty, ty.void_(),
@@ -246,7 +246,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_VariableDecl, Emit_VariableDeclStatement_Const_vec3_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* C = Const("C", Call<vec3<f16>>(1_h, 2_h, 3_h));
     Func("f", tint::Empty, ty.void_(),
@@ -309,7 +309,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_VariableDecl, Emit_VariableDeclStatement_Const_mat2x3_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* C = Const("C", Call<mat2x3<f16>>(1_h, 2_h, 3_h, 4_h, 5_h, 6_h));
     Func("f", tint::Empty, ty.void_(),
@@ -479,7 +479,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_VariableDecl, Emit_VariableDeclStatement_Initializer_ZeroVec_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Var("a", ty.vec3<f16>(), Call<vec3<f16>>());
 
@@ -508,7 +508,7 @@
 }
 
 TEST_F(GlslASTPrinterTest_VariableDecl, Emit_VariableDeclStatement_Initializer_ZeroMat_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Var("a", ty.mat2x3<f16>(), Call<mat2x3<f16>>());
 
diff --git a/src/tint/lang/glsl/writer/ast_raise/BUILD.bazel b/src/tint/lang/glsl/writer/ast_raise/BUILD.bazel
index ad9c02e..a71fcf7 100644
--- a/src/tint/lang/glsl/writer/ast_raise/BUILD.bazel
+++ b/src/tint/lang/glsl/writer/ast_raise/BUILD.bazel
@@ -43,6 +43,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/program",
@@ -80,6 +81,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/ast/transform:test",
diff --git a/src/tint/lang/glsl/writer/ast_raise/BUILD.cmake b/src/tint/lang/glsl/writer/ast_raise/BUILD.cmake
index 8f3c78a..eeaa334 100644
--- a/src/tint/lang/glsl/writer/ast_raise/BUILD.cmake
+++ b/src/tint/lang/glsl/writer/ast_raise/BUILD.cmake
@@ -44,6 +44,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_program
@@ -84,6 +85,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_ast_transform_test
diff --git a/src/tint/lang/glsl/writer/ast_raise/BUILD.gn b/src/tint/lang/glsl/writer/ast_raise/BUILD.gn
index c0bc3b3..938e417 100644
--- a/src/tint/lang/glsl/writer/ast_raise/BUILD.gn
+++ b/src/tint/lang/glsl/writer/ast_raise/BUILD.gn
@@ -46,6 +46,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/ast/transform",
       "${tint_src_dir}/lang/wgsl/program",
@@ -84,6 +85,7 @@
         "${tint_src_dir}/lang/core",
         "${tint_src_dir}/lang/core/constant",
         "${tint_src_dir}/lang/core/type",
+        "${tint_src_dir}/lang/wgsl",
         "${tint_src_dir}/lang/wgsl/ast",
         "${tint_src_dir}/lang/wgsl/ast/transform",
         "${tint_src_dir}/lang/wgsl/ast/transform:unittests",
diff --git a/src/tint/lang/hlsl/writer/BUILD.bazel b/src/tint/lang/hlsl/writer/BUILD.bazel
index 0c9ed78..323d038 100644
--- a/src/tint/lang/hlsl/writer/BUILD.bazel
+++ b/src/tint/lang/hlsl/writer/BUILD.bazel
@@ -40,6 +40,7 @@
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
     "//src/tint/lang/hlsl/writer/common",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/program",
@@ -81,6 +82,7 @@
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
     "//src/tint/lang/hlsl/writer/common",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/sem",
diff --git a/src/tint/lang/hlsl/writer/BUILD.cmake b/src/tint/lang/hlsl/writer/BUILD.cmake
index df4dc70..887529b 100644
--- a/src/tint/lang/hlsl/writer/BUILD.cmake
+++ b/src/tint/lang/hlsl/writer/BUILD.cmake
@@ -45,6 +45,7 @@
   tint_lang_core_constant
   tint_lang_core_type
   tint_lang_hlsl_writer_common
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_program
@@ -91,6 +92,7 @@
   tint_lang_core_constant
   tint_lang_core_type
   tint_lang_hlsl_writer_common
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_sem
diff --git a/src/tint/lang/hlsl/writer/BUILD.gn b/src/tint/lang/hlsl/writer/BUILD.gn
index 62cf889..b270131 100644
--- a/src/tint/lang/hlsl/writer/BUILD.gn
+++ b/src/tint/lang/hlsl/writer/BUILD.gn
@@ -39,6 +39,7 @@
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
       "${tint_src_dir}/lang/hlsl/writer/common",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/ast/transform",
       "${tint_src_dir}/lang/wgsl/program",
diff --git a/src/tint/lang/hlsl/writer/ast_printer/BUILD.bazel b/src/tint/lang/hlsl/writer/ast_printer/BUILD.bazel
index ad2940c..ecf285b 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/BUILD.bazel
+++ b/src/tint/lang/hlsl/writer/ast_printer/BUILD.bazel
@@ -38,6 +38,7 @@
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
     "//src/tint/lang/hlsl/writer/common",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/helpers",
@@ -110,6 +111,7 @@
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
     "//src/tint/lang/hlsl/writer/common",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/ast:test",
diff --git a/src/tint/lang/hlsl/writer/ast_printer/BUILD.cmake b/src/tint/lang/hlsl/writer/ast_printer/BUILD.cmake
index 5c13dec..47d9f98 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/BUILD.cmake
+++ b/src/tint/lang/hlsl/writer/ast_printer/BUILD.cmake
@@ -39,6 +39,7 @@
   tint_lang_core_constant
   tint_lang_core_type
   tint_lang_hlsl_writer_common
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_helpers
@@ -115,6 +116,7 @@
   tint_lang_core_constant
   tint_lang_core_type
   tint_lang_hlsl_writer_common
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_ast_test
diff --git a/src/tint/lang/hlsl/writer/ast_printer/BUILD.gn b/src/tint/lang/hlsl/writer/ast_printer/BUILD.gn
index de41c15..017911b 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/BUILD.gn
+++ b/src/tint/lang/hlsl/writer/ast_printer/BUILD.gn
@@ -41,6 +41,7 @@
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
       "${tint_src_dir}/lang/hlsl/writer/common",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/ast/transform",
       "${tint_src_dir}/lang/wgsl/helpers",
@@ -113,6 +114,7 @@
         "${tint_src_dir}/lang/core/constant",
         "${tint_src_dir}/lang/core/type",
         "${tint_src_dir}/lang/hlsl/writer/common",
+        "${tint_src_dir}/lang/wgsl",
         "${tint_src_dir}/lang/wgsl/ast",
         "${tint_src_dir}/lang/wgsl/ast:unittests",
         "${tint_src_dir}/lang/wgsl/ast/transform",
diff --git a/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc b/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc
index 1c077b1..352c4d8 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc
@@ -337,14 +337,14 @@
     if (!tint::writer::CheckSupportedExtensions(
             "HLSL", builder_.AST(), diagnostics_,
             Vector{
-                core::Extension::kChromiumDisableUniformityAnalysis,
-                core::Extension::kChromiumExperimentalDp4A,
-                core::Extension::kChromiumExperimentalFullPtrParameters,
-                core::Extension::kChromiumExperimentalPushConstant,
-                core::Extension::kChromiumExperimentalReadWriteStorageTexture,
-                core::Extension::kChromiumExperimentalSubgroups,
-                core::Extension::kF16,
-                core::Extension::kChromiumInternalDualSourceBlending,
+                wgsl::Extension::kChromiumDisableUniformityAnalysis,
+                wgsl::Extension::kChromiumExperimentalDp4A,
+                wgsl::Extension::kChromiumExperimentalFullPtrParameters,
+                wgsl::Extension::kChromiumExperimentalPushConstant,
+                wgsl::Extension::kChromiumExperimentalReadWriteStorageTexture,
+                wgsl::Extension::kChromiumExperimentalSubgroups,
+                wgsl::Extension::kF16,
+                wgsl::Extension::kChromiumInternalDualSourceBlending,
             })) {
         return false;
     }
diff --git a/src/tint/lang/hlsl/writer/ast_printer/ast_printer_test.cc b/src/tint/lang/hlsl/writer/ast_printer/ast_printer_test.cc
index c8670f2..cb81bf6 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/ast_printer_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/ast_printer_test.cc
@@ -32,7 +32,7 @@
 }
 
 TEST_F(HlslASTPrinterTest, UnsupportedExtension) {
-    Enable(Source{{12, 34}}, core::Extension::kUndefined);
+    Enable(Source{{12, 34}}, wgsl::Extension::kUndefined);
 
     ASTPrinter& gen = Build();
 
diff --git a/src/tint/lang/hlsl/writer/ast_printer/binary_test.cc b/src/tint/lang/hlsl/writer/ast_printer/binary_test.cc
index a796fbe..57494c2 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/binary_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/binary_test.cc
@@ -84,7 +84,7 @@
         return;
     }
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("left", ty.f16(), core::AddressSpace::kPrivate);
     GlobalVar("right", ty.f16(), core::AddressSpace::kPrivate);
@@ -192,7 +192,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Binary, Multiply_VectorScalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* lhs = Call<vec3<f16>>(1_h, 1_h, 1_h);
     auto* rhs = Expr(1_h);
@@ -224,7 +224,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Binary, Multiply_ScalarVector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* lhs = Expr(1_h);
     auto* rhs = Call<vec3<f16>>(1_h, 1_h, 1_h);
@@ -256,7 +256,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Binary, Multiply_MatrixScalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("mat", ty.mat3x3<f16>(), core::AddressSpace::kPrivate);
     auto* lhs = Expr("mat");
@@ -288,7 +288,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Binary, Multiply_ScalarMatrix_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("mat", ty.mat3x3<f16>(), core::AddressSpace::kPrivate);
     auto* lhs = Expr(1_h);
@@ -320,7 +320,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Binary, Multiply_MatrixVector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("mat", ty.mat3x3<f16>(), core::AddressSpace::kPrivate);
     auto* lhs = Expr("mat");
@@ -352,7 +352,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Binary, Multiply_VectorMatrix_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("mat", ty.mat3x3<f16>(), core::AddressSpace::kPrivate);
     auto* lhs = Call<vec3<f16>>(1_h, 1_h, 1_h);
@@ -383,7 +383,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Binary, Multiply_MatrixMatrix_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("lhs", ty.mat3x3<f16>(), core::AddressSpace::kPrivate);
     GlobalVar("rhs", ty.mat3x3<f16>(), core::AddressSpace::kPrivate);
diff --git a/src/tint/lang/hlsl/writer/ast_printer/bitcast_test.cc b/src/tint/lang/hlsl/writer/ast_printer/bitcast_test.cc
index 5cbc27b..cf79384 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/bitcast_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/bitcast_test.cc
@@ -62,7 +62,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Bitcast, EmitExpression_Bitcast_F16_Vec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* a = Let("a", Call<vec2<f16>>(1_h, 2_h));
     auto* b = Let("b", Bitcast<i32>(Expr("a")));
@@ -128,7 +128,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Bitcast, EmitExpression_Bitcast_F16_Vec4) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* a = Let("a", Call<vec4<f16>>(1_h, 2_h, 3_h, 4_h));
     auto* b = Let("b", Bitcast<vec2<i32>>(Expr("a")));
diff --git a/src/tint/lang/hlsl/writer/ast_printer/builtin_test.cc b/src/tint/lang/hlsl/writer/ast_printer/builtin_test.cc
index e673e5b..a7bbede 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/builtin_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/builtin_test.cc
@@ -194,7 +194,7 @@
     auto param = GetParam();
 
     if (param.type == CallParamType::kF16) {
-        Enable(core::Extension::kF16);
+        Enable(wgsl::Extension::kF16);
 
         GlobalVar("h2", ty.vec2<f16>(), core::AddressSpace::kPrivate);
         GlobalVar("h3", ty.vec3<f16>(), core::AddressSpace::kPrivate);
@@ -402,7 +402,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Builtin, Runtime_Modf_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Let("f", Expr(1.5_h))),  //
                    Decl(Let("v", Call("modf", "f"))));
@@ -456,7 +456,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Builtin, Runtime_Modf_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Let("f", Call<vec3<f16>>(1.5_h, 2.5_h, 3.5_h))),  //
                    Decl(Let("v", Call("modf", "f"))));
@@ -502,7 +502,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Builtin, Const_Modf_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Let("v", Call("modf", 1.5_h))));
 
@@ -540,7 +540,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Builtin, Const_Modf_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Let("v", Call("modf", Call<vec3<f16>>(1.5_h, 2.5_h, 3.5_h)))));
 
@@ -613,7 +613,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Builtin, Runtime_Frexp_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Var("f", Expr(1_h)),  //
                    Var("v", Call("frexp", "f")));
@@ -669,7 +669,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Builtin, Runtime_Frexp_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Var("f", Call<vec3<f16>>()),  //
                    Var("v", Call("frexp", "f")));
@@ -716,7 +716,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Builtin, Const_Frexp_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Let("v", Call("frexp", 1_h))));
 
@@ -754,7 +754,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Builtin, Const_Frexp_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Let("v", Call("frexp", Call<vec3<f16>>()))));
 
@@ -842,7 +842,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Builtin, Degrees_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* val = Var("val", ty.f16());
     auto* call = Call("degrees", val);
@@ -865,7 +865,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Builtin, Degrees_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* val = Var("val", ty.vec3<f16>());
     auto* call = Call("degrees", val);
@@ -930,7 +930,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Builtin, Radians_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* val = Var("val", ty.f16());
     auto* call = Call("radians", val);
@@ -953,7 +953,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Builtin, Radians_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* val = Var("val", ty.vec3<f16>());
     auto* call = Call("radians", val);
@@ -1044,7 +1044,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Builtin, Sign_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* val = Var("val", ty.f16());
     auto* call = Call("sign", val);
@@ -1063,7 +1063,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Builtin, Sign_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* val = Var("val", ty.vec3<f16>());
     auto* call = Call("sign", val);
@@ -1124,7 +1124,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Builtin, Trunc_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* val = Var("val", ty.f16());
     auto* call = Call("trunc", val);
@@ -1147,7 +1147,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Builtin, Trunc_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* val = Var("val", ty.vec3<f16>());
     auto* call = Call("trunc", val);
@@ -1436,7 +1436,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Builtin, Dot4I8Packed) {
-    Enable(core::Extension::kChromiumExperimentalDp4A);
+    Enable(wgsl::Extension::kChromiumExperimentalDp4A);
 
     auto* val1 = Var("val1", ty.u32());
     auto* val2 = Var("val2", ty.u32());
@@ -1462,7 +1462,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Builtin, Dot4U8Packed) {
-    Enable(core::Extension::kChromiumExperimentalDp4A);
+    Enable(wgsl::Extension::kChromiumExperimentalDp4A);
 
     auto* val1 = Var("val1", ty.u32());
     auto* val2 = Var("val2", ty.u32());
diff --git a/src/tint/lang/hlsl/writer/ast_printer/constructor_test.cc b/src/tint/lang/hlsl/writer/ast_printer/constructor_test.cc
index c249b08..d4110e5 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/constructor_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/constructor_test.cc
@@ -62,7 +62,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Constructor, F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     // Use a number close to 1<<16 but whose decimal representation ends in 0.
     WrapInFunction(Expr(f16((1 << 15) - 8)));
@@ -83,7 +83,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Constructor, Type_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<f16>(-1.2e-3_h));
 
@@ -130,7 +130,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Constructor, Type_Vec_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<vec3<f16>>(1_h, 2_h, 3_h));
 
@@ -152,7 +152,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Constructor, Type_Vec_Empty_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<vec3<f16>>());
 
@@ -172,7 +172,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Constructor, Type_Vec_SingleScalar_F16_Literal) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<vec3<f16>>(2_h));
 
@@ -195,7 +195,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Constructor, Type_Vec_SingleScalar_F16_Var) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Var("v", Expr(2_h));
     auto* cast = Call<vec3<f16>>(var);
@@ -260,7 +260,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Constructor, Type_Mat_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(
         Call<mat2x3<f16>>(Call<vec3<f16>>(1_h, 2_h, 3_h), Call<vec3<f16>>(3_h, 4_h, 5_h)));
@@ -308,7 +308,7 @@
     //     vec4<f16>(7.0h),
     //     vec4<f16>(vec4<f16>(42.0h, 21.0h, 6.0h, -5.0h)),
     //   );
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vector_literal = Call<vec4<f16>>(f16(2.0), f16(3.0), f16(4.0), f16(8.0));
     auto* vector_zero_init = Call<vec4<f16>>();
@@ -344,7 +344,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_Constructor, Type_Mat_Empty_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<mat2x3<f16>>());
 
@@ -380,7 +380,7 @@
     //     var m_2: mat4x4<f16> = mat4x4<f16>(m_1);
     // }
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* m_1 = Var("m_1", ty.mat4x4(ty.f16()), Call<mat4x4<f16>>());
     auto* m_2 = Var("m_2", ty.mat4x4(ty.f16()), Call<mat4x4<f16>>(m_1));
diff --git a/src/tint/lang/hlsl/writer/ast_printer/member_accessor_test.cc b/src/tint/lang/hlsl/writer/ast_printer/member_accessor_test.cc
index 81633c8..5c040c1 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/member_accessor_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/member_accessor_test.cc
@@ -166,7 +166,7 @@
 
     auto p = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     SetupStorageBuffer(Vector{
         Member("a", ty.i32()),
@@ -301,7 +301,7 @@
 
     auto p = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* inner = Structure("Inner", Vector{
                                          Member("a", ty.i32()),
@@ -440,7 +440,7 @@
 
     auto p = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     SetupUniformBuffer(Vector{
         Member("a", ty.i32()),
@@ -708,7 +708,7 @@
 
     auto p = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* inner = Structure("Inner", Vector{
                                          Member("a", ty.i32()),
@@ -990,7 +990,7 @@
 
     auto p = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     SetupStorageBuffer(Vector{
         Member("a", ty.i32()),
@@ -1195,7 +1195,7 @@
     // var<storage> data : Data;
     // data.a[2i][1i];
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     SetupStorageBuffer(Vector{
         Member("z", ty.f16()),
@@ -1261,7 +1261,7 @@
     // var<uniform> data : Data;
     // data.a[2i][1i];
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     SetupUniformBuffer(Vector{
         Member("z", ty.f16()),
diff --git a/src/tint/lang/hlsl/writer/ast_printer/module_constant_test.cc b/src/tint/lang/hlsl/writer/ast_printer/module_constant_test.cc
index aa397b0..4916207 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/module_constant_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/module_constant_test.cc
@@ -94,7 +94,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_ModuleConstant, Emit_GlobalConst_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = GlobalConst("G", Expr(1_h));
     Func("f", tint::Empty, ty.void_(), Vector{Decl(Let("l", Expr(var)))});
@@ -152,7 +152,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_ModuleConstant, Emit_GlobalConst_vec3_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = GlobalConst("G", Call<vec3<f16>>(1_h, 2_h, 3_h));
     Func("f", tint::Empty, ty.void_(), Vector{Decl(Let("l", Expr(var)))});
@@ -196,7 +196,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_ModuleConstant, Emit_GlobalConst_mat2x3_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = GlobalConst("G", Call<mat2x3<f16>>(1_h, 2_h, 3_h, 4_h, 5_h, 6_h));
     Func("f", tint::Empty, ty.void_(), Vector{Decl(Let("l", Expr(var)))});
diff --git a/src/tint/lang/hlsl/writer/ast_printer/variable_decl_statement_test.cc b/src/tint/lang/hlsl/writer/ast_printer/variable_decl_statement_test.cc
index 2da3410..41821f0 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/variable_decl_statement_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/variable_decl_statement_test.cc
@@ -156,7 +156,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_VariableDecl, Emit_VariableDeclStatement_Const_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* C = Const("C", Expr(1_h));
     Func("f", tint::Empty, ty.void_(),
@@ -230,7 +230,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_VariableDecl, Emit_VariableDeclStatement_Const_vec3_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* C = Const("C", Call<vec3<f16>>(1_h, 2_h, 3_h));
     Func("f", tint::Empty, ty.void_(),
@@ -286,7 +286,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_VariableDecl, Emit_VariableDeclStatement_Const_mat2x3_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* C = Const("C", Call<mat2x3<f16>>(1_h, 2_h, 3_h, 4_h, 5_h, 6_h));
     Func("f", tint::Empty, ty.void_(),
@@ -384,7 +384,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_VariableDecl, Emit_VariableDeclStatement_Initializer_ZeroVec_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Var("a", ty.vec3<f16>(), Call<vec3<f16>>());
 
@@ -413,7 +413,7 @@
 }
 
 TEST_F(HlslASTPrinterTest_VariableDecl, Emit_VariableDeclStatement_Initializer_ZeroMat_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Var("a", ty.mat2x3<f16>(), Call<mat2x3<f16>>());
 
diff --git a/src/tint/lang/hlsl/writer/ast_raise/BUILD.bazel b/src/tint/lang/hlsl/writer/ast_raise/BUILD.bazel
index 87be9ba2..f6333e6 100644
--- a/src/tint/lang/hlsl/writer/ast_raise/BUILD.bazel
+++ b/src/tint/lang/hlsl/writer/ast_raise/BUILD.bazel
@@ -46,6 +46,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/program",
@@ -84,6 +85,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/ast/transform:test",
diff --git a/src/tint/lang/hlsl/writer/ast_raise/BUILD.cmake b/src/tint/lang/hlsl/writer/ast_raise/BUILD.cmake
index 6e3e1f0..d7b7107 100644
--- a/src/tint/lang/hlsl/writer/ast_raise/BUILD.cmake
+++ b/src/tint/lang/hlsl/writer/ast_raise/BUILD.cmake
@@ -47,6 +47,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_program
@@ -88,6 +89,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_ast_transform_test
diff --git a/src/tint/lang/hlsl/writer/ast_raise/BUILD.gn b/src/tint/lang/hlsl/writer/ast_raise/BUILD.gn
index 89f2e4b..b7e2eef 100644
--- a/src/tint/lang/hlsl/writer/ast_raise/BUILD.gn
+++ b/src/tint/lang/hlsl/writer/ast_raise/BUILD.gn
@@ -49,6 +49,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/ast/transform",
       "${tint_src_dir}/lang/wgsl/program",
@@ -88,6 +89,7 @@
         "${tint_src_dir}/lang/core",
         "${tint_src_dir}/lang/core/constant",
         "${tint_src_dir}/lang/core/type",
+        "${tint_src_dir}/lang/wgsl",
         "${tint_src_dir}/lang/wgsl/ast",
         "${tint_src_dir}/lang/wgsl/ast/transform",
         "${tint_src_dir}/lang/wgsl/ast/transform:unittests",
diff --git a/src/tint/lang/msl/validate/BUILD.bazel b/src/tint/lang/msl/validate/BUILD.bazel
index cd91a04..941ee92 100644
--- a/src/tint/lang/msl/validate/BUILD.bazel
+++ b/src/tint/lang/msl/validate/BUILD.bazel
@@ -40,6 +40,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/sem",
diff --git a/src/tint/lang/msl/validate/BUILD.cmake b/src/tint/lang/msl/validate/BUILD.cmake
index 9f3c0a5..e380067 100644
--- a/src/tint/lang/msl/validate/BUILD.cmake
+++ b/src/tint/lang/msl/validate/BUILD.cmake
@@ -36,6 +36,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_sem
diff --git a/src/tint/lang/msl/validate/BUILD.gn b/src/tint/lang/msl/validate/BUILD.gn
index 6408a5f..c386530 100644
--- a/src/tint/lang/msl/validate/BUILD.gn
+++ b/src/tint/lang/msl/validate/BUILD.gn
@@ -34,6 +34,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/program",
       "${tint_src_dir}/lang/wgsl/sem",
diff --git a/src/tint/lang/msl/writer/BUILD.bazel b/src/tint/lang/msl/writer/BUILD.bazel
index 1d5f3c4..b3e89ef 100644
--- a/src/tint/lang/msl/writer/BUILD.bazel
+++ b/src/tint/lang/msl/writer/BUILD.bazel
@@ -41,6 +41,7 @@
     "//src/tint/lang/core/ir",
     "//src/tint/lang/core/type",
     "//src/tint/lang/msl/writer/raise",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/reader/program_to_ir",
@@ -82,6 +83,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/sem",
diff --git a/src/tint/lang/msl/writer/BUILD.cmake b/src/tint/lang/msl/writer/BUILD.cmake
index b8bbc1d..15752d1 100644
--- a/src/tint/lang/msl/writer/BUILD.cmake
+++ b/src/tint/lang/msl/writer/BUILD.cmake
@@ -48,6 +48,7 @@
   tint_lang_core_ir
   tint_lang_core_type
   tint_lang_msl_writer_raise
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_reader_program_to_ir
@@ -94,6 +95,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_sem
diff --git a/src/tint/lang/msl/writer/BUILD.gn b/src/tint/lang/msl/writer/BUILD.gn
index 695bc61..560486c 100644
--- a/src/tint/lang/msl/writer/BUILD.gn
+++ b/src/tint/lang/msl/writer/BUILD.gn
@@ -40,6 +40,7 @@
       "${tint_src_dir}/lang/core/ir",
       "${tint_src_dir}/lang/core/type",
       "${tint_src_dir}/lang/msl/writer/raise",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/program",
       "${tint_src_dir}/lang/wgsl/reader/program_to_ir",
diff --git a/src/tint/lang/msl/writer/ast_printer/BUILD.bazel b/src/tint/lang/msl/writer/ast_printer/BUILD.bazel
index b061b09..4e43481 100644
--- a/src/tint/lang/msl/writer/ast_printer/BUILD.bazel
+++ b/src/tint/lang/msl/writer/ast_printer/BUILD.bazel
@@ -37,6 +37,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/helpers",
@@ -107,6 +108,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast:test",
     "//src/tint/lang/wgsl/program",
diff --git a/src/tint/lang/msl/writer/ast_printer/BUILD.cmake b/src/tint/lang/msl/writer/ast_printer/BUILD.cmake
index 4db100e..40a6b6d 100644
--- a/src/tint/lang/msl/writer/ast_printer/BUILD.cmake
+++ b/src/tint/lang/msl/writer/ast_printer/BUILD.cmake
@@ -38,6 +38,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_helpers
@@ -112,6 +113,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_test
   tint_lang_wgsl_program
diff --git a/src/tint/lang/msl/writer/ast_printer/BUILD.gn b/src/tint/lang/msl/writer/ast_printer/BUILD.gn
index 6622f41..072b550 100644
--- a/src/tint/lang/msl/writer/ast_printer/BUILD.gn
+++ b/src/tint/lang/msl/writer/ast_printer/BUILD.gn
@@ -40,6 +40,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/ast/transform",
       "${tint_src_dir}/lang/wgsl/helpers",
@@ -112,6 +113,7 @@
         "${tint_src_dir}/lang/core",
         "${tint_src_dir}/lang/core/constant",
         "${tint_src_dir}/lang/core/type",
+        "${tint_src_dir}/lang/wgsl",
         "${tint_src_dir}/lang/wgsl/ast",
         "${tint_src_dir}/lang/wgsl/ast:unittests",
         "${tint_src_dir}/lang/wgsl/program",
diff --git a/src/tint/lang/msl/writer/ast_printer/ast_printer.cc b/src/tint/lang/msl/writer/ast_printer/ast_printer.cc
index 22fd118..8dced2c 100644
--- a/src/tint/lang/msl/writer/ast_printer/ast_printer.cc
+++ b/src/tint/lang/msl/writer/ast_printer/ast_printer.cc
@@ -257,16 +257,16 @@
     if (!tint::writer::CheckSupportedExtensions(
             "MSL", builder_.AST(), diagnostics_,
             Vector{
-                core::Extension::kChromiumDisableUniformityAnalysis,
-                core::Extension::kChromiumExperimentalDp4A,
-                core::Extension::kChromiumExperimentalFullPtrParameters,
-                core::Extension::kChromiumExperimentalPixelLocal,
-                core::Extension::kChromiumExperimentalPushConstant,
-                core::Extension::kChromiumExperimentalReadWriteStorageTexture,
-                core::Extension::kChromiumExperimentalSubgroups,
-                core::Extension::kChromiumInternalDualSourceBlending,
-                core::Extension::kChromiumInternalRelaxedUniformLayout,
-                core::Extension::kF16,
+                wgsl::Extension::kChromiumDisableUniformityAnalysis,
+                wgsl::Extension::kChromiumExperimentalDp4A,
+                wgsl::Extension::kChromiumExperimentalFullPtrParameters,
+                wgsl::Extension::kChromiumExperimentalPixelLocal,
+                wgsl::Extension::kChromiumExperimentalPushConstant,
+                wgsl::Extension::kChromiumExperimentalReadWriteStorageTexture,
+                wgsl::Extension::kChromiumExperimentalSubgroups,
+                wgsl::Extension::kChromiumInternalDualSourceBlending,
+                wgsl::Extension::kChromiumInternalRelaxedUniformLayout,
+                wgsl::Extension::kF16,
             })) {
         return false;
     }
diff --git a/src/tint/lang/msl/writer/ast_printer/ast_printer_test.cc b/src/tint/lang/msl/writer/ast_printer/ast_printer_test.cc
index 7e21d8a..a6d092f 100644
--- a/src/tint/lang/msl/writer/ast_printer/ast_printer_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/ast_printer_test.cc
@@ -36,7 +36,7 @@
 }
 
 TEST_F(MslASTPrinterTest, UnsupportedExtension) {
-    Enable(Source{{12, 34}}, core::Extension::kUndefined);
+    Enable(Source{{12, 34}}, wgsl::Extension::kUndefined);
 
     ASTPrinter& gen = Build();
 
diff --git a/src/tint/lang/msl/writer/ast_printer/binary_test.cc b/src/tint/lang/msl/writer/ast_printer/binary_test.cc
index c0c741a..52ac50d 100644
--- a/src/tint/lang/msl/writer/ast_printer/binary_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/binary_test.cc
@@ -161,7 +161,7 @@
 }
 
 TEST_F(MslBinaryTest, ModF16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* left = Var("left", ty.f16());
     auto* right = Var("right", ty.f16());
@@ -189,7 +189,7 @@
 }
 
 TEST_F(MslBinaryTest, ModVec3F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* left = Var("left", ty.vec3<f16>());
     auto* right = Var("right", ty.vec3<f16>());
diff --git a/src/tint/lang/msl/writer/ast_printer/builtin_test.cc b/src/tint/lang/msl/writer/ast_printer/builtin_test.cc
index 67caae0..f596fd5 100644
--- a/src/tint/lang/msl/writer/ast_printer/builtin_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/builtin_test.cc
@@ -214,7 +214,7 @@
     auto param = GetParam();
 
     if (param.type == CallParamType::kF16) {
-        Enable(core::Extension::kF16);
+        Enable(wgsl::Extension::kF16);
 
         GlobalVar("h2", ty.vec2<f16>(), core::AddressSpace::kPrivate);
         GlobalVar("h3", ty.vec3<f16>(), core::AddressSpace::kPrivate);
@@ -438,7 +438,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Runtime_Modf_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Let("f", Expr(1.5_h))),  //
                    Decl(Let("v", Call("modf", "f"))));
@@ -500,7 +500,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Runtime_Modf_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Let("f", Call<vec3<f16>>(1.5_h, 2.5_h, 3.5_h))),  //
                    Decl(Let("v", Call("modf", "f"))));
@@ -554,7 +554,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Const_Modf_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Let("v", Call("modf", 1.5_h))));
 
@@ -600,7 +600,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Const_Modf_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Let("v", Call("modf", Call<vec3<f16>>(1.5_h, 2.5_h, 3.5_h)))));
 
@@ -654,7 +654,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Runtime_Frexp_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Var("f", Expr(1_h)),  //
                    Var("v", Call("frexp", "f")));
@@ -716,7 +716,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Runtime_Frexp_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Var("f", Call<vec3<f16>>()),  //
                    Var("v", Call("frexp", "f")));
@@ -770,7 +770,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Const_Frexp_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Let("v", Call("frexp", 1_h))));
 
@@ -816,7 +816,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Const_Frexp_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Let("v", Call("frexp", Call<vec3<f16>>()))));
 
@@ -890,7 +890,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Degrees_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* val = Var("val", ty.f16());
     auto* call = Call("degrees", val);
@@ -917,7 +917,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Degrees_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* val = Var("val", ty.vec3<f16>());
     auto* call = Call("degrees", val);
@@ -994,7 +994,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Radians_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* val = Var("val", ty.f16());
     auto* call = Call("radians", val);
@@ -1021,7 +1021,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Radians_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* val = Var("val", ty.vec3<f16>());
     auto* call = Call("radians", val);
diff --git a/src/tint/lang/msl/writer/ast_printer/constructor_test.cc b/src/tint/lang/msl/writer/ast_printer/constructor_test.cc
index 214a147..67fe95f 100644
--- a/src/tint/lang/msl/writer/ast_printer/constructor_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/constructor_test.cc
@@ -62,7 +62,7 @@
 }
 
 TEST_F(MslASTPrinterTest_Constructor, F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     // Use a number close to 1<<16 but whose decimal representation ends in 0.
     WrapInFunction(Expr(f16((1 << 15) - 8)));
@@ -83,7 +83,7 @@
 }
 
 TEST_F(MslASTPrinterTest_Constructor, Type_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<f16>(-1.2e-3_h));
 
@@ -130,7 +130,7 @@
 }
 
 TEST_F(MslASTPrinterTest_Constructor, Type_Vec_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<vec3<f16>>(1_h, 2_h, 3_h));
 
@@ -150,7 +150,7 @@
 }
 
 TEST_F(MslASTPrinterTest_Constructor, Type_Vec_Empty_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<vec3<f16>>());
 
@@ -170,7 +170,7 @@
 }
 
 TEST_F(MslASTPrinterTest_Constructor, Type_Vec_SingleScalar_F16_Literal) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<vec3<f16>>(2_h));
 
@@ -193,7 +193,7 @@
 }
 
 TEST_F(MslASTPrinterTest_Constructor, Type_Vec_SingleScalar_F16_Var) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Var("v", Expr(2_h));
     auto* cast = Call<vec3<f16>>(var);
@@ -246,7 +246,7 @@
 }
 
 TEST_F(MslASTPrinterTest_Constructor, Type_Mat_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(
         Call<mat2x3<f16>>(Call<vec3<f16>>(1_h, 2_h, 3_h), Call<vec3<f16>>(3_h, 4_h, 5_h)));
@@ -292,7 +292,7 @@
     //     vec4<f16>(7.0h),
     //     vec4<f16>(vec4<f16>(42.0h, 21.0h, 6.0h, -5.0h)),
     //   );
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vector_literal = Call<vec4<f16>>(f16(2.0), f16(3.0), f16(4.0), f16(8.0));
     auto* vector_zero_init = Call<vec4<f16>>();
@@ -325,7 +325,7 @@
 }
 
 TEST_F(MslASTPrinterTest_Constructor, Type_Mat_Empty_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<mat2x3<f16>>());
 
@@ -361,7 +361,7 @@
     //     var m_2: mat4x4<f16> = mat4x4<f16>(m_1);
     // }
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* m_1 = Var("m_1", ty.mat4x4(ty.f16()), Call<mat4x4<f16>>());
     auto* m_2 = Var("m_2", ty.mat4x4(ty.f16()), Call<mat4x4<f16>>(m_1));
diff --git a/src/tint/lang/msl/writer/ast_printer/module_constant_test.cc b/src/tint/lang/msl/writer/ast_printer/module_constant_test.cc
index cef8f57..73e8563 100644
--- a/src/tint/lang/msl/writer/ast_printer/module_constant_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/module_constant_test.cc
@@ -114,7 +114,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Emit_GlobalConst_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = GlobalConst("G", Expr(1_h));
     Func("f", tint::Empty, ty.void_(), Vector{Decl(Let("l", Expr(var)))});
@@ -188,7 +188,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Emit_GlobalConst_vec3_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = GlobalConst("G", Call<vec3<f16>>(1_h, 2_h, 3_h));
     Func("f", tint::Empty, ty.void_(), Vector{Decl(Let("l", Expr(var)))});
@@ -244,7 +244,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Emit_GlobalConst_mat2x3_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = GlobalConst("G", Call<mat2x3<f16>>(1_h, 2_h, 3_h, 4_h, 5_h, 6_h));
     Func("f", tint::Empty, ty.void_(), Vector{Decl(Let("l", Expr(var)))});
diff --git a/src/tint/lang/msl/writer/ast_printer/variable_decl_statement_test.cc b/src/tint/lang/msl/writer/ast_printer/variable_decl_statement_test.cc
index 7024032..4925919 100644
--- a/src/tint/lang/msl/writer/ast_printer/variable_decl_statement_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/variable_decl_statement_test.cc
@@ -155,7 +155,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Emit_VariableDeclStatement_Const_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* C = Const("C", Expr(1_h));
     Func("f", tint::Empty, ty.void_(), Vector{Decl(C), Decl(Let("l", Expr(C)))});
@@ -229,7 +229,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Emit_VariableDeclStatement_Const_vec3_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* C = Const("C", Call<vec3<f16>>(1_h, 2_h, 3_h));
     Func("f", tint::Empty, ty.void_(), Vector{Decl(C), Decl(Let("l", Expr(C)))});
@@ -285,7 +285,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Emit_VariableDeclStatement_Const_mat2x3_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* C = Const("C", Call<mat2x3<f16>>(1_h, 2_h, 3_h, 4_h, 5_h, 6_h));
     Func("f", tint::Empty, ty.void_(), Vector{Decl(C), Decl(Let("l", Expr(C)))});
@@ -415,7 +415,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Emit_VariableDeclStatement_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Var("a", ty.vec2<f16>());
     auto* stmt = Decl(var);
@@ -444,7 +444,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Emit_VariableDeclStatement_Matrix_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Var("a", ty.mat3x2<f16>());
 
@@ -473,7 +473,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Emit_VariableDeclStatement_Initializer_ZeroVec_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Var("a", ty.vec3<f16>(), Call<vec3<f16>>());
 
@@ -502,7 +502,7 @@
 }
 
 TEST_F(MslASTPrinterTest, Emit_VariableDeclStatement_Initializer_ZeroMat_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Var("a", ty.mat2x3<f16>(), Call<mat2x3<f16>>());
 
diff --git a/src/tint/lang/msl/writer/ast_raise/BUILD.bazel b/src/tint/lang/msl/writer/ast_raise/BUILD.bazel
index 0b080b5..e2b25c8 100644
--- a/src/tint/lang/msl/writer/ast_raise/BUILD.bazel
+++ b/src/tint/lang/msl/writer/ast_raise/BUILD.bazel
@@ -42,6 +42,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/program",
@@ -78,6 +79,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/ast/transform:test",
diff --git a/src/tint/lang/msl/writer/ast_raise/BUILD.cmake b/src/tint/lang/msl/writer/ast_raise/BUILD.cmake
index 56fe8bd..54b8337 100644
--- a/src/tint/lang/msl/writer/ast_raise/BUILD.cmake
+++ b/src/tint/lang/msl/writer/ast_raise/BUILD.cmake
@@ -43,6 +43,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_program
@@ -82,6 +83,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_ast_transform_test
diff --git a/src/tint/lang/msl/writer/ast_raise/BUILD.gn b/src/tint/lang/msl/writer/ast_raise/BUILD.gn
index f6890c2..bb16eaa 100644
--- a/src/tint/lang/msl/writer/ast_raise/BUILD.gn
+++ b/src/tint/lang/msl/writer/ast_raise/BUILD.gn
@@ -45,6 +45,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/ast/transform",
       "${tint_src_dir}/lang/wgsl/program",
@@ -82,6 +83,7 @@
         "${tint_src_dir}/lang/core",
         "${tint_src_dir}/lang/core/constant",
         "${tint_src_dir}/lang/core/type",
+        "${tint_src_dir}/lang/wgsl",
         "${tint_src_dir}/lang/wgsl/ast",
         "${tint_src_dir}/lang/wgsl/ast/transform",
         "${tint_src_dir}/lang/wgsl/ast/transform:unittests",
diff --git a/src/tint/lang/msl/writer/ast_raise/module_scope_var_to_entry_point_param.cc b/src/tint/lang/msl/writer/ast_raise/module_scope_var_to_entry_point_param.cc
index 4e529a2..ef07aa9 100644
--- a/src/tint/lang/msl/writer/ast_raise/module_scope_var_to_entry_point_param.cc
+++ b/src/tint/lang/msl/writer/ast_raise/module_scope_var_to_entry_point_param.cc
@@ -364,7 +364,7 @@
             ctx.dst->Structure(PrivateStructName(), std::move(private_struct_members));
             // Passing a pointer to a private variable will now involve passing a pointer to the
             // member of a structure, so enable the extension that allows this.
-            ctx.dst->Enable(core::Extension::kChromiumExperimentalFullPtrParameters);
+            ctx.dst->Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
         }
 
         // Build a list of `&ident` expressions. We'll use this later to avoid generating
diff --git a/src/tint/lang/msl/writer/ast_raise/packed_vec3.cc b/src/tint/lang/msl/writer/ast_raise/packed_vec3.cc
index cfe3c0e..d24d83f 100644
--- a/src/tint/lang/msl/writer/ast_raise/packed_vec3.cc
+++ b/src/tint/lang/msl/writer/ast_raise/packed_vec3.cc
@@ -366,7 +366,7 @@
         // bytes from the start of a structure to the start of the next member.
         // Disable these validation rules using an internal extension, as MSL does not have these
         // restrictions.
-        b.Enable(core::Extension::kChromiumInternalRelaxedUniformLayout);
+        b.Enable(wgsl::Extension::kChromiumInternalRelaxedUniformLayout);
 
         // Track expressions that need to be packed or unpacked.
         Hashset<const sem::ValueExpression*, 8> to_pack;
diff --git a/src/tint/lang/msl/writer/ast_raise/pixel_local.cc b/src/tint/lang/msl/writer/ast_raise/pixel_local.cc
index 53f6dfe..df67318 100644
--- a/src/tint/lang/msl/writer/ast_raise/pixel_local.cc
+++ b/src/tint/lang/msl/writer/ast_raise/pixel_local.cc
@@ -58,7 +58,7 @@
         // If the pixel local extension isn't enabled, then there must be no use of pixel_local
         // variables, and so there's nothing for this transform to do.
         if (!sem.Module()->Extensions().Contains(
-                core::Extension::kChromiumExperimentalPixelLocal)) {
+                wgsl::Extension::kChromiumExperimentalPixelLocal)) {
             return SkipTransform;
         }
 
diff --git a/src/tint/lang/spirv/reader/BUILD.bazel b/src/tint/lang/spirv/reader/BUILD.bazel
index 0c153ea..3601ba5 100644
--- a/src/tint/lang/spirv/reader/BUILD.bazel
+++ b/src/tint/lang/spirv/reader/BUILD.bazel
@@ -36,6 +36,7 @@
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
     "//src/tint/lang/spirv/reader/common",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/sem",
diff --git a/src/tint/lang/spirv/reader/BUILD.cmake b/src/tint/lang/spirv/reader/BUILD.cmake
index 282235d..6dd4628 100644
--- a/src/tint/lang/spirv/reader/BUILD.cmake
+++ b/src/tint/lang/spirv/reader/BUILD.cmake
@@ -41,6 +41,7 @@
   tint_lang_core_constant
   tint_lang_core_type
   tint_lang_spirv_reader_common
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_sem
diff --git a/src/tint/lang/spirv/reader/BUILD.gn b/src/tint/lang/spirv/reader/BUILD.gn
index eeb5258..80f55cb 100644
--- a/src/tint/lang/spirv/reader/BUILD.gn
+++ b/src/tint/lang/spirv/reader/BUILD.gn
@@ -35,6 +35,7 @@
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
       "${tint_src_dir}/lang/spirv/reader/common",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/program",
       "${tint_src_dir}/lang/wgsl/sem",
diff --git a/src/tint/lang/spirv/reader/ast_lower/BUILD.bazel b/src/tint/lang/spirv/reader/ast_lower/BUILD.bazel
index 5f0918e..0a5204d1 100644
--- a/src/tint/lang/spirv/reader/ast_lower/BUILD.bazel
+++ b/src/tint/lang/spirv/reader/ast_lower/BUILD.bazel
@@ -42,6 +42,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/program",
@@ -78,6 +79,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/ast/transform:test",
diff --git a/src/tint/lang/spirv/reader/ast_lower/BUILD.cmake b/src/tint/lang/spirv/reader/ast_lower/BUILD.cmake
index 29a4202..034a369 100644
--- a/src/tint/lang/spirv/reader/ast_lower/BUILD.cmake
+++ b/src/tint/lang/spirv/reader/ast_lower/BUILD.cmake
@@ -43,6 +43,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_program
@@ -82,6 +83,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_ast_transform_test
diff --git a/src/tint/lang/spirv/reader/ast_lower/BUILD.gn b/src/tint/lang/spirv/reader/ast_lower/BUILD.gn
index 730ff27..fee420d 100644
--- a/src/tint/lang/spirv/reader/ast_lower/BUILD.gn
+++ b/src/tint/lang/spirv/reader/ast_lower/BUILD.gn
@@ -45,6 +45,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/ast/transform",
       "${tint_src_dir}/lang/wgsl/program",
@@ -82,6 +83,7 @@
         "${tint_src_dir}/lang/core",
         "${tint_src_dir}/lang/core/constant",
         "${tint_src_dir}/lang/core/type",
+        "${tint_src_dir}/lang/wgsl",
         "${tint_src_dir}/lang/wgsl/ast",
         "${tint_src_dir}/lang/wgsl/ast/transform",
         "${tint_src_dir}/lang/wgsl/ast/transform:unittests",
diff --git a/src/tint/lang/spirv/reader/ast_parser/BUILD.bazel b/src/tint/lang/spirv/reader/ast_parser/BUILD.bazel
index ff65b46..4a97ba1 100644
--- a/src/tint/lang/spirv/reader/ast_parser/BUILD.bazel
+++ b/src/tint/lang/spirv/reader/ast_parser/BUILD.bazel
@@ -55,6 +55,7 @@
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
     "//src/tint/lang/spirv/reader/common",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/program",
@@ -133,6 +134,7 @@
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
     "//src/tint/lang/spirv/reader/common",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/sem",
diff --git a/src/tint/lang/spirv/reader/ast_parser/BUILD.cmake b/src/tint/lang/spirv/reader/ast_parser/BUILD.cmake
index 2748739..c8b5c9d 100644
--- a/src/tint/lang/spirv/reader/ast_parser/BUILD.cmake
+++ b/src/tint/lang/spirv/reader/ast_parser/BUILD.cmake
@@ -56,6 +56,7 @@
   tint_lang_core_constant
   tint_lang_core_type
   tint_lang_spirv_reader_common
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_program
@@ -139,6 +140,7 @@
   tint_lang_core_constant
   tint_lang_core_type
   tint_lang_spirv_reader_common
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_sem
diff --git a/src/tint/lang/spirv/reader/ast_parser/BUILD.gn b/src/tint/lang/spirv/reader/ast_parser/BUILD.gn
index 5c3d82b..163e8be 100644
--- a/src/tint/lang/spirv/reader/ast_parser/BUILD.gn
+++ b/src/tint/lang/spirv/reader/ast_parser/BUILD.gn
@@ -58,6 +58,7 @@
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
       "${tint_src_dir}/lang/spirv/reader/common",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/ast/transform",
       "${tint_src_dir}/lang/wgsl/program",
@@ -139,6 +140,7 @@
         "${tint_src_dir}/lang/core/constant",
         "${tint_src_dir}/lang/core/type",
         "${tint_src_dir}/lang/spirv/reader/common",
+        "${tint_src_dir}/lang/wgsl",
         "${tint_src_dir}/lang/wgsl/ast",
         "${tint_src_dir}/lang/wgsl/program",
         "${tint_src_dir}/lang/wgsl/sem",
diff --git a/src/tint/lang/spirv/reader/ast_parser/ast_parser.cc b/src/tint/lang/spirv/reader/ast_parser/ast_parser.cc
index ae45f74..eea7fce 100644
--- a/src/tint/lang/spirv/reader/ast_parser/ast_parser.cc
+++ b/src/tint/lang/spirv/reader/ast_parser/ast_parser.cc
@@ -2574,7 +2574,7 @@
             const auto access =
                 usage.IsStorageReadWriteTexture() ? core::Access::kReadWrite : core::Access::kWrite;
             if (access == core::Access::kReadWrite) {
-                Enable(core::Extension::kChromiumExperimentalReadWriteStorageTexture);
+                Enable(wgsl::Extension::kChromiumExperimentalReadWriteStorageTexture);
             }
             const auto format = enum_converter_.ToTexelFormat(image_type->format());
             if (format == core::TexelFormat::kUndefined) {
diff --git a/src/tint/lang/spirv/reader/ast_parser/ast_parser.h b/src/tint/lang/spirv/reader/ast_parser/ast_parser.h
index bf5df6b..69aa099 100644
--- a/src/tint/lang/spirv/reader/ast_parser/ast_parser.h
+++ b/src/tint/lang/spirv/reader/ast_parser/ast_parser.h
@@ -740,7 +740,7 @@
 
     /// Enable a WGSL extension, if not already enabled.
     /// @param extension the extension to enable
-    void Enable(core::Extension extension) {
+    void Enable(wgsl::Extension extension) {
         if (enabled_extensions_.Add(extension)) {
             builder_.Enable(extension);
         }
@@ -935,7 +935,7 @@
     WorkgroupSizeInfo workgroup_size_builtin_;
 
     /// Set of WGSL extensions that have been enabled.
-    Hashset<core::Extension, 4> enabled_extensions_;
+    Hashset<wgsl::Extension, 4> enabled_extensions_;
 };
 
 }  // namespace tint::spirv::reader::ast_parser
diff --git a/src/tint/lang/spirv/reader/ast_parser/function.cc b/src/tint/lang/spirv/reader/ast_parser/function.cc
index e83e959..754fff5 100644
--- a/src/tint/lang/spirv/reader/ast_parser/function.cc
+++ b/src/tint/lang/spirv/reader/ast_parser/function.cc
@@ -5312,7 +5312,7 @@
         if (memory != uint32_t(spv::Scope::Workgroup)) {
             return Fail() << "textureBarrier requires workgroup memory scope";
         }
-        parser_impl_.Enable(core::Extension::kChromiumExperimentalReadWriteStorageTexture);
+        parser_impl_.Enable(wgsl::Extension::kChromiumExperimentalReadWriteStorageTexture);
         AddStatement(builder_.CallStmt(builder_.Call("textureBarrier")));
         semantics &= ~static_cast<uint32_t>(spv::MemorySemanticsMask::ImageMemory);
     }
diff --git a/src/tint/lang/spirv/reader/ast_parser/parse.cc b/src/tint/lang/spirv/reader/ast_parser/parse.cc
index a0bee33..abef728 100644
--- a/src/tint/lang/spirv/reader/ast_parser/parse.cc
+++ b/src/tint/lang/spirv/reader/ast_parser/parse.cc
@@ -44,7 +44,7 @@
     if (options.allow_non_uniform_derivatives) {
         // Suppress errors regarding non-uniform derivative operations if requested, by adding a
         // diagnostic directive to the module.
-        builder.DiagnosticDirective(core::DiagnosticSeverity::kOff, "derivative_uniformity");
+        builder.DiagnosticDirective(wgsl::DiagnosticSeverity::kOff, "derivative_uniformity");
     }
 
     if (!options.allow_chromium_extensions) {
@@ -52,23 +52,23 @@
         for (auto* enable : builder.AST().Enables()) {
             for (auto* extension : enable->extensions) {
                 switch (extension->name) {
-                    case core::Extension::kUndefined:
-                    case core::Extension::kChromiumDisableUniformityAnalysis:
-                    case core::Extension::kChromiumExperimentalDp4A:
-                    case core::Extension::kChromiumExperimentalFullPtrParameters:
-                    case core::Extension::kChromiumExperimentalPixelLocal:
-                    case core::Extension::kChromiumExperimentalPushConstant:
-                    case core::Extension::kChromiumExperimentalReadWriteStorageTexture:
-                    case core::Extension::kChromiumExperimentalSubgroups:
-                    case core::Extension::kChromiumInternalDualSourceBlending:
-                    case core::Extension::kChromiumInternalRelaxedUniformLayout: {
+                    case wgsl::Extension::kUndefined:
+                    case wgsl::Extension::kChromiumDisableUniformityAnalysis:
+                    case wgsl::Extension::kChromiumExperimentalDp4A:
+                    case wgsl::Extension::kChromiumExperimentalFullPtrParameters:
+                    case wgsl::Extension::kChromiumExperimentalPixelLocal:
+                    case wgsl::Extension::kChromiumExperimentalPushConstant:
+                    case wgsl::Extension::kChromiumExperimentalReadWriteStorageTexture:
+                    case wgsl::Extension::kChromiumExperimentalSubgroups:
+                    case wgsl::Extension::kChromiumInternalDualSourceBlending:
+                    case wgsl::Extension::kChromiumInternalRelaxedUniformLayout: {
                         StringStream ss;
                         ss << "module requires " << ToString(extension->name)
                            << ", but 'allow-chromium-extensions' was not passed";
                         builder.Diagnostics().add_error(diag::System::Reader, ss.str());
                         return Program(std::move(builder));
                     }
-                    case core::Extension::kF16:
+                    case wgsl::Extension::kF16:
                         break;
                 }
             }
diff --git a/src/tint/lang/spirv/writer/BUILD.bazel b/src/tint/lang/spirv/writer/BUILD.bazel
index f4c8091..e42bedf6 100644
--- a/src/tint/lang/spirv/writer/BUILD.bazel
+++ b/src/tint/lang/spirv/writer/BUILD.bazel
@@ -44,6 +44,7 @@
     "//src/tint/lang/core/type",
     "//src/tint/lang/spirv/intrinsic/data",
     "//src/tint/lang/spirv/ir",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/reader/program_to_ir",
@@ -158,6 +159,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/sem",
diff --git a/src/tint/lang/spirv/writer/BUILD.cmake b/src/tint/lang/spirv/writer/BUILD.cmake
index 239c5b5..b47843a 100644
--- a/src/tint/lang/spirv/writer/BUILD.cmake
+++ b/src/tint/lang/spirv/writer/BUILD.cmake
@@ -51,6 +51,7 @@
   tint_lang_core_type
   tint_lang_spirv_intrinsic_data
   tint_lang_spirv_ir
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_reader_program_to_ir
@@ -179,6 +180,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_sem
diff --git a/src/tint/lang/spirv/writer/BUILD.gn b/src/tint/lang/spirv/writer/BUILD.gn
index 0d7c728..a3dd0b8 100644
--- a/src/tint/lang/spirv/writer/BUILD.gn
+++ b/src/tint/lang/spirv/writer/BUILD.gn
@@ -47,6 +47,7 @@
       "${tint_src_dir}/lang/core/type",
       "${tint_src_dir}/lang/spirv/intrinsic/data",
       "${tint_src_dir}/lang/spirv/ir",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/program",
       "${tint_src_dir}/lang/wgsl/reader/program_to_ir",
diff --git a/src/tint/lang/spirv/writer/ast_printer/BUILD.bazel b/src/tint/lang/spirv/writer/ast_printer/BUILD.bazel
index b695ddb..99c7cd5 100644
--- a/src/tint/lang/spirv/writer/ast_printer/BUILD.bazel
+++ b/src/tint/lang/spirv/writer/ast_printer/BUILD.bazel
@@ -40,6 +40,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/helpers",
@@ -112,6 +113,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast:test",
     "//src/tint/lang/wgsl/program",
diff --git a/src/tint/lang/spirv/writer/ast_printer/BUILD.cmake b/src/tint/lang/spirv/writer/ast_printer/BUILD.cmake
index 0a81588..46151c0 100644
--- a/src/tint/lang/spirv/writer/ast_printer/BUILD.cmake
+++ b/src/tint/lang/spirv/writer/ast_printer/BUILD.cmake
@@ -41,6 +41,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_helpers
@@ -118,6 +119,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_test
   tint_lang_wgsl_program
diff --git a/src/tint/lang/spirv/writer/ast_printer/BUILD.gn b/src/tint/lang/spirv/writer/ast_printer/BUILD.gn
index 94377d4..4344f94 100644
--- a/src/tint/lang/spirv/writer/ast_printer/BUILD.gn
+++ b/src/tint/lang/spirv/writer/ast_printer/BUILD.gn
@@ -43,6 +43,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/ast/transform",
       "${tint_src_dir}/lang/wgsl/helpers",
@@ -116,6 +117,7 @@
         "${tint_src_dir}/lang/core",
         "${tint_src_dir}/lang/core/constant",
         "${tint_src_dir}/lang/core/type",
+        "${tint_src_dir}/lang/wgsl",
         "${tint_src_dir}/lang/wgsl/ast",
         "${tint_src_dir}/lang/wgsl/ast:unittests",
         "${tint_src_dir}/lang/wgsl/program",
diff --git a/src/tint/lang/spirv/writer/ast_printer/ast_builtin_test.cc b/src/tint/lang/spirv/writer/ast_printer/ast_builtin_test.cc
index fc2feba..b0c7a8d0 100644
--- a/src/tint/lang/spirv/writer/ast_printer/ast_builtin_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/ast_builtin_test.cc
@@ -135,7 +135,7 @@
 }
 
 TEST_F(BuiltinSpirvASTPrinterTest, Call_GLSLMethod_WithLoad_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = GlobalVar("ident", ty.f16(), core::AddressSpace::kPrivate);
     auto* expr = Call("round", "ident");
@@ -520,7 +520,7 @@
 }
 
 TEST_P(Builtin_Builder_SingleParam_Float_Test, Call_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto param = GetParam();
     // Use a variable to prevent the function being evaluated as constant.
@@ -603,7 +603,7 @@
 }
 
 TEST_P(Builtin_Builder_SingleParam_Float_Test, Call_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto param = GetParam();
 
@@ -709,7 +709,7 @@
 }
 
 TEST_F(BuiltinSpirvASTPrinterTest, Call_Length_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* scalar = Var("a", Expr(1_h));
     auto* expr = Call("length", scalar);
@@ -783,7 +783,7 @@
 }
 
 TEST_F(BuiltinSpirvASTPrinterTest, Call_Length_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vec = Var("a", Call<vec2<f16>>(1_h, 1_h));
     auto* expr = Call("length", vec);
@@ -859,7 +859,7 @@
 }
 
 TEST_F(BuiltinSpirvASTPrinterTest, Call_Normalize_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vec = Var("a", Call<vec2<f16>>(1_h, 1_h));
     auto* expr = Call("normalize", vec);
@@ -938,7 +938,7 @@
 }
 
 TEST_P(Builtin_Builder_DualParam_Float_Test, Call_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto param = GetParam();
     auto* scalar = Var("scalar", Expr(1_h));
@@ -1020,7 +1020,7 @@
 }
 
 TEST_P(Builtin_Builder_DualParam_Float_Test, Call_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto param = GetParam();
     auto* vec = Var("vec", Call<vec2<f16>>(1_h, 1_h));
@@ -1109,7 +1109,7 @@
 }
 
 TEST_F(BuiltinSpirvASTPrinterTest, Call_Reflect_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vec = Var("vec", Call<vec2<f16>>(1_h, 1_h));
     auto* expr = Call("reflect", vec, vec);
@@ -1185,7 +1185,7 @@
 }
 
 TEST_F(BuiltinSpirvASTPrinterTest, Call_Distance_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* scalar = Var("scalar", Expr(1_h));
     auto* expr = Call("distance", scalar, scalar);
@@ -1261,7 +1261,7 @@
 }
 
 TEST_F(BuiltinSpirvASTPrinterTest, Call_Distance_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vec = Var("vec", Call<vec2<f16>>(1_h, 1_h));
     auto* expr = Call("distance", vec, vec);
@@ -1339,7 +1339,7 @@
 }
 
 TEST_F(BuiltinSpirvASTPrinterTest, Call_Cross_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vec = Var("vec", Call<vec3<f16>>(1_h, 1_h, 1_h));
     auto* expr = Call("cross", vec, vec);
@@ -1420,7 +1420,7 @@
 }
 
 TEST_P(Builtin_Builder_ThreeParam_Float_Test, Call_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto param = GetParam();
     auto* scalar = Var("scalar", Expr(1_h));
@@ -1504,7 +1504,7 @@
 }
 
 TEST_P(Builtin_Builder_ThreeParam_Float_Test, Call_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto param = GetParam();
     auto* vec = Var("vec", Call<vec2<f16>>(1_h, 1_h));
@@ -1595,7 +1595,7 @@
 }
 
 TEST_F(BuiltinSpirvASTPrinterTest, Call_FaceForward_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vec = Var("vec", Call<vec2<f16>>(1_h, 1_h));
     auto* expr = Call("faceForward", vec, vec, vec);
@@ -1688,7 +1688,7 @@
 }
 
 TEST_F(BuiltinSpirvASTPrinterTest, Runtime_Call_Modf_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vec = Var("vec", Call<vec2<f16>>(1_h, 2_h));
     auto* expr = Call("modf", vec);
@@ -1790,7 +1790,7 @@
 }
 
 TEST_F(BuiltinSpirvASTPrinterTest, Const_Call_Modf_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* expr = Call("modf", Call<vec2<f16>>(1_h, 2_h));
     Func("a_func", tint::Empty, ty.void_(),
@@ -1894,7 +1894,7 @@
 }
 
 TEST_F(BuiltinSpirvASTPrinterTest, Runtime_Call_Frexp_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vec = Var("vec", Call<vec2<f16>>(1_h, 2_h));
     auto* expr = Call("frexp", vec);
@@ -2000,7 +2000,7 @@
 }
 
 TEST_F(BuiltinSpirvASTPrinterTest, Const_Call_Frexp_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Func("a_func", tint::Empty, ty.void_(),
          Vector{
@@ -3155,7 +3155,7 @@
 }
 
 TEST_F(BuiltinSpirvASTPrinterTest, Call_Determinant_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = GlobalVar("var", ty.mat3x3<f16>(), core::AddressSpace::kPrivate);
     auto* expr = Call("determinant", "var");
@@ -3228,7 +3228,7 @@
 }
 
 TEST_F(BuiltinSpirvASTPrinterTest, Call_Transpose_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = GlobalVar("var", ty.mat2x3<f16>(), core::AddressSpace::kPrivate);
     auto* expr = Call("transpose", "var");
@@ -3300,7 +3300,7 @@
 }
 
 TEST_F(BuiltinSpirvASTPrinterTest, Call_Dot_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = GlobalVar("v", ty.vec3<f16>(), core::AddressSpace::kPrivate);
     auto* expr = Call("dot", "v", "v");
@@ -4159,7 +4159,7 @@
 namespace DP4A_builtin_tests {
 
 TEST_F(BuiltinSpirvASTPrinterTest, Call_Dot4I8Packed) {
-    Enable(core::Extension::kChromiumExperimentalDp4A);
+    Enable(wgsl::Extension::kChromiumExperimentalDp4A);
 
     auto* val1 = Var("val1", ty.u32());
     auto* val2 = Var("val2", ty.u32());
@@ -4196,7 +4196,7 @@
 }
 
 TEST_F(BuiltinSpirvASTPrinterTest, Call_Dot4U8Packed) {
-    Enable(core::Extension::kChromiumExperimentalDp4A);
+    Enable(wgsl::Extension::kChromiumExperimentalDp4A);
 
     auto* val1 = Var("val1", ty.u32());
     auto* val2 = Var("val2", ty.u32());
diff --git a/src/tint/lang/spirv/writer/ast_printer/ast_printer_test.cc b/src/tint/lang/spirv/writer/ast_printer/ast_printer_test.cc
index 8fabbf2..bcf0633 100644
--- a/src/tint/lang/spirv/writer/ast_printer/ast_printer_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/ast_printer_test.cc
@@ -31,7 +31,7 @@
 }
 
 TEST_F(SpirvASTPrinterTest, UnsupportedExtension) {
-    Enable(Source{{12, 34}}, core::Extension::kUndefined);
+    Enable(Source{{12, 34}}, wgsl::Extension::kUndefined);
 
     auto program = std::make_unique<Program>(resolver::Resolve(*this));
     auto result = Generate(program.get(), Options{});
diff --git a/src/tint/lang/spirv/writer/ast_printer/ast_type_test.cc b/src/tint/lang/spirv/writer/ast_printer/ast_type_test.cc
index a1b3ce6..d927699 100644
--- a/src/tint/lang/spirv/writer/ast_printer/ast_type_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/ast_type_test.cc
@@ -324,7 +324,7 @@
 }
 
 TEST_F(SpirvASTPrinterTest_Type, GenerateStruct) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* s = Structure("my_struct", Vector{Member("a", ty.f32()), Member("b", ty.f16())});
 
@@ -345,7 +345,7 @@
 }
 
 TEST_F(SpirvASTPrinterTest_Type, GenerateStruct_DecoratedMembers) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* s = Structure("S", Vector{
                                  Member("a", ty.f32()),
@@ -378,7 +378,7 @@
 }
 
 TEST_F(SpirvASTPrinterTest_Type, GenerateStruct_DecoratedMembers_Matrix) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* s = Structure("S", Vector{
                                  Member("mat2x2_f32", ty.mat2x2<f32>()),
@@ -441,7 +441,7 @@
 }
 
 TEST_F(SpirvASTPrinterTest_Type, GenerateStruct_DecoratedMembers_ArraysOfMatrix) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto arr_mat2x2_f32 = ty.array(ty.mat2x2<f32>(), 1_u);  // Singly nested array
     auto arr_mat2x2_f16 = ty.array(ty.mat2x2<f16>(), 1_u);  // Singly nested array
diff --git a/src/tint/lang/spirv/writer/ast_printer/binary_expression_test.cc b/src/tint/lang/spirv/writer/ast_printer/binary_expression_test.cc
index b5c9bcb..47f27be 100644
--- a/src/tint/lang/spirv/writer/ast_printer/binary_expression_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/binary_expression_test.cc
@@ -251,7 +251,7 @@
 
 using BinaryArithF16Test = TestParamHelper<BinaryData>;
 TEST_P(BinaryArithF16Test, Scalar) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto param = GetParam();
 
@@ -276,7 +276,7 @@
 }
 
 TEST_P(BinaryArithF16Test, Vector) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto param = GetParam();
 
@@ -546,7 +546,7 @@
 
 using BinaryCompareF16Test = TestParamHelper<BinaryData>;
 TEST_P(BinaryCompareF16Test, Scalar) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto param = GetParam();
 
@@ -572,7 +572,7 @@
 }
 
 TEST_P(BinaryCompareF16Test, Vector) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto param = GetParam();
 
@@ -632,7 +632,7 @@
 }
 
 TEST_F(SpirvASTPrinterTest, Binary_Multiply_VectorScalar_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* lhs = Call<vec3<f16>>(1_h, 1_h, 1_h);
     auto* rhs = Expr(1_h);
@@ -680,7 +680,7 @@
 }
 
 TEST_F(SpirvASTPrinterTest, Binary_Multiply_ScalarVector_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* lhs = Expr(1_h);
     auto* rhs = Call<vec3<f16>>(1_h, 1_h, 1_h);
@@ -731,7 +731,7 @@
 }
 
 TEST_F(SpirvASTPrinterTest, Binary_Multiply_MatrixScalar_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Var("mat", ty.mat3x3<f16>());
     auto* expr = create<ast::BinaryExpression>(core::BinaryOp::kMultiply, Expr("mat"), Expr(1_h));
@@ -785,7 +785,7 @@
 }
 
 TEST_F(SpirvASTPrinterTest, Binary_Multiply_ScalarMatrix_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Var("mat", ty.mat3x3<f16>());
     auto* expr = create<ast::BinaryExpression>(core::BinaryOp::kMultiply, Expr(1_h), Expr("mat"));
@@ -841,7 +841,7 @@
 }
 
 TEST_F(SpirvASTPrinterTest, Binary_Multiply_MatrixVector_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Var("mat", ty.mat3x3<f16>());
     auto* rhs = Call<vec3<f16>>(1_h, 1_h, 1_h);
@@ -899,7 +899,7 @@
 }
 
 TEST_F(SpirvASTPrinterTest, Binary_Multiply_VectorMatrix_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Var("mat", ty.mat3x3<f16>());
     auto* lhs = Call<vec3<f16>>(1_h, 1_h, 1_h);
@@ -956,7 +956,7 @@
 }
 
 TEST_F(SpirvASTPrinterTest, Binary_Multiply_MatrixMatrix_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Var("mat", ty.mat3x3<f16>());
     auto* expr = create<ast::BinaryExpression>(core::BinaryOp::kMultiply, Expr("mat"), Expr("mat"));
@@ -1348,7 +1348,7 @@
     auto& param = GetParam();
 
     if (param.type == Type::f16) {
-        Enable(core::Extension::kF16);
+        Enable(wgsl::Extension::kF16);
     }
 
     const ast::Expression* lhs = MakeVectorExpr(this, param.type);
@@ -1400,7 +1400,7 @@
     auto& param = GetParam();
 
     if (param.type == Type::f16) {
-        Enable(core::Extension::kF16);
+        Enable(wgsl::Extension::kF16);
     }
 
     const ast::Expression* lhs = MakeScalarExpr(this, param.type);
@@ -1480,7 +1480,7 @@
     auto& param = GetParam();
 
     if (param.type == Type::f16) {
-        Enable(core::Extension::kF16);
+        Enable(wgsl::Extension::kF16);
     }
 
     const ast::Expression* lhs = MakeVectorExpr(this, param.type);
@@ -1528,7 +1528,7 @@
     auto& param = GetParam();
 
     if (param.type == Type::f16) {
-        Enable(core::Extension::kF16);
+        Enable(wgsl::Extension::kF16);
     }
 
     const ast::Expression* lhs = MakeScalarExpr(this, param.type);
@@ -1643,7 +1643,7 @@
     auto& param = GetParam();
 
     if (param.type == Type::f16) {
-        Enable(core::Extension::kF16);
+        Enable(wgsl::Extension::kF16);
     }
 
     const ast::Expression* lhs = MakeMat3x4Expr(this, param.type);
@@ -1706,7 +1706,7 @@
     auto& param = GetParam();
 
     if (param.type == Type::f16) {
-        Enable(core::Extension::kF16);
+        Enable(wgsl::Extension::kF16);
     }
 
     const ast::Expression* lhs = MakeMat3x4Expr(this, param.type);
diff --git a/src/tint/lang/spirv/writer/ast_printer/builder.cc b/src/tint/lang/spirv/writer/ast_printer/builder.cc
index 65a13af..27fe8b4 100644
--- a/src/tint/lang/spirv/writer/ast_printer/builder.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/builder.cc
@@ -263,14 +263,14 @@
     if (!tint::writer::CheckSupportedExtensions(
             "SPIR-V", builder_.AST(), builder_.Diagnostics(),
             Vector{
-                core::Extension::kChromiumDisableUniformityAnalysis,
-                core::Extension::kChromiumExperimentalDp4A,
-                core::Extension::kChromiumExperimentalFullPtrParameters,
-                core::Extension::kChromiumExperimentalPushConstant,
-                core::Extension::kChromiumExperimentalReadWriteStorageTexture,
-                core::Extension::kChromiumExperimentalSubgroups,
-                core::Extension::kF16,
-                core::Extension::kChromiumInternalDualSourceBlending,
+                wgsl::Extension::kChromiumDisableUniformityAnalysis,
+                wgsl::Extension::kChromiumExperimentalDp4A,
+                wgsl::Extension::kChromiumExperimentalFullPtrParameters,
+                wgsl::Extension::kChromiumExperimentalPushConstant,
+                wgsl::Extension::kChromiumExperimentalReadWriteStorageTexture,
+                wgsl::Extension::kChromiumExperimentalSubgroups,
+                wgsl::Extension::kF16,
+                wgsl::Extension::kChromiumInternalDualSourceBlending,
             })) {
         return false;
     }
@@ -334,14 +334,14 @@
     return Operand(module_.NextId());
 }
 
-bool Builder::GenerateExtension(core::Extension extension) {
+bool Builder::GenerateExtension(wgsl::Extension extension) {
     switch (extension) {
-        case core::Extension::kChromiumExperimentalDp4A:
+        case wgsl::Extension::kChromiumExperimentalDp4A:
             module_.PushExtension("SPV_KHR_integer_dot_product");
             module_.PushCapability(SpvCapabilityDotProductKHR);
             module_.PushCapability(SpvCapabilityDotProductInput4x8BitPackedKHR);
             break;
-        case core::Extension::kF16:
+        case wgsl::Extension::kF16:
             module_.PushCapability(SpvCapabilityFloat16);
             module_.PushCapability(SpvCapabilityUniformAndStorageBuffer16BitAccess);
             module_.PushCapability(SpvCapabilityStorageBuffer16BitAccess);
diff --git a/src/tint/lang/spirv/writer/ast_printer/builder.h b/src/tint/lang/spirv/writer/ast_printer/builder.h
index 0f0c84b..c736697 100644
--- a/src/tint/lang/spirv/writer/ast_printer/builder.h
+++ b/src/tint/lang/spirv/writer/ast_printer/builder.h
@@ -153,7 +153,7 @@
     /// not supported.
     /// @param ext the extension to generate
     /// @returns true on success.
-    bool GenerateExtension(core::Extension ext);
+    bool GenerateExtension(wgsl::Extension ext);
     /// Generates a label for the given id. Emits an error and returns false if
     /// we're currently outside a function.
     /// @param id the id to use for the label
diff --git a/src/tint/lang/spirv/writer/ast_printer/constructor_expression_test.cc b/src/tint/lang/spirv/writer/ast_printer/constructor_expression_test.cc
index b0618dd..30b1654 100644
--- a/src/tint/lang/spirv/writer/ast_printer/constructor_expression_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/constructor_expression_test.cc
@@ -214,7 +214,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_F16_With_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<f16>(2_h);
     WrapInFunction(cast);
@@ -289,7 +289,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec2_With_F16_Literal) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec2<f16>>(2_h);
     WrapInFunction(cast);
@@ -333,7 +333,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec2_With_F16_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.f16(), Expr(2_h)));
     auto* cast = Call<vec2<f16>>("x", "x");
@@ -378,7 +378,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec2_With_F16_F16_Const) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec2<f16>>(1_h, 2_h);
     WrapInFunction(cast);
@@ -423,7 +423,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec2_F16_With_Vec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.vec2<f16>(), Call<vec2<f16>>(1_h, 2_h)));
     auto* cast = Call<vec2<f16>>("x");
@@ -468,7 +468,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec2_F16_With_Vec2_Const) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec2<f16>>(Call<vec2<f16>>(1_h, 2_h));
     WrapInFunction(cast);
@@ -514,7 +514,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.f16(), Expr(2_h)));
     auto* cast = Call<vec3<f16>>("x", "x", "x");
@@ -561,7 +561,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_F16_Const) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec3<f16>>(1_h, 2_h, 3_h);
     WrapInFunction(cast);
@@ -652,7 +652,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_F16_F16_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.f16(), Expr(2_h)));
     auto* cast = Call<vec3<f16>>("x", "x", "x");
@@ -699,7 +699,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_F16_F16_F16_Const) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec3<f16>>(1_h, 2_h, 3_h);
     WrapInFunction(cast);
@@ -750,7 +750,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_F16_Vec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.vec2<f16>(), Call<vec2<f16>>(2_h, 3_h)));
     auto* cast = Call<vec3<f16>>(1_h, "x");
@@ -801,7 +801,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_F16_Vec2_Const) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec3<f16>>(1_h, Call<vec2<f16>>(2_h, 3_h));
     WrapInFunction(cast);
@@ -852,7 +852,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_Vec2_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.vec2<f16>(), Call<vec2<f16>>(1_h, 2_h)));
     auto* cast = Call<vec3<f16>>("x", 3_h);
@@ -903,7 +903,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_Vec2_F16_Const) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec3<f16>>(Call<vec2<f16>>(1_h, 2_h), 3_h);
     WrapInFunction(cast);
@@ -950,7 +950,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec3_F16_With_Vec3) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.vec3<f16>(), Call<vec3<f16>>(1_h, 2_h, 3_h)));
     auto* cast = Call<vec3<f16>>("x");
@@ -997,7 +997,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec3_F16_With_Vec3_Const) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec3<f16>>(Call<vec3<f16>>(1_h, 2_h, 3_h));
     WrapInFunction(cast);
@@ -1083,7 +1083,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.f16(), Expr(2_h)));
     auto* cast = Call<vec4<f16>>("x");
@@ -1126,7 +1126,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16_Const) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(2_h);
     WrapInFunction(cast);
@@ -1172,7 +1172,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16_F16_F16_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.f16(), Expr(2_h)));
     auto* cast = Call<vec4<f16>>("x", "x", "x", "x");
@@ -1221,7 +1221,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16_F16_F16_F16_Const) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(1_h, 2_h, 3_h, 4_h);
     WrapInFunction(cast);
@@ -1272,7 +1272,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16_F16_Vec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.vec2<f16>(), Call<vec2<f16>>(1_h, 2_h)));
     auto* cast = Call<vec4<f16>>(1_h, 2_h, "x");
@@ -1323,7 +1323,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16_F16_Vec2_Const) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(1_h, 2_h, Call<vec2<f16>>(3_h, 4_h));
     WrapInFunction(cast);
@@ -1376,7 +1376,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16_Vec2_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.vec2<f16>(), Call<vec2<f16>>(2_h, 3_h)));
     auto* cast = Call<vec4<f16>>(1_h, "x", 4_h);
@@ -1429,7 +1429,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16_Vec2_F16_Const) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(1_h, Call<vec2<f16>>(2_h, 3_h), 4_h);
     WrapInFunction(cast);
@@ -1482,7 +1482,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_Vec2_F16_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.vec2<f16>(), Call<vec2<f16>>(1_h, 2_h)));
     auto* cast = Call<vec4<f16>>("x", 3_h, 4_h);
@@ -1535,7 +1535,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_Vec2_F16_F16_Const) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(Call<vec2<f16>>(1_h, 2_h), 3_h, 4_h);
     WrapInFunction(cast);
@@ -1589,7 +1589,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec4_F16_With_Vec2_Vec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.vec2<f16>(), Call<vec2<f16>>(1_h, 2_h)));
     auto* cast = Call<vec4<f16>>("x", "x");
@@ -1641,7 +1641,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec4_F16_With_Vec2_Vec2_Const) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(Call<vec2<f16>>(1_h, 2_h), Call<vec2<f16>>(1_h, 2_h));
     WrapInFunction(cast);
@@ -1690,7 +1690,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16_Vec3) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.vec3<f16>(), Call<vec3<f16>>(2_h, 2_h, 2_h)));
     auto* cast = Call<vec4<f16>>(2_h, "x");
@@ -1738,7 +1738,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16_Vec3_Const) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(2_h, Call<vec3<f16>>(2_h, 2_h, 2_h));
     WrapInFunction(cast);
@@ -1786,7 +1786,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_Vec3_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.vec3<f16>(), Call<vec3<f16>>(2_h, 2_h, 2_h)));
     auto* cast = Call<vec4<f16>>("x", 2_h);
@@ -1834,7 +1834,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_Vec3_F16_Const) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(Call<vec3<f16>>(2_h, 2_h, 2_h), 2_h);
     WrapInFunction(cast);
@@ -1871,7 +1871,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Vec4_F16_With_Vec4) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* value = Call<vec4<f16>>(2_h, 2_h, 2_h, 2_h);
     auto* cast = Call<vec4<f16>>(value);
@@ -1912,7 +1912,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_F16_With_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* ctor = Call<f16>(2_h);
     GlobalConst("g", ty.f16(), ctor);
@@ -1952,7 +1952,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_F16_With_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* ctor = Call<f16>(2_h);
     GlobalVar("g", ty.f16(), core::AddressSpace::kPrivate, ctor);
@@ -1992,7 +1992,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_U32_With_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* ctor = Call<u32>(1.5_h);
     GlobalConst("g", ty.u32(), ctor);
@@ -2032,7 +2032,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_U32_With_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* ctor = Call<u32>(1.5_h);
     GlobalVar("g", ty.u32(), core::AddressSpace::kPrivate, ctor);
@@ -2074,7 +2074,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec2_With_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec2<f16>>(2_h);
     GlobalConst("g", ty.vec2<f16>(), cast);
@@ -2115,7 +2115,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec2_With_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec2<f16>>(2_h);
     auto* g = GlobalVar("g", ty.vec2<f16>(), core::AddressSpace::kPrivate, cast);
@@ -2156,7 +2156,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec2_F16_With_Vec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec2<f16>>(Call<vec2<f16>>(2_h, 2_h));
     GlobalConst("g", ty.vec2<f16>(), cast);
@@ -2201,7 +2201,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec2_F16_With_Vec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec2<f16>>(Call<vec2<f16>>(2_h, 2_h));
     GlobalVar("a", ty.vec2<f16>(), core::AddressSpace::kPrivate, cast);
@@ -2246,7 +2246,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec3_F16_With_Vec3) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec3<f16>>(Call<vec3<f16>>(2_h, 2_h, 2_h));
     GlobalConst("g", ty.vec3<f16>(), cast);
@@ -2291,7 +2291,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec3_F16_With_Vec3) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec3<f16>>(Call<vec3<f16>>(2_h, 2_h, 2_h));
     GlobalVar("a", ty.vec3<f16>(), core::AddressSpace::kPrivate, cast);
@@ -2336,7 +2336,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_F16_With_Vec4) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(Call<vec4<f16>>(2_h, 2_h, 2_h, 2_h));
     GlobalConst("g", ty.vec4<f16>(), cast);
@@ -2381,7 +2381,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_F16_With_Vec4) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(Call<vec4<f16>>(2_h, 2_h, 2_h, 2_h));
     GlobalVar("a", ty.vec4<f16>(), core::AddressSpace::kPrivate, cast);
@@ -2426,7 +2426,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec3_With_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec3<f16>>(2_h);
     GlobalConst("g", ty.vec3<f16>(), cast);
@@ -2467,7 +2467,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec3_With_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec3<f16>>(2_h);
     auto* g = GlobalVar("g", ty.vec3<f16>(), core::AddressSpace::kPrivate, cast);
@@ -2508,7 +2508,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec3_With_F16_Vec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec3<f16>>(2_h, Call<vec2<f16>>(2_h, 2_h));
     GlobalConst("g", ty.vec3<f16>(), cast);
@@ -2549,7 +2549,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec3_With_F16_Vec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec3<f16>>(2_h, Call<vec2<f16>>(2_h, 2_h));
     auto* g = GlobalVar("g", ty.vec3<f16>(), core::AddressSpace::kPrivate, cast);
@@ -2590,7 +2590,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec3_With_Vec2_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec3<f16>>(Call<vec2<f16>>(2_h, 2_h), 2_h);
     GlobalConst("g", ty.vec3<f16>(), cast);
@@ -2631,7 +2631,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec3_With_Vec2_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec3<f16>>(Call<vec2<f16>>(2_h, 2_h), 2_h);
     auto* g = GlobalVar("g", ty.vec3<f16>(), core::AddressSpace::kPrivate, cast);
@@ -2672,7 +2672,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_With_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(2_h);
     GlobalConst("g", ty.vec4<f16>(), cast);
@@ -2713,7 +2713,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_With_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(2_h);
     auto* g = GlobalVar("g", ty.vec4<f16>(), core::AddressSpace::kPrivate, cast);
@@ -2754,7 +2754,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_With_F16_F16_Vec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(2_h, 2_h, Call<vec2<f16>>(2_h, 2_h));
     GlobalConst("g", ty.vec4<f16>(), cast);
@@ -2795,7 +2795,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_With_F16_F16_Vec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(2_h, 2_h, Call<vec2<f16>>(2_h, 2_h));
     auto* g = GlobalVar("g", ty.vec4<f16>(), core::AddressSpace::kPrivate, cast);
@@ -2836,7 +2836,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_With_F16_Vec2_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(2_h, Call<vec2<f16>>(2_h, 2_h), 2_h);
     GlobalConst("g", ty.vec4<f16>(), cast);
@@ -2877,7 +2877,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_With_F16_Vec2_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(2_h, Call<vec2<f16>>(2_h, 2_h), 2_h);
     auto* g = GlobalVar("g", ty.vec4<f16>(), core::AddressSpace::kPrivate, cast);
@@ -2918,7 +2918,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_With_Vec2_F16_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(Call<vec2<f16>>(2_h, 2_h), 2_h, 2_h);
     GlobalConst("g", ty.vec4<f16>(), cast);
@@ -2959,7 +2959,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_With_Vec2_F16_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(Call<vec2<f16>>(2_h, 2_h), 2_h, 2_h);
     auto* g = GlobalVar("g", ty.vec4<f16>(), core::AddressSpace::kPrivate, cast);
@@ -3000,7 +3000,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_F16_With_Vec2_Vec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(Call<vec2<f16>>(2_h, 2_h), Call<vec2<f16>>(2_h, 2_h));
     GlobalConst("g", ty.vec4<f16>(), cast);
@@ -3041,7 +3041,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_F16_With_Vec2_Vec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(Call<vec2<f16>>(2_h, 2_h), Call<vec2<f16>>(2_h, 2_h));
     auto* g = GlobalVar("g", ty.vec4<f16>(), core::AddressSpace::kPrivate, cast);
@@ -3098,7 +3098,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_With_F16_Vec3) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(2_h, Call<vec3<f16>>(2_h, 2_h, 2_h));
     auto* g = GlobalVar("g", ty.vec4<f16>(), core::AddressSpace::kPrivate, cast);
@@ -3139,7 +3139,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_With_Vec3_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(Call<vec3<f16>>(2_h, 2_h, 2_h), 2_h);
     GlobalConst("g", ty.vec4<f16>(), cast);
@@ -3180,7 +3180,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_With_Vec3_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec4<f16>>(Call<vec3<f16>>(2_h, 2_h, 2_h), 2_h);
     auto* g = GlobalVar("g", ty.vec4<f16>(), core::AddressSpace::kPrivate, cast);
@@ -3216,7 +3216,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Mat2x2_F16_With_Vec2_Vec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<mat2x2<f16>>(Call<vec2<f16>>(2_h, 2_h), Call<vec2<f16>>(2_h, 2_h));
     WrapInFunction(cast);
@@ -3255,7 +3255,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Mat3x2_F16_With_Vec2_Vec2_Vec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<mat3x2<f16>>(Call<vec2<f16>>(2_h, 2_h), Call<vec2<f16>>(2_h, 2_h),
                                    Call<vec2<f16>>(2_h, 2_h));
@@ -3295,7 +3295,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Mat4x2_F16_With_Vec2_Vec2_Vec2_Vec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<mat4x2<f16>>(Call<vec2<f16>>(2_h, 2_h), Call<vec2<f16>>(2_h, 2_h),
                                    Call<vec2<f16>>(2_h, 2_h), Call<vec2<f16>>(2_h, 2_h));
@@ -3334,7 +3334,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Mat2x3_F16_With_Vec3_Vec3) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<mat2x3<f16>>(Call<vec3<f16>>(2_h, 2_h, 2_h), Call<vec3<f16>>(2_h, 2_h, 2_h));
     WrapInFunction(cast);
@@ -3373,7 +3373,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Mat3x3_F16_With_Vec3_Vec3_Vec3) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<mat3x3<f16>>(Call<vec3<f16>>(2_h, 2_h, 2_h), Call<vec3<f16>>(2_h, 2_h, 2_h),
                                    Call<vec3<f16>>(2_h, 2_h, 2_h));
@@ -3413,7 +3413,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Mat4x3_F16_With_Vec3_Vec3_Vec3_Vec3) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<mat4x3<f16>>(Call<vec3<f16>>(2_h, 2_h, 2_h), Call<vec3<f16>>(2_h, 2_h, 2_h),
                                    Call<vec3<f16>>(2_h, 2_h, 2_h), Call<vec3<f16>>(2_h, 2_h, 2_h));
@@ -3453,7 +3453,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Mat2x4_F16_With_Vec4_Vec4) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast =
         Call<mat2x4<f16>>(Call<vec4<f16>>(2_h, 2_h, 2_h, 2_h), Call<vec4<f16>>(2_h, 2_h, 2_h, 2_h));
@@ -3494,7 +3494,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Mat3x4_F16_With_Vec4_Vec4_Vec4) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast =
         Call<mat3x4<f16>>(Call<vec4<f16>>(2_h, 2_h, 2_h, 2_h), Call<vec4<f16>>(2_h, 2_h, 2_h, 2_h),
@@ -3536,7 +3536,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Mat4x4_F16_With_Vec4_Vec4_Vec4_Vec4) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast =
         Call<mat4x4<f16>>(Call<vec4<f16>>(2_h, 2_h, 2_h, 2_h), Call<vec4<f16>>(2_h, 2_h, 2_h, 2_h),
@@ -3576,7 +3576,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Array_5_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<array<f16, 5>>(2_h, 2_h, 2_h, 2_h, 2_h);
     WrapInFunction(cast);
@@ -3618,7 +3618,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Array_2_Vec3_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* first = Call<vec3<f16>>(1_h, 2_h, 3_h);
     auto* second = Call<vec3<f16>>(1_h, 2_h, 3_h);
@@ -3747,7 +3747,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_ZeroInit_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* t = Call<f16>();
 
@@ -3854,7 +3854,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_ZeroInit_Matrix_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* t = Call<mat4x2<f16>>();
 
@@ -3961,7 +3961,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Convert_F16_To_I32) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.f16(), Expr(2.4_h)));
     auto* cast = Call<i32>("x");
@@ -4035,7 +4035,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Convert_F16_To_U32) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.f16(), Expr(2.4_h)));
     auto* cast = Call<u32>("x");
@@ -4109,7 +4109,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Convert_F16_To_F32) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.f16(), Expr(2_h)));
     auto* cast = Call<f32>("x");
@@ -4135,7 +4135,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Convert_I32_To_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.i32(), Expr(2_i)));
     auto* cast = Call<f16>("x");
@@ -4161,7 +4161,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Convert_U32_To_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.u32(), Expr(2_u)));
     auto* cast = Call<f16>("x");
@@ -4187,7 +4187,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Convert_F32_To_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = Decl(Var("x", ty.f32(), Expr(2_f)));
     auto* cast = Call<f16>("x");
@@ -4265,7 +4265,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Convert_Vectors_F16_to_I32) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = GlobalVar("i", ty.vec3<f16>(), core::AddressSpace::kPrivate);
 
@@ -4345,7 +4345,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Convert_Vectors_F16_to_U32) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = GlobalVar("i", ty.vec3<f16>(), core::AddressSpace::kPrivate);
 
@@ -4425,7 +4425,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Convert_Vectors_F16_to_F32) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = GlobalVar("i", ty.vec3<f16>(), core::AddressSpace::kPrivate);
 
@@ -4453,7 +4453,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Convert_Vectors_I32_to_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = GlobalVar("i", ty.vec3<i32>(), core::AddressSpace::kPrivate);
 
@@ -4481,7 +4481,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Convert_Vectors_U32_to_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = GlobalVar("i", ty.vec3<u32>(), core::AddressSpace::kPrivate);
 
@@ -4509,7 +4509,7 @@
 }
 
 TEST_F(SpvBuilderConstructorTest, Type_Convert_Vectors_F32_to_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* var = GlobalVar("i", ty.vec3<f32>(), core::AddressSpace::kPrivate);
 
diff --git a/src/tint/lang/spirv/writer/ast_printer/global_variable_test.cc b/src/tint/lang/spirv/writer/ast_printer/global_variable_test.cc
index d5d028a..97ea5db 100644
--- a/src/tint/lang/spirv/writer/ast_printer/global_variable_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/global_variable_test.cc
@@ -120,7 +120,7 @@
 TEST_F(SpirvASTPrinterTest, GlobalConst_Vec_F16_Initializer) {
     // const c = vec3<f16>(1h, 2h, 3h);
     // var v = c;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* c = GlobalConst("c", Call<vec3<f16>>(1_h, 2_h, 3_h));
     GlobalVar("v", core::AddressSpace::kPrivate, Expr(c));
diff --git a/src/tint/lang/spirv/writer/ast_printer/literal_test.cc b/src/tint/lang/spirv/writer/ast_printer/literal_test.cc
index 4376ce8..33dbe0f 100644
--- a/src/tint/lang/spirv/writer/ast_printer/literal_test.cc
+++ b/src/tint/lang/spirv/writer/ast_printer/literal_test.cc
@@ -164,7 +164,7 @@
 }
 
 TEST_F(SpirvASTPrinterTest, Literal_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* i = create<ast::FloatLiteralExpression>(23.245, ast::FloatLiteralExpression::Suffix::kH);
     WrapInFunction(i);
@@ -181,7 +181,7 @@
 }
 
 TEST_F(SpirvASTPrinterTest, Literal_F16_Dedup) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* i1 = create<ast::FloatLiteralExpression>(23.245, ast::FloatLiteralExpression::Suffix::kH);
     auto* i2 = create<ast::FloatLiteralExpression>(23.245, ast::FloatLiteralExpression::Suffix::kH);
diff --git a/src/tint/lang/spirv/writer/ast_raise/BUILD.bazel b/src/tint/lang/spirv/writer/ast_raise/BUILD.bazel
index 52b5e8b..4712380 100644
--- a/src/tint/lang/spirv/writer/ast_raise/BUILD.bazel
+++ b/src/tint/lang/spirv/writer/ast_raise/BUILD.bazel
@@ -46,6 +46,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/program",
@@ -83,6 +84,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/ast/transform:test",
diff --git a/src/tint/lang/spirv/writer/ast_raise/BUILD.cmake b/src/tint/lang/spirv/writer/ast_raise/BUILD.cmake
index 3ae2021..c20fa20 100644
--- a/src/tint/lang/spirv/writer/ast_raise/BUILD.cmake
+++ b/src/tint/lang/spirv/writer/ast_raise/BUILD.cmake
@@ -47,6 +47,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_program
@@ -87,6 +88,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_ast_transform_test
diff --git a/src/tint/lang/spirv/writer/ast_raise/BUILD.gn b/src/tint/lang/spirv/writer/ast_raise/BUILD.gn
index fbcc1cc..4c4d9f3 100644
--- a/src/tint/lang/spirv/writer/ast_raise/BUILD.gn
+++ b/src/tint/lang/spirv/writer/ast_raise/BUILD.gn
@@ -49,6 +49,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/ast/transform",
       "${tint_src_dir}/lang/wgsl/program",
@@ -87,6 +88,7 @@
         "${tint_src_dir}/lang/core",
         "${tint_src_dir}/lang/core/constant",
         "${tint_src_dir}/lang/core/type",
+        "${tint_src_dir}/lang/wgsl",
         "${tint_src_dir}/lang/wgsl/ast",
         "${tint_src_dir}/lang/wgsl/ast/transform",
         "${tint_src_dir}/lang/wgsl/ast/transform:unittests",
diff --git a/src/tint/lang/spirv/writer/ast_raise/clamp_frag_depth.cc b/src/tint/lang/spirv/writer/ast_raise/clamp_frag_depth.cc
index af4a0c5..e49c951 100644
--- a/src/tint/lang/spirv/writer/ast_raise/clamp_frag_depth.cc
+++ b/src/tint/lang/spirv/writer/ast_raise/clamp_frag_depth.cc
@@ -81,7 +81,7 @@
         //   fn clamp_frag_depth(v : f32) -> f32 {
         //       return clamp(v, frag_depth_clamp_args.min, frag_depth_clamp_args.max);
         //   }
-        b.Enable(core::Extension::kChromiumExperimentalPushConstant);
+        b.Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
 
         b.Structure(b.Symbols().New("FragDepthClampArgs"),
                     Vector{b.Member("min", b.ty.f32()), b.Member("max", b.ty.f32())});
diff --git a/src/tint/lang/spirv/writer/printer/BUILD.bazel b/src/tint/lang/spirv/writer/printer/BUILD.bazel
index 27a6c34..672fdad 100644
--- a/src/tint/lang/spirv/writer/printer/BUILD.bazel
+++ b/src/tint/lang/spirv/writer/printer/BUILD.bazel
@@ -43,6 +43,7 @@
     "//src/tint/lang/spirv/intrinsic/data",
     "//src/tint/lang/spirv/ir",
     "//src/tint/lang/spirv/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/sem",
diff --git a/src/tint/lang/spirv/writer/printer/BUILD.cmake b/src/tint/lang/spirv/writer/printer/BUILD.cmake
index 18d6d86..e296599 100644
--- a/src/tint/lang/spirv/writer/printer/BUILD.cmake
+++ b/src/tint/lang/spirv/writer/printer/BUILD.cmake
@@ -44,6 +44,7 @@
   tint_lang_spirv_intrinsic_data
   tint_lang_spirv_ir
   tint_lang_spirv_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_sem
diff --git a/src/tint/lang/spirv/writer/printer/BUILD.gn b/src/tint/lang/spirv/writer/printer/BUILD.gn
index 07c5fcf..fd1dd71 100644
--- a/src/tint/lang/spirv/writer/printer/BUILD.gn
+++ b/src/tint/lang/spirv/writer/printer/BUILD.gn
@@ -42,6 +42,7 @@
       "${tint_src_dir}/lang/spirv/intrinsic/data",
       "${tint_src_dir}/lang/spirv/ir",
       "${tint_src_dir}/lang/spirv/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/program",
       "${tint_src_dir}/lang/wgsl/sem",
diff --git a/src/tint/lang/wgsl/BUILD.bazel b/src/tint/lang/wgsl/BUILD.bazel
index 44d29ff..d235e5b 100644
--- a/src/tint/lang/wgsl/BUILD.bazel
+++ b/src/tint/lang/wgsl/BUILD.bazel
@@ -24,9 +24,38 @@
 load("//src/tint:flags.bzl", "COPTS")
 load("@bazel_skylib//lib:selects.bzl", "selects")
 cc_library(
+  name = "wgsl",
+  srcs = [
+    "diagnostic_rule.cc",
+    "diagnostic_severity.cc",
+    "extension.cc",
+  ],
+  hdrs = [
+    "diagnostic_rule.h",
+    "diagnostic_severity.h",
+    "extension.h",
+  ],
+  deps = [
+    "//src/tint/utils/containers",
+    "//src/tint/utils/diagnostic",
+    "//src/tint/utils/ice",
+    "//src/tint/utils/macros",
+    "//src/tint/utils/math",
+    "//src/tint/utils/memory",
+    "//src/tint/utils/rtti",
+    "//src/tint/utils/text",
+    "//src/tint/utils/traits",
+  ],
+  copts = COPTS,
+  visibility = ["//visibility:public"],
+)
+cc_library(
   name = "test",
   alwayslink = True,
   srcs = [
+    "diagnostic_rule_test.cc",
+    "diagnostic_severity_test.cc",
+    "extension_test.cc",
     "wgsl_test.cc",
   ] + select({
     ":tint_build_wgsl_reader_and_tint_build_wgsl_writer": [
@@ -40,6 +69,7 @@
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/ir",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/helpers:test",
     "//src/tint/lang/wgsl/program",
@@ -67,6 +97,28 @@
   copts = COPTS,
   visibility = ["//visibility:public"],
 )
+cc_library(
+  name = "bench",
+  srcs = [
+    "diagnostic_rule_bench.cc",
+    "diagnostic_severity_bench.cc",
+    "extension_bench.cc",
+  ],
+  deps = [
+    "//src/tint/lang/wgsl",
+    "//src/tint/utils/containers",
+    "//src/tint/utils/diagnostic",
+    "//src/tint/utils/ice",
+    "//src/tint/utils/macros",
+    "//src/tint/utils/math",
+    "//src/tint/utils/memory",
+    "//src/tint/utils/rtti",
+    "//src/tint/utils/text",
+    "//src/tint/utils/traits",
+  ],
+  copts = COPTS,
+  visibility = ["//visibility:public"],
+)
 
 alias(
   name = "tint_build_wgsl_reader",
diff --git a/src/tint/lang/wgsl/BUILD.cmake b/src/tint/lang/wgsl/BUILD.cmake
index 64bdc34..c4ee2f3 100644
--- a/src/tint/lang/wgsl/BUILD.cmake
+++ b/src/tint/lang/wgsl/BUILD.cmake
@@ -31,10 +31,38 @@
 include(lang/wgsl/writer/BUILD.cmake)
 
 ################################################################################
+# Target:    tint_lang_wgsl
+# Kind:      lib
+################################################################################
+tint_add_target(tint_lang_wgsl lib
+  lang/wgsl/diagnostic_rule.cc
+  lang/wgsl/diagnostic_rule.h
+  lang/wgsl/diagnostic_severity.cc
+  lang/wgsl/diagnostic_severity.h
+  lang/wgsl/extension.cc
+  lang/wgsl/extension.h
+)
+
+tint_target_add_dependencies(tint_lang_wgsl lib
+  tint_utils_containers
+  tint_utils_diagnostic
+  tint_utils_ice
+  tint_utils_macros
+  tint_utils_math
+  tint_utils_memory
+  tint_utils_rtti
+  tint_utils_text
+  tint_utils_traits
+)
+
+################################################################################
 # Target:    tint_lang_wgsl_test
 # Kind:      test
 ################################################################################
 tint_add_target(tint_lang_wgsl_test test
+  lang/wgsl/diagnostic_rule_test.cc
+  lang/wgsl/diagnostic_severity_test.cc
+  lang/wgsl/extension_test.cc
   lang/wgsl/wgsl_test.cc
 )
 
@@ -44,6 +72,7 @@
   tint_lang_core_constant
   tint_lang_core_ir
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_helpers_test
   tint_lang_wgsl_program
@@ -77,3 +106,26 @@
     "lang/wgsl/ir_roundtrip_test.cc"
   )
 endif(TINT_BUILD_WGSL_READER AND TINT_BUILD_WGSL_WRITER)
+
+################################################################################
+# Target:    tint_lang_wgsl_bench
+# Kind:      bench
+################################################################################
+tint_add_target(tint_lang_wgsl_bench bench
+  lang/wgsl/diagnostic_rule_bench.cc
+  lang/wgsl/diagnostic_severity_bench.cc
+  lang/wgsl/extension_bench.cc
+)
+
+tint_target_add_dependencies(tint_lang_wgsl_bench bench
+  tint_lang_wgsl
+  tint_utils_containers
+  tint_utils_diagnostic
+  tint_utils_ice
+  tint_utils_macros
+  tint_utils_math
+  tint_utils_memory
+  tint_utils_rtti
+  tint_utils_text
+  tint_utils_traits
+)
diff --git a/src/tint/lang/wgsl/BUILD.gn b/src/tint/lang/wgsl/BUILD.gn
index 67a6ed6..dafa9c3 100644
--- a/src/tint/lang/wgsl/BUILD.gn
+++ b/src/tint/lang/wgsl/BUILD.gn
@@ -28,10 +28,37 @@
 if (tint_build_unittests) {
   import("//testing/test.gni")
 }
+
+libtint_source_set("wgsl") {
+  sources = [
+    "diagnostic_rule.cc",
+    "diagnostic_rule.h",
+    "diagnostic_severity.cc",
+    "diagnostic_severity.h",
+    "extension.cc",
+    "extension.h",
+  ]
+  deps = [
+    "${tint_src_dir}/utils/containers",
+    "${tint_src_dir}/utils/diagnostic",
+    "${tint_src_dir}/utils/ice",
+    "${tint_src_dir}/utils/macros",
+    "${tint_src_dir}/utils/math",
+    "${tint_src_dir}/utils/memory",
+    "${tint_src_dir}/utils/rtti",
+    "${tint_src_dir}/utils/text",
+    "${tint_src_dir}/utils/traits",
+  ]
+}
 if (tint_build_unittests) {
   tint_unittests_source_set("unittests") {
     testonly = true
-    sources = [ "wgsl_test.cc" ]
+    sources = [
+      "diagnostic_rule_test.cc",
+      "diagnostic_severity_test.cc",
+      "extension_test.cc",
+      "wgsl_test.cc",
+    ]
     deps = [
       "${tint_src_dir}:gmock_and_gtest",
       "${tint_src_dir}/api/common",
@@ -39,6 +66,7 @@
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/ir",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/helpers:unittests",
       "${tint_src_dir}/lang/wgsl/program",
diff --git a/src/tint/lang/wgsl/ast/BUILD.bazel b/src/tint/lang/wgsl/ast/BUILD.bazel
index ebc4a92..1674ad6 100644
--- a/src/tint/lang/wgsl/ast/BUILD.bazel
+++ b/src/tint/lang/wgsl/ast/BUILD.bazel
@@ -190,6 +190,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/utils/containers",
     "//src/tint/utils/diagnostic",
     "//src/tint/utils/ice",
@@ -280,6 +281,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/program",
diff --git a/src/tint/lang/wgsl/ast/BUILD.cmake b/src/tint/lang/wgsl/ast/BUILD.cmake
index 3a06809..9715482 100644
--- a/src/tint/lang/wgsl/ast/BUILD.cmake
+++ b/src/tint/lang/wgsl/ast/BUILD.cmake
@@ -191,6 +191,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_utils_containers
   tint_utils_diagnostic
   tint_utils_ice
@@ -281,6 +282,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_program
diff --git a/src/tint/lang/wgsl/ast/BUILD.gn b/src/tint/lang/wgsl/ast/BUILD.gn
index d74d107..3732774 100644
--- a/src/tint/lang/wgsl/ast/BUILD.gn
+++ b/src/tint/lang/wgsl/ast/BUILD.gn
@@ -193,6 +193,7 @@
     "${tint_src_dir}/lang/core",
     "${tint_src_dir}/lang/core/constant",
     "${tint_src_dir}/lang/core/type",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/utils/containers",
     "${tint_src_dir}/utils/diagnostic",
     "${tint_src_dir}/utils/ice",
@@ -282,6 +283,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/ast/transform",
       "${tint_src_dir}/lang/wgsl/program",
diff --git a/src/tint/lang/wgsl/ast/block_statement_test.cc b/src/tint/lang/wgsl/ast/block_statement_test.cc
index c9f0289..f4de519 100644
--- a/src/tint/lang/wgsl/ast/block_statement_test.cc
+++ b/src/tint/lang/wgsl/ast/block_statement_test.cc
@@ -45,8 +45,8 @@
     auto* d = create<DiscardStatement>();
     auto* ptr = d;
 
-    auto* attr1 = DiagnosticAttribute(core::DiagnosticSeverity::kOff, "foo");
-    auto* attr2 = DiagnosticAttribute(core::DiagnosticSeverity::kOff, "bar");
+    auto* attr1 = DiagnosticAttribute(wgsl::DiagnosticSeverity::kOff, "foo");
+    auto* attr2 = DiagnosticAttribute(wgsl::DiagnosticSeverity::kOff, "bar");
     auto* b = create<BlockStatement>(tint::Vector{d}, tint::Vector{attr1, attr2});
 
     ASSERT_EQ(b->statements.Length(), 1u);
diff --git a/src/tint/lang/wgsl/ast/builder.h b/src/tint/lang/wgsl/ast/builder.h
index e575633..72f9052 100644
--- a/src/tint/lang/wgsl/ast/builder.h
+++ b/src/tint/lang/wgsl/ast/builder.h
@@ -22,7 +22,6 @@
 #include "src/tint/api/common/override_id.h"
 
 #include "src/tint/lang/core/constant/manager.h"
-#include "src/tint/lang/core/extension.h"
 #include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/interpolation_sampling.h"
 #include "src/tint/lang/core/interpolation_type.h"
@@ -100,6 +99,7 @@
 #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/extension.h"
 #include "src/tint/utils/id/generation_id.h"
 #include "src/tint/utils/text/string.h"
 
@@ -1586,7 +1586,7 @@
     /// Adds the extension to the list of enable directives at the top of the module.
     /// @param extension the extension to enable
     /// @return an `ast::Enable` enabling the given extension.
-    const ast::Enable* Enable(core::Extension extension) {
+    const ast::Enable* Enable(wgsl::Extension extension) {
         auto* ext = create<ast::Extension>(extension);
         auto* enable = create<ast::Enable>(Vector{ext});
         AST().AddEnable(enable);
@@ -1597,7 +1597,7 @@
     /// @param source the enable source
     /// @param extension the extension to enable
     /// @return an `ast::Enable` enabling the given extension.
-    const ast::Enable* Enable(const Source& source, core::Extension extension) {
+    const ast::Enable* Enable(const Source& source, wgsl::Extension extension) {
         auto* ext = create<ast::Extension>(source, extension);
         auto* enable = create<ast::Enable>(source, Vector{ext});
         AST().AddEnable(enable);
@@ -3350,7 +3350,7 @@
     /// @returns the diagnostic attribute pointer
     template <typename... RULE_ARGS>
     const ast::DiagnosticAttribute* DiagnosticAttribute(const Source& source,
-                                                        core::DiagnosticSeverity severity,
+                                                        wgsl::DiagnosticSeverity severity,
                                                         RULE_ARGS&&... rule_args) {
         return create<ast::DiagnosticAttribute>(
             source, ast::DiagnosticControl(
@@ -3362,7 +3362,7 @@
     /// @param rule_args the arguments used to construct the rule name
     /// @returns the diagnostic attribute pointer
     template <typename... RULE_ARGS>
-    const ast::DiagnosticAttribute* DiagnosticAttribute(core::DiagnosticSeverity severity,
+    const ast::DiagnosticAttribute* DiagnosticAttribute(wgsl::DiagnosticSeverity severity,
                                                         RULE_ARGS&&... rule_args) {
         return create<ast::DiagnosticAttribute>(
             source_, ast::DiagnosticControl(
@@ -3376,7 +3376,7 @@
     /// @returns the diagnostic directive pointer
     template <typename... RULE_ARGS>
     const ast::DiagnosticDirective* DiagnosticDirective(const Source& source,
-                                                        core::DiagnosticSeverity severity,
+                                                        wgsl::DiagnosticSeverity severity,
                                                         RULE_ARGS&&... rule_args) {
         auto* rule = DiagnosticRuleName(std::forward<RULE_ARGS>(rule_args)...);
         auto* directive =
@@ -3390,7 +3390,7 @@
     /// @param rule_args the arguments used to construct the rule name
     /// @returns the diagnostic directive pointer
     template <typename... RULE_ARGS>
-    const ast::DiagnosticDirective* DiagnosticDirective(core::DiagnosticSeverity severity,
+    const ast::DiagnosticDirective* DiagnosticDirective(wgsl::DiagnosticSeverity severity,
                                                         RULE_ARGS&&... rule_args) {
         auto* rule = DiagnosticRuleName(std::forward<RULE_ARGS>(rule_args)...);
         auto* directive =
diff --git a/src/tint/lang/wgsl/ast/diagnostic_attribute_test.cc b/src/tint/lang/wgsl/ast/diagnostic_attribute_test.cc
index 3d6744f..c9dbe56 100644
--- a/src/tint/lang/wgsl/ast/diagnostic_attribute_test.cc
+++ b/src/tint/lang/wgsl/ast/diagnostic_attribute_test.cc
@@ -21,17 +21,17 @@
 using DiagnosticAttributeTest = TestHelper;
 
 TEST_F(DiagnosticAttributeTest, Name) {
-    auto* d = DiagnosticAttribute(core::DiagnosticSeverity::kWarning, "foo");
+    auto* d = DiagnosticAttribute(wgsl::DiagnosticSeverity::kWarning, "foo");
     EXPECT_EQ(d->Name(), "diagnostic");
-    EXPECT_EQ(d->control.severity, core::DiagnosticSeverity::kWarning);
+    EXPECT_EQ(d->control.severity, wgsl::DiagnosticSeverity::kWarning);
     EXPECT_EQ(d->control.rule_name->category, nullptr);
     CheckIdentifier(d->control.rule_name->name, "foo");
 }
 
 TEST_F(DiagnosticAttributeTest, CategoryAndName) {
-    auto* d = DiagnosticAttribute(core::DiagnosticSeverity::kWarning, "foo", "bar");
+    auto* d = DiagnosticAttribute(wgsl::DiagnosticSeverity::kWarning, "foo", "bar");
     EXPECT_EQ(d->Name(), "diagnostic");
-    EXPECT_EQ(d->control.severity, core::DiagnosticSeverity::kWarning);
+    EXPECT_EQ(d->control.severity, wgsl::DiagnosticSeverity::kWarning);
     CheckIdentifier(d->control.rule_name->category, "foo");
     CheckIdentifier(d->control.rule_name->name, "bar");
 }
diff --git a/src/tint/lang/wgsl/ast/diagnostic_control.cc b/src/tint/lang/wgsl/ast/diagnostic_control.cc
index 4cec214..74935c7 100644
--- a/src/tint/lang/wgsl/ast/diagnostic_control.cc
+++ b/src/tint/lang/wgsl/ast/diagnostic_control.cc
@@ -16,15 +16,15 @@
 
 #include <string>
 
-#include "src/tint/lang/core/diagnostic_severity.h"
 #include "src/tint/lang/wgsl/ast/identifier.h"
 #include "src/tint/lang/wgsl/ast/templated_identifier.h"
+#include "src/tint/lang/wgsl/diagnostic_severity.h"
 
 namespace tint::ast {
 
 DiagnosticControl::DiagnosticControl() = default;
 
-DiagnosticControl::DiagnosticControl(core::DiagnosticSeverity sev, const DiagnosticRuleName* rule)
+DiagnosticControl::DiagnosticControl(wgsl::DiagnosticSeverity sev, const DiagnosticRuleName* rule)
     : severity(sev), rule_name(rule) {
     TINT_ASSERT(rule != nullptr);
 }
diff --git a/src/tint/lang/wgsl/ast/diagnostic_control.h b/src/tint/lang/wgsl/ast/diagnostic_control.h
index cf5cefd..c0e492b 100644
--- a/src/tint/lang/wgsl/ast/diagnostic_control.h
+++ b/src/tint/lang/wgsl/ast/diagnostic_control.h
@@ -18,7 +18,7 @@
 #include <string>
 #include <unordered_map>
 
-#include "src/tint/lang/core/diagnostic_severity.h"
+#include "src/tint/lang/wgsl/diagnostic_severity.h"
 #include "src/tint/utils/diagnostic/diagnostic.h"
 
 // Forward declarations
@@ -37,13 +37,13 @@
     /// Constructor
     /// @param sev the diagnostic severity
     /// @param rule the diagnostic rule name
-    DiagnosticControl(core::DiagnosticSeverity sev, const DiagnosticRuleName* rule);
+    DiagnosticControl(wgsl::DiagnosticSeverity sev, const DiagnosticRuleName* rule);
 
     /// Move constructor
     DiagnosticControl(DiagnosticControl&&);
 
     /// The diagnostic severity control.
-    core::DiagnosticSeverity severity = core::DiagnosticSeverity::kUndefined;
+    wgsl::DiagnosticSeverity severity = wgsl::DiagnosticSeverity::kUndefined;
 
     /// The diagnostic rule name.
     const DiagnosticRuleName* rule_name = nullptr;
diff --git a/src/tint/lang/wgsl/ast/diagnostic_control_test.cc b/src/tint/lang/wgsl/ast/diagnostic_control_test.cc
index 347a96d..b7738e6 100644
--- a/src/tint/lang/wgsl/ast/diagnostic_control_test.cc
+++ b/src/tint/lang/wgsl/ast/diagnostic_control_test.cc
@@ -15,9 +15,9 @@
 #include <string>
 
 #include "gtest/gtest-spi.h"
-#include "src/tint/lang/core/diagnostic_severity.h"
 #include "src/tint/lang/wgsl/ast/diagnostic_control.h"
 #include "src/tint/lang/wgsl/ast/helper_test.h"
+#include "src/tint/lang/wgsl/diagnostic_severity.h"
 
 namespace tint::ast {
 namespace {
@@ -28,7 +28,7 @@
     EXPECT_FATAL_FAILURE(
         {
             ProgramBuilder b;
-            DiagnosticControl control(core::DiagnosticSeverity::kWarning, nullptr);
+            DiagnosticControl control(wgsl::DiagnosticSeverity::kWarning, nullptr);
         },
         "internal compiler error");
 }
diff --git a/src/tint/lang/wgsl/ast/diagnostic_directive_test.cc b/src/tint/lang/wgsl/ast/diagnostic_directive_test.cc
index ceefeed..479bade 100644
--- a/src/tint/lang/wgsl/ast/diagnostic_directive_test.cc
+++ b/src/tint/lang/wgsl/ast/diagnostic_directive_test.cc
@@ -23,24 +23,24 @@
 
 TEST_F(DiagnosticDirectiveTest, Name) {
     auto* d =
-        DiagnosticDirective(Source{{{10, 5}, {10, 15}}}, core::DiagnosticSeverity::kWarning, "foo");
+        DiagnosticDirective(Source{{{10, 5}, {10, 15}}}, wgsl::DiagnosticSeverity::kWarning, "foo");
     EXPECT_EQ(d->source.range.begin.line, 10u);
     EXPECT_EQ(d->source.range.begin.column, 5u);
     EXPECT_EQ(d->source.range.end.line, 10u);
     EXPECT_EQ(d->source.range.end.column, 15u);
-    EXPECT_EQ(d->control.severity, core::DiagnosticSeverity::kWarning);
+    EXPECT_EQ(d->control.severity, wgsl::DiagnosticSeverity::kWarning);
     EXPECT_EQ(d->control.rule_name->category, nullptr);
     CheckIdentifier(d->control.rule_name->name, "foo");
 }
 
 TEST_F(DiagnosticDirectiveTest, CategoryAndName) {
-    auto* d = DiagnosticDirective(Source{{{10, 5}, {10, 15}}}, core::DiagnosticSeverity::kWarning,
+    auto* d = DiagnosticDirective(Source{{{10, 5}, {10, 15}}}, wgsl::DiagnosticSeverity::kWarning,
                                   "foo", "bar");
     EXPECT_EQ(d->source.range.begin.line, 10u);
     EXPECT_EQ(d->source.range.begin.column, 5u);
     EXPECT_EQ(d->source.range.end.line, 10u);
     EXPECT_EQ(d->source.range.end.column, 15u);
-    EXPECT_EQ(d->control.severity, core::DiagnosticSeverity::kWarning);
+    EXPECT_EQ(d->control.severity, wgsl::DiagnosticSeverity::kWarning);
     CheckIdentifier(d->control.rule_name->category, "foo");
     CheckIdentifier(d->control.rule_name->name, "bar");
 }
diff --git a/src/tint/lang/wgsl/ast/enable.cc b/src/tint/lang/wgsl/ast/enable.cc
index d63aaa5..688e750 100644
--- a/src/tint/lang/wgsl/ast/enable.cc
+++ b/src/tint/lang/wgsl/ast/enable.cc
@@ -26,7 +26,7 @@
 
 Enable::~Enable() = default;
 
-bool Enable::HasExtension(core::Extension ext) const {
+bool Enable::HasExtension(wgsl::Extension ext) const {
     for (auto* e : extensions) {
         if (e->name == ext) {
             return true;
diff --git a/src/tint/lang/wgsl/ast/enable.h b/src/tint/lang/wgsl/ast/enable.h
index 35afa5b..dc1cc0c 100644
--- a/src/tint/lang/wgsl/ast/enable.h
+++ b/src/tint/lang/wgsl/ast/enable.h
@@ -42,7 +42,7 @@
 
     /// @param ext the extension to search for
     /// @returns true if this Enable lists the given extension
-    bool HasExtension(core::Extension ext) const;
+    bool HasExtension(wgsl::Extension ext) const;
 
     /// Clones this node and all transitive child nodes using the `CloneContext` `ctx`.
     /// @param ctx the clone context
diff --git a/src/tint/lang/wgsl/ast/enable_test.cc b/src/tint/lang/wgsl/ast/enable_test.cc
index 667cc05..5f52c20 100644
--- a/src/tint/lang/wgsl/ast/enable_test.cc
+++ b/src/tint/lang/wgsl/ast/enable_test.cc
@@ -22,19 +22,19 @@
 using EnableTest = TestHelper;
 
 TEST_F(EnableTest, Creation) {
-    auto* ext = Enable(Source{{{20, 2}, {20, 5}}}, core::Extension::kF16);
+    auto* ext = Enable(Source{{{20, 2}, {20, 5}}}, wgsl::Extension::kF16);
     EXPECT_EQ(ext->source.range.begin.line, 20u);
     EXPECT_EQ(ext->source.range.begin.column, 2u);
     EXPECT_EQ(ext->source.range.end.line, 20u);
     EXPECT_EQ(ext->source.range.end.column, 5u);
     ASSERT_EQ(ext->extensions.Length(), 1u);
-    EXPECT_EQ(ext->extensions[0]->name, core::Extension::kF16);
+    EXPECT_EQ(ext->extensions[0]->name, wgsl::Extension::kF16);
 }
 
 TEST_F(EnableTest, HasExtension) {
-    auto* ext = Enable(Source{{{20, 2}, {20, 5}}}, core::Extension::kF16);
-    EXPECT_TRUE(ext->HasExtension(core::Extension::kF16));
-    EXPECT_FALSE(ext->HasExtension(core::Extension::kChromiumDisableUniformityAnalysis));
+    auto* ext = Enable(Source{{{20, 2}, {20, 5}}}, wgsl::Extension::kF16);
+    EXPECT_TRUE(ext->HasExtension(wgsl::Extension::kF16));
+    EXPECT_FALSE(ext->HasExtension(wgsl::Extension::kChromiumDisableUniformityAnalysis));
 }
 
 }  // namespace
diff --git a/src/tint/lang/wgsl/ast/extension.cc b/src/tint/lang/wgsl/ast/extension.cc
index 3413c9f..07251fb 100644
--- a/src/tint/lang/wgsl/ast/extension.cc
+++ b/src/tint/lang/wgsl/ast/extension.cc
@@ -18,13 +18,13 @@
 #include "src/tint/lang/wgsl/ast/clone_context.h"
 
 //! @cond Doxygen_Suppress
-// Doxygen gets confused with tint::ast::Extension and tint::core::Extension
+// Doxygen gets confused with tint::ast::Extension and tint::wgsl::Extension
 
 TINT_INSTANTIATE_TYPEINFO(tint::ast::Extension);
 
 namespace tint::ast {
 
-Extension::Extension(GenerationID pid, NodeID nid, const Source& src, core::Extension ext)
+Extension::Extension(GenerationID pid, NodeID nid, const Source& src, wgsl::Extension ext)
     : Base(pid, nid, src), name(ext) {}
 
 Extension::~Extension() = default;
diff --git a/src/tint/lang/wgsl/ast/extension.h b/src/tint/lang/wgsl/ast/extension.h
index 85e14bc..fa4566b 100644
--- a/src/tint/lang/wgsl/ast/extension.h
+++ b/src/tint/lang/wgsl/ast/extension.h
@@ -15,8 +15,8 @@
 #ifndef SRC_TINT_LANG_WGSL_AST_EXTENSION_H_
 #define SRC_TINT_LANG_WGSL_AST_EXTENSION_H_
 
-#include "src/tint/lang/core/extension.h"
 #include "src/tint/lang/wgsl/ast/node.h"
+#include "src/tint/lang/wgsl/extension.h"
 
 namespace tint::ast {
 
@@ -31,7 +31,7 @@
     /// @param nid the unique node identifier
     /// @param src the source of this node
     /// @param ext the extension
-    Extension(GenerationID pid, NodeID nid, const Source& src, core::Extension ext);
+    Extension(GenerationID pid, NodeID nid, const Source& src, wgsl::Extension ext);
 
     /// Destructor
     ~Extension() override;
@@ -43,7 +43,7 @@
     const Extension* Clone(CloneContext& ctx) const override;
 
     /// The extension name
-    const core::Extension name;
+    const wgsl::Extension name;
 };
 
 }  // namespace tint::ast
diff --git a/src/tint/lang/wgsl/ast/for_loop_statement_test.cc b/src/tint/lang/wgsl/ast/for_loop_statement_test.cc
index b1ae242..33841ac 100644
--- a/src/tint/lang/wgsl/ast/for_loop_statement_test.cc
+++ b/src/tint/lang/wgsl/ast/for_loop_statement_test.cc
@@ -52,8 +52,8 @@
 }
 
 TEST_F(ForLoopStatementTest, Creation_WithAttributes) {
-    auto* attr1 = DiagnosticAttribute(core::DiagnosticSeverity::kOff, "foo");
-    auto* attr2 = DiagnosticAttribute(core::DiagnosticSeverity::kOff, "bar");
+    auto* attr1 = DiagnosticAttribute(wgsl::DiagnosticSeverity::kOff, "foo");
+    auto* attr2 = DiagnosticAttribute(wgsl::DiagnosticSeverity::kOff, "bar");
     auto* body = Block(Return());
     auto* l = For(nullptr, nullptr, nullptr, body, tint::Vector{attr1, attr2});
 
diff --git a/src/tint/lang/wgsl/ast/if_statement_test.cc b/src/tint/lang/wgsl/ast/if_statement_test.cc
index e2bd7b8..827decc 100644
--- a/src/tint/lang/wgsl/ast/if_statement_test.cc
+++ b/src/tint/lang/wgsl/ast/if_statement_test.cc
@@ -33,8 +33,8 @@
 }
 
 TEST_F(IfStatementTest, Creation_WithAttributes) {
-    auto* attr1 = DiagnosticAttribute(core::DiagnosticSeverity::kOff, "foo");
-    auto* attr2 = DiagnosticAttribute(core::DiagnosticSeverity::kOff, "bar");
+    auto* attr1 = DiagnosticAttribute(wgsl::DiagnosticSeverity::kOff, "foo");
+    auto* attr2 = DiagnosticAttribute(wgsl::DiagnosticSeverity::kOff, "bar");
     auto* cond = Expr("cond");
     auto* stmt = If(cond, Block(), ElseStmt(), tint::Vector{attr1, attr2});
 
diff --git a/src/tint/lang/wgsl/ast/loop_statement_test.cc b/src/tint/lang/wgsl/ast/loop_statement_test.cc
index 5d75e68..bcab559 100644
--- a/src/tint/lang/wgsl/ast/loop_statement_test.cc
+++ b/src/tint/lang/wgsl/ast/loop_statement_test.cc
@@ -50,8 +50,8 @@
 }
 
 TEST_F(LoopStatementTest, Creation_WithAttributes) {
-    auto* attr1 = DiagnosticAttribute(core::DiagnosticSeverity::kOff, "foo");
-    auto* attr2 = DiagnosticAttribute(core::DiagnosticSeverity::kOff, "bar");
+    auto* attr1 = DiagnosticAttribute(wgsl::DiagnosticSeverity::kOff, "foo");
+    auto* attr2 = DiagnosticAttribute(wgsl::DiagnosticSeverity::kOff, "bar");
 
     auto* body = Block(Return());
     auto* l = create<LoopStatement>(body, nullptr, tint::Vector{attr1, attr2});
diff --git a/src/tint/lang/wgsl/ast/module_test.cc b/src/tint/lang/wgsl/ast/module_test.cc
index 37da59f..56ce163 100644
--- a/src/tint/lang/wgsl/ast/module_test.cc
+++ b/src/tint/lang/wgsl/ast/module_test.cc
@@ -132,10 +132,10 @@
 }
 
 TEST_F(ModuleTest, Directives) {
-    auto* enable_1 = Enable(core::Extension::kF16);
-    auto* diagnostic_1 = DiagnosticDirective(core::DiagnosticSeverity::kWarning, "foo");
-    auto* enable_2 = Enable(core::Extension::kChromiumExperimentalFullPtrParameters);
-    auto* diagnostic_2 = DiagnosticDirective(core::DiagnosticSeverity::kOff, "bar");
+    auto* enable_1 = Enable(wgsl::Extension::kF16);
+    auto* diagnostic_1 = DiagnosticDirective(wgsl::DiagnosticSeverity::kWarning, "foo");
+    auto* enable_2 = Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
+    auto* diagnostic_2 = DiagnosticDirective(wgsl::DiagnosticSeverity::kOff, "bar");
 
     Program program(std::move(*this));
     EXPECT_THAT(program.AST().GlobalDeclarations(), ::testing::ContainerEq(tint::Vector{
diff --git a/src/tint/lang/wgsl/ast/switch_statement_test.cc b/src/tint/lang/wgsl/ast/switch_statement_test.cc
index c1a4d01..242cb1b 100644
--- a/src/tint/lang/wgsl/ast/switch_statement_test.cc
+++ b/src/tint/lang/wgsl/ast/switch_statement_test.cc
@@ -46,8 +46,8 @@
 }
 
 TEST_F(SwitchStatementTest, Creation_WithAttributes) {
-    auto* attr1 = DiagnosticAttribute(core::DiagnosticSeverity::kOff, "foo");
-    auto* attr2 = DiagnosticAttribute(core::DiagnosticSeverity::kOff, "bar");
+    auto* attr1 = DiagnosticAttribute(wgsl::DiagnosticSeverity::kOff, "foo");
+    auto* attr2 = DiagnosticAttribute(wgsl::DiagnosticSeverity::kOff, "bar");
     auto* ident = Expr("ident");
     auto* stmt =
         create<SwitchStatement>(ident, tint::Empty, tint::Vector{attr1, attr2}, tint::Empty);
@@ -56,8 +56,8 @@
 }
 
 TEST_F(SwitchStatementTest, Creation_WithBodyAttributes) {
-    auto* attr1 = DiagnosticAttribute(core::DiagnosticSeverity::kOff, "foo");
-    auto* attr2 = DiagnosticAttribute(core::DiagnosticSeverity::kOff, "bar");
+    auto* attr1 = DiagnosticAttribute(wgsl::DiagnosticSeverity::kOff, "foo");
+    auto* attr2 = DiagnosticAttribute(wgsl::DiagnosticSeverity::kOff, "bar");
     auto* ident = Expr("ident");
     auto* stmt =
         create<SwitchStatement>(ident, tint::Empty, tint::Empty, tint::Vector{attr1, attr2});
diff --git a/src/tint/lang/wgsl/ast/transform/BUILD.bazel b/src/tint/lang/wgsl/ast/transform/BUILD.bazel
index d035628..6b75460 100644
--- a/src/tint/lang/wgsl/ast/transform/BUILD.bazel
+++ b/src/tint/lang/wgsl/ast/transform/BUILD.bazel
@@ -99,6 +99,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/resolver",
@@ -166,6 +167,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/ast:test",
diff --git a/src/tint/lang/wgsl/ast/transform/BUILD.cmake b/src/tint/lang/wgsl/ast/transform/BUILD.cmake
index c5ed810..a9dd202 100644
--- a/src/tint/lang/wgsl/ast/transform/BUILD.cmake
+++ b/src/tint/lang/wgsl/ast/transform/BUILD.cmake
@@ -98,6 +98,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_resolver
@@ -165,6 +166,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_ast_test
diff --git a/src/tint/lang/wgsl/ast/transform/BUILD.gn b/src/tint/lang/wgsl/ast/transform/BUILD.gn
index 3c49f99..22706b8 100644
--- a/src/tint/lang/wgsl/ast/transform/BUILD.gn
+++ b/src/tint/lang/wgsl/ast/transform/BUILD.gn
@@ -102,6 +102,7 @@
     "${tint_src_dir}/lang/core",
     "${tint_src_dir}/lang/core/constant",
     "${tint_src_dir}/lang/core/type",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/lang/wgsl/program",
     "${tint_src_dir}/lang/wgsl/resolver",
@@ -168,6 +169,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/ast:unittests",
       "${tint_src_dir}/lang/wgsl/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 876f7fb..dc4ba14 100644
--- a/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
+++ b/src/tint/lang/wgsl/ast/transform/builtin_polyfill.cc
@@ -51,7 +51,7 @@
     State(const Program* program, const Config& config) : src(program), cfg(config) {
         has_full_ptr_params = false;
         for (auto* enable : src->AST().Enables()) {
-            if (enable->HasExtension(core::Extension::kChromiumExperimentalFullPtrParameters)) {
+            if (enable->HasExtension(wgsl::Extension::kChromiumExperimentalFullPtrParameters)) {
                 has_full_ptr_params = true;
                 break;
             }
@@ -811,7 +811,7 @@
     /// @return the polyfill function name
     Symbol workgroupUniformLoad(const core::type::Type* type) {
         if (!has_full_ptr_params) {
-            b.Enable(core::Extension::kChromiumExperimentalFullPtrParameters);
+            b.Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
             has_full_ptr_params = true;
         }
         auto name = b.Symbols().New("tint_workgroupUniformLoad");
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 30dbbb7..28db994 100644
--- a/src/tint/lang/wgsl/ast/transform/direct_variable_access.cc
+++ b/src/tint/lang/wgsl/ast/transform/direct_variable_access.cc
@@ -208,7 +208,7 @@
     /// @returns the ApplyResult
     ApplyResult Run() {
         if (!ctx.src->Sem().Module()->Extensions().Contains(
-                core::Extension::kChromiumExperimentalFullPtrParameters)) {
+                wgsl::Extension::kChromiumExperimentalFullPtrParameters)) {
             // If the 'chromium_experimental_full_ptr_parameters' extension is not enabled, then
             // there's nothing for this transform to do.
             return SkipTransform;
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 3c23390..34d212b 100644
--- a/src/tint/lang/wgsl/ast/transform/disable_uniformity_analysis.cc
+++ b/src/tint/lang/wgsl/ast/transform/disable_uniformity_analysis.cc
@@ -33,13 +33,13 @@
                                                         const DataMap&,
                                                         DataMap&) const {
     if (src->Sem().Module()->Extensions().Contains(
-            core::Extension::kChromiumDisableUniformityAnalysis)) {
+            wgsl::Extension::kChromiumDisableUniformityAnalysis)) {
         return SkipTransform;
     }
 
     ProgramBuilder b;
     program::CloneContext ctx{&b, src, /* auto_clone_symbols */ true};
-    b.Enable(core::Extension::kChromiumDisableUniformityAnalysis);
+    b.Enable(wgsl::Extension::kChromiumDisableUniformityAnalysis);
 
     ctx.Clone();
     return resolver::Resolve(b);
diff --git a/src/tint/lang/wgsl/ast/transform/preserve_padding.cc b/src/tint/lang/wgsl/ast/transform/preserve_padding.cc
index 3ef5d69..25cba78 100644
--- a/src/tint/lang/wgsl/ast/transform/preserve_padding.cc
+++ b/src/tint/lang/wgsl/ast/transform/preserve_padding.cc
@@ -71,7 +71,7 @@
                 [&](const Enable* enable) {
                     // Check if the full pointer parameters extension is already enabled.
                     if (enable->HasExtension(
-                            core::Extension::kChromiumExperimentalFullPtrParameters)) {
+                            wgsl::Extension::kChromiumExperimentalFullPtrParameters)) {
                         ext_enabled = true;
                     }
                 });
@@ -220,7 +220,7 @@
     /// Enable the full pointer parameters extension, if we have not already done so.
     void EnableExtension() {
         if (!ext_enabled) {
-            b.Enable(core::Extension::kChromiumExperimentalFullPtrParameters);
+            b.Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
             ext_enabled = true;
         }
     }
diff --git a/src/tint/lang/wgsl/ast/while_statement_test.cc b/src/tint/lang/wgsl/ast/while_statement_test.cc
index 43c2093..d87ddf0 100644
--- a/src/tint/lang/wgsl/ast/while_statement_test.cc
+++ b/src/tint/lang/wgsl/ast/while_statement_test.cc
@@ -43,8 +43,8 @@
 }
 
 TEST_F(WhileStatementTest, Creation_WithAttributes) {
-    auto* attr1 = DiagnosticAttribute(core::DiagnosticSeverity::kOff, "foo");
-    auto* attr2 = DiagnosticAttribute(core::DiagnosticSeverity::kOff, "bar");
+    auto* attr1 = DiagnosticAttribute(wgsl::DiagnosticSeverity::kOff, "foo");
+    auto* attr2 = DiagnosticAttribute(wgsl::DiagnosticSeverity::kOff, "bar");
     auto* cond = create<BinaryExpression>(core::BinaryOp::kLessThan, Expr("i"), Expr(5_u));
     auto* body = Block(Return());
     auto* l = While(cond, body, tint::Vector{attr1, attr2});
diff --git a/src/tint/lang/core/diagnostic_rule.cc b/src/tint/lang/wgsl/diagnostic_rule.cc
similarity index 94%
rename from src/tint/lang/core/diagnostic_rule.cc
rename to src/tint/lang/wgsl/diagnostic_rule.cc
index b226240..624b2c1 100644
--- a/src/tint/lang/core/diagnostic_rule.cc
+++ b/src/tint/lang/wgsl/diagnostic_rule.cc
@@ -14,20 +14,20 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 // File generated by 'tools/src/cmd/gen' using the template:
-//   src/tint/lang/core/diagnostic_rule.cc.tmpl
+//   src/tint/lang/wgsl/diagnostic_rule.cc.tmpl
 //
 // To regenerate run: './tools/run gen'
 //
 //                       Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-#include "src/tint/lang/core/diagnostic_rule.h"
+#include "src/tint/lang/wgsl/diagnostic_rule.h"
 
 #include <string>
 
 #include "src/tint/utils/traits/traits.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 
 /// ParseCoreDiagnosticRule parses a CoreDiagnosticRule from a string.
 /// @param str the string to parse
@@ -70,4 +70,4 @@
     return "<unknown>";
 }
 
-}  // namespace tint::core
+}  // namespace tint::wgsl
diff --git a/src/tint/lang/core/diagnostic_rule.cc.tmpl b/src/tint/lang/wgsl/diagnostic_rule.cc.tmpl
similarity index 82%
rename from src/tint/lang/core/diagnostic_rule.cc.tmpl
rename to src/tint/lang/wgsl/diagnostic_rule.cc.tmpl
index fdde9ab..9162120 100644
--- a/src/tint/lang/core/diagnostic_rule.cc.tmpl
+++ b/src/tint/lang/wgsl/diagnostic_rule.cc.tmpl
@@ -8,16 +8,16 @@
 --------------------------------------------------------------------------------
 */ -}}
 
-{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
+{{- $I := LoadIntrinsics "src/tint/lang/wgsl/wgsl.def" -}}
 {{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
 
-#include "src/tint/lang/core/diagnostic_rule.h"
+#include "src/tint/lang/wgsl/diagnostic_rule.h"
 
 #include <string>
 
 #include "src/tint/utils/traits/traits.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 
 {{ Eval "ParseEnum" ($I.Sem.Enum "core_diagnostic_rule")}}
 
@@ -27,4 +27,4 @@
 
 {{ Eval "EnumOStream" ($I.Sem.Enum "chromium_diagnostic_rule")}}
 
-}  // namespace tint::core
+}  // namespace tint::wgsl
diff --git a/src/tint/lang/core/diagnostic_rule.h b/src/tint/lang/wgsl/diagnostic_rule.h
similarity index 92%
rename from src/tint/lang/core/diagnostic_rule.h
rename to src/tint/lang/wgsl/diagnostic_rule.h
index 0bc5f72..e0a71fe 100644
--- a/src/tint/lang/core/diagnostic_rule.h
+++ b/src/tint/lang/wgsl/diagnostic_rule.h
@@ -14,15 +14,15 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 // File generated by 'tools/src/cmd/gen' using the template:
-//   src/tint/lang/core/diagnostic_rule.h.tmpl
+//   src/tint/lang/wgsl/diagnostic_rule.h.tmpl
 //
 // To regenerate run: './tools/run gen'
 //
 //                       Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-#ifndef SRC_TINT_LANG_CORE_DIAGNOSTIC_RULE_H_
-#define SRC_TINT_LANG_CORE_DIAGNOSTIC_RULE_H_
+#ifndef SRC_TINT_LANG_WGSL_DIAGNOSTIC_RULE_H_
+#define SRC_TINT_LANG_WGSL_DIAGNOSTIC_RULE_H_
 
 #include <cstdint>
 #include <string>
@@ -30,7 +30,7 @@
 
 #include "src/tint/utils/traits/traits.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 
 /// WGSL core diagnostic rules.
 enum class CoreDiagnosticRule : uint8_t {
@@ -90,6 +90,6 @@
 /// All diagnostic rules understood by Tint.
 using DiagnosticRule = std::variant<CoreDiagnosticRule, ChromiumDiagnosticRule>;
 
-}  // namespace tint::core
+}  // namespace tint::wgsl
 
-#endif  // SRC_TINT_LANG_CORE_DIAGNOSTIC_RULE_H_
+#endif  // SRC_TINT_LANG_WGSL_DIAGNOSTIC_RULE_H_
diff --git a/src/tint/lang/core/diagnostic_rule.h.tmpl b/src/tint/lang/wgsl/diagnostic_rule.h.tmpl
similarity index 77%
rename from src/tint/lang/core/diagnostic_rule.h.tmpl
rename to src/tint/lang/wgsl/diagnostic_rule.h.tmpl
index 8bf1f0d..9948d1c 100644
--- a/src/tint/lang/core/diagnostic_rule.h.tmpl
+++ b/src/tint/lang/wgsl/diagnostic_rule.h.tmpl
@@ -8,11 +8,11 @@
 --------------------------------------------------------------------------------
 */ -}}
 
-{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
+{{- $I := LoadIntrinsics "src/tint/lang/wgsl/wgsl.def" -}}
 {{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
 
-#ifndef SRC_TINT_LANG_CORE_DIAGNOSTIC_RULE_H_
-#define SRC_TINT_LANG_CORE_DIAGNOSTIC_RULE_H_
+#ifndef SRC_TINT_LANG_WGSL_DIAGNOSTIC_RULE_H_
+#define SRC_TINT_LANG_WGSL_DIAGNOSTIC_RULE_H_
 
 #include <cstdint>
 #include <string>
@@ -20,7 +20,7 @@
 
 #include "src/tint/utils/traits/traits.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 
 /// WGSL core diagnostic rules.
 {{ Eval "DeclareEnum" ($I.Sem.Enum "core_diagnostic_rule") }}
@@ -31,6 +31,6 @@
 /// All diagnostic rules understood by Tint.
 using DiagnosticRule = std::variant<CoreDiagnosticRule, ChromiumDiagnosticRule>;
 
-}  // namespace tint::core
+}  // namespace tint::wgsl
 
-#endif  // SRC_TINT_LANG_CORE_DIAGNOSTIC_RULE_H_
+#endif  // SRC_TINT_LANG_WGSL_DIAGNOSTIC_RULE_H_
diff --git a/src/tint/lang/core/diagnostic_rule_bench.cc b/src/tint/lang/wgsl/diagnostic_rule_bench.cc
similarity index 92%
rename from src/tint/lang/core/diagnostic_rule_bench.cc
rename to src/tint/lang/wgsl/diagnostic_rule_bench.cc
index 4393c23..178f213 100644
--- a/src/tint/lang/core/diagnostic_rule_bench.cc
+++ b/src/tint/lang/wgsl/diagnostic_rule_bench.cc
@@ -14,20 +14,20 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 // File generated by 'tools/src/cmd/gen' using the template:
-//   src/tint/lang/core/diagnostic_rule_bench.cc.tmpl
+//   src/tint/lang/wgsl/diagnostic_rule_bench.cc.tmpl
 //
 // To regenerate run: './tools/run gen'
 //
 //                       Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-#include "src/tint/lang/core/diagnostic_rule.h"
+#include "src/tint/lang/wgsl/diagnostic_rule.h"
 
 #include <array>
 
 #include "benchmark/benchmark.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 namespace {
 
 void CoreDiagnosticRuleParser(::benchmark::State& state) {
@@ -62,4 +62,4 @@
 BENCHMARK(ChromiumDiagnosticRuleParser);
 
 }  // namespace
-}  // namespace tint::core
+}  // namespace tint::wgsl
diff --git a/src/tint/lang/core/diagnostic_rule_bench.cc.tmpl b/src/tint/lang/wgsl/diagnostic_rule_bench.cc.tmpl
similarity index 81%
rename from src/tint/lang/core/diagnostic_rule_bench.cc.tmpl
rename to src/tint/lang/wgsl/diagnostic_rule_bench.cc.tmpl
index 4813af5..cf1b20f 100644
--- a/src/tint/lang/core/diagnostic_rule_bench.cc.tmpl
+++ b/src/tint/lang/wgsl/diagnostic_rule_bench.cc.tmpl
@@ -8,16 +8,16 @@
 --------------------------------------------------------------------------------
 */ -}}
 
-{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
+{{- $I := LoadIntrinsics "src/tint/lang/wgsl/wgsl.def" -}}
 {{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
 
-#include "src/tint/lang/core/diagnostic_rule.h"
+#include "src/tint/lang/wgsl/diagnostic_rule.h"
 
 #include <array>
 
 #include "benchmark/benchmark.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 namespace {
 
 {{ Eval "BenchmarkParseEnum" ($I.Sem.Enum "core_diagnostic_rule")}}
@@ -25,4 +25,4 @@
 {{ Eval "BenchmarkParseEnum" ($I.Sem.Enum "chromium_diagnostic_rule")}}
 
 }  // namespace
-}  // namespace tint::core
+}  // namespace tint::wgsl
diff --git a/src/tint/lang/core/diagnostic_rule_test.cc b/src/tint/lang/wgsl/diagnostic_rule_test.cc
similarity index 96%
rename from src/tint/lang/core/diagnostic_rule_test.cc
rename to src/tint/lang/wgsl/diagnostic_rule_test.cc
index c20079c..5c5a393 100644
--- a/src/tint/lang/core/diagnostic_rule_test.cc
+++ b/src/tint/lang/wgsl/diagnostic_rule_test.cc
@@ -14,7 +14,7 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 // File generated by 'tools/src/cmd/gen' using the template:
-//   src/tint/lang/core/diagnostic_rule_test.cc.tmpl
+//   src/tint/lang/wgsl/diagnostic_rule_test.cc.tmpl
 //
 // To regenerate run: './tools/run gen'
 //
@@ -24,10 +24,10 @@
 #include <string>
 
 #include "gtest/gtest-spi.h"
-#include "src/tint/lang/core/diagnostic_rule.h"
+#include "src/tint/lang/wgsl/diagnostic_rule.h"
 #include "src/tint/utils/text/string.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 namespace {
 
 namespace core_diagnostic_rule_tests {
@@ -135,4 +135,4 @@
 }  // namespace chromium_diagnostic_rule_tests
 
 }  // namespace
-}  // namespace tint::core
+}  // namespace tint::wgsl
diff --git a/src/tint/lang/core/diagnostic_rule_test.cc.tmpl b/src/tint/lang/wgsl/diagnostic_rule_test.cc.tmpl
similarity index 84%
rename from src/tint/lang/core/diagnostic_rule_test.cc.tmpl
rename to src/tint/lang/wgsl/diagnostic_rule_test.cc.tmpl
index 40da435..d34cd75 100644
--- a/src/tint/lang/core/diagnostic_rule_test.cc.tmpl
+++ b/src/tint/lang/wgsl/diagnostic_rule_test.cc.tmpl
@@ -8,16 +8,16 @@
 --------------------------------------------------------------------------------
 */ -}}
 
-{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
+{{- $I := LoadIntrinsics "src/tint/lang/wgsl/wgsl.def" -}}
 {{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
 
 #include <string>
 
 #include "gtest/gtest-spi.h"
-#include "src/tint/lang/core/diagnostic_rule.h"
+#include "src/tint/lang/wgsl/diagnostic_rule.h"
 #include "src/tint/utils/text/string.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 namespace {
 
 namespace core_diagnostic_rule_tests {
@@ -33,4 +33,4 @@
 }  // namespace chromium_diagnostic_rule_tests
 
 }  // namespace
-}  // namespace tint::core
+}  // namespace tint::wgsl
diff --git a/src/tint/lang/core/diagnostic_severity.cc b/src/tint/lang/wgsl/diagnostic_severity.cc
similarity index 93%
rename from src/tint/lang/core/diagnostic_severity.cc
rename to src/tint/lang/wgsl/diagnostic_severity.cc
index 3cde694..ffb5480 100644
--- a/src/tint/lang/core/diagnostic_severity.cc
+++ b/src/tint/lang/wgsl/diagnostic_severity.cc
@@ -14,18 +14,18 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 // File generated by 'tools/src/cmd/gen' using the template:
-//   src/tint/lang/core/diagnostic_severity.cc.tmpl
+//   src/tint/lang/wgsl/diagnostic_severity.cc.tmpl
 //
 // To regenerate run: './tools/run gen'
 //
 //                       Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-#include "src/tint/lang/core/diagnostic_severity.h"
+#include "src/tint/lang/wgsl/diagnostic_severity.h"
 
 #include <string>
 
-namespace tint::core {
+namespace tint::wgsl {
 
 diag::Severity ToSeverity(DiagnosticSeverity sc) {
     switch (sc) {
@@ -75,4 +75,4 @@
     return "<unknown>";
 }
 
-}  // namespace tint::core
+}  // namespace tint::wgsl
diff --git a/src/tint/lang/core/diagnostic_severity.cc.tmpl b/src/tint/lang/wgsl/diagnostic_severity.cc.tmpl
similarity index 85%
rename from src/tint/lang/core/diagnostic_severity.cc.tmpl
rename to src/tint/lang/wgsl/diagnostic_severity.cc.tmpl
index f14922a..fdc3a8d 100644
--- a/src/tint/lang/core/diagnostic_severity.cc.tmpl
+++ b/src/tint/lang/wgsl/diagnostic_severity.cc.tmpl
@@ -8,14 +8,14 @@
 --------------------------------------------------------------------------------
 */ -}}
 
-{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
+{{- $I := LoadIntrinsics "src/tint/lang/wgsl/wgsl.def" -}}
 {{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
 
-#include "src/tint/lang/core/diagnostic_severity.h"
+#include "src/tint/lang/wgsl/diagnostic_severity.h"
 
 #include <string>
 
-namespace tint::core {
+namespace tint::wgsl {
 
 diag::Severity ToSeverity(DiagnosticSeverity sc) {
     switch (sc) {
@@ -34,4 +34,4 @@
 
 {{ Eval "EnumOStream" ($I.Sem.Enum "diagnostic_severity")}}
 
-}  // namespace tint::core
+}  // namespace tint::wgsl
diff --git a/src/tint/lang/core/diagnostic_severity.h b/src/tint/lang/wgsl/diagnostic_severity.h
similarity index 88%
rename from src/tint/lang/core/diagnostic_severity.h
rename to src/tint/lang/wgsl/diagnostic_severity.h
index 9a7bd91..a09d2ab 100644
--- a/src/tint/lang/core/diagnostic_severity.h
+++ b/src/tint/lang/wgsl/diagnostic_severity.h
@@ -14,24 +14,24 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 // File generated by 'tools/src/cmd/gen' using the template:
-//   src/tint/lang/core/diagnostic_severity.h.tmpl
+//   src/tint/lang/wgsl/diagnostic_severity.h.tmpl
 //
 // To regenerate run: './tools/run gen'
 //
 //                       Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-#ifndef SRC_TINT_LANG_CORE_DIAGNOSTIC_SEVERITY_H_
-#define SRC_TINT_LANG_CORE_DIAGNOSTIC_SEVERITY_H_
+#ifndef SRC_TINT_LANG_WGSL_DIAGNOSTIC_SEVERITY_H_
+#define SRC_TINT_LANG_WGSL_DIAGNOSTIC_SEVERITY_H_
 
 #include <string>
 #include <unordered_map>
 
-#include "src/tint/lang/core/diagnostic_rule.h"
+#include "src/tint/lang/wgsl/diagnostic_rule.h"
 #include "src/tint/utils/diagnostic/diagnostic.h"
 #include "src/tint/utils/traits/traits.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 
 /// The diagnostic severity control.
 enum class DiagnosticSeverity : uint8_t {
@@ -72,6 +72,6 @@
 /// DiagnosticRuleSeverities is a map from diagnostic rule to diagnostic severity.
 using DiagnosticRuleSeverities = std::unordered_map<DiagnosticRule, DiagnosticSeverity>;
 
-}  // namespace tint::core
+}  // namespace tint::wgsl
 
-#endif  // SRC_TINT_LANG_CORE_DIAGNOSTIC_SEVERITY_H_
+#endif  // SRC_TINT_LANG_WGSL_DIAGNOSTIC_SEVERITY_H_
diff --git a/src/tint/lang/core/diagnostic_severity.h.tmpl b/src/tint/lang/wgsl/diagnostic_severity.h.tmpl
similarity index 76%
rename from src/tint/lang/core/diagnostic_severity.h.tmpl
rename to src/tint/lang/wgsl/diagnostic_severity.h.tmpl
index fbabfaf..045591f 100644
--- a/src/tint/lang/core/diagnostic_severity.h.tmpl
+++ b/src/tint/lang/wgsl/diagnostic_severity.h.tmpl
@@ -8,20 +8,20 @@
 --------------------------------------------------------------------------------
 */ -}}
 
-{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
+{{- $I := LoadIntrinsics "src/tint/lang/wgsl/wgsl.def" -}}
 {{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
 
-#ifndef SRC_TINT_LANG_CORE_DIAGNOSTIC_SEVERITY_H_
-#define SRC_TINT_LANG_CORE_DIAGNOSTIC_SEVERITY_H_
+#ifndef SRC_TINT_LANG_WGSL_DIAGNOSTIC_SEVERITY_H_
+#define SRC_TINT_LANG_WGSL_DIAGNOSTIC_SEVERITY_H_
 
 #include <string>
 #include <unordered_map>
 
 #include "src/tint/utils/traits/traits.h"
-#include "src/tint/lang/core/diagnostic_rule.h"
+#include "src/tint/lang/wgsl/diagnostic_rule.h"
 #include "src/tint/utils/diagnostic/diagnostic.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 
 /// The diagnostic severity control.
 {{ Eval "DeclareEnum" ($I.Sem.Enum "diagnostic_severity") }}
@@ -32,6 +32,6 @@
 /// DiagnosticRuleSeverities is a map from diagnostic rule to diagnostic severity.
 using DiagnosticRuleSeverities = std::unordered_map<DiagnosticRule, DiagnosticSeverity>;
 
-}  // namespace tint::core
+}  // namespace tint::wgsl
 
-#endif  // SRC_TINT_LANG_CORE_DIAGNOSTIC_SEVERITY_H_
+#endif  // SRC_TINT_LANG_WGSL_DIAGNOSTIC_SEVERITY_H_
diff --git a/src/tint/lang/core/diagnostic_severity_bench.cc b/src/tint/lang/wgsl/diagnostic_severity_bench.cc
similarity index 91%
rename from src/tint/lang/core/diagnostic_severity_bench.cc
rename to src/tint/lang/wgsl/diagnostic_severity_bench.cc
index 50a4f11..52e5736 100644
--- a/src/tint/lang/core/diagnostic_severity_bench.cc
+++ b/src/tint/lang/wgsl/diagnostic_severity_bench.cc
@@ -14,20 +14,20 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 // File generated by 'tools/src/cmd/gen' using the template:
-//   src/tint/lang/core/diagnostic_severity_bench.cc.tmpl
+//   src/tint/lang/wgsl/diagnostic_severity_bench.cc.tmpl
 //
 // To regenerate run: './tools/run gen'
 //
 //                       Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-#include "src/tint/lang/core/diagnostic_severity.h"
+#include "src/tint/lang/wgsl/diagnostic_severity.h"
 
 #include <array>
 
 #include "benchmark/benchmark.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 namespace {
 
 void DiagnosticSeverityParser(::benchmark::State& state) {
@@ -48,4 +48,4 @@
 BENCHMARK(DiagnosticSeverityParser);
 
 }  // namespace
-}  // namespace tint::core
+}  // namespace tint::wgsl
diff --git a/src/tint/lang/core/diagnostic_severity_bench.cc.tmpl b/src/tint/lang/wgsl/diagnostic_severity_bench.cc.tmpl
similarity index 79%
rename from src/tint/lang/core/diagnostic_severity_bench.cc.tmpl
rename to src/tint/lang/wgsl/diagnostic_severity_bench.cc.tmpl
index 9bbb401..a925938 100644
--- a/src/tint/lang/core/diagnostic_severity_bench.cc.tmpl
+++ b/src/tint/lang/wgsl/diagnostic_severity_bench.cc.tmpl
@@ -8,19 +8,19 @@
 --------------------------------------------------------------------------------
 */ -}}
 
-{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
+{{- $I := LoadIntrinsics "src/tint/lang/wgsl/wgsl.def" -}}
 {{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
 
-#include "src/tint/lang/core/diagnostic_severity.h"
+#include "src/tint/lang/wgsl/diagnostic_severity.h"
 
 #include <array>
 
 #include "benchmark/benchmark.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 namespace {
 
 {{ Eval "BenchmarkParseEnum" ($I.Sem.Enum "diagnostic_severity")}}
 
 }  // namespace
-}  // namespace tint::core
+}  // namespace tint::wgsl
diff --git a/src/tint/lang/core/diagnostic_severity_test.cc b/src/tint/lang/wgsl/diagnostic_severity_test.cc
similarity index 94%
rename from src/tint/lang/core/diagnostic_severity_test.cc
rename to src/tint/lang/wgsl/diagnostic_severity_test.cc
index 78c1d75..960569f 100644
--- a/src/tint/lang/core/diagnostic_severity_test.cc
+++ b/src/tint/lang/wgsl/diagnostic_severity_test.cc
@@ -14,7 +14,7 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 // File generated by 'tools/src/cmd/gen' using the template:
-//   src/tint/lang/core/diagnostic_severity_test.cc.tmpl
+//   src/tint/lang/wgsl/diagnostic_severity_test.cc.tmpl
 //
 // To regenerate run: './tools/run gen'
 //
@@ -24,10 +24,10 @@
 #include <string>
 
 #include "gtest/gtest-spi.h"
-#include "src/tint/lang/core/diagnostic_severity.h"
+#include "src/tint/lang/wgsl/diagnostic_severity.h"
 #include "src/tint/utils/text/string.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 namespace {
 
 namespace diagnostic_severity_tests {
@@ -87,4 +87,4 @@
 }  // namespace diagnostic_severity_tests
 
 }  // namespace
-}  // namespace tint::core
+}  // namespace tint::wgsl
diff --git a/src/tint/lang/core/diagnostic_severity_test.cc.tmpl b/src/tint/lang/wgsl/diagnostic_severity_test.cc.tmpl
similarity index 81%
rename from src/tint/lang/core/diagnostic_severity_test.cc.tmpl
rename to src/tint/lang/wgsl/diagnostic_severity_test.cc.tmpl
index e2db82e..48a7542 100644
--- a/src/tint/lang/core/diagnostic_severity_test.cc.tmpl
+++ b/src/tint/lang/wgsl/diagnostic_severity_test.cc.tmpl
@@ -8,16 +8,16 @@
 --------------------------------------------------------------------------------
 */ -}}
 
-{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
+{{- $I := LoadIntrinsics "src/tint/lang/wgsl/wgsl.def" -}}
 {{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
 
 #include <string>
 
 #include "gtest/gtest-spi.h"
-#include "src/tint/lang/core/diagnostic_severity.h"
+#include "src/tint/lang/wgsl/diagnostic_severity.h"
 #include "src/tint/utils/text/string.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 namespace {
 
 namespace diagnostic_severity_tests {
@@ -27,4 +27,4 @@
 }  // namespace diagnostic_severity_tests
 
 }  // namespace
-}  // namespace tint::core
+}  // namespace tint::wgsl
diff --git a/src/tint/lang/core/extension.cc b/src/tint/lang/wgsl/extension.cc
similarity index 96%
rename from src/tint/lang/core/extension.cc
rename to src/tint/lang/wgsl/extension.cc
index 102d612..96598a7 100644
--- a/src/tint/lang/core/extension.cc
+++ b/src/tint/lang/wgsl/extension.cc
@@ -14,16 +14,16 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 // File generated by 'tools/src/cmd/gen' using the template:
-//   src/tint/lang/core/extension.cc.tmpl
+//   src/tint/lang/wgsl/extension.cc.tmpl
 //
 // To regenerate run: './tools/run gen'
 //
 //                       Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-#include "src/tint/lang/core/extension.h"
+#include "src/tint/lang/wgsl/extension.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 
 /// ParseExtension parses a Extension from a string.
 /// @param str the string to parse
@@ -90,4 +90,4 @@
     return "<unknown>";
 }
 
-}  // namespace tint::core
+}  // namespace tint::wgsl
diff --git a/src/tint/lang/core/extension.cc.tmpl b/src/tint/lang/wgsl/extension.cc.tmpl
similarity index 78%
rename from src/tint/lang/core/extension.cc.tmpl
rename to src/tint/lang/wgsl/extension.cc.tmpl
index 37c9e1b..cbe975b 100644
--- a/src/tint/lang/core/extension.cc.tmpl
+++ b/src/tint/lang/wgsl/extension.cc.tmpl
@@ -8,16 +8,16 @@
 --------------------------------------------------------------------------------
 */ -}}
 
-{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
+{{- $I := LoadIntrinsics "src/tint/lang/wgsl/wgsl.def" -}}
 {{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
 {{- $enum := ($I.Sem.Enum "extension") -}}
 
-#include "src/tint/lang/core/extension.h"
+#include "src/tint/lang/wgsl/extension.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 
 {{ Eval "ParseEnum" $enum}}
 
 {{ Eval "EnumOStream" $enum}}
 
-}  // namespace tint::core
+}  // namespace tint::wgsl
diff --git a/src/tint/lang/core/extension.h b/src/tint/lang/wgsl/extension.h
similarity index 92%
rename from src/tint/lang/core/extension.h
rename to src/tint/lang/wgsl/extension.h
index 7672ee0..0f401c9 100644
--- a/src/tint/lang/core/extension.h
+++ b/src/tint/lang/wgsl/extension.h
@@ -14,20 +14,20 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 // File generated by 'tools/src/cmd/gen' using the template:
-//   src/tint/lang/core/extension.h.tmpl
+//   src/tint/lang/wgsl/extension.h.tmpl
 //
 // To regenerate run: './tools/run gen'
 //
 //                       Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-#ifndef SRC_TINT_LANG_CORE_EXTENSION_H_
-#define SRC_TINT_LANG_CORE_EXTENSION_H_
+#ifndef SRC_TINT_LANG_WGSL_EXTENSION_H_
+#define SRC_TINT_LANG_WGSL_EXTENSION_H_
 
 #include "src/tint/utils/containers/unique_vector.h"
 #include "src/tint/utils/traits/traits.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 
 /// An enumerator of WGSL extensions
 /// @see src/tint/lang/wgsl/intrinsics.def for extension descriptions
@@ -73,6 +73,6 @@
 // A unique vector of extensions
 using Extensions = UniqueVector<Extension, 4>;
 
-}  // namespace tint::core
+}  // namespace tint::wgsl
 
-#endif  // SRC_TINT_LANG_CORE_EXTENSION_H_
+#endif  // SRC_TINT_LANG_WGSL_EXTENSION_H_
diff --git a/src/tint/lang/core/extension.h.tmpl b/src/tint/lang/wgsl/extension.h.tmpl
similarity index 77%
rename from src/tint/lang/core/extension.h.tmpl
rename to src/tint/lang/wgsl/extension.h.tmpl
index 0637395..1c69ee1 100644
--- a/src/tint/lang/core/extension.h.tmpl
+++ b/src/tint/lang/wgsl/extension.h.tmpl
@@ -8,17 +8,17 @@
 --------------------------------------------------------------------------------
 */ -}}
 
-{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
+{{- $I := LoadIntrinsics "src/tint/lang/wgsl/wgsl.def" -}}
 {{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
 {{- $enum := ($I.Sem.Enum "extension") -}}
 
-#ifndef SRC_TINT_LANG_CORE_EXTENSION_H_
-#define SRC_TINT_LANG_CORE_EXTENSION_H_
+#ifndef SRC_TINT_LANG_WGSL_EXTENSION_H_
+#define SRC_TINT_LANG_WGSL_EXTENSION_H_
 
 #include "src/tint/utils/traits/traits.h"
 #include "src/tint/utils/containers/unique_vector.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 
 /// An enumerator of WGSL extensions
 /// @see src/tint/lang/wgsl/intrinsics.def for extension descriptions
@@ -27,6 +27,6 @@
 // A unique vector of extensions
 using Extensions = UniqueVector<Extension, 4>;
 
-}  // namespace tint::core
+}  // namespace tint::wgsl
 
-#endif  // SRC_TINT_LANG_CORE_EXTENSION_H_
+#endif  // SRC_TINT_LANG_WGSL_EXTENSION_H_
diff --git a/src/tint/lang/core/extension_bench.cc b/src/tint/lang/wgsl/extension_bench.cc
similarity index 96%
rename from src/tint/lang/core/extension_bench.cc
rename to src/tint/lang/wgsl/extension_bench.cc
index b0602c7..50d3ea9 100644
--- a/src/tint/lang/core/extension_bench.cc
+++ b/src/tint/lang/wgsl/extension_bench.cc
@@ -14,20 +14,20 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 // File generated by 'tools/src/cmd/gen' using the template:
-//   src/tint/lang/core/extension_bench.cc.tmpl
+//   src/tint/lang/wgsl/extension_bench.cc.tmpl
 //
 // To regenerate run: './tools/run gen'
 //
 //                       Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-#include "src/tint/lang/core/extension.h"
+#include "src/tint/lang/wgsl/extension.h"
 
 #include <array>
 
 #include "benchmark/benchmark.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 namespace {
 
 void ExtensionParser(::benchmark::State& state) {
@@ -114,4 +114,4 @@
 BENCHMARK(ExtensionParser);
 
 }  // namespace
-}  // namespace tint::core
+}  // namespace tint::wgsl
diff --git a/src/tint/lang/core/extension_bench.cc.tmpl b/src/tint/lang/wgsl/extension_bench.cc.tmpl
similarity index 80%
rename from src/tint/lang/core/extension_bench.cc.tmpl
rename to src/tint/lang/wgsl/extension_bench.cc.tmpl
index eeff261..7fc8c5c 100644
--- a/src/tint/lang/core/extension_bench.cc.tmpl
+++ b/src/tint/lang/wgsl/extension_bench.cc.tmpl
@@ -8,20 +8,20 @@
 --------------------------------------------------------------------------------
 */ -}}
 
-{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
+{{- $I := LoadIntrinsics "src/tint/lang/wgsl/wgsl.def" -}}
 {{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
 {{- $enum := ($I.Sem.Enum "extension") -}}
 
-#include "src/tint/lang/core/extension.h"
+#include "src/tint/lang/wgsl/extension.h"
 
 #include <array>
 
 #include "benchmark/benchmark.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 namespace {
 
 {{ Eval "BenchmarkParseEnum" $enum }}
 
 }  // namespace
-}  // namespace tint::core
+}  // namespace tint::wgsl
diff --git a/src/tint/lang/core/extension_test.cc b/src/tint/lang/wgsl/extension_test.cc
similarity index 96%
rename from src/tint/lang/core/extension_test.cc
rename to src/tint/lang/wgsl/extension_test.cc
index 32149f6..d46393d 100644
--- a/src/tint/lang/core/extension_test.cc
+++ b/src/tint/lang/wgsl/extension_test.cc
@@ -14,14 +14,14 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 // File generated by 'tools/src/cmd/gen' using the template:
-//   src/tint/lang/core/extension_test.cc.tmpl
+//   src/tint/lang/wgsl/extension_test.cc.tmpl
 //
 // To regenerate run: './tools/run gen'
 //
 //                       Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-#include "src/tint/lang/core/extension.h"
+#include "src/tint/lang/wgsl/extension.h"
 
 #include <gtest/gtest.h>
 
@@ -29,7 +29,7 @@
 
 #include "src/tint/utils/text/string.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 namespace {
 
 namespace parse_print_tests {
@@ -115,4 +115,4 @@
 }  // namespace parse_print_tests
 
 }  // namespace
-}  // namespace tint::core
+}  // namespace tint::wgsl
diff --git a/src/tint/lang/core/extension_test.cc.tmpl b/src/tint/lang/wgsl/extension_test.cc.tmpl
similarity index 81%
rename from src/tint/lang/core/extension_test.cc.tmpl
rename to src/tint/lang/wgsl/extension_test.cc.tmpl
index b993082..0e6d498 100644
--- a/src/tint/lang/core/extension_test.cc.tmpl
+++ b/src/tint/lang/wgsl/extension_test.cc.tmpl
@@ -8,11 +8,11 @@
 --------------------------------------------------------------------------------
 */ -}}
 
-{{- $I := LoadIntrinsics "src/tint/lang/core/core.def" -}}
+{{- $I := LoadIntrinsics "src/tint/lang/wgsl/wgsl.def" -}}
 {{- Import "src/tint/utils/templates/enums.tmpl.inc" -}}
 {{- $enum := ($I.Sem.Enum "extension") -}}
 
-#include "src/tint/lang/core/extension.h"
+#include "src/tint/lang/wgsl/extension.h"
 
 #include <gtest/gtest.h>
 
@@ -20,10 +20,10 @@
 
 #include "src/tint/utils/text/string.h"
 
-namespace tint::core {
+namespace tint::wgsl {
 namespace {
 
 {{ Eval "TestParsePrintEnum" $enum}}
 
 }  // namespace
-}  // namespace tint::core
+}  // namespace tint::wgsl
diff --git a/src/tint/lang/wgsl/helpers/BUILD.bazel b/src/tint/lang/wgsl/helpers/BUILD.bazel
index 3dada81..c9687b0 100644
--- a/src/tint/lang/wgsl/helpers/BUILD.bazel
+++ b/src/tint/lang/wgsl/helpers/BUILD.bazel
@@ -40,6 +40,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/inspector",
@@ -78,6 +79,7 @@
     "//src/tint/lang/core/intrinsic",
     "//src/tint/lang/core/ir",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast:test",
     "//src/tint/lang/wgsl/helpers",
diff --git a/src/tint/lang/wgsl/helpers/BUILD.cmake b/src/tint/lang/wgsl/helpers/BUILD.cmake
index 085c869..8cf2e47 100644
--- a/src/tint/lang/wgsl/helpers/BUILD.cmake
+++ b/src/tint/lang/wgsl/helpers/BUILD.cmake
@@ -39,6 +39,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_inspector
@@ -77,6 +78,7 @@
   tint_lang_core_intrinsic
   tint_lang_core_ir
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_test
   tint_lang_wgsl_helpers
diff --git a/src/tint/lang/wgsl/helpers/BUILD.gn b/src/tint/lang/wgsl/helpers/BUILD.gn
index b676822..be773f2 100644
--- a/src/tint/lang/wgsl/helpers/BUILD.gn
+++ b/src/tint/lang/wgsl/helpers/BUILD.gn
@@ -43,6 +43,7 @@
     "${tint_src_dir}/lang/core",
     "${tint_src_dir}/lang/core/constant",
     "${tint_src_dir}/lang/core/type",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/lang/wgsl/ast/transform",
     "${tint_src_dir}/lang/wgsl/inspector",
@@ -80,6 +81,7 @@
       "${tint_src_dir}/lang/core/intrinsic",
       "${tint_src_dir}/lang/core/ir",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/ast:unittests",
       "${tint_src_dir}/lang/wgsl/helpers",
diff --git a/src/tint/lang/wgsl/helpers/check_supported_extensions.cc b/src/tint/lang/wgsl/helpers/check_supported_extensions.cc
index 4e9c329..ece9b37 100644
--- a/src/tint/lang/wgsl/helpers/check_supported_extensions.cc
+++ b/src/tint/lang/wgsl/helpers/check_supported_extensions.cc
@@ -26,8 +26,8 @@
 bool CheckSupportedExtensions(std::string_view writer_name,
                               const ast::Module& module,
                               diag::List& diags,
-                              VectorRef<core::Extension> supported) {
-    Hashset<core::Extension, 32> set;
+                              VectorRef<wgsl::Extension> supported) {
+    Hashset<wgsl::Extension, 32> set;
     for (auto ext : supported) {
         set.Add(ext);
     }
diff --git a/src/tint/lang/wgsl/helpers/check_supported_extensions.h b/src/tint/lang/wgsl/helpers/check_supported_extensions.h
index e9642dd..b2f09f3 100644
--- a/src/tint/lang/wgsl/helpers/check_supported_extensions.h
+++ b/src/tint/lang/wgsl/helpers/check_supported_extensions.h
@@ -15,7 +15,7 @@
 #ifndef SRC_TINT_LANG_WGSL_HELPERS_CHECK_SUPPORTED_EXTENSIONS_H_
 #define SRC_TINT_LANG_WGSL_HELPERS_CHECK_SUPPORTED_EXTENSIONS_H_
 
-#include "src/tint/lang/core/extension.h"
+#include "src/tint/lang/wgsl/extension.h"
 #include "src/tint/utils/containers/vector.h"
 
 namespace tint::ast {
@@ -36,7 +36,7 @@
 bool CheckSupportedExtensions(std::string_view writer_name,
                               const ast::Module& module,
                               diag::List& diags,
-                              VectorRef<core::Extension> supported);
+                              VectorRef<wgsl::Extension> supported);
 
 }  // namespace tint::writer
 
diff --git a/src/tint/lang/wgsl/helpers/check_supported_extensions_test.cc b/src/tint/lang/wgsl/helpers/check_supported_extensions_test.cc
index 29f4c9f..0d90851 100644
--- a/src/tint/lang/wgsl/helpers/check_supported_extensions_test.cc
+++ b/src/tint/lang/wgsl/helpers/check_supported_extensions_test.cc
@@ -24,21 +24,21 @@
 class CheckSupportedExtensionsTest : public ::testing::Test, public ProgramBuilder {};
 
 TEST_F(CheckSupportedExtensionsTest, Supported) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     ASSERT_TRUE(CheckSupportedExtensions("writer", AST(), Diagnostics(),
                                          Vector{
-                                             core::Extension::kF16,
-                                             core::Extension::kChromiumExperimentalDp4A,
+                                             wgsl::Extension::kF16,
+                                             wgsl::Extension::kChromiumExperimentalDp4A,
                                          }));
 }
 
 TEST_F(CheckSupportedExtensionsTest, Unsupported) {
-    Enable(Source{{12, 34}}, core::Extension::kF16);
+    Enable(Source{{12, 34}}, wgsl::Extension::kF16);
 
     ASSERT_FALSE(CheckSupportedExtensions("writer", AST(), Diagnostics(),
                                           Vector{
-                                              core::Extension::kChromiumExperimentalDp4A,
+                                              wgsl::Extension::kChromiumExperimentalDp4A,
                                           }));
     EXPECT_EQ(Diagnostics().str(), "12:34 error: writer backend does not support extension 'f16'");
 }
diff --git a/src/tint/lang/wgsl/inspector/BUILD.bazel b/src/tint/lang/wgsl/inspector/BUILD.bazel
index 79a0b76..86f9897 100644
--- a/src/tint/lang/wgsl/inspector/BUILD.bazel
+++ b/src/tint/lang/wgsl/inspector/BUILD.bazel
@@ -42,6 +42,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/sem",
@@ -77,6 +78,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/inspector",
     "//src/tint/lang/wgsl/program",
diff --git a/src/tint/lang/wgsl/inspector/BUILD.cmake b/src/tint/lang/wgsl/inspector/BUILD.cmake
index e5b36a0..5c0e910 100644
--- a/src/tint/lang/wgsl/inspector/BUILD.cmake
+++ b/src/tint/lang/wgsl/inspector/BUILD.cmake
@@ -41,6 +41,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_sem
@@ -76,6 +77,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_inspector
   tint_lang_wgsl_program
diff --git a/src/tint/lang/wgsl/inspector/BUILD.gn b/src/tint/lang/wgsl/inspector/BUILD.gn
index 5fea9d0..00feb25 100644
--- a/src/tint/lang/wgsl/inspector/BUILD.gn
+++ b/src/tint/lang/wgsl/inspector/BUILD.gn
@@ -45,6 +45,7 @@
     "${tint_src_dir}/lang/core",
     "${tint_src_dir}/lang/core/constant",
     "${tint_src_dir}/lang/core/type",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/lang/wgsl/program",
     "${tint_src_dir}/lang/wgsl/sem",
@@ -79,6 +80,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/inspector",
       "${tint_src_dir}/lang/wgsl/program",
diff --git a/src/tint/lang/wgsl/inspector/inspector.cc b/src/tint/lang/wgsl/inspector/inspector.cc
index 7688ece..48cc3b7 100644
--- a/src/tint/lang/wgsl/inspector/inspector.cc
+++ b/src/tint/lang/wgsl/inspector/inspector.cc
@@ -18,7 +18,6 @@
 #include <utility>
 
 #include "src/tint/lang/core/builtin_value.h"
-#include "src/tint/lang/core/extension.h"
 #include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/interpolation_sampling.h"
 #include "src/tint/lang/core/interpolation_type.h"
@@ -48,6 +47,7 @@
 #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/lang/wgsl/extension.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"
diff --git a/src/tint/lang/wgsl/inspector/inspector_test.cc b/src/tint/lang/wgsl/inspector/inspector_test.cc
index ad171bd..f2099b5 100644
--- a/src/tint/lang/wgsl/inspector/inspector_test.cc
+++ b/src/tint/lang/wgsl/inspector/inspector_test.cc
@@ -402,7 +402,7 @@
     std::function<ast::Type()> tint_type = GetTypeFunction(component, composition);
 
     if (component == ComponentType::kF16) {
-        Enable(core::Extension::kF16);
+        Enable(wgsl::Extension::kF16);
     }
 
     auto* in_var = Param("in_var", tint_type(),
@@ -1021,7 +1021,7 @@
 }
 
 TEST_F(InspectorGetEntryPointTest, OverrideTypes) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Override("bool_var", ty.bool_());
     Override("float_var", ty.f32());
@@ -1540,7 +1540,7 @@
     // var<pixel_local> pls : Ure;
     // @fragment fn foo() {  _ = pls; }
 
-    Enable(core::Extension::kChromiumExperimentalPixelLocal);
+    Enable(wgsl::Extension::kChromiumExperimentalPixelLocal);
     Structure("Ure", Vector{
                          Member("toto", ty.u32()),
                          Member("titi", ty.f32()),
@@ -1777,7 +1777,7 @@
 }
 
 TEST_F(InspectorGetOverrideDefaultValuesTest, F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Override("a", ty.f16(), Id(1_a));
     Override("b", ty.f16(), Expr(0_h), Id(20_a));
@@ -3087,11 +3087,11 @@
             expectedResourceType = ResourceBinding::ResourceType::kWriteOnlyStorageTexture;
             break;
         case core::Access::kRead:
-            Enable(core::Extension::kChromiumExperimentalReadWriteStorageTexture);
+            Enable(wgsl::Extension::kChromiumExperimentalReadWriteStorageTexture);
             expectedResourceType = ResourceBinding::ResourceType::kReadOnlyStorageTexture;
             break;
         case core::Access::kReadWrite:
-            Enable(core::Extension::kChromiumExperimentalReadWriteStorageTexture);
+            Enable(wgsl::Extension::kChromiumExperimentalReadWriteStorageTexture);
             expectedResourceType = ResourceBinding::ResourceType::kReadWriteStorageTexture;
             break;
         case core::Access::kUndefined:
diff --git a/src/tint/lang/wgsl/program/BUILD.bazel b/src/tint/lang/wgsl/program/BUILD.bazel
index aefd945..1fcc0d5 100644
--- a/src/tint/lang/wgsl/program/BUILD.bazel
+++ b/src/tint/lang/wgsl/program/BUILD.bazel
@@ -40,6 +40,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/sem",
     "//src/tint/utils/containers",
@@ -72,6 +73,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast:test",
     "//src/tint/lang/wgsl/program",
diff --git a/src/tint/lang/wgsl/program/BUILD.cmake b/src/tint/lang/wgsl/program/BUILD.cmake
index bae5dda..05bfcdb 100644
--- a/src/tint/lang/wgsl/program/BUILD.cmake
+++ b/src/tint/lang/wgsl/program/BUILD.cmake
@@ -39,6 +39,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_sem
   tint_utils_containers
@@ -71,6 +72,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_test
   tint_lang_wgsl_program
diff --git a/src/tint/lang/wgsl/program/BUILD.gn b/src/tint/lang/wgsl/program/BUILD.gn
index 784b43c..ea3bd1b 100644
--- a/src/tint/lang/wgsl/program/BUILD.gn
+++ b/src/tint/lang/wgsl/program/BUILD.gn
@@ -43,6 +43,7 @@
     "${tint_src_dir}/lang/core",
     "${tint_src_dir}/lang/core/constant",
     "${tint_src_dir}/lang/core/type",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/lang/wgsl/sem",
     "${tint_src_dir}/utils/containers",
@@ -74,6 +75,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/ast:unittests",
       "${tint_src_dir}/lang/wgsl/program",
diff --git a/src/tint/lang/wgsl/program/program_builder.h b/src/tint/lang/wgsl/program/program_builder.h
index 9daac97..81fdfc7 100644
--- a/src/tint/lang/wgsl/program/program_builder.h
+++ b/src/tint/lang/wgsl/program/program_builder.h
@@ -22,7 +22,6 @@
 #include "src/tint/api/common/override_id.h"
 
 #include "src/tint/lang/core/constant/manager.h"
-#include "src/tint/lang/core/extension.h"
 #include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/interpolation_sampling.h"
 #include "src/tint/lang/core/interpolation_type.h"
@@ -45,6 +44,7 @@
 #include "src/tint/lang/core/type/vector.h"
 #include "src/tint/lang/core/type/void.h"
 #include "src/tint/lang/wgsl/ast/builder.h"
+#include "src/tint/lang/wgsl/extension.h"
 #include "src/tint/lang/wgsl/program/program.h"
 #include "src/tint/lang/wgsl/sem/array_count.h"
 #include "src/tint/lang/wgsl/sem/struct.h"
diff --git a/src/tint/lang/wgsl/reader/BUILD.bazel b/src/tint/lang/wgsl/reader/BUILD.bazel
index 4e8ffe5..43922a8 100644
--- a/src/tint/lang/wgsl/reader/BUILD.bazel
+++ b/src/tint/lang/wgsl/reader/BUILD.bazel
@@ -36,6 +36,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/reader/parser",
@@ -68,6 +69,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/reader",
diff --git a/src/tint/lang/wgsl/reader/BUILD.cmake b/src/tint/lang/wgsl/reader/BUILD.cmake
index 2c84e0b..9848c4b 100644
--- a/src/tint/lang/wgsl/reader/BUILD.cmake
+++ b/src/tint/lang/wgsl/reader/BUILD.cmake
@@ -38,6 +38,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_reader_parser
@@ -71,6 +72,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_reader
diff --git a/src/tint/lang/wgsl/reader/BUILD.gn b/src/tint/lang/wgsl/reader/BUILD.gn
index e26cd97..7c450ca 100644
--- a/src/tint/lang/wgsl/reader/BUILD.gn
+++ b/src/tint/lang/wgsl/reader/BUILD.gn
@@ -35,6 +35,7 @@
     "${tint_src_dir}/lang/core",
     "${tint_src_dir}/lang/core/constant",
     "${tint_src_dir}/lang/core/type",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/lang/wgsl/program",
     "${tint_src_dir}/lang/wgsl/reader/parser",
diff --git a/src/tint/lang/wgsl/reader/parser/BUILD.bazel b/src/tint/lang/wgsl/reader/parser/BUILD.bazel
index fdb4446..d1d9b22 100644
--- a/src/tint/lang/wgsl/reader/parser/BUILD.bazel
+++ b/src/tint/lang/wgsl/reader/parser/BUILD.bazel
@@ -43,6 +43,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/resolver",
@@ -142,6 +143,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast:test",
     "//src/tint/lang/wgsl/program",
diff --git a/src/tint/lang/wgsl/reader/parser/BUILD.cmake b/src/tint/lang/wgsl/reader/parser/BUILD.cmake
index e53c99c..453af11 100644
--- a/src/tint/lang/wgsl/reader/parser/BUILD.cmake
+++ b/src/tint/lang/wgsl/reader/parser/BUILD.cmake
@@ -42,6 +42,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_resolver
@@ -141,6 +142,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_test
   tint_lang_wgsl_program
diff --git a/src/tint/lang/wgsl/reader/parser/BUILD.gn b/src/tint/lang/wgsl/reader/parser/BUILD.gn
index 36c9f43..f765960 100644
--- a/src/tint/lang/wgsl/reader/parser/BUILD.gn
+++ b/src/tint/lang/wgsl/reader/parser/BUILD.gn
@@ -46,6 +46,7 @@
     "${tint_src_dir}/lang/core",
     "${tint_src_dir}/lang/core/constant",
     "${tint_src_dir}/lang/core/type",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/lang/wgsl/program",
     "${tint_src_dir}/lang/wgsl/resolver",
@@ -144,6 +145,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/ast:unittests",
       "${tint_src_dir}/lang/wgsl/program",
diff --git a/src/tint/lang/wgsl/reader/parser/diagnostic_attribute_test.cc b/src/tint/lang/wgsl/reader/parser/diagnostic_attribute_test.cc
index 120f5ac..88b1a20 100644
--- a/src/tint/lang/wgsl/reader/parser/diagnostic_attribute_test.cc
+++ b/src/tint/lang/wgsl/reader/parser/diagnostic_attribute_test.cc
@@ -27,7 +27,7 @@
     EXPECT_TRUE(a.matched);
     auto* d = a.value->As<ast::DiagnosticAttribute>();
     ASSERT_NE(d, nullptr);
-    EXPECT_EQ(d->control.severity, core::DiagnosticSeverity::kOff);
+    EXPECT_EQ(d->control.severity, wgsl::DiagnosticSeverity::kOff);
     auto* r = d->control.rule_name;
     ASSERT_NE(r, nullptr);
     EXPECT_EQ(r->category, nullptr);
@@ -41,7 +41,7 @@
     EXPECT_TRUE(a.matched);
     auto* d = a.value->As<ast::DiagnosticAttribute>();
     ASSERT_NE(d, nullptr);
-    EXPECT_EQ(d->control.severity, core::DiagnosticSeverity::kOff);
+    EXPECT_EQ(d->control.severity, wgsl::DiagnosticSeverity::kOff);
     auto* r = d->control.rule_name;
     ASSERT_NE(r, nullptr);
     ast::CheckIdentifier(r->category, "foo");
diff --git a/src/tint/lang/wgsl/reader/parser/diagnostic_control_test.cc b/src/tint/lang/wgsl/reader/parser/diagnostic_control_test.cc
index f89dfb5..4adeab6 100644
--- a/src/tint/lang/wgsl/reader/parser/diagnostic_control_test.cc
+++ b/src/tint/lang/wgsl/reader/parser/diagnostic_control_test.cc
@@ -20,7 +20,7 @@
 namespace tint::wgsl::reader {
 namespace {
 
-using SeverityPair = std::pair<std::string, core::DiagnosticSeverity>;
+using SeverityPair = std::pair<std::string, wgsl::DiagnosticSeverity>;
 class DiagnosticControlParserTest : public WGSLParserTestWithParam<SeverityPair> {};
 
 TEST_P(DiagnosticControlParserTest, DiagnosticControl_Name) {
@@ -51,18 +51,18 @@
 }
 INSTANTIATE_TEST_SUITE_P(DiagnosticControlParserTest,
                          DiagnosticControlParserTest,
-                         testing::Values(SeverityPair{"error", core::DiagnosticSeverity::kError},
+                         testing::Values(SeverityPair{"error", wgsl::DiagnosticSeverity::kError},
                                          SeverityPair{"warning",
-                                                      core::DiagnosticSeverity::kWarning},
-                                         SeverityPair{"info", core::DiagnosticSeverity::kInfo},
-                                         SeverityPair{"off", core::DiagnosticSeverity::kOff}));
+                                                      wgsl::DiagnosticSeverity::kWarning},
+                                         SeverityPair{"info", wgsl::DiagnosticSeverity::kInfo},
+                                         SeverityPair{"off", wgsl::DiagnosticSeverity::kOff}));
 
 TEST_F(WGSLParserTest, DiagnosticControl_Name_TrailingComma) {
     auto p = parser("(error, foo,)");
     auto e = p->expect_diagnostic_control();
     EXPECT_FALSE(e.errored);
     EXPECT_FALSE(p->has_error()) << p->error();
-    EXPECT_EQ(e->severity, core::DiagnosticSeverity::kError);
+    EXPECT_EQ(e->severity, wgsl::DiagnosticSeverity::kError);
 
     auto* r = e->rule_name;
     ASSERT_NE(r, nullptr);
@@ -75,7 +75,7 @@
     auto e = p->expect_diagnostic_control();
     EXPECT_FALSE(e.errored);
     EXPECT_FALSE(p->has_error()) << p->error();
-    EXPECT_EQ(e->severity, core::DiagnosticSeverity::kError);
+    EXPECT_EQ(e->severity, wgsl::DiagnosticSeverity::kError);
 
     auto* r = e->rule_name;
     ASSERT_NE(r, nullptr);
diff --git a/src/tint/lang/wgsl/reader/parser/diagnostic_directive_test.cc b/src/tint/lang/wgsl/reader/parser/diagnostic_directive_test.cc
index 0e10e4c..6ba4f8d 100644
--- a/src/tint/lang/wgsl/reader/parser/diagnostic_directive_test.cc
+++ b/src/tint/lang/wgsl/reader/parser/diagnostic_directive_test.cc
@@ -27,7 +27,7 @@
     auto& ast = p->builder().AST();
     ASSERT_EQ(ast.DiagnosticDirectives().Length(), 1u);
     auto* directive = ast.DiagnosticDirectives()[0];
-    EXPECT_EQ(directive->control.severity, core::DiagnosticSeverity::kOff);
+    EXPECT_EQ(directive->control.severity, wgsl::DiagnosticSeverity::kOff);
     ASSERT_EQ(ast.GlobalDeclarations().Length(), 1u);
     EXPECT_EQ(ast.GlobalDeclarations()[0], directive);
 
@@ -44,7 +44,7 @@
     auto& ast = p->builder().AST();
     ASSERT_EQ(ast.DiagnosticDirectives().Length(), 1u);
     auto* directive = ast.DiagnosticDirectives()[0];
-    EXPECT_EQ(directive->control.severity, core::DiagnosticSeverity::kOff);
+    EXPECT_EQ(directive->control.severity, wgsl::DiagnosticSeverity::kOff);
     ASSERT_EQ(ast.GlobalDeclarations().Length(), 1u);
     EXPECT_EQ(ast.GlobalDeclarations()[0], directive);
 
diff --git a/src/tint/lang/wgsl/reader/parser/enable_directive_test.cc b/src/tint/lang/wgsl/reader/parser/enable_directive_test.cc
index 9f71c25..4897ab6 100644
--- a/src/tint/lang/wgsl/reader/parser/enable_directive_test.cc
+++ b/src/tint/lang/wgsl/reader/parser/enable_directive_test.cc
@@ -35,7 +35,7 @@
     EXPECT_EQ(enable->source.range.end.line, 1u);
     EXPECT_EQ(enable->source.range.end.column, 12u);
     ASSERT_EQ(enable->extensions.Length(), 1u);
-    EXPECT_EQ(enable->extensions[0]->name, core::Extension::kF16);
+    EXPECT_EQ(enable->extensions[0]->name, wgsl::Extension::kF16);
     EXPECT_EQ(enable->extensions[0]->source.range.begin.line, 1u);
     EXPECT_EQ(enable->extensions[0]->source.range.begin.column, 8u);
     EXPECT_EQ(enable->extensions[0]->source.range.end.line, 1u);
@@ -58,7 +58,7 @@
     EXPECT_EQ(enable->source.range.end.line, 1u);
     EXPECT_EQ(enable->source.range.end.column, 14u);
     ASSERT_EQ(enable->extensions.Length(), 1u);
-    EXPECT_EQ(enable->extensions[0]->name, core::Extension::kF16);
+    EXPECT_EQ(enable->extensions[0]->name, wgsl::Extension::kF16);
     EXPECT_EQ(enable->extensions[0]->source.range.begin.line, 1u);
     EXPECT_EQ(enable->extensions[0]->source.range.begin.column, 8u);
     EXPECT_EQ(enable->extensions[0]->source.range.end.line, 1u);
@@ -78,17 +78,17 @@
     ASSERT_EQ(ast.Enables().Length(), 1u);
     auto* enable = ast.Enables()[0];
     ASSERT_EQ(enable->extensions.Length(), 3u);
-    EXPECT_EQ(enable->extensions[0]->name, core::Extension::kF16);
+    EXPECT_EQ(enable->extensions[0]->name, wgsl::Extension::kF16);
     EXPECT_EQ(enable->extensions[0]->source.range.begin.line, 1u);
     EXPECT_EQ(enable->extensions[0]->source.range.begin.column, 8u);
     EXPECT_EQ(enable->extensions[0]->source.range.end.line, 1u);
     EXPECT_EQ(enable->extensions[0]->source.range.end.column, 11u);
-    EXPECT_EQ(enable->extensions[1]->name, core::Extension::kChromiumDisableUniformityAnalysis);
+    EXPECT_EQ(enable->extensions[1]->name, wgsl::Extension::kChromiumDisableUniformityAnalysis);
     EXPECT_EQ(enable->extensions[1]->source.range.begin.line, 1u);
     EXPECT_EQ(enable->extensions[1]->source.range.begin.column, 13u);
     EXPECT_EQ(enable->extensions[1]->source.range.end.line, 1u);
     EXPECT_EQ(enable->extensions[1]->source.range.end.column, 49u);
-    EXPECT_EQ(enable->extensions[2]->name, core::Extension::kChromiumExperimentalDp4A);
+    EXPECT_EQ(enable->extensions[2]->name, wgsl::Extension::kChromiumExperimentalDp4A);
     EXPECT_EQ(enable->extensions[2]->source.range.begin.line, 1u);
     EXPECT_EQ(enable->extensions[2]->source.range.begin.column, 51u);
     EXPECT_EQ(enable->extensions[2]->source.range.end.line, 1u);
@@ -108,17 +108,17 @@
     ASSERT_EQ(ast.Enables().Length(), 1u);
     auto* enable = ast.Enables()[0];
     ASSERT_EQ(enable->extensions.Length(), 3u);
-    EXPECT_EQ(enable->extensions[0]->name, core::Extension::kF16);
+    EXPECT_EQ(enable->extensions[0]->name, wgsl::Extension::kF16);
     EXPECT_EQ(enable->extensions[0]->source.range.begin.line, 1u);
     EXPECT_EQ(enable->extensions[0]->source.range.begin.column, 8u);
     EXPECT_EQ(enable->extensions[0]->source.range.end.line, 1u);
     EXPECT_EQ(enable->extensions[0]->source.range.end.column, 11u);
-    EXPECT_EQ(enable->extensions[1]->name, core::Extension::kChromiumDisableUniformityAnalysis);
+    EXPECT_EQ(enable->extensions[1]->name, wgsl::Extension::kChromiumDisableUniformityAnalysis);
     EXPECT_EQ(enable->extensions[1]->source.range.begin.line, 1u);
     EXPECT_EQ(enable->extensions[1]->source.range.begin.column, 13u);
     EXPECT_EQ(enable->extensions[1]->source.range.end.line, 1u);
     EXPECT_EQ(enable->extensions[1]->source.range.end.column, 49u);
-    EXPECT_EQ(enable->extensions[2]->name, core::Extension::kChromiumExperimentalDp4A);
+    EXPECT_EQ(enable->extensions[2]->name, wgsl::Extension::kChromiumExperimentalDp4A);
     EXPECT_EQ(enable->extensions[2]->source.range.begin.line, 1u);
     EXPECT_EQ(enable->extensions[2]->source.range.begin.column, 51u);
     EXPECT_EQ(enable->extensions[2]->source.range.end.line, 1u);
@@ -141,13 +141,13 @@
     auto* enable_a = ast.Enables()[0];
     auto* enable_b = ast.Enables()[1];
     ASSERT_EQ(enable_a->extensions.Length(), 1u);
-    EXPECT_EQ(enable_a->extensions[0]->name, core::Extension::kF16);
+    EXPECT_EQ(enable_a->extensions[0]->name, wgsl::Extension::kF16);
     EXPECT_EQ(enable_a->extensions[0]->source.range.begin.line, 2u);
     EXPECT_EQ(enable_a->extensions[0]->source.range.begin.column, 8u);
     EXPECT_EQ(enable_a->extensions[0]->source.range.end.line, 2u);
     EXPECT_EQ(enable_a->extensions[0]->source.range.end.column, 11u);
     ASSERT_EQ(enable_b->extensions.Length(), 1u);
-    EXPECT_EQ(enable_b->extensions[0]->name, core::Extension::kF16);
+    EXPECT_EQ(enable_b->extensions[0]->name, wgsl::Extension::kF16);
     EXPECT_EQ(enable_b->extensions[0]->source.range.begin.line, 3u);
     EXPECT_EQ(enable_b->extensions[0]->source.range.begin.column, 8u);
     EXPECT_EQ(enable_b->extensions[0]->source.range.end.line, 3u);
@@ -272,7 +272,7 @@
     ASSERT_EQ(ast.Enables().Length(), 1u);
     auto* enable = ast.Enables()[0];
     ASSERT_EQ(enable->extensions.Length(), 1u);
-    EXPECT_EQ(enable->extensions[0]->name, core::Extension::kF16);
+    EXPECT_EQ(enable->extensions[0]->name, wgsl::Extension::kF16);
     EXPECT_EQ(enable->extensions[0]->source.range.begin.line, 3u);
     EXPECT_EQ(enable->extensions[0]->source.range.begin.column, 8u);
     EXPECT_EQ(enable->extensions[0]->source.range.end.line, 3u);
@@ -297,7 +297,7 @@
     ASSERT_EQ(ast.Enables().Length(), 1u);
     auto* enable = ast.Enables()[0];
     ASSERT_EQ(enable->extensions.Length(), 1u);
-    EXPECT_EQ(enable->extensions[0]->name, core::Extension::kF16);
+    EXPECT_EQ(enable->extensions[0]->name, wgsl::Extension::kF16);
     EXPECT_EQ(enable->extensions[0]->source.range.begin.line, 3u);
     EXPECT_EQ(enable->extensions[0]->source.range.begin.column, 8u);
     EXPECT_EQ(enable->extensions[0]->source.range.end.line, 3u);
diff --git a/src/tint/lang/wgsl/reader/parser/parser.cc b/src/tint/lang/wgsl/reader/parser/parser.cc
index 3905e3e..49defa2 100644
--- a/src/tint/lang/wgsl/reader/parser/parser.cc
+++ b/src/tint/lang/wgsl/reader/parser/parser.cc
@@ -416,7 +416,7 @@
         Vector<const ast::Extension*, 4> extensions;
         while (continue_parsing()) {
             Source ext_src = peek().source();
-            auto ext = expect_enum("extension", core::ParseExtension, core::kExtensionStrings);
+            auto ext = expect_enum("extension", wgsl::ParseExtension, wgsl::kExtensionStrings);
             if (ext.errored) {
                 return Failure::kErrored;
             }
@@ -3142,9 +3142,9 @@
 //   | 'warning'
 //   | 'info'
 //   | 'off'
-Expect<core::DiagnosticSeverity> Parser::expect_severity_control_name() {
-    return expect_enum("severity control", core::ParseDiagnosticSeverity,
-                       core::kDiagnosticSeverityStrings);
+Expect<wgsl::DiagnosticSeverity> Parser::expect_severity_control_name() {
+    return expect_enum("severity control", wgsl::ParseDiagnosticSeverity,
+                       wgsl::kDiagnosticSeverityStrings);
 }
 
 // diagnostic_control
diff --git a/src/tint/lang/wgsl/reader/parser/parser.h b/src/tint/lang/wgsl/reader/parser/parser.h
index 4c3f2b4..f61d74b 100644
--- a/src/tint/lang/wgsl/reader/parser/parser.h
+++ b/src/tint/lang/wgsl/reader/parser/parser.h
@@ -644,7 +644,7 @@
     Expect<const ast::Attribute*> expect_attribute();
     /// Parses a severity_control_name grammar element.
     /// @return the parsed severity control name.
-    Expect<core::DiagnosticSeverity> expect_severity_control_name();
+    Expect<wgsl::DiagnosticSeverity> expect_severity_control_name();
     /// Parses a diagnostic_control grammar element.
     /// @return the parsed diagnostic control.
     Expect<ast::DiagnosticControl> expect_diagnostic_control();
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/BUILD.bazel b/src/tint/lang/wgsl/reader/program_to_ir/BUILD.bazel
index b78023b..17ea099 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/BUILD.bazel
+++ b/src/tint/lang/wgsl/reader/program_to_ir/BUILD.bazel
@@ -39,6 +39,7 @@
     "//src/tint/lang/core/intrinsic/data",
     "//src/tint/lang/core/ir",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/sem",
@@ -83,6 +84,7 @@
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/ir",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/helpers:test",
     "//src/tint/lang/wgsl/program",
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/BUILD.cmake b/src/tint/lang/wgsl/reader/program_to_ir/BUILD.cmake
index ee5707d..39a7619 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/BUILD.cmake
+++ b/src/tint/lang/wgsl/reader/program_to_ir/BUILD.cmake
@@ -38,6 +38,7 @@
   tint_lang_core_intrinsic_data
   tint_lang_core_ir
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_sem
@@ -82,6 +83,7 @@
   tint_lang_core_constant
   tint_lang_core_ir
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_helpers_test
   tint_lang_wgsl_program
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/BUILD.gn b/src/tint/lang/wgsl/reader/program_to_ir/BUILD.gn
index 6b6d958..a2de875 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/BUILD.gn
+++ b/src/tint/lang/wgsl/reader/program_to_ir/BUILD.gn
@@ -42,6 +42,7 @@
     "${tint_src_dir}/lang/core/intrinsic/data",
     "${tint_src_dir}/lang/core/ir",
     "${tint_src_dir}/lang/core/type",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/lang/wgsl/program",
     "${tint_src_dir}/lang/wgsl/sem",
@@ -85,6 +86,7 @@
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/ir",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/helpers:unittests",
       "${tint_src_dir}/lang/wgsl/program",
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/literal_test.cc b/src/tint/lang/wgsl/reader/program_to_ir/literal_test.cc
index 688399c..52a5fa2 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/literal_test.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/literal_test.cc
@@ -143,7 +143,7 @@
 }
 
 TEST_F(ProgramToIRLiteralTest, EmitLiteral_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
     auto* expr = Expr(1.2_h);
     GlobalVar("a", ty.f16(), core::AddressSpace::kPrivate, expr);
 
@@ -158,7 +158,7 @@
 }
 
 TEST_F(ProgramToIRLiteralTest, EmitLiteral_F16_Deduped) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
     GlobalVar("a", ty.f16(), core::AddressSpace::kPrivate, Expr(1.2_h));
     GlobalVar("b", ty.f16(), core::AddressSpace::kPrivate, Expr(1.25_h));
     GlobalVar("c", ty.f16(), core::AddressSpace::kPrivate, Expr(1.2_h));
diff --git a/src/tint/lang/wgsl/resolver/BUILD.bazel b/src/tint/lang/wgsl/resolver/BUILD.bazel
index d9cf277..ffcbc6c 100644
--- a/src/tint/lang/wgsl/resolver/BUILD.bazel
+++ b/src/tint/lang/wgsl/resolver/BUILD.bazel
@@ -48,6 +48,7 @@
     "//src/tint/lang/core/intrinsic",
     "//src/tint/lang/core/intrinsic/data",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/sem",
@@ -137,6 +138,7 @@
     "//src/tint/lang/core/intrinsic",
     "//src/tint/lang/core/type",
     "//src/tint/lang/core/type:test",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/ast/transform",
     "//src/tint/lang/wgsl/ast:test",
diff --git a/src/tint/lang/wgsl/resolver/BUILD.cmake b/src/tint/lang/wgsl/resolver/BUILD.cmake
index a2e516c..bd4bf3b 100644
--- a/src/tint/lang/wgsl/resolver/BUILD.cmake
+++ b/src/tint/lang/wgsl/resolver/BUILD.cmake
@@ -47,6 +47,7 @@
   tint_lang_core_intrinsic
   tint_lang_core_intrinsic_data
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_sem
@@ -136,6 +137,7 @@
   tint_lang_core_intrinsic
   tint_lang_core_type
   tint_lang_core_type_test
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_ast_transform
   tint_lang_wgsl_ast_test
diff --git a/src/tint/lang/wgsl/resolver/BUILD.gn b/src/tint/lang/wgsl/resolver/BUILD.gn
index 319ea05..ef3752b 100644
--- a/src/tint/lang/wgsl/resolver/BUILD.gn
+++ b/src/tint/lang/wgsl/resolver/BUILD.gn
@@ -51,6 +51,7 @@
     "${tint_src_dir}/lang/core/intrinsic",
     "${tint_src_dir}/lang/core/intrinsic/data",
     "${tint_src_dir}/lang/core/type",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/lang/wgsl/program",
     "${tint_src_dir}/lang/wgsl/sem",
@@ -139,6 +140,7 @@
       "${tint_src_dir}/lang/core/intrinsic",
       "${tint_src_dir}/lang/core/type",
       "${tint_src_dir}/lang/core/type:unittests",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/ast:unittests",
       "${tint_src_dir}/lang/wgsl/ast/transform",
diff --git a/src/tint/lang/wgsl/resolver/address_space_layout_validation_test.cc b/src/tint/lang/wgsl/resolver/address_space_layout_validation_test.cc
index 632683b..43c646a 100644
--- a/src/tint/lang/wgsl/resolver/address_space_layout_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/address_space_layout_validation_test.cc
@@ -372,7 +372,7 @@
     // @group(0) @binding(0)
     // var<uniform> a : ScalarPackedAtEndOfVec3;
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Structure("ScalarPackedAtEndOfVec3", Vector{
                                              Member("v", ty.vec3(ty.f16())),
@@ -569,7 +569,7 @@
     //     @align(1) b : f32;
     // };
     // var<push_constant> a : S;
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     Structure(Source{{12, 34}}, "S",
               Vector{Member("a", ty.f32(), Vector{MemberSize(5_a)}),
                      Member(Source{{34, 56}}, "b", ty.f32(), Vector{MemberAlign(1_i)})});
@@ -595,7 +595,7 @@
     //     @align(4) b : f32;
     // };
     // var<push_constant> a : S;
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     Structure("S", Vector{Member("a", ty.f32(), Vector{MemberSize(5_a)}),
                           Member("b", ty.f32(), Vector{MemberAlign(4_i)})});
     GlobalVar("a", ty("S"), core::AddressSpace::kPushConstant);
@@ -618,7 +618,7 @@
     // @group(0) @binding(0)
     // var<uniform> a : Outer;
 
-    Enable(core::Extension::kChromiumInternalRelaxedUniformLayout);
+    Enable(wgsl::Extension::kChromiumInternalRelaxedUniformLayout);
 
     Structure(Source{{12, 34}}, "Inner",
               Vector{
@@ -650,7 +650,7 @@
     // @group(0) @binding(0)
     // var<uniform> a : Outer;
 
-    Enable(core::Extension::kChromiumInternalRelaxedUniformLayout);
+    Enable(wgsl::Extension::kChromiumInternalRelaxedUniformLayout);
 
     Alias("Inner", ty.array<f32, 10>(Vector{Stride(16)}));
 
@@ -681,7 +681,7 @@
     // @group(0) @binding(0)
     // var<uniform> a : Outer;
 
-    Enable(core::Extension::kChromiumInternalRelaxedUniformLayout);
+    Enable(wgsl::Extension::kChromiumInternalRelaxedUniformLayout);
 
     Structure(Source{{12, 34}}, "Inner",
               Vector{
@@ -710,7 +710,7 @@
     // @group(0) @binding(0)
     // var<uniform> a : Outer;
 
-    Enable(core::Extension::kChromiumInternalRelaxedUniformLayout);
+    Enable(wgsl::Extension::kChromiumInternalRelaxedUniformLayout);
 
     Structure(Source{{12, 34}}, "Outer",
               Vector{
@@ -734,8 +734,8 @@
     // @group(0) @binding(0)
     // var<uniform> a : Outer;
 
-    Enable(core::Extension::kF16);
-    Enable(core::Extension::kChromiumInternalRelaxedUniformLayout);
+    Enable(wgsl::Extension::kF16);
+    Enable(wgsl::Extension::kChromiumInternalRelaxedUniformLayout);
 
     Structure(Source{{12, 34}}, "Outer",
               Vector{
diff --git a/src/tint/lang/wgsl/resolver/address_space_validation_test.cc b/src/tint/lang/wgsl/resolver/address_space_validation_test.cc
index 917a546..1d4f390d 100644
--- a/src/tint/lang/wgsl/resolver/address_space_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/address_space_validation_test.cc
@@ -245,7 +245,7 @@
 TEST_F(ResolverAddressSpaceValidationTest, GlobalVariable_Storage_F16) {
     // enable f16;
     // var<storage> g : f16;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("g", ty.f16(), core::AddressSpace::kStorage, Binding(0_a), Group(0_a));
 
@@ -255,7 +255,7 @@
 TEST_F(ResolverAddressSpaceValidationTest, PointerAlias_Storage_F16) {
     // enable f16;
     // type t = ptr<storage, f16>;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Alias("t", ty.ptr<storage, f16>());
 
@@ -266,7 +266,7 @@
     // enable f16;
     // type a = f16;
     // var<storage, read> g : a;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Alias("a", ty.f16());
     GlobalVar("g", ty("a"), core::AddressSpace::kStorage, Binding(0_a), Group(0_a));
@@ -278,7 +278,7 @@
     // enable f16;
     // type a = f16;
     // type t = ptr<storage, a>;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Alias("a", ty.f16());
     Alias("t", ty.ptr<storage>(ty("a")));
@@ -302,7 +302,7 @@
 
 TEST_F(ResolverAddressSpaceValidationTest, GlobalVariable_Storage_VectorF16) {
     // var<storage> g : vec4<f16>;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
     GlobalVar("g", ty.vec(ty.f16(), 4u), core::AddressSpace::kStorage, Binding(0_a), Group(0_a));
 
     ASSERT_TRUE(r()->Resolve()) << r()->error();
@@ -310,7 +310,7 @@
 
 TEST_F(ResolverAddressSpaceValidationTest, PointerAlias_Storage_VectorF16) {
     // type t = ptr<storage, vec4<f16>>;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
     Alias("t", ty.ptr<storage, vec4<f32>>());
 
     ASSERT_TRUE(r()->Resolve()) << r()->error();
@@ -339,7 +339,7 @@
     // enable f16;
     // struct S{ a : f16 };
     // var<storage, read> g : array<S, 3u>;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Structure("S", Vector{Member("a", ty.f16())});
     GlobalVar("g", ty.array(ty("S"), 3_u), core::AddressSpace::kStorage, core::Access::kRead,
@@ -352,7 +352,7 @@
     // enable f16;
     // struct S{ a : f16 };
     // type t = ptr<storage, array<S, 3u>, read>;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Structure("S", Vector{Member("a", ty.f16())});
     Alias("t", ty.ptr<storage, read>(ty.array(ty("S"), 3_u)));
@@ -407,7 +407,7 @@
 TEST_F(ResolverAddressSpaceValidationTest, GlobalVariable_Storage_StructF16) {
     // struct S { x : f16 };
     // var<storage, read> g : S;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Structure("S", Vector{Member("x", ty.f16())});
     GlobalVar("g", ty("S"), core::AddressSpace::kStorage, core::Access::kRead, Binding(0_a),
@@ -419,7 +419,7 @@
 TEST_F(ResolverAddressSpaceValidationTest, PointerAlias_Storage_StructF16) {
     // struct S { x : f16 };
     // type t = ptr<storage, S, read>;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Structure("S", Vector{Member("x", ty.f16())});
     Alias("t", ty.ptr<storage, read>(ty("S")));
@@ -431,7 +431,7 @@
     // struct S { x : f16 };
     // type a1 = S;
     // var<storage, read> g : a1;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Structure("S", Vector{Member("x", ty.f16())});
     Alias("a1", ty("S"));
@@ -446,7 +446,7 @@
     // struct S { x : f16 };
     // type a1 = S;
     // type t = ptr<storage, a1, read>;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Structure("S", Vector{Member("x", ty.f16())});
     Alias("a1", ty("S"));
@@ -661,7 +661,7 @@
 TEST_F(ResolverAddressSpaceValidationTest, GlobalVariable_UniformBufferF16) {
     // enable f16;
     // var<uniform> g : f16;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("g", ty.f16(), core::AddressSpace::kUniform, Binding(0_a), Group(0_a));
 
@@ -671,7 +671,7 @@
 TEST_F(ResolverAddressSpaceValidationTest, PointerAlias_UniformBufferF16) {
     // enable f16;
     // type t = ptr<uniform, f16>;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Alias("t", ty.ptr<uniform, f16>());
 
@@ -695,7 +695,7 @@
 TEST_F(ResolverAddressSpaceValidationTest, GlobalVariable_UniformBufferVectorF16) {
     // enable f16;
     // var<uniform> g : vec4<f16>;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("g", ty.vec4<f16>(), core::AddressSpace::kUniform, Binding(0_a), Group(0_a));
 
@@ -705,7 +705,7 @@
 TEST_F(ResolverAddressSpaceValidationTest, PointerAlias_UniformBufferVectorF16) {
     // enable f16;
     // type t = ptr<uniform, vec4<f16>>;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Alias("t", ty.ptr<uniform, f16>());
 
@@ -740,7 +740,7 @@
     //   @size(16) f : f16;
     // }
     // var<uniform> g : array<S, 3u>;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Structure("S", Vector{Member("a", ty.f16(), Vector{MemberSize(16_a)})});
     GlobalVar("g", ty.array(ty("S"), 3_u), core::AddressSpace::kUniform, Binding(0_a), Group(0_a));
@@ -754,7 +754,7 @@
     //   @size(16) f : f16;
     // }
     // type t = ptr<uniform, array<S, 3u>>;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Structure("S", Vector{Member("a", ty.f16(), Vector{MemberSize(16_a)})});
     Alias("t", ty.ptr<uniform>(ty.array(ty("S"), 3_u)));
@@ -806,7 +806,7 @@
     // enable f16;
     // struct S { x : f16 };
     // var<uniform> g : S;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Structure("S", Vector{Member("x", ty.f16())});
     GlobalVar("g", ty("S"), core::AddressSpace::kUniform, Binding(0_a), Group(0_a));
@@ -818,7 +818,7 @@
     // enable f16;
     // struct S { x : f16 };
     // type t = ptr<uniform, S>;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Structure("S", Vector{Member("x", ty.f16())});
     Alias("t", ty.ptr<uniform>(ty("S")));
@@ -831,7 +831,7 @@
     // struct S { x : f16 };
     // type a1 = S;
     // var<uniform> g : a1;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Structure("S", Vector{Member("x", ty.f16())});
     Alias("a1", ty("S"));
@@ -845,7 +845,7 @@
     // struct S { x : f16 };
     // type a1 = S;
     // type t = ptr<uniform, a1>;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Structure("S", Vector{Member("x", ty.f16())});
     Alias("a1", ty("S"));
@@ -857,7 +857,7 @@
 TEST_F(ResolverAddressSpaceValidationTest, GlobalVariable_PushConstantBool) {
     // enable chromium_experimental_push_constant;
     // var<push_constant> g : bool;
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     GlobalVar(Source{{56, 78}}, "g", ty.bool_(Source{{12, 34}}), core::AddressSpace::kPushConstant);
 
     ASSERT_FALSE(r()->Resolve());
@@ -870,7 +870,7 @@
 TEST_F(ResolverAddressSpaceValidationTest, PointerAlias_PushConstantBool) {
     // enable chromium_experimental_push_constant;
     // type t = ptr<push_constant, bool>;
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     Alias(Source{{56, 78}}, "t", ty.ptr<push_constant>(ty.bool_(Source{{12, 34}})));
 
     ASSERT_FALSE(r()->Resolve());
@@ -884,8 +884,8 @@
     // enable f16;
     // enable chromium_experimental_push_constant;
     // var<push_constant> g : f16;
-    Enable(core::Extension::kF16);
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kF16);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     GlobalVar("g", ty.f16(Source{{56, 78}}), core::AddressSpace::kPushConstant);
 
     ASSERT_FALSE(r()->Resolve());
@@ -897,8 +897,8 @@
     // enable f16;
     // enable chromium_experimental_push_constant;
     // type t = ptr<push_constant, f16>;
-    Enable(core::Extension::kF16);
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kF16);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     Alias("t", ty.ptr<push_constant>(ty.f16(Source{{56, 78}})));
 
     ASSERT_FALSE(r()->Resolve());
@@ -909,7 +909,7 @@
 TEST_F(ResolverAddressSpaceValidationTest, GlobalVariable_PushConstantPointer) {
     // enable chromium_experimental_push_constant;
     // var<push_constant> g : ptr<private, f32>;
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     GlobalVar(Source{{56, 78}}, "g", ty.ptr<private_, f32>(Source{{12, 34}}),
               core::AddressSpace::kPushConstant);
 
@@ -923,7 +923,7 @@
 TEST_F(ResolverAddressSpaceValidationTest, PointerAlias_PushConstantPointer) {
     // enable chromium_experimental_push_constant;
     // type t = ptr<push_constant, ptr<private, f32>>;
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     Alias(Source{{56, 78}}, "t", ty.ptr<push_constant>(ty.ptr<private_, f32>(Source{{12, 34}})));
 
     ASSERT_FALSE(r()->Resolve());
@@ -936,7 +936,7 @@
 TEST_F(ResolverAddressSpaceValidationTest, GlobalVariable_PushConstantIntScalar) {
     // enable chromium_experimental_push_constant;
     // var<push_constant> g : i32;
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     GlobalVar("g", ty.i32(), core::AddressSpace::kPushConstant);
 
     ASSERT_TRUE(r()->Resolve()) << r()->error();
@@ -945,7 +945,7 @@
 TEST_F(ResolverAddressSpaceValidationTest, PointerAlias_PushConstantIntScalar) {
     // enable chromium_experimental_push_constant;
     // type t = ptr<push_constant, i32>;
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     Alias("t", ty.ptr<push_constant, i32>());
 
     ASSERT_TRUE(r()->Resolve()) << r()->error();
@@ -954,7 +954,7 @@
 TEST_F(ResolverAddressSpaceValidationTest, GlobalVariable_PushConstantVectorF32) {
     // enable chromium_experimental_push_constant;
     // var<push_constant> g : vec4<f32>;
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     GlobalVar("g", ty.vec4<f32>(), core::AddressSpace::kPushConstant);
 
     ASSERT_TRUE(r()->Resolve()) << r()->error();
@@ -963,7 +963,7 @@
 TEST_F(ResolverAddressSpaceValidationTest, PointerAlias_PushConstantVectorF32) {
     // enable chromium_experimental_push_constant;
     // var<push_constant> g : vec4<f32>;
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     Alias("t", ty.ptr<push_constant, vec4<f32>>());
 
     ASSERT_TRUE(r()->Resolve()) << r()->error();
@@ -973,7 +973,7 @@
     // enable chromium_experimental_push_constant;
     // struct S { a : f32}
     // var<push_constant> g : array<S, 3u>;
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     Structure("S", Vector{Member("a", ty.f32())});
     GlobalVar("g", ty.array(ty("S"), 3_u), core::AddressSpace::kPushConstant);
 
@@ -984,7 +984,7 @@
     // enable chromium_experimental_push_constant;
     // struct S { a : f32}
     // type t = ptr<push_constant, array<S, 3u>>;
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     Structure("S", Vector{Member("a", ty.f32())});
     Alias("t", ty.ptr<push_constant>(ty.array(ty("S"), 3_u)));
 
diff --git a/src/tint/lang/wgsl/resolver/attribute_validation_test.cc b/src/tint/lang/wgsl/resolver/attribute_validation_test.cc
index 5e1a8db1..706d974 100644
--- a/src/tint/lang/wgsl/resolver/attribute_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/attribute_validation_test.cc
@@ -80,7 +80,7 @@
 struct TestWithParams : ResolverTestWithParam<TestParams> {
     void EnableExtensionIfNecessary(AttributeKind attributeKind) {
         if (attributeKind == AttributeKind::kIndex) {
-            Enable(core::Extension::kChromiumInternalDualSourceBlending);
+            Enable(wgsl::Extension::kChromiumInternalDualSourceBlending);
         }
     }
 };
@@ -96,7 +96,7 @@
         case AttributeKind::kBuiltin:
             return {builder.Builtin(source, core::BuiltinValue::kPosition)};
         case AttributeKind::kDiagnostic:
-            return {builder.DiagnosticAttribute(source, core::DiagnosticSeverity::kInfo, "chromium",
+            return {builder.DiagnosticAttribute(source, wgsl::DiagnosticSeverity::kInfo, "chromium",
                                                 "unreachable_code")};
         case AttributeKind::kGroup:
             return {builder.Group(source, 1_a)};
diff --git a/src/tint/lang/wgsl/resolver/bitcast_validation_test.cc b/src/tint/lang/wgsl/resolver/bitcast_validation_test.cc
index 92756c2..2913165 100644
--- a/src/tint/lang/wgsl/resolver/bitcast_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/bitcast_validation_test.cc
@@ -108,7 +108,7 @@
     auto dst = std::get<1>(GetParam());
 
     if (src.used_f16 || dst.used_f16) {
-        Enable(core::Extension::kF16);
+        Enable(wgsl::Extension::kF16);
     }
 
     auto* cast = Bitcast(dst.ast(*this), src.expr(*this, 0));
@@ -151,7 +151,7 @@
     auto dst = std::get<1>(GetParam());
 
     if (src.used_f16 || dst.used_f16) {
-        Enable(core::Extension::kF16);
+        Enable(wgsl::Extension::kF16);
     }
 
     auto* cast = Bitcast(dst.ast(*this), Expr(Source{{12, 34}}, "src"));
@@ -196,7 +196,7 @@
     auto dst = std::get<1>(GetParam());
 
     if (src.used_f16 || dst.used_f16) {
-        Enable(core::Extension::kF16);
+        Enable(wgsl::Extension::kF16);
     }
 
     // Use an alias so we can put a Source on the bitcast type
@@ -242,7 +242,7 @@
     auto dst = std::get<1>(GetParam());
 
     if (src.used_f16 || dst.used_f16) {
-        Enable(core::Extension::kF16);
+        Enable(wgsl::Extension::kF16);
     }
 
     WrapInFunction(Bitcast(Source{{12, 34}}, dst.ast(*this), src.expr(*this, 0)));
@@ -379,7 +379,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 using ResolverBitcastValidationTestInvalidConst = tint::resolver::ResolverTest;
 TEST_F(ResolverBitcastValidationTestInvalidConst, ConstBitcastToF16NaN) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     // Lower 16 bits of const u32 0x7e10 is NaN in f16.
     auto* a = Const("a", Expr(u32(0x00007e10)));
@@ -393,7 +393,7 @@
 }
 
 TEST_F(ResolverBitcastValidationTestInvalidConst, ConstBitcastToF16Inf) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     // 0xfc00 is -Inf in f16.
     auto* a = Const("a", Call<vec2<u32>>(u32(0x00007010), u32(0xfc008000)));
@@ -417,7 +417,7 @@
 }
 
 TEST_F(ResolverBitcastValidationTestInvalidConst, ConstBitcastToF32Inf) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     // 0x7f800000 is Inf in f32.
     auto* a = Const("a", Call<vec3<u32>>(u32(0xA0008000), u32(0x7f800000), u32(0x40000000)));
diff --git a/src/tint/lang/wgsl/resolver/builtin_enum_test.cc b/src/tint/lang/wgsl/resolver/builtin_enum_test.cc
index 26749b2..3f73a5d 100644
--- a/src/tint/lang/wgsl/resolver/builtin_enum_test.cc
+++ b/src/tint/lang/wgsl/resolver/builtin_enum_test.cc
@@ -57,7 +57,7 @@
 TEST_P(ResolverAddressSpaceUsedWithTemplateArgs, Test) {
     // fn f(p : ptr<ADDRESS_SPACE<T>, f32) {}
 
-    Enable(core::Extension::kChromiumExperimentalFullPtrParameters);
+    Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
     auto* tmpl = Ident(Source{{12, 34}}, GetParam(), "T");
     Func("f", Vector{Param("p", ty("ptr", tmpl, ty.f32()))}, ty.void_(), tint::Empty);
     EXPECT_FALSE(r()->Resolve());
diff --git a/src/tint/lang/wgsl/resolver/builtin_structs_test.cc b/src/tint/lang/wgsl/resolver/builtin_structs_test.cc
index 0696559..409b238 100644
--- a/src/tint/lang/wgsl/resolver/builtin_structs_test.cc
+++ b/src/tint/lang/wgsl/resolver/builtin_structs_test.cc
@@ -28,7 +28,7 @@
 using ResolverBuiltinStructs = ResolverTestWithParam<core::Builtin>;
 
 TEST_P(ResolverBuiltinStructs, Resolve) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     // var<private> p : NAME;
     auto* var = GlobalVar("p", ty(GetParam()), core::AddressSpace::kPrivate);
diff --git a/src/tint/lang/wgsl/resolver/builtin_test.cc b/src/tint/lang/wgsl/resolver/builtin_test.cc
index 3bb9c95..1ec3b5f 100644
--- a/src/tint/lang/wgsl/resolver/builtin_test.cc
+++ b/src/tint/lang/wgsl/resolver/builtin_test.cc
@@ -492,7 +492,7 @@
 TEST_P(ResolverBuiltinTest_FloatBuiltin_IdenticalType, OneParam_Scalar_f16) {
     auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto val = 0.5_h;
     if (param.name == std::string("acosh")) {
@@ -520,7 +520,7 @@
 TEST_P(ResolverBuiltinTest_FloatBuiltin_IdenticalType, OneParam_Vector_f16) {
     auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto val = param.name == std::string("acosh") ? Call<vec3<f16>>(1.0_h, 2.0_h, 3.0_h)
                                                   : Call<vec3<f16>>(0.5_h, 0.5_h, 0.8_h);
@@ -549,7 +549,7 @@
 TEST_P(ResolverBuiltinTest_FloatBuiltin_IdenticalType, TwoParams_Scalar_f16) {
     auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* call = Call(param.name, 1_h, 1_h);
     WrapInFunction(call);
@@ -572,7 +572,7 @@
 TEST_P(ResolverBuiltinTest_FloatBuiltin_IdenticalType, TwoParams_Vector_f16) {
     auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* call = Call(param.name, Call<vec3<f16>>(1_h, 1_h, 3_h), Call<vec3<f16>>(1_h, 1_h, 3_h));
     WrapInFunction(call);
@@ -598,7 +598,7 @@
 TEST_P(ResolverBuiltinTest_FloatBuiltin_IdenticalType, ThreeParams_Scalar_f16) {
     auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* call = Call(param.name, 0_h, 1_h, 2_h);
     WrapInFunction(call);
@@ -621,7 +621,7 @@
 TEST_P(ResolverBuiltinTest_FloatBuiltin_IdenticalType, ThreeParams_Vector_f16) {
     auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* call = Call(param.name, Call<vec3<f16>>(0_h, 0_h, 0_h), Call<vec3<f16>>(1_h, 1_h, 1_h),
                       Call<vec3<f16>>(2_h, 2_h, 2_h));
@@ -649,7 +649,7 @@
 TEST_P(ResolverBuiltinTest_FloatBuiltin_IdenticalType, FourParams_Scalar_f16) {
     auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* call = Call(param.name, 1_h, 1_h, 1_h, 1_h);
     WrapInFunction(call);
@@ -672,7 +672,7 @@
 TEST_P(ResolverBuiltinTest_FloatBuiltin_IdenticalType, FourParams_Vector_f16) {
     auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* call = Call(param.name, Call<vec3<f16>>(1_h, 1_h, 3_h), Call<vec3<f16>>(1_h, 1_h, 3_h),
                       Call<vec3<f16>>(1_h, 1_h, 3_h), Call<vec3<f16>>(1_h, 1_h, 3_h));
@@ -766,7 +766,7 @@
 }
 
 TEST_F(ResolverBuiltinFloatTest, Cross_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* call = Call("cross", Call<vec3<f16>>(1_h, 2_h, 3_h), Call<vec3<f16>>(1_h, 2_h, 3_h));
     WrapInFunction(call);
@@ -863,7 +863,7 @@
 }
 
 TEST_F(ResolverBuiltinFloatTest, Distance_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* call = Call("distance", 1_h, 1_h);
     WrapInFunction(call);
@@ -885,7 +885,7 @@
 }
 
 TEST_F(ResolverBuiltinFloatTest, Distance_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* call = Call("distance", Call<vec3<f16>>(1_h, 1_h, 3_h), Call<vec3<f16>>(1_h, 1_h, 3_h));
     WrapInFunction(call);
@@ -971,7 +971,7 @@
 }
 
 TEST_F(ResolverBuiltinFloatTest, FrexpScalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* call = Call("frexp", 1_h);
     WrapInFunction(call);
@@ -1035,7 +1035,7 @@
 }
 
 TEST_F(ResolverBuiltinFloatTest, FrexpVector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* call = Call("frexp", Call<vec3<f16>>());
     WrapInFunction(call);
@@ -1097,7 +1097,7 @@
 }
 
 TEST_F(ResolverBuiltinFloatTest, Length_Scalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* call = Call("length", 1_h);
     WrapInFunction(call);
@@ -1119,7 +1119,7 @@
 }
 
 TEST_F(ResolverBuiltinFloatTest, Length_FloatVector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* call = Call("length", Call<vec3<f16>>(1_h, 1_h, 3_h));
     WrapInFunction(call);
@@ -1174,7 +1174,7 @@
 }
 
 TEST_F(ResolverBuiltinFloatTest, Mix_VectorScalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* call = Call("mix", Call<vec3<f16>>(1_h, 1_h, 1_h), Call<vec3<f16>>(1_h, 1_h, 1_h), 4_h);
     WrapInFunction(call);
@@ -1220,7 +1220,7 @@
 }
 
 TEST_F(ResolverBuiltinFloatTest, ModfScalar_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* call = Call("modf", 1_h);
     WrapInFunction(call);
@@ -1284,7 +1284,7 @@
 }
 
 TEST_F(ResolverBuiltinFloatTest, ModfVector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* call = Call("modf", Call<vec3<f16>>());
     WrapInFunction(call);
@@ -1394,7 +1394,7 @@
 }
 
 TEST_F(ResolverBuiltinFloatTest, Normalize_Vector_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* call = Call("normalize", Call<vec3<f16>>(1_h, 1_h, 3_h));
     WrapInFunction(call);
@@ -1857,7 +1857,7 @@
 }
 
 TEST_F(ResolverBuiltinTest, Determinant_2x2_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("var", ty.mat2x2<f16>(), core::AddressSpace::kPrivate);
 
@@ -1883,7 +1883,7 @@
 }
 
 TEST_F(ResolverBuiltinTest, Determinant_3x3_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("var", ty.mat3x3<f16>(), core::AddressSpace::kPrivate);
 
@@ -1909,7 +1909,7 @@
 }
 
 TEST_F(ResolverBuiltinTest, Determinant_4x4_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("var", ty.mat4x4<f16>(), core::AddressSpace::kPrivate);
 
@@ -1970,7 +1970,7 @@
 }
 
 TEST_F(ResolverBuiltinTest, Dot_Vec2_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("my_var", ty.vec2<f16>(), core::AddressSpace::kPrivate);
 
diff --git a/src/tint/lang/wgsl/resolver/builtin_validation_test.cc b/src/tint/lang/wgsl/resolver/builtin_validation_test.cc
index baca6e9..86e4f4c 100644
--- a/src/tint/lang/wgsl/resolver/builtin_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/builtin_validation_test.cc
@@ -537,7 +537,7 @@
 TEST_F(ResolverDP4aExtensionValidationTest, Dot4I8PackedWithExtension) {
     // enable chromium_experimental_dp4a;
     // fn func { return dot4I8Packed(1u, 2u); }
-    Enable(core::Extension::kChromiumExperimentalDp4A);
+    Enable(wgsl::Extension::kChromiumExperimentalDp4A);
 
     Func("func", tint::Empty, ty.i32(),
          Vector{
@@ -565,7 +565,7 @@
 TEST_F(ResolverDP4aExtensionValidationTest, Dot4U8PackedWithExtension) {
     // enable chromium_experimental_dp4a;
     // fn func { return dot4U8Packed(1u, 2u); }
-    Enable(core::Extension::kChromiumExperimentalDp4A);
+    Enable(wgsl::Extension::kChromiumExperimentalDp4A);
 
     Func("func", tint::Empty, ty.u32(),
          Vector{
@@ -670,7 +670,7 @@
 TEST_F(ResolverBuiltinValidationTest, SubgroupBallotWithExtension) {
     // enable chromium_experimental_subgroups;
     // fn func -> vec4<u32> { return subgroupBallot(); }
-    Enable(core::Extension::kChromiumExperimentalSubgroups);
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroups);
 
     Func("func", tint::Empty, ty.vec4<u32>(),
          Vector{
@@ -696,7 +696,7 @@
 TEST_F(ResolverBuiltinValidationTest, SubgroupBroadcastWithExtension) {
     // enable chromium_experimental_subgroups;
     // fn func -> i32 { return subgroupBroadcast(1,0); }
-    Enable(core::Extension::kChromiumExperimentalSubgroups);
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroups);
 
     Func("func", tint::Empty, ty.i32(),
          Vector{
@@ -709,7 +709,7 @@
 TEST_F(ResolverBuiltinValidationTest, SubroupBroadcastInComputeStage) {
     // @vertex fn func { dpdx(1.0); }
 
-    Enable(core::Extension::kChromiumExperimentalSubgroups);
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroups);
 
     auto* call = Call("subgroupBroadcast", 1_f, 0_u);
     Func(Source{{1, 2}}, "func", tint::Empty, ty.void_(), Vector{Ignore(call)},
@@ -724,7 +724,7 @@
 TEST_F(ResolverBuiltinValidationTest, SubroupBroadcastInVertexStageIsError) {
     // @vertex fn func { dpdx(1.0); }
 
-    Enable(core::Extension::kChromiumExperimentalSubgroups);
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroups);
 
     auto* call = Call(Source{{3, 4}}, "subgroupBroadcast", 1_f, 0_u);
     Func("func", tint::Empty, ty.vec4<f32>(), Vector{Ignore(call), Return(Call(ty.vec4<f32>()))},
@@ -740,7 +740,7 @@
 TEST_F(ResolverBuiltinValidationTest, SubroupBroadcastInFragmentStageIsError) {
     // @vertex fn func { dpdx(1.0); }
 
-    Enable(core::Extension::kChromiumExperimentalSubgroups);
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroups);
 
     auto* call = Call(Source{{3, 4}}, "subgroupBroadcast", 1_f, 0_u);
     Func("func",
@@ -755,7 +755,7 @@
 }
 
 TEST_F(ResolverBuiltinValidationTest, SubgroupBroadcastValueF32) {
-    Enable(core::Extension::kChromiumExperimentalSubgroups);
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroups);
     Func("func", tint::Empty, ty.f32(),
          Vector{
              Return(Call("subgroupBroadcast", 1_f, 0_u)),
@@ -764,7 +764,7 @@
 }
 
 TEST_F(ResolverBuiltinValidationTest, SubgroupBroadcastValueI32) {
-    Enable(core::Extension::kChromiumExperimentalSubgroups);
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroups);
     Func("func", tint::Empty, ty.i32(),
          Vector{
              Return(Call("subgroupBroadcast", 1_i, 0_u)),
@@ -773,7 +773,7 @@
 }
 
 TEST_F(ResolverBuiltinValidationTest, SubgroupBroadcastValueU32) {
-    Enable(core::Extension::kChromiumExperimentalSubgroups);
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroups);
     Func("func", tint::Empty, ty.u32(),
          Vector{
              Return(Call("subgroupBroadcast", 1_u, 0_u)),
@@ -782,7 +782,7 @@
 }
 
 TEST_F(ResolverBuiltinValidationTest, SubgroupBroadcastLaneArgMustBeConst) {
-    Enable(core::Extension::kChromiumExperimentalSubgroups);
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroups);
     Func("func", tint::Empty, ty.void_(),
          Vector{
              Decl(Let("lane", Expr(1_u))),
@@ -810,7 +810,7 @@
 TEST_F(ResolverBuiltinValidationTest, TextureBarrierWithExtension) {
     // enable chromium_experimental_read_write_storage_texture;
     // fn func { textureBarrier(); }
-    Enable(core::Extension::kChromiumExperimentalReadWriteStorageTexture);
+    Enable(wgsl::Extension::kChromiumExperimentalReadWriteStorageTexture);
 
     Func("func", tint::Empty, ty.void_(),
          Vector{
diff --git a/src/tint/lang/wgsl/resolver/call_test.cc b/src/tint/lang/wgsl/resolver/call_test.cc
index 961fe98..669b087 100644
--- a/src/tint/lang/wgsl/resolver/call_test.cc
+++ b/src/tint/lang/wgsl/resolver/call_test.cc
@@ -64,7 +64,7 @@
 };
 
 TEST_F(ResolverCallTest, Valid) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Vector<const ast::Parameter*, 4> params;
     Vector<const ast::Expression*, 4> args;
diff --git a/src/tint/lang/wgsl/resolver/call_validation_test.cc b/src/tint/lang/wgsl/resolver/call_validation_test.cc
index b26816c..b665d0d 100644
--- a/src/tint/lang/wgsl/resolver/call_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/call_validation_test.cc
@@ -166,7 +166,7 @@
     //   var v : S;
     //   foo(&v.m);
     // }
-    Enable(core::Extension::kChromiumExperimentalFullPtrParameters);
+    Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
     auto* S = Structure("S", Vector{
                                  Member("m", ty.i32()),
                              });
@@ -346,7 +346,7 @@
     //   let p: ptr<function, i32> = &(v[0]);
     //   x(p);
     // }
-    Enable(core::Extension::kChromiumExperimentalFullPtrParameters);
+    Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
     Func("foo",
          Vector{
              Param("p", ty.ptr<function, i32>()),
@@ -436,7 +436,7 @@
     //   let p3 = &(*p2)[0];
     //   foo(&*p);
     // }
-    Enable(core::Extension::kChromiumExperimentalFullPtrParameters);
+    Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
     Func("foo",
          Vector{
              Param("p", ty.ptr<function, i32>()),
diff --git a/src/tint/lang/wgsl/resolver/dependency_graph_test.cc b/src/tint/lang/wgsl/resolver/dependency_graph_test.cc
index 508ac34..a22669f 100644
--- a/src/tint/lang/wgsl/resolver/dependency_graph_test.cc
+++ b/src/tint/lang/wgsl/resolver/dependency_graph_test.cc
@@ -1106,9 +1106,9 @@
     // a transform may produce such a AST tree that has some declarations before directive nodes.
     // DependencyGraph should deal with these cases.
     auto* var_1 = GlobalVar("SYMBOL1", ty.i32());
-    auto* enable = Enable(core::Extension::kF16);
+    auto* enable = Enable(wgsl::Extension::kF16);
     auto* var_2 = GlobalVar("SYMBOL2", ty.f32());
-    auto* diagnostic = DiagnosticDirective(core::DiagnosticSeverity::kWarning, "foo");
+    auto* diagnostic = DiagnosticDirective(wgsl::DiagnosticSeverity::kWarning, "foo");
 
     EXPECT_THAT(AST().GlobalDeclarations(), ElementsAre(var_1, enable, var_2, diagnostic));
     EXPECT_THAT(Build().ordered_globals, ElementsAre(enable, diagnostic, var_1, var_2));
diff --git a/src/tint/lang/wgsl/resolver/diagnostic_control_test.cc b/src/tint/lang/wgsl/resolver/diagnostic_control_test.cc
index 43bea18..971eb23 100644
--- a/src/tint/lang/wgsl/resolver/diagnostic_control_test.cc
+++ b/src/tint/lang/wgsl/resolver/diagnostic_control_test.cc
@@ -32,7 +32,7 @@
 }
 
 TEST_F(ResolverDiagnosticControlTest, UnreachableCode_ErrorViaDirective) {
-    DiagnosticDirective(core::DiagnosticSeverity::kError, "chromium", "unreachable_code");
+    DiagnosticDirective(wgsl::DiagnosticSeverity::kError, "chromium", "unreachable_code");
 
     auto stmts = Vector{Return(), Return()};
     Func("foo", {}, ty.void_(), stmts);
@@ -42,7 +42,7 @@
 }
 
 TEST_F(ResolverDiagnosticControlTest, UnreachableCode_WarningViaDirective) {
-    DiagnosticDirective(core::DiagnosticSeverity::kWarning, "chromium", "unreachable_code");
+    DiagnosticDirective(wgsl::DiagnosticSeverity::kWarning, "chromium", "unreachable_code");
 
     auto stmts = Vector{Return(), Return()};
     Func("foo", {}, ty.void_(), stmts);
@@ -52,7 +52,7 @@
 }
 
 TEST_F(ResolverDiagnosticControlTest, UnreachableCode_InfoViaDirective) {
-    DiagnosticDirective(core::DiagnosticSeverity::kInfo, "chromium", "unreachable_code");
+    DiagnosticDirective(wgsl::DiagnosticSeverity::kInfo, "chromium", "unreachable_code");
 
     auto stmts = Vector{Return(), Return()};
     Func("foo", {}, ty.void_(), stmts);
@@ -62,7 +62,7 @@
 }
 
 TEST_F(ResolverDiagnosticControlTest, UnreachableCode_OffViaDirective) {
-    DiagnosticDirective(core::DiagnosticSeverity::kOff, "chromium", "unreachable_code");
+    DiagnosticDirective(wgsl::DiagnosticSeverity::kOff, "chromium", "unreachable_code");
 
     auto stmts = Vector{Return(), Return()};
     Func("foo", {}, ty.void_(), stmts);
@@ -73,7 +73,7 @@
 
 TEST_F(ResolverDiagnosticControlTest, UnreachableCode_ErrorViaAttribute) {
     auto* attr =
-        DiagnosticAttribute(core::DiagnosticSeverity::kError, "chromium", "unreachable_code");
+        DiagnosticAttribute(wgsl::DiagnosticSeverity::kError, "chromium", "unreachable_code");
 
     auto stmts = Vector{Return(), Return()};
     Func("foo", {}, ty.void_(), stmts, Vector{attr});
@@ -84,7 +84,7 @@
 
 TEST_F(ResolverDiagnosticControlTest, UnreachableCode_WarningViaAttribute) {
     auto* attr =
-        DiagnosticAttribute(core::DiagnosticSeverity::kWarning, "chromium", "unreachable_code");
+        DiagnosticAttribute(wgsl::DiagnosticSeverity::kWarning, "chromium", "unreachable_code");
 
     auto stmts = Vector{Return(), Return()};
     Func("foo", {}, ty.void_(), stmts, Vector{attr});
@@ -95,7 +95,7 @@
 
 TEST_F(ResolverDiagnosticControlTest, UnreachableCode_InfoViaAttribute) {
     auto* attr =
-        DiagnosticAttribute(core::DiagnosticSeverity::kInfo, "chromium", "unreachable_code");
+        DiagnosticAttribute(wgsl::DiagnosticSeverity::kInfo, "chromium", "unreachable_code");
 
     auto stmts = Vector{Return(), Return()};
     Func("foo", {}, ty.void_(), stmts, Vector{attr});
@@ -106,7 +106,7 @@
 
 TEST_F(ResolverDiagnosticControlTest, UnreachableCode_OffViaAttribute) {
     auto* attr =
-        DiagnosticAttribute(core::DiagnosticSeverity::kOff, "chromium", "unreachable_code");
+        DiagnosticAttribute(wgsl::DiagnosticSeverity::kOff, "chromium", "unreachable_code");
 
     auto stmts = Vector{Return(), Return()};
     Func("foo", {}, ty.void_(), stmts, Vector{attr});
@@ -122,9 +122,9 @@
     //   return;
     //   return; // Should produce a warning
     // }
-    DiagnosticDirective(core::DiagnosticSeverity::kError, "chromium", "unreachable_code");
+    DiagnosticDirective(wgsl::DiagnosticSeverity::kError, "chromium", "unreachable_code");
     auto* attr =
-        DiagnosticAttribute(core::DiagnosticSeverity::kWarning, "chromium", "unreachable_code");
+        DiagnosticAttribute(wgsl::DiagnosticSeverity::kWarning, "chromium", "unreachable_code");
 
     auto stmts = Vector{Return(), Return()};
     Func("foo", {}, ty.void_(), stmts, Vector{attr});
@@ -150,7 +150,7 @@
     // }
     {
         auto* attr =
-            DiagnosticAttribute(core::DiagnosticSeverity::kOff, "chromium", "unreachable_code");
+            DiagnosticAttribute(wgsl::DiagnosticSeverity::kOff, "chromium", "unreachable_code");
         Func("foo", {}, ty.void_(),
              Vector{
                  Return(),
@@ -167,7 +167,7 @@
     }
     {
         auto* attr =
-            DiagnosticAttribute(core::DiagnosticSeverity::kInfo, "chromium", "unreachable_code");
+            DiagnosticAttribute(wgsl::DiagnosticSeverity::kInfo, "chromium", "unreachable_code");
         Func("zoo", {}, ty.void_(),
              Vector{
                  Return(),
@@ -218,22 +218,22 @@
                                     Return(),
                                     Return(Source{{34, 43}}),
                                 },
-                                attr(core::DiagnosticSeverity::kInfo)),
+                                attr(wgsl::DiagnosticSeverity::kInfo)),
                             Else(Block(Vector{
                                 While(Expr(true), Block(
                                                       Vector{
                                                           Return(),
                                                           Return(Source{{56, 65}}),
                                                       },
-                                                      attr(core::DiagnosticSeverity::kOff))),
+                                                      attr(wgsl::DiagnosticSeverity::kOff))),
                                 Return(),
                                 Return(Source{{78, 87}}),
                             }))),
                      },
-                     attr(core::DiagnosticSeverity::kWarning)),
+                     attr(wgsl::DiagnosticSeverity::kWarning)),
              }),
          },
-         attr(core::DiagnosticSeverity::kOff));
+         attr(wgsl::DiagnosticSeverity::kOff));
 
     EXPECT_TRUE(r()->Resolve()) << r()->error();
     EXPECT_EQ(r()->error(), R"(34:43 note: code is unreachable
@@ -241,7 +241,7 @@
 }
 
 TEST_F(ResolverDiagnosticControlTest, UnrecognizedCoreRuleName_Directive) {
-    DiagnosticDirective(core::DiagnosticSeverity::kError,
+    DiagnosticDirective(wgsl::DiagnosticSeverity::kError,
                         DiagnosticRuleName(Source{{12, 34}}, "derivative_uniform"));
     EXPECT_TRUE(r()->Resolve()) << r()->error();
     EXPECT_EQ(r()->error(),
@@ -251,7 +251,7 @@
 }
 
 TEST_F(ResolverDiagnosticControlTest, UnrecognizedCoreRuleName_Attribute) {
-    auto* attr = DiagnosticAttribute(core::DiagnosticSeverity::kError,
+    auto* attr = DiagnosticAttribute(wgsl::DiagnosticSeverity::kError,
                                      DiagnosticRuleName(Source{{12, 34}}, "derivative_uniform"));
     Func("foo", {}, ty.void_(), {}, Vector{attr});
     EXPECT_TRUE(r()->Resolve()) << r()->error();
@@ -262,7 +262,7 @@
 }
 
 TEST_F(ResolverDiagnosticControlTest, UnrecognizedChromiumRuleName_Directive) {
-    DiagnosticDirective(core::DiagnosticSeverity::kError,
+    DiagnosticDirective(wgsl::DiagnosticSeverity::kError,
                         DiagnosticRuleName(Source{{12, 34}}, "chromium", "unreachable_cod"));
     EXPECT_TRUE(r()->Resolve()) << r()->error();
     EXPECT_EQ(r()->error(),
@@ -273,7 +273,7 @@
 
 TEST_F(ResolverDiagnosticControlTest, UnrecognizedChromiumRuleName_Attribute) {
     auto* attr =
-        DiagnosticAttribute(core::DiagnosticSeverity::kError,
+        DiagnosticAttribute(wgsl::DiagnosticSeverity::kError,
                             DiagnosticRuleName(Source{{12, 34}}, "chromium", "unreachable_cod"));
     Func("foo", {}, ty.void_(), {}, Vector{attr});
     EXPECT_TRUE(r()->Resolve()) << r()->error();
@@ -284,7 +284,7 @@
 }
 
 TEST_F(ResolverDiagnosticControlTest, UnrecognizedOtherRuleName_Directive) {
-    DiagnosticDirective(core::DiagnosticSeverity::kError,
+    DiagnosticDirective(wgsl::DiagnosticSeverity::kError,
                         DiagnosticRuleName(Source{{12, 34}}, "unknown", "unreachable_cod"));
     EXPECT_TRUE(r()->Resolve()) << r()->error();
     EXPECT_EQ(r()->error(), "");
@@ -292,7 +292,7 @@
 
 TEST_F(ResolverDiagnosticControlTest, UnrecognizedOtherRuleName_Attribute) {
     auto* attr =
-        DiagnosticAttribute(core::DiagnosticSeverity::kError,
+        DiagnosticAttribute(wgsl::DiagnosticSeverity::kError,
                             DiagnosticRuleName(Source{{12, 34}}, "unknown", "unreachable_cod"));
     Func("foo", {}, ty.void_(), {}, Vector{attr});
     EXPECT_TRUE(r()->Resolve()) << r()->error();
@@ -300,17 +300,17 @@
 }
 
 TEST_F(ResolverDiagnosticControlTest, Conflict_SameNameSameSeverity_Directive) {
-    DiagnosticDirective(core::DiagnosticSeverity::kError,
+    DiagnosticDirective(wgsl::DiagnosticSeverity::kError,
                         DiagnosticRuleName(Source{{12, 34}}, "chromium", "unreachable_code"));
-    DiagnosticDirective(core::DiagnosticSeverity::kError,
+    DiagnosticDirective(wgsl::DiagnosticSeverity::kError,
                         DiagnosticRuleName(Source{{56, 78}}, "chromium", "unreachable_code"));
     EXPECT_TRUE(r()->Resolve()) << r()->error();
 }
 
 TEST_F(ResolverDiagnosticControlTest, Conflict_SameNameDifferentSeverity_Directive) {
-    DiagnosticDirective(core::DiagnosticSeverity::kError,
+    DiagnosticDirective(wgsl::DiagnosticSeverity::kError,
                         DiagnosticRuleName(Source{{12, 34}}, "chromium", "unreachable_code"));
-    DiagnosticDirective(core::DiagnosticSeverity::kOff,
+    DiagnosticDirective(wgsl::DiagnosticSeverity::kOff,
                         DiagnosticRuleName(Source{{56, 78}}, "chromium", "unreachable_code"));
     EXPECT_FALSE(r()->Resolve());
     EXPECT_EQ(r()->error(),
@@ -319,9 +319,9 @@
 }
 
 TEST_F(ResolverDiagnosticControlTest, Conflict_SameUnknownNameDifferentSeverity_Directive) {
-    DiagnosticDirective(core::DiagnosticSeverity::kError,
+    DiagnosticDirective(wgsl::DiagnosticSeverity::kError,
                         DiagnosticRuleName(Source{{12, 34}}, "chromium", "unreachable_codes"));
-    DiagnosticDirective(core::DiagnosticSeverity::kOff,
+    DiagnosticDirective(wgsl::DiagnosticSeverity::kOff,
                         DiagnosticRuleName(Source{{56, 78}}, "chromium", "unreachable_codes"));
     EXPECT_FALSE(r()->Resolve());
     EXPECT_EQ(r()->error(),
@@ -336,17 +336,17 @@
 }
 
 TEST_F(ResolverDiagnosticControlTest, Conflict_DifferentUnknownNameDifferentSeverity_Directive) {
-    DiagnosticDirective(core::DiagnosticSeverity::kError, "chromium", "unreachable_codes");
-    DiagnosticDirective(core::DiagnosticSeverity::kOff, "chromium", "unreachable_codex");
+    DiagnosticDirective(wgsl::DiagnosticSeverity::kError, "chromium", "unreachable_codes");
+    DiagnosticDirective(wgsl::DiagnosticSeverity::kOff, "chromium", "unreachable_codex");
     EXPECT_TRUE(r()->Resolve()) << r()->error();
 }
 
 TEST_F(ResolverDiagnosticControlTest, Conflict_SameNameSameSeverity_Attribute) {
     auto* attr1 =
-        DiagnosticAttribute(core::DiagnosticSeverity::kError,
+        DiagnosticAttribute(wgsl::DiagnosticSeverity::kError,
                             DiagnosticRuleName(Source{{12, 34}}, "chromium", "unreachable_code"));
     auto* attr2 =
-        DiagnosticAttribute(core::DiagnosticSeverity::kError,
+        DiagnosticAttribute(wgsl::DiagnosticSeverity::kError,
                             DiagnosticRuleName(Source{{56, 78}}, "chromium", "unreachable_code"));
     Func("foo", {}, ty.void_(), {}, Vector{attr1, attr2});
     EXPECT_TRUE(r()->Resolve()) << r()->error();
@@ -354,10 +354,10 @@
 
 TEST_F(ResolverDiagnosticControlTest, Conflict_SameNameDifferentSeverity_Attribute) {
     auto* attr1 =
-        DiagnosticAttribute(core::DiagnosticSeverity::kError,
+        DiagnosticAttribute(wgsl::DiagnosticSeverity::kError,
                             DiagnosticRuleName(Source{{12, 34}}, "chromium", "unreachable_code"));
     auto* attr2 =
-        DiagnosticAttribute(core::DiagnosticSeverity::kOff,
+        DiagnosticAttribute(wgsl::DiagnosticSeverity::kOff,
                             DiagnosticRuleName(Source{{56, 78}}, "chromium", "unreachable_code"));
     Func("foo", {}, ty.void_(), {}, Vector{attr1, attr2});
     EXPECT_FALSE(r()->Resolve());
@@ -368,10 +368,10 @@
 
 TEST_F(ResolverDiagnosticControlTest, Conflict_SameUnknownNameDifferentSeverity_Attribute) {
     auto* attr1 =
-        DiagnosticAttribute(core::DiagnosticSeverity::kError,
+        DiagnosticAttribute(wgsl::DiagnosticSeverity::kError,
                             DiagnosticRuleName(Source{{12, 34}}, "chromium", "unreachable_codes"));
     auto* attr2 =
-        DiagnosticAttribute(core::DiagnosticSeverity::kOff,
+        DiagnosticAttribute(wgsl::DiagnosticSeverity::kOff,
                             DiagnosticRuleName(Source{{56, 78}}, "chromium", "unreachable_codes"));
     Func("foo", {}, ty.void_(), {}, Vector{attr1, attr2});
     EXPECT_FALSE(r()->Resolve());
@@ -388,9 +388,9 @@
 
 TEST_F(ResolverDiagnosticControlTest, Conflict_DifferentUnknownNameDifferentSeverity_Attribute) {
     auto* attr1 =
-        DiagnosticAttribute(core::DiagnosticSeverity::kError, "chromium", "unreachable_codes");
+        DiagnosticAttribute(wgsl::DiagnosticSeverity::kError, "chromium", "unreachable_codes");
     auto* attr2 =
-        DiagnosticAttribute(core::DiagnosticSeverity::kOff, "chromium", "unreachable_codex");
+        DiagnosticAttribute(wgsl::DiagnosticSeverity::kOff, "chromium", "unreachable_codex");
     Func("foo", {}, ty.void_(), {}, Vector{attr1, attr2});
     EXPECT_TRUE(r()->Resolve()) << r()->error();
 }
diff --git a/src/tint/lang/wgsl/resolver/dual_source_blending_extension_test.cc b/src/tint/lang/wgsl/resolver/dual_source_blending_extension_test.cc
index bd6bb4b..6fe1a48 100644
--- a/src/tint/lang/wgsl/resolver/dual_source_blending_extension_test.cc
+++ b/src/tint/lang/wgsl/resolver/dual_source_blending_extension_test.cc
@@ -42,7 +42,7 @@
 class DualSourceBlendingExtensionTests : public ResolverTest {
   public:
     DualSourceBlendingExtensionTests() {
-        Enable(core::Extension::kChromiumInternalDualSourceBlending);
+        Enable(wgsl::Extension::kChromiumInternalDualSourceBlending);
     }
 };
 
@@ -148,7 +148,7 @@
 class DualSourceBlendingExtensionTestWithParams : public ResolverTestWithParam<int> {
   public:
     DualSourceBlendingExtensionTestWithParams() {
-        Enable(core::Extension::kChromiumInternalDualSourceBlending);
+        Enable(wgsl::Extension::kChromiumInternalDualSourceBlending);
     }
 };
 
diff --git a/src/tint/lang/wgsl/resolver/entry_point_validation_test.cc b/src/tint/lang/wgsl/resolver/entry_point_validation_test.cc
index 4b09e58..a14d4f4 100644
--- a/src/tint/lang/wgsl/resolver/entry_point_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/entry_point_validation_test.cc
@@ -435,7 +435,7 @@
 TEST_F(ResolverEntryPointValidationTest, PushConstantAllowedWithEnable) {
     // enable chromium_experimental_push_constant;
     // var<push_constant> a : u32;
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     GlobalVar("a", ty.u32(), core::AddressSpace::kPushConstant);
 
     EXPECT_TRUE(r()->Resolve());
@@ -465,7 +465,7 @@
     // @compute @workgroup_size(1) fn main() {
     //   _ = a;
     // }
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     GlobalVar("a", ty.u32(), core::AddressSpace::kPushConstant);
 
     Func("main", {}, ty.void_(), Vector{Assign(Phony(), "a")},
@@ -482,7 +482,7 @@
     //   _ = a;
     //   _ = b;
     // }
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     GlobalVar(Source{{1, 2}}, "a", ty.u32(), core::AddressSpace::kPushConstant);
     GlobalVar(Source{{3, 4}}, "b", ty.u32(), core::AddressSpace::kPushConstant);
 
@@ -511,7 +511,7 @@
     //   uses_a();
     //   uses_b();
     // }
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     GlobalVar(Source{{1, 2}}, "a", ty.u32(), core::AddressSpace::kPushConstant);
     GlobalVar(Source{{3, 4}}, "b", ty.u32(), core::AddressSpace::kPushConstant);
 
@@ -543,7 +543,7 @@
     // @compute @workgroup_size(1) fn uses_b() {
     //   _ = a;
     // }
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     GlobalVar("a", ty.u32(), core::AddressSpace::kPushConstant);
     GlobalVar("b", ty.u32(), core::AddressSpace::kPushConstant);
 
@@ -598,7 +598,7 @@
     // fn main(@location(0) @interpolate(flat) a : *) {}
     auto params = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* a = Param("a", params.create_ast_type(*this),
                     Vector{
@@ -629,7 +629,7 @@
     // fn main(a : Input) {}
     auto params = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* input = Structure(
         "Input", Vector{
@@ -659,7 +659,7 @@
     // }
     auto params = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Func(Source{{12, 34}}, "main", tint::Empty, params.create_ast_type(*this),
          Vector{
@@ -689,7 +689,7 @@
     // }
     auto params = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* output =
         Structure("Output", Vector{
diff --git a/src/tint/lang/wgsl/resolver/expression_kind_test.cc b/src/tint/lang/wgsl/resolver/expression_kind_test.cc
index a1e98ba..aad7671 100644
--- a/src/tint/lang/wgsl/resolver/expression_kind_test.cc
+++ b/src/tint/lang/wgsl/resolver/expression_kind_test.cc
@@ -291,7 +291,7 @@
             GlobalVar("v", ty("texture_storage_2d", "rgba8unorm", expr), Group(0_u), Binding(0_u));
             break;
         case Use::kAddressSpace:
-            Enable(core::Extension::kChromiumExperimentalFullPtrParameters);
+            Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
             Func(Symbols().New(), Vector{Param("p", ty("ptr", expr, ty.f32()))}, ty.void_(),
                  tint::Empty);
             break;
diff --git a/src/tint/lang/wgsl/resolver/f16_extension_test.cc b/src/tint/lang/wgsl/resolver/f16_extension_test.cc
index d6848aa..3ebf7f7 100644
--- a/src/tint/lang/wgsl/resolver/f16_extension_test.cc
+++ b/src/tint/lang/wgsl/resolver/f16_extension_test.cc
@@ -28,7 +28,7 @@
 TEST_F(ResolverF16ExtensionTest, TypeUsedWithExtension) {
     // enable f16;
     // var<private> v : f16;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("v", ty.f16(), core::AddressSpace::kPrivate);
 
@@ -46,7 +46,7 @@
 TEST_F(ResolverF16ExtensionTest, Vec2TypeUsedWithExtension) {
     // enable f16;
     // var<private> v : vec2<f16>;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("v", ty.vec2<f16>(), core::AddressSpace::kPrivate);
 
@@ -64,7 +64,7 @@
 TEST_F(ResolverF16ExtensionTest, Vec2TypeInitUsedWithExtension) {
     // enable f16;
     // var<private> v = vec2<f16>();
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("v", Call<vec2<f16>>(), core::AddressSpace::kPrivate);
 
@@ -82,7 +82,7 @@
 TEST_F(ResolverF16ExtensionTest, Vec2TypeConvUsedWithExtension) {
     // enable f16;
     // var<private> v = vec2<f16>(vec2<f32>());
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("v", Call<vec2<f16>>(Call<vec2<f32>>()), core::AddressSpace::kPrivate);
 
@@ -101,7 +101,7 @@
 TEST_F(ResolverF16ExtensionTest, F16LiteralUsedWithExtension) {
     // enable f16;
     // var<private> v = 16h;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("v", Expr(16_h), core::AddressSpace::kPrivate);
 
@@ -121,7 +121,7 @@
 TEST_P(ResolverF16ExtensionBuiltinTypeAliasTest, Vec2hTypeUsedWithExtension) {
     // enable f16;
     // var<private> v : vec2h;
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("v", ty(Source{{12, 34}}, GetParam()), core::AddressSpace::kPrivate);
 
diff --git a/src/tint/lang/wgsl/resolver/function_validation_test.cc b/src/tint/lang/wgsl/resolver/function_validation_test.cc
index e1d479a..ac2383d 100644
--- a/src/tint/lang/wgsl/resolver/function_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/function_validation_test.cc
@@ -1054,7 +1054,7 @@
     Func("f", Vector{arg}, ty.void_(), tint::Empty);
 
     if (param.address_space == core::AddressSpace::kPixelLocal) {
-        Enable(core::Extension::kChromiumExperimentalPixelLocal);
+        Enable(wgsl::Extension::kChromiumExperimentalPixelLocal);
     }
 
     if (param.expectation == Expectation::kAlwaysPass) {
@@ -1080,11 +1080,11 @@
     Structure("S", Vector{Member("a", ty.i32())});
     auto ptr_type = ty("ptr", Ident(Source{{12, 34}}, param.address_space), ty("S"));
     auto* arg = Param(Source{{12, 34}}, "p", ptr_type);
-    Enable(core::Extension::kChromiumExperimentalFullPtrParameters);
+    Enable(wgsl::Extension::kChromiumExperimentalFullPtrParameters);
     Func("f", Vector{arg}, ty.void_(), tint::Empty);
 
     if (param.address_space == core::AddressSpace::kPixelLocal) {
-        Enable(core::Extension::kChromiumExperimentalPixelLocal);
+        Enable(wgsl::Extension::kChromiumExperimentalPixelLocal);
     }
 
     if (param.expectation == Expectation::kAlwaysPass ||
diff --git a/src/tint/lang/wgsl/resolver/host_shareable_validation_test.cc b/src/tint/lang/wgsl/resolver/host_shareable_validation_test.cc
index 473d84a..fcc6543 100644
--- a/src/tint/lang/wgsl/resolver/host_shareable_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/host_shareable_validation_test.cc
@@ -97,7 +97,7 @@
 }
 
 TEST_F(ResolverHostShareableValidationTest, NoError) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* i1 = Structure("I1", Vector{
                                    Member(Source{{1, 1}}, "w1", ty.f32()),
diff --git a/src/tint/lang/wgsl/resolver/materialize_test.cc b/src/tint/lang/wgsl/resolver/materialize_test.cc
index 1c8655e..a8fed54 100644
--- a/src/tint/lang/wgsl/resolver/materialize_test.cc
+++ b/src/tint/lang/wgsl/resolver/materialize_test.cc
@@ -318,7 +318,7 @@
     MaterializeTest<std::tuple<Expectation, Method, Data>>;
 
 TEST_P(MaterializeAbstractNumericToConcreteType, Test) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     const auto& param = GetParam();
     const auto& expectation = std::get<0>(param);
@@ -1303,7 +1303,7 @@
 TEST_F(MaterializeAbstractStructure, Modf_Scalar_ExplicitType) {
     // var v = modf(1_h); // v is __modf_result_f16
     // v = modf(1);       // __modf_result_f16 <- __modf_result_abstract
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
     auto* call = Call("modf", 1_a);
     WrapInFunction(Decl(Var("v", Call("modf", 1_h))),  //
                    Assign("v", call));
@@ -1322,7 +1322,7 @@
 TEST_F(MaterializeAbstractStructure, Modf_Vector_ExplicitType) {
     // var v = modf(vec2(1_h)); // v is __modf_result_vec2_f16
     // v = modf(vec2(1));       // __modf_result_vec2_f16 <- __modf_result_vec2_abstract
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
     auto* call = Call("modf", Call<vec2<Infer>>(1_a));
     WrapInFunction(Decl(Var("v", Call("modf", Call<vec2<Infer>>(1_h)))), Assign("v", call));
     ASSERT_TRUE(r()->Resolve()) << r()->error();
@@ -1405,7 +1405,7 @@
 TEST_F(MaterializeAbstractStructure, Frexp_Scalar_ExplicitType) {
     // var v = frexp(1_h); // v is __frexp_result_f16
     // v = frexp(1);       // __frexp_result_f16 <- __frexp_result_abstract
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
     auto* call = Call("frexp", 1_a);
     WrapInFunction(Decl(Var("v", Call("frexp", 1_h))),  //
                    Assign("v", call));
@@ -1426,7 +1426,7 @@
 TEST_F(MaterializeAbstractStructure, Frexp_Vector_ExplicitType) {
     // var v = frexp(vec2(1_h)); // v is __frexp_result_vec2_f16
     // v = frexp(vec2(1));       // __frexp_result_vec2_f16 <- __frexp_result_vec2_abstract
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
     auto* call = Call("frexp", Call<vec2<Infer>>(1_a));
     WrapInFunction(Decl(Var("v", Call("frexp", Call<vec2<Infer>>(1_h)))), Assign("v", call));
     ASSERT_TRUE(r()->Resolve()) << r()->error();
diff --git a/src/tint/lang/wgsl/resolver/override_test.cc b/src/tint/lang/wgsl/resolver/override_test.cc
index 1e0a533..f575a4f 100644
--- a/src/tint/lang/wgsl/resolver/override_test.cc
+++ b/src/tint/lang/wgsl/resolver/override_test.cc
@@ -66,7 +66,7 @@
 }
 
 TEST_F(ResolverOverrideTest, WithAndWithoutIds) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* a = Override("a", ty.f32(), Expr(1_f));
     auto* b = Override("b", ty.f16(), Expr(1_h));
diff --git a/src/tint/lang/wgsl/resolver/pixel_local_extension_test.cc b/src/tint/lang/wgsl/resolver/pixel_local_extension_test.cc
index 2c97b5d..2937d70 100644
--- a/src/tint/lang/wgsl/resolver/pixel_local_extension_test.cc
+++ b/src/tint/lang/wgsl/resolver/pixel_local_extension_test.cc
@@ -29,7 +29,7 @@
     // enable chromium_experimental_pixel_local;
     // struct S { a : i32 }
     // var<pixel_local> v : S;
-    Enable(Source{{12, 34}}, core::Extension::kChromiumExperimentalPixelLocal);
+    Enable(Source{{12, 34}}, wgsl::Extension::kChromiumExperimentalPixelLocal);
 
     Structure("S", Vector{Member("a", ty.i32())});
 
@@ -67,7 +67,7 @@
     //   _ = a.i;
     //   _ = b.i;
     // }
-    Enable(core::Extension::kChromiumExperimentalPixelLocal);
+    Enable(wgsl::Extension::kChromiumExperimentalPixelLocal);
     Structure("S", Vector{Member("i", ty.i32())});
     GlobalVar(Source{{1, 2}}, "a", ty("S"), core::AddressSpace::kPixelLocal);
     GlobalVar(Source{{3, 4}}, "b", ty("S"), core::AddressSpace::kPixelLocal);
@@ -99,7 +99,7 @@
     //   uses_a();
     //   uses_b();
     // }
-    Enable(core::Extension::kChromiumExperimentalPixelLocal);
+    Enable(wgsl::Extension::kChromiumExperimentalPixelLocal);
     Structure("S", Vector{Member("i", ty.i32())});
     GlobalVar(Source{{1, 2}}, "a", ty("S"), core::AddressSpace::kPixelLocal);
     GlobalVar(Source{{3, 4}}, "b", ty("S"), core::AddressSpace::kPixelLocal);
@@ -132,7 +132,7 @@
     //   v.i = 42;
     //   return vec4f();
     // }
-    Enable(core::Extension::kChromiumExperimentalPixelLocal);
+    Enable(wgsl::Extension::kChromiumExperimentalPixelLocal);
     Structure("S", Vector{Member("i", ty.i32())});
     GlobalVar(Source{{56, 78}}, "v", ty("S"), core::AddressSpace::kPixelLocal);
     Func("F", Empty, ty.vec4<f32>(),
@@ -157,7 +157,7 @@
     // @compute @workgroup_size(1) fn F() {
     //   v.i = 42;
     // }
-    Enable(core::Extension::kChromiumExperimentalPixelLocal);
+    Enable(wgsl::Extension::kChromiumExperimentalPixelLocal);
     Structure("S", Vector{Member("i", ty.i32())});
     GlobalVar(Source{{56, 78}}, "v", ty("S"), core::AddressSpace::kPixelLocal);
     Func("F", Empty, ty.void_(),
@@ -178,7 +178,7 @@
     // @fragment fn F() {
     //   v.i = 42;
     // }
-    Enable(core::Extension::kChromiumExperimentalPixelLocal);
+    Enable(wgsl::Extension::kChromiumExperimentalPixelLocal);
     Structure("S", Vector{Member("i", ty.i32())});
     GlobalVar(Source{{56, 78}}, "v", ty("S"), core::AddressSpace::kPixelLocal);
     Func("F", Empty, ty.void_(),
@@ -198,7 +198,7 @@
     //   X();
     //   return vec4f();
     // }
-    Enable(core::Extension::kChromiumExperimentalPixelLocal);
+    Enable(wgsl::Extension::kChromiumExperimentalPixelLocal);
     Structure("S", Vector{Member("i", ty.i32())});
     GlobalVar(Source{{3, 4}}, "v", ty("S"), core::AddressSpace::kPixelLocal);
     Func(Source{{5, 6}}, "X", Empty, ty.void_(),
@@ -231,7 +231,7 @@
     // @compute @workgroup_size(1) fn F() {
     //   Y();
     // }
-    Enable(core::Extension::kChromiumExperimentalPixelLocal);
+    Enable(wgsl::Extension::kChromiumExperimentalPixelLocal);
     Structure("S", Vector{Member("i", ty.i32())});
     GlobalVar(Source{{3, 4}}, "v", ty("S"), core::AddressSpace::kPixelLocal);
     Func(Source{{5, 6}}, "X", Empty, ty.void_(),
@@ -259,7 +259,7 @@
     // @fragment fn F() {
     //   Y();
     // }
-    Enable(core::Extension::kChromiumExperimentalPixelLocal);
+    Enable(wgsl::Extension::kChromiumExperimentalPixelLocal);
     Structure("S", Vector{Member("i", ty.i32())});
     GlobalVar(Source{{3, 4}}, "v", ty("S"), core::AddressSpace::kPixelLocal);
     Func(Source{{5, 6}}, "X", Empty, ty.void_(),
@@ -297,7 +297,7 @@
 TEST_P(ResolverPixelLocalExtensionTest_Types, Direct) {
     // var<pixel_local> v : <type>;
 
-    Enable(core::Extension::kChromiumExperimentalPixelLocal);
+    Enable(wgsl::Extension::kChromiumExperimentalPixelLocal);
     GlobalVar(Source{{12, 34}}, "v", GetParam().type(*this), core::AddressSpace::kPixelLocal);
 
     EXPECT_FALSE(r()->Resolve());
@@ -312,7 +312,7 @@
     // }
     // var<pixel_local> v : S;
 
-    Enable(core::Extension::kChromiumExperimentalPixelLocal);
+    Enable(wgsl::Extension::kChromiumExperimentalPixelLocal);
     Structure("S", Vector{
                        Member("a", ty.i32()),
                        Member(Source{{12, 34}}, "m", GetParam().type(*this)),
diff --git a/src/tint/lang/wgsl/resolver/resolver.cc b/src/tint/lang/wgsl/resolver/resolver.cc
index df0c53d..3552a7c 100644
--- a/src/tint/lang/wgsl/resolver/resolver.cc
+++ b/src/tint/lang/wgsl/resolver/resolver.cc
@@ -155,7 +155,7 @@
     builder_->Sem().SetModule(mod);
 
     const bool disable_uniformity_analysis =
-        enabled_extensions_.Contains(core::Extension::kChromiumDisableUniformityAnalysis);
+        enabled_extensions_.Contains(wgsl::Extension::kChromiumDisableUniformityAnalysis);
     if (result && !disable_uniformity_analysis) {
         // Run the uniformity analysis, which requires a complete semantic module.
         if (!AnalyzeUniformity(builder_, dependencies_)) {
@@ -1606,10 +1606,10 @@
     }
     if (TINT_UNLIKELY(
             address_space_expr->Value() == core::AddressSpace::kPixelLocal &&
-            !enabled_extensions_.Contains(core::Extension::kChromiumExperimentalPixelLocal))) {
+            !enabled_extensions_.Contains(wgsl::Extension::kChromiumExperimentalPixelLocal))) {
         StringStream err;
         err << "'pixel_local' address space requires the '"
-            << core::Extension::kChromiumExperimentalPixelLocal << "' extension enabled";
+            << wgsl::Extension::kChromiumExperimentalPixelLocal << "' extension enabled";
         AddError(err.str(), expr->source);
         return nullptr;
     }
@@ -3973,28 +3973,28 @@
     if (control.rule_name->category) {
         Mark(control.rule_name->category);
         if (control.rule_name->category->symbol.Name() == "chromium") {
-            auto rule = core::ParseChromiumDiagnosticRule(name);
-            if (rule != core::ChromiumDiagnosticRule::kUndefined) {
+            auto rule = wgsl::ParseChromiumDiagnosticRule(name);
+            if (rule != wgsl::ChromiumDiagnosticRule::kUndefined) {
                 validator_.DiagnosticFilters().Set(rule, control.severity);
             } else {
                 StringStream ss;
                 ss << "unrecognized diagnostic rule 'chromium." << name << "'\n";
                 tint::SuggestAlternativeOptions opts;
                 opts.prefix = "chromium.";
-                tint::SuggestAlternatives(name, core::kChromiumDiagnosticRuleStrings, ss, opts);
+                tint::SuggestAlternatives(name, wgsl::kChromiumDiagnosticRuleStrings, ss, opts);
                 AddWarning(ss.str(), control.rule_name->source);
             }
         }
         return true;
     }
 
-    auto rule = core::ParseCoreDiagnosticRule(name);
-    if (rule != core::CoreDiagnosticRule::kUndefined) {
+    auto rule = wgsl::ParseCoreDiagnosticRule(name);
+    if (rule != wgsl::CoreDiagnosticRule::kUndefined) {
         validator_.DiagnosticFilters().Set(rule, control.severity);
     } else {
         StringStream ss;
         ss << "unrecognized diagnostic rule '" << name << "'\n";
-        tint::SuggestAlternatives(name, core::kCoreDiagnosticRuleStrings, ss);
+        tint::SuggestAlternatives(name, wgsl::kCoreDiagnosticRuleStrings, ss);
         AddWarning(ss.str(), control.rule_name->source);
     }
     return true;
diff --git a/src/tint/lang/wgsl/resolver/resolver.h b/src/tint/lang/wgsl/resolver/resolver.h
index 506beae..77b5d9e 100644
--- a/src/tint/lang/wgsl/resolver/resolver.h
+++ b/src/tint/lang/wgsl/resolver/resolver.h
@@ -616,7 +616,7 @@
     DependencyGraph dependencies_;
     SemHelper sem_;
     Validator validator_;
-    core::Extensions enabled_extensions_;
+    wgsl::Extensions enabled_extensions_;
     Vector<sem::Function*, 8> entry_points_;
     Hashmap<const core::type::Type*, const Source*, 8> atomic_composite_info_;
     tint::Bitset<0> marked_;
diff --git a/src/tint/lang/wgsl/resolver/side_effects_test.cc b/src/tint/lang/wgsl/resolver/side_effects_test.cc
index cb3602c..ea3a68a 100644
--- a/src/tint/lang/wgsl/resolver/side_effects_test.cc
+++ b/src/tint/lang/wgsl/resolver/side_effects_test.cc
@@ -16,10 +16,10 @@
 
 #include "gtest/gtest.h"
 #include "src/tint/lang/core/address_space.h"
-#include "src/tint/lang/core/extension.h"
 #include "src/tint/lang/core/fluent_types.h"
 #include "src/tint/lang/core/texel_format.h"
 #include "src/tint/lang/core/type/texture_dimension.h"
+#include "src/tint/lang/wgsl/extension.h"
 #include "src/tint/lang/wgsl/resolver/resolver_helper_test.h"
 #include "src/tint/lang/wgsl/sem/index_accessor_expression.h"
 #include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
@@ -167,7 +167,7 @@
 using SideEffectsBuiltinTest = resolver::ResolverTestWithParam<Case>;
 
 TEST_P(SideEffectsBuiltinTest, Test) {
-    Enable(tint::core::Extension::kChromiumExperimentalDp4A);
+    Enable(tint::wgsl::Extension::kChromiumExperimentalDp4A);
     auto& c = GetParam();
 
     uint32_t next_binding = 0;
diff --git a/src/tint/lang/wgsl/resolver/struct_layout_test.cc b/src/tint/lang/wgsl/resolver/struct_layout_test.cc
index 529f673..a7904ab 100644
--- a/src/tint/lang/wgsl/resolver/struct_layout_test.cc
+++ b/src/tint/lang/wgsl/resolver/struct_layout_test.cc
@@ -57,7 +57,7 @@
 }
 
 TEST_F(ResolverStructLayoutTest, ScalarsWithF16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* s = Structure("S", Vector{
                                  Member("a", ty.f32()),
@@ -136,7 +136,7 @@
 }
 
 TEST_F(ResolverStructLayoutTest, ImplicitStrideArrayStaticSize) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* s = Structure("S", Vector{
                                  Member("a", ty.array<i32, 3>()),
@@ -176,7 +176,7 @@
 }
 
 TEST_F(ResolverStructLayoutTest, ExplicitStrideArrayStaticSize) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* s = Structure("S", Vector{
                                  Member("a", ty.array<i32, 3>(Vector{Stride(8)})),
@@ -337,7 +337,7 @@
 }
 
 TEST_F(ResolverStructLayoutTest, Matrix) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* s = Structure("S", Vector{
                                  Member("a_1", ty.mat2x2<f32>()),
diff --git a/src/tint/lang/wgsl/resolver/subgroups_extension_test.cc b/src/tint/lang/wgsl/resolver/subgroups_extension_test.cc
index b3f9c00..2a4ba1b 100644
--- a/src/tint/lang/wgsl/resolver/subgroups_extension_test.cc
+++ b/src/tint/lang/wgsl/resolver/subgroups_extension_test.cc
@@ -54,7 +54,7 @@
 
 // Using an i32 for a subgroup_size builtin input should fail.
 TEST_F(ResolverSubgroupsExtensionTest, SubgroupSizeI32Error) {
-    Enable(core::Extension::kChromiumExperimentalSubgroups);
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroups);
     Structure("Inputs",
               Vector{
                   Member("a", ty.i32(), Vector{Builtin(core::BuiltinValue::kSubgroupSize)}),
@@ -66,7 +66,7 @@
 
 // Using an i32 for a subgroup_invocation_id builtin input should fail.
 TEST_F(ResolverSubgroupsExtensionTest, SubgroupInvocationIdI32Error) {
-    Enable(core::Extension::kChromiumExperimentalSubgroups);
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroups);
     Structure("Inputs",
               Vector{
                   Member("a", ty.i32(), Vector{Builtin(core::BuiltinValue::kSubgroupInvocationId)}),
@@ -78,7 +78,7 @@
 
 // Using builtin(subgroup_size) for anything other than a compute shader input should fail.
 TEST_F(ResolverSubgroupsExtensionTest, SubgroupSizeFragmentShader) {
-    Enable(core::Extension::kChromiumExperimentalSubgroups);
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroups);
     Func("main",
          Vector{Param("size", ty.u32(), Vector{Builtin(core::BuiltinValue::kSubgroupSize)})},
          ty.void_(), Empty, Vector{Stage(ast::PipelineStage::kFragment)});
@@ -90,7 +90,7 @@
 
 // Using builtin(subgroup_invocation_id) for anything other than a compute shader input should fail.
 TEST_F(ResolverSubgroupsExtensionTest, SubgroupInvocationIdFragmentShader) {
-    Enable(core::Extension::kChromiumExperimentalSubgroups);
+    Enable(wgsl::Extension::kChromiumExperimentalSubgroups);
     Func("main",
          Vector{Param("id", ty.u32(), Vector{Builtin(core::BuiltinValue::kSubgroupInvocationId)})},
          ty.void_(), Empty, Vector{Stage(ast::PipelineStage::kFragment)});
diff --git a/src/tint/lang/wgsl/resolver/type_validation_test.cc b/src/tint/lang/wgsl/resolver/type_validation_test.cc
index bdc168c..46284e1 100644
--- a/src/tint/lang/wgsl/resolver/type_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/type_validation_test.cc
@@ -977,7 +977,7 @@
 using SampledTextureTypeTest = ResolverTestWithParam<TypeParams>;
 TEST_P(SampledTextureTypeTest, All) {
     auto& params = GetParam();
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
     GlobalVar("a",
               ty.sampled_texture(Source{{12, 34}}, core::type::TextureDimension::k2d,
                                  params.type_func(*this)),
@@ -997,7 +997,7 @@
 using MultisampledTextureTypeTest = ResolverTestWithParam<TypeParams>;
 TEST_P(MultisampledTextureTypeTest, All) {
     auto& params = GetParam();
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
     GlobalVar("a",
               ty.multisampled_texture(Source{{12, 34}}, core::type::TextureDimension::k2d,
                                       params.type_func(*this)),
@@ -1175,7 +1175,7 @@
     // @group(0) @binding(0)
     // var a : texture_storage_1d<r32uint, read>;
 
-    Enable(core::Extension::kChromiumExperimentalReadWriteStorageTexture);
+    Enable(wgsl::Extension::kChromiumExperimentalReadWriteStorageTexture);
     auto st = ty.storage_texture(Source{{12, 34}}, core::type::TextureDimension::k1d,
                                  core::TexelFormat::kR32Uint, core::Access::kRead);
 
@@ -1204,7 +1204,7 @@
     // @group(0) @binding(0)
     // var a : texture_storage_1d<r32uint, read_write>;
 
-    Enable(core::Extension::kChromiumExperimentalReadWriteStorageTexture);
+    Enable(wgsl::Extension::kChromiumExperimentalReadWriteStorageTexture);
     auto st = ty.storage_texture(Source{{12, 34}}, core::type::TextureDimension::k1d,
                                  core::TexelFormat::kR32Uint, core::Access::kReadWrite);
 
@@ -1233,7 +1233,7 @@
     // var a : matNxM<EL_TY>;
     auto& params = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     ast::Type el_ty = params.elem_ty(*this);
 
@@ -1273,7 +1273,7 @@
     // var a : matNxM<EL_TY>;
     auto& params = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     ast::Type el_ty = params.elem_ty(*this);
 
@@ -1318,7 +1318,7 @@
     // var a : vecN<EL_TY>;
     auto& params = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("a", ty.vec(params.elem_ty(*this), params.width), core::AddressSpace::kPrivate);
     EXPECT_TRUE(r()->Resolve()) << r()->error();
@@ -1352,7 +1352,7 @@
     // var a : vecN<EL_TY>;
     auto& params = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     GlobalVar("a", ty.vec(Source{{12, 34}}, params.elem_ty(*this), params.width),
               core::AddressSpace::kPrivate);
@@ -1390,7 +1390,7 @@
     // explicit = aliased;
     auto& params = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Var("aliased", ty(params.alias))),
                    Decl(Var("explicit", params.type(*this))),  //
@@ -1402,7 +1402,7 @@
     // var v : vecN<T> = vecTN();
     auto& params = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Decl(Var("v", params.type(*this), Call(params.alias))));
     EXPECT_TRUE(r()->Resolve()) << r()->error();
@@ -1450,7 +1450,7 @@
     // enable f16;
     // var<private> v : f32<true>;
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
     GlobalVar("v", core::AddressSpace::kPrivate, ty(Source{{12, 34}}, GetParam(), true));
 
     EXPECT_FALSE(r()->Resolve());
@@ -1463,7 +1463,7 @@
     // alias A = f32;
     // var<private> v : A<true>;
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
     Alias(Source{{56, 78}}, "A", ty(GetParam()));
     GlobalVar("v", core::AddressSpace::kPrivate, ty(Source{{12, 34}}, "A", true));
 
diff --git a/src/tint/lang/wgsl/resolver/uniformity.cc b/src/tint/lang/wgsl/resolver/uniformity.cc
index 5550687..9b8385b 100644
--- a/src/tint/lang/wgsl/resolver/uniformity.cc
+++ b/src/tint/lang/wgsl/resolver/uniformity.cc
@@ -78,7 +78,7 @@
         CallSiteRequiredToBeUniform,
         CallSiteNoRestriction,
     } tag;
-    core::DiagnosticSeverity severity = core::DiagnosticSeverity::kUndefined;
+    wgsl::DiagnosticSeverity severity = wgsl::DiagnosticSeverity::kUndefined;
 };
 
 /// FunctionTag describes a functions effects on uniformity.
@@ -94,7 +94,7 @@
         ParameterContentsRequiredToBeUniform,
         ParameterNoRestriction,
     } tag;
-    core::DiagnosticSeverity severity = core::DiagnosticSeverity::kUndefined;
+    wgsl::DiagnosticSeverity severity = wgsl::DiagnosticSeverity::kUndefined;
 };
 
 /// Node represents a node in the graph of control flow and value nodes within the analysis of a
@@ -264,13 +264,13 @@
     };
 
     /// @returns the RequiredToBeUniform node that corresponds to `severity`
-    Node* RequiredToBeUniform(core::DiagnosticSeverity severity) {
+    Node* RequiredToBeUniform(wgsl::DiagnosticSeverity severity) {
         switch (severity) {
-            case core::DiagnosticSeverity::kError:
+            case wgsl::DiagnosticSeverity::kError:
                 return required_to_be_uniform_error;
-            case core::DiagnosticSeverity::kWarning:
+            case wgsl::DiagnosticSeverity::kWarning:
                 return required_to_be_uniform_warning;
-            case core::DiagnosticSeverity::kInfo:
+            case wgsl::DiagnosticSeverity::kInfo:
                 return required_to_be_uniform_info;
             default:
                 TINT_UNREACHABLE() << "unhandled severity";
@@ -460,7 +460,7 @@
         // Look at which nodes are reachable from "RequiredToBeUniform".
         {
             UniqueVector<Node*, 4> reachable;
-            auto traverse = [&](core::DiagnosticSeverity severity) {
+            auto traverse = [&](wgsl::DiagnosticSeverity severity) {
                 Traverse(current_function_->RequiredToBeUniform(severity), &reachable);
                 if (reachable.Contains(current_function_->may_be_non_uniform)) {
                     MakeError(*current_function_, current_function_->may_be_non_uniform, severity);
@@ -483,11 +483,11 @@
                 }
                 return true;
             };
-            if (!traverse(core::DiagnosticSeverity::kError)) {
+            if (!traverse(wgsl::DiagnosticSeverity::kError)) {
                 return false;
             } else {
-                if (traverse(core::DiagnosticSeverity::kWarning)) {
-                    traverse(core::DiagnosticSeverity::kInfo);
+                if (traverse(wgsl::DiagnosticSeverity::kWarning)) {
+                    traverse(wgsl::DiagnosticSeverity::kInfo);
                 }
             }
         }
@@ -1537,8 +1537,8 @@
         result->type = Node::kFunctionCallReturnValue;
         Node* cf_after = CreateNode({"CF_after_", name}, call);
 
-        auto default_severity = kUniformityFailuresAsError ? core::DiagnosticSeverity::kError
-                                                           : core::DiagnosticSeverity::kWarning;
+        auto default_severity = kUniformityFailuresAsError ? wgsl::DiagnosticSeverity::kError
+                                                           : wgsl::DiagnosticSeverity::kWarning;
 
         // Get tags for the callee.
         CallSiteTag callsite_tag = {CallSiteTag::CallSiteNoRestriction};
@@ -1560,8 +1560,8 @@
                            builtin->Type() == core::Function::kTextureSampleCompare) {
                     // Get the severity of derivative uniformity violations in this context.
                     auto severity = sem_.DiagnosticSeverity(
-                        call, core::CoreDiagnosticRule::kDerivativeUniformity);
-                    if (severity != core::DiagnosticSeverity::kOff) {
+                        call, wgsl::CoreDiagnosticRule::kDerivativeUniformity);
+                    if (severity != wgsl::DiagnosticSeverity::kOff) {
                         callsite_tag = {CallSiteTag::CallSiteRequiredToBeUniform, severity};
                     }
                     function_tag = ReturnValueMayBeNonUniform;
@@ -1734,7 +1734,7 @@
     /// order to find a call to a builtin function that requires uniformity with the given severity.
     const ast::CallExpression* FindBuiltinThatRequiresUniformity(
         const ast::CallExpression* call,
-        core::DiagnosticSeverity severity) {
+        wgsl::DiagnosticSeverity severity) {
         auto* target = SemCall(call)->Target();
         if (target->Is<sem::Builtin>()) {
             // This is a call to a builtin, so we must be done.
@@ -1893,11 +1893,11 @@
     /// @param function the function that the diagnostic is being produced for
     /// @param source_node the node that has caused a uniformity issue in `function`
     /// @param severity the severity of the diagnostic
-    void MakeError(FunctionInfo& function, Node* source_node, core::DiagnosticSeverity severity) {
+    void MakeError(FunctionInfo& function, Node* source_node, wgsl::DiagnosticSeverity severity) {
         // Helper to produce a diagnostic message, as a note or with the global failure severity.
         auto report = [&](Source source, std::string msg, bool note) {
             diag::Diagnostic error{};
-            error.severity = note ? diag::Severity::Note : core::ToSeverity(severity);
+            error.severity = note ? diag::Severity::Note : wgsl::ToSeverity(severity);
             error.system = diag::System::Resolver;
             error.source = source;
             error.message = msg;
diff --git a/src/tint/lang/wgsl/resolver/uniformity_test.cc b/src/tint/lang/wgsl/resolver/uniformity_test.cc
index e7b7337..36568e9 100644
--- a/src/tint/lang/wgsl/resolver/uniformity_test.cc
+++ b/src/tint/lang/wgsl/resolver/uniformity_test.cc
@@ -8329,16 +8329,16 @@
 
 class UniformityAnalysisDiagnosticFilterTest
     : public UniformityAnalysisTestBase,
-      public ::testing::TestWithParam<core::DiagnosticSeverity> {
+      public ::testing::TestWithParam<wgsl::DiagnosticSeverity> {
   protected:
     // TODO(jrprice): Remove this in favour of tint::ToString() when we change "note" to "info".
-    const char* ToStr(core::DiagnosticSeverity severity) {
+    const char* ToStr(wgsl::DiagnosticSeverity severity) {
         switch (severity) {
-            case core::DiagnosticSeverity::kError:
+            case wgsl::DiagnosticSeverity::kError:
                 return "error";
-            case core::DiagnosticSeverity::kWarning:
+            case wgsl::DiagnosticSeverity::kWarning:
                 return "warning";
-            case core::DiagnosticSeverity::kInfo:
+            case wgsl::DiagnosticSeverity::kInfo:
                 return "note";
             default:
                 return "<undefined>";
@@ -8362,9 +8362,9 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
 
-    if (param == core::DiagnosticSeverity::kOff) {
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8390,8 +8390,8 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
-    if (param == core::DiagnosticSeverity::kOff) {
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8416,8 +8416,8 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
-    if (param == core::DiagnosticSeverity::kOff) {
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8439,8 +8439,8 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
-    if (param == core::DiagnosticSeverity::kOff) {
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8462,8 +8462,8 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
-    if (param == core::DiagnosticSeverity::kOff) {
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8485,8 +8485,8 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
-    if (param == core::DiagnosticSeverity::kOff) {
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8511,8 +8511,8 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
-    if (param == core::DiagnosticSeverity::kOff) {
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8534,8 +8534,8 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
-    if (param == core::DiagnosticSeverity::kOff) {
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8560,8 +8560,8 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
-    if (param == core::DiagnosticSeverity::kOff) {
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8587,8 +8587,8 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
-    if (param == core::DiagnosticSeverity::kOff) {
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8614,8 +8614,8 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
-    if (param == core::DiagnosticSeverity::kOff) {
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8641,8 +8641,8 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
-    if (param == core::DiagnosticSeverity::kOff) {
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8668,8 +8668,8 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
-    if (param == core::DiagnosticSeverity::kOff) {
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8695,8 +8695,8 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
-    if (param == core::DiagnosticSeverity::kOff) {
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8722,8 +8722,8 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
-    if (param == core::DiagnosticSeverity::kOff) {
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8746,8 +8746,8 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
-    if (param == core::DiagnosticSeverity::kOff) {
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8774,8 +8774,8 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
-    if (param == core::DiagnosticSeverity::kOff) {
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8802,8 +8802,8 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
-    if (param == core::DiagnosticSeverity::kOff) {
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8825,8 +8825,8 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
-    if (param == core::DiagnosticSeverity::kOff) {
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8851,8 +8851,8 @@
 }
 )";
 
-    RunTest(ss.str(), param != core::DiagnosticSeverity::kError);
-    if (param == core::DiagnosticSeverity::kOff) {
+    RunTest(ss.str(), param != wgsl::DiagnosticSeverity::kError);
+    if (param == wgsl::DiagnosticSeverity::kOff) {
         EXPECT_TRUE(error_.empty());
     } else {
         StringStream err;
@@ -8863,10 +8863,10 @@
 
 INSTANTIATE_TEST_SUITE_P(UniformityAnalysisTest,
                          UniformityAnalysisDiagnosticFilterTest,
-                         ::testing::Values(core::DiagnosticSeverity::kError,
-                                           core::DiagnosticSeverity::kWarning,
-                                           core::DiagnosticSeverity::kInfo,
-                                           core::DiagnosticSeverity::kOff));
+                         ::testing::Values(wgsl::DiagnosticSeverity::kError,
+                                           wgsl::DiagnosticSeverity::kWarning,
+                                           wgsl::DiagnosticSeverity::kInfo,
+                                           wgsl::DiagnosticSeverity::kOff));
 
 TEST_F(UniformityAnalysisDiagnosticFilterTest, AttributeOnFunction_CalledByAnotherFunction) {
     std::string src = R"(
diff --git a/src/tint/lang/wgsl/resolver/validator.cc b/src/tint/lang/wgsl/resolver/validator.cc
index 235c625..c21c6d1 100644
--- a/src/tint/lang/wgsl/resolver/validator.cc
+++ b/src/tint/lang/wgsl/resolver/validator.cc
@@ -151,7 +151,7 @@
 Validator::Validator(
     ProgramBuilder* builder,
     SemHelper& sem,
-    const core::Extensions& enabled_extensions,
+    const wgsl::Extensions& enabled_extensions,
     const Hashmap<const core::type::Type*, const Source*, 8>& atomic_composite_info,
     Hashset<TypeAndAddressSpace, 8>& valid_type_storage_layouts)
     : symbols_(builder->Symbols()),
@@ -161,10 +161,10 @@
       atomic_composite_info_(atomic_composite_info),
       valid_type_storage_layouts_(valid_type_storage_layouts) {
     // Set default severities for filterable diagnostic rules.
-    diagnostic_filters_.Set(core::CoreDiagnosticRule::kDerivativeUniformity,
-                            core::DiagnosticSeverity::kError);
-    diagnostic_filters_.Set(core::ChromiumDiagnosticRule::kUnreachableCode,
-                            core::DiagnosticSeverity::kWarning);
+    diagnostic_filters_.Set(wgsl::CoreDiagnosticRule::kDerivativeUniformity,
+                            wgsl::DiagnosticSeverity::kError);
+    diagnostic_filters_.Set(wgsl::ChromiumDiagnosticRule::kUnreachableCode,
+                            wgsl::DiagnosticSeverity::kWarning);
 }
 
 Validator::~Validator() = default;
@@ -181,18 +181,18 @@
     diagnostics_.add_note(diag::System::Resolver, msg, source);
 }
 
-bool Validator::AddDiagnostic(core::DiagnosticRule rule,
+bool Validator::AddDiagnostic(wgsl::DiagnosticRule rule,
                               const std::string& msg,
                               const Source& source) const {
     auto severity = diagnostic_filters_.Get(rule);
-    if (severity != core::DiagnosticSeverity::kOff) {
+    if (severity != wgsl::DiagnosticSeverity::kOff) {
         diag::Diagnostic d{};
         d.severity = ToSeverity(severity);
         d.system = diag::System::Resolver;
         d.source = source;
         d.message = msg;
         diagnostics_.add(std::move(d));
-        if (severity == core::DiagnosticSeverity::kError) {
+        if (severity == wgsl::DiagnosticSeverity::kError) {
             return false;
         }
     }
@@ -315,7 +315,7 @@
     switch (t->access()) {
         case core::Access::kRead:
             if (!enabled_extensions_.Contains(
-                    core::Extension::kChromiumExperimentalReadWriteStorageTexture)) {
+                    wgsl::Extension::kChromiumExperimentalReadWriteStorageTexture)) {
                 AddError(
                     "read-only storage textures require the "
                     "chromium_experimental_read_write_storage_texture extension to be enabled",
@@ -325,7 +325,7 @@
             break;
         case core::Access::kReadWrite:
             if (!enabled_extensions_.Contains(
-                    core::Extension::kChromiumExperimentalReadWriteStorageTexture)) {
+                    wgsl::Extension::kChromiumExperimentalReadWriteStorageTexture)) {
                 AddError(
                     "read-write storage textures require the "
                     "chromium_experimental_read_write_storage_texture extension to be enabled",
@@ -472,7 +472,7 @@
             // Validate that member is at a valid byte offset
             if (m->Offset() % required_align != 0 &&
                 !enabled_extensions_.Contains(
-                    core::Extension::kChromiumInternalRelaxedUniformLayout)) {
+                    wgsl::Extension::kChromiumInternalRelaxedUniformLayout)) {
                 AddError("the offset of a struct member of type '" +
                              m->Type()->UnwrapRef()->FriendlyName() + "' in address space '" +
                              tint::ToString(address_space) + "' must be a multiple of " +
@@ -500,7 +500,7 @@
                 const uint32_t prev_to_curr_offset = m->Offset() - prev_member->Offset();
                 if (prev_to_curr_offset % 16 != 0 &&
                     !enabled_extensions_.Contains(
-                        core::Extension::kChromiumInternalRelaxedUniformLayout)) {
+                        wgsl::Extension::kChromiumInternalRelaxedUniformLayout)) {
                     AddError(
                         "uniform storage requires that the number of bytes between the start of "
                         "the previous member of type struct and the current member be a multiple "
@@ -533,7 +533,7 @@
         }
 
         if (address_space == core::AddressSpace::kUniform &&
-            !enabled_extensions_.Contains(core::Extension::kChromiumInternalRelaxedUniformLayout)) {
+            !enabled_extensions_.Contains(wgsl::Extension::kChromiumInternalRelaxedUniformLayout)) {
             // We already validated that this array member is itself aligned to 16 bytes above, so
             // we only need to validate that stride is a multiple of 16 bytes.
             if (arr->Stride() % 16 != 0) {
@@ -803,7 +803,7 @@
                 case core::AddressSpace::kUniform:
                 case core::AddressSpace::kWorkgroup:
                     ok = enabled_extensions_.Contains(
-                        core::Extension::kChromiumExperimentalFullPtrParameters);
+                        wgsl::Extension::kChromiumExperimentalFullPtrParameters);
                     break;
                 default:
                     break;
@@ -947,7 +947,7 @@
             break;
         case core::BuiltinValue::kSubgroupInvocationId:
         case core::BuiltinValue::kSubgroupSize:
-            if (!enabled_extensions_.Contains(core::Extension::kChromiumExperimentalSubgroups)) {
+            if (!enabled_extensions_.Contains(wgsl::Extension::kChromiumExperimentalSubgroups)) {
                 StringStream err;
                 err << "use of @builtin(" << builtin
                     << ") attribute requires enabling extension 'chromium_experimental_subgroups'";
@@ -1434,7 +1434,7 @@
 bool Validator::Statements(VectorRef<const ast::Statement*> stmts) const {
     for (auto* stmt : stmts) {
         if (!sem_.Get(stmt)->IsReachable()) {
-            if (!AddDiagnostic(core::ChromiumDiagnosticRule::kUnreachableCode,
+            if (!AddDiagnostic(wgsl::ChromiumDiagnosticRule::kUnreachableCode,
                                "code is unreachable", stmt->source)) {
                 return false;
             }
@@ -1740,7 +1740,7 @@
     }
 
     const auto extension = builtin->RequiredExtension();
-    if (extension == core::Extension::kUndefined) {
+    if (extension == wgsl::Extension::kUndefined) {
         return true;
     }
 
@@ -1756,7 +1756,7 @@
 
 bool Validator::CheckF16Enabled(const Source& source) const {
     // Validate if f16 type is allowed.
-    if (!enabled_extensions_.Contains(core::Extension::kF16)) {
+    if (!enabled_extensions_.Contains(wgsl::Extension::kF16)) {
         AddError("f16 type used without 'f16' extension enabled", source);
         return false;
     }
@@ -1807,7 +1807,7 @@
 
         if (param_type->Is<core::type::Pointer>() &&
             !enabled_extensions_.Contains(
-                core::Extension::kChromiumExperimentalFullPtrParameters)) {
+                wgsl::Extension::kChromiumExperimentalFullPtrParameters)) {
             // https://gpuweb.github.io/gpuweb/wgsl/#function-restriction
             // Each argument of pointer type to a user-defined function must have the same memory
             // view as its root identifier.
@@ -2294,7 +2294,7 @@
 
 bool Validator::IndexAttribute(const ast::IndexAttribute* index_attr,
                                ast::PipelineStage stage) const {
-    if (!enabled_extensions_.Contains(core::Extension::kChromiumInternalDualSourceBlending)) {
+    if (!enabled_extensions_.Contains(wgsl::Extension::kChromiumInternalDualSourceBlending)) {
         AddError(
             "use of '@index' attribute requires enabling extension "
             "'chromium_internal_dual_source_blending'",
@@ -2658,7 +2658,7 @@
             break;
         case core::AddressSpace::kPushConstant:
             if (TINT_UNLIKELY(!enabled_extensions_.Contains(
-                                  core::Extension::kChromiumExperimentalPushConstant) &&
+                                  wgsl::Extension::kChromiumExperimentalPushConstant) &&
                               IsValidationEnabled(attributes,
                                                   ast::DisabledValidation::kIgnoreAddressSpace))) {
                 AddError(
diff --git a/src/tint/lang/wgsl/resolver/validator.h b/src/tint/lang/wgsl/resolver/validator.h
index a4035a3..8e80916 100644
--- a/src/tint/lang/wgsl/resolver/validator.h
+++ b/src/tint/lang/wgsl/resolver/validator.h
@@ -85,7 +85,7 @@
 };
 
 /// DiagnosticFilterStack is a scoped stack of diagnostic filters.
-using DiagnosticFilterStack = ScopeStack<core::DiagnosticRule, core::DiagnosticSeverity>;
+using DiagnosticFilterStack = ScopeStack<wgsl::DiagnosticRule, wgsl::DiagnosticSeverity>;
 
 /// Validation logic for various ast nodes. The validations in general should
 /// be shallow and depend on the resolver to call on children. The validations
@@ -101,7 +101,7 @@
     /// @param valid_type_storage_layouts a set of validated type layouts by address space
     Validator(ProgramBuilder* builder,
               SemHelper& helper,
-              const core::Extensions& enabled_extensions,
+              const wgsl::Extensions& enabled_extensions,
               const Hashmap<const core::type::Type*, const Source*, 8>& atomic_composite_info,
               Hashset<TypeAndAddressSpace, 8>& valid_type_storage_layouts);
     ~Validator();
@@ -126,7 +126,7 @@
     /// @param msg the diagnostic message
     /// @param source the diagnostic source
     /// @returns false if the diagnostic is an error for the given trigger rule
-    bool AddDiagnostic(core::DiagnosticRule rule,
+    bool AddDiagnostic(wgsl::DiagnosticRule rule,
                        const std::string& msg,
                        const Source& source) const;
 
@@ -566,7 +566,7 @@
     diag::List& diagnostics_;
     SemHelper& sem_;
     DiagnosticFilterStack diagnostic_filters_;
-    const core::Extensions& enabled_extensions_;
+    const wgsl::Extensions& enabled_extensions_;
     const Hashmap<const core::type::Type*, const Source*, 8>& atomic_composite_info_;
     Hashset<TypeAndAddressSpace, 8>& valid_type_storage_layouts_;
 };
diff --git a/src/tint/lang/wgsl/resolver/value_constructor_validation_test.cc b/src/tint/lang/wgsl/resolver/value_constructor_validation_test.cc
index 63fe3b1..0dcd3a1 100644
--- a/src/tint/lang/wgsl/resolver/value_constructor_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/value_constructor_validation_test.cc
@@ -79,7 +79,7 @@
     // }
     auto& params = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* initializer_expr = params.create_rhs_ast_value(*this, 0);
 
@@ -180,7 +180,7 @@
     // }
     auto& params = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Func("foo", tint::Empty, params.create_rhs_ast_type(*this),
          Vector{Return(Call(params.create_rhs_ast_type(*this)))}, {});
@@ -337,7 +337,7 @@
 TEST_P(ConversionConstructorValidTest, All) {
     auto& params = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     // var a : <lhs_type1> = <lhs_type2>(<rhs_type>(<rhs_value_expr>));
     auto lhs_type1 = params.lhs_type(*this);
@@ -443,7 +443,7 @@
        << FriendlyName(rhs_type) << "(<rhs value expr>))";
     SCOPED_TRACE(ss.str());
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* a = Var("a", lhs_type1, Call(lhs_type2, Call(rhs_type, rhs_value_expr)));
 
@@ -944,7 +944,7 @@
 }
 
 TEST_F(ResolverValueConstructorValidationTest, F16_Success) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* expr = Call<f16>(Expr(1.5_h));
     WrapInFunction(expr);
@@ -1000,7 +1000,7 @@
 }
 
 TEST_F(ResolverValueConstructorValidationTest, Convert_u32_to_f16_Success) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* expr = Call<f16>(123_u);
     WrapInFunction(expr);
@@ -1020,7 +1020,7 @@
 }
 
 TEST_F(ResolverValueConstructorValidationTest, Convert_f16_to_f32_Success) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* expr = Call<f32>(123_h);
     WrapInFunction(expr);
@@ -1052,7 +1052,7 @@
 }
 
 TEST_F(ResolverValueConstructorValidationTest, Vec2F16_Error_ScalarArgumentTypeMismatch) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<vec2<f16>>(Source{{12, 34}}, 1_h, 2_f));
 
@@ -1175,7 +1175,7 @@
 }
 
 TEST_F(ResolverValueConstructorValidationTest, Vec2F16_Success_Scalar) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* tc = Call<vec2<f16>>(1_h, 1_h);
     WrapInFunction(tc);
@@ -1309,7 +1309,7 @@
 }
 
 TEST_F(ResolverValueConstructorValidationTest, Vec3F16_Error_ScalarArgumentTypeMismatch) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<vec3<f16>>(Source{{12, 34}}, 1_h, 2_h, 3_f));
 
@@ -1451,7 +1451,7 @@
 }
 
 TEST_F(ResolverValueConstructorValidationTest, Vec3F16_Success_Scalar) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* tc = Call<vec3<f16>>(1_h, 1_h, 1_h);
     WrapInFunction(tc);
@@ -1632,7 +1632,7 @@
 }
 
 TEST_F(ResolverValueConstructorValidationTest, Vec4F16_Error_ScalarArgumentTypeMismatch) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<vec4<f16>>(Source{{12, 34}}, 1_h, 1_h, 1_f, 1_h));
 
@@ -1800,7 +1800,7 @@
 }
 
 TEST_F(ResolverValueConstructorValidationTest, Vec4F16_Success_Scalar) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* tc = Call<vec4<f16>>(1_h, 1_h, 1_h, 1_h);
     WrapInFunction(tc);
@@ -2036,7 +2036,7 @@
 }
 
 TEST_F(ResolverValueConstructorValidationTest, InferVec2ElementTypeFromScalars) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vec2_bool = Call<vec2<Infer>>(true, false);
     auto* vec2_i32 = Call<vec2<Infer>>(1_i, 2_i);
@@ -2065,7 +2065,7 @@
 }
 
 TEST_F(ResolverValueConstructorValidationTest, InferVec2ElementTypeFromVec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vec2_bool = Call<vec2<Infer>>(Call<vec2<bool>>(true, false));
     auto* vec2_i32 = Call<vec2<Infer>>(Call<vec2<i32>>(1_i, 2_i));
@@ -2094,7 +2094,7 @@
 }
 
 TEST_F(ResolverValueConstructorValidationTest, InferVec3ElementTypeFromScalars) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vec3_bool = Call<vec3<Infer>>(true, false, true);
     auto* vec3_i32 = Call<vec3<Infer>>(1_i, 2_i, 3_i);
@@ -2123,7 +2123,7 @@
 }
 
 TEST_F(ResolverValueConstructorValidationTest, InferVec3ElementTypeFromVec3) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vec3_bool = Call<vec3<Infer>>(Call<vec3<bool>>(true, false, true));
     auto* vec3_i32 = Call<vec3<Infer>>(Call<vec3<i32>>(1_i, 2_i, 3_i));
@@ -2152,7 +2152,7 @@
 }
 
 TEST_F(ResolverValueConstructorValidationTest, InferVec3ElementTypeFromScalarAndVec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vec3_bool = Call<vec3<Infer>>(true, Call<vec2<bool>>(false, true));
     auto* vec3_i32 = Call<vec3<Infer>>(1_i, Call<vec2<i32>>(2_i, 3_i));
@@ -2181,7 +2181,7 @@
 }
 
 TEST_F(ResolverValueConstructorValidationTest, InferVec4ElementTypeFromScalars) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vec4_bool = Call<vec4<Infer>>(true, false, true, false);
     auto* vec4_i32 = Call<vec4<Infer>>(1_i, 2_i, 3_i, 4_i);
@@ -2210,7 +2210,7 @@
 }
 
 TEST_F(ResolverValueConstructorValidationTest, InferVec4ElementTypeFromVec4) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vec4_bool = Call<vec4<Infer>>(Call<vec4<bool>>(true, false, true, false));
     auto* vec4_i32 = Call<vec4<Infer>>(Call<vec4<i32>>(1_i, 2_i, 3_i, 4_i));
@@ -2239,7 +2239,7 @@
 }
 
 TEST_F(ResolverValueConstructorValidationTest, InferVec4ElementTypeFromScalarAndVec3) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vec4_bool = Call<vec4<Infer>>(true, Call<vec3<bool>>(false, true, false));
     auto* vec4_i32 = Call<vec4<Infer>>(1_i, Call<vec3<i32>>(2_i, 3_i, 4_i));
@@ -2268,7 +2268,7 @@
 }
 
 TEST_F(ResolverValueConstructorValidationTest, InferVec4ElementTypeFromVec2AndVec2) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* vec4_bool =
         Call<vec4<Infer>>(Call<vec2<bool>>(true, false), Call<vec2<bool>>(true, false));
@@ -2425,7 +2425,7 @@
 
     const auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     const std::string element_type_name = param.get_element_type_name();
     StringStream args_tys;
@@ -2454,7 +2454,7 @@
 
     const auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     const std::string element_type_name = param.get_element_type_name();
     StringStream args_tys;
@@ -2482,7 +2482,7 @@
 
     const auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     const std::string element_type_name = param.get_element_type_name();
     StringStream args_tys;
@@ -2511,7 +2511,7 @@
 
     const auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     const std::string element_type_name = param.get_element_type_name();
     StringStream args_tys;
@@ -2539,7 +2539,7 @@
 
     const auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     StringStream args_tys;
     Vector<const ast::Expression*, 8> args;
@@ -2567,7 +2567,7 @@
 
     const auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     StringStream args_tys;
     Vector<const ast::Expression*, 8> args;
@@ -2599,7 +2599,7 @@
         return;
     }
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     const std::string element_type_name = param.get_element_type_name();
     StringStream args_tys;
@@ -2637,7 +2637,7 @@
         return;
     }
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     const std::string element_type_name = param.get_element_type_name();
     StringStream args_tys;
@@ -2669,7 +2669,7 @@
 
     const auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     ast::Type matrix_type = param.create_mat_ast_type(*this);
     auto* tc = Call(Source{{12, 40}}, matrix_type);
@@ -2684,7 +2684,7 @@
 
     const auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Vector<const ast::Expression*, 4> args;
     for (uint32_t i = 0; i < param.columns; i++) {
@@ -2705,7 +2705,7 @@
 
     const auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Vector<const ast::Expression*, 16> args;
     for (uint32_t i = 0; i < param.columns * param.rows; i++) {
@@ -2725,7 +2725,7 @@
 
     const auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* elem_type_alias = Alias("ElemType", param.create_element_ast_type(*this));
 
@@ -2755,7 +2755,7 @@
 
     const auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* elem_type_alias = Alias("ElemType", param.create_element_ast_type(*this));
 
@@ -2786,7 +2786,7 @@
 TEST_P(MatrixConstructorTest, ArgumentTypeAlias_Success) {
     const auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     ast::Type matrix_type = param.create_mat_ast_type(*this);
     ast::Type vec_type = param.create_column_ast_type(*this);
@@ -2806,7 +2806,7 @@
 TEST_P(MatrixConstructorTest, ArgumentElementTypeAlias_Error) {
     const auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     ast::Type matrix_type = param.create_mat_ast_type(*this);
     auto* u32_type_alias = Alias("UnsignedInt", ty.u32());
@@ -2833,7 +2833,7 @@
 TEST_P(MatrixConstructorTest, ArgumentElementTypeAlias_Success) {
     const auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* elem_type_alias = Alias("ElemType", param.create_element_ast_type(*this));
 
@@ -2853,7 +2853,7 @@
 TEST_P(MatrixConstructorTest, InferElementTypeFromVectors) {
     const auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Vector<const ast::Expression*, 8> args;
     for (uint32_t i = 0; i < param.columns; i++) {
@@ -2870,7 +2870,7 @@
 TEST_P(MatrixConstructorTest, InferElementTypeFromScalars) {
     const auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Vector<const ast::Expression*, 8> args;
     for (uint32_t i = 0; i < param.rows * param.columns; i++) {
@@ -2886,7 +2886,7 @@
 TEST_P(MatrixConstructorTest, CannotInferElementTypeFromVectors_Mismatch) {
     const auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     StringStream err;
     err << "12:34 error: no matching constructor for mat" << param.columns << "x" << param.rows
@@ -2917,7 +2917,7 @@
 TEST_P(MatrixConstructorTest, CannotInferElementTypeFromScalars_Mismatch) {
     const auto param = GetParam();
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     StringStream err;
     err << "12:34 error: no matching constructor for mat" << param.columns << "x" << param.rows
@@ -3001,7 +3001,7 @@
     auto& str_params = std::get<0>(param);
     uint32_t N = std::get<1>(param);
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Vector<const ast::StructMember*, 16> members;
     Vector<const ast::Expression*, 16> values;
@@ -3026,7 +3026,7 @@
     auto& str_params = std::get<0>(param);
     uint32_t N = std::get<1>(param);
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     Vector<const ast::StructMember*, 16> members;
     Vector<const ast::Expression*, 8> values;
@@ -3059,7 +3059,7 @@
     auto& ctor_params = std::get<1>(param);
     uint32_t N = std::get<2>(param);
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     if (str_params.ast == ctor_params.ast) {
         return;
diff --git a/src/tint/lang/wgsl/resolver/variable_test.cc b/src/tint/lang/wgsl/resolver/variable_test.cc
index 5951865..3e80a5e5 100644
--- a/src/tint/lang/wgsl/resolver/variable_test.cc
+++ b/src/tint/lang/wgsl/resolver/variable_test.cc
@@ -42,7 +42,7 @@
     //   var a : A;
     // }
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* S = Structure("S", Vector{Member("i", ty.i32())});
     auto* A = Alias("A", ty.Of(S));
@@ -107,7 +107,7 @@
     //   var a : A = A(1);
     // }
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* S = Structure("S", Vector{Member("i", ty.i32())});
     auto* A = Alias("A", ty.Of(S));
@@ -400,7 +400,7 @@
     //   let p : pointer<function, i32> = &v;
     // }
 
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* S = Structure("S", Vector{Member("i", ty.i32())});
     auto* A = Alias("A", ty.Of(S));
diff --git a/src/tint/lang/wgsl/resolver/variable_validation_test.cc b/src/tint/lang/wgsl/resolver/variable_validation_test.cc
index 68d7b1e..cfcc146 100644
--- a/src/tint/lang/wgsl/resolver/variable_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/variable_validation_test.cc
@@ -506,7 +506,7 @@
 TEST_F(ResolverVariableValidationTest, GlobalVariable_PushConstantWithInitializer) {
     // enable chromium_experimental_push_constant;
     // var<push_constant> a : u32 = 0u;
-    Enable(core::Extension::kChromiumExperimentalPushConstant);
+    Enable(wgsl::Extension::kChromiumExperimentalPushConstant);
     GlobalVar(Source{{1u, 2u}}, "a", ty.u32(), core::AddressSpace::kPushConstant,
               Expr(Source{{3u, 4u}}, u32(0)));
 
diff --git a/src/tint/lang/wgsl/sem/BUILD.bazel b/src/tint/lang/wgsl/sem/BUILD.bazel
index a8d4579..75b0dae 100644
--- a/src/tint/lang/wgsl/sem/BUILD.bazel
+++ b/src/tint/lang/wgsl/sem/BUILD.bazel
@@ -99,6 +99,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/utils/containers",
     "//src/tint/utils/diagnostic",
@@ -132,6 +133,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/resolver",
diff --git a/src/tint/lang/wgsl/sem/BUILD.cmake b/src/tint/lang/wgsl/sem/BUILD.cmake
index 11238c5..306ba36 100644
--- a/src/tint/lang/wgsl/sem/BUILD.cmake
+++ b/src/tint/lang/wgsl/sem/BUILD.cmake
@@ -98,6 +98,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_utils_containers
   tint_utils_diagnostic
@@ -131,6 +132,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_resolver
diff --git a/src/tint/lang/wgsl/sem/BUILD.gn b/src/tint/lang/wgsl/sem/BUILD.gn
index ae039c1..87f0a99 100644
--- a/src/tint/lang/wgsl/sem/BUILD.gn
+++ b/src/tint/lang/wgsl/sem/BUILD.gn
@@ -102,6 +102,7 @@
     "${tint_src_dir}/lang/core",
     "${tint_src_dir}/lang/core/constant",
     "${tint_src_dir}/lang/core/type",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/utils/containers",
     "${tint_src_dir}/utils/diagnostic",
@@ -134,6 +135,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/program",
       "${tint_src_dir}/lang/wgsl/resolver",
diff --git a/src/tint/lang/wgsl/sem/builtin.cc b/src/tint/lang/wgsl/sem/builtin.cc
index 3845778..a3e5fa5 100644
--- a/src/tint/lang/wgsl/sem/builtin.cc
+++ b/src/tint/lang/wgsl/sem/builtin.cc
@@ -92,17 +92,17 @@
     return core::HasSideEffects(type_);
 }
 
-core::Extension Builtin::RequiredExtension() const {
+wgsl::Extension Builtin::RequiredExtension() const {
     if (IsDP4a()) {
-        return core::Extension::kChromiumExperimentalDp4A;
+        return wgsl::Extension::kChromiumExperimentalDp4A;
     }
     if (IsSubgroup()) {
-        return core::Extension::kChromiumExperimentalSubgroups;
+        return wgsl::Extension::kChromiumExperimentalSubgroups;
     }
     if (type_ == core::Function::kTextureBarrier) {
-        return core::Extension::kChromiumExperimentalReadWriteStorageTexture;
+        return wgsl::Extension::kChromiumExperimentalReadWriteStorageTexture;
     }
-    return core::Extension::kUndefined;
+    return wgsl::Extension::kUndefined;
 }
 
 }  // namespace tint::sem
diff --git a/src/tint/lang/wgsl/sem/builtin.h b/src/tint/lang/wgsl/sem/builtin.h
index 64ee5c2..1d0ce97 100644
--- a/src/tint/lang/wgsl/sem/builtin.h
+++ b/src/tint/lang/wgsl/sem/builtin.h
@@ -18,8 +18,8 @@
 #include <string>
 #include <vector>
 
-#include "src/tint/lang/core/extension.h"
 #include "src/tint/lang/core/function.h"
+#include "src/tint/lang/wgsl/extension.h"
 #include "src/tint/lang/wgsl/sem/call_target.h"
 #include "src/tint/lang/wgsl/sem/pipeline_stage_set.h"
 #include "src/tint/utils/math/hash.h"
@@ -101,8 +101,8 @@
     bool HasSideEffects() const;
 
     /// @returns the required extension of this builtin function. Returns
-    /// core::Extension::kNone if no extension is required.
-    core::Extension RequiredExtension() const;
+    /// wgsl::Extension::kNone if no extension is required.
+    wgsl::Extension RequiredExtension() const;
 
   private:
     const core::Function type_;
diff --git a/src/tint/lang/wgsl/sem/diagnostic_severity_test.cc b/src/tint/lang/wgsl/sem/diagnostic_severity_test.cc
index 3a464e9..adb17f2 100644
--- a/src/tint/lang/wgsl/sem/diagnostic_severity_test.cc
+++ b/src/tint/lang/wgsl/sem/diagnostic_severity_test.cc
@@ -27,7 +27,7 @@
     /// using an attribute. Test that we correctly track the severity of the filter for the
     /// functions and the statements with them.
     /// @param global_severity the global severity of the "chromium.unreachable_code" filter
-    void Run(core::DiagnosticSeverity global_severity) {
+    void Run(wgsl::DiagnosticSeverity global_severity) {
         // @diagnostic(off, chromium.unreachable_code)
         // fn foo() {
         //   @diagnostic(info, chromium.unreachable_code) {
@@ -74,22 +74,22 @@
         // fn bar() {
         //   return;
         // }
-        auto rule = core::ChromiumDiagnosticRule::kUnreachableCode;
-        auto func_severity = core::DiagnosticSeverity::kOff;
-        auto block_severity = core::DiagnosticSeverity::kInfo;
-        auto if_severity = core::DiagnosticSeverity::kError;
-        auto if_body_severity = core::DiagnosticSeverity::kWarning;
-        auto else_body_severity = core::DiagnosticSeverity::kInfo;
-        auto switch_severity = core::DiagnosticSeverity::kError;
-        auto switch_body_severity = core::DiagnosticSeverity::kOff;
-        auto case_severity = core::DiagnosticSeverity::kWarning;
-        auto for_severity = core::DiagnosticSeverity::kError;
-        auto for_body_severity = core::DiagnosticSeverity::kWarning;
-        auto loop_severity = core::DiagnosticSeverity::kWarning;
-        auto loop_body_severity = core::DiagnosticSeverity::kOff;
-        auto continuing_severity = core::DiagnosticSeverity::kInfo;
-        auto while_severity = core::DiagnosticSeverity::kError;
-        auto while_body_severity = core::DiagnosticSeverity::kWarning;
+        auto rule = wgsl::ChromiumDiagnosticRule::kUnreachableCode;
+        auto func_severity = wgsl::DiagnosticSeverity::kOff;
+        auto block_severity = wgsl::DiagnosticSeverity::kInfo;
+        auto if_severity = wgsl::DiagnosticSeverity::kError;
+        auto if_body_severity = wgsl::DiagnosticSeverity::kWarning;
+        auto else_body_severity = wgsl::DiagnosticSeverity::kInfo;
+        auto switch_severity = wgsl::DiagnosticSeverity::kError;
+        auto switch_body_severity = wgsl::DiagnosticSeverity::kOff;
+        auto case_severity = wgsl::DiagnosticSeverity::kWarning;
+        auto for_severity = wgsl::DiagnosticSeverity::kError;
+        auto for_body_severity = wgsl::DiagnosticSeverity::kWarning;
+        auto loop_severity = wgsl::DiagnosticSeverity::kWarning;
+        auto loop_body_severity = wgsl::DiagnosticSeverity::kOff;
+        auto continuing_severity = wgsl::DiagnosticSeverity::kInfo;
+        auto while_severity = wgsl::DiagnosticSeverity::kError;
+        auto while_body_severity = wgsl::DiagnosticSeverity::kWarning;
         auto attr = [&](auto severity) {
             return tint::Vector{DiagnosticAttribute(severity, "chromium", "unreachable_code")};
         };
@@ -173,12 +173,12 @@
 };
 
 TEST_F(DiagnosticSeverityTest, WithDirective) {
-    DiagnosticDirective(core::DiagnosticSeverity::kError, "chromium", "unreachable_code");
-    Run(core::DiagnosticSeverity::kError);
+    DiagnosticDirective(wgsl::DiagnosticSeverity::kError, "chromium", "unreachable_code");
+    Run(wgsl::DiagnosticSeverity::kError);
 }
 
 TEST_F(DiagnosticSeverityTest, WithoutDirective) {
-    Run(core::DiagnosticSeverity::kWarning);
+    Run(wgsl::DiagnosticSeverity::kWarning);
 }
 
 }  // namespace
diff --git a/src/tint/lang/wgsl/sem/function.h b/src/tint/lang/wgsl/sem/function.h
index 5638dbd..c21a76e 100644
--- a/src/tint/lang/wgsl/sem/function.h
+++ b/src/tint/lang/wgsl/sem/function.h
@@ -266,12 +266,12 @@
     /// Modifies the severity of a specific diagnostic rule for this function.
     /// @param rule the diagnostic rule
     /// @param severity the new diagnostic severity
-    void SetDiagnosticSeverity(core::DiagnosticRule rule, core::DiagnosticSeverity severity) {
+    void SetDiagnosticSeverity(wgsl::DiagnosticRule rule, wgsl::DiagnosticSeverity severity) {
         diagnostic_severities_[rule] = severity;
     }
 
     /// @returns the diagnostic severity modifications applied to this function
-    const core::DiagnosticRuleSeverities& DiagnosticSeverities() const {
+    const wgsl::DiagnosticRuleSeverities& DiagnosticSeverities() const {
         return diagnostic_severities_;
     }
 
@@ -295,7 +295,7 @@
     std::vector<const Function*> ancestor_entry_points_;
     const Statement* discard_stmt_ = nullptr;
     sem::Behaviors behaviors_{sem::Behavior::kNext};
-    core::DiagnosticRuleSeverities diagnostic_severities_;
+    wgsl::DiagnosticRuleSeverities diagnostic_severities_;
 
     std::optional<uint32_t> return_location_;
     std::optional<uint32_t> return_index_;
diff --git a/src/tint/lang/wgsl/sem/info.cc b/src/tint/lang/wgsl/sem/info.cc
index 9ecc02d..f4bd839 100644
--- a/src/tint/lang/wgsl/sem/info.cc
+++ b/src/tint/lang/wgsl/sem/info.cc
@@ -30,8 +30,8 @@
 
 Info& Info::operator=(Info&&) = default;
 
-core::DiagnosticSeverity Info::DiagnosticSeverity(const ast::Node* ast_node,
-                                                  core::DiagnosticRule rule) const {
+wgsl::DiagnosticSeverity Info::DiagnosticSeverity(const ast::Node* ast_node,
+                                                  wgsl::DiagnosticRule rule) const {
     // Get the diagnostic severity modification for a node.
     auto check = [&](auto* node) {
         auto& severities = node->DiagnosticSeverities();
@@ -39,13 +39,13 @@
         if (itr != severities.end()) {
             return itr->second;
         }
-        return core::DiagnosticSeverity::kUndefined;
+        return wgsl::DiagnosticSeverity::kUndefined;
     };
 
     // Get the diagnostic severity modification for a function.
     auto check_func = [&](const sem::Function* func) {
         auto severity = check(func);
-        if (severity != core::DiagnosticSeverity::kUndefined) {
+        if (severity != wgsl::DiagnosticSeverity::kUndefined) {
             return severity;
         }
 
@@ -58,7 +58,7 @@
         // Walk up the statement hierarchy, checking for diagnostic severity modifications.
         while (true) {
             auto severity = check(stmt);
-            if (severity != core::DiagnosticSeverity::kUndefined) {
+            if (severity != wgsl::DiagnosticSeverity::kUndefined) {
                 return severity;
             }
             if (!stmt->Parent()) {
@@ -83,7 +83,7 @@
             // Use the global severity set on the module.
             return check(module_);
         });
-    TINT_ASSERT(severity != core::DiagnosticSeverity::kUndefined);
+    TINT_ASSERT(severity != wgsl::DiagnosticSeverity::kUndefined);
     return severity;
 }
 
diff --git a/src/tint/lang/wgsl/sem/info.h b/src/tint/lang/wgsl/sem/info.h
index 3cdbc9a..5a41a3f 100644
--- a/src/tint/lang/wgsl/sem/info.h
+++ b/src/tint/lang/wgsl/sem/info.h
@@ -161,8 +161,8 @@
     /// @param ast_node the AST node
     /// @param rule the diagnostic rule
     /// @returns the severity of the rule for that AST node
-    core::DiagnosticSeverity DiagnosticSeverity(const ast::Node* ast_node,
-                                                core::DiagnosticRule rule) const;
+    wgsl::DiagnosticSeverity DiagnosticSeverity(const ast::Node* ast_node,
+                                                wgsl::DiagnosticRule rule) const;
 
   private:
     // AST node index to semantic node
diff --git a/src/tint/lang/wgsl/sem/module.cc b/src/tint/lang/wgsl/sem/module.cc
index 29b2c70..8da89c8 100644
--- a/src/tint/lang/wgsl/sem/module.cc
+++ b/src/tint/lang/wgsl/sem/module.cc
@@ -21,7 +21,7 @@
 
 namespace tint::sem {
 
-Module::Module(VectorRef<const ast::Node*> dep_ordered_decls, core::Extensions extensions)
+Module::Module(VectorRef<const ast::Node*> dep_ordered_decls, wgsl::Extensions extensions)
     : dep_ordered_decls_(std::move(dep_ordered_decls)), extensions_(std::move(extensions)) {}
 
 Module::~Module() = default;
diff --git a/src/tint/lang/wgsl/sem/module.h b/src/tint/lang/wgsl/sem/module.h
index d1cae6c..25b86db 100644
--- a/src/tint/lang/wgsl/sem/module.h
+++ b/src/tint/lang/wgsl/sem/module.h
@@ -15,8 +15,8 @@
 #ifndef SRC_TINT_LANG_WGSL_SEM_MODULE_H_
 #define SRC_TINT_LANG_WGSL_SEM_MODULE_H_
 
-#include "src/tint/lang/core/extension.h"
 #include "src/tint/lang/wgsl/ast/diagnostic_control.h"
+#include "src/tint/lang/wgsl/extension.h"
 #include "src/tint/lang/wgsl/sem/node.h"
 #include "src/tint/utils/containers/vector.h"
 
@@ -34,7 +34,7 @@
     /// Constructor
     /// @param dep_ordered_decls the dependency-ordered module-scope declarations
     /// @param extensions the list of enabled extensions in the module
-    Module(VectorRef<const ast::Node*> dep_ordered_decls, core::Extensions extensions);
+    Module(VectorRef<const ast::Node*> dep_ordered_decls, wgsl::Extensions extensions);
 
     /// Destructor
     ~Module() override;
@@ -43,24 +43,24 @@
     VectorRef<const ast::Node*> DependencyOrderedDeclarations() const { return dep_ordered_decls_; }
 
     /// @returns the list of enabled extensions in the module
-    const core::Extensions& Extensions() const { return extensions_; }
+    const wgsl::Extensions& Extensions() const { return extensions_; }
 
     /// Modifies the severity of a specific diagnostic rule for this module.
     /// @param rule the diagnostic rule
     /// @param severity the new diagnostic severity
-    void SetDiagnosticSeverity(core::DiagnosticRule rule, core::DiagnosticSeverity severity) {
+    void SetDiagnosticSeverity(wgsl::DiagnosticRule rule, wgsl::DiagnosticSeverity severity) {
         diagnostic_severities_[rule] = severity;
     }
 
     /// @returns the diagnostic severity modifications applied to this module
-    const core::DiagnosticRuleSeverities& DiagnosticSeverities() const {
+    const wgsl::DiagnosticRuleSeverities& DiagnosticSeverities() const {
         return diagnostic_severities_;
     }
 
   private:
     const tint::Vector<const ast::Node*, 64> dep_ordered_decls_;
-    core::Extensions extensions_;
-    core::DiagnosticRuleSeverities diagnostic_severities_;
+    wgsl::Extensions extensions_;
+    wgsl::DiagnosticRuleSeverities diagnostic_severities_;
 };
 
 }  // namespace tint::sem
diff --git a/src/tint/lang/wgsl/sem/statement.h b/src/tint/lang/wgsl/sem/statement.h
index 133d00b..446ca8e 100644
--- a/src/tint/lang/wgsl/sem/statement.h
+++ b/src/tint/lang/wgsl/sem/statement.h
@@ -113,12 +113,12 @@
     /// Modifies the severity of a specific diagnostic rule for this statement.
     /// @param rule the diagnostic rule
     /// @param severity the new diagnostic severity
-    void SetDiagnosticSeverity(core::DiagnosticRule rule, core::DiagnosticSeverity severity) {
+    void SetDiagnosticSeverity(wgsl::DiagnosticRule rule, wgsl::DiagnosticSeverity severity) {
         diagnostic_severities_[rule] = severity;
     }
 
     /// @returns the diagnostic severity modifications applied to this statement
-    const core::DiagnosticRuleSeverities& DiagnosticSeverities() const {
+    const wgsl::DiagnosticRuleSeverities& DiagnosticSeverities() const {
         return diagnostic_severities_;
     }
 
@@ -128,7 +128,7 @@
     const sem::Function* const function_;
     sem::Behaviors behaviors_{sem::Behavior::kNext};
     bool is_reachable_ = true;
-    core::DiagnosticRuleSeverities diagnostic_severities_;
+    wgsl::DiagnosticRuleSeverities diagnostic_severities_;
 };
 
 /// CompoundStatement is the base class of statements that can hold other
diff --git a/src/tint/lang/wgsl/wgsl.def b/src/tint/lang/wgsl/wgsl.def
new file mode 100644
index 0000000..0a40a81
--- /dev/null
+++ b/src/tint/lang/wgsl/wgsl.def
@@ -0,0 +1,74 @@
+// Copyright 2021 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// WGSL builtin definition file                                               //
+//                                                                            //
+// This file is used to generate parts of the Tint BuiltinTable, various      //
+// enum definition files, as well as test .wgsl files.                        //
+//                                                                            //
+// After modifying this file, run:                                            //
+//    tools/run gen                                                           //
+// from the Dawn source directory.                                            //
+////////////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////////////
+// Enumerators                                                                //
+////////////////////////////////////////////////////////////////////////////////
+
+// https://gpuweb.github.io/gpuweb/wgsl/#filterable-triggering-rules
+enum core_diagnostic_rule {
+  // Rules defined in the spec.
+  derivative_uniformity
+}
+
+// chromium-specific diagnostics
+enum chromium_diagnostic_rule {
+  // Chromium specific rules not defined in the spec.
+  unreachable_code
+}
+
+// https://gpuweb.github.io/gpuweb/wgsl/#syntax-severity_control_name
+enum diagnostic_severity {
+  error
+  warning
+  info
+  off
+}
+
+// https://gpuweb.github.io/gpuweb/wgsl/#extension
+enum extension {
+  // WGSL Extension "f16"
+  f16
+  // An extension for the experimental feature "chromium_experimental_dp4a".
+  // See crbug.com/tint/1497 for more details
+  chromium_experimental_dp4a
+  // A Chromium-specific extension for disabling uniformity analysis.
+  chromium_disable_uniformity_analysis
+  // A Chromium-specific extension for push constants
+  chromium_experimental_push_constant
+  // A Chromium-specific extension that enables passing of uniform, storage and workgroup
+  // address-spaced pointers as parameters, as well as pointers into sub-objects.
+  chromium_experimental_full_ptr_parameters
+  // A Chromium-specific extension that adds support for read-write storage textures.
+  chromium_experimental_read_write_storage_texture
+  // A Chromium-specific extension that adds basic subgroup functionality.
+  chromium_experimental_subgroups
+  // A Chromium-specific extension that relaxes memory layout requirements for uniform storage.
+  chromium_internal_relaxed_uniform_layout
+  // A Chromium-specific extension that enables dual source blending.
+  chromium_internal_dual_source_blending
+  // A Chromium-specific extension that enables pixel local storage.
+  chromium_experimental_pixel_local
+}
diff --git a/src/tint/lang/wgsl/writer/BUILD.bazel b/src/tint/lang/wgsl/writer/BUILD.bazel
index 850e260..570230f 100644
--- a/src/tint/lang/wgsl/writer/BUILD.bazel
+++ b/src/tint/lang/wgsl/writer/BUILD.bazel
@@ -39,6 +39,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/sem",
@@ -72,6 +73,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/sem",
diff --git a/src/tint/lang/wgsl/writer/BUILD.cmake b/src/tint/lang/wgsl/writer/BUILD.cmake
index 0fdab06..4802da7 100644
--- a/src/tint/lang/wgsl/writer/BUILD.cmake
+++ b/src/tint/lang/wgsl/writer/BUILD.cmake
@@ -42,6 +42,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_sem
@@ -76,6 +77,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_sem
diff --git a/src/tint/lang/wgsl/writer/BUILD.gn b/src/tint/lang/wgsl/writer/BUILD.gn
index cb47dbc..1bbf405 100644
--- a/src/tint/lang/wgsl/writer/BUILD.gn
+++ b/src/tint/lang/wgsl/writer/BUILD.gn
@@ -38,6 +38,7 @@
     "${tint_src_dir}/lang/core",
     "${tint_src_dir}/lang/core/constant",
     "${tint_src_dir}/lang/core/type",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/lang/wgsl/program",
     "${tint_src_dir}/lang/wgsl/sem",
diff --git a/src/tint/lang/wgsl/writer/ast_printer/BUILD.bazel b/src/tint/lang/wgsl/writer/ast_printer/BUILD.bazel
index 64c5a7b..b80b144 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/BUILD.bazel
+++ b/src/tint/lang/wgsl/writer/ast_printer/BUILD.bazel
@@ -35,6 +35,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/sem",
@@ -97,6 +98,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/resolver",
diff --git a/src/tint/lang/wgsl/writer/ast_printer/BUILD.cmake b/src/tint/lang/wgsl/writer/ast_printer/BUILD.cmake
index 8004d94..96beb17 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/BUILD.cmake
+++ b/src/tint/lang/wgsl/writer/ast_printer/BUILD.cmake
@@ -34,6 +34,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_sem
@@ -96,6 +97,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_resolver
diff --git a/src/tint/lang/wgsl/writer/ast_printer/BUILD.gn b/src/tint/lang/wgsl/writer/ast_printer/BUILD.gn
index 7e2c123..dcdec55 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/BUILD.gn
+++ b/src/tint/lang/wgsl/writer/ast_printer/BUILD.gn
@@ -38,6 +38,7 @@
     "${tint_src_dir}/lang/core",
     "${tint_src_dir}/lang/core/constant",
     "${tint_src_dir}/lang/core/type",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/lang/wgsl/program",
     "${tint_src_dir}/lang/wgsl/sem",
@@ -99,6 +100,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/program",
       "${tint_src_dir}/lang/wgsl/resolver",
diff --git a/src/tint/lang/wgsl/writer/ast_printer/cast_test.cc b/src/tint/lang/wgsl/writer/ast_printer/cast_test.cc
index 93361dc..cfb6ae5 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/cast_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/cast_test.cc
@@ -38,7 +38,7 @@
 }
 
 TEST_F(WgslASTPrinterTest, EmitExpression_Cast_Scalar_F16_From_I32) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<f16>(1_i);
     WrapInFunction(cast);
@@ -64,7 +64,7 @@
 }
 
 TEST_F(WgslASTPrinterTest, EmitExpression_Cast_Vector_F16_From_I32) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* cast = Call<vec3<f16>>(Call<vec3<i32>>(1_i, 2_i, 3_i));
     WrapInFunction(cast);
diff --git a/src/tint/lang/wgsl/writer/ast_printer/constructor_test.cc b/src/tint/lang/wgsl/writer/ast_printer/constructor_test.cc
index 38026b9..260c3a7 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/constructor_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/constructor_test.cc
@@ -65,7 +65,7 @@
 }
 
 TEST_F(WgslASTPrinterTest_Constructor, F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     // Use a number close to 1<<16 but whose decimal representation ends in 0.
     WrapInFunction(Expr(f16((1 << 15) - 8)));
@@ -88,7 +88,7 @@
 }
 
 TEST_F(WgslASTPrinterTest_Constructor, Type_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<f16>(Expr(-1.2e-5_h)));
 
@@ -140,7 +140,7 @@
 }
 
 TEST_F(WgslASTPrinterTest_Constructor, Type_Vec_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(Call<vec3<f16>>(1_h, 2_h, 3_h));
 
@@ -164,7 +164,7 @@
 }
 
 TEST_F(WgslASTPrinterTest_Constructor, Type_Mat_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     WrapInFunction(
         Call<mat2x3<f16>>(Call<vec3<f16>>(1_h, 2_h, 3_h), Call<vec3<f16>>(3_h, 4_h, 5_h)));
diff --git a/src/tint/lang/wgsl/writer/ast_printer/diagnostic_test.cc b/src/tint/lang/wgsl/writer/ast_printer/diagnostic_test.cc
index df2b9cc..105a7b7 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/diagnostic_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/diagnostic_test.cc
@@ -22,7 +22,7 @@
 using WgslASTPrinterTest = TestHelper;
 
 TEST_F(WgslASTPrinterTest, Emit_DiagnosticDirective) {
-    DiagnosticDirective(core::DiagnosticSeverity::kError, "chromium", "unreachable_code");
+    DiagnosticDirective(wgsl::DiagnosticSeverity::kError, "chromium", "unreachable_code");
 
     ASTPrinter& gen = Build();
     gen.Generate();
@@ -34,7 +34,7 @@
 
 TEST_F(WgslASTPrinterTest, Emit_DiagnosticAttribute) {
     auto* attr =
-        DiagnosticAttribute(core::DiagnosticSeverity::kError, "chromium", "unreachable_code");
+        DiagnosticAttribute(wgsl::DiagnosticSeverity::kError, "chromium", "unreachable_code");
     Func("foo", {}, ty.void_(), {}, Vector{attr});
 
     ASTPrinter& gen = Build();
diff --git a/src/tint/lang/wgsl/writer/ast_printer/enable_test.cc b/src/tint/lang/wgsl/writer/ast_printer/enable_test.cc
index 319db97..3791c99 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/enable_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/enable_test.cc
@@ -22,7 +22,7 @@
 using WgslASTPrinterTest = TestHelper;
 
 TEST_F(WgslASTPrinterTest, Emit_Enable) {
-    auto* enable = Enable(core::Extension::kF16);
+    auto* enable = Enable(wgsl::Extension::kF16);
 
     ASTPrinter& gen = Build();
 
diff --git a/src/tint/lang/wgsl/writer/ast_printer/literal_test.cc b/src/tint/lang/wgsl/writer/ast_printer/literal_test.cc
index 670d5eb..00378c7 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/literal_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/literal_test.cc
@@ -160,7 +160,7 @@
 using WgslGenerator_F16LiteralTest = TestParamHelper<F16Data>;
 
 TEST_P(WgslGenerator_F16LiteralTest, Emit) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* v = Expr(GetParam().value);
 
diff --git a/src/tint/lang/wgsl/writer/ast_printer/type_test.cc b/src/tint/lang/wgsl/writer/ast_printer/type_test.cc
index 6723673..cd2b55d 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/type_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/type_test.cc
@@ -98,7 +98,7 @@
 }
 
 TEST_F(WgslASTPrinterTest, EmitType_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto type = Alias("make_type_reachable", ty.f16())->type;
 
@@ -133,7 +133,7 @@
 }
 
 TEST_F(WgslASTPrinterTest, EmitType_Matrix_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto type = Alias("make_type_reachable", ty.mat2x3<f16>())->type;
 
@@ -388,7 +388,7 @@
 }
 
 TEST_F(WgslASTPrinterTest, EmitType_Vector_F16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto type = Alias("make_type_reachable", ty.vec3<f16>())->type;
 
diff --git a/src/tint/lang/wgsl/writer/ast_printer/variable_decl_statement_test.cc b/src/tint/lang/wgsl/writer/ast_printer/variable_decl_statement_test.cc
index fdc7339..5382fd6 100644
--- a/src/tint/lang/wgsl/writer/ast_printer/variable_decl_statement_test.cc
+++ b/src/tint/lang/wgsl/writer/ast_printer/variable_decl_statement_test.cc
@@ -146,7 +146,7 @@
 }
 
 TEST_F(WgslASTPrinterTest, Emit_VariableDeclStatement_Const_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* C = Const("C", Expr(1_h));
     Func("f", tint::Empty, ty.void_(),
@@ -222,7 +222,7 @@
 }
 
 TEST_F(WgslASTPrinterTest, Emit_VariableDeclStatement_Const_vec3_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* C = Const("C", Call<vec3<f16>>(1_h, 2_h, 3_h));
     Func("f", tint::Empty, ty.void_(),
@@ -280,7 +280,7 @@
 }
 
 TEST_F(WgslASTPrinterTest, Emit_VariableDeclStatement_Const_mat2x3_f16) {
-    Enable(core::Extension::kF16);
+    Enable(wgsl::Extension::kF16);
 
     auto* C = Const("C", Call<mat2x3<f16>>(1_h, 2_h, 3_h, 4_h, 5_h, 6_h));
     Func("f", tint::Empty, ty.void_(),
diff --git a/src/tint/lang/wgsl/writer/ir_to_program/BUILD.bazel b/src/tint/lang/wgsl/writer/ir_to_program/BUILD.bazel
index 0db88d9..09671ed 100644
--- a/src/tint/lang/wgsl/writer/ir_to_program/BUILD.bazel
+++ b/src/tint/lang/wgsl/writer/ir_to_program/BUILD.bazel
@@ -41,6 +41,7 @@
     "//src/tint/lang/core/intrinsic/data",
     "//src/tint/lang/core/ir",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/resolver",
@@ -80,6 +81,7 @@
     "//src/tint/lang/core/ir",
     "//src/tint/lang/core/ir:test",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/sem",
diff --git a/src/tint/lang/wgsl/writer/ir_to_program/BUILD.cmake b/src/tint/lang/wgsl/writer/ir_to_program/BUILD.cmake
index ef8913c..4ac6bd8 100644
--- a/src/tint/lang/wgsl/writer/ir_to_program/BUILD.cmake
+++ b/src/tint/lang/wgsl/writer/ir_to_program/BUILD.cmake
@@ -40,6 +40,7 @@
   tint_lang_core_intrinsic_data
   tint_lang_core_ir
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_resolver
@@ -79,6 +80,7 @@
   tint_lang_core_ir
   tint_lang_core_ir_test
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_sem
diff --git a/src/tint/lang/wgsl/writer/ir_to_program/BUILD.gn b/src/tint/lang/wgsl/writer/ir_to_program/BUILD.gn
index 5dc5e9a..584fa6c 100644
--- a/src/tint/lang/wgsl/writer/ir_to_program/BUILD.gn
+++ b/src/tint/lang/wgsl/writer/ir_to_program/BUILD.gn
@@ -44,6 +44,7 @@
     "${tint_src_dir}/lang/core/intrinsic/data",
     "${tint_src_dir}/lang/core/ir",
     "${tint_src_dir}/lang/core/type",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/lang/wgsl/program",
     "${tint_src_dir}/lang/wgsl/resolver",
@@ -82,6 +83,7 @@
       "${tint_src_dir}/lang/core/ir",
       "${tint_src_dir}/lang/core/ir:unittests",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/program",
       "${tint_src_dir}/lang/wgsl/sem",
diff --git a/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc b/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc
index b32e60e..169ca8b 100644
--- a/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc
+++ b/src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.cc
@@ -176,7 +176,7 @@
     Hashset<core::ir::Value*, 64> can_inline_;
 
     /// Set of enable directives emitted.
-    Hashset<core::Extension, 4> enables_;
+    Hashset<wgsl::Extension, 4> enables_;
 
     /// Map of struct to output program name.
     Hashmap<const core::type::Struct*, Symbol, 8> structs_;
@@ -581,8 +581,8 @@
             [&](core::ir::CoreBuiltinCall* c) {
                 if (!disabled_derivative_uniformity_ && RequiresDerivativeUniformity(c->Func())) {
                     // TODO(crbug.com/tint/1985): Be smarter about disabling derivative uniformity.
-                    b.DiagnosticDirective(core::DiagnosticSeverity::kOff,
-                                          core::CoreDiagnosticRule::kDerivativeUniformity);
+                    b.DiagnosticDirective(wgsl::DiagnosticSeverity::kOff,
+                                          wgsl::CoreDiagnosticRule::kDerivativeUniformity);
                     disabled_derivative_uniformity_ = true;
                 }
 
@@ -826,7 +826,7 @@
             [&](const core::type::U32*) { return b.Expr(c->ValueAs<u32>()); },
             [&](const core::type::F32*) { return b.Expr(c->ValueAs<f32>()); },
             [&](const core::type::F16*) {
-                Enable(core::Extension::kF16);
+                Enable(wgsl::Extension::kF16);
                 return b.Expr(c->ValueAs<f16>());
             },
             [&](const core::type::Bool*) { return b.Expr(c->ValueAs<bool>()); },
@@ -840,7 +840,7 @@
             });
     }
 
-    void Enable(core::Extension ext) {
+    void Enable(wgsl::Extension ext) {
         if (enables_.Add(ext)) {
             b.Enable(ext);
         }
@@ -866,7 +866,7 @@
             [&](const core::type::I32*) { return b.ty.i32(); },    //
             [&](const core::type::U32*) { return b.ty.u32(); },    //
             [&](const core::type::F16*) {
-                Enable(core::Extension::kF16);
+                Enable(wgsl::Extension::kF16);
                 return b.ty.f16();
             },
             [&](const core::type::F32*) { return b.ty.f32(); },  //
@@ -954,7 +954,7 @@
                     ast_attrs.Push(b.Location(u32(*location)));
                 }
                 if (auto index = ir_attrs.index) {
-                    Enable(core::Extension::kChromiumInternalDualSourceBlending);
+                    Enable(wgsl::Extension::kChromiumInternalDualSourceBlending);
                     ast_attrs.Push(b.Index(u32(*index)));
                 }
                 if (auto builtin = ir_attrs.builtin) {
diff --git a/src/tint/lang/wgsl/writer/syntax_tree_printer/BUILD.bazel b/src/tint/lang/wgsl/writer/syntax_tree_printer/BUILD.bazel
index 6ec7c13..8009138 100644
--- a/src/tint/lang/wgsl/writer/syntax_tree_printer/BUILD.bazel
+++ b/src/tint/lang/wgsl/writer/syntax_tree_printer/BUILD.bazel
@@ -35,6 +35,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/sem",
diff --git a/src/tint/lang/wgsl/writer/syntax_tree_printer/BUILD.cmake b/src/tint/lang/wgsl/writer/syntax_tree_printer/BUILD.cmake
index 0a46c6e..d9353a4 100644
--- a/src/tint/lang/wgsl/writer/syntax_tree_printer/BUILD.cmake
+++ b/src/tint/lang/wgsl/writer/syntax_tree_printer/BUILD.cmake
@@ -34,6 +34,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_sem
diff --git a/src/tint/lang/wgsl/writer/syntax_tree_printer/BUILD.gn b/src/tint/lang/wgsl/writer/syntax_tree_printer/BUILD.gn
index 0b604d8..16b77ae 100644
--- a/src/tint/lang/wgsl/writer/syntax_tree_printer/BUILD.gn
+++ b/src/tint/lang/wgsl/writer/syntax_tree_printer/BUILD.gn
@@ -34,6 +34,7 @@
     "${tint_src_dir}/lang/core",
     "${tint_src_dir}/lang/core/constant",
     "${tint_src_dir}/lang/core/type",
+    "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/lang/wgsl/program",
     "${tint_src_dir}/lang/wgsl/sem",
diff --git a/src/tint/utils/containers/BUILD.bazel b/src/tint/utils/containers/BUILD.bazel
index c64b88a..c571f72 100644
--- a/src/tint/utils/containers/BUILD.bazel
+++ b/src/tint/utils/containers/BUILD.bazel
@@ -78,6 +78,7 @@
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
     "//src/tint/lang/core/type",
+    "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
     "//src/tint/lang/wgsl/program",
     "//src/tint/lang/wgsl/sem",
diff --git a/src/tint/utils/containers/BUILD.cmake b/src/tint/utils/containers/BUILD.cmake
index 2cb4ff8..eaf1266 100644
--- a/src/tint/utils/containers/BUILD.cmake
+++ b/src/tint/utils/containers/BUILD.cmake
@@ -77,6 +77,7 @@
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_type
+  tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_program
   tint_lang_wgsl_sem
diff --git a/src/tint/utils/containers/BUILD.gn b/src/tint/utils/containers/BUILD.gn
index a912cce..b7cbe13b 100644
--- a/src/tint/utils/containers/BUILD.gn
+++ b/src/tint/utils/containers/BUILD.gn
@@ -80,6 +80,7 @@
       "${tint_src_dir}/lang/core",
       "${tint_src_dir}/lang/core/constant",
       "${tint_src_dir}/lang/core/type",
+      "${tint_src_dir}/lang/wgsl",
       "${tint_src_dir}/lang/wgsl/ast",
       "${tint_src_dir}/lang/wgsl/program",
       "${tint_src_dir}/lang/wgsl/sem",
