diff --git a/src/tint/BUILD.gn b/src/tint/BUILD.gn
index 76bdd76..7c29387 100644
--- a/src/tint/BUILD.gn
+++ b/src/tint/BUILD.gn
@@ -448,7 +448,6 @@
     "sem/pipeline_stage_set.h",
     "sem/pointer.h",
     "sem/reference.h",
-    "sem/sampler.h",
     "sem/sampler_texture_pair.h",
     "sem/struct.h",
     "sem/switch_statement.h",
@@ -576,6 +575,7 @@
     "type/multisampled_texture.h",
     "type/node.h",
     "type/sampled_texture.h",
+    "type/sampler.h",
     "type/storage_texture.h",
     "type/texture.h",
     "type/type.h",
@@ -699,8 +699,6 @@
     "sem/pointer.h",
     "sem/reference.cc",
     "sem/reference.h",
-    "sem/sampler.cc",
-    "sem/sampler.h",
     "sem/statement.cc",
     "sem/struct.cc",
     "sem/struct.h",
@@ -741,6 +739,8 @@
     "type/node.h",
     "type/sampled_texture.cc",
     "type/sampled_texture.h",
+    "type/sampler.cc",
+    "type/sampler.h",
     "type/storage_texture.cc",
     "type/storage_texture.h",
     "type/texture.cc",
@@ -1213,7 +1213,6 @@
       "sem/matrix_test.cc",
       "sem/pointer_test.cc",
       "sem/reference_test.cc",
-      "sem/sampler_test.cc",
       "sem/struct_test.cc",
       "sem/u32_test.cc",
       "sem/vector_test.cc",
@@ -1227,6 +1226,7 @@
       "type/external_texture_test.cc",
       "type/multisampled_texture_test.cc",
       "type/sampled_texture_test.cc",
+      "type/sampler_test.cc",
       "type/storage_texture_test.cc",
       "type/texture_test.cc",
       "type/type_manager_test.cc",
diff --git a/src/tint/CMakeLists.txt b/src/tint/CMakeLists.txt
index b7d9988..6a38e9e 100644
--- a/src/tint/CMakeLists.txt
+++ b/src/tint/CMakeLists.txt
@@ -355,8 +355,6 @@
   sem/reference.cc
   sem/reference.h
   sem/sampler_texture_pair.h
-  sem/sampler.cc
-  sem/sampler.h
   sem/statement.cc
   sem/struct.cc
   sem/switch_statement.cc
@@ -497,6 +495,8 @@
   type/node.h
   type/sampled_texture.cc
   type/sampled_texture.h
+  type/sampler.cc
+  type/sampler.h
   type/storage_texture.cc
   type/storage_texture.h
   type/texture.cc
@@ -931,7 +931,6 @@
     sem/matrix_test.cc
     sem/pointer_test.cc
     sem/reference_test.cc
-    sem/sampler_test.cc
     sem/struct_test.cc
     sem/u32_test.cc
     sem/vector_test.cc
@@ -947,6 +946,7 @@
     type/external_texture_test.cc
     type/multisampled_texture_test.cc
     type/sampled_texture_test.cc
+    type/sampler_test.cc
     type/storage_texture_test.cc
     type/texture_test.cc
     type/type_test.cc
diff --git a/src/tint/resolver/intrinsic_table.cc b/src/tint/resolver/intrinsic_table.cc
index ba46140..83d355c 100644
--- a/src/tint/resolver/intrinsic_table.cc
+++ b/src/tint/resolver/intrinsic_table.cc
@@ -584,11 +584,11 @@
     if (ty->Is<Any>()) {
         return true;
     }
-    return ty->Is([](const sem::Sampler* s) { return s->kind() == ast::SamplerKind::kSampler; });
+    return ty->Is([](const type::Sampler* s) { return s->kind() == ast::SamplerKind::kSampler; });
 }
 
-const sem::Sampler* build_sampler(MatchState& state) {
-    return state.builder.create<sem::Sampler>(ast::SamplerKind::kSampler);
+const type::Sampler* build_sampler(MatchState& state) {
+    return state.builder.create<type::Sampler>(ast::SamplerKind::kSampler);
 }
 
 bool match_sampler_comparison(MatchState&, const type::Type* ty) {
@@ -596,11 +596,11 @@
         return true;
     }
     return ty->Is(
-        [](const sem::Sampler* s) { return s->kind() == ast::SamplerKind::kComparisonSampler; });
+        [](const type::Sampler* s) { return s->kind() == ast::SamplerKind::kComparisonSampler; });
 }
 
-const sem::Sampler* build_sampler_comparison(MatchState& state) {
-    return state.builder.create<sem::Sampler>(ast::SamplerKind::kComparisonSampler);
+const type::Sampler* build_sampler_comparison(MatchState& state) {
+    return state.builder.create<type::Sampler>(ast::SamplerKind::kComparisonSampler);
 }
 
 bool match_texture(MatchState&,
diff --git a/src/tint/resolver/intrinsic_table_test.cc b/src/tint/resolver/intrinsic_table_test.cc
index c3f69ad..8ce477f 100644
--- a/src/tint/resolver/intrinsic_table_test.cc
+++ b/src/tint/resolver/intrinsic_table_test.cc
@@ -280,7 +280,7 @@
     auto* vec2_f32 = create<sem::Vector>(f32, 2u);
     auto* vec4_f32 = create<sem::Vector>(f32, 4u);
     auto* tex = create<type::SampledTexture>(ast::TextureDimension::k2d, f32);
-    auto* sampler = create<sem::Sampler>(ast::SamplerKind::kSampler);
+    auto* sampler = create<type::Sampler>(ast::SamplerKind::kSampler);
     auto result = table->Lookup(BuiltinType::kTextureSample, utils::Vector{tex, sampler, vec2_f32},
                                 sem::EvaluationStage::kConstant, Source{});
     ASSERT_NE(result.sem, nullptr) << Diagnostics().str();
diff --git a/src/tint/resolver/resolver.cc b/src/tint/resolver/resolver.cc
index a4cd057..a7d43db 100644
--- a/src/tint/resolver/resolver.cc
+++ b/src/tint/resolver/resolver.cc
@@ -69,7 +69,6 @@
 #include "src/tint/sem/module.h"
 #include "src/tint/sem/pointer.h"
 #include "src/tint/sem/reference.h"
-#include "src/tint/sem/sampler.h"
 #include "src/tint/sem/statement.h"
 #include "src/tint/sem/struct.h"
 #include "src/tint/sem/switch_statement.h"
@@ -81,6 +80,7 @@
 #include "src/tint/type/depth_texture.h"
 #include "src/tint/type/multisampled_texture.h"
 #include "src/tint/type/sampled_texture.h"
+#include "src/tint/type/sampler.h"
 #include "src/tint/type/storage_texture.h"
 #include "src/tint/utils/defer.h"
 #include "src/tint/utils/math.h"
@@ -278,7 +278,7 @@
             }
             return nullptr;
         },
-        [&](const ast::Sampler* t) { return builder_->create<sem::Sampler>(t->kind); },
+        [&](const ast::Sampler* t) { return builder_->create<type::Sampler>(t->kind); },
         [&](const ast::SampledTexture* t) -> type::SampledTexture* {
             if (auto* el = Type(t->type)) {
                 auto* sem = builder_->create<type::SampledTexture>(t->dim, el);
diff --git a/src/tint/resolver/validator.cc b/src/tint/resolver/validator.cc
index a442080..ac3489c 100644
--- a/src/tint/resolver/validator.cc
+++ b/src/tint/resolver/validator.cc
@@ -60,7 +60,6 @@
 #include "src/tint/sem/member_accessor_expression.h"
 #include "src/tint/sem/pointer.h"
 #include "src/tint/sem/reference.h"
-#include "src/tint/sem/sampler.h"
 #include "src/tint/sem/statement.h"
 #include "src/tint/sem/struct.h"
 #include "src/tint/sem/switch_statement.h"
@@ -72,6 +71,7 @@
 #include "src/tint/type/depth_texture.h"
 #include "src/tint/type/multisampled_texture.h"
 #include "src/tint/type/sampled_texture.h"
+#include "src/tint/type/sampler.h"
 #include "src/tint/type/storage_texture.h"
 #include "src/tint/utils/defer.h"
 #include "src/tint/utils/map.h"
@@ -231,7 +231,7 @@
 
 // https://gpuweb.github.io/gpuweb/wgsl.html#storable-types
 bool Validator::IsStorable(const type::Type* type) const {
-    return IsPlain(type) || type->IsAnyOf<type::Texture, sem::Sampler>();
+    return IsPlain(type) || type->IsAnyOf<type::Texture, type::Sampler>();
 }
 
 const ast::Statement* Validator::ClosestContinuing(bool stop_at_loop,
@@ -832,7 +832,7 @@
             AddError("type of function parameter must be constructible", decl->type->source);
             return false;
         }
-    } else if (!var->Type()->IsAnyOf<type::Texture, sem::Sampler, sem::Pointer>()) {
+    } else if (!var->Type()->IsAnyOf<type::Texture, type::Sampler, sem::Pointer>()) {
         AddError("type of function parameter cannot be " + sem_.TypeNameOf(var->Type()),
                  decl->source);
         return false;
@@ -2266,7 +2266,7 @@
         // https://www.w3.org/TR/WGSL/#phony-assignment-section
         auto* ty = rhs_ty->UnwrapRef();
         if (!ty->IsConstructible() &&
-            !ty->IsAnyOf<sem::Pointer, type::Texture, sem::Sampler, sem::AbstractNumeric>()) {
+            !ty->IsAnyOf<sem::Pointer, type::Texture, type::Sampler, sem::AbstractNumeric>()) {
             AddError("cannot assign '" + sem_.TypeNameOf(rhs_ty) +
                          "' to '_'. '_' can only be assigned a constructible, pointer, texture or "
                          "sampler type",
diff --git a/src/tint/sem/call_target.h b/src/tint/sem/call_target.h
index 013c490..fed8a82 100644
--- a/src/tint/sem/call_target.h
+++ b/src/tint/sem/call_target.h
@@ -18,8 +18,8 @@
 #include <vector>
 
 #include "src/tint/sem/node.h"
-#include "src/tint/sem/sampler.h"
 #include "src/tint/sem/variable.h"
+#include "src/tint/type/sampler.h"
 #include "src/tint/utils/hash.h"
 #include "src/tint/utils/vector.h"
 
diff --git a/src/tint/sem/function.cc b/src/tint/sem/function.cc
index 3560a85..6f074a4 100644
--- a/src/tint/sem/function.cc
+++ b/src/tint/sem/function.cc
@@ -154,7 +154,7 @@
 
     for (auto* global : TransitivelyReferencedGlobals()) {
         auto* unwrapped_type = global->Type()->UnwrapRef();
-        auto* sampler = unwrapped_type->As<sem::Sampler>();
+        auto* sampler = unwrapped_type->As<type::Sampler>();
         if (sampler == nullptr || sampler->kind() != kind) {
             continue;
         }
diff --git a/src/tint/transform/combine_samplers.cc b/src/tint/transform/combine_samplers.cc
index 6ddafb5..4f68388 100644
--- a/src/tint/transform/combine_samplers.cc
+++ b/src/tint/transform/combine_samplers.cc
@@ -159,7 +159,7 @@
         for (auto* global : ctx.src->AST().GlobalVariables()) {
             auto* global_sem = sem.Get(global)->As<sem::GlobalVariable>();
             auto* type = sem.Get(global->type);
-            if (tint::IsAnyOf<type::Texture, sem::Sampler>(type) &&
+            if (tint::IsAnyOf<type::Texture, type::Sampler>(type) &&
                 !type->Is<type::StorageTexture>()) {
                 ctx.Remove(ctx.src->AST().GlobalDeclarations(), global);
             } else if (global->HasBindingPoint()) {
@@ -208,7 +208,7 @@
                 // Filter out separate textures and samplers from the original
                 // function signature.
                 for (auto* param : fn->Parameters()) {
-                    if (!param->Type()->IsAnyOf<type::Texture, sem::Sampler>()) {
+                    if (!param->Type()->IsAnyOf<type::Texture, type::Sampler>()) {
                         params.Push(ctx.Clone(param->Declaration()));
                     }
                 }
@@ -263,7 +263,7 @@
                                     : function_combined_texture_samplers_[call->Stmt()->Function()]
                                                                          [new_pair];
                             args.Push(ctx.dst->Expr(var->symbol));
-                        } else if (auto* sampler_type = type->As<sem::Sampler>()) {
+                        } else if (auto* sampler_type = type->As<type::Sampler>()) {
                             ast::SamplerKind kind = sampler_type->kind();
                             int index = (kind == ast::SamplerKind::kSampler) ? 0 : 1;
                             const ast::Variable*& p = placeholder_samplers_[index];
@@ -321,7 +321,7 @@
                     for (auto* arg : expr->args) {
                         if (!ctx.src->TypeOf(arg)
                                  ->UnwrapRef()
-                                 ->IsAnyOf<type::Texture, sem::Sampler>()) {
+                                 ->IsAnyOf<type::Texture, type::Sampler>()) {
                             args.Push(ctx.Clone(arg));
                         }
                     }
diff --git a/src/tint/transform/promote_side_effects_to_decl.cc b/src/tint/transform/promote_side_effects_to_decl.cc
index 639cb63..7a5254d 100644
--- a/src/tint/transform/promote_side_effects_to_decl.cc
+++ b/src/tint/transform/promote_side_effects_to_decl.cc
@@ -287,7 +287,7 @@
                         }
                         // Don't hoist textures / samplers as they can't be placed into a let, nor
                         // can they have side effects.
-                        if (var_user->Variable()->Type()->IsAnyOf<type::Texture, sem::Sampler>()) {
+                        if (var_user->Variable()->Type()->IsAnyOf<type::Texture, type::Sampler>()) {
                             return false;
                         }
                         return true;
diff --git a/src/tint/transform/transform.cc b/src/tint/transform/transform.cc
index 0b5a7f9..e2a537a 100644
--- a/src/tint/transform/transform.cc
+++ b/src/tint/transform/transform.cc
@@ -22,9 +22,9 @@
 #include "src/tint/sem/block_statement.h"
 #include "src/tint/sem/for_loop_statement.h"
 #include "src/tint/sem/reference.h"
-#include "src/tint/sem/sampler.h"
 #include "src/tint/sem/variable.h"
 #include "src/tint/type/depth_multisampled_texture.h"
+#include "src/tint/type/sampler.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::transform::Transform);
 TINT_INSTANTIATE_TYPEINFO(tint::transform::Data);
@@ -165,7 +165,7 @@
         return ctx.dst->create<ast::StorageTexture>(t->dim(), t->texel_format(),
                                                     CreateASTTypeFor(ctx, t->type()), t->access());
     }
-    if (auto* s = ty->As<sem::Sampler>()) {
+    if (auto* s = ty->As<type::Sampler>()) {
         return ctx.dst->create<ast::Sampler>(s->kind());
     }
     TINT_UNREACHABLE(Transform, ctx.dst->Diagnostics())
diff --git a/src/tint/sem/sampler.cc b/src/tint/type/sampler.cc
similarity index 87%
rename from src/tint/sem/sampler.cc
rename to src/tint/type/sampler.cc
index 4d1e9b2..c6d1975 100644
--- a/src/tint/sem/sampler.cc
+++ b/src/tint/type/sampler.cc
@@ -1,4 +1,4 @@
-// Copyright 2020 The Tint Authors.
+// Copyright 2022 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.
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/sampler.h"
+#include "src/tint/type/sampler.h"
 
 #include "src/tint/program_builder.h"
 #include "src/tint/utils/hash.h"
 
-TINT_INSTANTIATE_TYPEINFO(tint::sem::Sampler);
+TINT_INSTANTIATE_TYPEINFO(tint::type::Sampler);
 
-namespace tint::sem {
+namespace tint::type {
 
 Sampler::Sampler(ast::SamplerKind kind) : Base(type::TypeFlags{}), kind_(kind) {}
 
@@ -42,4 +42,4 @@
     return kind_ == ast::SamplerKind::kSampler ? "sampler" : "sampler_comparison";
 }
 
-}  // namespace tint::sem
+}  // namespace tint::type
diff --git a/src/tint/sem/sampler.h b/src/tint/type/sampler.h
similarity index 89%
rename from src/tint/sem/sampler.h
rename to src/tint/type/sampler.h
index 8ec485f..5c205a3 100644
--- a/src/tint/sem/sampler.h
+++ b/src/tint/type/sampler.h
@@ -1,4 +1,4 @@
-// Copyright 2020 The Tint Authors.
+// Copyright 2022 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.
@@ -12,15 +12,15 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_SAMPLER_H_
-#define SRC_TINT_SEM_SAMPLER_H_
+#ifndef SRC_TINT_TYPE_SAMPLER_H_
+#define SRC_TINT_TYPE_SAMPLER_H_
 
 #include <string>
 
 #include "src/tint/ast/sampler.h"
 #include "src/tint/type/type.h"
 
-namespace tint::sem {
+namespace tint::type {
 
 /// A sampler type.
 class Sampler final : public Castable<Sampler, type::Type> {
@@ -54,6 +54,6 @@
     ast::SamplerKind const kind_;
 };
 
-}  // namespace tint::sem
+}  // namespace tint::type
 
-#endif  // SRC_TINT_SEM_SAMPLER_H_
+#endif  // SRC_TINT_TYPE_SAMPLER_H_
diff --git a/src/tint/sem/sampler_test.cc b/src/tint/type/sampler_test.cc
similarity index 90%
rename from src/tint/sem/sampler_test.cc
rename to src/tint/type/sampler_test.cc
index 65b3882..6d0e188 100644
--- a/src/tint/sem/sampler_test.cc
+++ b/src/tint/type/sampler_test.cc
@@ -1,4 +1,4 @@
-// Copyright 2020 The Tint Authors.
+// Copyright 2022 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.
@@ -12,11 +12,11 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/sampler.h"
-#include "src/tint/sem/test_helper.h"
+#include "src/tint/type/sampler.h"
+#include "src/tint/type/test_helper.h"
 #include "src/tint/type/texture.h"
 
-namespace tint::sem {
+namespace tint::type {
 namespace {
 
 using SamplerTest = TestHelper;
@@ -52,7 +52,7 @@
 
     EXPECT_TRUE(a->Equals(*b));
     EXPECT_FALSE(a->Equals(*c));
-    EXPECT_FALSE(a->Equals(Void{}));
+    EXPECT_FALSE(a->Equals(sem::Void{}));
 }
 
 TEST_F(SamplerTest, FriendlyNameSampler) {
@@ -66,4 +66,4 @@
 }
 
 }  // namespace
-}  // namespace tint::sem
+}  // namespace tint::type
diff --git a/src/tint/type/type.cc b/src/tint/type/type.cc
index 353570b..9955529 100644
--- a/src/tint/type/type.cc
+++ b/src/tint/type/type.cc
@@ -24,10 +24,10 @@
 #include "src/tint/sem/matrix.h"
 #include "src/tint/sem/pointer.h"
 #include "src/tint/sem/reference.h"
-#include "src/tint/sem/sampler.h"
 #include "src/tint/sem/struct.h"
 #include "src/tint/sem/u32.h"
 #include "src/tint/sem/vector.h"
+#include "src/tint/type/sampler.h"
 #include "src/tint/type/texture.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::type::Type);
@@ -172,7 +172,7 @@
 }
 
 bool Type::is_handle() const {
-    return IsAnyOf<sem::Sampler, type::Texture>();
+    return IsAnyOf<type::Sampler, type::Texture>();
 }
 
 bool Type::HoldsAbstract() const {
diff --git a/src/tint/writer/glsl/generator_impl.cc b/src/tint/writer/glsl/generator_impl.cc
index cb02999..00f6490 100644
--- a/src/tint/writer/glsl/generator_impl.cc
+++ b/src/tint/writer/glsl/generator_impl.cc
@@ -2065,7 +2065,7 @@
 
     auto name = builder_.Symbols().NameFor(var->symbol);
     auto* type = sem->Type()->UnwrapRef();
-    if (type->Is<sem::Sampler>()) {
+    if (type->Is<type::Sampler>()) {
         // GLSL ignores Sampler variables.
         return true;
     }
@@ -2893,7 +2893,7 @@
             << "Attempting to emit pointer type. These should have been removed "
                "with the InlinePointerLets transform";
         return false;
-    } else if (type->Is<sem::Sampler>()) {
+    } else if (type->Is<type::Sampler>()) {
         return false;
     } else if (auto* str = type->As<sem::Struct>()) {
         out << StructName(str);
diff --git a/src/tint/writer/glsl/generator_impl_type_test.cc b/src/tint/writer/glsl/generator_impl_type_test.cc
index 6d672be..726b834 100644
--- a/src/tint/writer/glsl/generator_impl_type_test.cc
+++ b/src/tint/writer/glsl/generator_impl_type_test.cc
@@ -15,10 +15,10 @@
 #include "gmock/gmock.h"
 #include "src/tint/ast/call_statement.h"
 #include "src/tint/ast/stage_attribute.h"
-#include "src/tint/sem/sampler.h"
 #include "src/tint/type/depth_texture.h"
 #include "src/tint/type/multisampled_texture.h"
 #include "src/tint/type/sampled_texture.h"
+#include "src/tint/type/sampler.h"
 #include "src/tint/type/storage_texture.h"
 #include "src/tint/writer/glsl/test_helper.h"
 
@@ -279,7 +279,7 @@
 }
 
 TEST_F(GlslGeneratorImplTest_Type, EmitSampler) {
-    auto* sampler = create<sem::Sampler>(ast::SamplerKind::kSampler);
+    auto* sampler = create<type::Sampler>(ast::SamplerKind::kSampler);
 
     GeneratorImpl& gen = Build();
 
@@ -289,7 +289,7 @@
 }
 
 TEST_F(GlslGeneratorImplTest_Type, EmitSamplerComparison) {
-    auto* sampler = create<sem::Sampler>(ast::SamplerKind::kComparisonSampler);
+    auto* sampler = create<type::Sampler>(ast::SamplerKind::kComparisonSampler);
 
     GeneratorImpl& gen = Build();
 
diff --git a/src/tint/writer/hlsl/generator_impl.cc b/src/tint/writer/hlsl/generator_impl.cc
index f776a35..e989bfc 100644
--- a/src/tint/writer/hlsl/generator_impl.cc
+++ b/src/tint/writer/hlsl/generator_impl.cc
@@ -3064,7 +3064,7 @@
         if (unwrapped_type->Is<type::StorageTexture>()) {
             register_space = "u";
         }
-    } else if (unwrapped_type->Is<sem::Sampler>()) {
+    } else if (unwrapped_type->Is<type::Sampler>()) {
         register_space = "s";
     }
 
@@ -3999,7 +3999,7 @@
                    "removed with the InlinePointerLets transform";
             return false;
         },
-        [&](const sem::Sampler* sampler) {
+        [&](const type::Sampler* sampler) {
             out << "Sampler";
             if (sampler->IsComparison()) {
                 out << "Comparison";
diff --git a/src/tint/writer/hlsl/generator_impl_type_test.cc b/src/tint/writer/hlsl/generator_impl_type_test.cc
index 6ef0e05..b113205 100644
--- a/src/tint/writer/hlsl/generator_impl_type_test.cc
+++ b/src/tint/writer/hlsl/generator_impl_type_test.cc
@@ -15,10 +15,10 @@
 #include "gmock/gmock.h"
 #include "src/tint/ast/call_statement.h"
 #include "src/tint/ast/stage_attribute.h"
-#include "src/tint/sem/sampler.h"
 #include "src/tint/type/depth_texture.h"
 #include "src/tint/type/multisampled_texture.h"
 #include "src/tint/type/sampled_texture.h"
+#include "src/tint/type/sampler.h"
 #include "src/tint/type/storage_texture.h"
 #include "src/tint/writer/hlsl/test_helper.h"
 
@@ -273,7 +273,7 @@
 }
 
 TEST_F(HlslGeneratorImplTest_Type, EmitSampler) {
-    auto* sampler = create<sem::Sampler>(ast::SamplerKind::kSampler);
+    auto* sampler = create<type::Sampler>(ast::SamplerKind::kSampler);
 
     GeneratorImpl& gen = Build();
 
@@ -284,7 +284,7 @@
 }
 
 TEST_F(HlslGeneratorImplTest_Type, EmitSamplerComparison) {
-    auto* sampler = create<sem::Sampler>(ast::SamplerKind::kComparisonSampler);
+    auto* sampler = create<type::Sampler>(ast::SamplerKind::kComparisonSampler);
 
     GeneratorImpl& gen = Build();
 
diff --git a/src/tint/writer/msl/generator_impl.cc b/src/tint/writer/msl/generator_impl.cc
index 2d91763..4126fe0 100644
--- a/src/tint/writer/msl/generator_impl.cc
+++ b/src/tint/writer/msl/generator_impl.cc
@@ -2597,7 +2597,7 @@
             }
             return true;
         },
-        [&](const sem::Sampler*) {
+        [&](const type::Sampler*) {
             out << "sampler";
             return true;
         },
diff --git a/src/tint/writer/msl/generator_impl_type_test.cc b/src/tint/writer/msl/generator_impl_type_test.cc
index 5148974..0ea3bba 100644
--- a/src/tint/writer/msl/generator_impl_type_test.cc
+++ b/src/tint/writer/msl/generator_impl_type_test.cc
@@ -16,11 +16,11 @@
 
 #include "gmock/gmock.h"
 
-#include "src/tint/sem/sampler.h"
 #include "src/tint/type/depth_multisampled_texture.h"
 #include "src/tint/type/depth_texture.h"
 #include "src/tint/type/multisampled_texture.h"
 #include "src/tint/type/sampled_texture.h"
+#include "src/tint/type/sampler.h"
 #include "src/tint/type/storage_texture.h"
 #include "src/tint/writer/msl/test_helper.h"
 
@@ -730,7 +730,7 @@
 }
 
 TEST_F(MslGeneratorImplTest, EmitType_Sampler) {
-    auto* sampler = create<sem::Sampler>(ast::SamplerKind::kSampler);
+    auto* sampler = create<type::Sampler>(ast::SamplerKind::kSampler);
 
     GeneratorImpl& gen = Build();
 
@@ -740,7 +740,7 @@
 }
 
 TEST_F(MslGeneratorImplTest, EmitType_SamplerComparison) {
-    auto* sampler = create<sem::Sampler>(ast::SamplerKind::kComparisonSampler);
+    auto* sampler = create<type::Sampler>(ast::SamplerKind::kComparisonSampler);
 
     GeneratorImpl& gen = Build();
 
diff --git a/src/tint/writer/spirv/builder.cc b/src/tint/writer/spirv/builder.cc
index e03d95d..caa575f 100644
--- a/src/tint/writer/spirv/builder.cc
+++ b/src/tint/writer/spirv/builder.cc
@@ -797,7 +797,7 @@
                     break;
             }
         }
-        if (!type->Is<sem::Sampler>()) {
+        if (!type->Is<type::Sampler>()) {
             // If we don't have a initializer and we're an Output or Private
             // variable, then WGSL requires that we zero-initialize.
             // If we're a Workgroup variable, and the
@@ -3732,16 +3732,16 @@
                 return true;
             },
             [&](const type::Texture* tex) { return GenerateTextureType(tex, result); },
-            [&](const sem::Sampler* s) {
+            [&](const type::Sampler* s) {
                 push_type(spv::Op::OpTypeSampler, {result});
 
                 // Register both of the sampler type names. In SPIR-V they're the same
                 // sampler type, so we need to match that when we do the dedup check.
                 if (s->kind() == ast::SamplerKind::kSampler) {
-                    type_to_id_[builder_.create<sem::Sampler>(
+                    type_to_id_[builder_.create<type::Sampler>(
                         ast::SamplerKind::kComparisonSampler)] = id;
                 } else {
-                    type_to_id_[builder_.create<sem::Sampler>(ast::SamplerKind::kSampler)] = id;
+                    type_to_id_[builder_.create<type::Sampler>(ast::SamplerKind::kSampler)] = id;
                 }
                 return true;
             },
diff --git a/src/tint/writer/spirv/builder_type_test.cc b/src/tint/writer/spirv/builder_type_test.cc
index 5e00675..74d6cbc 100644
--- a/src/tint/writer/spirv/builder_type_test.cc
+++ b/src/tint/writer/spirv/builder_type_test.cc
@@ -964,7 +964,7 @@
 }
 
 TEST_F(BuilderTest_Type, Sampler) {
-    auto* sampler = create<sem::Sampler>(ast::SamplerKind::kSampler);
+    auto* sampler = create<type::Sampler>(ast::SamplerKind::kSampler);
 
     spirv::Builder& b = Build();
 
@@ -974,7 +974,7 @@
 }
 
 TEST_F(BuilderTest_Type, ComparisonSampler) {
-    auto* sampler = create<sem::Sampler>(ast::SamplerKind::kComparisonSampler);
+    auto* sampler = create<type::Sampler>(ast::SamplerKind::kComparisonSampler);
 
     spirv::Builder& b = Build();
 
@@ -984,8 +984,8 @@
 }
 
 TEST_F(BuilderTest_Type, Dedup_Sampler_And_ComparisonSampler) {
-    auto* comp_sampler = create<sem::Sampler>(ast::SamplerKind::kComparisonSampler);
-    auto* sampler = create<sem::Sampler>(ast::SamplerKind::kSampler);
+    auto* comp_sampler = create<type::Sampler>(ast::SamplerKind::kComparisonSampler);
+    auto* sampler = create<type::Sampler>(ast::SamplerKind::kSampler);
 
     spirv::Builder& b = Build();
 
