diff --git a/src/ast/alias_test.cc b/src/ast/alias_test.cc
index 9adebbd..d3c5ec7 100644
--- a/src/ast/alias_test.cc
+++ b/src/ast/alias_test.cc
@@ -67,7 +67,7 @@
   auto* u32 = create<U32>();
   auto* a = create<Alias>(Sym("a_type"), u32);
   auto* aa = create<Alias>(Sym("aa_type"), a);
-  auto* paa = create<Pointer>(aa, StorageClass::kUniform);
+  auto* paa = create<Pointer>(aa, StorageClass::kUniform, Access::kUndefined);
   auto* apaa = create<Alias>(Sym("paa_type"), paa);
   auto* aapaa = create<Alias>(Sym("aapaa_type"), apaa);
 
diff --git a/src/ast/pointer.cc b/src/ast/pointer.cc
index 3c13998..77d8958 100644
--- a/src/ast/pointer.cc
+++ b/src/ast/pointer.cc
@@ -24,14 +24,19 @@
 Pointer::Pointer(ProgramID program_id,
                  const Source& source,
                  Type* const subtype,
-                 ast::StorageClass storage_class)
+                 ast::StorageClass storage_class,
+                 ast::Access access)
     : Base(program_id, source),
       subtype_(subtype),
-      storage_class_(storage_class) {}
+      storage_class_(storage_class),
+      access_(access) {}
 
 std::string Pointer::type_name() const {
   std::ostringstream out;
   out << "__ptr_" << storage_class_ << subtype_->type_name();
+  if (access_ != ast::Access::kUndefined) {
+    out << "_" << access_;
+  }
   return out.str();
 }
 
@@ -41,7 +46,11 @@
   if (storage_class_ != ast::StorageClass::kNone) {
     out << storage_class_ << ", ";
   }
-  out << subtype_->FriendlyName(symbols) << ">";
+  out << subtype_->FriendlyName(symbols);
+  if (access_ != ast::Access::kUndefined) {
+    out << ", " << access_;
+  }
+  out << ">";
   return out.str();
 }
 
@@ -53,7 +62,7 @@
   // Clone arguments outside of create() call to have deterministic ordering
   auto src = ctx->Clone(source());
   auto* ty = ctx->Clone(type());
-  return ctx->dst->create<Pointer>(src, ty, storage_class_);
+  return ctx->dst->create<Pointer>(src, ty, storage_class_, access_);
 }
 
 }  // namespace ast
diff --git a/src/ast/pointer.h b/src/ast/pointer.h
index 18b5a34..c7bba99 100644
--- a/src/ast/pointer.h
+++ b/src/ast/pointer.h
@@ -17,6 +17,7 @@
 
 #include <string>
 
+#include "src/ast/access.h"
 #include "src/ast/storage_class.h"
 #include "src/ast/type.h"
 
@@ -31,19 +32,25 @@
   /// @param source the source of this node
   /// @param subtype the pointee type
   /// @param storage_class the storage class of the pointer
+  /// @param access the access control of the pointer
   Pointer(ProgramID program_id,
           const Source& source,
           Type* const subtype,
-          ast::StorageClass storage_class);
+          ast::StorageClass storage_class,
+          ast::Access access);
   /// Move constructor
   Pointer(Pointer&&);
   ~Pointer() override;
 
   /// @returns the pointee type
   Type* type() const { return const_cast<Type*>(subtype_); }
+
   /// @returns the storage class of the pointer
   ast::StorageClass storage_class() const { return storage_class_; }
 
+  /// @returns the access control of the pointer
+  ast::Access access() const { return access_; }
+
   /// @returns the name for this type
   std::string type_name() const override;
 
@@ -60,6 +67,7 @@
  private:
   Type const* const subtype_;
   ast::StorageClass const storage_class_;
+  ast::Access const access_;
 };
 
 }  // namespace ast
diff --git a/src/ast/pointer_test.cc b/src/ast/pointer_test.cc
index d2eaa9e..454b4d7 100644
--- a/src/ast/pointer_test.cc
+++ b/src/ast/pointer_test.cc
@@ -25,27 +25,37 @@
 
 TEST_F(AstPointerTest, Creation) {
   auto* i32 = create<I32>();
-  auto* p = create<Pointer>(i32, ast::StorageClass::kStorage);
+  auto* p = create<Pointer>(i32, ast::StorageClass::kStorage, Access::kRead);
   EXPECT_EQ(p->type(), i32);
   EXPECT_EQ(p->storage_class(), ast::StorageClass::kStorage);
+  EXPECT_EQ(p->access(), Access::kRead);
 }
 
 TEST_F(AstPointerTest, TypeName) {
   auto* i32 = create<I32>();
-  auto* p = create<Pointer>(i32, ast::StorageClass::kWorkgroup);
+  auto* p =
+      create<Pointer>(i32, ast::StorageClass::kWorkgroup, Access::kUndefined);
   EXPECT_EQ(p->type_name(), "__ptr_workgroup__i32");
 }
 
-TEST_F(AstPointerTest, FriendlyNameWithStorageClass) {
+TEST_F(AstPointerTest, TypeNameWithAccess) {
   auto* i32 = create<I32>();
-  auto* p = create<Pointer>(i32, ast::StorageClass::kWorkgroup);
+  auto* p = create<Pointer>(i32, ast::StorageClass::kWorkgroup, Access::kRead);
+  EXPECT_EQ(p->type_name(), "__ptr_workgroup__i32_read");
+}
+
+TEST_F(AstPointerTest, FriendlyName) {
+  auto* i32 = create<I32>();
+  auto* p =
+      create<Pointer>(i32, ast::StorageClass::kWorkgroup, Access::kUndefined);
   EXPECT_EQ(p->FriendlyName(Symbols()), "ptr<workgroup, i32>");
 }
 
-TEST_F(AstPointerTest, FriendlyNameWithoutStorageClass) {
+TEST_F(AstPointerTest, FriendlyNameWithAccess) {
   auto* i32 = create<I32>();
-  auto* p = create<Pointer>(i32, ast::StorageClass::kNone);
-  EXPECT_EQ(p->FriendlyName(Symbols()), "ptr<i32>");
+  auto* p =
+      create<Pointer>(i32, ast::StorageClass::kStorage, Access::kReadWrite);
+  EXPECT_EQ(p->FriendlyName(Symbols()), "ptr<storage, i32, read_write>");
 }
 
 }  // namespace
diff --git a/src/intrinsic_table.cc b/src/intrinsic_table.cc
index 9cdeca7..8c820d5 100644
--- a/src/intrinsic_table.cc
+++ b/src/intrinsic_table.cc
@@ -431,24 +431,30 @@
                                           /* stride_implicit */ 0);
 }
 
-bool match_ptr(const sem::Type* ty, Number& S, const sem::Type*& T) {
+bool match_ptr(const sem::Type* ty, Number& S, const sem::Type*& T, Number& A) {
   if (ty->Is<Any>()) {
     S = Number::any;
     T = ty;
+    A = Number::any;
     return true;
   }
 
   if (auto* p = ty->As<sem::Pointer>()) {
     S = Number(static_cast<uint32_t>(p->StorageClass()));
     T = p->StoreType();
+    A = Number(static_cast<uint32_t>(p->Access()));
     return true;
   }
   return false;
 }
 
-const sem::Pointer* build_ptr(MatchState& state, Number S, const sem::Type* T) {
+const sem::Pointer* build_ptr(MatchState& state,
+                              Number S,
+                              const sem::Type* T,
+                              Number& A) {
   return state.builder.create<sem::Pointer>(
-      T, static_cast<ast::StorageClass>(S.Value()));
+      T, static_cast<ast::StorageClass>(S.Value()),
+      static_cast<ast::Access>(A.Value()));
 }
 
 bool match_sampler(const sem::Type* ty) {
diff --git a/src/intrinsic_table.inl b/src/intrinsic_table.inl
index 4fca42f..f72bb8c 100644
--- a/src/intrinsic_table.inl
+++ b/src/intrinsic_table.inl
@@ -338,7 +338,8 @@
 const sem::Type* Ptr::Match(MatchState& state, const sem::Type* ty) const {
   Number S = Number::invalid;
   const sem::Type* T = nullptr;
-  if (!match_ptr(ty, S, T)) {
+  Number A = Number::invalid;
+  if (!match_ptr(ty, S, T, A)) {
     return nullptr;
   }
   S = state.Num(S);
@@ -349,12 +350,17 @@
   if (T == nullptr) {
     return nullptr;
   }
-  return build_ptr(state, S, T);
+  A = state.Num(A);
+  if (!A.IsValid()) {
+    return nullptr;
+  }
+  return build_ptr(state, S, T, A);
 }
 
 std::string Ptr::String(MatchState& state) const {
   const std::string S = state.NumName();
   const std::string T = state.TypeName();
+  const std::string A = state.NumName();
   std::stringstream ss;
   ss << "ptr<" << T << ">";
   return ss.str();
@@ -1253,6 +1259,7 @@
   OpenTypeMatcher open_type_0_{0};
   OpenNumberMatcher open_number_0_{0};
   OpenNumberMatcher open_number_1_{1};
+  OpenNumberMatcher open_number_2_{2};
   Bool Bool_;
   F32 F32_;
   I32 I32_;
@@ -1336,15 +1343,16 @@
   };
 
   /// The open-numbers, and number matchers
-  NumberMatcher const* const number[8] = {
+  NumberMatcher const* const number[9] = {
     /* [0] */ &open_number_0_,
     /* [1] */ &open_number_1_,
-    /* [2] */ &F32TexelFormat_,
-    /* [3] */ &I32TexelFormat_,
-    /* [4] */ &U32TexelFormat_,
-    /* [5] */ &ReadOrWrite_,
-    /* [6] */ &Write_,
-    /* [7] */ &Read_,
+    /* [2] */ &open_number_2_,
+    /* [3] */ &F32TexelFormat_,
+    /* [4] */ &I32TexelFormat_,
+    /* [5] */ &U32TexelFormat_,
+    /* [6] */ &ReadOrWrite_,
+    /* [7] */ &Write_,
+    /* [8] */ &Read_,
   };
 };
 
@@ -1357,153 +1365,159 @@
   /* [2] */ 8,
   /* [3] */ 0,
   /* [4] */ 0,
-  /* [5] */ 10,
-  /* [6] */ 1,
-  /* [7] */ 8,
-  /* [8] */ 0,
-  /* [9] */ 2,
-  /* [10] */ 9,
-  /* [11] */ 0,
-  /* [12] */ 0,
-  /* [13] */ 2,
-  /* [14] */ 26,
+  /* [5] */ 2,
+  /* [6] */ 10,
+  /* [7] */ 1,
+  /* [8] */ 8,
+  /* [9] */ 0,
+  /* [10] */ 2,
+  /* [11] */ 2,
+  /* [12] */ 9,
+  /* [13] */ 0,
+  /* [14] */ 0,
   /* [15] */ 2,
-  /* [16] */ 6,
-  /* [17] */ 2,
-  /* [18] */ 28,
-  /* [19] */ 0,
-  /* [20] */ 1,
-  /* [21] */ 27,
-  /* [22] */ 0,
+  /* [16] */ 10,
+  /* [17] */ 0,
+  /* [18] */ 0,
+  /* [19] */ 1,
+  /* [20] */ 10,
+  /* [21] */ 0,
+  /* [22] */ 2,
   /* [23] */ 1,
-  /* [24] */ 8,
-  /* [25] */ 0,
-  /* [26] */ 1,
-  /* [27] */ 28,
-  /* [28] */ 4,
-  /* [29] */ 7,
-  /* [30] */ 2,
-  /* [31] */ 26,
-  /* [32] */ 0,
-  /* [33] */ 1,
-  /* [34] */ 25,
+  /* [24] */ 26,
+  /* [25] */ 3,
+  /* [26] */ 7,
+  /* [27] */ 2,
+  /* [28] */ 8,
+  /* [29] */ 0,
+  /* [30] */ 1,
+  /* [31] */ 28,
+  /* [32] */ 5,
+  /* [33] */ 8,
+  /* [34] */ 26,
   /* [35] */ 0,
   /* [36] */ 1,
-  /* [37] */ 27,
-  /* [38] */ 4,
-  /* [39] */ 7,
-  /* [40] */ 3,
-  /* [41] */ 26,
-  /* [42] */ 4,
-  /* [43] */ 7,
-  /* [44] */ 4,
-  /* [45] */ 25,
-  /* [46] */ 4,
-  /* [47] */ 7,
-  /* [48] */ 0,
+  /* [37] */ 25,
+  /* [38] */ 0,
+  /* [39] */ 1,
+  /* [40] */ 27,
+  /* [41] */ 5,
+  /* [42] */ 8,
+  /* [43] */ 26,
+  /* [44] */ 5,
+  /* [45] */ 8,
+  /* [46] */ 25,
+  /* [47] */ 5,
+  /* [48] */ 8,
   /* [49] */ 28,
-  /* [50] */ 3,
-  /* [51] */ 7,
+  /* [50] */ 4,
+  /* [51] */ 8,
   /* [52] */ 27,
-  /* [53] */ 3,
-  /* [54] */ 7,
+  /* [53] */ 4,
+  /* [54] */ 8,
   /* [55] */ 26,
-  /* [56] */ 3,
-  /* [57] */ 7,
+  /* [56] */ 4,
+  /* [57] */ 8,
   /* [58] */ 25,
-  /* [59] */ 3,
-  /* [60] */ 7,
-  /* [61] */ 28,
-  /* [62] */ 2,
-  /* [63] */ 7,
-  /* [64] */ 27,
-  /* [65] */ 2,
-  /* [66] */ 7,
-  /* [67] */ 26,
-  /* [68] */ 2,
-  /* [69] */ 7,
-  /* [70] */ 25,
-  /* [71] */ 2,
-  /* [72] */ 7,
-  /* [73] */ 28,
-  /* [74] */ 4,
-  /* [75] */ 6,
-  /* [76] */ 3,
-  /* [77] */ 10,
-  /* [78] */ 0,
-  /* [79] */ 2,
-  /* [80] */ 27,
-  /* [81] */ 4,
-  /* [82] */ 6,
-  /* [83] */ 26,
-  /* [84] */ 4,
-  /* [85] */ 6,
-  /* [86] */ 10,
-  /* [87] */ 0,
-  /* [88] */ 0,
-  /* [89] */ 25,
-  /* [90] */ 4,
-  /* [91] */ 6,
-  /* [92] */ 28,
-  /* [93] */ 3,
-  /* [94] */ 6,
-  /* [95] */ 27,
-  /* [96] */ 3,
-  /* [97] */ 6,
-  /* [98] */ 26,
-  /* [99] */ 3,
-  /* [100] */ 6,
-  /* [101] */ 25,
-  /* [102] */ 3,
-  /* [103] */ 6,
-  /* [104] */ 28,
-  /* [105] */ 2,
-  /* [106] */ 6,
-  /* [107] */ 25,
-  /* [108] */ 2,
-  /* [109] */ 6,
-  /* [110] */ 27,
-  /* [111] */ 2,
-  /* [112] */ 6,
-  /* [113] */ 5,
-  /* [114] */ 3,
-  /* [115] */ 5,
+  /* [59] */ 4,
+  /* [60] */ 8,
+  /* [61] */ 27,
+  /* [62] */ 0,
+  /* [63] */ 1,
+  /* [64] */ 28,
+  /* [65] */ 3,
+  /* [66] */ 8,
+  /* [67] */ 27,
+  /* [68] */ 3,
+  /* [69] */ 8,
+  /* [70] */ 26,
+  /* [71] */ 3,
+  /* [72] */ 8,
+  /* [73] */ 25,
+  /* [74] */ 3,
+  /* [75] */ 8,
+  /* [76] */ 28,
+  /* [77] */ 0,
+  /* [78] */ 1,
+  /* [79] */ 28,
+  /* [80] */ 5,
+  /* [81] */ 7,
+  /* [82] */ 3,
+  /* [83] */ 27,
+  /* [84] */ 5,
+  /* [85] */ 7,
+  /* [86] */ 4,
+  /* [87] */ 26,
+  /* [88] */ 5,
+  /* [89] */ 7,
+  /* [90] */ 0,
+  /* [91] */ 25,
+  /* [92] */ 5,
+  /* [93] */ 7,
+  /* [94] */ 28,
+  /* [95] */ 4,
+  /* [96] */ 7,
+  /* [97] */ 27,
+  /* [98] */ 4,
+  /* [99] */ 7,
+  /* [100] */ 26,
+  /* [101] */ 4,
+  /* [102] */ 7,
+  /* [103] */ 25,
+  /* [104] */ 4,
+  /* [105] */ 7,
+  /* [106] */ 28,
+  /* [107] */ 3,
+  /* [108] */ 7,
+  /* [109] */ 25,
+  /* [110] */ 3,
+  /* [111] */ 7,
+  /* [112] */ 27,
+  /* [113] */ 3,
+  /* [114] */ 7,
+  /* [115] */ 6,
   /* [116] */ 2,
-  /* [117] */ 19,
-  /* [118] */ 2,
-  /* [119] */ 18,
-  /* [120] */ 2,
-  /* [121] */ 14,
-  /* [122] */ 0,
-  /* [123] */ 17,
+  /* [117] */ 5,
+  /* [118] */ 3,
+  /* [119] */ 6,
+  /* [120] */ 3,
+  /* [121] */ 5,
+  /* [122] */ 2,
+  /* [123] */ 19,
   /* [124] */ 2,
-  /* [125] */ 15,
-  /* [126] */ 0,
-  /* [127] */ 16,
-  /* [128] */ 2,
-  /* [129] */ 16,
-  /* [130] */ 0,
-  /* [131] */ 17,
+  /* [125] */ 18,
+  /* [126] */ 2,
+  /* [127] */ 14,
+  /* [128] */ 0,
+  /* [129] */ 17,
+  /* [130] */ 2,
+  /* [131] */ 15,
   /* [132] */ 0,
-  /* [133] */ 20,
-  /* [134] */ 0,
-  /* [135] */ 15,
-  /* [136] */ 2,
-  /* [137] */ 18,
+  /* [133] */ 16,
+  /* [134] */ 2,
+  /* [135] */ 16,
+  /* [136] */ 0,
+  /* [137] */ 17,
   /* [138] */ 0,
-  /* [139] */ 19,
+  /* [139] */ 20,
   /* [140] */ 0,
-  /* [141] */ 11,
-  /* [142] */ 0,
-  /* [143] */ 14,
-  /* [144] */ 2,
-  /* [145] */ 12,
-  /* [146] */ 22,
-  /* [147] */ 23,
-  /* [148] */ 21,
-  /* [149] */ 24,
-  /* [150] */ 29,
-  /* [151] */ 13,
+  /* [141] */ 15,
+  /* [142] */ 2,
+  /* [143] */ 18,
+  /* [144] */ 0,
+  /* [145] */ 19,
+  /* [146] */ 0,
+  /* [147] */ 11,
+  /* [148] */ 0,
+  /* [149] */ 14,
+  /* [150] */ 2,
+  /* [151] */ 12,
+  /* [152] */ 22,
+  /* [153] */ 23,
+  /* [154] */ 21,
+  /* [155] */ 24,
+  /* [156] */ 29,
+  /* [157] */ 13,
 };
 
 // Assert that the MatcherIndex is big enough to index all the matchers, plus
@@ -1516,1222 +1530,1222 @@
   {
     /* [0] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[127],
+    /* matcher indices */ &kMatcherIndices[133],
   },
   {
     /* [1] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [2] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [3] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [4] */
     /* usage */ ParameterUsage::kDdx,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [5] */
     /* usage */ ParameterUsage::kDdy,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [6] */
     /* usage */ ParameterUsage::kOffset,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [7] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[135],
+    /* matcher indices */ &kMatcherIndices[141],
   },
   {
     /* [8] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [9] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [10] */
     /* usage */ ParameterUsage::kDdx,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [11] */
     /* usage */ ParameterUsage::kDdy,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [12] */
     /* usage */ ParameterUsage::kOffset,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [13] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[117],
+    /* matcher indices */ &kMatcherIndices[123],
   },
   {
     /* [14] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [15] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [16] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [17] */
     /* usage */ ParameterUsage::kDdx,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [18] */
     /* usage */ ParameterUsage::kDdy,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [19] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[127],
+    /* matcher indices */ &kMatcherIndices[133],
   },
   {
     /* [20] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [21] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [22] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [23] */
     /* usage */ ParameterUsage::kDdx,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [24] */
     /* usage */ ParameterUsage::kDdy,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [25] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[146],
+    /* matcher indices */ &kMatcherIndices[152],
   },
   {
     /* [26] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[151],
+    /* matcher indices */ &kMatcherIndices[157],
   },
   {
     /* [27] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [28] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [29] */
     /* usage */ ParameterUsage::kDepthRef,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [30] */
     /* usage */ ParameterUsage::kOffset,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [31] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[123],
+    /* matcher indices */ &kMatcherIndices[129],
   },
   {
     /* [32] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [33] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [34] */
     /* usage */ ParameterUsage::kDdx,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [35] */
     /* usage */ ParameterUsage::kDdy,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [36] */
     /* usage */ ParameterUsage::kOffset,
-    /* matcher indices */ &kMatcherIndices[75],
+    /* matcher indices */ &kMatcherIndices[119],
   },
   {
     /* [37] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[146],
+    /* matcher indices */ &kMatcherIndices[152],
   },
   {
     /* [38] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [39] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [40] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [41] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [42] */
     /* usage */ ParameterUsage::kOffset,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [43] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[127],
+    /* matcher indices */ &kMatcherIndices[133],
   },
   {
     /* [44] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [45] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [46] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [47] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [48] */
     /* usage */ ParameterUsage::kOffset,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [49] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[127],
+    /* matcher indices */ &kMatcherIndices[133],
   },
   {
     /* [50] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [51] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [52] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [53] */
     /* usage */ ParameterUsage::kBias,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [54] */
     /* usage */ ParameterUsage::kOffset,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [55] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[146],
+    /* matcher indices */ &kMatcherIndices[152],
   },
   {
     /* [56] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[151],
+    /* matcher indices */ &kMatcherIndices[157],
   },
   {
     /* [57] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [58] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [59] */
     /* usage */ ParameterUsage::kDepthRef,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [60] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[127],
+    /* matcher indices */ &kMatcherIndices[133],
   },
   {
     /* [61] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [62] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [63] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [64] */
     /* usage */ ParameterUsage::kOffset,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [65] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[146],
+    /* matcher indices */ &kMatcherIndices[152],
   },
   {
     /* [66] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [67] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [68] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [69] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [70] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[148],
+    /* matcher indices */ &kMatcherIndices[154],
   },
   {
     /* [71] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[151],
+    /* matcher indices */ &kMatcherIndices[157],
   },
   {
     /* [72] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [73] */
     /* usage */ ParameterUsage::kDepthRef,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [74] */
     /* usage */ ParameterUsage::kOffset,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [75] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[149],
+    /* matcher indices */ &kMatcherIndices[155],
   },
   {
     /* [76] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [77] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [78] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [79] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [80] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[123],
+    /* matcher indices */ &kMatcherIndices[129],
   },
   {
     /* [81] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [82] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [83] */
     /* usage */ ParameterUsage::kBias,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [84] */
     /* usage */ ParameterUsage::kOffset,
-    /* matcher indices */ &kMatcherIndices[75],
+    /* matcher indices */ &kMatcherIndices[119],
   },
   {
     /* [85] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[146],
+    /* matcher indices */ &kMatcherIndices[152],
   },
   {
     /* [86] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [87] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [88] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [89] */
     /* usage */ ParameterUsage::kOffset,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [90] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[127],
+    /* matcher indices */ &kMatcherIndices[133],
   },
   {
     /* [91] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [92] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [93] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [94] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [95] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[117],
+    /* matcher indices */ &kMatcherIndices[123],
   },
   {
     /* [96] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [97] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [98] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [99] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [100] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[135],
+    /* matcher indices */ &kMatcherIndices[141],
   },
   {
     /* [101] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [102] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [103] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [104] */
     /* usage */ ParameterUsage::kOffset,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [105] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[135],
+    /* matcher indices */ &kMatcherIndices[141],
   },
   {
     /* [106] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [107] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [108] */
     /* usage */ ParameterUsage::kBias,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [109] */
     /* usage */ ParameterUsage::kOffset,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [110] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[149],
+    /* matcher indices */ &kMatcherIndices[155],
   },
   {
     /* [111] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[151],
+    /* matcher indices */ &kMatcherIndices[157],
   },
   {
     /* [112] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [113] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [114] */
     /* usage */ ParameterUsage::kDepthRef,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [115] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[135],
+    /* matcher indices */ &kMatcherIndices[141],
   },
   {
     /* [116] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [117] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [118] */
     /* usage */ ParameterUsage::kDdx,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [119] */
     /* usage */ ParameterUsage::kDdy,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [120] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[117],
+    /* matcher indices */ &kMatcherIndices[123],
   },
   {
     /* [121] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [122] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [123] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [124] */
     /* usage */ ParameterUsage::kBias,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [125] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[148],
+    /* matcher indices */ &kMatcherIndices[154],
   },
   {
     /* [126] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [127] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [128] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [129] */
     /* usage */ ParameterUsage::kOffset,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [130] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[127],
+    /* matcher indices */ &kMatcherIndices[133],
   },
   {
     /* [131] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [132] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [133] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [134] */
     /* usage */ ParameterUsage::kBias,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [135] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[123],
+    /* matcher indices */ &kMatcherIndices[129],
   },
   {
     /* [136] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [137] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [138] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [139] */
     /* usage */ ParameterUsage::kOffset,
-    /* matcher indices */ &kMatcherIndices[75],
+    /* matcher indices */ &kMatcherIndices[119],
   },
   {
     /* [140] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[119],
+    /* matcher indices */ &kMatcherIndices[125],
   },
   {
     /* [141] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [142] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [143] */
     /* usage */ ParameterUsage::kDdx,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [144] */
     /* usage */ ParameterUsage::kDdy,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [145] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[123],
+    /* matcher indices */ &kMatcherIndices[129],
   },
   {
     /* [146] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [147] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [148] */
     /* usage */ ParameterUsage::kDdx,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [149] */
     /* usage */ ParameterUsage::kDdy,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [150] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[129],
+    /* matcher indices */ &kMatcherIndices[135],
   },
   {
     /* [151] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [152] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [153] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [154] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[117],
+    /* matcher indices */ &kMatcherIndices[123],
   },
   {
     /* [155] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [156] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [157] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [158] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[80],
+    /* matcher indices */ &kMatcherIndices[83],
   },
   {
     /* [159] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [160] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [161] */
     /* usage */ ParameterUsage::kValue,
-    /* matcher indices */ &kMatcherIndices[43],
+    /* matcher indices */ &kMatcherIndices[85],
   },
   {
     /* [162] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[95],
+    /* matcher indices */ &kMatcherIndices[97],
   },
   {
     /* [163] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [164] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [165] */
     /* usage */ ParameterUsage::kValue,
-    /* matcher indices */ &kMatcherIndices[39],
+    /* matcher indices */ &kMatcherIndices[81],
   },
   {
     /* [166] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[148],
+    /* matcher indices */ &kMatcherIndices[154],
   },
   {
     /* [167] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [168] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [169] */
     /* usage */ ParameterUsage::kOffset,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [170] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[123],
+    /* matcher indices */ &kMatcherIndices[129],
   },
   {
     /* [171] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [172] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [173] */
     /* usage */ ParameterUsage::kOffset,
-    /* matcher indices */ &kMatcherIndices[75],
+    /* matcher indices */ &kMatcherIndices[119],
   },
   {
     /* [174] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[135],
+    /* matcher indices */ &kMatcherIndices[141],
   },
   {
     /* [175] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [176] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [177] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [178] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[110],
+    /* matcher indices */ &kMatcherIndices[112],
   },
   {
     /* [179] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [180] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [181] */
     /* usage */ ParameterUsage::kValue,
-    /* matcher indices */ &kMatcherIndices[29],
+    /* matcher indices */ &kMatcherIndices[26],
   },
   {
     /* [182] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[147],
+    /* matcher indices */ &kMatcherIndices[153],
   },
   {
     /* [183] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[151],
+    /* matcher indices */ &kMatcherIndices[157],
   },
   {
     /* [184] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [185] */
     /* usage */ ParameterUsage::kDepthRef,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [186] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[119],
+    /* matcher indices */ &kMatcherIndices[125],
   },
   {
     /* [187] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [188] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [189] */
     /* usage */ ParameterUsage::kBias,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [190] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[146],
+    /* matcher indices */ &kMatcherIndices[152],
   },
   {
     /* [191] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [192] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [193] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [194] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[146],
+    /* matcher indices */ &kMatcherIndices[152],
   },
   {
     /* [195] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [196] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [197] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [198] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[147],
+    /* matcher indices */ &kMatcherIndices[153],
   },
   {
     /* [199] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [200] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [201] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [202] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[119],
+    /* matcher indices */ &kMatcherIndices[125],
   },
   {
     /* [203] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [204] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [205] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [206] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[148],
+    /* matcher indices */ &kMatcherIndices[154],
   },
   {
     /* [207] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[151],
+    /* matcher indices */ &kMatcherIndices[157],
   },
   {
     /* [208] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [209] */
     /* usage */ ParameterUsage::kDepthRef,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [210] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[123],
+    /* matcher indices */ &kMatcherIndices[129],
   },
   {
     /* [211] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [212] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [213] */
     /* usage */ ParameterUsage::kBias,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [214] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[127],
+    /* matcher indices */ &kMatcherIndices[133],
   },
   {
     /* [215] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [216] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [217] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [218] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[123],
+    /* matcher indices */ &kMatcherIndices[129],
   },
   {
     /* [219] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [220] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [221] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [222] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[148],
+    /* matcher indices */ &kMatcherIndices[154],
   },
   {
     /* [223] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [224] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [225] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [226] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[149],
+    /* matcher indices */ &kMatcherIndices[155],
   },
   {
     /* [227] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [228] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [229] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [230] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[135],
+    /* matcher indices */ &kMatcherIndices[141],
   },
   {
     /* [231] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [232] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [233] */
     /* usage */ ParameterUsage::kBias,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [234] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[135],
+    /* matcher indices */ &kMatcherIndices[141],
   },
   {
     /* [235] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [236] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [237] */
     /* usage */ ParameterUsage::kOffset,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [238] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[101],
+    /* matcher indices */ &kMatcherIndices[103],
   },
   {
     /* [239] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [240] */
     /* usage */ ParameterUsage::kValue,
-    /* matcher indices */ &kMatcherIndices[39],
+    /* matcher indices */ &kMatcherIndices[81],
   },
   {
     /* [241] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [242] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [243] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [244] */
@@ -2746,7 +2760,7 @@
   {
     /* [246] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[24],
+    /* matcher indices */ &kMatcherIndices[28],
   },
   {
     /* [247] */
@@ -2766,242 +2780,242 @@
   {
     /* [250] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [251] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [252] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [253] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [254] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [255] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [256] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[150],
+    /* matcher indices */ &kMatcherIndices[156],
   },
   {
     /* [257] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [258] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [259] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[14],
+    /* matcher indices */ &kMatcherIndices[24],
   },
   {
     /* [260] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [261] */
     /* usage */ ParameterUsage::kValue,
-    /* matcher indices */ &kMatcherIndices[29],
+    /* matcher indices */ &kMatcherIndices[26],
   },
   {
     /* [262] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[104],
+    /* matcher indices */ &kMatcherIndices[106],
   },
   {
     /* [263] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[75],
+    /* matcher indices */ &kMatcherIndices[119],
   },
   {
     /* [264] */
     /* usage */ ParameterUsage::kValue,
-    /* matcher indices */ &kMatcherIndices[29],
+    /* matcher indices */ &kMatcherIndices[26],
   },
   {
     /* [265] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[92],
+    /* matcher indices */ &kMatcherIndices[94],
   },
   {
     /* [266] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[75],
+    /* matcher indices */ &kMatcherIndices[119],
   },
   {
     /* [267] */
     /* usage */ ParameterUsage::kValue,
-    /* matcher indices */ &kMatcherIndices[39],
+    /* matcher indices */ &kMatcherIndices[81],
   },
   {
     /* [268] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[89],
+    /* matcher indices */ &kMatcherIndices[91],
   },
   {
     /* [269] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [270] */
     /* usage */ ParameterUsage::kValue,
-    /* matcher indices */ &kMatcherIndices[43],
+    /* matcher indices */ &kMatcherIndices[85],
   },
   {
     /* [271] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[83],
+    /* matcher indices */ &kMatcherIndices[87],
   },
   {
     /* [272] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [273] */
     /* usage */ ParameterUsage::kValue,
-    /* matcher indices */ &kMatcherIndices[43],
+    /* matcher indices */ &kMatcherIndices[85],
   },
   {
     /* [274] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[148],
+    /* matcher indices */ &kMatcherIndices[154],
   },
   {
     /* [275] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [276] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [277] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[119],
+    /* matcher indices */ &kMatcherIndices[125],
   },
   {
     /* [278] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [279] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [280] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [281] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [282] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [283] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[73],
+    /* matcher indices */ &kMatcherIndices[79],
   },
   {
     /* [284] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[75],
+    /* matcher indices */ &kMatcherIndices[119],
   },
   {
     /* [285] */
     /* usage */ ParameterUsage::kValue,
-    /* matcher indices */ &kMatcherIndices[43],
+    /* matcher indices */ &kMatcherIndices[85],
   },
   {
     /* [286] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[121],
+    /* matcher indices */ &kMatcherIndices[127],
   },
   {
     /* [287] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [288] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [289] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[125],
+    /* matcher indices */ &kMatcherIndices[131],
   },
   {
     /* [290] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [291] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [292] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[131],
+    /* matcher indices */ &kMatcherIndices[137],
   },
   {
     /* [293] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[75],
+    /* matcher indices */ &kMatcherIndices[119],
   },
   {
     /* [294] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [295] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[133],
+    /* matcher indices */ &kMatcherIndices[139],
   },
   {
     /* [296] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [297] */
     /* usage */ ParameterUsage::kSampleIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [298] */
@@ -3036,92 +3050,92 @@
   {
     /* [304] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[148],
+    /* matcher indices */ &kMatcherIndices[154],
   },
   {
     /* [305] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [306] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [307] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[123],
+    /* matcher indices */ &kMatcherIndices[129],
   },
   {
     /* [308] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [309] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [310] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [311] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [312] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [313] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[64],
+    /* matcher indices */ &kMatcherIndices[67],
   },
   {
     /* [314] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [315] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [316] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[147],
+    /* matcher indices */ &kMatcherIndices[153],
   },
   {
     /* [317] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [318] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [319] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[135],
+    /* matcher indices */ &kMatcherIndices[141],
   },
   {
     /* [320] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [321] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [322] */
@@ -3131,152 +3145,152 @@
   {
     /* [323] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [324] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [325] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[150],
+    /* matcher indices */ &kMatcherIndices[156],
   },
   {
     /* [326] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [327] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [328] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[143],
+    /* matcher indices */ &kMatcherIndices[149],
   },
   {
     /* [329] */
     /* usage */ ParameterUsage::kSampler,
-    /* matcher indices */ &kMatcherIndices[145],
+    /* matcher indices */ &kMatcherIndices[151],
   },
   {
     /* [330] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [331] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[37],
+    /* matcher indices */ &kMatcherIndices[40],
   },
   {
     /* [332] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [333] */
     /* usage */ ParameterUsage::kArrayIndex,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [334] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [335] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [336] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [337] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [338] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [339] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [340] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[107],
+    /* matcher indices */ &kMatcherIndices[109],
   },
   {
     /* [341] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [342] */
     /* usage */ ParameterUsage::kValue,
-    /* matcher indices */ &kMatcherIndices[29],
+    /* matcher indices */ &kMatcherIndices[26],
   },
   {
     /* [343] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [344] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [345] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [346] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[98],
+    /* matcher indices */ &kMatcherIndices[100],
   },
   {
     /* [347] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [348] */
     /* usage */ ParameterUsage::kValue,
-    /* matcher indices */ &kMatcherIndices[39],
+    /* matcher indices */ &kMatcherIndices[81],
   },
   {
     /* [349] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [350] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[5],
+    /* matcher indices */ &kMatcherIndices[6],
   },
   {
     /* [351] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [352] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[77],
+    /* matcher indices */ &kMatcherIndices[20],
   },
   {
     /* [353] */
@@ -3311,42 +3325,42 @@
   {
     /* [359] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [360] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [361] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [362] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [363] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [364] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [365] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [366] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [367] */
@@ -3361,17 +3375,17 @@
   {
     /* [369] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[150],
+    /* matcher indices */ &kMatcherIndices[156],
   },
   {
     /* [370] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [371] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [372] */
@@ -3381,7 +3395,7 @@
   {
     /* [373] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [374] */
@@ -3391,7 +3405,7 @@
   {
     /* [375] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [376] */
@@ -3401,142 +3415,142 @@
   {
     /* [377] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [378] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[86],
+    /* matcher indices */ &kMatcherIndices[16],
   },
   {
     /* [379] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[125],
+    /* matcher indices */ &kMatcherIndices[131],
   },
   {
     /* [380] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [381] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [382] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [383] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [384] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [385] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [386] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [387] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [388] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[16],
+    /* matcher indices */ &kMatcherIndices[115],
   },
   {
     /* [389] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [390] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [391] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [392] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [393] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[70],
+    /* matcher indices */ &kMatcherIndices[73],
   },
   {
     /* [394] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [395] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[67],
+    /* matcher indices */ &kMatcherIndices[70],
   },
   {
     /* [396] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [397] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[61],
+    /* matcher indices */ &kMatcherIndices[64],
   },
   {
     /* [398] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[75],
+    /* matcher indices */ &kMatcherIndices[119],
   },
   {
     /* [399] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [400] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [401] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [402] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [403] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[27],
+    /* matcher indices */ &kMatcherIndices[31],
   },
   {
     /* [404] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[75],
+    /* matcher indices */ &kMatcherIndices[119],
   },
   {
     /* [405] */
@@ -3546,7 +3560,7 @@
   {
     /* [406] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [407] */
@@ -3556,7 +3570,7 @@
   {
     /* [408] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [409] */
@@ -3566,367 +3580,367 @@
   {
     /* [410] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[75],
+    /* matcher indices */ &kMatcherIndices[119],
   },
   {
     /* [411] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[45],
+    /* matcher indices */ &kMatcherIndices[46],
   },
   {
     /* [412] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [413] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[149],
+    /* matcher indices */ &kMatcherIndices[155],
   },
   {
     /* [414] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [415] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[147],
+    /* matcher indices */ &kMatcherIndices[153],
   },
   {
     /* [416] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [417] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[146],
+    /* matcher indices */ &kMatcherIndices[152],
   },
   {
     /* [418] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [419] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[148],
+    /* matcher indices */ &kMatcherIndices[154],
   },
   {
     /* [420] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [421] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[139],
+    /* matcher indices */ &kMatcherIndices[145],
   },
   {
     /* [422] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [423] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[137],
+    /* matcher indices */ &kMatcherIndices[143],
   },
   {
     /* [424] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [425] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[131],
+    /* matcher indices */ &kMatcherIndices[137],
   },
   {
     /* [426] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [427] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[41],
+    /* matcher indices */ &kMatcherIndices[43],
   },
   {
     /* [428] */
     /* usage */ ParameterUsage::kCoords,
-    /* matcher indices */ &kMatcherIndices[113],
+    /* matcher indices */ &kMatcherIndices[117],
   },
   {
     /* [429] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[129],
+    /* matcher indices */ &kMatcherIndices[135],
   },
   {
     /* [430] */
     /* usage */ ParameterUsage::kLevel,
-    /* matcher indices */ &kMatcherIndices[40],
+    /* matcher indices */ &kMatcherIndices[25],
   },
   {
     /* [431] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[125],
+    /* matcher indices */ &kMatcherIndices[131],
   },
   {
     /* [432] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[125],
+    /* matcher indices */ &kMatcherIndices[131],
   },
   {
     /* [433] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[129],
+    /* matcher indices */ &kMatcherIndices[135],
   },
   {
     /* [434] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[121],
+    /* matcher indices */ &kMatcherIndices[127],
   },
   {
     /* [435] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[131],
+    /* matcher indices */ &kMatcherIndices[137],
   },
   {
     /* [436] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[28],
+    /* matcher indices */ &kMatcherIndices[50],
   },
   {
     /* [437] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[137],
+    /* matcher indices */ &kMatcherIndices[143],
   },
   {
     /* [438] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[28],
+    /* matcher indices */ &kMatcherIndices[50],
   },
   {
     /* [439] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[139],
+    /* matcher indices */ &kMatcherIndices[145],
   },
   {
     /* [440] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[28],
+    /* matcher indices */ &kMatcherIndices[50],
   },
   {
     /* [441] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[133],
+    /* matcher indices */ &kMatcherIndices[139],
   },
   {
     /* [442] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[148],
+    /* matcher indices */ &kMatcherIndices[154],
   },
   {
     /* [443] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[28],
+    /* matcher indices */ &kMatcherIndices[50],
   },
   {
     /* [444] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[146],
+    /* matcher indices */ &kMatcherIndices[152],
   },
   {
     /* [445] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[28],
+    /* matcher indices */ &kMatcherIndices[50],
   },
   {
     /* [446] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[147],
+    /* matcher indices */ &kMatcherIndices[153],
   },
   {
     /* [447] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [448] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[149],
+    /* matcher indices */ &kMatcherIndices[155],
   },
   {
     /* [449] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [450] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[34],
+    /* matcher indices */ &kMatcherIndices[37],
   },
   {
     /* [451] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[31],
+    /* matcher indices */ &kMatcherIndices[34],
   },
   {
     /* [452] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[21],
+    /* matcher indices */ &kMatcherIndices[61],
   },
   {
     /* [453] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[18],
+    /* matcher indices */ &kMatcherIndices[76],
   },
   {
     /* [454] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[150],
+    /* matcher indices */ &kMatcherIndices[156],
   },
   {
     /* [455] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[129],
+    /* matcher indices */ &kMatcherIndices[135],
   },
   {
     /* [456] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[139],
+    /* matcher indices */ &kMatcherIndices[145],
   },
   {
     /* [457] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[146],
+    /* matcher indices */ &kMatcherIndices[152],
   },
   {
     /* [458] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[149],
+    /* matcher indices */ &kMatcherIndices[155],
   },
   {
     /* [459] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[21],
+    /* matcher indices */ &kMatcherIndices[61],
   },
   {
     /* [460] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [461] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[129],
+    /* matcher indices */ &kMatcherIndices[135],
   },
   {
     /* [462] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[131],
+    /* matcher indices */ &kMatcherIndices[137],
   },
   {
     /* [463] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[137],
+    /* matcher indices */ &kMatcherIndices[143],
   },
   {
     /* [464] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[139],
+    /* matcher indices */ &kMatcherIndices[145],
   },
   {
     /* [465] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[148],
+    /* matcher indices */ &kMatcherIndices[154],
   },
   {
     /* [466] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[146],
+    /* matcher indices */ &kMatcherIndices[152],
   },
   {
     /* [467] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[147],
+    /* matcher indices */ &kMatcherIndices[153],
   },
   {
     /* [468] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[149],
+    /* matcher indices */ &kMatcherIndices[155],
   },
   {
     /* [469] */
     /* usage */ ParameterUsage::kTexture,
-    /* matcher indices */ &kMatcherIndices[133],
+    /* matcher indices */ &kMatcherIndices[139],
   },
   {
     /* [470] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [471] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [472] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [473] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [474] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [475] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [476] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [477] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [478] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [479] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [480] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [481] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [482] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [483] */
@@ -3941,247 +3955,247 @@
   {
     /* [485] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[29],
+    /* matcher indices */ &kMatcherIndices[26],
   },
   {
     /* [486] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[29],
+    /* matcher indices */ &kMatcherIndices[26],
   },
   {
     /* [487] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [488] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [489] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[115],
+    /* matcher indices */ &kMatcherIndices[121],
   },
   {
     /* [490] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [491] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [492] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [493] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [494] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [495] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [496] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [497] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [498] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [499] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [500] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [501] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [502] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [503] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [504] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [505] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [506] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [507] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [508] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [509] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [510] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [511] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [512] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [513] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [514] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [515] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [516] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [517] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [518] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [519] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [520] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [521] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [522] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [523] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [524] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [525] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [526] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [527] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [528] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [529] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [530] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [531] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [532] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [533] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[10],
+    /* matcher indices */ &kMatcherIndices[12],
   },
   {
     /* [534] */
@@ -4196,77 +4210,77 @@
   {
     /* [536] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [537] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [538] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [539] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [540] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [541] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [542] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [543] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [544] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [545] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [546] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[141],
+    /* matcher indices */ &kMatcherIndices[147],
   },
   {
     /* [547] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[24],
+    /* matcher indices */ &kMatcherIndices[28],
   },
   {
     /* [548] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[24],
+    /* matcher indices */ &kMatcherIndices[28],
   },
   {
     /* [549] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[7],
+    /* matcher indices */ &kMatcherIndices[8],
   },
   {
     /* [550] */
     /* usage */ ParameterUsage::kNone,
-    /* matcher indices */ &kMatcherIndices[9],
+    /* matcher indices */ &kMatcherIndices[5],
   },
   {
     /* [551] */
@@ -4306,24 +4320,29 @@
 constexpr OpenNumberInfo kOpenNumbers[] = {
   {
     /* [0] */
-    /* name */ "F",
-    /* matcher index */ kNoMatcher,
-  },
-  {
-    /* [1] */
-    /* name */ "A",
-    /* matcher index */ 5,
-  },
-  {
-    /* [2] */
     /* name */ "N",
     /* matcher index */ kNoMatcher,
   },
   {
-    /* [3] */
+    /* [1] */
     /* name */ "S",
     /* matcher index */ kNoMatcher,
   },
+  {
+    /* [2] */
+    /* name */ "A",
+    /* matcher index */ kNoMatcher,
+  },
+  {
+    /* [3] */
+    /* name */ "F",
+    /* matcher index */ kNoMatcher,
+  },
+  {
+    /* [4] */
+    /* name */ "A",
+    /* matcher index */ 6,
+  },
 };
 
 constexpr OverloadInfo kOverloads[] = {
@@ -4333,9 +4352,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[434],
-    /* return matcher indices */ &kMatcherIndices[40],
+    /* return matcher indices */ &kMatcherIndices[25],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4344,9 +4363,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[432],
-    /* return matcher indices */ &kMatcherIndices[113],
+    /* return matcher indices */ &kMatcherIndices[117],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4355,9 +4374,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[379],
-    /* return matcher indices */ &kMatcherIndices[113],
+    /* return matcher indices */ &kMatcherIndices[117],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4366,9 +4385,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[433],
-    /* return matcher indices */ &kMatcherIndices[113],
+    /* return matcher indices */ &kMatcherIndices[117],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4377,9 +4396,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[429],
-    /* return matcher indices */ &kMatcherIndices[113],
+    /* return matcher indices */ &kMatcherIndices[117],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4388,9 +4407,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[435],
-    /* return matcher indices */ &kMatcherIndices[75],
+    /* return matcher indices */ &kMatcherIndices[119],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4399,9 +4418,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[425],
-    /* return matcher indices */ &kMatcherIndices[75],
+    /* return matcher indices */ &kMatcherIndices[119],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4410,9 +4429,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[437],
-    /* return matcher indices */ &kMatcherIndices[75],
+    /* return matcher indices */ &kMatcherIndices[119],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4421,9 +4440,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[423],
-    /* return matcher indices */ &kMatcherIndices[75],
+    /* return matcher indices */ &kMatcherIndices[119],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4432,9 +4451,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[439],
-    /* return matcher indices */ &kMatcherIndices[75],
+    /* return matcher indices */ &kMatcherIndices[119],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4443,9 +4462,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[421],
-    /* return matcher indices */ &kMatcherIndices[75],
+    /* return matcher indices */ &kMatcherIndices[119],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4454,9 +4473,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[441],
-    /* return matcher indices */ &kMatcherIndices[113],
+    /* return matcher indices */ &kMatcherIndices[117],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4465,9 +4484,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[442],
-    /* return matcher indices */ &kMatcherIndices[113],
+    /* return matcher indices */ &kMatcherIndices[117],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4476,9 +4495,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[419],
-    /* return matcher indices */ &kMatcherIndices[113],
+    /* return matcher indices */ &kMatcherIndices[117],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4487,9 +4506,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[444],
-    /* return matcher indices */ &kMatcherIndices[113],
+    /* return matcher indices */ &kMatcherIndices[117],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4498,9 +4517,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[417],
-    /* return matcher indices */ &kMatcherIndices[113],
+    /* return matcher indices */ &kMatcherIndices[117],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4509,9 +4528,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[446],
-    /* return matcher indices */ &kMatcherIndices[75],
+    /* return matcher indices */ &kMatcherIndices[119],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4520,9 +4539,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[415],
-    /* return matcher indices */ &kMatcherIndices[75],
+    /* return matcher indices */ &kMatcherIndices[119],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4531,9 +4550,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[448],
-    /* return matcher indices */ &kMatcherIndices[75],
+    /* return matcher indices */ &kMatcherIndices[119],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4542,9 +4561,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[413],
-    /* return matcher indices */ &kMatcherIndices[75],
+    /* return matcher indices */ &kMatcherIndices[119],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4553,9 +4572,9 @@
     /* num open types */ 0,
     /* num open numbers */ 2,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[0],
+    /* open numbers */ &kOpenNumbers[3],
     /* parameters */ &kParameters[450],
-    /* return matcher indices */ &kMatcherIndices[40],
+    /* return matcher indices */ &kMatcherIndices[25],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4564,9 +4583,9 @@
     /* num open types */ 0,
     /* num open numbers */ 2,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[0],
+    /* open numbers */ &kOpenNumbers[3],
     /* parameters */ &kParameters[451],
-    /* return matcher indices */ &kMatcherIndices[113],
+    /* return matcher indices */ &kMatcherIndices[117],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4575,9 +4594,9 @@
     /* num open types */ 0,
     /* num open numbers */ 2,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[0],
+    /* open numbers */ &kOpenNumbers[3],
     /* parameters */ &kParameters[452],
-    /* return matcher indices */ &kMatcherIndices[113],
+    /* return matcher indices */ &kMatcherIndices[117],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4586,9 +4605,9 @@
     /* num open types */ 0,
     /* num open numbers */ 2,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[0],
+    /* open numbers */ &kOpenNumbers[3],
     /* parameters */ &kParameters[453],
-    /* return matcher indices */ &kMatcherIndices[75],
+    /* return matcher indices */ &kMatcherIndices[119],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4597,9 +4616,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[454],
-    /* return matcher indices */ &kMatcherIndices[113],
+    /* return matcher indices */ &kMatcherIndices[117],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4608,9 +4627,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[286],
-    /* return matcher indices */ &kMatcherIndices[47],
+    /* return matcher indices */ &kMatcherIndices[89],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4619,9 +4638,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[289],
-    /* return matcher indices */ &kMatcherIndices[47],
+    /* return matcher indices */ &kMatcherIndices[89],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4630,9 +4649,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[150],
-    /* return matcher indices */ &kMatcherIndices[47],
+    /* return matcher indices */ &kMatcherIndices[89],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4641,9 +4660,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[292],
-    /* return matcher indices */ &kMatcherIndices[47],
+    /* return matcher indices */ &kMatcherIndices[89],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4652,9 +4671,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[295],
-    /* return matcher indices */ &kMatcherIndices[47],
+    /* return matcher indices */ &kMatcherIndices[89],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4663,9 +4682,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[304],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4674,9 +4693,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[194],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4685,9 +4704,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[393],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4696,9 +4715,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[395],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4707,9 +4726,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[313],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4718,9 +4737,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[397],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4729,9 +4748,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[405],
-    /* return matcher indices */ &kMatcherIndices[39],
+    /* return matcher indices */ &kMatcherIndices[81],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4740,9 +4759,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[407],
-    /* return matcher indices */ &kMatcherIndices[39],
+    /* return matcher indices */ &kMatcherIndices[81],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4751,9 +4770,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[322],
-    /* return matcher indices */ &kMatcherIndices[39],
+    /* return matcher indices */ &kMatcherIndices[81],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4762,9 +4781,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[409],
-    /* return matcher indices */ &kMatcherIndices[39],
+    /* return matcher indices */ &kMatcherIndices[81],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4773,9 +4792,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[411],
-    /* return matcher indices */ &kMatcherIndices[43],
+    /* return matcher indices */ &kMatcherIndices[85],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4784,9 +4803,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[427],
-    /* return matcher indices */ &kMatcherIndices[43],
+    /* return matcher indices */ &kMatcherIndices[85],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4795,9 +4814,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[331],
-    /* return matcher indices */ &kMatcherIndices[43],
+    /* return matcher indices */ &kMatcherIndices[85],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4806,9 +4825,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[403],
-    /* return matcher indices */ &kMatcherIndices[43],
+    /* return matcher indices */ &kMatcherIndices[85],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4817,9 +4836,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[369],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -4828,9 +4847,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[328],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -4839,9 +4858,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[319],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -4850,9 +4869,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[234],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -4861,9 +4880,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[214],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -4872,9 +4891,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[60],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -4883,9 +4902,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[307],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -4894,9 +4913,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[170],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -4905,9 +4924,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[277],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -4916,9 +4935,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[154],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -4927,9 +4946,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[274],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -4938,9 +4957,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[166],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -4949,9 +4968,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[190],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -4960,9 +4979,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[85],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -4971,9 +4990,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[316],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -4982,9 +5001,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[226],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -4993,9 +5012,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[325],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5004,9 +5023,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[174],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5015,9 +5034,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[100],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5026,9 +5045,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[90],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5037,9 +5056,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[43],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5048,9 +5067,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[218],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5059,9 +5078,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[135],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5070,9 +5089,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[202],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5081,9 +5100,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[95],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5092,9 +5111,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[222],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5103,9 +5122,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[125],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5114,9 +5133,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[65],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5125,9 +5144,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[37],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5136,9 +5155,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[198],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5147,9 +5166,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[75],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5158,9 +5177,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[256],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5169,7 +5188,7 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[340],
     /* return matcher indices */ nullptr,
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -5180,7 +5199,7 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[259],
     /* return matcher indices */ nullptr,
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -5191,7 +5210,7 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[178],
     /* return matcher indices */ nullptr,
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -5202,7 +5221,7 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[262],
     /* return matcher indices */ nullptr,
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -5213,7 +5232,7 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[238],
     /* return matcher indices */ nullptr,
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -5224,7 +5243,7 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[346],
     /* return matcher indices */ nullptr,
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -5235,7 +5254,7 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[162],
     /* return matcher indices */ nullptr,
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -5246,7 +5265,7 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[265],
     /* return matcher indices */ nullptr,
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -5257,7 +5276,7 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[268],
     /* return matcher indices */ nullptr,
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -5268,7 +5287,7 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[271],
     /* return matcher indices */ nullptr,
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -5279,7 +5298,7 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[158],
     /* return matcher indices */ nullptr,
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -5290,7 +5309,7 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[283],
     /* return matcher indices */ nullptr,
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -5301,9 +5320,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[431],
-    /* return matcher indices */ &kMatcherIndices[40],
+    /* return matcher indices */ &kMatcherIndices[25],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5312,9 +5331,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[461],
-    /* return matcher indices */ &kMatcherIndices[40],
+    /* return matcher indices */ &kMatcherIndices[25],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5323,9 +5342,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[462],
-    /* return matcher indices */ &kMatcherIndices[40],
+    /* return matcher indices */ &kMatcherIndices[25],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5334,9 +5353,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[463],
-    /* return matcher indices */ &kMatcherIndices[40],
+    /* return matcher indices */ &kMatcherIndices[25],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5345,9 +5364,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[464],
-    /* return matcher indices */ &kMatcherIndices[40],
+    /* return matcher indices */ &kMatcherIndices[25],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5356,9 +5375,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[465],
-    /* return matcher indices */ &kMatcherIndices[40],
+    /* return matcher indices */ &kMatcherIndices[25],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5367,9 +5386,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[466],
-    /* return matcher indices */ &kMatcherIndices[40],
+    /* return matcher indices */ &kMatcherIndices[25],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5378,9 +5397,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[467],
-    /* return matcher indices */ &kMatcherIndices[40],
+    /* return matcher indices */ &kMatcherIndices[25],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5389,9 +5408,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[468],
-    /* return matcher indices */ &kMatcherIndices[40],
+    /* return matcher indices */ &kMatcherIndices[25],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5400,9 +5419,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[230],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5411,9 +5430,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[105],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5422,9 +5441,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[130],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5433,9 +5452,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[49],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5444,9 +5463,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[210],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5455,9 +5474,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[80],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5466,9 +5485,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[186],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5477,9 +5496,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[120],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5488,9 +5507,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[115],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5499,9 +5518,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[7],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5510,9 +5529,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[19],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5521,9 +5540,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[0],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5532,9 +5551,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[145],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5543,9 +5562,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[31],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5554,9 +5573,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[140],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5565,9 +5584,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[13],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5576,9 +5595,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[206],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5587,9 +5606,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[70],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5598,9 +5617,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[55],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5609,9 +5628,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[25],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5620,9 +5639,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[182],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5631,9 +5650,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[110],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5642,9 +5661,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[455],
-    /* return matcher indices */ &kMatcherIndices[40],
+    /* return matcher indices */ &kMatcherIndices[25],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5653,9 +5672,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[456],
-    /* return matcher indices */ &kMatcherIndices[40],
+    /* return matcher indices */ &kMatcherIndices[25],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5664,9 +5683,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[457],
-    /* return matcher indices */ &kMatcherIndices[40],
+    /* return matcher indices */ &kMatcherIndices[25],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5675,9 +5694,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[458],
-    /* return matcher indices */ &kMatcherIndices[40],
+    /* return matcher indices */ &kMatcherIndices[25],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5686,9 +5705,9 @@
     /* num open types */ 0,
     /* num open numbers */ 2,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[0],
+    /* open numbers */ &kOpenNumbers[3],
     /* parameters */ &kParameters[459],
-    /* return matcher indices */ &kMatcherIndices[40],
+    /* return matcher indices */ &kMatcherIndices[25],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5697,9 +5716,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[391],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5708,9 +5727,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[389],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5719,9 +5738,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[537],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5730,9 +5749,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[536],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5741,7 +5760,7 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[0],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[535],
     /* return matcher indices */ &kMatcherIndices[3],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -5752,7 +5771,7 @@
     /* num open types */ 1,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[0],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[534],
     /* return matcher indices */ &kMatcherIndices[2],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -5763,9 +5782,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[539],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5774,9 +5793,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[538],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5785,9 +5804,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[399],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5796,9 +5815,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[401],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5807,9 +5826,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[385],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5818,9 +5837,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[383],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5829,7 +5848,7 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[301],
     /* return matcher indices */ &kMatcherIndices[3],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -5840,7 +5859,7 @@
     /* num open types */ 1,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[298],
     /* return matcher indices */ &kMatcherIndices[2],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -5851,9 +5870,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[532],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5862,9 +5881,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[531],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5873,9 +5892,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[530],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5884,9 +5903,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[529],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5895,9 +5914,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[528],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5906,9 +5925,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[527],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5917,9 +5936,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[526],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5928,9 +5947,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[525],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5939,9 +5958,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[524],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5950,9 +5969,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[523],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5961,9 +5980,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[522],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5972,9 +5991,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[521],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
   },
   {
@@ -5983,9 +6002,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[520],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -5994,9 +6013,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[519],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6005,9 +6024,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[518],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6016,9 +6035,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[517],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6027,9 +6046,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[253],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6038,9 +6057,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[250],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6049,9 +6068,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[516],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6060,9 +6079,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[515],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6071,9 +6090,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[280],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6082,9 +6101,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[241],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6093,9 +6112,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[514],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6104,31 +6123,31 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[513],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
     /* [162] */
     /* num parameters */ 2,
     /* num open types */ 1,
-    /* num open numbers */ 1,
+    /* num open numbers */ 2,
     /* open types */ &kOpenTypes[0],
-    /* open numbers */ &kOpenNumbers[3],
+    /* open numbers */ &kOpenNumbers[1],
     /* parameters */ &kParameters[377],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
     /* [163] */
     /* num parameters */ 2,
     /* num open types */ 1,
-    /* num open numbers */ 2,
+    /* num open numbers */ 3,
     /* open types */ &kOpenTypes[0],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[375],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6137,9 +6156,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[512],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6148,9 +6167,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[511],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6159,9 +6178,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[510],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6170,9 +6189,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[509],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6181,9 +6200,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[508],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6192,9 +6211,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[507],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6203,9 +6222,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[506],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6214,9 +6233,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[505],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6225,7 +6244,7 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[504],
     /* return matcher indices */ &kMatcherIndices[1],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -6236,9 +6255,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[503],
-    /* return matcher indices */ &kMatcherIndices[24],
+    /* return matcher indices */ &kMatcherIndices[28],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6247,7 +6266,7 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[502],
     /* return matcher indices */ &kMatcherIndices[1],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -6258,9 +6277,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[501],
-    /* return matcher indices */ &kMatcherIndices[24],
+    /* return matcher indices */ &kMatcherIndices[28],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6269,7 +6288,7 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[500],
     /* return matcher indices */ &kMatcherIndices[1],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -6280,9 +6299,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[499],
-    /* return matcher indices */ &kMatcherIndices[24],
+    /* return matcher indices */ &kMatcherIndices[28],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6291,7 +6310,7 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[498],
     /* return matcher indices */ &kMatcherIndices[1],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -6302,9 +6321,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[497],
-    /* return matcher indices */ &kMatcherIndices[24],
+    /* return matcher indices */ &kMatcherIndices[28],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6313,9 +6332,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[0],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[373],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6324,9 +6343,9 @@
     /* num open types */ 1,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[0],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[371],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6335,9 +6354,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[496],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6346,9 +6365,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[495],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6357,9 +6376,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[494],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6368,9 +6387,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[493],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6379,9 +6398,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[492],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6390,9 +6409,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[491],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6401,9 +6420,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[541],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6412,9 +6431,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[540],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6423,7 +6442,7 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[355],
     /* return matcher indices */ &kMatcherIndices[3],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -6434,7 +6453,7 @@
     /* num open types */ 1,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[353],
     /* return matcher indices */ &kMatcherIndices[2],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -6445,9 +6464,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[334],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6456,31 +6475,31 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[337],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
     /* [194] */
     /* num parameters */ 2,
     /* num open types */ 0,
-    /* num open numbers */ 1,
+    /* num open numbers */ 2,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[3],
+    /* open numbers */ &kOpenNumbers[1],
     /* parameters */ &kParameters[351],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
     /* [195] */
     /* num parameters */ 2,
     /* num open types */ 0,
-    /* num open numbers */ 2,
+    /* num open numbers */ 3,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[349],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6489,9 +6508,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[543],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6500,9 +6519,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[542],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6511,9 +6530,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[474],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6522,9 +6541,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[473],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6533,9 +6552,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[545],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6544,9 +6563,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[544],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6555,9 +6574,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[449],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6566,9 +6585,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[447],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6577,9 +6596,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[470],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6588,9 +6607,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[460],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6599,9 +6618,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[472],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6610,9 +6629,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[471],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6621,9 +6640,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[359],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6632,9 +6651,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[361],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6643,9 +6662,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[363],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6654,9 +6673,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[365],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6665,9 +6684,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[550],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6676,9 +6695,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[549],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6687,9 +6706,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[482],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6698,9 +6717,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[481],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6709,7 +6728,7 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[3],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[247],
     /* return matcher indices */ &kMatcherIndices[3],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -6720,7 +6739,7 @@
     /* num open types */ 1,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[3],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[244],
     /* return matcher indices */ &kMatcherIndices[2],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -6731,9 +6750,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[480],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6742,9 +6761,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[479],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6753,9 +6772,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[478],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6764,9 +6783,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[477],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6775,9 +6794,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[476],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6786,9 +6805,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[475],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6797,9 +6816,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[310],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6808,9 +6827,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[343],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6819,7 +6838,7 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[0],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[484],
     /* return matcher indices */ &kMatcherIndices[3],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -6830,7 +6849,7 @@
     /* num open types */ 1,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[0],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[483],
     /* return matcher indices */ &kMatcherIndices[2],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -6841,7 +6860,7 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[367],
     /* return matcher indices */ &kMatcherIndices[3],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -6852,7 +6871,7 @@
     /* num open types */ 1,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[357],
     /* return matcher indices */ &kMatcherIndices[2],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -6863,7 +6882,7 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[552],
     /* return matcher indices */ &kMatcherIndices[3],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -6874,7 +6893,7 @@
     /* num open types */ 1,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[551],
     /* return matcher indices */ &kMatcherIndices[2],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -6885,9 +6904,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[488],
-    /* return matcher indices */ &kMatcherIndices[28],
+    /* return matcher indices */ &kMatcherIndices[50],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6896,9 +6915,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[486],
-    /* return matcher indices */ &kMatcherIndices[28],
+    /* return matcher indices */ &kMatcherIndices[50],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6907,9 +6926,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[487],
-    /* return matcher indices */ &kMatcherIndices[28],
+    /* return matcher indices */ &kMatcherIndices[50],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6918,9 +6937,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[445],
-    /* return matcher indices */ &kMatcherIndices[115],
+    /* return matcher indices */ &kMatcherIndices[121],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6929,9 +6948,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[443],
-    /* return matcher indices */ &kMatcherIndices[115],
+    /* return matcher indices */ &kMatcherIndices[121],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6940,9 +6959,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[440],
-    /* return matcher indices */ &kMatcherIndices[115],
+    /* return matcher indices */ &kMatcherIndices[121],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6951,9 +6970,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[438],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6962,9 +6981,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[436],
-    /* return matcher indices */ &kMatcherIndices[29],
+    /* return matcher indices */ &kMatcherIndices[26],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6973,7 +6992,7 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[553],
     /* return matcher indices */ nullptr,
     /* supported_stages */ PipelineStageSet(PipelineStage::kCompute),
@@ -6984,9 +7003,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[485],
-    /* return matcher indices */ &kMatcherIndices[28],
+    /* return matcher indices */ &kMatcherIndices[50],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -6995,9 +7014,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[489],
-    /* return matcher indices */ &kMatcherIndices[28],
+    /* return matcher indices */ &kMatcherIndices[50],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -7006,9 +7025,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[490],
-    /* return matcher indices */ &kMatcherIndices[7],
+    /* return matcher indices */ &kMatcherIndices[8],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -7017,9 +7036,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[1],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[469],
-    /* return matcher indices */ &kMatcherIndices[40],
+    /* return matcher indices */ &kMatcherIndices[25],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -7028,9 +7047,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[381],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -7039,9 +7058,9 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[533],
-    /* return matcher indices */ &kMatcherIndices[9],
+    /* return matcher indices */ &kMatcherIndices[5],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -7050,9 +7069,9 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[387],
-    /* return matcher indices */ &kMatcherIndices[16],
+    /* return matcher indices */ &kMatcherIndices[115],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -7061,9 +7080,9 @@
     /* num open types */ 1,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[2],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[546],
-    /* return matcher indices */ &kMatcherIndices[28],
+    /* return matcher indices */ &kMatcherIndices[50],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
   },
   {
@@ -7072,7 +7091,7 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[547],
     /* return matcher indices */ &kMatcherIndices[1],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -7083,7 +7102,7 @@
     /* num open types */ 0,
     /* num open numbers */ 1,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[2],
+    /* open numbers */ &kOpenNumbers[0],
     /* parameters */ &kParameters[548],
     /* return matcher indices */ &kMatcherIndices[1],
     /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
@@ -7094,7 +7113,7 @@
     /* num open types */ 0,
     /* num open numbers */ 0,
     /* open types */ &kOpenTypes[4],
-    /* open numbers */ &kOpenNumbers[4],
+    /* open numbers */ &kOpenNumbers[5],
     /* parameters */ &kParameters[553],
     /* return matcher indices */ nullptr,
     /* supported_stages */ PipelineStageSet(PipelineStage::kCompute),
@@ -7301,8 +7320,8 @@
   },
   {
     /* [29] */
-    /* fn frexp<T : iu32, S : storage_class>(f32, ptr<S, T>) -> f32 */
-    /* fn frexp<N : num, T : iu32, S : storage_class>(vec<N, f32>, ptr<S, vec<N, T>>) -> vec<N, f32> */
+    /* fn frexp<T : iu32, S : storage_class, A : access>(f32, ptr<S, T, A>) -> f32 */
+    /* fn frexp<N : num, T : iu32, S : storage_class, A : access>(vec<N, f32>, ptr<S, vec<N, T>, A>) -> vec<N, f32> */
     /* num overloads */ 2,
     /* overloads */ &kOverloads[162],
   },
@@ -7413,8 +7432,8 @@
   },
   {
     /* [45] */
-    /* fn modf<S : storage_class>(f32, ptr<S, f32>) -> f32 */
-    /* fn modf<N : num, S : storage_class>(vec<N, f32>, ptr<S, vec<N, f32>>) -> vec<N, f32> */
+    /* fn modf<S : storage_class, A : access>(f32, ptr<S, f32, A>) -> f32 */
+    /* fn modf<N : num, S : storage_class, A : access>(vec<N, f32>, ptr<S, vec<N, f32>, A>) -> vec<N, f32> */
     /* num overloads */ 2,
     /* overloads */ &kOverloads[194],
   },
diff --git a/src/intrinsic_table_test.cc b/src/intrinsic_table_test.cc
index f6b9949..829c415 100644
--- a/src/intrinsic_table_test.cc
+++ b/src/intrinsic_table_test.cc
@@ -196,7 +196,8 @@
 
 TEST_F(IntrinsicTableTest, MatchPointer) {
   auto* f32 = create<sem::F32>();
-  auto* ptr = create<sem::Pointer>(f32, ast::StorageClass::kNone);
+  auto* ptr = create<sem::Pointer>(f32, ast::StorageClass::kFunction,
+                                   ast::Access::kReadWrite);
   auto* result = table->Lookup(IntrinsicType::kModf, {f32, ptr}, Source{});
   ASSERT_NE(result, nullptr) << Diagnostics().str();
   ASSERT_EQ(Diagnostics().str(), "");
@@ -386,9 +387,11 @@
 
 TEST_F(IntrinsicTableTest, ImplicitLoadOnReference) {
   auto* f32 = create<sem::F32>();
-  auto* result = table->Lookup(
-      IntrinsicType::kCos,
-      {create<sem::Reference>(f32, ast::StorageClass::kNone)}, Source{});
+  auto* result =
+      table->Lookup(IntrinsicType::kCos,
+                    {create<sem::Reference>(f32, ast::StorageClass::kFunction,
+                                            ast::Access::kReadWrite)},
+                    Source{});
   ASSERT_NE(result, nullptr) << Diagnostics().str();
   ASSERT_EQ(Diagnostics().str(), "");
   EXPECT_THAT(result->Type(), IntrinsicType::kCos);
diff --git a/src/intrinsics.def b/src/intrinsics.def
index 955b33f..04089a9 100644
--- a/src/intrinsics.def
+++ b/src/intrinsics.def
@@ -74,7 +74,7 @@
 type vec4<T>
 [[display("vec{N}<{T}>")]]     type vec<N: num, T>
 [[display("mat{N}x{M}<{T}>")]] type mat<N: num, M: num, T>
-[[display("ptr<{T}>")]]        type ptr<S: storage_class, T> // TODO(crbug.com/tint/846): Add access control
+[[display("ptr<{T}>")]]        type ptr<S: storage_class, T, A: access>
 type array<T>
 type sampler
 type sampler_comparison
@@ -305,8 +305,8 @@
 fn fma<N: num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32>
 fn fract(f32) -> f32
 fn fract<N: num>(vec<N, f32>) -> vec<N, f32>
-fn frexp<T: iu32, S: storage_class>(f32, ptr<S, T>) -> f32
-fn frexp<N: num, T: iu32, S: storage_class>(vec<N, f32>, ptr<S, vec<N, T>>) -> vec<N, f32>
+fn frexp<T: iu32, S: storage_class, A: access>(f32, ptr<S, T, A>) -> f32
+fn frexp<N: num, T: iu32, S: storage_class, A: access>(vec<N, f32>, ptr<S, vec<N, T>, A>) -> vec<N, f32>
 fn fwidth(f32) -> f32
 fn fwidth<N: num>(vec<N, f32>) -> vec<N, f32>
 fn fwidthCoarse(f32) -> f32
@@ -337,8 +337,8 @@
 fn min<N: num, T: fiu32>(vec<N, T>, vec<N, T>) -> vec<N, T>
 fn mix(f32, f32, f32) -> f32
 fn mix<N: num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32>
-fn modf<S: storage_class>(f32, ptr<S, f32>) -> f32
-fn modf<N: num, S: storage_class>(vec<N, f32>, ptr<S, vec<N, f32>>) -> vec<N, f32>
+fn modf<S: storage_class, A: access>(f32, ptr<S, f32, A>) -> f32
+fn modf<N: num, S: storage_class, A: access>(vec<N, f32>, ptr<S, vec<N, f32>, A>) -> vec<N, f32>
 fn normalize<N: num>(vec<N, f32>) -> vec<N, f32>
 fn pack2x16float(vec2<f32>) -> u32
 fn pack2x16snorm(vec2<f32>) -> u32
diff --git a/src/program_builder.h b/src/program_builder.h
index 371ab4d..55995b5 100644
--- a/src/program_builder.h
+++ b/src/program_builder.h
@@ -712,29 +712,35 @@
 
     /// @param type the type of the pointer
     /// @param storage_class the storage class of the pointer
+    /// @param access the optional access control of the pointer
     /// @return the pointer to `type` with the given ast::StorageClass
     ast::Pointer* pointer(ast::Type* type,
-                          ast::StorageClass storage_class) const {
+                          ast::StorageClass storage_class,
+                          ast::Access access = ast::Access::kUndefined) const {
       type = MaybeCreateTypename(type);
-      return builder->create<ast::Pointer>(type, storage_class);
+      return builder->create<ast::Pointer>(type, storage_class, access);
     }
 
     /// @param source the Source of the node
     /// @param type the type of the pointer
     /// @param storage_class the storage class of the pointer
+    /// @param access the optional access control of the pointer
     /// @return the pointer to `type` with the given ast::StorageClass
     ast::Pointer* pointer(const Source& source,
                           ast::Type* type,
-                          ast::StorageClass storage_class) const {
+                          ast::StorageClass storage_class,
+                          ast::Access access = ast::Access::kUndefined) const {
       type = MaybeCreateTypename(type);
-      return builder->create<ast::Pointer>(source, type, storage_class);
+      return builder->create<ast::Pointer>(source, type, storage_class, access);
     }
 
     /// @param storage_class the storage class of the pointer
+    /// @param access the optional access control of the pointer
     /// @return the pointer to type `T` with the given ast::StorageClass.
     template <typename T>
-    ast::Pointer* pointer(ast::StorageClass storage_class) const {
-      return pointer(Of<T>(), storage_class);
+    ast::Pointer* pointer(ast::StorageClass storage_class,
+                          ast::Access access = ast::Access::kUndefined) const {
+      return pointer(Of<T>(), storage_class, access);
     }
 
     /// @param kind the kind of sampler
diff --git a/src/reader/wgsl/parser_impl.cc b/src/reader/wgsl/parser_impl.cc
index a45fe37..6d625fd 100644
--- a/src/reader/wgsl/parser_impl.cc
+++ b/src/reader/wgsl/parser_impl.cc
@@ -971,7 +971,7 @@
   if (ident.value == kReadWriteAccess)
     return {ast::Access::kReadWrite, ident.source};
 
-  return add_error(ident.source, "invalid value for access decoration");
+  return add_error(ident.source, "invalid value for access control");
 }
 
 // variable_qualifier
@@ -1045,7 +1045,7 @@
 //   | VEC2 LESS_THAN type_decl GREATER_THAN
 //   | VEC3 LESS_THAN type_decl GREATER_THAN
 //   | VEC4 LESS_THAN type_decl GREATER_THAN
-//   | PTR LESS_THAN storage_class, type_decl GREATER_THAN
+//   | PTR LESS_THAN storage_class, type_decl (COMMA access_mode)? GREATER_THAN
 //   | array_decoration_list* ARRAY LESS_THAN type_decl COMMA
 //          INT_LITERAL GREATER_THAN
 //   | array_decoration_list* ARRAY LESS_THAN type_decl
@@ -1142,20 +1142,32 @@
 Expect<ast::Type*> ParserImpl::expect_type_decl_pointer(Token t) {
   const char* use = "ptr declaration";
 
-  ast::StorageClass storage_class = ast::StorageClass::kNone;
+  auto storage_class = ast::StorageClass::kNone;
+  auto access = ast::Access::kUndefined;
 
   auto subtype = expect_lt_gt_block(use, [&]() -> Expect<ast::Type*> {
     auto sc = expect_storage_class(use);
-    if (sc.errored)
+    if (sc.errored) {
       return Failure::kErrored;
+    }
     storage_class = sc.value;
 
-    if (!expect(use, Token::Type::kComma))
+    if (!expect(use, Token::Type::kComma)) {
       return Failure::kErrored;
+    }
 
     auto type = expect_type(use);
-    if (type.errored)
+    if (type.errored) {
       return Failure::kErrored;
+    }
+
+    if (match(Token::Type::kComma)) {
+      auto ac = expect_access("access control");
+      if (ac.errored) {
+        return Failure::kErrored;
+      }
+      access = ac.value;
+    }
 
     return type.value;
   });
@@ -1165,7 +1177,7 @@
   }
 
   return builder_.ty.pointer(make_source_range_from(t.source()), subtype.value,
-                             storage_class);
+                             storage_class, access);
 }
 
 Expect<ast::Type*> ParserImpl::expect_type_decl_vector(Token t) {
diff --git a/src/reader/wgsl/parser_impl_texture_sampler_types_test.cc b/src/reader/wgsl/parser_impl_texture_sampler_types_test.cc
index 76a0528..b36169a 100644
--- a/src/reader/wgsl/parser_impl_texture_sampler_types_test.cc
+++ b/src/reader/wgsl/parser_impl_texture_sampler_types_test.cc
@@ -314,7 +314,7 @@
   EXPECT_EQ(t.value, nullptr);
   EXPECT_FALSE(t.matched);
   EXPECT_TRUE(t.errored);
-  EXPECT_EQ(p->error(), "1:30: invalid value for access decoration");
+  EXPECT_EQ(p->error(), "1:30: invalid value for access control");
 }
 
 TEST_F(ParserImplTest, TextureSamplerTypes_StorageTexture_MissingType) {
diff --git a/src/reader/wgsl/parser_impl_type_decl_test.cc b/src/reader/wgsl/parser_impl_type_decl_test.cc
index 295106f..fa44edf 100644
--- a/src/reader/wgsl/parser_impl_type_decl_test.cc
+++ b/src/reader/wgsl/parser_impl_type_decl_test.cc
@@ -223,6 +223,22 @@
   EXPECT_EQ(t.value->source().range, (Source::Range{{1u, 1u}, {1u, 19u}}));
 }
 
+TEST_F(ParserImplTest, TypeDecl_Ptr_WithAccess) {
+  auto p = parser("ptr<function, f32, read>");
+  auto t = p->type_decl();
+  EXPECT_TRUE(t.matched);
+  EXPECT_FALSE(t.errored);
+  ASSERT_NE(t.value, nullptr) << p->error();
+  ASSERT_FALSE(p->has_error());
+  ASSERT_TRUE(t.value->Is<ast::Pointer>());
+
+  auto* ptr = t.value->As<ast::Pointer>();
+  ASSERT_TRUE(ptr->type()->Is<ast::F32>());
+  ASSERT_EQ(ptr->storage_class(), ast::StorageClass::kFunction);
+  ASSERT_EQ(ptr->access(), ast::Access::kRead);
+  EXPECT_EQ(t.value->source().range, (Source::Range{{1u, 1u}, {1u, 25u}}));
+}
+
 TEST_F(ParserImplTest, TypeDecl_Ptr_ToVec) {
   auto p = parser("ptr<function, vec2<f32>>");
   auto t = p->type_decl();
@@ -252,7 +268,7 @@
   ASSERT_EQ(p->error(), "1:5: expected '<' for ptr declaration");
 }
 
-TEST_F(ParserImplTest, TypeDecl_Ptr_MissingGreaterThan) {
+TEST_F(ParserImplTest, TypeDecl_Ptr_MissingGreaterThanAfterType) {
   auto p = parser("ptr<function, f32");
   auto t = p->type_decl();
   EXPECT_TRUE(t.errored);
@@ -262,7 +278,17 @@
   ASSERT_EQ(p->error(), "1:18: expected '>' for ptr declaration");
 }
 
-TEST_F(ParserImplTest, TypeDecl_Ptr_MissingComma) {
+TEST_F(ParserImplTest, TypeDecl_Ptr_MissingGreaterThanAfterAccess) {
+  auto p = parser("ptr<function, f32, read");
+  auto t = p->type_decl();
+  EXPECT_TRUE(t.errored);
+  EXPECT_FALSE(t.matched);
+  ASSERT_EQ(t.value, nullptr);
+  ASSERT_TRUE(p->has_error());
+  ASSERT_EQ(p->error(), "1:24: expected '>' for ptr declaration");
+}
+
+TEST_F(ParserImplTest, TypeDecl_Ptr_MissingCommaAfterStorageClass) {
   auto p = parser("ptr<function f32>");
   auto t = p->type_decl();
   EXPECT_TRUE(t.errored);
@@ -272,18 +298,18 @@
   ASSERT_EQ(p->error(), "1:14: expected ',' for ptr declaration");
 }
 
-TEST_F(ParserImplTest, TypeDecl_Ptr_MissingStorageClass) {
-  auto p = parser("ptr<, f32>");
+TEST_F(ParserImplTest, TypeDecl_Ptr_MissingCommaAfterAccess) {
+  auto p = parser("ptr<function, f32 read>");
   auto t = p->type_decl();
   EXPECT_TRUE(t.errored);
   EXPECT_FALSE(t.matched);
   ASSERT_EQ(t.value, nullptr);
   ASSERT_TRUE(p->has_error());
-  ASSERT_EQ(p->error(), "1:5: invalid storage class for ptr declaration");
+  ASSERT_EQ(p->error(), "1:19: expected '>' for ptr declaration");
 }
 
-TEST_F(ParserImplTest, TypeDecl_Ptr_MissingParams) {
-  auto p = parser("ptr<>");
+TEST_F(ParserImplTest, TypeDecl_Ptr_MissingStorageClass) {
+  auto p = parser("ptr<, f32>");
   auto t = p->type_decl();
   EXPECT_TRUE(t.errored);
   EXPECT_FALSE(t.matched);
@@ -302,6 +328,26 @@
   ASSERT_EQ(p->error(), "1:14: invalid type for ptr declaration");
 }
 
+TEST_F(ParserImplTest, TypeDecl_Ptr_MissingAccess) {
+  auto p = parser("ptr<function, i32, >");
+  auto t = p->type_decl();
+  EXPECT_TRUE(t.errored);
+  EXPECT_FALSE(t.matched);
+  ASSERT_EQ(t.value, nullptr);
+  ASSERT_TRUE(p->has_error());
+  ASSERT_EQ(p->error(), "1:20: expected identifier for access control");
+}
+
+TEST_F(ParserImplTest, TypeDecl_Ptr_MissingParams) {
+  auto p = parser("ptr<>");
+  auto t = p->type_decl();
+  EXPECT_TRUE(t.errored);
+  EXPECT_FALSE(t.matched);
+  ASSERT_EQ(t.value, nullptr);
+  ASSERT_TRUE(p->has_error());
+  ASSERT_EQ(p->error(), "1:5: invalid storage class for ptr declaration");
+}
+
 TEST_F(ParserImplTest, TypeDecl_Ptr_BadStorageClass) {
   auto p = parser("ptr<unknown, f32>");
   auto t = p->type_decl();
@@ -322,6 +368,16 @@
   ASSERT_EQ(p->error(), "1:15: unknown constructed type 'unknown'");
 }
 
+TEST_F(ParserImplTest, TypeDecl_Ptr_BadAccess) {
+  auto p = parser("ptr<function, i32, unknown>");
+  auto t = p->type_decl();
+  EXPECT_TRUE(t.errored);
+  EXPECT_FALSE(t.matched);
+  ASSERT_EQ(t.value, nullptr);
+  ASSERT_TRUE(p->has_error());
+  ASSERT_EQ(p->error(), "1:20: invalid value for access control");
+}
+
 TEST_F(ParserImplTest, TypeDecl_Array) {
   auto p = parser("array<f32, 5>");
   auto t = p->type_decl();
diff --git a/src/reader/wgsl/parser_impl_variable_ident_decl_test.cc b/src/reader/wgsl/parser_impl_variable_ident_decl_test.cc
index 59b8b83..541df21 100644
--- a/src/reader/wgsl/parser_impl_variable_ident_decl_test.cc
+++ b/src/reader/wgsl/parser_impl_variable_ident_decl_test.cc
@@ -234,7 +234,7 @@
   auto decl = p->expect_variable_ident_decl("test");
   ASSERT_TRUE(p->has_error());
   ASSERT_TRUE(decl.errored);
-  ASSERT_EQ(p->error(), "1:19: invalid value for access decoration");
+  ASSERT_EQ(p->error(), "1:19: invalid value for access control");
 }
 
 // TODO(crbug.com/tint/846): Remove
diff --git a/src/resolver/intrinsic_test.cc b/src/resolver/intrinsic_test.cc
index 39d1b18..35d1bf0 100644
--- a/src/resolver/intrinsic_test.cc
+++ b/src/resolver/intrinsic_test.cc
@@ -849,12 +849,14 @@
 
   EXPECT_FALSE(r()->Resolve());
 
-  EXPECT_EQ(r()->error(),
-            "error: no matching call to frexp(i32, ptr<workgroup, i32>)\n\n"
-            "2 candidate functions:\n"
-            "  frexp(f32, ptr<T>) -> f32  where: T is i32 or u32\n"
-            "  frexp(vecN<f32>, ptr<vecN<T>>) -> vecN<f32>  "
-            "where: T is i32 or u32\n");
+  EXPECT_EQ(
+      r()->error(),
+      R"(error: no matching call to frexp(i32, ptr<workgroup, i32, read_write>)
+
+2 candidate functions:
+  frexp(f32, ptr<T>) -> f32  where: T is i32 or u32
+  frexp(vecN<f32>, ptr<vecN<T>>) -> vecN<f32>  where: T is i32 or u32
+)");
 }
 
 TEST_F(ResolverIntrinsicDataTest, Frexp_Error_SecondParamFloatPtr) {
@@ -864,12 +866,14 @@
 
   EXPECT_FALSE(r()->Resolve());
 
-  EXPECT_EQ(r()->error(),
-            "error: no matching call to frexp(f32, ptr<workgroup, f32>)\n\n"
-            "2 candidate functions:\n"
-            "  frexp(f32, ptr<T>) -> f32  where: T is i32 or u32\n"
-            "  frexp(vecN<f32>, ptr<vecN<T>>) -> vecN<f32>  "
-            "where: T is i32 or u32\n");
+  EXPECT_EQ(
+      r()->error(),
+      R"(error: no matching call to frexp(f32, ptr<workgroup, f32, read_write>)
+
+2 candidate functions:
+  frexp(f32, ptr<T>) -> f32  where: T is i32 or u32
+  frexp(vecN<f32>, ptr<vecN<T>>) -> vecN<f32>  where: T is i32 or u32
+)");
 }
 
 TEST_F(ResolverIntrinsicDataTest, Frexp_Error_SecondParamNotAPointer) {
@@ -895,7 +899,7 @@
 
   EXPECT_EQ(
       r()->error(),
-      R"(error: no matching call to frexp(vec2<f32>, ptr<workgroup, vec4<i32>>)
+      R"(error: no matching call to frexp(vec2<f32>, ptr<workgroup, vec4<i32>, read_write>)
 
 2 candidate functions:
   frexp(f32, ptr<T>) -> f32  where: T is i32 or u32
@@ -933,11 +937,14 @@
 
   EXPECT_FALSE(r()->Resolve());
 
-  EXPECT_EQ(r()->error(),
-            "error: no matching call to modf(i32, ptr<workgroup, f32>)\n\n"
-            "2 candidate functions:\n"
-            "  modf(f32, ptr<f32>) -> f32\n"
-            "  modf(vecN<f32>, ptr<vecN<f32>>) -> vecN<f32>\n");
+  EXPECT_EQ(
+      r()->error(),
+      R"(error: no matching call to modf(i32, ptr<workgroup, f32, read_write>)
+
+2 candidate functions:
+  modf(f32, ptr<f32>) -> f32
+  modf(vecN<f32>, ptr<vecN<f32>>) -> vecN<f32>
+)");
 }
 
 TEST_F(ResolverIntrinsicDataTest, Modf_Error_SecondParamIntPtr) {
@@ -947,11 +954,14 @@
 
   EXPECT_FALSE(r()->Resolve());
 
-  EXPECT_EQ(r()->error(),
-            "error: no matching call to modf(f32, ptr<workgroup, i32>)\n\n"
-            "2 candidate functions:\n"
-            "  modf(f32, ptr<f32>) -> f32\n"
-            "  modf(vecN<f32>, ptr<vecN<f32>>) -> vecN<f32>\n");
+  EXPECT_EQ(
+      r()->error(),
+      R"(error: no matching call to modf(f32, ptr<workgroup, i32, read_write>)
+
+2 candidate functions:
+  modf(f32, ptr<f32>) -> f32
+  modf(vecN<f32>, ptr<vecN<f32>>) -> vecN<f32>
+)");
 }
 
 TEST_F(ResolverIntrinsicDataTest, Modf_Error_SecondParamNotAPointer) {
@@ -976,7 +986,7 @@
 
   EXPECT_EQ(
       r()->error(),
-      R"(error: no matching call to modf(vec2<f32>, ptr<workgroup, vec4<f32>>)
+      R"(error: no matching call to modf(vec2<f32>, ptr<workgroup, vec4<f32>, read_write>)
 
 2 candidate functions:
   modf(vecN<f32>, ptr<vecN<f32>>) -> vecN<f32>
diff --git a/src/resolver/is_host_shareable_test.cc b/src/resolver/is_host_shareable_test.cc
index d3c7f17..cb8d2d8 100644
--- a/src/resolver/is_host_shareable_test.cc
+++ b/src/resolver/is_host_shareable_test.cc
@@ -87,8 +87,8 @@
 }
 
 TEST_F(ResolverIsHostShareable, Pointer) {
-  auto* ptr =
-      create<sem::Pointer>(create<sem::I32>(), ast::StorageClass::kPrivate);
+  auto* ptr = create<sem::Pointer>(
+      create<sem::I32>(), ast::StorageClass::kPrivate, ast::Access::kReadWrite);
   EXPECT_FALSE(r()->IsHostShareable(ptr));
 }
 
diff --git a/src/resolver/is_storeable_test.cc b/src/resolver/is_storeable_test.cc
index 084deb4..209460c 100644
--- a/src/resolver/is_storeable_test.cc
+++ b/src/resolver/is_storeable_test.cc
@@ -62,8 +62,8 @@
 }
 
 TEST_F(ResolverIsStorableTest, Pointer) {
-  auto* ptr =
-      create<sem::Pointer>(create<sem::I32>(), ast::StorageClass::kPrivate);
+  auto* ptr = create<sem::Pointer>(
+      create<sem::I32>(), ast::StorageClass::kPrivate, ast::Access::kReadWrite);
   EXPECT_FALSE(r()->IsStorable(ptr));
 }
 
@@ -95,7 +95,7 @@
   EXPECT_FALSE(r()->Resolve());
   EXPECT_EQ(
       r()->error(),
-      R"(error: ptr<private, i32> cannot be used as the type of a structure member)");
+      R"(error: ptr<private, i32, read_write> cannot be used as the type of a structure member)");
 }
 
 TEST_F(ResolverIsStorableTest, Struct_NestedStorable) {
@@ -126,7 +126,7 @@
   EXPECT_FALSE(r()->Resolve());
   EXPECT_EQ(
       r()->error(),
-      R"(error: ptr<private, i32> cannot be used as the type of a structure member)");
+      R"(error: ptr<private, i32, read_write> cannot be used as the type of a structure member)");
 }
 
 }  // namespace
diff --git a/src/resolver/ptr_ref_test.cc b/src/resolver/ptr_ref_test.cc
index e66a0ce..5680c12 100644
--- a/src/resolver/ptr_ref_test.cc
+++ b/src/resolver/ptr_ref_test.cc
@@ -12,6 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/ast/struct_block_decoration.h"
 #include "src/resolver/resolver.h"
 #include "src/resolver/resolver_test_helper.h"
 #include "src/sem/reference_type.h"
@@ -57,6 +58,111 @@
   EXPECT_TRUE(TypeOf(expr)->As<sem::Reference>()->StoreType()->Is<sem::I32>());
 }
 
+TEST_F(ResolverPtrRefTest, DefaultStorageClass) {
+  // https://gpuweb.github.io/gpuweb/wgsl/#storage-class
+
+  auto* buf = Structure("S", {Member("m", ty.i32())},
+                        {create<ast::StructBlockDecoration>()});
+  auto* function = Var("f", ty.i32());
+  auto* private_ = Global("p", ty.i32(), ast::StorageClass::kPrivate);
+  auto* workgroup = Global("w", ty.i32(), ast::StorageClass::kWorkgroup);
+  auto* uniform = Global("ub", buf, ast::StorageClass::kUniform,
+                         ast::DecorationList{
+                             create<ast::BindingDecoration>(0),
+                             create<ast::GroupDecoration>(0),
+                         });
+  auto* storage = Global("sb", buf, ast::StorageClass::kStorage,
+                         ast::DecorationList{
+                             create<ast::BindingDecoration>(1),
+                             create<ast::GroupDecoration>(0),
+                         });
+  auto* handle = Global("h", ty.depth_texture(ast::TextureDimension::k2d),
+                        ast::DecorationList{
+                            create<ast::BindingDecoration>(2),
+                            create<ast::GroupDecoration>(0),
+                        });
+
+  WrapInFunction(function);
+
+  EXPECT_TRUE(r()->Resolve()) << r()->error();
+
+  ASSERT_TRUE(TypeOf(function)->Is<sem::Reference>());
+  ASSERT_TRUE(TypeOf(private_)->Is<sem::Reference>());
+  ASSERT_TRUE(TypeOf(workgroup)->Is<sem::Reference>());
+  ASSERT_TRUE(TypeOf(uniform)->Is<sem::Reference>());
+  ASSERT_TRUE(TypeOf(storage)->Is<sem::Reference>());
+  ASSERT_TRUE(TypeOf(handle)->Is<sem::Reference>());
+
+  EXPECT_EQ(TypeOf(function)->As<sem::Reference>()->Access(),
+            ast::Access::kReadWrite);
+  EXPECT_EQ(TypeOf(private_)->As<sem::Reference>()->Access(),
+            ast::Access::kReadWrite);
+  EXPECT_EQ(TypeOf(workgroup)->As<sem::Reference>()->Access(),
+            ast::Access::kReadWrite);
+  EXPECT_EQ(TypeOf(uniform)->As<sem::Reference>()->Access(),
+            ast::Access::kRead);
+  EXPECT_EQ(TypeOf(storage)->As<sem::Reference>()->Access(),
+            ast::Access::kRead);
+  EXPECT_EQ(TypeOf(handle)->As<sem::Reference>()->Access(), ast::Access::kRead);
+}
+
+TEST_F(ResolverPtrRefTest, ExplicitStorageClass) {
+  // https://gpuweb.github.io/gpuweb/wgsl/#storage-class
+
+  auto* buf = Structure("S", {Member("m", ty.i32())},
+                        {create<ast::StructBlockDecoration>()});
+  auto* storage =
+      Global("sb", buf, ast::StorageClass::kStorage, ast::Access::kReadWrite,
+             ast::DecorationList{
+                 create<ast::BindingDecoration>(1),
+                 create<ast::GroupDecoration>(0),
+             });
+
+  EXPECT_TRUE(r()->Resolve()) << r()->error();
+
+  ASSERT_TRUE(TypeOf(storage)->Is<sem::Reference>());
+
+  EXPECT_EQ(TypeOf(storage)->As<sem::Reference>()->Access(),
+            ast::Access::kReadWrite);
+}
+
+TEST_F(ResolverPtrRefTest, InheritsAccessFromOriginatingVariable) {
+  // struct Inner {
+  //    arr: array<i32, 4>;
+  // }
+  // [[block]] struct S {
+  //    inner: Inner;
+  // }
+  // [[group(0), binding(0)]] var<storage, read_write> s : S;
+  // fn f() {
+  //   let p = &s.inner.arr[2];
+  // }
+  auto* inner = Structure("Inner", {Member("arr", ty.array<i32, 4>())});
+  auto* buf = Structure("S", {Member("inner", inner)},
+                        {create<ast::StructBlockDecoration>()});
+  auto* storage =
+      Global("s", buf, ast::StorageClass::kStorage, ast::Access::kReadWrite,
+             ast::DecorationList{
+                 create<ast::BindingDecoration>(0),
+                 create<ast::GroupDecoration>(0),
+             });
+
+  auto* expr =
+      IndexAccessor(MemberAccessor(MemberAccessor(storage, "inner"), "arr"), 4);
+  auto* ptr = Const("p", nullptr, AddressOf(expr));
+
+  WrapInFunction(ptr);
+
+  EXPECT_TRUE(r()->Resolve()) << r()->error();
+
+  ASSERT_TRUE(TypeOf(expr)->Is<sem::Reference>());
+  ASSERT_TRUE(TypeOf(ptr)->Is<sem::Pointer>());
+
+  EXPECT_EQ(TypeOf(expr)->As<sem::Reference>()->Access(),
+            ast::Access::kReadWrite);
+  EXPECT_EQ(TypeOf(ptr)->As<sem::Pointer>()->Access(), ast::Access::kReadWrite);
+}
+
 }  // namespace
 }  // namespace resolver
 }  // namespace tint
diff --git a/src/resolver/ptr_ref_validation_test.cc b/src/resolver/ptr_ref_validation_test.cc
index 0b2d07d..b391691 100644
--- a/src/resolver/ptr_ref_validation_test.cc
+++ b/src/resolver/ptr_ref_validation_test.cc
@@ -12,6 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "src/ast/struct_block_decoration.h"
 #include "src/resolver/resolver.h"
 #include "src/resolver/resolver_test_helper.h"
 #include "src/sem/reference_type.h"
@@ -77,6 +78,42 @@
             "12:34 error: cannot dereference expression of type 'i32'");
 }
 
+TEST_F(ResolverPtrRefValidationTest, InferredAccessMismatch) {
+  // struct Inner {
+  //    arr: array<i32, 4>;
+  // }
+  // [[block]] struct S {
+  //    inner: Inner;
+  // }
+  // [[group(0), binding(0)]] var<storage> s : S;
+  // fn f() {
+  //   let p : pointer<storage, i32, read_write> = &s.inner.arr[2];
+  // }
+  auto* inner = Structure("Inner", {Member("arr", ty.array<i32, 4>())});
+  auto* buf = Structure("S", {Member("inner", inner)},
+                        {create<ast::StructBlockDecoration>()});
+  auto* storage = Global("s", buf, ast::StorageClass::kStorage,
+                         ast::DecorationList{
+                             create<ast::BindingDecoration>(0),
+                             create<ast::GroupDecoration>(0),
+                         });
+
+  auto* expr =
+      IndexAccessor(MemberAccessor(MemberAccessor(storage, "inner"), "arr"), 4);
+  auto* ptr = Const(
+      Source{{12, 34}}, "p",
+      ty.pointer<i32>(ast::StorageClass::kStorage, ast::Access::kReadWrite),
+      AddressOf(expr));
+
+  WrapInFunction(ptr);
+
+  EXPECT_FALSE(r()->Resolve());
+  EXPECT_EQ(r()->error(),
+            "12:34 error: cannot initialize let of type "
+            "'ptr<storage, i32, read_write>' with value of type "
+            "'ptr<storage, i32, read>'");
+}
+
 }  // namespace
 }  // namespace resolver
 }  // namespace tint
diff --git a/src/resolver/resolver.cc b/src/resolver/resolver.cc
index 14f4b7d..712e092 100644
--- a/src/resolver/resolver.cc
+++ b/src/resolver/resolver.cc
@@ -307,8 +307,12 @@
     }
     if (auto* t = ty->As<ast::Pointer>()) {
       if (auto* el = Type(t->type())) {
+        auto access = t->access();
+        if (access == ast::kUndefined) {
+          access = DefaultAccessForStorageClass(t->storage_class());
+        }
         return builder_->create<sem::Pointer>(const_cast<sem::Type*>(el),
-                                              t->storage_class());
+                                              t->storage_class(), access);
       }
       return nullptr;
     }
@@ -477,11 +481,17 @@
     }
   }
 
+  auto access = var->declared_access();
+  if (access == ast::Access::kUndefined) {
+    access = DefaultAccessForStorageClass(storage_class);
+  }
+
   auto* type = storage_type;
   if (!var->is_const()) {
     // Variable declaration. Unlike `let`, `var` has storage.
     // Variables are always of a reference type to the declared storage type.
-    type = builder_->create<sem::Reference>(storage_type, storage_class);
+    type =
+        builder_->create<sem::Reference>(storage_type, storage_class, access);
   }
 
   if (rhs_type && !ValidateVariableConstructor(var, storage_type, type_name,
@@ -489,15 +499,6 @@
     return nullptr;
   }
 
-  auto access = var->declared_access();
-  if (access == ast::Access::kUndefined &&
-      storage_class == ast::StorageClass::kStorage) {
-    // https://gpuweb.github.io/gpuweb/wgsl/#access-mode-defaults
-    // For the storage storage class, the access mode is optional, and defaults
-    // to read.
-    access = ast::Access::kRead;
-  }
-
   auto* info = variable_infos_.Create(var, const_cast<sem::Type*>(type),
                                       type_name, storage_class, access);
   variable_to_info_.emplace(var, info);
@@ -505,6 +506,21 @@
   return info;
 }
 
+ast::AccessControl Resolver::DefaultAccessForStorageClass(
+    ast::StorageClass storage_class) {
+  // https://gpuweb.github.io/gpuweb/wgsl/#storage-class
+  switch (storage_class) {
+    case ast::StorageClass::kStorage:
+      return ast::Access::kRead;
+    case ast::StorageClass::kUniform:
+    case ast::StorageClass::kUniformConstant:
+      return ast::Access::kRead;
+    default:
+      break;
+  }
+  return ast::Access::kReadWrite;
+}
+
 bool Resolver::ValidateVariableConstructor(const ast::Variable* var,
                                            const sem::Type* storage_type,
                                            const std::string& type_name,
@@ -1603,7 +1619,8 @@
 
   // If we're extracting from a reference, we return a reference.
   if (auto* ref = res->As<sem::Reference>()) {
-    ret = builder_->create<sem::Reference>(ret, ref->StorageClass());
+    ret = builder_->create<sem::Reference>(ret, ref->StorageClass(),
+                                           ref->Access());
   }
   SetType(expr, ret);
 
@@ -1959,7 +1976,8 @@
 
     // If we're extracting from a reference, we return a reference.
     if (auto* ref = structure->As<sem::Reference>()) {
-      ret = builder_->create<sem::Reference>(ret, ref->StorageClass());
+      ret = builder_->create<sem::Reference>(ret, ref->StorageClass(),
+                                             ref->Access());
     }
 
     builder_->Sem().Add(expr, builder_->create<sem::StructMemberAccess>(
@@ -2028,7 +2046,8 @@
       ret = vec->type();
       // If we're extracting from a reference, we return a reference.
       if (auto* ref = structure->As<sem::Reference>()) {
-        ret = builder_->create<sem::Reference>(ret, ref->StorageClass());
+        ret = builder_->create<sem::Reference>(ret, ref->StorageClass(),
+                                               ref->Access());
       }
     } else {
       // The vector will have a number of components equal to the length of
@@ -2291,8 +2310,8 @@
 
     case ast::UnaryOp::kAddressOf:
       if (auto* ref = expr_type->As<sem::Reference>()) {
-        type = builder_->create<sem::Pointer>(ref->StoreType(),
-                                              ref->StorageClass());
+        type = builder_->create<sem::Pointer>(
+            ref->StoreType(), ref->StorageClass(), ref->Access());
       } else {
         diagnostics_.add_error("cannot take the address of expression",
                                unary->expr()->source());
@@ -2302,8 +2321,8 @@
 
     case ast::UnaryOp::kIndirection:
       if (auto* ptr = expr_type->As<sem::Pointer>()) {
-        type = builder_->create<sem::Reference>(ptr->StoreType(),
-                                                ptr->StorageClass());
+        type = builder_->create<sem::Reference>(
+            ptr->StoreType(), ptr->StorageClass(), ptr->Access());
       } else {
         diagnostics_.add_error("cannot dereference expression of type '" +
                                    TypeNameOf(unary->expr()) + "'",
diff --git a/src/resolver/resolver.h b/src/resolver/resolver.h
index 4b893bf..da5ba4b 100644
--- a/src/resolver/resolver.h
+++ b/src/resolver/resolver.h
@@ -319,6 +319,11 @@
                            uint32_t& align,
                            uint32_t& size);
 
+  /// @param storage_class the storage class
+  /// @returns the default access control for the given storage class
+  ast::AccessControl DefaultAccessForStorageClass(
+      ast::StorageClass storage_class);
+
   /// @returns the resolved type of the ast::Expression `expr`
   /// @param expr the expression
   sem::Type* TypeOf(const ast::Expression* expr);
diff --git a/src/resolver/type_constructor_validation_test.cc b/src/resolver/type_constructor_validation_test.cc
index 94fc5ee..24a19b9 100644
--- a/src/resolver/type_constructor_validation_test.cc
+++ b/src/resolver/type_constructor_validation_test.cc
@@ -87,7 +87,8 @@
   ASSERT_TRUE(r()->Resolve()) << r()->error();
   auto* got = TypeOf(a_ident);
   auto* expected = create<sem::Reference>(params.create_rhs_sem_type(ty),
-                                          ast::StorageClass::kFunction);
+                                          ast::StorageClass::kFunction,
+                                          ast::Access::kReadWrite);
   ASSERT_EQ(got, expected) << "got:      " << FriendlyName(got) << "\n"
                            << "expected: " << FriendlyName(expected) << "\n";
 }
@@ -141,7 +142,8 @@
   ASSERT_TRUE(r()->Resolve()) << r()->error();
   auto* got = TypeOf(a_ident);
   auto* expected = create<sem::Reference>(params.create_rhs_sem_type(ty),
-                                          ast::StorageClass::kFunction);
+                                          ast::StorageClass::kFunction,
+                                          ast::Access::kReadWrite);
   ASSERT_EQ(got, expected) << "got:      " << FriendlyName(got) << "\n"
                            << "expected: " << FriendlyName(expected) << "\n";
 }
@@ -190,7 +192,8 @@
   ASSERT_TRUE(r()->Resolve()) << r()->error();
   auto* got = TypeOf(a_ident);
   auto* expected = create<sem::Reference>(params.create_rhs_sem_type(ty),
-                                          ast::StorageClass::kFunction);
+                                          ast::StorageClass::kFunction,
+                                          ast::Access::kReadWrite);
   ASSERT_EQ(got, expected) << "got:      " << FriendlyName(got) << "\n"
                            << "expected: " << FriendlyName(expected) << "\n";
 }
diff --git a/src/resolver/var_let_validation_test.cc b/src/resolver/var_let_validation_test.cc
index 23c42e9..a70bd9d 100644
--- a/src/resolver/var_let_validation_test.cc
+++ b/src/resolver/var_let_validation_test.cc
@@ -52,7 +52,8 @@
 
   EXPECT_FALSE(r()->Resolve());
   EXPECT_EQ(r()->error(),
-            "12:34 error: 'ptr<function, i32>' is not storable for assignment");
+            "12:34 error: 'ptr<function, i32, read_write>' is not storable for "
+            "assignment");
 }
 
 TEST_F(ResolverVarLetValidationTest, LetConstructorWrongType) {
diff --git a/src/sem/pointer_type.cc b/src/sem/pointer_type.cc
index 699ea9c..d4b9734 100644
--- a/src/sem/pointer_type.cc
+++ b/src/sem/pointer_type.cc
@@ -15,18 +15,24 @@
 #include "src/sem/pointer_type.h"
 
 #include "src/program_builder.h"
+#include "src/sem/reference_type.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::sem::Pointer);
 
 namespace tint {
 namespace sem {
 
-Pointer::Pointer(const Type* subtype, ast::StorageClass storage_class)
-    : subtype_(subtype), storage_class_(storage_class) {}
+Pointer::Pointer(const Type* subtype,
+                 ast::StorageClass storage_class,
+                 ast::Access access)
+    : subtype_(subtype), storage_class_(storage_class), access_(access) {
+  TINT_ASSERT(!subtype->Is<Reference>());
+  TINT_ASSERT(access != ast::Access::kUndefined);
+}
 
 std::string Pointer::type_name() const {
   std::ostringstream out;
-  out << "__ptr_" << storage_class_ << subtype_->type_name();
+  out << "__ptr_" << storage_class_ << subtype_->type_name() << "__" << access_;
   return out.str();
 }
 
@@ -36,7 +42,8 @@
   if (storage_class_ != ast::StorageClass::kNone) {
     out << storage_class_ << ", ";
   }
-  out << subtype_->FriendlyName(symbols) << ">";
+  out << subtype_->FriendlyName(symbols) << ", " << access_;
+  out << ">";
   return out.str();
 }
 
diff --git a/src/sem/pointer_type.h b/src/sem/pointer_type.h
index adcb127..ec0e98f 100644
--- a/src/sem/pointer_type.h
+++ b/src/sem/pointer_type.h
@@ -17,6 +17,7 @@
 
 #include <string>
 
+#include "src/ast/access.h"
 #include "src/ast/storage_class.h"
 #include "src/sem/type.h"
 
@@ -29,16 +30,24 @@
   /// Constructor
   /// @param subtype the pointee type
   /// @param storage_class the storage class of the pointer
-  Pointer(const Type* subtype, ast::StorageClass storage_class);
+  /// @param access the resolved access control of the reference
+  Pointer(const Type* subtype,
+          ast::StorageClass storage_class,
+          ast::Access access);
+
   /// Move constructor
   Pointer(Pointer&&);
   ~Pointer() override;
 
   /// @returns the pointee type
   const Type* StoreType() const { return subtype_; }
+
   /// @returns the storage class of the pointer
   ast::StorageClass StorageClass() const { return storage_class_; }
 
+  /// @returns the access control of the reference
+  ast::Access Access() const { return access_; }
+
   /// @returns the name for this type
   std::string type_name() const override;
 
@@ -50,6 +59,7 @@
  private:
   Type const* const subtype_;
   ast::StorageClass const storage_class_;
+  ast::AccessControl const access_;
 };
 
 }  // namespace sem
diff --git a/src/sem/pointer_type_test.cc b/src/sem/pointer_type_test.cc
index 56cbe3a..950d282 100644
--- a/src/sem/pointer_type_test.cc
+++ b/src/sem/pointer_type_test.cc
@@ -22,24 +22,29 @@
 using PointerTest = TestHelper;
 
 TEST_F(PointerTest, Creation) {
-  auto* r = create<Pointer>(create<I32>(), ast::StorageClass::kStorage);
+  auto* r = create<Pointer>(create<I32>(), ast::StorageClass::kStorage,
+                            ast::Access::kReadWrite);
   EXPECT_TRUE(r->StoreType()->Is<sem::I32>());
   EXPECT_EQ(r->StorageClass(), ast::StorageClass::kStorage);
+  EXPECT_EQ(r->Access(), ast::Access::kReadWrite);
 }
 
 TEST_F(PointerTest, TypeName) {
-  auto* r = create<Pointer>(create<I32>(), ast::StorageClass::kWorkgroup);
-  EXPECT_EQ(r->type_name(), "__ptr_workgroup__i32");
+  auto* r = create<Pointer>(create<I32>(), ast::StorageClass::kWorkgroup,
+                            ast::Access::kReadWrite);
+  EXPECT_EQ(r->type_name(), "__ptr_workgroup__i32__read_write");
+}
+
+TEST_F(PointerTest, FriendlyName) {
+  auto* r = create<Pointer>(create<I32>(), ast::StorageClass::kNone,
+                            ast::Access::kRead);
+  EXPECT_EQ(r->FriendlyName(Symbols()), "ptr<i32, read>");
 }
 
 TEST_F(PointerTest, FriendlyNameWithStorageClass) {
-  auto* r = create<Pointer>(create<I32>(), ast::StorageClass::kWorkgroup);
-  EXPECT_EQ(r->FriendlyName(Symbols()), "ptr<workgroup, i32>");
-}
-
-TEST_F(PointerTest, FriendlyNameWithoutStorageClass) {
-  auto* r = create<Pointer>(create<I32>(), ast::StorageClass::kNone);
-  EXPECT_EQ(r->FriendlyName(Symbols()), "ptr<i32>");
+  auto* r = create<Pointer>(create<I32>(), ast::StorageClass::kWorkgroup,
+                            ast::Access::kRead);
+  EXPECT_EQ(r->FriendlyName(Symbols()), "ptr<workgroup, i32, read>");
 }
 
 }  // namespace
diff --git a/src/sem/reference_type.cc b/src/sem/reference_type.cc
index 1c8ee01..959c61d 100644
--- a/src/sem/reference_type.cc
+++ b/src/sem/reference_type.cc
@@ -21,14 +21,17 @@
 namespace tint {
 namespace sem {
 
-Reference::Reference(const Type* subtype, ast::StorageClass storage_class)
-    : subtype_(subtype), storage_class_(storage_class) {
+Reference::Reference(const Type* subtype,
+                     ast::StorageClass storage_class,
+                     ast::Access access)
+    : subtype_(subtype), storage_class_(storage_class), access_(access) {
   TINT_ASSERT(!subtype->Is<Reference>());
+  TINT_ASSERT(access != ast::Access::kUndefined);
 }
 
 std::string Reference::type_name() const {
   std::ostringstream out;
-  out << "__ref_" << storage_class_ << subtype_->type_name();
+  out << "__ref_" << storage_class_ << subtype_->type_name() << "__" << access_;
   return out.str();
 }
 
@@ -38,7 +41,8 @@
   if (storage_class_ != ast::StorageClass::kNone) {
     out << storage_class_ << ", ";
   }
-  out << subtype_->FriendlyName(symbols) << ">";
+  out << subtype_->FriendlyName(symbols) << ", " << access_;
+  out << ">";
   return out.str();
 }
 
diff --git a/src/sem/reference_type.h b/src/sem/reference_type.h
index 0d9afed..5e2eaeb 100644
--- a/src/sem/reference_type.h
+++ b/src/sem/reference_type.h
@@ -17,6 +17,7 @@
 
 #include <string>
 
+#include "src/ast/access.h"
 #include "src/ast/storage_class.h"
 #include "src/sem/type.h"
 
@@ -29,16 +30,24 @@
   /// Constructor
   /// @param subtype the pointee type
   /// @param storage_class the storage class of the reference
-  Reference(const Type* subtype, ast::StorageClass storage_class);
+  /// @param access the resolved access control of the reference
+  Reference(const Type* subtype,
+            ast::StorageClass storage_class,
+            ast::Access access);
+
   /// Move constructor
   Reference(Reference&&);
   ~Reference() override;
 
   /// @returns the pointee type
   const Type* StoreType() const { return subtype_; }
+
   /// @returns the storage class of the reference
   ast::StorageClass StorageClass() const { return storage_class_; }
 
+  /// @returns the resolved access control of the reference.
+  ast::Access Access() const { return access_; }
+
   /// @returns the name for this type
   std::string type_name() const override;
 
@@ -50,6 +59,7 @@
  private:
   Type const* const subtype_;
   ast::StorageClass const storage_class_;
+  ast::AccessControl const access_;
 };
 
 }  // namespace sem
diff --git a/src/sem/reference_type_test.cc b/src/sem/reference_type_test.cc
index 3b279f4..a397e3a 100644
--- a/src/sem/reference_type_test.cc
+++ b/src/sem/reference_type_test.cc
@@ -22,24 +22,29 @@
 using ReferenceTest = TestHelper;
 
 TEST_F(ReferenceTest, Creation) {
-  auto* r = create<Reference>(create<I32>(), ast::StorageClass::kStorage);
+  auto* r = create<Reference>(create<I32>(), ast::StorageClass::kStorage,
+                              ast::Access::kReadWrite);
   EXPECT_TRUE(r->StoreType()->Is<sem::I32>());
   EXPECT_EQ(r->StorageClass(), ast::StorageClass::kStorage);
+  EXPECT_EQ(r->Access(), ast::Access::kReadWrite);
 }
 
 TEST_F(ReferenceTest, TypeName) {
-  auto* r = create<Reference>(create<I32>(), ast::StorageClass::kWorkgroup);
-  EXPECT_EQ(r->type_name(), "__ref_workgroup__i32");
+  auto* r = create<Reference>(create<I32>(), ast::StorageClass::kWorkgroup,
+                              ast::Access::kReadWrite);
+  EXPECT_EQ(r->type_name(), "__ref_workgroup__i32__read_write");
+}
+
+TEST_F(ReferenceTest, FriendlyName) {
+  auto* r = create<Reference>(create<I32>(), ast::StorageClass::kNone,
+                              ast::Access::kRead);
+  EXPECT_EQ(r->FriendlyName(Symbols()), "ref<i32, read>");
 }
 
 TEST_F(ReferenceTest, FriendlyNameWithStorageClass) {
-  auto* r = create<Reference>(create<I32>(), ast::StorageClass::kWorkgroup);
-  EXPECT_EQ(r->FriendlyName(Symbols()), "ref<workgroup, i32>");
-}
-
-TEST_F(ReferenceTest, FriendlyNameWithoutStorageClass) {
-  auto* r = create<Reference>(create<I32>(), ast::StorageClass::kNone);
-  EXPECT_EQ(r->FriendlyName(Symbols()), "ref<i32>");
+  auto* r = create<Reference>(create<I32>(), ast::StorageClass::kWorkgroup,
+                              ast::Access::kRead);
+  EXPECT_EQ(r->FriendlyName(Symbols()), "ref<workgroup, i32, read>");
 }
 
 }  // namespace
diff --git a/src/writer/hlsl/generator_impl_type_test.cc b/src/writer/hlsl/generator_impl_type_test.cc
index 94dd0d6..9846c30 100644
--- a/src/writer/hlsl/generator_impl_type_test.cc
+++ b/src/writer/hlsl/generator_impl_type_test.cc
@@ -154,7 +154,8 @@
 // TODO(dsinclair): How to annotate as workgroup?
 TEST_F(HlslGeneratorImplTest_Type, DISABLED_EmitType_Pointer) {
   auto* f32 = create<sem::F32>();
-  auto* p = create<sem::Pointer>(f32, ast::StorageClass::kWorkgroup);
+  auto* p = create<sem::Pointer>(f32, ast::StorageClass::kWorkgroup,
+                                 ast::Access::kReadWrite);
 
   GeneratorImpl& gen = Build();
 
diff --git a/src/writer/msl/generator_impl_type_test.cc b/src/writer/msl/generator_impl_type_test.cc
index d45ead6..ffd88b6 100644
--- a/src/writer/msl/generator_impl_type_test.cc
+++ b/src/writer/msl/generator_impl_type_test.cc
@@ -162,7 +162,8 @@
 
 TEST_F(MslGeneratorImplTest, EmitType_Pointer) {
   auto* f32 = create<sem::F32>();
-  auto* p = create<sem::Pointer>(f32, ast::StorageClass::kWorkgroup);
+  auto* p = create<sem::Pointer>(f32, ast::StorageClass::kWorkgroup,
+                                 ast::Access::kReadWrite);
 
   GeneratorImpl& gen = Build();
 
diff --git a/src/writer/spirv/builder.cc b/src/writer/spirv/builder.cc
index 6ebafb9..4362d9c 100644
--- a/src/writer/spirv/builder.cc
+++ b/src/writer/spirv/builder.cc
@@ -1730,8 +1730,8 @@
 uint32_t Builder::GenerateSplat(uint32_t scalar_id, const sem::Type* vec_type) {
   // Create a new vector to splat scalar into
   auto splat_vector = result_op();
-  auto* splat_vector_type =
-      builder_.create<sem::Pointer>(vec_type, ast::StorageClass::kFunction);
+  auto* splat_vector_type = builder_.create<sem::Pointer>(
+      vec_type, ast::StorageClass::kFunction, ast::Access::kReadWrite);
   push_function_var(
       {Operand::Int(GenerateTypeIfNeeded(splat_vector_type)), splat_vector,
        Operand::Int(ConvertStorageClass(ast::StorageClass::kFunction)),
@@ -3228,13 +3228,22 @@
     return 0;
   }
 
+  // Pointers and references with differing accesses should not result in a
+  // different SPIR-V types, so we explicitly ignore the access.
   // Pointers and References both map to a SPIR-V pointer type.
   // Transform a Reference to a Pointer to prevent these having duplicated
-  // definitions in the generated SPIR-V. Note that nested references are not
-  // legal, so only considering the top-level type is fine.
+  // definitions in the generated SPIR-V. Note that nested pointers and
+  // references are not legal in WGSL, so only considering the top-level type is
+  // fine.
   std::string type_name;
-  if (auto* ref = type->As<sem::Reference>()) {
-    type_name = sem::Pointer(ref->StoreType(), ref->StorageClass()).type_name();
+  if (auto* ptr = type->As<sem::Pointer>()) {
+    type_name =
+        sem::Pointer(ptr->StoreType(), ptr->StorageClass(), ast::kReadWrite)
+            .type_name();
+  } else if (auto* ref = type->As<sem::Reference>()) {
+    type_name =
+        sem::Pointer(ref->StoreType(), ref->StorageClass(), ast::kReadWrite)
+            .type_name();
   } else {
     type_name = type->type_name();
   }
diff --git a/src/writer/spirv/builder_type_test.cc b/src/writer/spirv/builder_type_test.cc
index 2200436..a0fca8b 100644
--- a/src/writer/spirv/builder_type_test.cc
+++ b/src/writer/spirv/builder_type_test.cc
@@ -241,7 +241,8 @@
 
 TEST_F(BuilderTest_Type, GeneratePtr) {
   auto* i32 = create<sem::I32>();
-  auto* ptr = create<sem::Pointer>(i32, ast::StorageClass::kOutput);
+  auto* ptr = create<sem::Pointer>(i32, ast::StorageClass::kOutput,
+                                   ast::Access::kReadWrite);
 
   spirv::Builder& b = Build();
 
@@ -256,7 +257,8 @@
 
 TEST_F(BuilderTest_Type, ReturnsGeneratedPtr) {
   auto* i32 = create<sem::I32>();
-  auto* ptr = create<sem::Pointer>(i32, ast::StorageClass::kOutput);
+  auto* ptr = create<sem::Pointer>(i32, ast::StorageClass::kOutput,
+                                   ast::Access::kReadWrite);
 
   spirv::Builder& b = Build();
 
diff --git a/test/array/assign_to_function_var.wgsl.expected.spvasm b/test/array/assign_to_function_var.wgsl.expected.spvasm
index 806064b..668fc9c 100644
--- a/test/array/assign_to_function_var.wgsl.expected.spvasm
+++ b/test/array/assign_to_function_var.wgsl.expected.spvasm
@@ -25,6 +25,7 @@
                OpDecorate %_arr_int_uint_4 ArrayStride 16
                OpDecorate %S Block
                OpMemberDecorate %S 0 Offset 0
+               OpDecorate %src_uniform NonWritable
                OpDecorate %src_uniform DescriptorSet 0
                OpDecorate %src_uniform Binding 0
                OpDecorate %src_storage DescriptorSet 0
diff --git a/test/array/assign_to_private_var.wgsl.expected.spvasm b/test/array/assign_to_private_var.wgsl.expected.spvasm
index 3ef5aa7..258a540 100644
--- a/test/array/assign_to_private_var.wgsl.expected.spvasm
+++ b/test/array/assign_to_private_var.wgsl.expected.spvasm
@@ -25,6 +25,7 @@
                OpDecorate %_arr_int_uint_4 ArrayStride 16
                OpDecorate %S Block
                OpMemberDecorate %S 0 Offset 0
+               OpDecorate %src_uniform NonWritable
                OpDecorate %src_uniform DescriptorSet 0
                OpDecorate %src_uniform Binding 0
                OpDecorate %src_storage DescriptorSet 0
diff --git a/test/array/assign_to_storage_var.wgsl.expected.spvasm b/test/array/assign_to_storage_var.wgsl.expected.spvasm
index 67fa25e..1764efa 100644
--- a/test/array/assign_to_storage_var.wgsl.expected.spvasm
+++ b/test/array/assign_to_storage_var.wgsl.expected.spvasm
@@ -27,6 +27,7 @@
                OpDecorate %_arr_int_uint_4 ArrayStride 16
                OpDecorate %S Block
                OpMemberDecorate %S 0 Offset 0
+               OpDecorate %src_uniform NonWritable
                OpDecorate %src_uniform DescriptorSet 0
                OpDecorate %src_uniform Binding 0
                OpDecorate %src_storage DescriptorSet 0
diff --git a/test/array/assign_to_workgroup_var.wgsl.expected.spvasm b/test/array/assign_to_workgroup_var.wgsl.expected.spvasm
index e491f49..5f46701 100644
--- a/test/array/assign_to_workgroup_var.wgsl.expected.spvasm
+++ b/test/array/assign_to_workgroup_var.wgsl.expected.spvasm
@@ -25,6 +25,7 @@
                OpDecorate %_arr_int_uint_4 ArrayStride 16
                OpDecorate %S Block
                OpMemberDecorate %S 0 Offset 0
+               OpDecorate %src_uniform NonWritable
                OpDecorate %src_uniform DescriptorSet 0
                OpDecorate %src_uniform Binding 0
                OpDecorate %src_storage DescriptorSet 0
diff --git a/test/bug/tint/221.wgsl b/test/bug/tint/221.wgsl
index 5e2c9ff..270dc0f 100644
--- a/test/bug/tint/221.wgsl
+++ b/test/bug/tint/221.wgsl
@@ -13,7 +13,7 @@
   var i : u32 = 0u;
   loop {
     if (i >= b.count) { break; }
-    let p : ptr<storage, u32> = &b.data[i];
+    let p : ptr<storage, u32, read_write> = &b.data[i];
     if ((i % 2u) == 0u) { continue; }
     *p = 0u;              // Set odd elements of the array to 0
     continuing {
diff --git a/test/bug/tint/492.wgsl b/test/bug/tint/492.wgsl
index 997a367..9c8e426 100644
--- a/test/bug/tint/492.wgsl
+++ b/test/bug/tint/492.wgsl
@@ -2,6 +2,6 @@
 [[group(0), binding(0)]] var<storage, read_write> buf : S;
 
 [[stage(compute)]] fn main() {
-  let p : ptr<storage, i32> = &buf.a;
+  let p : ptr<storage, i32, read_write> = &buf.a;
   *p = 12;
 }
diff --git a/test/bug/tint/744.wgsl.expected.spvasm b/test/bug/tint/744.wgsl.expected.spvasm
index b7d0993..6a6fdc5 100644
--- a/test/bug/tint/744.wgsl.expected.spvasm
+++ b/test/bug/tint/744.wgsl.expected.spvasm
@@ -37,6 +37,7 @@
                OpMemberDecorate %Uniforms 0 Offset 0
                OpMemberDecorate %Uniforms 1 Offset 8
                OpMemberDecorate %Uniforms 2 Offset 16
+               OpDecorate %uniforms NonWritable
                OpDecorate %uniforms DescriptorSet 0
                OpDecorate %uniforms Binding 3
                OpDecorate %tint_symbol BuiltIn GlobalInvocationId
diff --git a/test/bug/tint/749.spvasm.expected.spvasm b/test/bug/tint/749.spvasm.expected.spvasm
index ae34237..73fb94d 100644
--- a/test/bug/tint/749.spvasm.expected.spvasm
+++ b/test/bug/tint/749.spvasm.expected.spvasm
@@ -49,6 +49,7 @@
                OpDecorate %gl_FragCoord BuiltIn FragCoord
                OpDecorate %buf0 Block
                OpMemberDecorate %buf0 0 Offset 0
+               OpDecorate %x_188 NonWritable
                OpDecorate %x_188 DescriptorSet 0
                OpDecorate %x_188 Binding 0
                OpDecorate %x_GLF_color Location 0
diff --git a/test/intrinsics/gen/frexp/4b73e3.wgsl b/test/intrinsics/gen/frexp/013caa.wgsl
similarity index 94%
rename from test/intrinsics/gen/frexp/4b73e3.wgsl
rename to test/intrinsics/gen/frexp/013caa.wgsl
index 32a16bd..b3be318 100644
--- a/test/intrinsics/gen/frexp/4b73e3.wgsl
+++ b/test/intrinsics/gen/frexp/013caa.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_4b73e3() {
+fn frexp_013caa() {
   var arg_1: vec4<i32>;
   var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_4b73e3();
+  frexp_013caa();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_4b73e3();
+  frexp_013caa();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_4b73e3();
+  frexp_013caa();
 }
diff --git a/test/intrinsics/gen/frexp/013caa.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/013caa.wgsl.expected.hlsl
new file mode 100644
index 0000000..253f138
--- /dev/null
+++ b/test/intrinsics/gen/frexp/013caa.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_013caa() {
+  var arg_1 : vec4<i32>;
+  var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_013caa();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_013caa();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_013caa();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/013caa.wgsl.expected.msl b/test/intrinsics/gen/frexp/013caa.wgsl.expected.msl
new file mode 100644
index 0000000..9fc0eb5
--- /dev/null
+++ b/test/intrinsics/gen/frexp/013caa.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_013caa() {
+  var arg_1 : vec4<i32>;
+  var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_013caa();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_013caa();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_013caa();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/4b73e3.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/013caa.wgsl.expected.spvasm
similarity index 91%
copy from test/intrinsics/gen/frexp/4b73e3.wgsl.expected.spvasm
copy to test/intrinsics/gen/frexp/013caa.wgsl.expected.spvasm
index f3901b4..9f2dda9 100644
--- a/test/intrinsics/gen/frexp/4b73e3.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/013caa.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_4b73e3 "frexp_4b73e3"
+               OpName %frexp_013caa "frexp_013caa"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -40,7 +40,7 @@
 %_ptr_Function_v4float = OpTypePointer Function %v4float
          %23 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%frexp_4b73e3 = OpFunction %void None %9
+%frexp_013caa = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v4int Function %17
         %res = OpVariable %_ptr_Function_v4float Function %8
@@ -57,17 +57,17 @@
 %vertex_main = OpFunction %void None %9
          %28 = OpLabel
                OpStore %tint_pointsize %float_1
-         %30 = OpFunctionCall %void %frexp_4b73e3
+         %30 = OpFunctionCall %void %frexp_013caa
          %31 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %33 = OpLabel
-         %34 = OpFunctionCall %void %frexp_4b73e3
+         %34 = OpFunctionCall %void %frexp_013caa
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %36 = OpLabel
-         %37 = OpFunctionCall %void %frexp_4b73e3
+         %37 = OpFunctionCall %void %frexp_013caa
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/4b73e3.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/013caa.wgsl.expected.wgsl
similarity index 78%
rename from test/intrinsics/gen/frexp/4b73e3.wgsl.expected.wgsl
rename to test/intrinsics/gen/frexp/013caa.wgsl.expected.wgsl
index 8726a64..2a8819a 100644
--- a/test/intrinsics/gen/frexp/4b73e3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/013caa.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_4b73e3() {
+fn frexp_013caa() {
   var arg_1 : vec4<i32>;
   var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_4b73e3();
+  frexp_013caa();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_4b73e3();
+  frexp_013caa();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_4b73e3();
+  frexp_013caa();
 }
diff --git a/test/intrinsics/gen/frexp/1d6b62.wgsl b/test/intrinsics/gen/frexp/15edf3.wgsl
similarity index 94%
copy from test/intrinsics/gen/frexp/1d6b62.wgsl
copy to test/intrinsics/gen/frexp/15edf3.wgsl
index c790bd0..c192ccb 100644
--- a/test/intrinsics/gen/frexp/1d6b62.wgsl
+++ b/test/intrinsics/gen/frexp/15edf3.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_1d6b62() {
+fn frexp_15edf3() {
   var arg_1: vec2<i32>;
   var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_1d6b62();
+  frexp_15edf3();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_1d6b62();
+  frexp_15edf3();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_1d6b62();
+  frexp_15edf3();
 }
diff --git a/test/intrinsics/gen/frexp/15edf3.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/15edf3.wgsl.expected.hlsl
new file mode 100644
index 0000000..7bcdeb1
--- /dev/null
+++ b/test/intrinsics/gen/frexp/15edf3.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_15edf3() {
+  var arg_1 : vec2<i32>;
+  var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_15edf3();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_15edf3();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_15edf3();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/15edf3.wgsl.expected.msl b/test/intrinsics/gen/frexp/15edf3.wgsl.expected.msl
new file mode 100644
index 0000000..d068701
--- /dev/null
+++ b/test/intrinsics/gen/frexp/15edf3.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_15edf3() {
+  var arg_1 : vec2<i32>;
+  var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_15edf3();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_15edf3();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_15edf3();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/1d6b62.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/15edf3.wgsl.expected.spvasm
similarity index 92%
copy from test/intrinsics/gen/frexp/1d6b62.wgsl.expected.spvasm
copy to test/intrinsics/gen/frexp/15edf3.wgsl.expected.spvasm
index 3342c71..e624b76 100644
--- a/test/intrinsics/gen/frexp/1d6b62.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/15edf3.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_1d6b62 "frexp_1d6b62"
+               OpName %frexp_15edf3 "frexp_15edf3"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -42,7 +42,7 @@
 %_ptr_Function_v2float = OpTypePointer Function %v2float
          %25 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%frexp_1d6b62 = OpFunction %void None %9
+%frexp_15edf3 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v2int Function %17
         %res = OpVariable %_ptr_Function_v2float Function %21
@@ -59,17 +59,17 @@
 %vertex_main = OpFunction %void None %9
          %30 = OpLabel
                OpStore %tint_pointsize %float_1
-         %32 = OpFunctionCall %void %frexp_1d6b62
+         %32 = OpFunctionCall %void %frexp_15edf3
          %33 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %35 = OpLabel
-         %36 = OpFunctionCall %void %frexp_1d6b62
+         %36 = OpFunctionCall %void %frexp_15edf3
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %38 = OpLabel
-         %39 = OpFunctionCall %void %frexp_1d6b62
+         %39 = OpFunctionCall %void %frexp_15edf3
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/1d6b62.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/15edf3.wgsl.expected.wgsl
similarity index 78%
copy from test/intrinsics/gen/frexp/1d6b62.wgsl.expected.wgsl
copy to test/intrinsics/gen/frexp/15edf3.wgsl.expected.wgsl
index bc2e1ab..1d029c4 100644
--- a/test/intrinsics/gen/frexp/1d6b62.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/15edf3.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_1d6b62() {
+fn frexp_15edf3() {
   var arg_1 : vec2<i32>;
   var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_1d6b62();
+  frexp_15edf3();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_1d6b62();
+  frexp_15edf3();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_1d6b62();
+  frexp_15edf3();
 }
diff --git a/test/intrinsics/gen/frexp/4b73e3.wgsl b/test/intrinsics/gen/frexp/19ab15.wgsl
similarity index 94%
copy from test/intrinsics/gen/frexp/4b73e3.wgsl
copy to test/intrinsics/gen/frexp/19ab15.wgsl
index 32a16bd..7a8d53b 100644
--- a/test/intrinsics/gen/frexp/4b73e3.wgsl
+++ b/test/intrinsics/gen/frexp/19ab15.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_4b73e3() {
+fn frexp_19ab15() {
   var arg_1: vec4<i32>;
   var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_4b73e3();
+  frexp_19ab15();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_4b73e3();
+  frexp_19ab15();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_4b73e3();
+  frexp_19ab15();
 }
diff --git a/test/intrinsics/gen/frexp/19ab15.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/19ab15.wgsl.expected.hlsl
new file mode 100644
index 0000000..48b34c6
--- /dev/null
+++ b/test/intrinsics/gen/frexp/19ab15.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_19ab15() {
+  var arg_1 : vec4<i32>;
+  var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_19ab15();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_19ab15();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_19ab15();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/19ab15.wgsl.expected.msl b/test/intrinsics/gen/frexp/19ab15.wgsl.expected.msl
new file mode 100644
index 0000000..6d169a6
--- /dev/null
+++ b/test/intrinsics/gen/frexp/19ab15.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_19ab15() {
+  var arg_1 : vec4<i32>;
+  var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_19ab15();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_19ab15();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_19ab15();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/4b73e3.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/19ab15.wgsl.expected.spvasm
similarity index 91%
rename from test/intrinsics/gen/frexp/4b73e3.wgsl.expected.spvasm
rename to test/intrinsics/gen/frexp/19ab15.wgsl.expected.spvasm
index f3901b4..e11b4a2 100644
--- a/test/intrinsics/gen/frexp/4b73e3.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/19ab15.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_4b73e3 "frexp_4b73e3"
+               OpName %frexp_19ab15 "frexp_19ab15"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -40,7 +40,7 @@
 %_ptr_Function_v4float = OpTypePointer Function %v4float
          %23 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%frexp_4b73e3 = OpFunction %void None %9
+%frexp_19ab15 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v4int Function %17
         %res = OpVariable %_ptr_Function_v4float Function %8
@@ -57,17 +57,17 @@
 %vertex_main = OpFunction %void None %9
          %28 = OpLabel
                OpStore %tint_pointsize %float_1
-         %30 = OpFunctionCall %void %frexp_4b73e3
+         %30 = OpFunctionCall %void %frexp_19ab15
          %31 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %33 = OpLabel
-         %34 = OpFunctionCall %void %frexp_4b73e3
+         %34 = OpFunctionCall %void %frexp_19ab15
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %36 = OpLabel
-         %37 = OpFunctionCall %void %frexp_4b73e3
+         %37 = OpFunctionCall %void %frexp_19ab15
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/4b73e3.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/19ab15.wgsl.expected.wgsl
similarity index 78%
copy from test/intrinsics/gen/frexp/4b73e3.wgsl.expected.wgsl
copy to test/intrinsics/gen/frexp/19ab15.wgsl.expected.wgsl
index 8726a64..2cba608 100644
--- a/test/intrinsics/gen/frexp/4b73e3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/19ab15.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_4b73e3() {
+fn frexp_19ab15() {
   var arg_1 : vec4<i32>;
   var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_4b73e3();
+  frexp_19ab15();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_4b73e3();
+  frexp_19ab15();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_4b73e3();
+  frexp_19ab15();
 }
diff --git a/test/intrinsics/gen/frexp/1d6b62.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/1d6b62.wgsl.expected.hlsl
deleted file mode 100644
index 4bfcbe0..0000000
--- a/test/intrinsics/gen/frexp/1d6b62.wgsl.expected.hlsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn frexp_1d6b62() {
-  var arg_1 : vec2<i32>;
-  var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  frexp_1d6b62();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  frexp_1d6b62();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  frexp_1d6b62();
-}
-
-Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/1d6b62.wgsl.expected.msl b/test/intrinsics/gen/frexp/1d6b62.wgsl.expected.msl
deleted file mode 100644
index 569c4e6..0000000
--- a/test/intrinsics/gen/frexp/1d6b62.wgsl.expected.msl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn frexp_1d6b62() {
-  var arg_1 : vec2<i32>;
-  var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  frexp_1d6b62();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  frexp_1d6b62();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  frexp_1d6b62();
-}
-
-Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/4b73e3.wgsl b/test/intrinsics/gen/frexp/2052e9.wgsl
similarity index 94%
copy from test/intrinsics/gen/frexp/4b73e3.wgsl
copy to test/intrinsics/gen/frexp/2052e9.wgsl
index 32a16bd..498cb43 100644
--- a/test/intrinsics/gen/frexp/4b73e3.wgsl
+++ b/test/intrinsics/gen/frexp/2052e9.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_4b73e3() {
+fn frexp_2052e9() {
   var arg_1: vec4<i32>;
   var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_4b73e3();
+  frexp_2052e9();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_4b73e3();
+  frexp_2052e9();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_4b73e3();
+  frexp_2052e9();
 }
diff --git a/test/intrinsics/gen/frexp/2052e9.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/2052e9.wgsl.expected.hlsl
new file mode 100644
index 0000000..cb57d06
--- /dev/null
+++ b/test/intrinsics/gen/frexp/2052e9.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_2052e9() {
+  var arg_1 : vec4<i32>;
+  var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_2052e9();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_2052e9();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_2052e9();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/2052e9.wgsl.expected.msl b/test/intrinsics/gen/frexp/2052e9.wgsl.expected.msl
new file mode 100644
index 0000000..0517bd3
--- /dev/null
+++ b/test/intrinsics/gen/frexp/2052e9.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_2052e9() {
+  var arg_1 : vec4<i32>;
+  var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_2052e9();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_2052e9();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_2052e9();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/4b73e3.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/2052e9.wgsl.expected.spvasm
similarity index 91%
copy from test/intrinsics/gen/frexp/4b73e3.wgsl.expected.spvasm
copy to test/intrinsics/gen/frexp/2052e9.wgsl.expected.spvasm
index f3901b4..9a2809d 100644
--- a/test/intrinsics/gen/frexp/4b73e3.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/2052e9.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_4b73e3 "frexp_4b73e3"
+               OpName %frexp_2052e9 "frexp_2052e9"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -40,7 +40,7 @@
 %_ptr_Function_v4float = OpTypePointer Function %v4float
          %23 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%frexp_4b73e3 = OpFunction %void None %9
+%frexp_2052e9 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v4int Function %17
         %res = OpVariable %_ptr_Function_v4float Function %8
@@ -57,17 +57,17 @@
 %vertex_main = OpFunction %void None %9
          %28 = OpLabel
                OpStore %tint_pointsize %float_1
-         %30 = OpFunctionCall %void %frexp_4b73e3
+         %30 = OpFunctionCall %void %frexp_2052e9
          %31 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %33 = OpLabel
-         %34 = OpFunctionCall %void %frexp_4b73e3
+         %34 = OpFunctionCall %void %frexp_2052e9
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %36 = OpLabel
-         %37 = OpFunctionCall %void %frexp_4b73e3
+         %37 = OpFunctionCall %void %frexp_2052e9
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/4b73e3.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/2052e9.wgsl.expected.wgsl
similarity index 78%
copy from test/intrinsics/gen/frexp/4b73e3.wgsl.expected.wgsl
copy to test/intrinsics/gen/frexp/2052e9.wgsl.expected.wgsl
index 8726a64..68ed2b0 100644
--- a/test/intrinsics/gen/frexp/4b73e3.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/2052e9.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_4b73e3() {
+fn frexp_2052e9() {
   var arg_1 : vec4<i32>;
   var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_4b73e3();
+  frexp_2052e9();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_4b73e3();
+  frexp_2052e9();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_4b73e3();
+  frexp_2052e9();
 }
diff --git a/test/intrinsics/gen/frexp/2507b2.wgsl b/test/intrinsics/gen/frexp/234f02.wgsl
similarity index 94%
copy from test/intrinsics/gen/frexp/2507b2.wgsl
copy to test/intrinsics/gen/frexp/234f02.wgsl
index 2e1284c..635abfc 100644
--- a/test/intrinsics/gen/frexp/2507b2.wgsl
+++ b/test/intrinsics/gen/frexp/234f02.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_2507b2() {
+fn frexp_234f02() {
   var arg_1: vec4<u32>;
   var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_2507b2();
+  frexp_234f02();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_2507b2();
+  frexp_234f02();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_2507b2();
+  frexp_234f02();
 }
diff --git a/test/intrinsics/gen/frexp/234f02.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/234f02.wgsl.expected.hlsl
new file mode 100644
index 0000000..6611fed
--- /dev/null
+++ b/test/intrinsics/gen/frexp/234f02.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_234f02() {
+  var arg_1 : vec4<u32>;
+  var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_234f02();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_234f02();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_234f02();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/234f02.wgsl.expected.msl b/test/intrinsics/gen/frexp/234f02.wgsl.expected.msl
new file mode 100644
index 0000000..7866d13
--- /dev/null
+++ b/test/intrinsics/gen/frexp/234f02.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_234f02() {
+  var arg_1 : vec4<u32>;
+  var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_234f02();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_234f02();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_234f02();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/2507b2.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/234f02.wgsl.expected.spvasm
similarity index 91%
copy from test/intrinsics/gen/frexp/2507b2.wgsl.expected.spvasm
copy to test/intrinsics/gen/frexp/234f02.wgsl.expected.spvasm
index b937ce8..45424f1 100644
--- a/test/intrinsics/gen/frexp/2507b2.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/234f02.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_2507b2 "frexp_2507b2"
+               OpName %frexp_234f02 "frexp_234f02"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -40,7 +40,7 @@
 %_ptr_Function_v4float = OpTypePointer Function %v4float
          %23 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%frexp_2507b2 = OpFunction %void None %9
+%frexp_234f02 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v4uint Function %17
         %res = OpVariable %_ptr_Function_v4float Function %8
@@ -57,17 +57,17 @@
 %vertex_main = OpFunction %void None %9
          %28 = OpLabel
                OpStore %tint_pointsize %float_1
-         %30 = OpFunctionCall %void %frexp_2507b2
+         %30 = OpFunctionCall %void %frexp_234f02
          %31 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %33 = OpLabel
-         %34 = OpFunctionCall %void %frexp_2507b2
+         %34 = OpFunctionCall %void %frexp_234f02
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %36 = OpLabel
-         %37 = OpFunctionCall %void %frexp_2507b2
+         %37 = OpFunctionCall %void %frexp_234f02
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/2507b2.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/234f02.wgsl.expected.wgsl
similarity index 78%
copy from test/intrinsics/gen/frexp/2507b2.wgsl.expected.wgsl
copy to test/intrinsics/gen/frexp/234f02.wgsl.expected.wgsl
index 1e09ae6..d695720 100644
--- a/test/intrinsics/gen/frexp/2507b2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/234f02.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_2507b2() {
+fn frexp_234f02() {
   var arg_1 : vec4<u32>;
   var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_2507b2();
+  frexp_234f02();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_2507b2();
+  frexp_234f02();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_2507b2();
+  frexp_234f02();
 }
diff --git a/test/intrinsics/gen/frexp/2507b2.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/2507b2.wgsl.expected.hlsl
deleted file mode 100644
index 620eb05..0000000
--- a/test/intrinsics/gen/frexp/2507b2.wgsl.expected.hlsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn frexp_2507b2() {
-  var arg_1 : vec4<u32>;
-  var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  frexp_2507b2();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  frexp_2507b2();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  frexp_2507b2();
-}
-
-Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/2507b2.wgsl.expected.msl b/test/intrinsics/gen/frexp/2507b2.wgsl.expected.msl
deleted file mode 100644
index 1a9febb..0000000
--- a/test/intrinsics/gen/frexp/2507b2.wgsl.expected.msl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn frexp_2507b2() {
-  var arg_1 : vec4<u32>;
-  var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  frexp_2507b2();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  frexp_2507b2();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  frexp_2507b2();
-}
-
-Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/2a171c.wgsl b/test/intrinsics/gen/frexp/2945dc.wgsl
similarity index 94%
copy from test/intrinsics/gen/frexp/2a171c.wgsl
copy to test/intrinsics/gen/frexp/2945dc.wgsl
index 856dbda..9f626f8 100644
--- a/test/intrinsics/gen/frexp/2a171c.wgsl
+++ b/test/intrinsics/gen/frexp/2945dc.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_2a171c() {
+fn frexp_2945dc() {
   var arg_1: vec2<u32>;
   var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_2a171c();
+  frexp_2945dc();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_2a171c();
+  frexp_2945dc();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_2a171c();
+  frexp_2945dc();
 }
diff --git a/test/intrinsics/gen/frexp/2945dc.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/2945dc.wgsl.expected.hlsl
new file mode 100644
index 0000000..0b0d3ac
--- /dev/null
+++ b/test/intrinsics/gen/frexp/2945dc.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_2945dc() {
+  var arg_1 : vec2<u32>;
+  var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_2945dc();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_2945dc();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_2945dc();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/2945dc.wgsl.expected.msl b/test/intrinsics/gen/frexp/2945dc.wgsl.expected.msl
new file mode 100644
index 0000000..068213b
--- /dev/null
+++ b/test/intrinsics/gen/frexp/2945dc.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_2945dc() {
+  var arg_1 : vec2<u32>;
+  var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_2945dc();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_2945dc();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_2945dc();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/2a171c.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/2945dc.wgsl.expected.spvasm
similarity index 92%
copy from test/intrinsics/gen/frexp/2a171c.wgsl.expected.spvasm
copy to test/intrinsics/gen/frexp/2945dc.wgsl.expected.spvasm
index 2369b9f..7b0f3b8 100644
--- a/test/intrinsics/gen/frexp/2a171c.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/2945dc.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_2a171c "frexp_2a171c"
+               OpName %frexp_2945dc "frexp_2945dc"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -42,7 +42,7 @@
 %_ptr_Function_v2float = OpTypePointer Function %v2float
          %25 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%frexp_2a171c = OpFunction %void None %9
+%frexp_2945dc = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v2uint Function %17
         %res = OpVariable %_ptr_Function_v2float Function %21
@@ -59,17 +59,17 @@
 %vertex_main = OpFunction %void None %9
          %30 = OpLabel
                OpStore %tint_pointsize %float_1
-         %32 = OpFunctionCall %void %frexp_2a171c
+         %32 = OpFunctionCall %void %frexp_2945dc
          %33 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %35 = OpLabel
-         %36 = OpFunctionCall %void %frexp_2a171c
+         %36 = OpFunctionCall %void %frexp_2945dc
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %38 = OpLabel
-         %39 = OpFunctionCall %void %frexp_2a171c
+         %39 = OpFunctionCall %void %frexp_2945dc
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/2a171c.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/2945dc.wgsl.expected.wgsl
similarity index 78%
rename from test/intrinsics/gen/frexp/2a171c.wgsl.expected.wgsl
rename to test/intrinsics/gen/frexp/2945dc.wgsl.expected.wgsl
index ffd3acd..eab81c0 100644
--- a/test/intrinsics/gen/frexp/2a171c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/2945dc.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_2a171c() {
+fn frexp_2945dc() {
   var arg_1 : vec2<u32>;
   var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_2a171c();
+  frexp_2945dc();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_2a171c();
+  frexp_2945dc();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_2a171c();
+  frexp_2945dc();
 }
diff --git a/test/intrinsics/gen/frexp/2a171c.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/2a171c.wgsl.expected.hlsl
deleted file mode 100644
index 0e70670..0000000
--- a/test/intrinsics/gen/frexp/2a171c.wgsl.expected.hlsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn frexp_2a171c() {
-  var arg_1 : vec2<u32>;
-  var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  frexp_2a171c();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  frexp_2a171c();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  frexp_2a171c();
-}
-
-Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/2a171c.wgsl.expected.msl b/test/intrinsics/gen/frexp/2a171c.wgsl.expected.msl
deleted file mode 100644
index ea365cf..0000000
--- a/test/intrinsics/gen/frexp/2a171c.wgsl.expected.msl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn frexp_2a171c() {
-  var arg_1 : vec2<u32>;
-  var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  frexp_2a171c();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  frexp_2a171c();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  frexp_2a171c();
-}
-
-Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/34dd30.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/34dd30.wgsl.expected.hlsl
deleted file mode 100644
index ee41ea0..0000000
--- a/test/intrinsics/gen/frexp/34dd30.wgsl.expected.hlsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn frexp_34dd30() {
-  var arg_1 : u32;
-  var res : f32 = frexp(1.0, &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  frexp_34dd30();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  frexp_34dd30();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  frexp_34dd30();
-}
-
-Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/34dd30.wgsl.expected.msl b/test/intrinsics/gen/frexp/34dd30.wgsl.expected.msl
deleted file mode 100644
index 05171f1..0000000
--- a/test/intrinsics/gen/frexp/34dd30.wgsl.expected.msl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn frexp_34dd30() {
-  var arg_1 : u32;
-  var res : f32 = frexp(1.0, &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  frexp_34dd30();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  frexp_34dd30();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  frexp_34dd30();
-}
-
-Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/99b922.wgsl b/test/intrinsics/gen/frexp/41e931.wgsl
similarity index 93%
copy from test/intrinsics/gen/frexp/99b922.wgsl
copy to test/intrinsics/gen/frexp/41e931.wgsl
index 44f1976..90c0994 100644
--- a/test/intrinsics/gen/frexp/99b922.wgsl
+++ b/test/intrinsics/gen/frexp/41e931.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_99b922() {
+fn frexp_41e931() {
   var arg_1: i32;
   var res: f32 = frexp(1.0, &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_99b922();
+  frexp_41e931();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_99b922();
+  frexp_41e931();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_99b922();
+  frexp_41e931();
 }
diff --git a/test/intrinsics/gen/frexp/41e931.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/41e931.wgsl.expected.hlsl
new file mode 100644
index 0000000..a2ddb10
--- /dev/null
+++ b/test/intrinsics/gen/frexp/41e931.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_41e931() {
+  var arg_1 : i32;
+  var res : f32 = frexp(1.0, &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_41e931();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_41e931();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_41e931();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/41e931.wgsl.expected.msl b/test/intrinsics/gen/frexp/41e931.wgsl.expected.msl
new file mode 100644
index 0000000..f8f262b
--- /dev/null
+++ b/test/intrinsics/gen/frexp/41e931.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_41e931() {
+  var arg_1 : i32;
+  var res : f32 = frexp(1.0, &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_41e931();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_41e931();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_41e931();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/99b922.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/41e931.wgsl.expected.spvasm
similarity index 91%
rename from test/intrinsics/gen/frexp/99b922.wgsl.expected.spvasm
rename to test/intrinsics/gen/frexp/41e931.wgsl.expected.spvasm
index 5b3d37c..fb8b59b 100644
--- a/test/intrinsics/gen/frexp/99b922.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/41e931.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_99b922 "frexp_99b922"
+               OpName %frexp_41e931 "frexp_41e931"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -39,7 +39,7 @@
     %float_1 = OpConstant %float 1
 %_ptr_Function_float = OpTypePointer Function %float
          %23 = OpTypeFunction %void %v4float
-%frexp_99b922 = OpFunction %void None %9
+%frexp_41e931 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_int Function %16
         %res = OpVariable %_ptr_Function_float Function %4
@@ -56,17 +56,17 @@
 %vertex_main = OpFunction %void None %9
          %28 = OpLabel
                OpStore %tint_pointsize %float_1
-         %29 = OpFunctionCall %void %frexp_99b922
+         %29 = OpFunctionCall %void %frexp_41e931
          %30 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %32 = OpLabel
-         %33 = OpFunctionCall %void %frexp_99b922
+         %33 = OpFunctionCall %void %frexp_41e931
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %35 = OpLabel
-         %36 = OpFunctionCall %void %frexp_99b922
+         %36 = OpFunctionCall %void %frexp_41e931
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/99b922.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/41e931.wgsl.expected.wgsl
similarity index 76%
copy from test/intrinsics/gen/frexp/99b922.wgsl.expected.wgsl
copy to test/intrinsics/gen/frexp/41e931.wgsl.expected.wgsl
index 6f56b9e..861e85a 100644
--- a/test/intrinsics/gen/frexp/99b922.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/41e931.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_99b922() {
+fn frexp_41e931() {
   var arg_1 : i32;
   var res : f32 = frexp(1.0, &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_99b922();
+  frexp_41e931();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_99b922();
+  frexp_41e931();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_99b922();
+  frexp_41e931();
 }
diff --git a/test/intrinsics/gen/frexp/99b922.wgsl b/test/intrinsics/gen/frexp/481e59.wgsl
similarity index 93%
copy from test/intrinsics/gen/frexp/99b922.wgsl
copy to test/intrinsics/gen/frexp/481e59.wgsl
index 44f1976..26eb6f8 100644
--- a/test/intrinsics/gen/frexp/99b922.wgsl
+++ b/test/intrinsics/gen/frexp/481e59.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_99b922() {
+fn frexp_481e59() {
   var arg_1: i32;
   var res: f32 = frexp(1.0, &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_99b922();
+  frexp_481e59();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_99b922();
+  frexp_481e59();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_99b922();
+  frexp_481e59();
 }
diff --git a/test/intrinsics/gen/frexp/481e59.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/481e59.wgsl.expected.hlsl
new file mode 100644
index 0000000..aed728b
--- /dev/null
+++ b/test/intrinsics/gen/frexp/481e59.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_481e59() {
+  var arg_1 : i32;
+  var res : f32 = frexp(1.0, &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_481e59();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_481e59();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_481e59();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/481e59.wgsl.expected.msl b/test/intrinsics/gen/frexp/481e59.wgsl.expected.msl
new file mode 100644
index 0000000..818d1fa
--- /dev/null
+++ b/test/intrinsics/gen/frexp/481e59.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_481e59() {
+  var arg_1 : i32;
+  var res : f32 = frexp(1.0, &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_481e59();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_481e59();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_481e59();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/99b922.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/481e59.wgsl.expected.spvasm
similarity index 91%
copy from test/intrinsics/gen/frexp/99b922.wgsl.expected.spvasm
copy to test/intrinsics/gen/frexp/481e59.wgsl.expected.spvasm
index 5b3d37c..9b2cd5a 100644
--- a/test/intrinsics/gen/frexp/99b922.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/481e59.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_99b922 "frexp_99b922"
+               OpName %frexp_481e59 "frexp_481e59"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -39,7 +39,7 @@
     %float_1 = OpConstant %float 1
 %_ptr_Function_float = OpTypePointer Function %float
          %23 = OpTypeFunction %void %v4float
-%frexp_99b922 = OpFunction %void None %9
+%frexp_481e59 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_int Function %16
         %res = OpVariable %_ptr_Function_float Function %4
@@ -56,17 +56,17 @@
 %vertex_main = OpFunction %void None %9
          %28 = OpLabel
                OpStore %tint_pointsize %float_1
-         %29 = OpFunctionCall %void %frexp_99b922
+         %29 = OpFunctionCall %void %frexp_481e59
          %30 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %32 = OpLabel
-         %33 = OpFunctionCall %void %frexp_99b922
+         %33 = OpFunctionCall %void %frexp_481e59
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %35 = OpLabel
-         %36 = OpFunctionCall %void %frexp_99b922
+         %36 = OpFunctionCall %void %frexp_481e59
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/99b922.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/481e59.wgsl.expected.wgsl
similarity index 76%
rename from test/intrinsics/gen/frexp/99b922.wgsl.expected.wgsl
rename to test/intrinsics/gen/frexp/481e59.wgsl.expected.wgsl
index 6f56b9e..85d63e6 100644
--- a/test/intrinsics/gen/frexp/99b922.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/481e59.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_99b922() {
+fn frexp_481e59() {
   var arg_1 : i32;
   var res : f32 = frexp(1.0, &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_99b922();
+  frexp_481e59();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_99b922();
+  frexp_481e59();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_99b922();
+  frexp_481e59();
 }
diff --git a/test/intrinsics/gen/frexp/4b73e3.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/4b73e3.wgsl.expected.hlsl
deleted file mode 100644
index 238343c..0000000
--- a/test/intrinsics/gen/frexp/4b73e3.wgsl.expected.hlsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn frexp_4b73e3() {
-  var arg_1 : vec4<i32>;
-  var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  frexp_4b73e3();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  frexp_4b73e3();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  frexp_4b73e3();
-}
-
-Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/4b73e3.wgsl.expected.msl b/test/intrinsics/gen/frexp/4b73e3.wgsl.expected.msl
deleted file mode 100644
index d993f99..0000000
--- a/test/intrinsics/gen/frexp/4b73e3.wgsl.expected.msl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn frexp_4b73e3() {
-  var arg_1 : vec4<i32>;
-  var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  frexp_4b73e3();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  frexp_4b73e3();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  frexp_4b73e3();
-}
-
-Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/79ed81.wgsl b/test/intrinsics/gen/frexp/5a141e.wgsl
similarity index 94%
rename from test/intrinsics/gen/frexp/79ed81.wgsl
rename to test/intrinsics/gen/frexp/5a141e.wgsl
index 4debf1d..0dc80ef 100644
--- a/test/intrinsics/gen/frexp/79ed81.wgsl
+++ b/test/intrinsics/gen/frexp/5a141e.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_79ed81() {
+fn frexp_5a141e() {
   var arg_1: vec3<i32>;
   var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_79ed81();
+  frexp_5a141e();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_79ed81();
+  frexp_5a141e();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_79ed81();
+  frexp_5a141e();
 }
diff --git a/test/intrinsics/gen/frexp/5a141e.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/5a141e.wgsl.expected.hlsl
new file mode 100644
index 0000000..b10253f
--- /dev/null
+++ b/test/intrinsics/gen/frexp/5a141e.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_5a141e() {
+  var arg_1 : vec3<i32>;
+  var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_5a141e();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_5a141e();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_5a141e();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/5a141e.wgsl.expected.msl b/test/intrinsics/gen/frexp/5a141e.wgsl.expected.msl
new file mode 100644
index 0000000..43878ff
--- /dev/null
+++ b/test/intrinsics/gen/frexp/5a141e.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_5a141e() {
+  var arg_1 : vec3<i32>;
+  var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_5a141e();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_5a141e();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_5a141e();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/79ed81.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/5a141e.wgsl.expected.spvasm
similarity index 92%
rename from test/intrinsics/gen/frexp/79ed81.wgsl.expected.spvasm
rename to test/intrinsics/gen/frexp/5a141e.wgsl.expected.spvasm
index be88edd..25145e1 100644
--- a/test/intrinsics/gen/frexp/79ed81.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/5a141e.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_79ed81 "frexp_79ed81"
+               OpName %frexp_5a141e "frexp_5a141e"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -42,7 +42,7 @@
 %_ptr_Function_v3float = OpTypePointer Function %v3float
          %25 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%frexp_79ed81 = OpFunction %void None %9
+%frexp_5a141e = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v3int Function %17
         %res = OpVariable %_ptr_Function_v3float Function %21
@@ -59,17 +59,17 @@
 %vertex_main = OpFunction %void None %9
          %30 = OpLabel
                OpStore %tint_pointsize %float_1
-         %32 = OpFunctionCall %void %frexp_79ed81
+         %32 = OpFunctionCall %void %frexp_5a141e
          %33 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %35 = OpLabel
-         %36 = OpFunctionCall %void %frexp_79ed81
+         %36 = OpFunctionCall %void %frexp_5a141e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %38 = OpLabel
-         %39 = OpFunctionCall %void %frexp_79ed81
+         %39 = OpFunctionCall %void %frexp_5a141e
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/79ed81.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/5a141e.wgsl.expected.wgsl
similarity index 78%
copy from test/intrinsics/gen/frexp/79ed81.wgsl.expected.wgsl
copy to test/intrinsics/gen/frexp/5a141e.wgsl.expected.wgsl
index 8c5eff8..876a8b0 100644
--- a/test/intrinsics/gen/frexp/79ed81.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/5a141e.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_79ed81() {
+fn frexp_5a141e() {
   var arg_1 : vec3<i32>;
   var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_79ed81();
+  frexp_5a141e();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_79ed81();
+  frexp_5a141e();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_79ed81();
+  frexp_5a141e();
 }
diff --git a/test/intrinsics/gen/frexp/cb41c5.wgsl b/test/intrinsics/gen/frexp/64e816.wgsl
similarity index 94%
copy from test/intrinsics/gen/frexp/cb41c5.wgsl
copy to test/intrinsics/gen/frexp/64e816.wgsl
index 5bbb652..a3a82e1 100644
--- a/test/intrinsics/gen/frexp/cb41c5.wgsl
+++ b/test/intrinsics/gen/frexp/64e816.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_cb41c5() {
+fn frexp_64e816() {
   var arg_1: vec3<u32>;
   var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_cb41c5();
+  frexp_64e816();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_cb41c5();
+  frexp_64e816();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_cb41c5();
+  frexp_64e816();
 }
diff --git a/test/intrinsics/gen/frexp/64e816.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/64e816.wgsl.expected.hlsl
new file mode 100644
index 0000000..88bd5b2
--- /dev/null
+++ b/test/intrinsics/gen/frexp/64e816.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_64e816() {
+  var arg_1 : vec3<u32>;
+  var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_64e816();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_64e816();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_64e816();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/64e816.wgsl.expected.msl b/test/intrinsics/gen/frexp/64e816.wgsl.expected.msl
new file mode 100644
index 0000000..b6e90a7
--- /dev/null
+++ b/test/intrinsics/gen/frexp/64e816.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_64e816() {
+  var arg_1 : vec3<u32>;
+  var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_64e816();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_64e816();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_64e816();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/cb41c5.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/64e816.wgsl.expected.spvasm
similarity index 92%
rename from test/intrinsics/gen/frexp/cb41c5.wgsl.expected.spvasm
rename to test/intrinsics/gen/frexp/64e816.wgsl.expected.spvasm
index f539a3c..f9109d0 100644
--- a/test/intrinsics/gen/frexp/cb41c5.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/64e816.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_cb41c5 "frexp_cb41c5"
+               OpName %frexp_64e816 "frexp_64e816"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -42,7 +42,7 @@
 %_ptr_Function_v3float = OpTypePointer Function %v3float
          %25 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%frexp_cb41c5 = OpFunction %void None %9
+%frexp_64e816 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v3uint Function %17
         %res = OpVariable %_ptr_Function_v3float Function %21
@@ -59,17 +59,17 @@
 %vertex_main = OpFunction %void None %9
          %30 = OpLabel
                OpStore %tint_pointsize %float_1
-         %32 = OpFunctionCall %void %frexp_cb41c5
+         %32 = OpFunctionCall %void %frexp_64e816
          %33 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %35 = OpLabel
-         %36 = OpFunctionCall %void %frexp_cb41c5
+         %36 = OpFunctionCall %void %frexp_64e816
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %38 = OpLabel
-         %39 = OpFunctionCall %void %frexp_cb41c5
+         %39 = OpFunctionCall %void %frexp_64e816
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/cb41c5.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/64e816.wgsl.expected.wgsl
similarity index 78%
rename from test/intrinsics/gen/frexp/cb41c5.wgsl.expected.wgsl
rename to test/intrinsics/gen/frexp/64e816.wgsl.expected.wgsl
index 24c63ba..aa4abe5 100644
--- a/test/intrinsics/gen/frexp/cb41c5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/64e816.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_cb41c5() {
+fn frexp_64e816() {
   var arg_1 : vec3<u32>;
   var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_cb41c5();
+  frexp_64e816();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_cb41c5();
+  frexp_64e816();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_cb41c5();
+  frexp_64e816();
 }
diff --git a/test/intrinsics/gen/frexp/2507b2.wgsl b/test/intrinsics/gen/frexp/68fc89.wgsl
similarity index 94%
copy from test/intrinsics/gen/frexp/2507b2.wgsl
copy to test/intrinsics/gen/frexp/68fc89.wgsl
index 2e1284c..2f94c36 100644
--- a/test/intrinsics/gen/frexp/2507b2.wgsl
+++ b/test/intrinsics/gen/frexp/68fc89.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_2507b2() {
+fn frexp_68fc89() {
   var arg_1: vec4<u32>;
   var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_2507b2();
+  frexp_68fc89();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_2507b2();
+  frexp_68fc89();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_2507b2();
+  frexp_68fc89();
 }
diff --git a/test/intrinsics/gen/frexp/68fc89.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/68fc89.wgsl.expected.hlsl
new file mode 100644
index 0000000..47a27bb
--- /dev/null
+++ b/test/intrinsics/gen/frexp/68fc89.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_68fc89() {
+  var arg_1 : vec4<u32>;
+  var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_68fc89();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_68fc89();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_68fc89();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/68fc89.wgsl.expected.msl b/test/intrinsics/gen/frexp/68fc89.wgsl.expected.msl
new file mode 100644
index 0000000..5a205d4
--- /dev/null
+++ b/test/intrinsics/gen/frexp/68fc89.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_68fc89() {
+  var arg_1 : vec4<u32>;
+  var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_68fc89();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_68fc89();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_68fc89();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/2507b2.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/68fc89.wgsl.expected.spvasm
similarity index 91%
rename from test/intrinsics/gen/frexp/2507b2.wgsl.expected.spvasm
rename to test/intrinsics/gen/frexp/68fc89.wgsl.expected.spvasm
index b937ce8..867f9c7 100644
--- a/test/intrinsics/gen/frexp/2507b2.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/68fc89.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_2507b2 "frexp_2507b2"
+               OpName %frexp_68fc89 "frexp_68fc89"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -40,7 +40,7 @@
 %_ptr_Function_v4float = OpTypePointer Function %v4float
          %23 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%frexp_2507b2 = OpFunction %void None %9
+%frexp_68fc89 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v4uint Function %17
         %res = OpVariable %_ptr_Function_v4float Function %8
@@ -57,17 +57,17 @@
 %vertex_main = OpFunction %void None %9
          %28 = OpLabel
                OpStore %tint_pointsize %float_1
-         %30 = OpFunctionCall %void %frexp_2507b2
+         %30 = OpFunctionCall %void %frexp_68fc89
          %31 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %33 = OpLabel
-         %34 = OpFunctionCall %void %frexp_2507b2
+         %34 = OpFunctionCall %void %frexp_68fc89
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %36 = OpLabel
-         %37 = OpFunctionCall %void %frexp_2507b2
+         %37 = OpFunctionCall %void %frexp_68fc89
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/2507b2.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/68fc89.wgsl.expected.wgsl
similarity index 78%
copy from test/intrinsics/gen/frexp/2507b2.wgsl.expected.wgsl
copy to test/intrinsics/gen/frexp/68fc89.wgsl.expected.wgsl
index 1e09ae6..c0b246c 100644
--- a/test/intrinsics/gen/frexp/2507b2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/68fc89.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_2507b2() {
+fn frexp_68fc89() {
   var arg_1 : vec4<u32>;
   var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_2507b2();
+  frexp_68fc89();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_2507b2();
+  frexp_68fc89();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_2507b2();
+  frexp_68fc89();
 }
diff --git a/test/intrinsics/gen/frexp/79ed81.wgsl b/test/intrinsics/gen/frexp/6d0058.wgsl
similarity index 94%
copy from test/intrinsics/gen/frexp/79ed81.wgsl
copy to test/intrinsics/gen/frexp/6d0058.wgsl
index 4debf1d..cfc4b35 100644
--- a/test/intrinsics/gen/frexp/79ed81.wgsl
+++ b/test/intrinsics/gen/frexp/6d0058.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_79ed81() {
+fn frexp_6d0058() {
   var arg_1: vec3<i32>;
   var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_79ed81();
+  frexp_6d0058();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_79ed81();
+  frexp_6d0058();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_79ed81();
+  frexp_6d0058();
 }
diff --git a/test/intrinsics/gen/frexp/6d0058.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/6d0058.wgsl.expected.hlsl
new file mode 100644
index 0000000..43e0a07
--- /dev/null
+++ b/test/intrinsics/gen/frexp/6d0058.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_6d0058() {
+  var arg_1 : vec3<i32>;
+  var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_6d0058();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_6d0058();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_6d0058();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/6d0058.wgsl.expected.msl b/test/intrinsics/gen/frexp/6d0058.wgsl.expected.msl
new file mode 100644
index 0000000..efa0d91
--- /dev/null
+++ b/test/intrinsics/gen/frexp/6d0058.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_6d0058() {
+  var arg_1 : vec3<i32>;
+  var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_6d0058();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_6d0058();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_6d0058();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/79ed81.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/6d0058.wgsl.expected.spvasm
similarity index 92%
copy from test/intrinsics/gen/frexp/79ed81.wgsl.expected.spvasm
copy to test/intrinsics/gen/frexp/6d0058.wgsl.expected.spvasm
index be88edd..51638f6 100644
--- a/test/intrinsics/gen/frexp/79ed81.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/6d0058.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_79ed81 "frexp_79ed81"
+               OpName %frexp_6d0058 "frexp_6d0058"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -42,7 +42,7 @@
 %_ptr_Function_v3float = OpTypePointer Function %v3float
          %25 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%frexp_79ed81 = OpFunction %void None %9
+%frexp_6d0058 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v3int Function %17
         %res = OpVariable %_ptr_Function_v3float Function %21
@@ -59,17 +59,17 @@
 %vertex_main = OpFunction %void None %9
          %30 = OpLabel
                OpStore %tint_pointsize %float_1
-         %32 = OpFunctionCall %void %frexp_79ed81
+         %32 = OpFunctionCall %void %frexp_6d0058
          %33 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %35 = OpLabel
-         %36 = OpFunctionCall %void %frexp_79ed81
+         %36 = OpFunctionCall %void %frexp_6d0058
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %38 = OpLabel
-         %39 = OpFunctionCall %void %frexp_79ed81
+         %39 = OpFunctionCall %void %frexp_6d0058
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/79ed81.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/6d0058.wgsl.expected.wgsl
similarity index 78%
copy from test/intrinsics/gen/frexp/79ed81.wgsl.expected.wgsl
copy to test/intrinsics/gen/frexp/6d0058.wgsl.expected.wgsl
index 8c5eff8..a89b367 100644
--- a/test/intrinsics/gen/frexp/79ed81.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/6d0058.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_79ed81() {
+fn frexp_6d0058() {
   var arg_1 : vec3<i32>;
   var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_79ed81();
+  frexp_6d0058();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_79ed81();
+  frexp_6d0058();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_79ed81();
+  frexp_6d0058();
 }
diff --git a/test/intrinsics/gen/frexp/2507b2.wgsl b/test/intrinsics/gen/frexp/6f0e62.wgsl
similarity index 94%
rename from test/intrinsics/gen/frexp/2507b2.wgsl
rename to test/intrinsics/gen/frexp/6f0e62.wgsl
index 2e1284c..05d62e8 100644
--- a/test/intrinsics/gen/frexp/2507b2.wgsl
+++ b/test/intrinsics/gen/frexp/6f0e62.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_2507b2() {
+fn frexp_6f0e62() {
   var arg_1: vec4<u32>;
   var res: vec4<f32> = frexp(vec4<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_2507b2();
+  frexp_6f0e62();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_2507b2();
+  frexp_6f0e62();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_2507b2();
+  frexp_6f0e62();
 }
diff --git a/test/intrinsics/gen/frexp/6f0e62.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/6f0e62.wgsl.expected.hlsl
new file mode 100644
index 0000000..61f8228
--- /dev/null
+++ b/test/intrinsics/gen/frexp/6f0e62.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_6f0e62() {
+  var arg_1 : vec4<u32>;
+  var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_6f0e62();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_6f0e62();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_6f0e62();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/6f0e62.wgsl.expected.msl b/test/intrinsics/gen/frexp/6f0e62.wgsl.expected.msl
new file mode 100644
index 0000000..cb7fe62
--- /dev/null
+++ b/test/intrinsics/gen/frexp/6f0e62.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_6f0e62() {
+  var arg_1 : vec4<u32>;
+  var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_6f0e62();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_6f0e62();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_6f0e62();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/2507b2.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/6f0e62.wgsl.expected.spvasm
similarity index 91%
copy from test/intrinsics/gen/frexp/2507b2.wgsl.expected.spvasm
copy to test/intrinsics/gen/frexp/6f0e62.wgsl.expected.spvasm
index b937ce8..79b099d 100644
--- a/test/intrinsics/gen/frexp/2507b2.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/6f0e62.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_2507b2 "frexp_2507b2"
+               OpName %frexp_6f0e62 "frexp_6f0e62"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -40,7 +40,7 @@
 %_ptr_Function_v4float = OpTypePointer Function %v4float
          %23 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%frexp_2507b2 = OpFunction %void None %9
+%frexp_6f0e62 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v4uint Function %17
         %res = OpVariable %_ptr_Function_v4float Function %8
@@ -57,17 +57,17 @@
 %vertex_main = OpFunction %void None %9
          %28 = OpLabel
                OpStore %tint_pointsize %float_1
-         %30 = OpFunctionCall %void %frexp_2507b2
+         %30 = OpFunctionCall %void %frexp_6f0e62
          %31 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %33 = OpLabel
-         %34 = OpFunctionCall %void %frexp_2507b2
+         %34 = OpFunctionCall %void %frexp_6f0e62
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %36 = OpLabel
-         %37 = OpFunctionCall %void %frexp_2507b2
+         %37 = OpFunctionCall %void %frexp_6f0e62
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/2507b2.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/6f0e62.wgsl.expected.wgsl
similarity index 78%
rename from test/intrinsics/gen/frexp/2507b2.wgsl.expected.wgsl
rename to test/intrinsics/gen/frexp/6f0e62.wgsl.expected.wgsl
index 1e09ae6..b4dc40e 100644
--- a/test/intrinsics/gen/frexp/2507b2.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/6f0e62.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_2507b2() {
+fn frexp_6f0e62() {
   var arg_1 : vec4<u32>;
   var res : vec4<f32> = frexp(vec4<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_2507b2();
+  frexp_6f0e62();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_2507b2();
+  frexp_6f0e62();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_2507b2();
+  frexp_6f0e62();
 }
diff --git a/test/intrinsics/gen/frexp/34dd30.wgsl b/test/intrinsics/gen/frexp/790800.wgsl
similarity index 94%
rename from test/intrinsics/gen/frexp/34dd30.wgsl
rename to test/intrinsics/gen/frexp/790800.wgsl
index 50bc56c..e925c31 100644
--- a/test/intrinsics/gen/frexp/34dd30.wgsl
+++ b/test/intrinsics/gen/frexp/790800.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_34dd30() {
+fn frexp_790800() {
   var arg_1: u32;
   var res: f32 = frexp(1.0, &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_34dd30();
+  frexp_790800();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_34dd30();
+  frexp_790800();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_34dd30();
+  frexp_790800();
 }
diff --git a/test/intrinsics/gen/frexp/790800.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/790800.wgsl.expected.hlsl
new file mode 100644
index 0000000..e6727b9
--- /dev/null
+++ b/test/intrinsics/gen/frexp/790800.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_790800() {
+  var arg_1 : u32;
+  var res : f32 = frexp(1.0, &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_790800();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_790800();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_790800();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/790800.wgsl.expected.msl b/test/intrinsics/gen/frexp/790800.wgsl.expected.msl
new file mode 100644
index 0000000..5272c01
--- /dev/null
+++ b/test/intrinsics/gen/frexp/790800.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_790800() {
+  var arg_1 : u32;
+  var res : f32 = frexp(1.0, &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_790800();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_790800();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_790800();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/34dd30.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/790800.wgsl.expected.spvasm
similarity index 91%
rename from test/intrinsics/gen/frexp/34dd30.wgsl.expected.spvasm
rename to test/intrinsics/gen/frexp/790800.wgsl.expected.spvasm
index 3dc8037..1b1ff20 100644
--- a/test/intrinsics/gen/frexp/34dd30.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/790800.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_34dd30 "frexp_34dd30"
+               OpName %frexp_790800 "frexp_790800"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -39,7 +39,7 @@
     %float_1 = OpConstant %float 1
 %_ptr_Function_float = OpTypePointer Function %float
          %23 = OpTypeFunction %void %v4float
-%frexp_34dd30 = OpFunction %void None %9
+%frexp_790800 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_uint Function %16
         %res = OpVariable %_ptr_Function_float Function %4
@@ -56,17 +56,17 @@
 %vertex_main = OpFunction %void None %9
          %28 = OpLabel
                OpStore %tint_pointsize %float_1
-         %29 = OpFunctionCall %void %frexp_34dd30
+         %29 = OpFunctionCall %void %frexp_790800
          %30 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %32 = OpLabel
-         %33 = OpFunctionCall %void %frexp_34dd30
+         %33 = OpFunctionCall %void %frexp_790800
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %35 = OpLabel
-         %36 = OpFunctionCall %void %frexp_34dd30
+         %36 = OpFunctionCall %void %frexp_790800
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/34dd30.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/790800.wgsl.expected.wgsl
similarity index 76%
copy from test/intrinsics/gen/frexp/34dd30.wgsl.expected.wgsl
copy to test/intrinsics/gen/frexp/790800.wgsl.expected.wgsl
index 82331db..2d57582 100644
--- a/test/intrinsics/gen/frexp/34dd30.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/790800.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_34dd30() {
+fn frexp_790800() {
   var arg_1 : u32;
   var res : f32 = frexp(1.0, &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_34dd30();
+  frexp_790800();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_34dd30();
+  frexp_790800();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_34dd30();
+  frexp_790800();
 }
diff --git a/test/intrinsics/gen/frexp/79ed81.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/79ed81.wgsl.expected.hlsl
deleted file mode 100644
index 21b606e..0000000
--- a/test/intrinsics/gen/frexp/79ed81.wgsl.expected.hlsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn frexp_79ed81() {
-  var arg_1 : vec3<i32>;
-  var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  frexp_79ed81();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  frexp_79ed81();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  frexp_79ed81();
-}
-
-Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/79ed81.wgsl.expected.msl b/test/intrinsics/gen/frexp/79ed81.wgsl.expected.msl
deleted file mode 100644
index 7b06582..0000000
--- a/test/intrinsics/gen/frexp/79ed81.wgsl.expected.msl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn frexp_79ed81() {
-  var arg_1 : vec3<i32>;
-  var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  frexp_79ed81();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  frexp_79ed81();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  frexp_79ed81();
-}
-
-Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/99b922.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/99b922.wgsl.expected.hlsl
deleted file mode 100644
index 14fef02..0000000
--- a/test/intrinsics/gen/frexp/99b922.wgsl.expected.hlsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn frexp_99b922() {
-  var arg_1 : i32;
-  var res : f32 = frexp(1.0, &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  frexp_99b922();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  frexp_99b922();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  frexp_99b922();
-}
-
-Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/99b922.wgsl.expected.msl b/test/intrinsics/gen/frexp/99b922.wgsl.expected.msl
deleted file mode 100644
index 1a98e37..0000000
--- a/test/intrinsics/gen/frexp/99b922.wgsl.expected.msl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn frexp_99b922() {
-  var arg_1 : i32;
-  var res : f32 = frexp(1.0, &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  frexp_99b922();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  frexp_99b922();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  frexp_99b922();
-}
-
-Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/1d6b62.wgsl b/test/intrinsics/gen/frexp/a951b5.wgsl
similarity index 94%
copy from test/intrinsics/gen/frexp/1d6b62.wgsl
copy to test/intrinsics/gen/frexp/a951b5.wgsl
index c790bd0..a2309ab 100644
--- a/test/intrinsics/gen/frexp/1d6b62.wgsl
+++ b/test/intrinsics/gen/frexp/a951b5.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_1d6b62() {
+fn frexp_a951b5() {
   var arg_1: vec2<i32>;
   var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_1d6b62();
+  frexp_a951b5();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_1d6b62();
+  frexp_a951b5();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_1d6b62();
+  frexp_a951b5();
 }
diff --git a/test/intrinsics/gen/frexp/a951b5.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/a951b5.wgsl.expected.hlsl
new file mode 100644
index 0000000..14836ba
--- /dev/null
+++ b/test/intrinsics/gen/frexp/a951b5.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_a951b5() {
+  var arg_1 : vec2<i32>;
+  var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_a951b5();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_a951b5();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_a951b5();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/a951b5.wgsl.expected.msl b/test/intrinsics/gen/frexp/a951b5.wgsl.expected.msl
new file mode 100644
index 0000000..1fe0cd4
--- /dev/null
+++ b/test/intrinsics/gen/frexp/a951b5.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_a951b5() {
+  var arg_1 : vec2<i32>;
+  var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_a951b5();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_a951b5();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_a951b5();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/1d6b62.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/a951b5.wgsl.expected.spvasm
similarity index 92%
copy from test/intrinsics/gen/frexp/1d6b62.wgsl.expected.spvasm
copy to test/intrinsics/gen/frexp/a951b5.wgsl.expected.spvasm
index 3342c71..8f5353e 100644
--- a/test/intrinsics/gen/frexp/1d6b62.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/a951b5.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_1d6b62 "frexp_1d6b62"
+               OpName %frexp_a951b5 "frexp_a951b5"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -42,7 +42,7 @@
 %_ptr_Function_v2float = OpTypePointer Function %v2float
          %25 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%frexp_1d6b62 = OpFunction %void None %9
+%frexp_a951b5 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v2int Function %17
         %res = OpVariable %_ptr_Function_v2float Function %21
@@ -59,17 +59,17 @@
 %vertex_main = OpFunction %void None %9
          %30 = OpLabel
                OpStore %tint_pointsize %float_1
-         %32 = OpFunctionCall %void %frexp_1d6b62
+         %32 = OpFunctionCall %void %frexp_a951b5
          %33 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %35 = OpLabel
-         %36 = OpFunctionCall %void %frexp_1d6b62
+         %36 = OpFunctionCall %void %frexp_a951b5
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %38 = OpLabel
-         %39 = OpFunctionCall %void %frexp_1d6b62
+         %39 = OpFunctionCall %void %frexp_a951b5
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/1d6b62.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/a951b5.wgsl.expected.wgsl
similarity index 78%
copy from test/intrinsics/gen/frexp/1d6b62.wgsl.expected.wgsl
copy to test/intrinsics/gen/frexp/a951b5.wgsl.expected.wgsl
index bc2e1ab..31d7562 100644
--- a/test/intrinsics/gen/frexp/1d6b62.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/a951b5.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_1d6b62() {
+fn frexp_a951b5() {
   var arg_1 : vec2<i32>;
   var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_1d6b62();
+  frexp_a951b5();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_1d6b62();
+  frexp_a951b5();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_1d6b62();
+  frexp_a951b5();
 }
diff --git a/test/intrinsics/gen/frexp/34dd30.wgsl b/test/intrinsics/gen/frexp/b2f24a.wgsl
similarity index 93%
copy from test/intrinsics/gen/frexp/34dd30.wgsl
copy to test/intrinsics/gen/frexp/b2f24a.wgsl
index 50bc56c..9643801 100644
--- a/test/intrinsics/gen/frexp/34dd30.wgsl
+++ b/test/intrinsics/gen/frexp/b2f24a.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_34dd30() {
+fn frexp_b2f24a() {
   var arg_1: u32;
   var res: f32 = frexp(1.0, &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_34dd30();
+  frexp_b2f24a();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_34dd30();
+  frexp_b2f24a();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_34dd30();
+  frexp_b2f24a();
 }
diff --git a/test/intrinsics/gen/frexp/b2f24a.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/b2f24a.wgsl.expected.hlsl
new file mode 100644
index 0000000..4adbecb
--- /dev/null
+++ b/test/intrinsics/gen/frexp/b2f24a.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_b2f24a() {
+  var arg_1 : u32;
+  var res : f32 = frexp(1.0, &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_b2f24a();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_b2f24a();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_b2f24a();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/b2f24a.wgsl.expected.msl b/test/intrinsics/gen/frexp/b2f24a.wgsl.expected.msl
new file mode 100644
index 0000000..4480d45
--- /dev/null
+++ b/test/intrinsics/gen/frexp/b2f24a.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_b2f24a() {
+  var arg_1 : u32;
+  var res : f32 = frexp(1.0, &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_b2f24a();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_b2f24a();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_b2f24a();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/34dd30.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/b2f24a.wgsl.expected.spvasm
similarity index 91%
copy from test/intrinsics/gen/frexp/34dd30.wgsl.expected.spvasm
copy to test/intrinsics/gen/frexp/b2f24a.wgsl.expected.spvasm
index 3dc8037..f2632e0 100644
--- a/test/intrinsics/gen/frexp/34dd30.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/b2f24a.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_34dd30 "frexp_34dd30"
+               OpName %frexp_b2f24a "frexp_b2f24a"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -39,7 +39,7 @@
     %float_1 = OpConstant %float 1
 %_ptr_Function_float = OpTypePointer Function %float
          %23 = OpTypeFunction %void %v4float
-%frexp_34dd30 = OpFunction %void None %9
+%frexp_b2f24a = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_uint Function %16
         %res = OpVariable %_ptr_Function_float Function %4
@@ -56,17 +56,17 @@
 %vertex_main = OpFunction %void None %9
          %28 = OpLabel
                OpStore %tint_pointsize %float_1
-         %29 = OpFunctionCall %void %frexp_34dd30
+         %29 = OpFunctionCall %void %frexp_b2f24a
          %30 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %32 = OpLabel
-         %33 = OpFunctionCall %void %frexp_34dd30
+         %33 = OpFunctionCall %void %frexp_b2f24a
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %35 = OpLabel
-         %36 = OpFunctionCall %void %frexp_34dd30
+         %36 = OpFunctionCall %void %frexp_b2f24a
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/34dd30.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/b2f24a.wgsl.expected.wgsl
similarity index 76%
copy from test/intrinsics/gen/frexp/34dd30.wgsl.expected.wgsl
copy to test/intrinsics/gen/frexp/b2f24a.wgsl.expected.wgsl
index 82331db..8bb9f17 100644
--- a/test/intrinsics/gen/frexp/34dd30.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/b2f24a.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_34dd30() {
+fn frexp_b2f24a() {
   var arg_1 : u32;
   var res : f32 = frexp(1.0, &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_34dd30();
+  frexp_b2f24a();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_34dd30();
+  frexp_b2f24a();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_34dd30();
+  frexp_b2f24a();
 }
diff --git a/test/intrinsics/gen/frexp/79ed81.wgsl b/test/intrinsics/gen/frexp/b9e4de.wgsl
similarity index 94%
copy from test/intrinsics/gen/frexp/79ed81.wgsl
copy to test/intrinsics/gen/frexp/b9e4de.wgsl
index 4debf1d..46c0257 100644
--- a/test/intrinsics/gen/frexp/79ed81.wgsl
+++ b/test/intrinsics/gen/frexp/b9e4de.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_79ed81() {
+fn frexp_b9e4de() {
   var arg_1: vec3<i32>;
   var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_79ed81();
+  frexp_b9e4de();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_79ed81();
+  frexp_b9e4de();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_79ed81();
+  frexp_b9e4de();
 }
diff --git a/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.hlsl
new file mode 100644
index 0000000..5889652
--- /dev/null
+++ b/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_b9e4de() {
+  var arg_1 : vec3<i32>;
+  var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_b9e4de();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_b9e4de();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_b9e4de();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.msl b/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.msl
new file mode 100644
index 0000000..a63ed1b
--- /dev/null
+++ b/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_b9e4de() {
+  var arg_1 : vec3<i32>;
+  var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_b9e4de();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_b9e4de();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_b9e4de();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/79ed81.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.spvasm
similarity index 92%
copy from test/intrinsics/gen/frexp/79ed81.wgsl.expected.spvasm
copy to test/intrinsics/gen/frexp/b9e4de.wgsl.expected.spvasm
index be88edd..1d6285c 100644
--- a/test/intrinsics/gen/frexp/79ed81.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_79ed81 "frexp_79ed81"
+               OpName %frexp_b9e4de "frexp_b9e4de"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -42,7 +42,7 @@
 %_ptr_Function_v3float = OpTypePointer Function %v3float
          %25 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%frexp_79ed81 = OpFunction %void None %9
+%frexp_b9e4de = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v3int Function %17
         %res = OpVariable %_ptr_Function_v3float Function %21
@@ -59,17 +59,17 @@
 %vertex_main = OpFunction %void None %9
          %30 = OpLabel
                OpStore %tint_pointsize %float_1
-         %32 = OpFunctionCall %void %frexp_79ed81
+         %32 = OpFunctionCall %void %frexp_b9e4de
          %33 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %35 = OpLabel
-         %36 = OpFunctionCall %void %frexp_79ed81
+         %36 = OpFunctionCall %void %frexp_b9e4de
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %38 = OpLabel
-         %39 = OpFunctionCall %void %frexp_79ed81
+         %39 = OpFunctionCall %void %frexp_b9e4de
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/79ed81.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.wgsl
similarity index 78%
rename from test/intrinsics/gen/frexp/79ed81.wgsl.expected.wgsl
rename to test/intrinsics/gen/frexp/b9e4de.wgsl.expected.wgsl
index 8c5eff8..9209ec0 100644
--- a/test/intrinsics/gen/frexp/79ed81.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/b9e4de.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_79ed81() {
+fn frexp_b9e4de() {
   var arg_1 : vec3<i32>;
   var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_79ed81();
+  frexp_b9e4de();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_79ed81();
+  frexp_b9e4de();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_79ed81();
+  frexp_b9e4de();
 }
diff --git a/test/intrinsics/gen/frexp/cb41c5.wgsl b/test/intrinsics/gen/frexp/c51019.wgsl
similarity index 94%
rename from test/intrinsics/gen/frexp/cb41c5.wgsl
rename to test/intrinsics/gen/frexp/c51019.wgsl
index 5bbb652..808af1f 100644
--- a/test/intrinsics/gen/frexp/cb41c5.wgsl
+++ b/test/intrinsics/gen/frexp/c51019.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_cb41c5() {
+fn frexp_c51019() {
   var arg_1: vec3<u32>;
   var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_cb41c5();
+  frexp_c51019();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_cb41c5();
+  frexp_c51019();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_cb41c5();
+  frexp_c51019();
 }
diff --git a/test/intrinsics/gen/frexp/c51019.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/c51019.wgsl.expected.hlsl
new file mode 100644
index 0000000..5aa8fd8
--- /dev/null
+++ b/test/intrinsics/gen/frexp/c51019.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_c51019() {
+  var arg_1 : vec3<u32>;
+  var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_c51019();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_c51019();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_c51019();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/c51019.wgsl.expected.msl b/test/intrinsics/gen/frexp/c51019.wgsl.expected.msl
new file mode 100644
index 0000000..bfac14f
--- /dev/null
+++ b/test/intrinsics/gen/frexp/c51019.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_c51019() {
+  var arg_1 : vec3<u32>;
+  var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_c51019();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_c51019();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_c51019();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/cb41c5.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/c51019.wgsl.expected.spvasm
similarity index 92%
copy from test/intrinsics/gen/frexp/cb41c5.wgsl.expected.spvasm
copy to test/intrinsics/gen/frexp/c51019.wgsl.expected.spvasm
index f539a3c..5cf95ea 100644
--- a/test/intrinsics/gen/frexp/cb41c5.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/c51019.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_cb41c5 "frexp_cb41c5"
+               OpName %frexp_c51019 "frexp_c51019"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -42,7 +42,7 @@
 %_ptr_Function_v3float = OpTypePointer Function %v3float
          %25 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%frexp_cb41c5 = OpFunction %void None %9
+%frexp_c51019 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v3uint Function %17
         %res = OpVariable %_ptr_Function_v3float Function %21
@@ -59,17 +59,17 @@
 %vertex_main = OpFunction %void None %9
          %30 = OpLabel
                OpStore %tint_pointsize %float_1
-         %32 = OpFunctionCall %void %frexp_cb41c5
+         %32 = OpFunctionCall %void %frexp_c51019
          %33 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %35 = OpLabel
-         %36 = OpFunctionCall %void %frexp_cb41c5
+         %36 = OpFunctionCall %void %frexp_c51019
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %38 = OpLabel
-         %39 = OpFunctionCall %void %frexp_cb41c5
+         %39 = OpFunctionCall %void %frexp_c51019
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/cb41c5.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/c51019.wgsl.expected.wgsl
similarity index 78%
copy from test/intrinsics/gen/frexp/cb41c5.wgsl.expected.wgsl
copy to test/intrinsics/gen/frexp/c51019.wgsl.expected.wgsl
index 24c63ba..4340a8d 100644
--- a/test/intrinsics/gen/frexp/cb41c5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/c51019.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_cb41c5() {
+fn frexp_c51019() {
   var arg_1 : vec3<u32>;
   var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_cb41c5();
+  frexp_c51019();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_cb41c5();
+  frexp_c51019();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_cb41c5();
+  frexp_c51019();
 }
diff --git a/test/intrinsics/gen/frexp/cb41c5.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/cb41c5.wgsl.expected.hlsl
deleted file mode 100644
index 820b451..0000000
--- a/test/intrinsics/gen/frexp/cb41c5.wgsl.expected.hlsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn frexp_cb41c5() {
-  var arg_1 : vec3<u32>;
-  var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  frexp_cb41c5();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  frexp_cb41c5();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  frexp_cb41c5();
-}
-
-Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/cb41c5.wgsl.expected.msl b/test/intrinsics/gen/frexp/cb41c5.wgsl.expected.msl
deleted file mode 100644
index ab6546f..0000000
--- a/test/intrinsics/gen/frexp/cb41c5.wgsl.expected.msl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn frexp_cb41c5() {
-  var arg_1 : vec3<u32>;
-  var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  frexp_cb41c5();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  frexp_cb41c5();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  frexp_cb41c5();
-}
-
-Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/1d6b62.wgsl b/test/intrinsics/gen/frexp/d06c2c.wgsl
similarity index 94%
rename from test/intrinsics/gen/frexp/1d6b62.wgsl
rename to test/intrinsics/gen/frexp/d06c2c.wgsl
index c790bd0..11e757e 100644
--- a/test/intrinsics/gen/frexp/1d6b62.wgsl
+++ b/test/intrinsics/gen/frexp/d06c2c.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_1d6b62() {
+fn frexp_d06c2c() {
   var arg_1: vec2<i32>;
   var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_1d6b62();
+  frexp_d06c2c();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_1d6b62();
+  frexp_d06c2c();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_1d6b62();
+  frexp_d06c2c();
 }
diff --git a/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.hlsl
new file mode 100644
index 0000000..2618017
--- /dev/null
+++ b/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_d06c2c() {
+  var arg_1 : vec2<i32>;
+  var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_d06c2c();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_d06c2c();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_d06c2c();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.msl b/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.msl
new file mode 100644
index 0000000..672bbfa
--- /dev/null
+++ b/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_d06c2c() {
+  var arg_1 : vec2<i32>;
+  var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_d06c2c();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_d06c2c();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_d06c2c();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/1d6b62.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.spvasm
similarity index 92%
rename from test/intrinsics/gen/frexp/1d6b62.wgsl.expected.spvasm
rename to test/intrinsics/gen/frexp/d06c2c.wgsl.expected.spvasm
index 3342c71..45cf3cc 100644
--- a/test/intrinsics/gen/frexp/1d6b62.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_1d6b62 "frexp_1d6b62"
+               OpName %frexp_d06c2c "frexp_d06c2c"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -42,7 +42,7 @@
 %_ptr_Function_v2float = OpTypePointer Function %v2float
          %25 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%frexp_1d6b62 = OpFunction %void None %9
+%frexp_d06c2c = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v2int Function %17
         %res = OpVariable %_ptr_Function_v2float Function %21
@@ -59,17 +59,17 @@
 %vertex_main = OpFunction %void None %9
          %30 = OpLabel
                OpStore %tint_pointsize %float_1
-         %32 = OpFunctionCall %void %frexp_1d6b62
+         %32 = OpFunctionCall %void %frexp_d06c2c
          %33 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %35 = OpLabel
-         %36 = OpFunctionCall %void %frexp_1d6b62
+         %36 = OpFunctionCall %void %frexp_d06c2c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %38 = OpLabel
-         %39 = OpFunctionCall %void %frexp_1d6b62
+         %39 = OpFunctionCall %void %frexp_d06c2c
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/1d6b62.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.wgsl
similarity index 78%
rename from test/intrinsics/gen/frexp/1d6b62.wgsl.expected.wgsl
rename to test/intrinsics/gen/frexp/d06c2c.wgsl.expected.wgsl
index bc2e1ab..1045797 100644
--- a/test/intrinsics/gen/frexp/1d6b62.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/d06c2c.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_1d6b62() {
+fn frexp_d06c2c() {
   var arg_1 : vec2<i32>;
   var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_1d6b62();
+  frexp_d06c2c();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_1d6b62();
+  frexp_d06c2c();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_1d6b62();
+  frexp_d06c2c();
 }
diff --git a/test/intrinsics/gen/frexp/2a171c.wgsl b/test/intrinsics/gen/frexp/d68011.wgsl
similarity index 94%
copy from test/intrinsics/gen/frexp/2a171c.wgsl
copy to test/intrinsics/gen/frexp/d68011.wgsl
index 856dbda..f9891c0 100644
--- a/test/intrinsics/gen/frexp/2a171c.wgsl
+++ b/test/intrinsics/gen/frexp/d68011.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_2a171c() {
+fn frexp_d68011() {
   var arg_1: vec2<u32>;
   var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_2a171c();
+  frexp_d68011();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_2a171c();
+  frexp_d68011();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_2a171c();
+  frexp_d68011();
 }
diff --git a/test/intrinsics/gen/frexp/d68011.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/d68011.wgsl.expected.hlsl
new file mode 100644
index 0000000..bdc55e2
--- /dev/null
+++ b/test/intrinsics/gen/frexp/d68011.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_d68011() {
+  var arg_1 : vec2<u32>;
+  var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_d68011();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_d68011();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_d68011();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/d68011.wgsl.expected.msl b/test/intrinsics/gen/frexp/d68011.wgsl.expected.msl
new file mode 100644
index 0000000..f36c6d6
--- /dev/null
+++ b/test/intrinsics/gen/frexp/d68011.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_d68011() {
+  var arg_1 : vec2<u32>;
+  var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_d68011();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_d68011();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_d68011();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/2a171c.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/d68011.wgsl.expected.spvasm
similarity index 92%
rename from test/intrinsics/gen/frexp/2a171c.wgsl.expected.spvasm
rename to test/intrinsics/gen/frexp/d68011.wgsl.expected.spvasm
index 2369b9f..9877fa2 100644
--- a/test/intrinsics/gen/frexp/2a171c.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/d68011.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_2a171c "frexp_2a171c"
+               OpName %frexp_d68011 "frexp_d68011"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -42,7 +42,7 @@
 %_ptr_Function_v2float = OpTypePointer Function %v2float
          %25 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%frexp_2a171c = OpFunction %void None %9
+%frexp_d68011 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v2uint Function %17
         %res = OpVariable %_ptr_Function_v2float Function %21
@@ -59,17 +59,17 @@
 %vertex_main = OpFunction %void None %9
          %30 = OpLabel
                OpStore %tint_pointsize %float_1
-         %32 = OpFunctionCall %void %frexp_2a171c
+         %32 = OpFunctionCall %void %frexp_d68011
          %33 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %35 = OpLabel
-         %36 = OpFunctionCall %void %frexp_2a171c
+         %36 = OpFunctionCall %void %frexp_d68011
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %38 = OpLabel
-         %39 = OpFunctionCall %void %frexp_2a171c
+         %39 = OpFunctionCall %void %frexp_d68011
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/2a171c.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/d68011.wgsl.expected.wgsl
similarity index 78%
copy from test/intrinsics/gen/frexp/2a171c.wgsl.expected.wgsl
copy to test/intrinsics/gen/frexp/d68011.wgsl.expected.wgsl
index ffd3acd..463d37e 100644
--- a/test/intrinsics/gen/frexp/2a171c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/d68011.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_2a171c() {
+fn frexp_d68011() {
   var arg_1 : vec2<u32>;
   var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_2a171c();
+  frexp_d68011();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_2a171c();
+  frexp_d68011();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_2a171c();
+  frexp_d68011();
 }
diff --git a/test/intrinsics/gen/frexp/99b922.wgsl b/test/intrinsics/gen/frexp/e061dd.wgsl
similarity index 93%
rename from test/intrinsics/gen/frexp/99b922.wgsl
rename to test/intrinsics/gen/frexp/e061dd.wgsl
index 44f1976..430fbf3 100644
--- a/test/intrinsics/gen/frexp/99b922.wgsl
+++ b/test/intrinsics/gen/frexp/e061dd.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_99b922() {
+fn frexp_e061dd() {
   var arg_1: i32;
   var res: f32 = frexp(1.0, &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_99b922();
+  frexp_e061dd();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_99b922();
+  frexp_e061dd();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_99b922();
+  frexp_e061dd();
 }
diff --git a/test/intrinsics/gen/frexp/e061dd.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/e061dd.wgsl.expected.hlsl
new file mode 100644
index 0000000..26b58fe
--- /dev/null
+++ b/test/intrinsics/gen/frexp/e061dd.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_e061dd() {
+  var arg_1 : i32;
+  var res : f32 = frexp(1.0, &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_e061dd();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_e061dd();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_e061dd();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/e061dd.wgsl.expected.msl b/test/intrinsics/gen/frexp/e061dd.wgsl.expected.msl
new file mode 100644
index 0000000..3f46759
--- /dev/null
+++ b/test/intrinsics/gen/frexp/e061dd.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_e061dd() {
+  var arg_1 : i32;
+  var res : f32 = frexp(1.0, &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_e061dd();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_e061dd();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_e061dd();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/99b922.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/e061dd.wgsl.expected.spvasm
similarity index 91%
copy from test/intrinsics/gen/frexp/99b922.wgsl.expected.spvasm
copy to test/intrinsics/gen/frexp/e061dd.wgsl.expected.spvasm
index 5b3d37c..b580d60 100644
--- a/test/intrinsics/gen/frexp/99b922.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/e061dd.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_99b922 "frexp_99b922"
+               OpName %frexp_e061dd "frexp_e061dd"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -39,7 +39,7 @@
     %float_1 = OpConstant %float 1
 %_ptr_Function_float = OpTypePointer Function %float
          %23 = OpTypeFunction %void %v4float
-%frexp_99b922 = OpFunction %void None %9
+%frexp_e061dd = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_int Function %16
         %res = OpVariable %_ptr_Function_float Function %4
@@ -56,17 +56,17 @@
 %vertex_main = OpFunction %void None %9
          %28 = OpLabel
                OpStore %tint_pointsize %float_1
-         %29 = OpFunctionCall %void %frexp_99b922
+         %29 = OpFunctionCall %void %frexp_e061dd
          %30 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %32 = OpLabel
-         %33 = OpFunctionCall %void %frexp_99b922
+         %33 = OpFunctionCall %void %frexp_e061dd
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %35 = OpLabel
-         %36 = OpFunctionCall %void %frexp_99b922
+         %36 = OpFunctionCall %void %frexp_e061dd
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/99b922.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/e061dd.wgsl.expected.wgsl
similarity index 76%
copy from test/intrinsics/gen/frexp/99b922.wgsl.expected.wgsl
copy to test/intrinsics/gen/frexp/e061dd.wgsl.expected.wgsl
index 6f56b9e..145442a 100644
--- a/test/intrinsics/gen/frexp/99b922.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/e061dd.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_99b922() {
+fn frexp_e061dd() {
   var arg_1 : i32;
   var res : f32 = frexp(1.0, &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_99b922();
+  frexp_e061dd();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_99b922();
+  frexp_e061dd();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_99b922();
+  frexp_e061dd();
 }
diff --git a/test/intrinsics/gen/frexp/cb41c5.wgsl b/test/intrinsics/gen/frexp/e9b529.wgsl
similarity index 94%
copy from test/intrinsics/gen/frexp/cb41c5.wgsl
copy to test/intrinsics/gen/frexp/e9b529.wgsl
index 5bbb652..6a6b751 100644
--- a/test/intrinsics/gen/frexp/cb41c5.wgsl
+++ b/test/intrinsics/gen/frexp/e9b529.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_cb41c5() {
+fn frexp_e9b529() {
   var arg_1: vec3<u32>;
   var res: vec3<f32> = frexp(vec3<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_cb41c5();
+  frexp_e9b529();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_cb41c5();
+  frexp_e9b529();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_cb41c5();
+  frexp_e9b529();
 }
diff --git a/test/intrinsics/gen/frexp/e9b529.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/e9b529.wgsl.expected.hlsl
new file mode 100644
index 0000000..ebf3704
--- /dev/null
+++ b/test/intrinsics/gen/frexp/e9b529.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_e9b529() {
+  var arg_1 : vec3<u32>;
+  var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_e9b529();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_e9b529();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_e9b529();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/e9b529.wgsl.expected.msl b/test/intrinsics/gen/frexp/e9b529.wgsl.expected.msl
new file mode 100644
index 0000000..30da175
--- /dev/null
+++ b/test/intrinsics/gen/frexp/e9b529.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_e9b529() {
+  var arg_1 : vec3<u32>;
+  var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_e9b529();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_e9b529();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_e9b529();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/cb41c5.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/e9b529.wgsl.expected.spvasm
similarity index 92%
copy from test/intrinsics/gen/frexp/cb41c5.wgsl.expected.spvasm
copy to test/intrinsics/gen/frexp/e9b529.wgsl.expected.spvasm
index f539a3c..1abcaaa 100644
--- a/test/intrinsics/gen/frexp/cb41c5.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/e9b529.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_cb41c5 "frexp_cb41c5"
+               OpName %frexp_e9b529 "frexp_e9b529"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -42,7 +42,7 @@
 %_ptr_Function_v3float = OpTypePointer Function %v3float
          %25 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%frexp_cb41c5 = OpFunction %void None %9
+%frexp_e9b529 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v3uint Function %17
         %res = OpVariable %_ptr_Function_v3float Function %21
@@ -59,17 +59,17 @@
 %vertex_main = OpFunction %void None %9
          %30 = OpLabel
                OpStore %tint_pointsize %float_1
-         %32 = OpFunctionCall %void %frexp_cb41c5
+         %32 = OpFunctionCall %void %frexp_e9b529
          %33 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %35 = OpLabel
-         %36 = OpFunctionCall %void %frexp_cb41c5
+         %36 = OpFunctionCall %void %frexp_e9b529
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %38 = OpLabel
-         %39 = OpFunctionCall %void %frexp_cb41c5
+         %39 = OpFunctionCall %void %frexp_e9b529
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/cb41c5.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/e9b529.wgsl.expected.wgsl
similarity index 78%
copy from test/intrinsics/gen/frexp/cb41c5.wgsl.expected.wgsl
copy to test/intrinsics/gen/frexp/e9b529.wgsl.expected.wgsl
index 24c63ba..90976c6 100644
--- a/test/intrinsics/gen/frexp/cb41c5.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/e9b529.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_cb41c5() {
+fn frexp_e9b529() {
   var arg_1 : vec3<u32>;
   var res : vec3<f32> = frexp(vec3<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_cb41c5();
+  frexp_e9b529();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_cb41c5();
+  frexp_e9b529();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_cb41c5();
+  frexp_e9b529();
 }
diff --git a/test/intrinsics/gen/frexp/2a171c.wgsl b/test/intrinsics/gen/frexp/ee3625.wgsl
similarity index 94%
rename from test/intrinsics/gen/frexp/2a171c.wgsl
rename to test/intrinsics/gen/frexp/ee3625.wgsl
index 856dbda..ceea238 100644
--- a/test/intrinsics/gen/frexp/2a171c.wgsl
+++ b/test/intrinsics/gen/frexp/ee3625.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_2a171c() {
+fn frexp_ee3625() {
   var arg_1: vec2<u32>;
   var res: vec2<f32> = frexp(vec2<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_2a171c();
+  frexp_ee3625();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_2a171c();
+  frexp_ee3625();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_2a171c();
+  frexp_ee3625();
 }
diff --git a/test/intrinsics/gen/frexp/ee3625.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/ee3625.wgsl.expected.hlsl
new file mode 100644
index 0000000..03bfe9e
--- /dev/null
+++ b/test/intrinsics/gen/frexp/ee3625.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_ee3625() {
+  var arg_1 : vec2<u32>;
+  var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_ee3625();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_ee3625();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_ee3625();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/ee3625.wgsl.expected.msl b/test/intrinsics/gen/frexp/ee3625.wgsl.expected.msl
new file mode 100644
index 0000000..0f87e67
--- /dev/null
+++ b/test/intrinsics/gen/frexp/ee3625.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_ee3625() {
+  var arg_1 : vec2<u32>;
+  var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_ee3625();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_ee3625();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_ee3625();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/2a171c.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/ee3625.wgsl.expected.spvasm
similarity index 92%
copy from test/intrinsics/gen/frexp/2a171c.wgsl.expected.spvasm
copy to test/intrinsics/gen/frexp/ee3625.wgsl.expected.spvasm
index 2369b9f..1c6bfdb 100644
--- a/test/intrinsics/gen/frexp/2a171c.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/ee3625.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_2a171c "frexp_2a171c"
+               OpName %frexp_ee3625 "frexp_ee3625"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -42,7 +42,7 @@
 %_ptr_Function_v2float = OpTypePointer Function %v2float
          %25 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%frexp_2a171c = OpFunction %void None %9
+%frexp_ee3625 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v2uint Function %17
         %res = OpVariable %_ptr_Function_v2float Function %21
@@ -59,17 +59,17 @@
 %vertex_main = OpFunction %void None %9
          %30 = OpLabel
                OpStore %tint_pointsize %float_1
-         %32 = OpFunctionCall %void %frexp_2a171c
+         %32 = OpFunctionCall %void %frexp_ee3625
          %33 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %35 = OpLabel
-         %36 = OpFunctionCall %void %frexp_2a171c
+         %36 = OpFunctionCall %void %frexp_ee3625
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %38 = OpLabel
-         %39 = OpFunctionCall %void %frexp_2a171c
+         %39 = OpFunctionCall %void %frexp_ee3625
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/2a171c.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/ee3625.wgsl.expected.wgsl
similarity index 78%
copy from test/intrinsics/gen/frexp/2a171c.wgsl.expected.wgsl
copy to test/intrinsics/gen/frexp/ee3625.wgsl.expected.wgsl
index ffd3acd..75feda1 100644
--- a/test/intrinsics/gen/frexp/2a171c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/ee3625.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_2a171c() {
+fn frexp_ee3625() {
   var arg_1 : vec2<u32>;
   var res : vec2<f32> = frexp(vec2<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_2a171c();
+  frexp_ee3625();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_2a171c();
+  frexp_ee3625();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_2a171c();
+  frexp_ee3625();
 }
diff --git a/test/intrinsics/gen/frexp/34dd30.wgsl b/test/intrinsics/gen/frexp/fb15f9.wgsl
similarity index 93%
copy from test/intrinsics/gen/frexp/34dd30.wgsl
copy to test/intrinsics/gen/frexp/fb15f9.wgsl
index 50bc56c..4c4c562 100644
--- a/test/intrinsics/gen/frexp/34dd30.wgsl
+++ b/test/intrinsics/gen/frexp/fb15f9.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn frexp_34dd30() {
+fn frexp_fb15f9() {
   var arg_1: u32;
   var res: f32 = frexp(1.0, &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_34dd30();
+  frexp_fb15f9();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_34dd30();
+  frexp_fb15f9();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_34dd30();
+  frexp_fb15f9();
 }
diff --git a/test/intrinsics/gen/frexp/fb15f9.wgsl.expected.hlsl b/test/intrinsics/gen/frexp/fb15f9.wgsl.expected.hlsl
new file mode 100644
index 0000000..8cd6a16
--- /dev/null
+++ b/test/intrinsics/gen/frexp/fb15f9.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_fb15f9() {
+  var arg_1 : u32;
+  var res : f32 = frexp(1.0, &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_fb15f9();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_fb15f9();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_fb15f9();
+}
+
+Failed to generate: error: Unknown builtin method: frexp
diff --git a/test/intrinsics/gen/frexp/fb15f9.wgsl.expected.msl b/test/intrinsics/gen/frexp/fb15f9.wgsl.expected.msl
new file mode 100644
index 0000000..fed5936
--- /dev/null
+++ b/test/intrinsics/gen/frexp/fb15f9.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn frexp_fb15f9() {
+  var arg_1 : u32;
+  var res : f32 = frexp(1.0, &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  frexp_fb15f9();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  frexp_fb15f9();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  frexp_fb15f9();
+}
+
+Failed to generate: error: Unknown import method: frexp
diff --git a/test/intrinsics/gen/frexp/34dd30.wgsl.expected.spvasm b/test/intrinsics/gen/frexp/fb15f9.wgsl.expected.spvasm
similarity index 91%
copy from test/intrinsics/gen/frexp/34dd30.wgsl.expected.spvasm
copy to test/intrinsics/gen/frexp/fb15f9.wgsl.expected.spvasm
index 3dc8037..4c3b20c 100644
--- a/test/intrinsics/gen/frexp/34dd30.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/frexp/fb15f9.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %frexp_34dd30 "frexp_34dd30"
+               OpName %frexp_fb15f9 "frexp_fb15f9"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -39,7 +39,7 @@
     %float_1 = OpConstant %float 1
 %_ptr_Function_float = OpTypePointer Function %float
          %23 = OpTypeFunction %void %v4float
-%frexp_34dd30 = OpFunction %void None %9
+%frexp_fb15f9 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_uint Function %16
         %res = OpVariable %_ptr_Function_float Function %4
@@ -56,17 +56,17 @@
 %vertex_main = OpFunction %void None %9
          %28 = OpLabel
                OpStore %tint_pointsize %float_1
-         %29 = OpFunctionCall %void %frexp_34dd30
+         %29 = OpFunctionCall %void %frexp_fb15f9
          %30 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %32 = OpLabel
-         %33 = OpFunctionCall %void %frexp_34dd30
+         %33 = OpFunctionCall %void %frexp_fb15f9
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %35 = OpLabel
-         %36 = OpFunctionCall %void %frexp_34dd30
+         %36 = OpFunctionCall %void %frexp_fb15f9
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/frexp/34dd30.wgsl.expected.wgsl b/test/intrinsics/gen/frexp/fb15f9.wgsl.expected.wgsl
similarity index 76%
rename from test/intrinsics/gen/frexp/34dd30.wgsl.expected.wgsl
rename to test/intrinsics/gen/frexp/fb15f9.wgsl.expected.wgsl
index 82331db..9dccb9b 100644
--- a/test/intrinsics/gen/frexp/34dd30.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/frexp/fb15f9.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn frexp_34dd30() {
+fn frexp_fb15f9() {
   var arg_1 : u32;
   var res : f32 = frexp(1.0, &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  frexp_34dd30();
+  frexp_fb15f9();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  frexp_34dd30();
+  frexp_fb15f9();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  frexp_34dd30();
+  frexp_fb15f9();
 }
diff --git a/test/intrinsics/gen/modf/8d6261.wgsl b/test/intrinsics/gen/modf/353f7d.wgsl
similarity index 94%
copy from test/intrinsics/gen/modf/8d6261.wgsl
copy to test/intrinsics/gen/modf/353f7d.wgsl
index ac17fa6..4977e0a 100644
--- a/test/intrinsics/gen/modf/8d6261.wgsl
+++ b/test/intrinsics/gen/modf/353f7d.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn modf_8d6261() {
+fn modf_353f7d() {
   var arg_1: f32;
   var res: f32 = modf(1.0, &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_8d6261();
+  modf_353f7d();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_8d6261();
+  modf_353f7d();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_8d6261();
+  modf_353f7d();
 }
diff --git a/test/intrinsics/gen/modf/353f7d.wgsl.expected.hlsl b/test/intrinsics/gen/modf/353f7d.wgsl.expected.hlsl
new file mode 100644
index 0000000..ece5f65
--- /dev/null
+++ b/test/intrinsics/gen/modf/353f7d.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_353f7d() {
+  var arg_1 : f32;
+  var res : f32 = modf(1.0, &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_353f7d();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_353f7d();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_353f7d();
+}
+
+Failed to generate: error: Unknown builtin method: modf
diff --git a/test/intrinsics/gen/modf/353f7d.wgsl.expected.msl b/test/intrinsics/gen/modf/353f7d.wgsl.expected.msl
new file mode 100644
index 0000000..6cffdf6
--- /dev/null
+++ b/test/intrinsics/gen/modf/353f7d.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_353f7d() {
+  var arg_1 : f32;
+  var res : f32 = modf(1.0, &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_353f7d();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_353f7d();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_353f7d();
+}
+
+Failed to generate: error: Unknown import method: modf
diff --git a/test/intrinsics/gen/modf/8d6261.wgsl.expected.spvasm b/test/intrinsics/gen/modf/353f7d.wgsl.expected.spvasm
similarity index 91%
rename from test/intrinsics/gen/modf/8d6261.wgsl.expected.spvasm
rename to test/intrinsics/gen/modf/353f7d.wgsl.expected.spvasm
index 4835826..8252221 100644
--- a/test/intrinsics/gen/modf/8d6261.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/353f7d.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %modf_8d6261 "modf_8d6261"
+               OpName %modf_353f7d "modf_353f7d"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -36,7 +36,7 @@
 %_ptr_Function_float = OpTypePointer Function %float
     %float_1 = OpConstant %float 1
          %20 = OpTypeFunction %void %v4float
-%modf_8d6261 = OpFunction %void None %9
+%modf_353f7d = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_float Function %4
         %res = OpVariable %_ptr_Function_float Function %4
@@ -53,17 +53,17 @@
 %vertex_main = OpFunction %void None %9
          %25 = OpLabel
                OpStore %tint_pointsize %float_1
-         %26 = OpFunctionCall %void %modf_8d6261
+         %26 = OpFunctionCall %void %modf_353f7d
          %27 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %29 = OpLabel
-         %30 = OpFunctionCall %void %modf_8d6261
+         %30 = OpFunctionCall %void %modf_353f7d
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %32 = OpLabel
-         %33 = OpFunctionCall %void %modf_8d6261
+         %33 = OpFunctionCall %void %modf_353f7d
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/modf/8d6261.wgsl.expected.wgsl b/test/intrinsics/gen/modf/353f7d.wgsl.expected.wgsl
similarity index 77%
rename from test/intrinsics/gen/modf/8d6261.wgsl.expected.wgsl
rename to test/intrinsics/gen/modf/353f7d.wgsl.expected.wgsl
index e23dd0c..15ab31f 100644
--- a/test/intrinsics/gen/modf/8d6261.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/353f7d.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn modf_8d6261() {
+fn modf_353f7d() {
   var arg_1 : f32;
   var res : f32 = modf(1.0, &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_8d6261();
+  modf_353f7d();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_8d6261();
+  modf_353f7d();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_8d6261();
+  modf_353f7d();
 }
diff --git a/test/intrinsics/gen/modf/f9f98c.wgsl b/test/intrinsics/gen/modf/3b79d5.wgsl
similarity index 94%
copy from test/intrinsics/gen/modf/f9f98c.wgsl
copy to test/intrinsics/gen/modf/3b79d5.wgsl
index 4b7d03b..6fee650 100644
--- a/test/intrinsics/gen/modf/f9f98c.wgsl
+++ b/test/intrinsics/gen/modf/3b79d5.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn modf_f9f98c() {
+fn modf_3b79d5() {
   var arg_1: vec3<f32>;
   var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_f9f98c();
+  modf_3b79d5();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_f9f98c();
+  modf_3b79d5();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_f9f98c();
+  modf_3b79d5();
 }
diff --git a/test/intrinsics/gen/modf/3b79d5.wgsl.expected.hlsl b/test/intrinsics/gen/modf/3b79d5.wgsl.expected.hlsl
new file mode 100644
index 0000000..ec08b22
--- /dev/null
+++ b/test/intrinsics/gen/modf/3b79d5.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_3b79d5() {
+  var arg_1 : vec3<f32>;
+  var res : vec3<f32> = modf(vec3<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_3b79d5();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_3b79d5();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_3b79d5();
+}
+
+Failed to generate: error: Unknown builtin method: modf
diff --git a/test/intrinsics/gen/modf/3b79d5.wgsl.expected.msl b/test/intrinsics/gen/modf/3b79d5.wgsl.expected.msl
new file mode 100644
index 0000000..1f4ca0a
--- /dev/null
+++ b/test/intrinsics/gen/modf/3b79d5.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_3b79d5() {
+  var arg_1 : vec3<f32>;
+  var res : vec3<f32> = modf(vec3<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_3b79d5();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_3b79d5();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_3b79d5();
+}
+
+Failed to generate: error: Unknown import method: modf
diff --git a/test/intrinsics/gen/modf/f9f98c.wgsl.expected.spvasm b/test/intrinsics/gen/modf/3b79d5.wgsl.expected.spvasm
similarity index 91%
copy from test/intrinsics/gen/modf/f9f98c.wgsl.expected.spvasm
copy to test/intrinsics/gen/modf/3b79d5.wgsl.expected.spvasm
index b62c50a..545e00f 100644
--- a/test/intrinsics/gen/modf/f9f98c.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/3b79d5.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %modf_f9f98c "modf_f9f98c"
+               OpName %modf_3b79d5 "modf_3b79d5"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -38,7 +38,7 @@
          %16 = OpConstantNull %v3float
          %21 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%modf_f9f98c = OpFunction %void None %9
+%modf_3b79d5 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v3float Function %16
         %res = OpVariable %_ptr_Function_v3float Function %16
@@ -55,17 +55,17 @@
 %vertex_main = OpFunction %void None %9
          %26 = OpLabel
                OpStore %tint_pointsize %float_1
-         %28 = OpFunctionCall %void %modf_f9f98c
+         %28 = OpFunctionCall %void %modf_3b79d5
          %29 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %31 = OpLabel
-         %32 = OpFunctionCall %void %modf_f9f98c
+         %32 = OpFunctionCall %void %modf_3b79d5
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %34 = OpLabel
-         %35 = OpFunctionCall %void %modf_f9f98c
+         %35 = OpFunctionCall %void %modf_3b79d5
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/modf/f9f98c.wgsl.expected.wgsl b/test/intrinsics/gen/modf/3b79d5.wgsl.expected.wgsl
similarity index 79%
copy from test/intrinsics/gen/modf/f9f98c.wgsl.expected.wgsl
copy to test/intrinsics/gen/modf/3b79d5.wgsl.expected.wgsl
index 432b127..cfef611 100644
--- a/test/intrinsics/gen/modf/f9f98c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/3b79d5.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn modf_f9f98c() {
+fn modf_3b79d5() {
   var arg_1 : vec3<f32>;
   var res : vec3<f32> = modf(vec3<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_f9f98c();
+  modf_3b79d5();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_f9f98c();
+  modf_3b79d5();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_f9f98c();
+  modf_3b79d5();
 }
diff --git a/test/intrinsics/gen/modf/c82e3f.wgsl b/test/intrinsics/gen/modf/4bb324.wgsl
similarity index 94%
copy from test/intrinsics/gen/modf/c82e3f.wgsl
copy to test/intrinsics/gen/modf/4bb324.wgsl
index bc0651d..19bf06c 100644
--- a/test/intrinsics/gen/modf/c82e3f.wgsl
+++ b/test/intrinsics/gen/modf/4bb324.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn modf_c82e3f() {
+fn modf_4bb324() {
   var arg_1: vec4<f32>;
   var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_c82e3f();
+  modf_4bb324();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_c82e3f();
+  modf_4bb324();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_c82e3f();
+  modf_4bb324();
 }
diff --git a/test/intrinsics/gen/modf/4bb324.wgsl.expected.hlsl b/test/intrinsics/gen/modf/4bb324.wgsl.expected.hlsl
new file mode 100644
index 0000000..86f45cb
--- /dev/null
+++ b/test/intrinsics/gen/modf/4bb324.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_4bb324() {
+  var arg_1 : vec4<f32>;
+  var res : vec4<f32> = modf(vec4<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_4bb324();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_4bb324();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_4bb324();
+}
+
+Failed to generate: error: Unknown builtin method: modf
diff --git a/test/intrinsics/gen/modf/4bb324.wgsl.expected.msl b/test/intrinsics/gen/modf/4bb324.wgsl.expected.msl
new file mode 100644
index 0000000..7a568c4
--- /dev/null
+++ b/test/intrinsics/gen/modf/4bb324.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_4bb324() {
+  var arg_1 : vec4<f32>;
+  var res : vec4<f32> = modf(vec4<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_4bb324();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_4bb324();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_4bb324();
+}
+
+Failed to generate: error: Unknown import method: modf
diff --git a/test/intrinsics/gen/modf/c82e3f.wgsl.expected.spvasm b/test/intrinsics/gen/modf/4bb324.wgsl.expected.spvasm
similarity index 91%
copy from test/intrinsics/gen/modf/c82e3f.wgsl.expected.spvasm
copy to test/intrinsics/gen/modf/4bb324.wgsl.expected.spvasm
index 962fba0..6c2baae 100644
--- a/test/intrinsics/gen/modf/c82e3f.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/4bb324.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %modf_c82e3f "modf_c82e3f"
+               OpName %modf_4bb324 "modf_4bb324"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -36,7 +36,7 @@
 %_ptr_Function_v4float = OpTypePointer Function %v4float
          %19 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%modf_c82e3f = OpFunction %void None %9
+%modf_4bb324 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v4float Function %8
         %res = OpVariable %_ptr_Function_v4float Function %8
@@ -53,17 +53,17 @@
 %vertex_main = OpFunction %void None %9
          %24 = OpLabel
                OpStore %tint_pointsize %float_1
-         %26 = OpFunctionCall %void %modf_c82e3f
+         %26 = OpFunctionCall %void %modf_4bb324
          %27 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %29 = OpLabel
-         %30 = OpFunctionCall %void %modf_c82e3f
+         %30 = OpFunctionCall %void %modf_4bb324
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %32 = OpLabel
-         %33 = OpFunctionCall %void %modf_c82e3f
+         %33 = OpFunctionCall %void %modf_4bb324
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/modf/c82e3f.wgsl.expected.wgsl b/test/intrinsics/gen/modf/4bb324.wgsl.expected.wgsl
similarity index 79%
copy from test/intrinsics/gen/modf/c82e3f.wgsl.expected.wgsl
copy to test/intrinsics/gen/modf/4bb324.wgsl.expected.wgsl
index 60bcecd..540e6bd 100644
--- a/test/intrinsics/gen/modf/c82e3f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/4bb324.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn modf_c82e3f() {
+fn modf_4bb324() {
   var arg_1 : vec4<f32>;
   var res : vec4<f32> = modf(vec4<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_c82e3f();
+  modf_4bb324();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_c82e3f();
+  modf_4bb324();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_c82e3f();
+  modf_4bb324();
 }
diff --git a/test/intrinsics/gen/modf/f9f98c.wgsl b/test/intrinsics/gen/modf/4fe3d9.wgsl
similarity index 94%
rename from test/intrinsics/gen/modf/f9f98c.wgsl
rename to test/intrinsics/gen/modf/4fe3d9.wgsl
index 4b7d03b..733ffef 100644
--- a/test/intrinsics/gen/modf/f9f98c.wgsl
+++ b/test/intrinsics/gen/modf/4fe3d9.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn modf_f9f98c() {
+fn modf_4fe3d9() {
   var arg_1: vec3<f32>;
   var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_f9f98c();
+  modf_4fe3d9();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_f9f98c();
+  modf_4fe3d9();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_f9f98c();
+  modf_4fe3d9();
 }
diff --git a/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.hlsl b/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.hlsl
new file mode 100644
index 0000000..644a3b1
--- /dev/null
+++ b/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_4fe3d9() {
+  var arg_1 : vec3<f32>;
+  var res : vec3<f32> = modf(vec3<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_4fe3d9();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_4fe3d9();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_4fe3d9();
+}
+
+Failed to generate: error: Unknown builtin method: modf
diff --git a/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.msl b/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.msl
new file mode 100644
index 0000000..31bd393
--- /dev/null
+++ b/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_4fe3d9() {
+  var arg_1 : vec3<f32>;
+  var res : vec3<f32> = modf(vec3<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_4fe3d9();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_4fe3d9();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_4fe3d9();
+}
+
+Failed to generate: error: Unknown import method: modf
diff --git a/test/intrinsics/gen/modf/f9f98c.wgsl.expected.spvasm b/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.spvasm
similarity index 91%
rename from test/intrinsics/gen/modf/f9f98c.wgsl.expected.spvasm
rename to test/intrinsics/gen/modf/4fe3d9.wgsl.expected.spvasm
index b62c50a..9bd4558 100644
--- a/test/intrinsics/gen/modf/f9f98c.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %modf_f9f98c "modf_f9f98c"
+               OpName %modf_4fe3d9 "modf_4fe3d9"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -38,7 +38,7 @@
          %16 = OpConstantNull %v3float
          %21 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%modf_f9f98c = OpFunction %void None %9
+%modf_4fe3d9 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v3float Function %16
         %res = OpVariable %_ptr_Function_v3float Function %16
@@ -55,17 +55,17 @@
 %vertex_main = OpFunction %void None %9
          %26 = OpLabel
                OpStore %tint_pointsize %float_1
-         %28 = OpFunctionCall %void %modf_f9f98c
+         %28 = OpFunctionCall %void %modf_4fe3d9
          %29 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %31 = OpLabel
-         %32 = OpFunctionCall %void %modf_f9f98c
+         %32 = OpFunctionCall %void %modf_4fe3d9
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %34 = OpLabel
-         %35 = OpFunctionCall %void %modf_f9f98c
+         %35 = OpFunctionCall %void %modf_4fe3d9
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/modf/f9f98c.wgsl.expected.wgsl b/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.wgsl
similarity index 79%
rename from test/intrinsics/gen/modf/f9f98c.wgsl.expected.wgsl
rename to test/intrinsics/gen/modf/4fe3d9.wgsl.expected.wgsl
index 432b127..65685b4 100644
--- a/test/intrinsics/gen/modf/f9f98c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/4fe3d9.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn modf_f9f98c() {
+fn modf_4fe3d9() {
   var arg_1 : vec3<f32>;
   var res : vec3<f32> = modf(vec3<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_f9f98c();
+  modf_4fe3d9();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_f9f98c();
+  modf_4fe3d9();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_f9f98c();
+  modf_4fe3d9();
 }
diff --git a/test/intrinsics/gen/modf/d62477.wgsl b/test/intrinsics/gen/modf/51e4c6.wgsl
similarity index 94%
copy from test/intrinsics/gen/modf/d62477.wgsl
copy to test/intrinsics/gen/modf/51e4c6.wgsl
index 694148e..ce8a7af 100644
--- a/test/intrinsics/gen/modf/d62477.wgsl
+++ b/test/intrinsics/gen/modf/51e4c6.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn modf_d62477() {
+fn modf_51e4c6() {
   var arg_1: vec2<f32>;
   var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_d62477();
+  modf_51e4c6();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_d62477();
+  modf_51e4c6();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_d62477();
+  modf_51e4c6();
 }
diff --git a/test/intrinsics/gen/modf/51e4c6.wgsl.expected.hlsl b/test/intrinsics/gen/modf/51e4c6.wgsl.expected.hlsl
new file mode 100644
index 0000000..c4a06ce
--- /dev/null
+++ b/test/intrinsics/gen/modf/51e4c6.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_51e4c6() {
+  var arg_1 : vec2<f32>;
+  var res : vec2<f32> = modf(vec2<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_51e4c6();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_51e4c6();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_51e4c6();
+}
+
+Failed to generate: error: Unknown builtin method: modf
diff --git a/test/intrinsics/gen/modf/51e4c6.wgsl.expected.msl b/test/intrinsics/gen/modf/51e4c6.wgsl.expected.msl
new file mode 100644
index 0000000..cbe3395
--- /dev/null
+++ b/test/intrinsics/gen/modf/51e4c6.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_51e4c6() {
+  var arg_1 : vec2<f32>;
+  var res : vec2<f32> = modf(vec2<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_51e4c6();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_51e4c6();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_51e4c6();
+}
+
+Failed to generate: error: Unknown import method: modf
diff --git a/test/intrinsics/gen/modf/d62477.wgsl.expected.spvasm b/test/intrinsics/gen/modf/51e4c6.wgsl.expected.spvasm
similarity index 91%
copy from test/intrinsics/gen/modf/d62477.wgsl.expected.spvasm
copy to test/intrinsics/gen/modf/51e4c6.wgsl.expected.spvasm
index cef08e6..8952ffa 100644
--- a/test/intrinsics/gen/modf/d62477.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/51e4c6.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %modf_d62477 "modf_d62477"
+               OpName %modf_51e4c6 "modf_51e4c6"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -38,7 +38,7 @@
          %16 = OpConstantNull %v2float
          %21 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%modf_d62477 = OpFunction %void None %9
+%modf_51e4c6 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v2float Function %16
         %res = OpVariable %_ptr_Function_v2float Function %16
@@ -55,17 +55,17 @@
 %vertex_main = OpFunction %void None %9
          %26 = OpLabel
                OpStore %tint_pointsize %float_1
-         %28 = OpFunctionCall %void %modf_d62477
+         %28 = OpFunctionCall %void %modf_51e4c6
          %29 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %31 = OpLabel
-         %32 = OpFunctionCall %void %modf_d62477
+         %32 = OpFunctionCall %void %modf_51e4c6
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %34 = OpLabel
-         %35 = OpFunctionCall %void %modf_d62477
+         %35 = OpFunctionCall %void %modf_51e4c6
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/modf/d62477.wgsl.expected.wgsl b/test/intrinsics/gen/modf/51e4c6.wgsl.expected.wgsl
similarity index 79%
copy from test/intrinsics/gen/modf/d62477.wgsl.expected.wgsl
copy to test/intrinsics/gen/modf/51e4c6.wgsl.expected.wgsl
index 5bd5b42..f0df577 100644
--- a/test/intrinsics/gen/modf/d62477.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/51e4c6.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn modf_d62477() {
+fn modf_51e4c6() {
   var arg_1 : vec2<f32>;
   var res : vec2<f32> = modf(vec2<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_d62477();
+  modf_51e4c6();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_d62477();
+  modf_51e4c6();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_d62477();
+  modf_51e4c6();
 }
diff --git a/test/intrinsics/gen/modf/8d6261.wgsl b/test/intrinsics/gen/modf/546e09.wgsl
similarity index 94%
copy from test/intrinsics/gen/modf/8d6261.wgsl
copy to test/intrinsics/gen/modf/546e09.wgsl
index ac17fa6..9d4286b 100644
--- a/test/intrinsics/gen/modf/8d6261.wgsl
+++ b/test/intrinsics/gen/modf/546e09.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn modf_8d6261() {
+fn modf_546e09() {
   var arg_1: f32;
   var res: f32 = modf(1.0, &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_8d6261();
+  modf_546e09();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_8d6261();
+  modf_546e09();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_8d6261();
+  modf_546e09();
 }
diff --git a/test/intrinsics/gen/modf/546e09.wgsl.expected.hlsl b/test/intrinsics/gen/modf/546e09.wgsl.expected.hlsl
new file mode 100644
index 0000000..04c6cd4
--- /dev/null
+++ b/test/intrinsics/gen/modf/546e09.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_546e09() {
+  var arg_1 : f32;
+  var res : f32 = modf(1.0, &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_546e09();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_546e09();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_546e09();
+}
+
+Failed to generate: error: Unknown builtin method: modf
diff --git a/test/intrinsics/gen/modf/546e09.wgsl.expected.msl b/test/intrinsics/gen/modf/546e09.wgsl.expected.msl
new file mode 100644
index 0000000..46f207c
--- /dev/null
+++ b/test/intrinsics/gen/modf/546e09.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_546e09() {
+  var arg_1 : f32;
+  var res : f32 = modf(1.0, &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_546e09();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_546e09();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_546e09();
+}
+
+Failed to generate: error: Unknown import method: modf
diff --git a/test/intrinsics/gen/modf/8d6261.wgsl.expected.spvasm b/test/intrinsics/gen/modf/546e09.wgsl.expected.spvasm
similarity index 91%
copy from test/intrinsics/gen/modf/8d6261.wgsl.expected.spvasm
copy to test/intrinsics/gen/modf/546e09.wgsl.expected.spvasm
index 4835826..5a56fcf 100644
--- a/test/intrinsics/gen/modf/8d6261.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/546e09.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %modf_8d6261 "modf_8d6261"
+               OpName %modf_546e09 "modf_546e09"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -36,7 +36,7 @@
 %_ptr_Function_float = OpTypePointer Function %float
     %float_1 = OpConstant %float 1
          %20 = OpTypeFunction %void %v4float
-%modf_8d6261 = OpFunction %void None %9
+%modf_546e09 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_float Function %4
         %res = OpVariable %_ptr_Function_float Function %4
@@ -53,17 +53,17 @@
 %vertex_main = OpFunction %void None %9
          %25 = OpLabel
                OpStore %tint_pointsize %float_1
-         %26 = OpFunctionCall %void %modf_8d6261
+         %26 = OpFunctionCall %void %modf_546e09
          %27 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %29 = OpLabel
-         %30 = OpFunctionCall %void %modf_8d6261
+         %30 = OpFunctionCall %void %modf_546e09
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %32 = OpLabel
-         %33 = OpFunctionCall %void %modf_8d6261
+         %33 = OpFunctionCall %void %modf_546e09
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/modf/8d6261.wgsl.expected.wgsl b/test/intrinsics/gen/modf/546e09.wgsl.expected.wgsl
similarity index 77%
copy from test/intrinsics/gen/modf/8d6261.wgsl.expected.wgsl
copy to test/intrinsics/gen/modf/546e09.wgsl.expected.wgsl
index e23dd0c..214b34d 100644
--- a/test/intrinsics/gen/modf/8d6261.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/546e09.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn modf_8d6261() {
+fn modf_546e09() {
   var arg_1 : f32;
   var res : f32 = modf(1.0, &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_8d6261();
+  modf_546e09();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_8d6261();
+  modf_546e09();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_8d6261();
+  modf_546e09();
 }
diff --git a/test/intrinsics/gen/modf/d62477.wgsl b/test/intrinsics/gen/modf/86441c.wgsl
similarity index 94%
rename from test/intrinsics/gen/modf/d62477.wgsl
rename to test/intrinsics/gen/modf/86441c.wgsl
index 694148e..6dcbc7e 100644
--- a/test/intrinsics/gen/modf/d62477.wgsl
+++ b/test/intrinsics/gen/modf/86441c.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn modf_d62477() {
+fn modf_86441c() {
   var arg_1: vec2<f32>;
   var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_d62477();
+  modf_86441c();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_d62477();
+  modf_86441c();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_d62477();
+  modf_86441c();
 }
diff --git a/test/intrinsics/gen/modf/86441c.wgsl.expected.hlsl b/test/intrinsics/gen/modf/86441c.wgsl.expected.hlsl
new file mode 100644
index 0000000..1d242fc
--- /dev/null
+++ b/test/intrinsics/gen/modf/86441c.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_86441c() {
+  var arg_1 : vec2<f32>;
+  var res : vec2<f32> = modf(vec2<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_86441c();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_86441c();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_86441c();
+}
+
+Failed to generate: error: Unknown builtin method: modf
diff --git a/test/intrinsics/gen/modf/86441c.wgsl.expected.msl b/test/intrinsics/gen/modf/86441c.wgsl.expected.msl
new file mode 100644
index 0000000..6698214
--- /dev/null
+++ b/test/intrinsics/gen/modf/86441c.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_86441c() {
+  var arg_1 : vec2<f32>;
+  var res : vec2<f32> = modf(vec2<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_86441c();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_86441c();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_86441c();
+}
+
+Failed to generate: error: Unknown import method: modf
diff --git a/test/intrinsics/gen/modf/d62477.wgsl.expected.spvasm b/test/intrinsics/gen/modf/86441c.wgsl.expected.spvasm
similarity index 91%
rename from test/intrinsics/gen/modf/d62477.wgsl.expected.spvasm
rename to test/intrinsics/gen/modf/86441c.wgsl.expected.spvasm
index cef08e6..7a41b14 100644
--- a/test/intrinsics/gen/modf/d62477.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/86441c.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %modf_d62477 "modf_d62477"
+               OpName %modf_86441c "modf_86441c"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -38,7 +38,7 @@
          %16 = OpConstantNull %v2float
          %21 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%modf_d62477 = OpFunction %void None %9
+%modf_86441c = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v2float Function %16
         %res = OpVariable %_ptr_Function_v2float Function %16
@@ -55,17 +55,17 @@
 %vertex_main = OpFunction %void None %9
          %26 = OpLabel
                OpStore %tint_pointsize %float_1
-         %28 = OpFunctionCall %void %modf_d62477
+         %28 = OpFunctionCall %void %modf_86441c
          %29 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %31 = OpLabel
-         %32 = OpFunctionCall %void %modf_d62477
+         %32 = OpFunctionCall %void %modf_86441c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %34 = OpLabel
-         %35 = OpFunctionCall %void %modf_d62477
+         %35 = OpFunctionCall %void %modf_86441c
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/modf/d62477.wgsl.expected.wgsl b/test/intrinsics/gen/modf/86441c.wgsl.expected.wgsl
similarity index 79%
copy from test/intrinsics/gen/modf/d62477.wgsl.expected.wgsl
copy to test/intrinsics/gen/modf/86441c.wgsl.expected.wgsl
index 5bd5b42..1fae1f5 100644
--- a/test/intrinsics/gen/modf/d62477.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/86441c.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn modf_d62477() {
+fn modf_86441c() {
   var arg_1 : vec2<f32>;
   var res : vec2<f32> = modf(vec2<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_d62477();
+  modf_86441c();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_d62477();
+  modf_86441c();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_d62477();
+  modf_86441c();
 }
diff --git a/test/intrinsics/gen/modf/8d6261.wgsl.expected.hlsl b/test/intrinsics/gen/modf/8d6261.wgsl.expected.hlsl
deleted file mode 100644
index ccd4c1e..0000000
--- a/test/intrinsics/gen/modf/8d6261.wgsl.expected.hlsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn modf_8d6261() {
-  var arg_1 : f32;
-  var res : f32 = modf(1.0, &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  modf_8d6261();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  modf_8d6261();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  modf_8d6261();
-}
-
-Failed to generate: error: Unknown builtin method: modf
diff --git a/test/intrinsics/gen/modf/8d6261.wgsl.expected.msl b/test/intrinsics/gen/modf/8d6261.wgsl.expected.msl
deleted file mode 100644
index 8db3689..0000000
--- a/test/intrinsics/gen/modf/8d6261.wgsl.expected.msl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn modf_8d6261() {
-  var arg_1 : f32;
-  var res : f32 = modf(1.0, &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  modf_8d6261();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  modf_8d6261();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  modf_8d6261();
-}
-
-Failed to generate: error: Unknown import method: modf
diff --git a/test/intrinsics/gen/modf/f9f98c.wgsl b/test/intrinsics/gen/modf/955651.wgsl
similarity index 94%
copy from test/intrinsics/gen/modf/f9f98c.wgsl
copy to test/intrinsics/gen/modf/955651.wgsl
index 4b7d03b..67424ab 100644
--- a/test/intrinsics/gen/modf/f9f98c.wgsl
+++ b/test/intrinsics/gen/modf/955651.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn modf_f9f98c() {
+fn modf_955651() {
   var arg_1: vec3<f32>;
   var res: vec3<f32> = modf(vec3<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_f9f98c();
+  modf_955651();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_f9f98c();
+  modf_955651();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_f9f98c();
+  modf_955651();
 }
diff --git a/test/intrinsics/gen/modf/955651.wgsl.expected.hlsl b/test/intrinsics/gen/modf/955651.wgsl.expected.hlsl
new file mode 100644
index 0000000..94f15f6
--- /dev/null
+++ b/test/intrinsics/gen/modf/955651.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_955651() {
+  var arg_1 : vec3<f32>;
+  var res : vec3<f32> = modf(vec3<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_955651();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_955651();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_955651();
+}
+
+Failed to generate: error: Unknown builtin method: modf
diff --git a/test/intrinsics/gen/modf/955651.wgsl.expected.msl b/test/intrinsics/gen/modf/955651.wgsl.expected.msl
new file mode 100644
index 0000000..b8a32ea
--- /dev/null
+++ b/test/intrinsics/gen/modf/955651.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_955651() {
+  var arg_1 : vec3<f32>;
+  var res : vec3<f32> = modf(vec3<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_955651();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_955651();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_955651();
+}
+
+Failed to generate: error: Unknown import method: modf
diff --git a/test/intrinsics/gen/modf/f9f98c.wgsl.expected.spvasm b/test/intrinsics/gen/modf/955651.wgsl.expected.spvasm
similarity index 91%
copy from test/intrinsics/gen/modf/f9f98c.wgsl.expected.spvasm
copy to test/intrinsics/gen/modf/955651.wgsl.expected.spvasm
index b62c50a..192d324 100644
--- a/test/intrinsics/gen/modf/f9f98c.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/955651.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %modf_f9f98c "modf_f9f98c"
+               OpName %modf_955651 "modf_955651"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -38,7 +38,7 @@
          %16 = OpConstantNull %v3float
          %21 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%modf_f9f98c = OpFunction %void None %9
+%modf_955651 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v3float Function %16
         %res = OpVariable %_ptr_Function_v3float Function %16
@@ -55,17 +55,17 @@
 %vertex_main = OpFunction %void None %9
          %26 = OpLabel
                OpStore %tint_pointsize %float_1
-         %28 = OpFunctionCall %void %modf_f9f98c
+         %28 = OpFunctionCall %void %modf_955651
          %29 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %31 = OpLabel
-         %32 = OpFunctionCall %void %modf_f9f98c
+         %32 = OpFunctionCall %void %modf_955651
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %34 = OpLabel
-         %35 = OpFunctionCall %void %modf_f9f98c
+         %35 = OpFunctionCall %void %modf_955651
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/modf/f9f98c.wgsl.expected.wgsl b/test/intrinsics/gen/modf/955651.wgsl.expected.wgsl
similarity index 79%
copy from test/intrinsics/gen/modf/f9f98c.wgsl.expected.wgsl
copy to test/intrinsics/gen/modf/955651.wgsl.expected.wgsl
index 432b127..5c59bcf 100644
--- a/test/intrinsics/gen/modf/f9f98c.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/955651.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn modf_f9f98c() {
+fn modf_955651() {
   var arg_1 : vec3<f32>;
   var res : vec3<f32> = modf(vec3<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_f9f98c();
+  modf_955651();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_f9f98c();
+  modf_955651();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_f9f98c();
+  modf_955651();
 }
diff --git a/test/intrinsics/gen/modf/d62477.wgsl b/test/intrinsics/gen/modf/a54eca.wgsl
similarity index 94%
copy from test/intrinsics/gen/modf/d62477.wgsl
copy to test/intrinsics/gen/modf/a54eca.wgsl
index 694148e..938b256 100644
--- a/test/intrinsics/gen/modf/d62477.wgsl
+++ b/test/intrinsics/gen/modf/a54eca.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn modf_d62477() {
+fn modf_a54eca() {
   var arg_1: vec2<f32>;
   var res: vec2<f32> = modf(vec2<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_d62477();
+  modf_a54eca();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_d62477();
+  modf_a54eca();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_d62477();
+  modf_a54eca();
 }
diff --git a/test/intrinsics/gen/modf/a54eca.wgsl.expected.hlsl b/test/intrinsics/gen/modf/a54eca.wgsl.expected.hlsl
new file mode 100644
index 0000000..b5e104e
--- /dev/null
+++ b/test/intrinsics/gen/modf/a54eca.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_a54eca() {
+  var arg_1 : vec2<f32>;
+  var res : vec2<f32> = modf(vec2<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_a54eca();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_a54eca();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_a54eca();
+}
+
+Failed to generate: error: Unknown builtin method: modf
diff --git a/test/intrinsics/gen/modf/a54eca.wgsl.expected.msl b/test/intrinsics/gen/modf/a54eca.wgsl.expected.msl
new file mode 100644
index 0000000..c9d03f1
--- /dev/null
+++ b/test/intrinsics/gen/modf/a54eca.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_a54eca() {
+  var arg_1 : vec2<f32>;
+  var res : vec2<f32> = modf(vec2<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_a54eca();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_a54eca();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_a54eca();
+}
+
+Failed to generate: error: Unknown import method: modf
diff --git a/test/intrinsics/gen/modf/d62477.wgsl.expected.spvasm b/test/intrinsics/gen/modf/a54eca.wgsl.expected.spvasm
similarity index 91%
copy from test/intrinsics/gen/modf/d62477.wgsl.expected.spvasm
copy to test/intrinsics/gen/modf/a54eca.wgsl.expected.spvasm
index cef08e6..c8d52c5 100644
--- a/test/intrinsics/gen/modf/d62477.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/a54eca.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %modf_d62477 "modf_d62477"
+               OpName %modf_a54eca "modf_a54eca"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -38,7 +38,7 @@
          %16 = OpConstantNull %v2float
          %21 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%modf_d62477 = OpFunction %void None %9
+%modf_a54eca = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v2float Function %16
         %res = OpVariable %_ptr_Function_v2float Function %16
@@ -55,17 +55,17 @@
 %vertex_main = OpFunction %void None %9
          %26 = OpLabel
                OpStore %tint_pointsize %float_1
-         %28 = OpFunctionCall %void %modf_d62477
+         %28 = OpFunctionCall %void %modf_a54eca
          %29 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %31 = OpLabel
-         %32 = OpFunctionCall %void %modf_d62477
+         %32 = OpFunctionCall %void %modf_a54eca
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %34 = OpLabel
-         %35 = OpFunctionCall %void %modf_d62477
+         %35 = OpFunctionCall %void %modf_a54eca
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/modf/d62477.wgsl.expected.wgsl b/test/intrinsics/gen/modf/a54eca.wgsl.expected.wgsl
similarity index 79%
rename from test/intrinsics/gen/modf/d62477.wgsl.expected.wgsl
rename to test/intrinsics/gen/modf/a54eca.wgsl.expected.wgsl
index 5bd5b42..0d5bce3 100644
--- a/test/intrinsics/gen/modf/d62477.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/a54eca.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn modf_d62477() {
+fn modf_a54eca() {
   var arg_1 : vec2<f32>;
   var res : vec2<f32> = modf(vec2<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_d62477();
+  modf_a54eca();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_d62477();
+  modf_a54eca();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_d62477();
+  modf_a54eca();
 }
diff --git a/test/intrinsics/gen/modf/c82e3f.wgsl.expected.hlsl b/test/intrinsics/gen/modf/c82e3f.wgsl.expected.hlsl
deleted file mode 100644
index f1508a0..0000000
--- a/test/intrinsics/gen/modf/c82e3f.wgsl.expected.hlsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn modf_c82e3f() {
-  var arg_1 : vec4<f32>;
-  var res : vec4<f32> = modf(vec4<f32>(), &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  modf_c82e3f();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  modf_c82e3f();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  modf_c82e3f();
-}
-
-Failed to generate: error: Unknown builtin method: modf
diff --git a/test/intrinsics/gen/modf/c82e3f.wgsl.expected.msl b/test/intrinsics/gen/modf/c82e3f.wgsl.expected.msl
deleted file mode 100644
index a6f21e05..0000000
--- a/test/intrinsics/gen/modf/c82e3f.wgsl.expected.msl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn modf_c82e3f() {
-  var arg_1 : vec4<f32>;
-  var res : vec4<f32> = modf(vec4<f32>(), &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  modf_c82e3f();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  modf_c82e3f();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  modf_c82e3f();
-}
-
-Failed to generate: error: Unknown import method: modf
diff --git a/test/intrinsics/gen/modf/c82e3f.wgsl b/test/intrinsics/gen/modf/d1d6f6.wgsl
similarity index 94%
rename from test/intrinsics/gen/modf/c82e3f.wgsl
rename to test/intrinsics/gen/modf/d1d6f6.wgsl
index bc0651d..487c066 100644
--- a/test/intrinsics/gen/modf/c82e3f.wgsl
+++ b/test/intrinsics/gen/modf/d1d6f6.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn modf_c82e3f() {
+fn modf_d1d6f6() {
   var arg_1: vec4<f32>;
   var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_c82e3f();
+  modf_d1d6f6();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_c82e3f();
+  modf_d1d6f6();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_c82e3f();
+  modf_d1d6f6();
 }
diff --git a/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.hlsl b/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.hlsl
new file mode 100644
index 0000000..fd38668
--- /dev/null
+++ b/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_d1d6f6() {
+  var arg_1 : vec4<f32>;
+  var res : vec4<f32> = modf(vec4<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_d1d6f6();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_d1d6f6();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_d1d6f6();
+}
+
+Failed to generate: error: Unknown builtin method: modf
diff --git a/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.msl b/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.msl
new file mode 100644
index 0000000..347d278
--- /dev/null
+++ b/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_d1d6f6() {
+  var arg_1 : vec4<f32>;
+  var res : vec4<f32> = modf(vec4<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_d1d6f6();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_d1d6f6();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_d1d6f6();
+}
+
+Failed to generate: error: Unknown import method: modf
diff --git a/test/intrinsics/gen/modf/c82e3f.wgsl.expected.spvasm b/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.spvasm
similarity index 91%
rename from test/intrinsics/gen/modf/c82e3f.wgsl.expected.spvasm
rename to test/intrinsics/gen/modf/d1d6f6.wgsl.expected.spvasm
index 962fba0..1d40f64 100644
--- a/test/intrinsics/gen/modf/c82e3f.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %modf_c82e3f "modf_c82e3f"
+               OpName %modf_d1d6f6 "modf_d1d6f6"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -36,7 +36,7 @@
 %_ptr_Function_v4float = OpTypePointer Function %v4float
          %19 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%modf_c82e3f = OpFunction %void None %9
+%modf_d1d6f6 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v4float Function %8
         %res = OpVariable %_ptr_Function_v4float Function %8
@@ -53,17 +53,17 @@
 %vertex_main = OpFunction %void None %9
          %24 = OpLabel
                OpStore %tint_pointsize %float_1
-         %26 = OpFunctionCall %void %modf_c82e3f
+         %26 = OpFunctionCall %void %modf_d1d6f6
          %27 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %29 = OpLabel
-         %30 = OpFunctionCall %void %modf_c82e3f
+         %30 = OpFunctionCall %void %modf_d1d6f6
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %32 = OpLabel
-         %33 = OpFunctionCall %void %modf_c82e3f
+         %33 = OpFunctionCall %void %modf_d1d6f6
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/modf/c82e3f.wgsl.expected.wgsl b/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.wgsl
similarity index 79%
copy from test/intrinsics/gen/modf/c82e3f.wgsl.expected.wgsl
copy to test/intrinsics/gen/modf/d1d6f6.wgsl.expected.wgsl
index 60bcecd..f4aea36 100644
--- a/test/intrinsics/gen/modf/c82e3f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/d1d6f6.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn modf_c82e3f() {
+fn modf_d1d6f6() {
   var arg_1 : vec4<f32>;
   var res : vec4<f32> = modf(vec4<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_c82e3f();
+  modf_d1d6f6();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_c82e3f();
+  modf_d1d6f6();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_c82e3f();
+  modf_d1d6f6();
 }
diff --git a/test/intrinsics/gen/modf/d62477.wgsl.expected.hlsl b/test/intrinsics/gen/modf/d62477.wgsl.expected.hlsl
deleted file mode 100644
index a70bf73..0000000
--- a/test/intrinsics/gen/modf/d62477.wgsl.expected.hlsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn modf_d62477() {
-  var arg_1 : vec2<f32>;
-  var res : vec2<f32> = modf(vec2<f32>(), &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  modf_d62477();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  modf_d62477();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  modf_d62477();
-}
-
-Failed to generate: error: Unknown builtin method: modf
diff --git a/test/intrinsics/gen/modf/d62477.wgsl.expected.msl b/test/intrinsics/gen/modf/d62477.wgsl.expected.msl
deleted file mode 100644
index 5d2cb3f..0000000
--- a/test/intrinsics/gen/modf/d62477.wgsl.expected.msl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn modf_d62477() {
-  var arg_1 : vec2<f32>;
-  var res : vec2<f32> = modf(vec2<f32>(), &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  modf_d62477();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  modf_d62477();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  modf_d62477();
-}
-
-Failed to generate: error: Unknown import method: modf
diff --git a/test/intrinsics/gen/modf/c82e3f.wgsl b/test/intrinsics/gen/modf/e83560.wgsl
similarity index 94%
copy from test/intrinsics/gen/modf/c82e3f.wgsl
copy to test/intrinsics/gen/modf/e83560.wgsl
index bc0651d..7fd0650 100644
--- a/test/intrinsics/gen/modf/c82e3f.wgsl
+++ b/test/intrinsics/gen/modf/e83560.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn modf_c82e3f() {
+fn modf_e83560() {
   var arg_1: vec4<f32>;
   var res: vec4<f32> = modf(vec4<f32>(), &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_c82e3f();
+  modf_e83560();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_c82e3f();
+  modf_e83560();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_c82e3f();
+  modf_e83560();
 }
diff --git a/test/intrinsics/gen/modf/e83560.wgsl.expected.hlsl b/test/intrinsics/gen/modf/e83560.wgsl.expected.hlsl
new file mode 100644
index 0000000..c8bf82c
--- /dev/null
+++ b/test/intrinsics/gen/modf/e83560.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_e83560() {
+  var arg_1 : vec4<f32>;
+  var res : vec4<f32> = modf(vec4<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_e83560();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_e83560();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_e83560();
+}
+
+Failed to generate: error: Unknown builtin method: modf
diff --git a/test/intrinsics/gen/modf/e83560.wgsl.expected.msl b/test/intrinsics/gen/modf/e83560.wgsl.expected.msl
new file mode 100644
index 0000000..eebbc6a
--- /dev/null
+++ b/test/intrinsics/gen/modf/e83560.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_e83560() {
+  var arg_1 : vec4<f32>;
+  var res : vec4<f32> = modf(vec4<f32>(), &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_e83560();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_e83560();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_e83560();
+}
+
+Failed to generate: error: Unknown import method: modf
diff --git a/test/intrinsics/gen/modf/c82e3f.wgsl.expected.spvasm b/test/intrinsics/gen/modf/e83560.wgsl.expected.spvasm
similarity index 91%
copy from test/intrinsics/gen/modf/c82e3f.wgsl.expected.spvasm
copy to test/intrinsics/gen/modf/e83560.wgsl.expected.spvasm
index 962fba0..8e5622c 100644
--- a/test/intrinsics/gen/modf/c82e3f.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/e83560.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %modf_c82e3f "modf_c82e3f"
+               OpName %modf_e83560 "modf_e83560"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -36,7 +36,7 @@
 %_ptr_Function_v4float = OpTypePointer Function %v4float
          %19 = OpTypeFunction %void %v4float
     %float_1 = OpConstant %float 1
-%modf_c82e3f = OpFunction %void None %9
+%modf_e83560 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_v4float Function %8
         %res = OpVariable %_ptr_Function_v4float Function %8
@@ -53,17 +53,17 @@
 %vertex_main = OpFunction %void None %9
          %24 = OpLabel
                OpStore %tint_pointsize %float_1
-         %26 = OpFunctionCall %void %modf_c82e3f
+         %26 = OpFunctionCall %void %modf_e83560
          %27 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %29 = OpLabel
-         %30 = OpFunctionCall %void %modf_c82e3f
+         %30 = OpFunctionCall %void %modf_e83560
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %32 = OpLabel
-         %33 = OpFunctionCall %void %modf_c82e3f
+         %33 = OpFunctionCall %void %modf_e83560
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/modf/c82e3f.wgsl.expected.wgsl b/test/intrinsics/gen/modf/e83560.wgsl.expected.wgsl
similarity index 79%
rename from test/intrinsics/gen/modf/c82e3f.wgsl.expected.wgsl
rename to test/intrinsics/gen/modf/e83560.wgsl.expected.wgsl
index 60bcecd..4d37105 100644
--- a/test/intrinsics/gen/modf/c82e3f.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/e83560.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn modf_c82e3f() {
+fn modf_e83560() {
   var arg_1 : vec4<f32>;
   var res : vec4<f32> = modf(vec4<f32>(), &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_c82e3f();
+  modf_e83560();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_c82e3f();
+  modf_e83560();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_c82e3f();
+  modf_e83560();
 }
diff --git a/test/intrinsics/gen/modf/8d6261.wgsl b/test/intrinsics/gen/modf/f90945.wgsl
similarity index 94%
rename from test/intrinsics/gen/modf/8d6261.wgsl
rename to test/intrinsics/gen/modf/f90945.wgsl
index ac17fa6..b61908c 100644
--- a/test/intrinsics/gen/modf/8d6261.wgsl
+++ b/test/intrinsics/gen/modf/f90945.wgsl
@@ -22,23 +22,23 @@
 // Do not modify this file directly
 ////////////////////////////////////////////////////////////////////////////////
 
-fn modf_8d6261() {
+fn modf_f90945() {
   var arg_1: f32;
   var res: f32 = modf(1.0, &arg_1);
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_8d6261();
+  modf_f90945();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_8d6261();
+  modf_f90945();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_8d6261();
+  modf_f90945();
 }
diff --git a/test/intrinsics/gen/modf/f90945.wgsl.expected.hlsl b/test/intrinsics/gen/modf/f90945.wgsl.expected.hlsl
new file mode 100644
index 0000000..1e46e3a
--- /dev/null
+++ b/test/intrinsics/gen/modf/f90945.wgsl.expected.hlsl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_f90945() {
+  var arg_1 : f32;
+  var res : f32 = modf(1.0, &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_f90945();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_f90945();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_f90945();
+}
+
+Failed to generate: error: Unknown builtin method: modf
diff --git a/test/intrinsics/gen/modf/f90945.wgsl.expected.msl b/test/intrinsics/gen/modf/f90945.wgsl.expected.msl
new file mode 100644
index 0000000..e8a2f8c
--- /dev/null
+++ b/test/intrinsics/gen/modf/f90945.wgsl.expected.msl
@@ -0,0 +1,31 @@
+SKIP: FAILED
+
+
+fn modf_f90945() {
+  var arg_1 : f32;
+  var res : f32 = modf(1.0, &(arg_1));
+}
+
+struct tint_symbol {
+  [[builtin(position)]]
+  value : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vertex_main() -> tint_symbol {
+  modf_f90945();
+  let tint_symbol_1 : tint_symbol = tint_symbol(vec4<f32>());
+  return tint_symbol_1;
+}
+
+[[stage(fragment)]]
+fn fragment_main() {
+  modf_f90945();
+}
+
+[[stage(compute)]]
+fn compute_main() {
+  modf_f90945();
+}
+
+Failed to generate: error: Unknown import method: modf
diff --git a/test/intrinsics/gen/modf/8d6261.wgsl.expected.spvasm b/test/intrinsics/gen/modf/f90945.wgsl.expected.spvasm
similarity index 91%
copy from test/intrinsics/gen/modf/8d6261.wgsl.expected.spvasm
copy to test/intrinsics/gen/modf/f90945.wgsl.expected.spvasm
index 4835826..0872a2f 100644
--- a/test/intrinsics/gen/modf/8d6261.wgsl.expected.spvasm
+++ b/test/intrinsics/gen/modf/f90945.wgsl.expected.spvasm
@@ -13,7 +13,7 @@
                OpExecutionMode %compute_main LocalSize 1 1 1
                OpName %tint_pointsize "tint_pointsize"
                OpName %tint_symbol_1 "tint_symbol_1"
-               OpName %modf_8d6261 "modf_8d6261"
+               OpName %modf_f90945 "modf_f90945"
                OpName %arg_1 "arg_1"
                OpName %res "res"
                OpName %tint_symbol_2 "tint_symbol_2"
@@ -36,7 +36,7 @@
 %_ptr_Function_float = OpTypePointer Function %float
     %float_1 = OpConstant %float 1
          %20 = OpTypeFunction %void %v4float
-%modf_8d6261 = OpFunction %void None %9
+%modf_f90945 = OpFunction %void None %9
          %12 = OpLabel
       %arg_1 = OpVariable %_ptr_Function_float Function %4
         %res = OpVariable %_ptr_Function_float Function %4
@@ -53,17 +53,17 @@
 %vertex_main = OpFunction %void None %9
          %25 = OpLabel
                OpStore %tint_pointsize %float_1
-         %26 = OpFunctionCall %void %modf_8d6261
+         %26 = OpFunctionCall %void %modf_f90945
          %27 = OpFunctionCall %void %tint_symbol_2 %8
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
          %29 = OpLabel
-         %30 = OpFunctionCall %void %modf_8d6261
+         %30 = OpFunctionCall %void %modf_f90945
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
          %32 = OpLabel
-         %33 = OpFunctionCall %void %modf_8d6261
+         %33 = OpFunctionCall %void %modf_f90945
                OpReturn
                OpFunctionEnd
diff --git a/test/intrinsics/gen/modf/8d6261.wgsl.expected.wgsl b/test/intrinsics/gen/modf/f90945.wgsl.expected.wgsl
similarity index 77%
copy from test/intrinsics/gen/modf/8d6261.wgsl.expected.wgsl
copy to test/intrinsics/gen/modf/f90945.wgsl.expected.wgsl
index e23dd0c..d8ced2a 100644
--- a/test/intrinsics/gen/modf/8d6261.wgsl.expected.wgsl
+++ b/test/intrinsics/gen/modf/f90945.wgsl.expected.wgsl
@@ -1,20 +1,20 @@
-fn modf_8d6261() {
+fn modf_f90945() {
   var arg_1 : f32;
   var res : f32 = modf(1.0, &(arg_1));
 }
 
 [[stage(vertex)]]
 fn vertex_main() -> [[builtin(position)]] vec4<f32> {
-  modf_8d6261();
+  modf_f90945();
   return vec4<f32>();
 }
 
 [[stage(fragment)]]
 fn fragment_main() {
-  modf_8d6261();
+  modf_f90945();
 }
 
 [[stage(compute)]]
 fn compute_main() {
-  modf_8d6261();
+  modf_f90945();
 }
diff --git a/test/intrinsics/gen/modf/f9f98c.wgsl.expected.hlsl b/test/intrinsics/gen/modf/f9f98c.wgsl.expected.hlsl
deleted file mode 100644
index c55eb0c..0000000
--- a/test/intrinsics/gen/modf/f9f98c.wgsl.expected.hlsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn modf_f9f98c() {
-  var arg_1 : vec3<f32>;
-  var res : vec3<f32> = modf(vec3<f32>(), &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  modf_f9f98c();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  modf_f9f98c();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  modf_f9f98c();
-}
-
-Failed to generate: error: Unknown builtin method: modf
diff --git a/test/intrinsics/gen/modf/f9f98c.wgsl.expected.msl b/test/intrinsics/gen/modf/f9f98c.wgsl.expected.msl
deleted file mode 100644
index 6ad9f9e..0000000
--- a/test/intrinsics/gen/modf/f9f98c.wgsl.expected.msl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-
-fn modf_f9f98c() {
-  var arg_1 : vec3<f32>;
-  var res : vec3<f32> = modf(vec3<f32>(), &(arg_1));
-}
-
-[[stage(vertex)]]
-fn vertex_main() {
-  modf_f9f98c();
-}
-
-[[stage(fragment)]]
-fn fragment_main() {
-  modf_f9f98c();
-}
-
-[[stage(compute)]]
-fn compute_main() {
-  modf_f9f98c();
-}
-
-Failed to generate: error: Unknown import method: modf
diff --git a/test/ptr_ref/load/local/ptr_storage.wgsl b/test/ptr_ref/load/local/ptr_storage.wgsl
index d8f764f..56410e3 100644
--- a/test/ptr_ref/load/local/ptr_storage.wgsl
+++ b/test/ptr_ref/load/local/ptr_storage.wgsl
@@ -8,6 +8,6 @@
 
 [[stage(compute)]]
 fn main() {
-  let p : ptr<storage, i32> = &v.a;
+  let p : ptr<storage, i32, read_write> = &v.a;
   let use : i32 = *p + 1;
 }
diff --git a/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.spvasm b/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.spvasm
index 6810fb2..fdcdbaf 100644
--- a/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.spvasm
+++ b/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.spvasm
@@ -13,6 +13,7 @@
                OpName %main "main"
                OpDecorate %S Block
                OpMemberDecorate %S 0 Offset 0
+               OpDecorate %v NonWritable
                OpDecorate %v DescriptorSet 0
                OpDecorate %v Binding 0
         %int = OpTypeInt 32 1
diff --git a/test/samples/compute_boids.wgsl.expected.spvasm b/test/samples/compute_boids.wgsl.expected.spvasm
index a164a17..0ff734e 100644
--- a/test/samples/compute_boids.wgsl.expected.spvasm
+++ b/test/samples/compute_boids.wgsl.expected.spvasm
@@ -68,6 +68,7 @@
                OpMemberDecorate %SimParams 4 Offset 16
                OpMemberDecorate %SimParams 5 Offset 20
                OpMemberDecorate %SimParams 6 Offset 24
+               OpDecorate %params NonWritable
                OpDecorate %params Binding 0
                OpDecorate %params DescriptorSet 0
                OpDecorate %Particles Block
diff --git a/test/samples/cube.wgsl.expected.spvasm b/test/samples/cube.wgsl.expected.spvasm
index 8323589..0e22c2b 100644
--- a/test/samples/cube.wgsl.expected.spvasm
+++ b/test/samples/cube.wgsl.expected.spvasm
@@ -36,6 +36,7 @@
                OpMemberDecorate %Uniforms 0 Offset 0
                OpMemberDecorate %Uniforms 0 ColMajor
                OpMemberDecorate %Uniforms 0 MatrixStride 16
+               OpDecorate %uniforms NonWritable
                OpDecorate %uniforms Binding 0
                OpDecorate %uniforms DescriptorSet 0
                OpDecorate %tint_symbol Location 0
