diff --git a/src/tint/lang/wgsl/resolver/resolver.cc b/src/tint/lang/wgsl/resolver/resolver.cc
index 76b9ff9..29d313d 100644
--- a/src/tint/lang/wgsl/resolver/resolver.cc
+++ b/src/tint/lang/wgsl/resolver/resolver.cc
@@ -2415,9 +2415,8 @@
         }
         auto eval_stage = overload->const_eval_fn ? core::EvaluationStage::kConstant
                                                   : core::EvaluationStage::kRuntime;
-        return b.create<sem::BuiltinFn>(
-            fn, overload->return_type, std::move(params), eval_stage, supported_stages,
-            flags.Contains(OverloadFlag::kIsDeprecated), flags.Contains(OverloadFlag::kMustUse));
+        return b.create<sem::BuiltinFn>(fn, overload->return_type, std::move(params), eval_stage,
+                                        supported_stages, *overload->info);
     });
 
     if (fn == wgsl::BuiltinFn::kTintMaterialize) {
diff --git a/src/tint/lang/wgsl/sem/BUILD.bazel b/src/tint/lang/wgsl/sem/BUILD.bazel
index 75399ed..37b8323 100644
--- a/src/tint/lang/wgsl/sem/BUILD.bazel
+++ b/src/tint/lang/wgsl/sem/BUILD.bazel
@@ -113,6 +113,7 @@
     "//src/tint/api/common",
     "//src/tint/lang/core",
     "//src/tint/lang/core/constant",
+    "//src/tint/lang/core/intrinsic",
     "//src/tint/lang/core/type",
     "//src/tint/lang/wgsl",
     "//src/tint/lang/wgsl/ast",
diff --git a/src/tint/lang/wgsl/sem/BUILD.cmake b/src/tint/lang/wgsl/sem/BUILD.cmake
index eba7340..6120b90 100644
--- a/src/tint/lang/wgsl/sem/BUILD.cmake
+++ b/src/tint/lang/wgsl/sem/BUILD.cmake
@@ -112,6 +112,7 @@
   tint_api_common
   tint_lang_core
   tint_lang_core_constant
+  tint_lang_core_intrinsic
   tint_lang_core_type
   tint_lang_wgsl
   tint_lang_wgsl_ast
diff --git a/src/tint/lang/wgsl/sem/BUILD.gn b/src/tint/lang/wgsl/sem/BUILD.gn
index 715f3a6..e6b2b06 100644
--- a/src/tint/lang/wgsl/sem/BUILD.gn
+++ b/src/tint/lang/wgsl/sem/BUILD.gn
@@ -116,6 +116,7 @@
     "${tint_src_dir}/api/common",
     "${tint_src_dir}/lang/core",
     "${tint_src_dir}/lang/core/constant",
+    "${tint_src_dir}/lang/core/intrinsic",
     "${tint_src_dir}/lang/core/type",
     "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
diff --git a/src/tint/lang/wgsl/sem/builtin_fn.cc b/src/tint/lang/wgsl/sem/builtin_fn.cc
index 0e48dfc..b0218eb 100644
--- a/src/tint/lang/wgsl/sem/builtin_fn.cc
+++ b/src/tint/lang/wgsl/sem/builtin_fn.cc
@@ -33,6 +33,7 @@
 #include <utility>
 #include <vector>
 
+#include "src/tint/lang/core/intrinsic/table.h"
 #include "src/tint/utils/containers/transform.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::BuiltinFn);
@@ -48,15 +49,21 @@
                      VectorRef<Parameter*> parameters,
                      core::EvaluationStage eval_stage,
                      PipelineStageSet supported_stages,
-                     bool is_deprecated,
-                     bool must_use)
-    : Base(return_type, std::move(parameters), eval_stage, must_use),
+                     const core::intrinsic::OverloadInfo& overload)
+    : Base(return_type,
+           std::move(parameters),
+           eval_stage,
+           overload.flags.Contains(core::intrinsic::OverloadFlag::kMustUse)),
       fn_(type),
       supported_stages_(supported_stages),
-      is_deprecated_(is_deprecated) {}
+      overload_(overload) {}
 
 BuiltinFn::~BuiltinFn() = default;
 
+bool BuiltinFn::IsDeprecated() const {
+    return overload_.flags.Contains(core::intrinsic::OverloadFlag::kIsDeprecated);
+}
+
 bool BuiltinFn::IsCoarseDerivative() const {
     return wgsl::IsCoarseDerivative(fn_);
 }
diff --git a/src/tint/lang/wgsl/sem/builtin_fn.h b/src/tint/lang/wgsl/sem/builtin_fn.h
index bcac245..18684cc 100644
--- a/src/tint/lang/wgsl/sem/builtin_fn.h
+++ b/src/tint/lang/wgsl/sem/builtin_fn.h
@@ -38,6 +38,11 @@
 #include "src/tint/lang/wgsl/sem/pipeline_stage_set.h"
 #include "src/tint/utils/math/hash.h"
 
+// Forward declarations
+namespace tint::core::intrinsic {
+struct OverloadInfo;
+}
+
 namespace tint::sem {
 
 /// BuiltinFn holds the semantic information for a builtin function.
@@ -49,15 +54,13 @@
     /// @param parameters the parameters for the builtin overload
     /// @param eval_stage the earliest evaluation stage for a call to the builtin
     /// @param supported_stages the pipeline stages that this builtin can be used in
-    /// @param is_deprecated true if the particular overload is considered deprecated
-    /// @param must_use true if the builtin was annotated with `@must_use`
+    /// @param overload the builtin table overload
     BuiltinFn(wgsl::BuiltinFn type,
               const core::type::Type* return_type,
               VectorRef<Parameter*> parameters,
               core::EvaluationStage eval_stage,
               PipelineStageSet supported_stages,
-              bool is_deprecated,
-              bool must_use);
+              const core::intrinsic::OverloadInfo& overload);
 
     /// Destructor
     ~BuiltinFn() override;
@@ -69,7 +72,7 @@
     PipelineStageSet SupportedStages() const { return supported_stages_; }
 
     /// @return true if the builtin overload is considered deprecated
-    bool IsDeprecated() const { return is_deprecated_; }
+    bool IsDeprecated() const;
 
     /// @returns the name of the builtin function type. The spelling, including
     /// case, matches the name in the WGSL spec.
@@ -122,6 +125,9 @@
     /// wgsl::LanguageFeature::kUndefined if no language feature is required.
     wgsl::LanguageFeature RequiredLanguageFeature() const;
 
+    /// @returns the builtin table overload info
+    const core::intrinsic::OverloadInfo& Overload() const { return overload_; }
+
     /// @return the hash code for this object
     tint::HashCode HashCode() const {
         return Hash(Fn(), SupportedStages(), ReturnType(), Parameters(), IsDeprecated());
@@ -130,7 +136,7 @@
   private:
     const wgsl::BuiltinFn fn_;
     const PipelineStageSet supported_stages_;
-    const bool is_deprecated_;
+    const core::intrinsic::OverloadInfo& overload_;
 };
 
 /// Constant value used by the degrees() builtin
