[tint] Add u64 support to the type manager

Bug: 394291739
Change-Id: I2ed6fed68766dc641bf55923cf19a59cd6048e8d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/224596
Commit-Queue: James Price <jrprice@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/lang/core/type/manager.cc b/src/tint/lang/core/type/manager.cc
index 229e271..03eba32 100644
--- a/src/tint/lang/core/type/manager.cc
+++ b/src/tint/lang/core/type/manager.cc
@@ -45,6 +45,7 @@
 #include "src/tint/lang/core/type/storage_texture.h"
 #include "src/tint/lang/core/type/type.h"
 #include "src/tint/lang/core/type/u32.h"
+#include "src/tint/lang/core/type/u64.h"
 #include "src/tint/lang/core/type/u8.h"
 #include "src/tint/lang/core/type/vector.h"
 #include "src/tint/lang/core/type/void.h"
@@ -92,6 +93,10 @@
     return Get<core::type::U32>();
 }
 
+const core::type::U64* Manager::u64() {
+    return Get<core::type::U64>();
+}
+
 const core::type::F32* Manager::f32() {
     return Get<core::type::F32>();
 }
diff --git a/src/tint/lang/core/type/manager.h b/src/tint/lang/core/type/manager.h
index 3a4eb9e..37a1ccf 100644
--- a/src/tint/lang/core/type/manager.h
+++ b/src/tint/lang/core/type/manager.h
@@ -63,6 +63,7 @@
 class StorageTexture;
 class U8;
 class U32;
+class U64;
 class Vector;
 class Void;
 }  // namespace tint::core::type
@@ -150,6 +151,8 @@
             return Get<core::type::U8>(std::forward<ARGS>(args)...);
         } else if constexpr (std::is_same_v<T, tint::core::u32>) {
             return Get<core::type::U32>(std::forward<ARGS>(args)...);
+        } else if constexpr (std::is_same_v<T, tint::core::u64>) {
+            return Get<core::type::U64>(std::forward<ARGS>(args)...);
         } else if constexpr (std::is_same_v<T, tint::core::f32>) {
             return Get<core::type::F32>(std::forward<ARGS>(args)...);
         } else if constexpr (std::is_same_v<T, tint::core::f16>) {
@@ -211,6 +214,9 @@
     /// @returns a u32 type
     const core::type::U32* u32();
 
+    /// @returns a u64 type
+    const core::type::U64* u64();
+
     /// @returns an f32 type
     const core::type::F32* f32();
 
diff --git a/src/tint/lang/core/type/manager_test.cc b/src/tint/lang/core/type/manager_test.cc
index 437e6f5..537fca7 100644
--- a/src/tint/lang/core/type/manager_test.cc
+++ b/src/tint/lang/core/type/manager_test.cc
@@ -36,6 +36,7 @@
 #include "src/tint/lang/core/type/i8.h"
 #include "src/tint/lang/core/type/matrix.h"
 #include "src/tint/lang/core/type/u32.h"
+#include "src/tint/lang/core/type/u64.h"
 #include "src/tint/lang/core/type/u8.h"
 
 namespace tint::core::type {
@@ -102,6 +103,10 @@
     const Type* u32_2 = tm.Get<U32>();
     ASSERT_EQ(u32_1, u32_2);
 
+    const Type* u64_1 = tm.Get<u64>();
+    const Type* u64_2 = tm.Get<U64>();
+    ASSERT_EQ(u64_1, u64_2);
+
     const Type* u8_1 = tm.Get<u8>();
     const Type* u8_2 = tm.Get<U8>();
     ASSERT_EQ(u8_1, u8_2);