[spirv] Avoid OpConstantNull for subgroup matrices

Mesa did not support `OpConstantNull` for these types until very
recently, so use `OpConstantComposite` instead.

Bug: 407532165
Change-Id: Ia914859bb2321eb76270d9797bb1e22fee6e30c7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/227574
Commit-Queue: James Price <jrprice@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Auto-Submit: James Price <jrprice@google.com>
diff --git a/src/tint/lang/spirv/writer/construct_test.cc b/src/tint/lang/spirv/writer/construct_test.cc
index 6d43200..c1bc3ee 100644
--- a/src/tint/lang/spirv/writer/construct_test.cc
+++ b/src/tint/lang/spirv/writer/construct_test.cc
@@ -137,8 +137,8 @@
     auto* func = b.Function("foo", ty.void_());
     b.Append(func->Block(), [&] {
         b.Let("left", b.Construct(ty.subgroup_matrix_left(ty.f32(), 8, 4)));
-        b.Let("right", b.Construct(ty.subgroup_matrix_right(ty.f32(), 4, 8)));
-        b.Let("result", b.Construct(ty.subgroup_matrix_result(ty.f32(), 2, 2)));
+        b.Let("right", b.Construct(ty.subgroup_matrix_right(ty.i32(), 4, 8)));
+        b.Let("result", b.Construct(ty.subgroup_matrix_result(ty.u32(), 2, 2)));
         b.Return(func);
     });
 
@@ -146,11 +146,11 @@
     options.use_vulkan_memory_model = true;
     ASSERT_TRUE(Generate(options)) << Error() << output_;
     EXPECT_INST("%6 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_4 %uint_8 %uint_0");
-    EXPECT_INST("%left = OpConstantNull %6");
-    EXPECT_INST("%14 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_4 %uint_1");
-    EXPECT_INST("%right = OpConstantNull %14");
-    EXPECT_INST("%17 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_2 %uint_2 %uint_2");
-    EXPECT_INST("%result = OpConstantNull %17");
+    EXPECT_INST("%left = OpConstantComposite %6 %float_0");
+    EXPECT_INST("%15 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_4 %uint_1");
+    EXPECT_INST("%right = OpConstantComposite %15 %int_0");
+    EXPECT_INST("%20 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_2 %uint_2 %uint_2");
+    EXPECT_INST("%result = OpConstantComposite %20 %uint_0");
 }
 
 TEST_F(SpirvWriterTest, Construct_SubgroupMatrix_SingleValue) {
diff --git a/src/tint/lang/spirv/writer/printer/printer.cc b/src/tint/lang/spirv/writer/printer/printer.cc
index 8e54b06..2b98890 100644
--- a/src/tint/lang/spirv/writer/printer/printer.cc
+++ b/src/tint/lang/spirv/writer/printer/printer.cc
@@ -468,7 +468,17 @@
     uint32_t ConstantNull(const core::type::Type* type) {
         return constant_nulls_.GetOrAdd(type, [&] {
             auto id = module_.NextId();
-            module_.PushType(spv::Op::OpConstantNull, {Type(type), id});
+
+            if (auto* sm = type->As<core::type::SubgroupMatrix>()) {
+                // OpConstantNull is not supported for CooperativeMatrix types on some drivers, so
+                // use OpConstantComposite instead.
+                // See crbug.com/407532165.
+                module_.PushType(spv::Op::OpConstantComposite,
+                                 {Type(type), id, Constant(b_.Zero(sm->Type()))});
+            } else {
+                module_.PushType(spv::Op::OpConstantNull, {Type(type), id});
+            }
+
             return id;
         });
     }
diff --git a/src/tint/lang/spirv/writer/type_test.cc b/src/tint/lang/spirv/writer/type_test.cc
index 5c21dc1..81812d5 100644
--- a/src/tint/lang/spirv/writer/type_test.cc
+++ b/src/tint/lang/spirv/writer/type_test.cc
@@ -572,8 +572,8 @@
     EXPECT_INST("OpCapability CooperativeMatrixKHR");
     EXPECT_INST("OpExtension \"SPV_KHR_cooperative_matrix\"");
     EXPECT_INST("%3 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_4 %uint_8 %uint_0");
-    EXPECT_INST("%13 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_4 %uint_1");
-    EXPECT_INST("%18 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_2 %uint_2 %uint_2");
+    EXPECT_INST("%14 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_4 %uint_1");
+    EXPECT_INST("%19 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_2 %uint_2 %uint_2");
 }
 
 // Test that we can emit multiple types.
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2969da.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2969da.wgsl.expected.spvasm
index e2ae522..d7f2370 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2969da.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2969da.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -36,30 +36,31 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+      %int_0 = OpConstant %int 0
+         %15 = OpConstantComposite %16 %int_0
      %uint_1 = OpConstant %uint 1
-         %19 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %18 = OpConstantNull %19
-         %21 = OpConstantNull %9
+         %20 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+         %19 = OpConstantComposite %20 %int_0
+         %22 = OpConstantComposite %9 %int_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %28 = OpTypeFunction %void
+         %29 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_2969da = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %22 = OpCooperativeMatrixMulAddKHR %9 %15 %18 %21 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR|MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
-               OpStore %res %22
-         %25 = OpLoad %9 %res None
-               OpReturnValue %25
+         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %19 %22 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR|MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
+               OpStore %res %23
+         %26 = OpLoad %9 %res None
+               OpReturnValue %26
                OpFunctionEnd
-%compute_main = OpFunction %void None %28
-         %29 = OpLabel
-         %30 = OpFunctionCall %9 %subgroupMatrixMultiply_2969da
-         %31 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
-         %33 = OpAccessChain %_ptr_StorageBuffer_int %31 %uint_0
-               OpCooperativeMatrixStoreKHR %33 %30 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %29
+         %30 = OpLabel
+         %31 = OpFunctionCall %9 %subgroupMatrixMultiply_2969da
+         %32 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+         %34 = OpAccessChain %_ptr_StorageBuffer_int %32 %uint_0
+               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2c905b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2c905b.wgsl.expected.spvasm
index ba4088b..43b9129 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2c905b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/2c905b.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -36,30 +36,31 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+    %float_0 = OpConstant %float 0
+         %15 = OpConstantComposite %16 %float_0
      %uint_1 = OpConstant %uint 1
-         %19 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %18 = OpConstantNull %19
-         %21 = OpConstantNull %9
+         %20 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+         %19 = OpConstantComposite %20 %float_0
+         %22 = OpConstantComposite %9 %float_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %28 = OpTypeFunction %void
+         %29 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_float_uint_1024 = OpTypePointer StorageBuffer %_arr_float_uint_1024
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_2c905b = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %22 = OpCooperativeMatrixMulAddKHR %9 %15 %18 %21 NoneKHR
-               OpStore %res %22
-         %25 = OpLoad %9 %res None
-               OpReturnValue %25
+         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %19 %22 NoneKHR
+               OpStore %res %23
+         %26 = OpLoad %9 %res None
+               OpReturnValue %26
                OpFunctionEnd
-%compute_main = OpFunction %void None %28
-         %29 = OpLabel
-         %30 = OpFunctionCall %9 %subgroupMatrixMultiply_2c905b
-         %31 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
-         %33 = OpAccessChain %_ptr_StorageBuffer_float %31 %uint_0
-               OpCooperativeMatrixStoreKHR %33 %30 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %29
+         %30 = OpLabel
+         %31 = OpFunctionCall %9 %subgroupMatrixMultiply_2c905b
+         %32 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
+         %34 = OpAccessChain %_ptr_StorageBuffer_float %32 %uint_0
+               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3e9b04.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3e9b04.wgsl.expected.spvasm
index a0372d1..52089aa 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3e9b04.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/3e9b04.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -36,30 +36,31 @@
         %int = OpTypeInt 32 1
      %uint_0 = OpConstant %uint 0
          %15 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+      %int_0 = OpConstant %int 0
+         %14 = OpConstantComposite %15 %int_0
      %uint_1 = OpConstant %uint 1
-         %19 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %18 = OpConstantNull %19
-         %21 = OpConstantNull %8
+         %20 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+         %19 = OpConstantComposite %20 %int_0
+         %22 = OpConstantComposite %8 %uint_0
 %_ptr_Function_8 = OpTypePointer Function %8
        %void = OpTypeVoid
-         %28 = OpTypeFunction %void
+         %29 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_3e9b04 = OpFunction %8 None %12
          %13 = OpLabel
         %res = OpVariable %_ptr_Function_8 Function
-         %22 = OpCooperativeMatrixMulAddKHR %8 %14 %18 %21 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
-               OpStore %res %22
-         %25 = OpLoad %8 %res None
-               OpReturnValue %25
+         %23 = OpCooperativeMatrixMulAddKHR %8 %14 %19 %22 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
+               OpStore %res %23
+         %26 = OpLoad %8 %res None
+               OpReturnValue %26
                OpFunctionEnd
-%compute_main = OpFunction %void None %28
-         %29 = OpLabel
-         %30 = OpFunctionCall %8 %subgroupMatrixMultiply_3e9b04
-         %31 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
-         %33 = OpAccessChain %_ptr_StorageBuffer_uint %31 %uint_0
-               OpCooperativeMatrixStoreKHR %33 %30 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %29
+         %30 = OpLabel
+         %31 = OpFunctionCall %8 %subgroupMatrixMultiply_3e9b04
+         %32 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+         %34 = OpAccessChain %_ptr_StorageBuffer_uint %32 %uint_0
+               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/42abed.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/42abed.wgsl.expected.spvasm
index c5b4ddf..0e6098d 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/42abed.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/42abed.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,30 +39,31 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %15 = OpConstantComposite %16 %half_0x0p_0
      %uint_1 = OpConstant %uint 1
-         %19 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %18 = OpConstantNull %19
-         %21 = OpConstantNull %9
+         %20 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+         %19 = OpConstantComposite %20 %half_0x0p_0
+         %22 = OpConstantComposite %9 %half_0x0p_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %28 = OpTypeFunction %void
+         %29 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_half_uint_1024 = OpTypePointer StorageBuffer %_arr_half_uint_1024
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_42abed = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %22 = OpCooperativeMatrixMulAddKHR %9 %15 %18 %21 NoneKHR
-               OpStore %res %22
-         %25 = OpLoad %9 %res None
-               OpReturnValue %25
+         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %19 %22 NoneKHR
+               OpStore %res %23
+         %26 = OpLoad %9 %res None
+               OpReturnValue %26
                OpFunctionEnd
-%compute_main = OpFunction %void None %28
-         %29 = OpLabel
-         %30 = OpFunctionCall %9 %subgroupMatrixMultiply_42abed
-         %31 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
-         %33 = OpAccessChain %_ptr_StorageBuffer_half %31 %uint_0
-               OpCooperativeMatrixStoreKHR %33 %30 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %29
+         %30 = OpLabel
+         %31 = OpFunctionCall %9 %subgroupMatrixMultiply_42abed
+         %32 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
+         %34 = OpAccessChain %_ptr_StorageBuffer_half %32 %uint_0
+               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/5677fc.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/5677fc.wgsl.expected.spvasm
index c867179..40f8d6f 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/5677fc.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/5677fc.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 38
+; Bound: 40
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -40,30 +40,32 @@
        %half = OpTypeFloat 16
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %15 = OpConstantComposite %16 %half_0x0p_0
      %uint_1 = OpConstant %uint 1
-         %20 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %19 = OpConstantNull %20
-         %22 = OpConstantNull %9
+         %21 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+         %20 = OpConstantComposite %21 %half_0x0p_0
+    %float_0 = OpConstant %float 0
+         %23 = OpConstantComposite %9 %float_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %29 = OpTypeFunction %void
+         %31 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_float_uint_1024 = OpTypePointer StorageBuffer %_arr_float_uint_1024
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_5677fc = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %19 %22 NoneKHR
-               OpStore %res %23
-         %26 = OpLoad %9 %res None
-               OpReturnValue %26
+         %25 = OpCooperativeMatrixMulAddKHR %9 %15 %20 %23 NoneKHR
+               OpStore %res %25
+         %28 = OpLoad %9 %res None
+               OpReturnValue %28
                OpFunctionEnd
-%compute_main = OpFunction %void None %29
-         %30 = OpLabel
-         %31 = OpFunctionCall %9 %subgroupMatrixMultiply_5677fc
-         %32 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
-         %34 = OpAccessChain %_ptr_StorageBuffer_float %32 %uint_0
-               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %31
+         %32 = OpLabel
+         %33 = OpFunctionCall %9 %subgroupMatrixMultiply_5677fc
+         %34 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
+         %36 = OpAccessChain %_ptr_StorageBuffer_float %34 %uint_0
+               OpCooperativeMatrixStoreKHR %36 %33 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/704b4d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/704b4d.wgsl.expected.spvasm
index e6538af..de4d2c3 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/704b4d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/704b4d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 38
+; Bound: 40
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -40,30 +40,32 @@
        %half = OpTypeFloat 16
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %15 = OpConstantComposite %16 %half_0x0p_0
      %uint_1 = OpConstant %uint 1
-         %20 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %19 = OpConstantNull %20
-         %22 = OpConstantNull %9
+         %21 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+         %20 = OpConstantComposite %21 %half_0x0p_0
+      %int_0 = OpConstant %int 0
+         %23 = OpConstantComposite %9 %int_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %29 = OpTypeFunction %void
+         %31 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_704b4d = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %19 %22 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
-               OpStore %res %23
-         %26 = OpLoad %9 %res None
-               OpReturnValue %26
+         %25 = OpCooperativeMatrixMulAddKHR %9 %15 %20 %23 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
+               OpStore %res %25
+         %28 = OpLoad %9 %res None
+               OpReturnValue %28
                OpFunctionEnd
-%compute_main = OpFunction %void None %29
-         %30 = OpLabel
-         %31 = OpFunctionCall %9 %subgroupMatrixMultiply_704b4d
-         %32 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
-         %34 = OpAccessChain %_ptr_StorageBuffer_int %32 %uint_0
-               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %31
+         %32 = OpLabel
+         %33 = OpFunctionCall %9 %subgroupMatrixMultiply_704b4d
+         %34 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+         %36 = OpAccessChain %_ptr_StorageBuffer_int %34 %uint_0
+               OpCooperativeMatrixStoreKHR %36 %33 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8648ad.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8648ad.wgsl.expected.spvasm
index 959cba8..dd99b74 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8648ad.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8648ad.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 38
+; Bound: 40
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -37,30 +37,32 @@
         %int = OpTypeInt 32 1
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+      %int_0 = OpConstant %int 0
+         %15 = OpConstantComposite %16 %int_0
      %uint_1 = OpConstant %uint 1
-         %20 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %19 = OpConstantNull %20
-         %22 = OpConstantNull %9
+         %21 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+         %20 = OpConstantComposite %21 %int_0
+    %float_0 = OpConstant %float 0
+         %23 = OpConstantComposite %9 %float_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %29 = OpTypeFunction %void
+         %31 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_float_uint_1024 = OpTypePointer StorageBuffer %_arr_float_uint_1024
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_8648ad = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %19 %22 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
-               OpStore %res %23
-         %26 = OpLoad %9 %res None
-               OpReturnValue %26
+         %25 = OpCooperativeMatrixMulAddKHR %9 %15 %20 %23 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
+               OpStore %res %25
+         %28 = OpLoad %9 %res None
+               OpReturnValue %28
                OpFunctionEnd
-%compute_main = OpFunction %void None %29
-         %30 = OpLabel
-         %31 = OpFunctionCall %9 %subgroupMatrixMultiply_8648ad
-         %32 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
-         %34 = OpAccessChain %_ptr_StorageBuffer_float %32 %uint_0
-               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %31
+         %32 = OpLabel
+         %33 = OpFunctionCall %9 %subgroupMatrixMultiply_8648ad
+         %34 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
+         %36 = OpAccessChain %_ptr_StorageBuffer_float %34 %uint_0
+               OpCooperativeMatrixStoreKHR %36 %33 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8744bd.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8744bd.wgsl.expected.spvasm
index d4aeb46..d6ced86 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8744bd.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8744bd.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 38
+; Bound: 40
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -40,30 +40,32 @@
       %float = OpTypeFloat 32
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+    %float_0 = OpConstant %float 0
+         %15 = OpConstantComposite %16 %float_0
      %uint_1 = OpConstant %uint 1
-         %20 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %19 = OpConstantNull %20
-         %22 = OpConstantNull %9
+         %21 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+         %20 = OpConstantComposite %21 %float_0
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %23 = OpConstantComposite %9 %half_0x0p_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %29 = OpTypeFunction %void
+         %31 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_half_uint_1024 = OpTypePointer StorageBuffer %_arr_half_uint_1024
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_8744bd = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %19 %22 NoneKHR
-               OpStore %res %23
-         %26 = OpLoad %9 %res None
-               OpReturnValue %26
+         %25 = OpCooperativeMatrixMulAddKHR %9 %15 %20 %23 NoneKHR
+               OpStore %res %25
+         %28 = OpLoad %9 %res None
+               OpReturnValue %28
                OpFunctionEnd
-%compute_main = OpFunction %void None %29
-         %30 = OpLabel
-         %31 = OpFunctionCall %9 %subgroupMatrixMultiply_8744bd
-         %32 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
-         %34 = OpAccessChain %_ptr_StorageBuffer_half %32 %uint_0
-               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %31
+         %32 = OpLabel
+         %33 = OpFunctionCall %9 %subgroupMatrixMultiply_8744bd
+         %34 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
+         %36 = OpAccessChain %_ptr_StorageBuffer_half %34 %uint_0
+               OpCooperativeMatrixStoreKHR %36 %33 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c3aac.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c3aac.wgsl.expected.spvasm
index 8cdd287..200c3ac 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c3aac.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/8c3aac.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -36,30 +36,31 @@
       %float = OpTypeFloat 32
      %uint_0 = OpConstant %uint 0
          %15 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+    %float_0 = OpConstant %float 0
+         %14 = OpConstantComposite %15 %float_0
      %uint_1 = OpConstant %uint 1
-         %19 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %18 = OpConstantNull %19
-         %21 = OpConstantNull %8
+         %20 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+         %19 = OpConstantComposite %20 %float_0
+         %22 = OpConstantComposite %8 %uint_0
 %_ptr_Function_8 = OpTypePointer Function %8
        %void = OpTypeVoid
-         %28 = OpTypeFunction %void
+         %29 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_8c3aac = OpFunction %8 None %12
          %13 = OpLabel
         %res = OpVariable %_ptr_Function_8 Function
-         %22 = OpCooperativeMatrixMulAddKHR %8 %14 %18 %21 NoneKHR
-               OpStore %res %22
-         %25 = OpLoad %8 %res None
-               OpReturnValue %25
+         %23 = OpCooperativeMatrixMulAddKHR %8 %14 %19 %22 NoneKHR
+               OpStore %res %23
+         %26 = OpLoad %8 %res None
+               OpReturnValue %26
                OpFunctionEnd
-%compute_main = OpFunction %void None %28
-         %29 = OpLabel
-         %30 = OpFunctionCall %8 %subgroupMatrixMultiply_8c3aac
-         %31 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
-         %33 = OpAccessChain %_ptr_StorageBuffer_uint %31 %uint_0
-               OpCooperativeMatrixStoreKHR %33 %30 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %29
+         %30 = OpLabel
+         %31 = OpFunctionCall %8 %subgroupMatrixMultiply_8c3aac
+         %32 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+         %34 = OpAccessChain %_ptr_StorageBuffer_uint %32 %uint_0
+               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/957137.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/957137.wgsl.expected.spvasm
index 79c779b..3e07368 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/957137.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/957137.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,30 +39,31 @@
        %half = OpTypeFloat 16
      %uint_0 = OpConstant %uint 0
          %15 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %14 = OpConstantComposite %15 %half_0x0p_0
      %uint_1 = OpConstant %uint 1
-         %19 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %18 = OpConstantNull %19
-         %21 = OpConstantNull %8
+         %20 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+         %19 = OpConstantComposite %20 %half_0x0p_0
+         %22 = OpConstantComposite %8 %uint_0
 %_ptr_Function_8 = OpTypePointer Function %8
        %void = OpTypeVoid
-         %28 = OpTypeFunction %void
+         %29 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_957137 = OpFunction %8 None %12
          %13 = OpLabel
         %res = OpVariable %_ptr_Function_8 Function
-         %22 = OpCooperativeMatrixMulAddKHR %8 %14 %18 %21 NoneKHR
-               OpStore %res %22
-         %25 = OpLoad %8 %res None
-               OpReturnValue %25
+         %23 = OpCooperativeMatrixMulAddKHR %8 %14 %19 %22 NoneKHR
+               OpStore %res %23
+         %26 = OpLoad %8 %res None
+               OpReturnValue %26
                OpFunctionEnd
-%compute_main = OpFunction %void None %28
-         %29 = OpLabel
-         %30 = OpFunctionCall %8 %subgroupMatrixMultiply_957137
-         %31 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
-         %33 = OpAccessChain %_ptr_StorageBuffer_uint %31 %uint_0
-               OpCooperativeMatrixStoreKHR %33 %30 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %29
+         %30 = OpLabel
+         %31 = OpFunctionCall %8 %subgroupMatrixMultiply_957137
+         %32 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+         %34 = OpAccessChain %_ptr_StorageBuffer_uint %32 %uint_0
+               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/bf2e54.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/bf2e54.wgsl.expected.spvasm
index d899831..a36051c 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/bf2e54.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/bf2e54.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 38
+; Bound: 40
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -40,30 +40,32 @@
         %int = OpTypeInt 32 1
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+      %int_0 = OpConstant %int 0
+         %15 = OpConstantComposite %16 %int_0
      %uint_1 = OpConstant %uint 1
-         %20 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %19 = OpConstantNull %20
-         %22 = OpConstantNull %9
+         %21 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+         %20 = OpConstantComposite %21 %int_0
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %23 = OpConstantComposite %9 %half_0x0p_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %29 = OpTypeFunction %void
+         %31 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_half_uint_1024 = OpTypePointer StorageBuffer %_arr_half_uint_1024
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_bf2e54 = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %19 %22 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
-               OpStore %res %23
-         %26 = OpLoad %9 %res None
-               OpReturnValue %26
+         %25 = OpCooperativeMatrixMulAddKHR %9 %15 %20 %23 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
+               OpStore %res %25
+         %28 = OpLoad %9 %res None
+               OpReturnValue %28
                OpFunctionEnd
-%compute_main = OpFunction %void None %29
-         %30 = OpLabel
-         %31 = OpFunctionCall %9 %subgroupMatrixMultiply_bf2e54
-         %32 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
-         %34 = OpAccessChain %_ptr_StorageBuffer_half %32 %uint_0
-               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %31
+         %32 = OpLabel
+         %33 = OpFunctionCall %9 %subgroupMatrixMultiply_bf2e54
+         %34 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
+         %36 = OpAccessChain %_ptr_StorageBuffer_half %34 %uint_0
+               OpCooperativeMatrixStoreKHR %36 %33 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c26fb9.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c26fb9.wgsl.expected.spvasm
index a37db93..6f4ec43 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c26fb9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/c26fb9.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -36,30 +36,31 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+         %15 = OpConstantComposite %16 %uint_0
      %uint_1 = OpConstant %uint 1
          %19 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %18 = OpConstantNull %19
-         %21 = OpConstantNull %9
+         %18 = OpConstantComposite %19 %uint_0
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %9 %float_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %28 = OpTypeFunction %void
+         %29 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_float_uint_1024 = OpTypePointer StorageBuffer %_arr_float_uint_1024
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_c26fb9 = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %22 = OpCooperativeMatrixMulAddKHR %9 %15 %18 %21 NoneKHR
-               OpStore %res %22
-         %25 = OpLoad %9 %res None
-               OpReturnValue %25
+         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %18 %21 NoneKHR
+               OpStore %res %23
+         %26 = OpLoad %9 %res None
+               OpReturnValue %26
                OpFunctionEnd
-%compute_main = OpFunction %void None %28
-         %29 = OpLabel
-         %30 = OpFunctionCall %9 %subgroupMatrixMultiply_c26fb9
-         %31 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
-         %33 = OpAccessChain %_ptr_StorageBuffer_float %31 %uint_0
-               OpCooperativeMatrixStoreKHR %33 %30 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %29
+         %30 = OpLabel
+         %31 = OpFunctionCall %9 %subgroupMatrixMultiply_c26fb9
+         %32 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
+         %34 = OpAccessChain %_ptr_StorageBuffer_float %32 %uint_0
+               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/da556f.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/da556f.wgsl.expected.spvasm
index 63169e0..10ff356 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/da556f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/da556f.wgsl.expected.spvasm
@@ -35,11 +35,11 @@
          %12 = OpTypeFunction %8
      %uint_0 = OpConstant %uint 0
          %15 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+         %14 = OpConstantComposite %15 %uint_0
      %uint_1 = OpConstant %uint 1
          %18 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %17 = OpConstantNull %18
-         %20 = OpConstantNull %8
+         %17 = OpConstantComposite %18 %uint_0
+         %20 = OpConstantComposite %8 %uint_0
 %_ptr_Function_8 = OpTypePointer Function %8
        %void = OpTypeVoid
          %27 = OpTypeFunction %void
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/db4ee8.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/db4ee8.wgsl.expected.spvasm
index 12fcc0e..7775710 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/db4ee8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/db4ee8.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,30 +39,31 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+         %15 = OpConstantComposite %16 %uint_0
      %uint_1 = OpConstant %uint 1
          %19 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %18 = OpConstantNull %19
-         %21 = OpConstantNull %9
+         %18 = OpConstantComposite %19 %uint_0
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %21 = OpConstantComposite %9 %half_0x0p_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %28 = OpTypeFunction %void
+         %29 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_half_uint_1024 = OpTypePointer StorageBuffer %_arr_half_uint_1024
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_db4ee8 = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %22 = OpCooperativeMatrixMulAddKHR %9 %15 %18 %21 NoneKHR
-               OpStore %res %22
-         %25 = OpLoad %9 %res None
-               OpReturnValue %25
+         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %18 %21 NoneKHR
+               OpStore %res %23
+         %26 = OpLoad %9 %res None
+               OpReturnValue %26
                OpFunctionEnd
-%compute_main = OpFunction %void None %28
-         %29 = OpLabel
-         %30 = OpFunctionCall %9 %subgroupMatrixMultiply_db4ee8
-         %31 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
-         %33 = OpAccessChain %_ptr_StorageBuffer_half %31 %uint_0
-               OpCooperativeMatrixStoreKHR %33 %30 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %29
+         %30 = OpLabel
+         %31 = OpFunctionCall %9 %subgroupMatrixMultiply_db4ee8
+         %32 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
+         %34 = OpAccessChain %_ptr_StorageBuffer_half %32 %uint_0
+               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f51206.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f51206.wgsl.expected.spvasm
index af0d1fb..911ff9a 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f51206.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/f51206.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -36,30 +36,31 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+         %15 = OpConstantComposite %16 %uint_0
      %uint_1 = OpConstant %uint 1
          %19 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %18 = OpConstantNull %19
-         %21 = OpConstantNull %9
+         %18 = OpConstantComposite %19 %uint_0
+      %int_0 = OpConstant %int 0
+         %21 = OpConstantComposite %9 %int_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %28 = OpTypeFunction %void
+         %29 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_f51206 = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %22 = OpCooperativeMatrixMulAddKHR %9 %15 %18 %21 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
-               OpStore %res %22
-         %25 = OpLoad %9 %res None
-               OpReturnValue %25
+         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %18 %21 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
+               OpStore %res %23
+         %26 = OpLoad %9 %res None
+               OpReturnValue %26
                OpFunctionEnd
-%compute_main = OpFunction %void None %28
-         %29 = OpLabel
-         %30 = OpFunctionCall %9 %subgroupMatrixMultiply_f51206
-         %31 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
-         %33 = OpAccessChain %_ptr_StorageBuffer_int %31 %uint_0
-               OpCooperativeMatrixStoreKHR %33 %30 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %29
+         %30 = OpLabel
+         %31 = OpFunctionCall %9 %subgroupMatrixMultiply_f51206
+         %32 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+         %34 = OpAccessChain %_ptr_StorageBuffer_int %32 %uint_0
+               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/fa5318.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/fa5318.wgsl.expected.spvasm
index ecd9abe..717ddd4 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiply/fa5318.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiply/fa5318.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 38
+; Bound: 40
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -37,30 +37,32 @@
       %float = OpTypeFloat 32
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+    %float_0 = OpConstant %float 0
+         %15 = OpConstantComposite %16 %float_0
      %uint_1 = OpConstant %uint 1
-         %20 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %19 = OpConstantNull %20
-         %22 = OpConstantNull %9
+         %21 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+         %20 = OpConstantComposite %21 %float_0
+      %int_0 = OpConstant %int 0
+         %23 = OpConstantComposite %9 %int_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %29 = OpTypeFunction %void
+         %31 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_fa5318 = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %19 %22 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
-               OpStore %res %23
-         %26 = OpLoad %9 %res None
-               OpReturnValue %26
+         %25 = OpCooperativeMatrixMulAddKHR %9 %15 %20 %23 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
+               OpStore %res %25
+         %28 = OpLoad %9 %res None
+               OpReturnValue %28
                OpFunctionEnd
-%compute_main = OpFunction %void None %29
-         %30 = OpLabel
-         %31 = OpFunctionCall %9 %subgroupMatrixMultiply_fa5318
-         %32 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
-         %34 = OpAccessChain %_ptr_StorageBuffer_int %32 %uint_0
-               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %31
+         %32 = OpLabel
+         %33 = OpFunctionCall %9 %subgroupMatrixMultiply_fa5318
+         %34 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+         %36 = OpAccessChain %_ptr_StorageBuffer_int %34 %uint_0
+               OpCooperativeMatrixStoreKHR %36 %33 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/071472.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/071472.wgsl.expected.spvasm
index ab88915..b85ced3 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/071472.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/071472.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 38
+; Bound: 40
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -40,30 +40,32 @@
        %half = OpTypeFloat 16
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %15 = OpConstantComposite %16 %half_0x0p_0
      %uint_1 = OpConstant %uint 1
-         %20 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %19 = OpConstantNull %20
-         %22 = OpConstantNull %9
+         %21 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+         %20 = OpConstantComposite %21 %half_0x0p_0
+    %float_0 = OpConstant %float 0
+         %23 = OpConstantComposite %9 %float_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %29 = OpTypeFunction %void
+         %31 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_float_uint_1024 = OpTypePointer StorageBuffer %_arr_float_uint_1024
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_071472 = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %19 %22 NoneKHR
-               OpStore %res %23
-         %26 = OpLoad %9 %res None
-               OpReturnValue %26
+         %25 = OpCooperativeMatrixMulAddKHR %9 %15 %20 %23 NoneKHR
+               OpStore %res %25
+         %28 = OpLoad %9 %res None
+               OpReturnValue %28
                OpFunctionEnd
-%compute_main = OpFunction %void None %29
-         %30 = OpLabel
-         %31 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_071472
-         %32 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
-         %34 = OpAccessChain %_ptr_StorageBuffer_float %32 %uint_0
-               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %31
+         %32 = OpLabel
+         %33 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_071472
+         %34 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
+         %36 = OpAccessChain %_ptr_StorageBuffer_float %34 %uint_0
+               OpCooperativeMatrixStoreKHR %36 %33 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/075302.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/075302.wgsl.expected.spvasm
index a8ea89c..5a6314d 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/075302.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/075302.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,30 +39,31 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+         %15 = OpConstantComposite %16 %uint_0
      %uint_1 = OpConstant %uint 1
          %19 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %18 = OpConstantNull %19
-         %21 = OpConstantNull %9
+         %18 = OpConstantComposite %19 %uint_0
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %21 = OpConstantComposite %9 %half_0x0p_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %28 = OpTypeFunction %void
+         %29 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_half_uint_1024 = OpTypePointer StorageBuffer %_arr_half_uint_1024
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_075302 = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %22 = OpCooperativeMatrixMulAddKHR %9 %15 %18 %21 NoneKHR
-               OpStore %res %22
-         %25 = OpLoad %9 %res None
-               OpReturnValue %25
+         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %18 %21 NoneKHR
+               OpStore %res %23
+         %26 = OpLoad %9 %res None
+               OpReturnValue %26
                OpFunctionEnd
-%compute_main = OpFunction %void None %28
-         %29 = OpLabel
-         %30 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_075302
-         %31 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
-         %33 = OpAccessChain %_ptr_StorageBuffer_half %31 %uint_0
-               OpCooperativeMatrixStoreKHR %33 %30 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %29
+         %30 = OpLabel
+         %31 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_075302
+         %32 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
+         %34 = OpAccessChain %_ptr_StorageBuffer_half %32 %uint_0
+               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/12354d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/12354d.wgsl.expected.spvasm
index 04fbe22..3509811 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/12354d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/12354d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,30 +39,31 @@
        %half = OpTypeFloat 16
      %uint_0 = OpConstant %uint 0
          %15 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %14 = OpConstantComposite %15 %half_0x0p_0
      %uint_1 = OpConstant %uint 1
-         %19 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %18 = OpConstantNull %19
-         %21 = OpConstantNull %8
+         %20 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+         %19 = OpConstantComposite %20 %half_0x0p_0
+         %22 = OpConstantComposite %8 %uint_0
 %_ptr_Function_8 = OpTypePointer Function %8
        %void = OpTypeVoid
-         %28 = OpTypeFunction %void
+         %29 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_12354d = OpFunction %8 None %12
          %13 = OpLabel
         %res = OpVariable %_ptr_Function_8 Function
-         %22 = OpCooperativeMatrixMulAddKHR %8 %14 %18 %21 NoneKHR
-               OpStore %res %22
-         %25 = OpLoad %8 %res None
-               OpReturnValue %25
+         %23 = OpCooperativeMatrixMulAddKHR %8 %14 %19 %22 NoneKHR
+               OpStore %res %23
+         %26 = OpLoad %8 %res None
+               OpReturnValue %26
                OpFunctionEnd
-%compute_main = OpFunction %void None %28
-         %29 = OpLabel
-         %30 = OpFunctionCall %8 %subgroupMatrixMultiplyAccumulate_12354d
-         %31 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
-         %33 = OpAccessChain %_ptr_StorageBuffer_uint %31 %uint_0
-               OpCooperativeMatrixStoreKHR %33 %30 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %29
+         %30 = OpLabel
+         %31 = OpFunctionCall %8 %subgroupMatrixMultiplyAccumulate_12354d
+         %32 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+         %34 = OpAccessChain %_ptr_StorageBuffer_uint %32 %uint_0
+               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/163ab5.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/163ab5.wgsl.expected.spvasm
index 39acd91..f30f784 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/163ab5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/163ab5.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 38
+; Bound: 40
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -37,30 +37,32 @@
         %int = OpTypeInt 32 1
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+      %int_0 = OpConstant %int 0
+         %15 = OpConstantComposite %16 %int_0
      %uint_1 = OpConstant %uint 1
-         %20 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %19 = OpConstantNull %20
-         %22 = OpConstantNull %9
+         %21 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+         %20 = OpConstantComposite %21 %int_0
+    %float_0 = OpConstant %float 0
+         %23 = OpConstantComposite %9 %float_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %29 = OpTypeFunction %void
+         %31 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_float_uint_1024 = OpTypePointer StorageBuffer %_arr_float_uint_1024
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_163ab5 = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %19 %22 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
-               OpStore %res %23
-         %26 = OpLoad %9 %res None
-               OpReturnValue %26
+         %25 = OpCooperativeMatrixMulAddKHR %9 %15 %20 %23 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
+               OpStore %res %25
+         %28 = OpLoad %9 %res None
+               OpReturnValue %28
                OpFunctionEnd
-%compute_main = OpFunction %void None %29
-         %30 = OpLabel
-         %31 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_163ab5
-         %32 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
-         %34 = OpAccessChain %_ptr_StorageBuffer_float %32 %uint_0
-               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %31
+         %32 = OpLabel
+         %33 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_163ab5
+         %34 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
+         %36 = OpAccessChain %_ptr_StorageBuffer_float %34 %uint_0
+               OpCooperativeMatrixStoreKHR %36 %33 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/3ea7db.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/3ea7db.wgsl.expected.spvasm
index ee35402..75d568e 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/3ea7db.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/3ea7db.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 38
+; Bound: 40
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -40,30 +40,32 @@
        %half = OpTypeFloat 16
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %15 = OpConstantComposite %16 %half_0x0p_0
      %uint_1 = OpConstant %uint 1
-         %20 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %19 = OpConstantNull %20
-         %22 = OpConstantNull %9
+         %21 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+         %20 = OpConstantComposite %21 %half_0x0p_0
+      %int_0 = OpConstant %int 0
+         %23 = OpConstantComposite %9 %int_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %29 = OpTypeFunction %void
+         %31 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_3ea7db = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %19 %22 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
-               OpStore %res %23
-         %26 = OpLoad %9 %res None
-               OpReturnValue %26
+         %25 = OpCooperativeMatrixMulAddKHR %9 %15 %20 %23 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
+               OpStore %res %25
+         %28 = OpLoad %9 %res None
+               OpReturnValue %28
                OpFunctionEnd
-%compute_main = OpFunction %void None %29
-         %30 = OpLabel
-         %31 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_3ea7db
-         %32 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
-         %34 = OpAccessChain %_ptr_StorageBuffer_int %32 %uint_0
-               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %31
+         %32 = OpLabel
+         %33 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_3ea7db
+         %34 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+         %36 = OpAccessChain %_ptr_StorageBuffer_int %34 %uint_0
+               OpCooperativeMatrixStoreKHR %36 %33 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/676ca8.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/676ca8.wgsl.expected.spvasm
index 339d561..4bb3a33 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/676ca8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/676ca8.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -36,30 +36,31 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+         %15 = OpConstantComposite %16 %uint_0
      %uint_1 = OpConstant %uint 1
          %19 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %18 = OpConstantNull %19
-         %21 = OpConstantNull %9
+         %18 = OpConstantComposite %19 %uint_0
+      %int_0 = OpConstant %int 0
+         %21 = OpConstantComposite %9 %int_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %28 = OpTypeFunction %void
+         %29 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_676ca8 = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %22 = OpCooperativeMatrixMulAddKHR %9 %15 %18 %21 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
-               OpStore %res %22
-         %25 = OpLoad %9 %res None
-               OpReturnValue %25
+         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %18 %21 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
+               OpStore %res %23
+         %26 = OpLoad %9 %res None
+               OpReturnValue %26
                OpFunctionEnd
-%compute_main = OpFunction %void None %28
-         %29 = OpLabel
-         %30 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_676ca8
-         %31 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
-         %33 = OpAccessChain %_ptr_StorageBuffer_int %31 %uint_0
-               OpCooperativeMatrixStoreKHR %33 %30 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %29
+         %30 = OpLabel
+         %31 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_676ca8
+         %32 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+         %34 = OpAccessChain %_ptr_StorageBuffer_int %32 %uint_0
+               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/709578.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/709578.wgsl.expected.spvasm
index 0b85e66..0d03f44 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/709578.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/709578.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -36,30 +36,31 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+      %int_0 = OpConstant %int 0
+         %15 = OpConstantComposite %16 %int_0
      %uint_1 = OpConstant %uint 1
-         %19 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %18 = OpConstantNull %19
-         %21 = OpConstantNull %9
+         %20 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+         %19 = OpConstantComposite %20 %int_0
+         %22 = OpConstantComposite %9 %int_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %28 = OpTypeFunction %void
+         %29 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_709578 = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %22 = OpCooperativeMatrixMulAddKHR %9 %15 %18 %21 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR|MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
-               OpStore %res %22
-         %25 = OpLoad %9 %res None
-               OpReturnValue %25
+         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %19 %22 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR|MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
+               OpStore %res %23
+         %26 = OpLoad %9 %res None
+               OpReturnValue %26
                OpFunctionEnd
-%compute_main = OpFunction %void None %28
-         %29 = OpLabel
-         %30 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_709578
-         %31 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
-         %33 = OpAccessChain %_ptr_StorageBuffer_int %31 %uint_0
-               OpCooperativeMatrixStoreKHR %33 %30 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %29
+         %30 = OpLabel
+         %31 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_709578
+         %32 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+         %34 = OpAccessChain %_ptr_StorageBuffer_int %32 %uint_0
+               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7ceae2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7ceae2.wgsl.expected.spvasm
index 1e699e1..6064bfb 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7ceae2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/7ceae2.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 38
+; Bound: 40
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -40,30 +40,32 @@
         %int = OpTypeInt 32 1
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+      %int_0 = OpConstant %int 0
+         %15 = OpConstantComposite %16 %int_0
      %uint_1 = OpConstant %uint 1
-         %20 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %19 = OpConstantNull %20
-         %22 = OpConstantNull %9
+         %21 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+         %20 = OpConstantComposite %21 %int_0
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %23 = OpConstantComposite %9 %half_0x0p_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %29 = OpTypeFunction %void
+         %31 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_half_uint_1024 = OpTypePointer StorageBuffer %_arr_half_uint_1024
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_7ceae2 = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %19 %22 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
-               OpStore %res %23
-         %26 = OpLoad %9 %res None
-               OpReturnValue %26
+         %25 = OpCooperativeMatrixMulAddKHR %9 %15 %20 %23 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
+               OpStore %res %25
+         %28 = OpLoad %9 %res None
+               OpReturnValue %28
                OpFunctionEnd
-%compute_main = OpFunction %void None %29
-         %30 = OpLabel
-         %31 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_7ceae2
-         %32 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
-         %34 = OpAccessChain %_ptr_StorageBuffer_half %32 %uint_0
-               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %31
+         %32 = OpLabel
+         %33 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_7ceae2
+         %34 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
+         %36 = OpAccessChain %_ptr_StorageBuffer_half %34 %uint_0
+               OpCooperativeMatrixStoreKHR %36 %33 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/877989.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/877989.wgsl.expected.spvasm
index cd4ff4a..3ab2d7f 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/877989.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/877989.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -36,30 +36,31 @@
         %int = OpTypeInt 32 1
      %uint_0 = OpConstant %uint 0
          %15 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+      %int_0 = OpConstant %int 0
+         %14 = OpConstantComposite %15 %int_0
      %uint_1 = OpConstant %uint 1
-         %19 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %18 = OpConstantNull %19
-         %21 = OpConstantNull %8
+         %20 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+         %19 = OpConstantComposite %20 %int_0
+         %22 = OpConstantComposite %8 %uint_0
 %_ptr_Function_8 = OpTypePointer Function %8
        %void = OpTypeVoid
-         %28 = OpTypeFunction %void
+         %29 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_877989 = OpFunction %8 None %12
          %13 = OpLabel
         %res = OpVariable %_ptr_Function_8 Function
-         %22 = OpCooperativeMatrixMulAddKHR %8 %14 %18 %21 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
-               OpStore %res %22
-         %25 = OpLoad %8 %res None
-               OpReturnValue %25
+         %23 = OpCooperativeMatrixMulAddKHR %8 %14 %19 %22 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
+               OpStore %res %23
+         %26 = OpLoad %8 %res None
+               OpReturnValue %26
                OpFunctionEnd
-%compute_main = OpFunction %void None %28
-         %29 = OpLabel
-         %30 = OpFunctionCall %8 %subgroupMatrixMultiplyAccumulate_877989
-         %31 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
-         %33 = OpAccessChain %_ptr_StorageBuffer_uint %31 %uint_0
-               OpCooperativeMatrixStoreKHR %33 %30 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %29
+         %30 = OpLabel
+         %31 = OpFunctionCall %8 %subgroupMatrixMultiplyAccumulate_877989
+         %32 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+         %34 = OpAccessChain %_ptr_StorageBuffer_uint %32 %uint_0
+               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8b907c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8b907c.wgsl.expected.spvasm
index f9f8c8c..a33c6ca 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8b907c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/8b907c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,30 +39,31 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %15 = OpConstantComposite %16 %half_0x0p_0
      %uint_1 = OpConstant %uint 1
-         %19 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %18 = OpConstantNull %19
-         %21 = OpConstantNull %9
+         %20 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+         %19 = OpConstantComposite %20 %half_0x0p_0
+         %22 = OpConstantComposite %9 %half_0x0p_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %28 = OpTypeFunction %void
+         %29 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_half_uint_1024 = OpTypePointer StorageBuffer %_arr_half_uint_1024
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_8b907c = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %22 = OpCooperativeMatrixMulAddKHR %9 %15 %18 %21 NoneKHR
-               OpStore %res %22
-         %25 = OpLoad %9 %res None
-               OpReturnValue %25
+         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %19 %22 NoneKHR
+               OpStore %res %23
+         %26 = OpLoad %9 %res None
+               OpReturnValue %26
                OpFunctionEnd
-%compute_main = OpFunction %void None %28
-         %29 = OpLabel
-         %30 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_8b907c
-         %31 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
-         %33 = OpAccessChain %_ptr_StorageBuffer_half %31 %uint_0
-               OpCooperativeMatrixStoreKHR %33 %30 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %29
+         %30 = OpLabel
+         %31 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_8b907c
+         %32 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
+         %34 = OpAccessChain %_ptr_StorageBuffer_half %32 %uint_0
+               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/9ad4f5.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/9ad4f5.wgsl.expected.spvasm
index c335c4f..f07e00f 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/9ad4f5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/9ad4f5.wgsl.expected.spvasm
@@ -35,11 +35,11 @@
          %12 = OpTypeFunction %8
      %uint_0 = OpConstant %uint 0
          %15 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+         %14 = OpConstantComposite %15 %uint_0
      %uint_1 = OpConstant %uint 1
          %18 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %17 = OpConstantNull %18
-         %20 = OpConstantNull %8
+         %17 = OpConstantComposite %18 %uint_0
+         %20 = OpConstantComposite %8 %uint_0
 %_ptr_Function_8 = OpTypePointer Function %8
        %void = OpTypeVoid
          %27 = OpTypeFunction %void
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c4062a.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c4062a.wgsl.expected.spvasm
index e1f2588..6d694f4 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c4062a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/c4062a.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 38
+; Bound: 40
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -40,30 +40,32 @@
       %float = OpTypeFloat 32
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+    %float_0 = OpConstant %float 0
+         %15 = OpConstantComposite %16 %float_0
      %uint_1 = OpConstant %uint 1
-         %20 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %19 = OpConstantNull %20
-         %22 = OpConstantNull %9
+         %21 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+         %20 = OpConstantComposite %21 %float_0
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %23 = OpConstantComposite %9 %half_0x0p_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %29 = OpTypeFunction %void
+         %31 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_half_uint_1024 = OpTypePointer StorageBuffer %_arr_half_uint_1024
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_c4062a = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %19 %22 NoneKHR
-               OpStore %res %23
-         %26 = OpLoad %9 %res None
-               OpReturnValue %26
+         %25 = OpCooperativeMatrixMulAddKHR %9 %15 %20 %23 NoneKHR
+               OpStore %res %25
+         %28 = OpLoad %9 %res None
+               OpReturnValue %28
                OpFunctionEnd
-%compute_main = OpFunction %void None %29
-         %30 = OpLabel
-         %31 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_c4062a
-         %32 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
-         %34 = OpAccessChain %_ptr_StorageBuffer_half %32 %uint_0
-               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %31
+         %32 = OpLabel
+         %33 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_c4062a
+         %34 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
+         %36 = OpAccessChain %_ptr_StorageBuffer_half %34 %uint_0
+               OpCooperativeMatrixStoreKHR %36 %33 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/db91bf.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/db91bf.wgsl.expected.spvasm
index a2a0579..73f83e2 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/db91bf.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/db91bf.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -36,30 +36,31 @@
       %float = OpTypeFloat 32
      %uint_0 = OpConstant %uint 0
          %15 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+    %float_0 = OpConstant %float 0
+         %14 = OpConstantComposite %15 %float_0
      %uint_1 = OpConstant %uint 1
-         %19 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %18 = OpConstantNull %19
-         %21 = OpConstantNull %8
+         %20 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+         %19 = OpConstantComposite %20 %float_0
+         %22 = OpConstantComposite %8 %uint_0
 %_ptr_Function_8 = OpTypePointer Function %8
        %void = OpTypeVoid
-         %28 = OpTypeFunction %void
+         %29 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_db91bf = OpFunction %8 None %12
          %13 = OpLabel
         %res = OpVariable %_ptr_Function_8 Function
-         %22 = OpCooperativeMatrixMulAddKHR %8 %14 %18 %21 NoneKHR
-               OpStore %res %22
-         %25 = OpLoad %8 %res None
-               OpReturnValue %25
+         %23 = OpCooperativeMatrixMulAddKHR %8 %14 %19 %22 NoneKHR
+               OpStore %res %23
+         %26 = OpLoad %8 %res None
+               OpReturnValue %26
                OpFunctionEnd
-%compute_main = OpFunction %void None %28
-         %29 = OpLabel
-         %30 = OpFunctionCall %8 %subgroupMatrixMultiplyAccumulate_db91bf
-         %31 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
-         %33 = OpAccessChain %_ptr_StorageBuffer_uint %31 %uint_0
-               OpCooperativeMatrixStoreKHR %33 %30 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %29
+         %30 = OpLabel
+         %31 = OpFunctionCall %8 %subgroupMatrixMultiplyAccumulate_db91bf
+         %32 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+         %34 = OpAccessChain %_ptr_StorageBuffer_uint %32 %uint_0
+               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e27d24.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e27d24.wgsl.expected.spvasm
index 56a5a56..3d144e3 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e27d24.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e27d24.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 38
+; Bound: 40
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -37,30 +37,32 @@
       %float = OpTypeFloat 32
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+    %float_0 = OpConstant %float 0
+         %15 = OpConstantComposite %16 %float_0
      %uint_1 = OpConstant %uint 1
-         %20 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %19 = OpConstantNull %20
-         %22 = OpConstantNull %9
+         %21 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+         %20 = OpConstantComposite %21 %float_0
+      %int_0 = OpConstant %int 0
+         %23 = OpConstantComposite %9 %int_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %29 = OpTypeFunction %void
+         %31 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_e27d24 = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %19 %22 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
-               OpStore %res %23
-         %26 = OpLoad %9 %res None
-               OpReturnValue %26
+         %25 = OpCooperativeMatrixMulAddKHR %9 %15 %20 %23 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
+               OpStore %res %25
+         %28 = OpLoad %9 %res None
+               OpReturnValue %28
                OpFunctionEnd
-%compute_main = OpFunction %void None %29
-         %30 = OpLabel
-         %31 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_e27d24
-         %32 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
-         %34 = OpAccessChain %_ptr_StorageBuffer_int %32 %uint_0
-               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %31
+         %32 = OpLabel
+         %33 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_e27d24
+         %34 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+         %36 = OpAccessChain %_ptr_StorageBuffer_int %34 %uint_0
+               OpCooperativeMatrixStoreKHR %36 %33 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e49afd.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e49afd.wgsl.expected.spvasm
index 32eca55..d874e8f 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e49afd.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e49afd.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -36,30 +36,31 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+         %15 = OpConstantComposite %16 %uint_0
      %uint_1 = OpConstant %uint 1
          %19 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %18 = OpConstantNull %19
-         %21 = OpConstantNull %9
+         %18 = OpConstantComposite %19 %uint_0
+    %float_0 = OpConstant %float 0
+         %21 = OpConstantComposite %9 %float_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %28 = OpTypeFunction %void
+         %29 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_float_uint_1024 = OpTypePointer StorageBuffer %_arr_float_uint_1024
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_e49afd = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %22 = OpCooperativeMatrixMulAddKHR %9 %15 %18 %21 NoneKHR
-               OpStore %res %22
-         %25 = OpLoad %9 %res None
-               OpReturnValue %25
+         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %18 %21 NoneKHR
+               OpStore %res %23
+         %26 = OpLoad %9 %res None
+               OpReturnValue %26
                OpFunctionEnd
-%compute_main = OpFunction %void None %28
-         %29 = OpLabel
-         %30 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_e49afd
-         %31 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
-         %33 = OpAccessChain %_ptr_StorageBuffer_float %31 %uint_0
-               OpCooperativeMatrixStoreKHR %33 %30 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %29
+         %30 = OpLabel
+         %31 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_e49afd
+         %32 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
+         %34 = OpAccessChain %_ptr_StorageBuffer_float %32 %uint_0
+               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e7fb3c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e7fb3c.wgsl.expected.spvasm
index f8b331d..a265424 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e7fb3c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixMultiplyAccumulate/e7fb3c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -36,30 +36,31 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+    %float_0 = OpConstant %float 0
+         %15 = OpConstantComposite %16 %float_0
      %uint_1 = OpConstant %uint 1
-         %19 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %18 = OpConstantNull %19
-         %21 = OpConstantNull %9
+         %20 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+         %19 = OpConstantComposite %20 %float_0
+         %22 = OpConstantComposite %9 %float_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %28 = OpTypeFunction %void
+         %29 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_float_uint_1024 = OpTypePointer StorageBuffer %_arr_float_uint_1024
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_e7fb3c = OpFunction %9 None %13
          %14 = OpLabel
         %res = OpVariable %_ptr_Function_9 Function
-         %22 = OpCooperativeMatrixMulAddKHR %9 %15 %18 %21 NoneKHR
-               OpStore %res %22
-         %25 = OpLoad %9 %res None
-               OpReturnValue %25
+         %23 = OpCooperativeMatrixMulAddKHR %9 %15 %19 %22 NoneKHR
+               OpStore %res %23
+         %26 = OpLoad %9 %res None
+               OpReturnValue %26
                OpFunctionEnd
-%compute_main = OpFunction %void None %28
-         %29 = OpLabel
-         %30 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_e7fb3c
-         %31 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
-         %33 = OpAccessChain %_ptr_StorageBuffer_float %31 %uint_0
-               OpCooperativeMatrixStoreKHR %33 %30 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %29
+         %30 = OpLabel
+         %31 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_e7fb3c
+         %32 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
+         %34 = OpAccessChain %_ptr_StorageBuffer_float %32 %uint_0
+               OpCooperativeMatrixStoreKHR %34 %31 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/0522d1.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/0522d1.wgsl.expected.spvasm
index 04f0974..3a28fd0 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/0522d1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/0522d1.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 27
+; Bound: 28
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -42,18 +42,19 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %17 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %16 = OpConstantNull %17
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %16 = OpConstantComposite %17 %half_0x0p_0
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
      %uint_1 = OpConstant %uint 1
 %subgroupMatrixStore_0522d1 = OpFunction %void None %11
          %12 = OpLabel
          %13 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_64 %1 %uint_0 %uint_0
-         %20 = OpAccessChain %_ptr_StorageBuffer_half %13 %uint_1
-               OpCooperativeMatrixStoreKHR %20 %16 %uint_1 %uint_1 NonPrivatePointer
+         %21 = OpAccessChain %_ptr_StorageBuffer_half %13 %uint_1
+               OpCooperativeMatrixStoreKHR %21 %16 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %11
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %subgroupMatrixStore_0522d1
+         %26 = OpLabel
+         %27 = OpFunctionCall %void %subgroupMatrixStore_0522d1
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/127fb7.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/127fb7.wgsl.expected.spvasm
index d1c4213..be6b1cc 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/127fb7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/127fb7.wgsl.expected.spvasm
@@ -36,43 +36,43 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %14 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_2
-         %13 = OpConstantNull %14
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %13 = OpConstantComposite %14 %half_0x0p_0
 %_ptr_Workgroup_half = OpTypePointer Workgroup %half
      %uint_1 = OpConstant %uint 1
-         %24 = OpTypeFunction %void %uint
+         %25 = OpTypeFunction %void %uint
        %bool = OpTypeBool
-%half_0x0p_0 = OpConstant %half 0x0p+0
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_127fb7 = OpFunction %void None %11
          %12 = OpLabel
-         %18 = OpAccessChain %_ptr_Workgroup_half %arg_0 %uint_1
-               OpCooperativeMatrixStoreKHR %18 %13 %uint_1 %uint_1 NonPrivatePointer
+         %19 = OpAccessChain %_ptr_Workgroup_half %arg_0 %uint_1
+               OpCooperativeMatrixStoreKHR %19 %13 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %24
+%compute_main_inner = OpFunction %void None %25
 %tint_local_index = OpFunctionParameter %uint
-         %25 = OpLabel
-               OpBranch %26
          %26 = OpLabel
-               OpBranch %29
-         %29 = OpLabel
-         %31 = OpPhi %uint %tint_local_index %26 %32 %28
-               OpLoopMerge %30 %28 None
                OpBranch %27
          %27 = OpLabel
-         %33 = OpUGreaterThanEqual %bool %31 %uint_64
-               OpSelectionMerge %35 None
-               OpBranchConditional %33 %36 %35
-         %36 = OpLabel
                OpBranch %30
-         %35 = OpLabel
-         %37 = OpAccessChain %_ptr_Workgroup_half %arg_0 %31
-               OpStore %37 %half_0x0p_0 NonPrivatePointer
+         %30 = OpLabel
+         %32 = OpPhi %uint %tint_local_index %27 %33 %29
+               OpLoopMerge %31 %29 None
                OpBranch %28
          %28 = OpLabel
-         %32 = OpIAdd %uint %31 %uint_1
+         %34 = OpUGreaterThanEqual %bool %32 %uint_64
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %36
+         %37 = OpLabel
+               OpBranch %31
+         %36 = OpLabel
+         %38 = OpAccessChain %_ptr_Workgroup_half %arg_0 %32
+               OpStore %38 %half_0x0p_0 NonPrivatePointer
                OpBranch %29
-         %30 = OpLabel
+         %29 = OpLabel
+         %33 = OpIAdd %uint %32 %uint_1
+               OpBranch %30
+         %31 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %41 = OpFunctionCall %void %subgroupMatrixStore_127fb7
                OpReturn
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/1466ba.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/1466ba.wgsl.expected.spvasm
index 0ee51df..7f6654f 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/1466ba.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/1466ba.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 28
+; Bound: 29
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -43,18 +43,19 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %17 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_2
-         %16 = OpConstantNull %17
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %16 = OpConstantComposite %17 %half_0x0p_0
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
      %uint_1 = OpConstant %uint 1
 %subgroupMatrixStore_1466ba = OpFunction %void None %11
          %12 = OpLabel
          %13 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_64 %1 %uint_0 %uint_0
-         %21 = OpAccessChain %_ptr_StorageBuffer_half %13 %uint_1
-               OpCooperativeMatrixStoreKHR %21 %16 %uint_1 %uint_1 NonPrivatePointer
+         %22 = OpAccessChain %_ptr_StorageBuffer_half %13 %uint_1
+               OpCooperativeMatrixStoreKHR %22 %16 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %11
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %subgroupMatrixStore_1466ba
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %subgroupMatrixStore_1466ba
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/184580.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/184580.wgsl.expected.spvasm
index f220b1e..0cb7e58 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/184580.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/184580.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 27
+; Bound: 28
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -40,17 +40,18 @@
      %uint_8 = OpConstant %uint 8
      %uint_1 = OpConstant %uint 1
          %17 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %16 = OpConstantNull %17
+      %int_0 = OpConstant %int 0
+         %16 = OpConstantComposite %17 %int_0
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
 %subgroupMatrixStore_184580 = OpFunction %void None %11
          %12 = OpLabel
          %13 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_64 %1 %uint_0 %uint_0
-         %21 = OpAccessChain %_ptr_StorageBuffer_int %13 %uint_1
-               OpCooperativeMatrixStoreKHR %21 %16 %uint_1 %uint_1 NonPrivatePointer
+         %22 = OpAccessChain %_ptr_StorageBuffer_int %13 %uint_1
+               OpCooperativeMatrixStoreKHR %22 %16 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %11
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %subgroupMatrixStore_184580
+         %26 = OpLabel
+         %27 = OpFunctionCall %void %subgroupMatrixStore_184580
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/197435.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/197435.wgsl.expected.spvasm
index 1156b8e..2789f77 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/197435.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/197435.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 27
+; Bound: 28
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,18 +39,19 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %17 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %16 = OpConstantNull %17
+    %float_0 = OpConstant %float 0
+         %16 = OpConstantComposite %17 %float_0
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
      %uint_1 = OpConstant %uint 1
 %subgroupMatrixStore_197435 = OpFunction %void None %11
          %12 = OpLabel
          %13 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_64 %1 %uint_0 %uint_0
-         %20 = OpAccessChain %_ptr_StorageBuffer_float %13 %uint_1
-               OpCooperativeMatrixStoreKHR %20 %16 %uint_1 %uint_1 NonPrivatePointer
+         %21 = OpAccessChain %_ptr_StorageBuffer_float %13 %uint_1
+               OpCooperativeMatrixStoreKHR %21 %16 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %11
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %subgroupMatrixStore_197435
+         %26 = OpLabel
+         %27 = OpFunctionCall %void %subgroupMatrixStore_197435
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/2d78d3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/2d78d3.wgsl.expected.spvasm
index 6aaae0d..ad2e082 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/2d78d3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/2d78d3.wgsl.expected.spvasm
@@ -35,7 +35,7 @@
      %uint_8 = OpConstant %uint 8
      %uint_1 = OpConstant %uint 1
          %14 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %13 = OpConstantNull %14
+         %13 = OpConstantComposite %14 %uint_0
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
 %subgroupMatrixStore_2d78d3 = OpFunction %void None %8
           %9 = OpLabel
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/2de0b1.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/2de0b1.wgsl.expected.spvasm
index 3db8929..f14d03a 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/2de0b1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/2de0b1.wgsl.expected.spvasm
@@ -32,43 +32,43 @@
      %uint_8 = OpConstant %uint 8
      %uint_1 = OpConstant %uint 1
          %13 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %12 = OpConstantNull %13
-%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
-         %22 = OpTypeFunction %void %uint
-       %bool = OpTypeBool
      %uint_0 = OpConstant %uint 0
+         %12 = OpConstantComposite %13 %uint_0
+%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
+         %23 = OpTypeFunction %void %uint
+       %bool = OpTypeBool
      %uint_2 = OpConstant %uint 2
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_2de0b1 = OpFunction %void None %10
          %11 = OpLabel
-         %17 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %uint_1
-               OpCooperativeMatrixStoreKHR %17 %12 %uint_1 %uint_1 NonPrivatePointer
+         %18 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %uint_1
+               OpCooperativeMatrixStoreKHR %18 %12 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %22
+%compute_main_inner = OpFunction %void None %23
 %tint_local_index = OpFunctionParameter %uint
-         %23 = OpLabel
-               OpBranch %24
          %24 = OpLabel
-               OpBranch %27
-         %27 = OpLabel
-         %29 = OpPhi %uint %tint_local_index %24 %30 %26
-               OpLoopMerge %28 %26 None
                OpBranch %25
          %25 = OpLabel
-         %31 = OpUGreaterThanEqual %bool %29 %uint_64
-               OpSelectionMerge %33 None
-               OpBranchConditional %31 %34 %33
-         %34 = OpLabel
                OpBranch %28
-         %33 = OpLabel
-         %35 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %29
-               OpStore %35 %uint_0 NonPrivatePointer
+         %28 = OpLabel
+         %30 = OpPhi %uint %tint_local_index %25 %31 %27
+               OpLoopMerge %29 %27 None
                OpBranch %26
          %26 = OpLabel
-         %30 = OpIAdd %uint %29 %uint_1
+         %32 = OpUGreaterThanEqual %bool %30 %uint_64
+               OpSelectionMerge %34 None
+               OpBranchConditional %32 %35 %34
+         %35 = OpLabel
+               OpBranch %29
+         %34 = OpLabel
+         %36 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %30
+               OpStore %36 %uint_0 NonPrivatePointer
                OpBranch %27
-         %28 = OpLabel
+         %27 = OpLabel
+         %31 = OpIAdd %uint %30 %uint_1
+               OpBranch %28
+         %29 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %40 = OpFunctionCall %void %subgroupMatrixStore_2de0b1
                OpReturn
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/3ea76e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/3ea76e.wgsl.expected.spvasm
index 8b095ad..a18cbe3 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/3ea76e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/3ea76e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 25
+; Bound: 26
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -35,18 +35,19 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %15 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+      %int_0 = OpConstant %int 0
+         %14 = OpConstantComposite %15 %int_0
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
      %uint_1 = OpConstant %uint 1
 %subgroupMatrixStore_3ea76e = OpFunction %void None %8
           %9 = OpLabel
          %10 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_rw %uint_0
-         %18 = OpAccessChain %_ptr_StorageBuffer_int %10 %uint_1
-               OpCooperativeMatrixStoreKHR %18 %14 %uint_1 %uint_1 NonPrivatePointer
+         %19 = OpAccessChain %_ptr_StorageBuffer_int %10 %uint_1
+               OpCooperativeMatrixStoreKHR %19 %14 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %8
-         %23 = OpLabel
-         %24 = OpFunctionCall %void %subgroupMatrixStore_3ea76e
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %subgroupMatrixStore_3ea76e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/3fcc0f.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/3fcc0f.wgsl.expected.spvasm
index f7ca4d7..b9b9aea 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/3fcc0f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/3fcc0f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 27
+; Bound: 28
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -40,17 +40,18 @@
      %uint_8 = OpConstant %uint 8
      %uint_1 = OpConstant %uint 1
          %17 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %16 = OpConstantNull %17
+    %float_0 = OpConstant %float 0
+         %16 = OpConstantComposite %17 %float_0
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
 %subgroupMatrixStore_3fcc0f = OpFunction %void None %11
          %12 = OpLabel
          %13 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_64 %1 %uint_0 %uint_0
-         %21 = OpAccessChain %_ptr_StorageBuffer_float %13 %uint_1
-               OpCooperativeMatrixStoreKHR %21 %16 %uint_1 %uint_1 NonPrivatePointer
+         %22 = OpAccessChain %_ptr_StorageBuffer_float %13 %uint_1
+               OpCooperativeMatrixStoreKHR %22 %16 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %11
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %subgroupMatrixStore_3fcc0f
+         %26 = OpLabel
+         %27 = OpFunctionCall %void %subgroupMatrixStore_3fcc0f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/476cdf.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/476cdf.wgsl.expected.spvasm
index b267ac1..856e51b 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/476cdf.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/476cdf.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 26
+; Bound: 27
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -36,18 +36,19 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %15 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_2
-         %14 = OpConstantNull %15
+      %int_0 = OpConstant %int 0
+         %14 = OpConstantComposite %15 %int_0
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
      %uint_1 = OpConstant %uint 1
 %subgroupMatrixStore_476cdf = OpFunction %void None %8
           %9 = OpLabel
          %10 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_rw %uint_0
-         %19 = OpAccessChain %_ptr_StorageBuffer_int %10 %uint_1
-               OpCooperativeMatrixStoreKHR %19 %14 %uint_1 %uint_1 NonPrivatePointer
+         %20 = OpAccessChain %_ptr_StorageBuffer_int %10 %uint_1
+               OpCooperativeMatrixStoreKHR %20 %14 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %8
-         %24 = OpLabel
-         %25 = OpFunctionCall %void %subgroupMatrixStore_476cdf
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %subgroupMatrixStore_476cdf
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/49b25b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/49b25b.wgsl.expected.spvasm
index 0f0e303..ffe1852 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/49b25b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/49b25b.wgsl.expected.spvasm
@@ -33,43 +33,43 @@
      %uint_8 = OpConstant %uint 8
      %uint_1 = OpConstant %uint 1
          %14 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %13 = OpConstantNull %14
-%_ptr_Workgroup_float = OpTypePointer Workgroup %float
-         %23 = OpTypeFunction %void %uint
-       %bool = OpTypeBool
     %float_0 = OpConstant %float 0
+         %13 = OpConstantComposite %14 %float_0
+%_ptr_Workgroup_float = OpTypePointer Workgroup %float
+         %24 = OpTypeFunction %void %uint
+       %bool = OpTypeBool
      %uint_2 = OpConstant %uint 2
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_49b25b = OpFunction %void None %11
          %12 = OpLabel
-         %18 = OpAccessChain %_ptr_Workgroup_float %arg_0 %uint_1
-               OpCooperativeMatrixStoreKHR %18 %13 %uint_1 %uint_1 NonPrivatePointer
+         %19 = OpAccessChain %_ptr_Workgroup_float %arg_0 %uint_1
+               OpCooperativeMatrixStoreKHR %19 %13 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %23
+%compute_main_inner = OpFunction %void None %24
 %tint_local_index = OpFunctionParameter %uint
-         %24 = OpLabel
-               OpBranch %25
          %25 = OpLabel
-               OpBranch %28
-         %28 = OpLabel
-         %30 = OpPhi %uint %tint_local_index %25 %31 %27
-               OpLoopMerge %29 %27 None
                OpBranch %26
          %26 = OpLabel
-         %32 = OpUGreaterThanEqual %bool %30 %uint_64
-               OpSelectionMerge %34 None
-               OpBranchConditional %32 %35 %34
-         %35 = OpLabel
                OpBranch %29
-         %34 = OpLabel
-         %36 = OpAccessChain %_ptr_Workgroup_float %arg_0 %30
-               OpStore %36 %float_0 NonPrivatePointer
+         %29 = OpLabel
+         %31 = OpPhi %uint %tint_local_index %26 %32 %28
+               OpLoopMerge %30 %28 None
                OpBranch %27
          %27 = OpLabel
-         %31 = OpIAdd %uint %30 %uint_1
+         %33 = OpUGreaterThanEqual %bool %31 %uint_64
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+               OpBranch %30
+         %35 = OpLabel
+         %37 = OpAccessChain %_ptr_Workgroup_float %arg_0 %31
+               OpStore %37 %float_0 NonPrivatePointer
                OpBranch %28
-         %29 = OpLabel
+         %28 = OpLabel
+         %32 = OpIAdd %uint %31 %uint_1
+               OpBranch %29
+         %30 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %41 = OpFunctionCall %void %subgroupMatrixStore_49b25b
                OpReturn
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/543411.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/543411.wgsl.expected.spvasm
index 00ce2b5..5353b94 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/543411.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/543411.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 25
+; Bound: 26
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -36,17 +36,18 @@
      %uint_8 = OpConstant %uint 8
      %uint_1 = OpConstant %uint 1
          %15 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %14 = OpConstantNull %15
+    %float_0 = OpConstant %float 0
+         %14 = OpConstantComposite %15 %float_0
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
 %subgroupMatrixStore_543411 = OpFunction %void None %8
           %9 = OpLabel
          %10 = OpAccessChain %_ptr_StorageBuffer__runtimearr_float %sb_rw %uint_0
-         %19 = OpAccessChain %_ptr_StorageBuffer_float %10 %uint_1
-               OpCooperativeMatrixStoreKHR %19 %14 %uint_1 %uint_1 NonPrivatePointer
+         %20 = OpAccessChain %_ptr_StorageBuffer_float %10 %uint_1
+               OpCooperativeMatrixStoreKHR %20 %14 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %8
-         %23 = OpLabel
-         %24 = OpFunctionCall %void %subgroupMatrixStore_543411
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %subgroupMatrixStore_543411
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/5671e2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/5671e2.wgsl.expected.spvasm
index 46d1b39..a0123dd 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/5671e2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/5671e2.wgsl.expected.spvasm
@@ -33,43 +33,43 @@
      %uint_8 = OpConstant %uint 8
      %uint_1 = OpConstant %uint 1
          %14 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %13 = OpConstantNull %14
-%_ptr_Workgroup_int = OpTypePointer Workgroup %int
-         %23 = OpTypeFunction %void %uint
-       %bool = OpTypeBool
       %int_0 = OpConstant %int 0
+         %13 = OpConstantComposite %14 %int_0
+%_ptr_Workgroup_int = OpTypePointer Workgroup %int
+         %24 = OpTypeFunction %void %uint
+       %bool = OpTypeBool
      %uint_2 = OpConstant %uint 2
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_5671e2 = OpFunction %void None %11
          %12 = OpLabel
-         %18 = OpAccessChain %_ptr_Workgroup_int %arg_0 %uint_1
-               OpCooperativeMatrixStoreKHR %18 %13 %uint_1 %uint_1 NonPrivatePointer
+         %19 = OpAccessChain %_ptr_Workgroup_int %arg_0 %uint_1
+               OpCooperativeMatrixStoreKHR %19 %13 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %23
+%compute_main_inner = OpFunction %void None %24
 %tint_local_index = OpFunctionParameter %uint
-         %24 = OpLabel
-               OpBranch %25
          %25 = OpLabel
-               OpBranch %28
-         %28 = OpLabel
-         %30 = OpPhi %uint %tint_local_index %25 %31 %27
-               OpLoopMerge %29 %27 None
                OpBranch %26
          %26 = OpLabel
-         %32 = OpUGreaterThanEqual %bool %30 %uint_64
-               OpSelectionMerge %34 None
-               OpBranchConditional %32 %35 %34
-         %35 = OpLabel
                OpBranch %29
-         %34 = OpLabel
-         %36 = OpAccessChain %_ptr_Workgroup_int %arg_0 %30
-               OpStore %36 %int_0 NonPrivatePointer
+         %29 = OpLabel
+         %31 = OpPhi %uint %tint_local_index %26 %32 %28
+               OpLoopMerge %30 %28 None
                OpBranch %27
          %27 = OpLabel
-         %31 = OpIAdd %uint %30 %uint_1
+         %33 = OpUGreaterThanEqual %bool %31 %uint_64
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+               OpBranch %30
+         %35 = OpLabel
+         %37 = OpAccessChain %_ptr_Workgroup_int %arg_0 %31
+               OpStore %37 %int_0 NonPrivatePointer
                OpBranch %28
-         %29 = OpLabel
+         %28 = OpLabel
+         %32 = OpIAdd %uint %31 %uint_1
+               OpBranch %29
+         %30 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %41 = OpFunctionCall %void %subgroupMatrixStore_5671e2
                OpReturn
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/57de92.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/57de92.wgsl.expected.spvasm
index fb94318..f74918e 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/57de92.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/57de92.wgsl.expected.spvasm
@@ -39,7 +39,7 @@
      %uint_8 = OpConstant %uint 8
      %uint_1 = OpConstant %uint 1
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %15 = OpConstantNull %16
+         %15 = OpConstantComposite %16 %uint_0
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
 %subgroupMatrixStore_57de92 = OpFunction %void None %10
          %11 = OpLabel
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/5915fe.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/5915fe.wgsl.expected.spvasm
index 987867d..db954cf 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/5915fe.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/5915fe.wgsl.expected.spvasm
@@ -32,7 +32,7 @@
      %uint_8 = OpConstant %uint 8
      %uint_0 = OpConstant %uint 0
          %13 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %12 = OpConstantNull %13
+         %12 = OpConstantComposite %13 %uint_0
 %_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
      %uint_1 = OpConstant %uint 1
          %23 = OpTypeFunction %void %uint
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/6d8de7.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/6d8de7.wgsl.expected.spvasm
index 9e8a486..a875538 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/6d8de7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/6d8de7.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 25
+; Bound: 26
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,17 +39,18 @@
      %uint_8 = OpConstant %uint 8
      %uint_1 = OpConstant %uint 1
          %15 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %14 = OpConstantNull %15
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %14 = OpConstantComposite %15 %half_0x0p_0
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
 %subgroupMatrixStore_6d8de7 = OpFunction %void None %8
           %9 = OpLabel
          %10 = OpAccessChain %_ptr_StorageBuffer__runtimearr_half %sb_rw %uint_0
-         %19 = OpAccessChain %_ptr_StorageBuffer_half %10 %uint_1
-               OpCooperativeMatrixStoreKHR %19 %14 %uint_1 %uint_1 NonPrivatePointer
+         %20 = OpAccessChain %_ptr_StorageBuffer_half %10 %uint_1
+               OpCooperativeMatrixStoreKHR %20 %14 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %8
-         %23 = OpLabel
-         %24 = OpFunctionCall %void %subgroupMatrixStore_6d8de7
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %subgroupMatrixStore_6d8de7
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/8a2280.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/8a2280.wgsl.expected.spvasm
index f8507b5..407f0fd 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/8a2280.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/8a2280.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 28
+; Bound: 29
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -40,18 +40,19 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %17 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_2
-         %16 = OpConstantNull %17
+    %float_0 = OpConstant %float 0
+         %16 = OpConstantComposite %17 %float_0
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
      %uint_1 = OpConstant %uint 1
 %subgroupMatrixStore_8a2280 = OpFunction %void None %11
          %12 = OpLabel
          %13 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_64 %1 %uint_0 %uint_0
-         %21 = OpAccessChain %_ptr_StorageBuffer_float %13 %uint_1
-               OpCooperativeMatrixStoreKHR %21 %16 %uint_1 %uint_1 NonPrivatePointer
+         %22 = OpAccessChain %_ptr_StorageBuffer_float %13 %uint_1
+               OpCooperativeMatrixStoreKHR %22 %16 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %11
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %subgroupMatrixStore_8a2280
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %subgroupMatrixStore_8a2280
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/8c59ed.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/8c59ed.wgsl.expected.spvasm
index 7200e4e..27836fb 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/8c59ed.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/8c59ed.wgsl.expected.spvasm
@@ -34,7 +34,7 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %14 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %13 = OpConstantNull %14
+         %13 = OpConstantComposite %14 %uint_0
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
      %uint_1 = OpConstant %uint 1
 %subgroupMatrixStore_8c59ed = OpFunction %void None %8
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9019ee.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/9019ee.wgsl.expected.spvasm
index dec8435..9062def 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/9019ee.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9019ee.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 27
+; Bound: 28
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,18 +39,19 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %17 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %16 = OpConstantNull %17
+      %int_0 = OpConstant %int 0
+         %16 = OpConstantComposite %17 %int_0
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
      %uint_1 = OpConstant %uint 1
 %subgroupMatrixStore_9019ee = OpFunction %void None %11
          %12 = OpLabel
          %13 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_64 %1 %uint_0 %uint_0
-         %20 = OpAccessChain %_ptr_StorageBuffer_int %13 %uint_1
-               OpCooperativeMatrixStoreKHR %20 %16 %uint_1 %uint_1 NonPrivatePointer
+         %21 = OpAccessChain %_ptr_StorageBuffer_int %13 %uint_1
+               OpCooperativeMatrixStoreKHR %21 %16 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %11
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %subgroupMatrixStore_9019ee
+         %26 = OpLabel
+         %27 = OpFunctionCall %void %subgroupMatrixStore_9019ee
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9a7d60.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/9a7d60.wgsl.expected.spvasm
index ba63829..42aa260 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/9a7d60.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9a7d60.wgsl.expected.spvasm
@@ -32,43 +32,43 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %13 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_2
-         %12 = OpConstantNull %13
+     %uint_0 = OpConstant %uint 0
+         %12 = OpConstantComposite %13 %uint_0
 %_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
      %uint_1 = OpConstant %uint 1
-         %23 = OpTypeFunction %void %uint
+         %24 = OpTypeFunction %void %uint
        %bool = OpTypeBool
-     %uint_0 = OpConstant %uint 0
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_9a7d60 = OpFunction %void None %10
          %11 = OpLabel
-         %17 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %uint_1
-               OpCooperativeMatrixStoreKHR %17 %12 %uint_1 %uint_1 NonPrivatePointer
+         %18 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %uint_1
+               OpCooperativeMatrixStoreKHR %18 %12 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %23
+%compute_main_inner = OpFunction %void None %24
 %tint_local_index = OpFunctionParameter %uint
-         %24 = OpLabel
-               OpBranch %25
          %25 = OpLabel
-               OpBranch %28
-         %28 = OpLabel
-         %30 = OpPhi %uint %tint_local_index %25 %31 %27
-               OpLoopMerge %29 %27 None
                OpBranch %26
          %26 = OpLabel
-         %32 = OpUGreaterThanEqual %bool %30 %uint_64
-               OpSelectionMerge %34 None
-               OpBranchConditional %32 %35 %34
-         %35 = OpLabel
                OpBranch %29
-         %34 = OpLabel
-         %36 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %30
-               OpStore %36 %uint_0 NonPrivatePointer
+         %29 = OpLabel
+         %31 = OpPhi %uint %tint_local_index %26 %32 %28
+               OpLoopMerge %30 %28 None
                OpBranch %27
          %27 = OpLabel
-         %31 = OpIAdd %uint %30 %uint_1
+         %33 = OpUGreaterThanEqual %bool %31 %uint_64
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+               OpBranch %30
+         %35 = OpLabel
+         %37 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %31
+               OpStore %37 %uint_0 NonPrivatePointer
                OpBranch %28
-         %29 = OpLabel
+         %28 = OpLabel
+         %32 = OpIAdd %uint %31 %uint_1
+               OpBranch %29
+         %30 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %40 = OpFunctionCall %void %subgroupMatrixStore_9a7d60
                OpReturn
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/9fffe5.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/9fffe5.wgsl.expected.spvasm
index 0d263ce..74dbca1 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/9fffe5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/9fffe5.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 28
+; Bound: 29
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -40,18 +40,19 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %17 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_2
-         %16 = OpConstantNull %17
+      %int_0 = OpConstant %int 0
+         %16 = OpConstantComposite %17 %int_0
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
      %uint_1 = OpConstant %uint 1
 %subgroupMatrixStore_9fffe5 = OpFunction %void None %11
          %12 = OpLabel
          %13 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_64 %1 %uint_0 %uint_0
-         %21 = OpAccessChain %_ptr_StorageBuffer_int %13 %uint_1
-               OpCooperativeMatrixStoreKHR %21 %16 %uint_1 %uint_1 NonPrivatePointer
+         %22 = OpAccessChain %_ptr_StorageBuffer_int %13 %uint_1
+               OpCooperativeMatrixStoreKHR %22 %16 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %11
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %subgroupMatrixStore_9fffe5
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %subgroupMatrixStore_9fffe5
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/adbc3e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/adbc3e.wgsl.expected.spvasm
index 208e1b7..cddbfba 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/adbc3e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/adbc3e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 25
+; Bound: 26
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -38,18 +38,19 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %15 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %14 = OpConstantComposite %15 %half_0x0p_0
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
      %uint_1 = OpConstant %uint 1
 %subgroupMatrixStore_adbc3e = OpFunction %void None %8
           %9 = OpLabel
          %10 = OpAccessChain %_ptr_StorageBuffer__runtimearr_half %sb_rw %uint_0
-         %18 = OpAccessChain %_ptr_StorageBuffer_half %10 %uint_1
-               OpCooperativeMatrixStoreKHR %18 %14 %uint_1 %uint_1 NonPrivatePointer
+         %19 = OpAccessChain %_ptr_StorageBuffer_half %10 %uint_1
+               OpCooperativeMatrixStoreKHR %19 %14 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %8
-         %23 = OpLabel
-         %24 = OpFunctionCall %void %subgroupMatrixStore_adbc3e
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %subgroupMatrixStore_adbc3e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/b9ff25.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/b9ff25.wgsl.expected.spvasm
index 689210b..e4e3978 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/b9ff25.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/b9ff25.wgsl.expected.spvasm
@@ -33,43 +33,43 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %14 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_2
-         %13 = OpConstantNull %14
+    %float_0 = OpConstant %float 0
+         %13 = OpConstantComposite %14 %float_0
 %_ptr_Workgroup_float = OpTypePointer Workgroup %float
      %uint_1 = OpConstant %uint 1
-         %24 = OpTypeFunction %void %uint
+         %25 = OpTypeFunction %void %uint
        %bool = OpTypeBool
-    %float_0 = OpConstant %float 0
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_b9ff25 = OpFunction %void None %11
          %12 = OpLabel
-         %18 = OpAccessChain %_ptr_Workgroup_float %arg_0 %uint_1
-               OpCooperativeMatrixStoreKHR %18 %13 %uint_1 %uint_1 NonPrivatePointer
+         %19 = OpAccessChain %_ptr_Workgroup_float %arg_0 %uint_1
+               OpCooperativeMatrixStoreKHR %19 %13 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %24
+%compute_main_inner = OpFunction %void None %25
 %tint_local_index = OpFunctionParameter %uint
-         %25 = OpLabel
-               OpBranch %26
          %26 = OpLabel
-               OpBranch %29
-         %29 = OpLabel
-         %31 = OpPhi %uint %tint_local_index %26 %32 %28
-               OpLoopMerge %30 %28 None
                OpBranch %27
          %27 = OpLabel
-         %33 = OpUGreaterThanEqual %bool %31 %uint_64
-               OpSelectionMerge %35 None
-               OpBranchConditional %33 %36 %35
-         %36 = OpLabel
                OpBranch %30
-         %35 = OpLabel
-         %37 = OpAccessChain %_ptr_Workgroup_float %arg_0 %31
-               OpStore %37 %float_0 NonPrivatePointer
+         %30 = OpLabel
+         %32 = OpPhi %uint %tint_local_index %27 %33 %29
+               OpLoopMerge %31 %29 None
                OpBranch %28
          %28 = OpLabel
-         %32 = OpIAdd %uint %31 %uint_1
+         %34 = OpUGreaterThanEqual %bool %32 %uint_64
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %36
+         %37 = OpLabel
+               OpBranch %31
+         %36 = OpLabel
+         %38 = OpAccessChain %_ptr_Workgroup_float %arg_0 %32
+               OpStore %38 %float_0 NonPrivatePointer
                OpBranch %29
-         %30 = OpLabel
+         %29 = OpLabel
+         %33 = OpIAdd %uint %32 %uint_1
+               OpBranch %30
+         %31 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %41 = OpFunctionCall %void %subgroupMatrixStore_b9ff25
                OpReturn
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/ba9442.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba9442.wgsl.expected.spvasm
index 9ca36c6..df7c905 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/ba9442.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/ba9442.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 27
+; Bound: 28
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -43,17 +43,18 @@
      %uint_8 = OpConstant %uint 8
      %uint_1 = OpConstant %uint 1
          %17 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %16 = OpConstantNull %17
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %16 = OpConstantComposite %17 %half_0x0p_0
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
 %subgroupMatrixStore_ba9442 = OpFunction %void None %11
          %12 = OpLabel
          %13 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_64 %1 %uint_0 %uint_0
-         %21 = OpAccessChain %_ptr_StorageBuffer_half %13 %uint_1
-               OpCooperativeMatrixStoreKHR %21 %16 %uint_1 %uint_1 NonPrivatePointer
+         %22 = OpAccessChain %_ptr_StorageBuffer_half %13 %uint_1
+               OpCooperativeMatrixStoreKHR %22 %16 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %11
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %subgroupMatrixStore_ba9442
+         %26 = OpLabel
+         %27 = OpFunctionCall %void %subgroupMatrixStore_ba9442
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/bb2478.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/bb2478.wgsl.expected.spvasm
index 25d07b0..cab30f0 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/bb2478.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/bb2478.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 26
+; Bound: 27
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -36,18 +36,19 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %15 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_2
-         %14 = OpConstantNull %15
+    %float_0 = OpConstant %float 0
+         %14 = OpConstantComposite %15 %float_0
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
      %uint_1 = OpConstant %uint 1
 %subgroupMatrixStore_bb2478 = OpFunction %void None %8
           %9 = OpLabel
          %10 = OpAccessChain %_ptr_StorageBuffer__runtimearr_float %sb_rw %uint_0
-         %19 = OpAccessChain %_ptr_StorageBuffer_float %10 %uint_1
-               OpCooperativeMatrixStoreKHR %19 %14 %uint_1 %uint_1 NonPrivatePointer
+         %20 = OpAccessChain %_ptr_StorageBuffer_float %10 %uint_1
+               OpCooperativeMatrixStoreKHR %20 %14 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %8
-         %24 = OpLabel
-         %25 = OpFunctionCall %void %subgroupMatrixStore_bb2478
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %subgroupMatrixStore_bb2478
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/bb5d49.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/bb5d49.wgsl.expected.spvasm
index 2452631..47438fd 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/bb5d49.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/bb5d49.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 25
+; Bound: 26
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -35,18 +35,19 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %15 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+    %float_0 = OpConstant %float 0
+         %14 = OpConstantComposite %15 %float_0
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
      %uint_1 = OpConstant %uint 1
 %subgroupMatrixStore_bb5d49 = OpFunction %void None %8
           %9 = OpLabel
          %10 = OpAccessChain %_ptr_StorageBuffer__runtimearr_float %sb_rw %uint_0
-         %18 = OpAccessChain %_ptr_StorageBuffer_float %10 %uint_1
-               OpCooperativeMatrixStoreKHR %18 %14 %uint_1 %uint_1 NonPrivatePointer
+         %19 = OpAccessChain %_ptr_StorageBuffer_float %10 %uint_1
+               OpCooperativeMatrixStoreKHR %19 %14 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %8
-         %23 = OpLabel
-         %24 = OpFunctionCall %void %subgroupMatrixStore_bb5d49
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %subgroupMatrixStore_bb5d49
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/bfd0a4.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/bfd0a4.wgsl.expected.spvasm
index 412d1d7..8f1c0b0 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/bfd0a4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/bfd0a4.wgsl.expected.spvasm
@@ -33,44 +33,44 @@
      %uint_8 = OpConstant %uint 8
      %uint_0 = OpConstant %uint 0
          %14 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %13 = OpConstantNull %14
+      %int_0 = OpConstant %int 0
+         %13 = OpConstantComposite %14 %int_0
 %_ptr_Workgroup_int = OpTypePointer Workgroup %int
      %uint_1 = OpConstant %uint 1
-         %24 = OpTypeFunction %void %uint
+         %25 = OpTypeFunction %void %uint
        %bool = OpTypeBool
-      %int_0 = OpConstant %int 0
      %uint_2 = OpConstant %uint 2
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_bfd0a4 = OpFunction %void None %11
          %12 = OpLabel
-         %18 = OpAccessChain %_ptr_Workgroup_int %arg_0 %uint_1
-               OpCooperativeMatrixStoreKHR %18 %13 %uint_1 %uint_1 NonPrivatePointer
+         %19 = OpAccessChain %_ptr_Workgroup_int %arg_0 %uint_1
+               OpCooperativeMatrixStoreKHR %19 %13 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %24
+%compute_main_inner = OpFunction %void None %25
 %tint_local_index = OpFunctionParameter %uint
-         %25 = OpLabel
-               OpBranch %26
          %26 = OpLabel
-               OpBranch %29
-         %29 = OpLabel
-         %31 = OpPhi %uint %tint_local_index %26 %32 %28
-               OpLoopMerge %30 %28 None
                OpBranch %27
          %27 = OpLabel
-         %33 = OpUGreaterThanEqual %bool %31 %uint_64
-               OpSelectionMerge %35 None
-               OpBranchConditional %33 %36 %35
-         %36 = OpLabel
                OpBranch %30
-         %35 = OpLabel
-         %37 = OpAccessChain %_ptr_Workgroup_int %arg_0 %31
-               OpStore %37 %int_0 NonPrivatePointer
+         %30 = OpLabel
+         %32 = OpPhi %uint %tint_local_index %27 %33 %29
+               OpLoopMerge %31 %29 None
                OpBranch %28
          %28 = OpLabel
-         %32 = OpIAdd %uint %31 %uint_1
+         %34 = OpUGreaterThanEqual %bool %32 %uint_64
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %36
+         %37 = OpLabel
+               OpBranch %31
+         %36 = OpLabel
+         %38 = OpAccessChain %_ptr_Workgroup_int %arg_0 %32
+               OpStore %38 %int_0 NonPrivatePointer
                OpBranch %29
-         %30 = OpLabel
+         %29 = OpLabel
+         %33 = OpIAdd %uint %32 %uint_1
+               OpBranch %30
+         %31 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %42 = OpFunctionCall %void %subgroupMatrixStore_bfd0a4
                OpReturn
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/bfe106.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/bfe106.wgsl.expected.spvasm
index 898bf57..5d87665 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/bfe106.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/bfe106.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 26
+; Bound: 27
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,18 +39,19 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %15 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_2
-         %14 = OpConstantNull %15
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %14 = OpConstantComposite %15 %half_0x0p_0
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
      %uint_1 = OpConstant %uint 1
 %subgroupMatrixStore_bfe106 = OpFunction %void None %8
           %9 = OpLabel
          %10 = OpAccessChain %_ptr_StorageBuffer__runtimearr_half %sb_rw %uint_0
-         %19 = OpAccessChain %_ptr_StorageBuffer_half %10 %uint_1
-               OpCooperativeMatrixStoreKHR %19 %14 %uint_1 %uint_1 NonPrivatePointer
+         %20 = OpAccessChain %_ptr_StorageBuffer_half %10 %uint_1
+               OpCooperativeMatrixStoreKHR %20 %14 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %8
-         %24 = OpLabel
-         %25 = OpFunctionCall %void %subgroupMatrixStore_bfe106
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %subgroupMatrixStore_bfe106
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/d07581.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/d07581.wgsl.expected.spvasm
index 1e84a08..7b4f315 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/d07581.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/d07581.wgsl.expected.spvasm
@@ -36,43 +36,43 @@
      %uint_8 = OpConstant %uint 8
      %uint_1 = OpConstant %uint 1
          %14 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %13 = OpConstantNull %14
-%_ptr_Workgroup_half = OpTypePointer Workgroup %half
-         %23 = OpTypeFunction %void %uint
-       %bool = OpTypeBool
 %half_0x0p_0 = OpConstant %half 0x0p+0
+         %13 = OpConstantComposite %14 %half_0x0p_0
+%_ptr_Workgroup_half = OpTypePointer Workgroup %half
+         %24 = OpTypeFunction %void %uint
+       %bool = OpTypeBool
      %uint_2 = OpConstant %uint 2
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_d07581 = OpFunction %void None %11
          %12 = OpLabel
-         %18 = OpAccessChain %_ptr_Workgroup_half %arg_0 %uint_1
-               OpCooperativeMatrixStoreKHR %18 %13 %uint_1 %uint_1 NonPrivatePointer
+         %19 = OpAccessChain %_ptr_Workgroup_half %arg_0 %uint_1
+               OpCooperativeMatrixStoreKHR %19 %13 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %23
+%compute_main_inner = OpFunction %void None %24
 %tint_local_index = OpFunctionParameter %uint
-         %24 = OpLabel
-               OpBranch %25
          %25 = OpLabel
-               OpBranch %28
-         %28 = OpLabel
-         %30 = OpPhi %uint %tint_local_index %25 %31 %27
-               OpLoopMerge %29 %27 None
                OpBranch %26
          %26 = OpLabel
-         %32 = OpUGreaterThanEqual %bool %30 %uint_64
-               OpSelectionMerge %34 None
-               OpBranchConditional %32 %35 %34
-         %35 = OpLabel
                OpBranch %29
-         %34 = OpLabel
-         %36 = OpAccessChain %_ptr_Workgroup_half %arg_0 %30
-               OpStore %36 %half_0x0p_0 NonPrivatePointer
+         %29 = OpLabel
+         %31 = OpPhi %uint %tint_local_index %26 %32 %28
+               OpLoopMerge %30 %28 None
                OpBranch %27
          %27 = OpLabel
-         %31 = OpIAdd %uint %30 %uint_1
+         %33 = OpUGreaterThanEqual %bool %31 %uint_64
+               OpSelectionMerge %35 None
+               OpBranchConditional %33 %36 %35
+         %36 = OpLabel
+               OpBranch %30
+         %35 = OpLabel
+         %37 = OpAccessChain %_ptr_Workgroup_half %arg_0 %31
+               OpStore %37 %half_0x0p_0 NonPrivatePointer
                OpBranch %28
-         %29 = OpLabel
+         %28 = OpLabel
+         %32 = OpIAdd %uint %31 %uint_1
+               OpBranch %29
+         %30 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %41 = OpFunctionCall %void %subgroupMatrixStore_d07581
                OpReturn
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/d55153.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/d55153.wgsl.expected.spvasm
index 435033c..fa1e5b2 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/d55153.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/d55153.wgsl.expected.spvasm
@@ -35,7 +35,7 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %14 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_2
-         %13 = OpConstantNull %14
+         %13 = OpConstantComposite %14 %uint_0
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
      %uint_1 = OpConstant %uint 1
 %subgroupMatrixStore_d55153 = OpFunction %void None %8
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/db6dd2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/db6dd2.wgsl.expected.spvasm
index ff8b73b..ba312a3 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/db6dd2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/db6dd2.wgsl.expected.spvasm
@@ -38,7 +38,7 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+         %15 = OpConstantComposite %16 %uint_0
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
      %uint_1 = OpConstant %uint 1
 %subgroupMatrixStore_db6dd2 = OpFunction %void None %10
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/dc92cf.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/dc92cf.wgsl.expected.spvasm
index 675f954..6098dc1 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/dc92cf.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/dc92cf.wgsl.expected.spvasm
@@ -33,44 +33,44 @@
      %uint_8 = OpConstant %uint 8
      %uint_0 = OpConstant %uint 0
          %14 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %13 = OpConstantNull %14
+    %float_0 = OpConstant %float 0
+         %13 = OpConstantComposite %14 %float_0
 %_ptr_Workgroup_float = OpTypePointer Workgroup %float
      %uint_1 = OpConstant %uint 1
-         %24 = OpTypeFunction %void %uint
+         %25 = OpTypeFunction %void %uint
        %bool = OpTypeBool
-    %float_0 = OpConstant %float 0
      %uint_2 = OpConstant %uint 2
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_dc92cf = OpFunction %void None %11
          %12 = OpLabel
-         %18 = OpAccessChain %_ptr_Workgroup_float %arg_0 %uint_1
-               OpCooperativeMatrixStoreKHR %18 %13 %uint_1 %uint_1 NonPrivatePointer
+         %19 = OpAccessChain %_ptr_Workgroup_float %arg_0 %uint_1
+               OpCooperativeMatrixStoreKHR %19 %13 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %24
+%compute_main_inner = OpFunction %void None %25
 %tint_local_index = OpFunctionParameter %uint
-         %25 = OpLabel
-               OpBranch %26
          %26 = OpLabel
-               OpBranch %29
-         %29 = OpLabel
-         %31 = OpPhi %uint %tint_local_index %26 %32 %28
-               OpLoopMerge %30 %28 None
                OpBranch %27
          %27 = OpLabel
-         %33 = OpUGreaterThanEqual %bool %31 %uint_64
-               OpSelectionMerge %35 None
-               OpBranchConditional %33 %36 %35
-         %36 = OpLabel
                OpBranch %30
-         %35 = OpLabel
-         %37 = OpAccessChain %_ptr_Workgroup_float %arg_0 %31
-               OpStore %37 %float_0 NonPrivatePointer
+         %30 = OpLabel
+         %32 = OpPhi %uint %tint_local_index %27 %33 %29
+               OpLoopMerge %31 %29 None
                OpBranch %28
          %28 = OpLabel
-         %32 = OpIAdd %uint %31 %uint_1
+         %34 = OpUGreaterThanEqual %bool %32 %uint_64
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %36
+         %37 = OpLabel
+               OpBranch %31
+         %36 = OpLabel
+         %38 = OpAccessChain %_ptr_Workgroup_float %arg_0 %32
+               OpStore %38 %float_0 NonPrivatePointer
                OpBranch %29
-         %30 = OpLabel
+         %29 = OpLabel
+         %33 = OpIAdd %uint %32 %uint_1
+               OpBranch %30
+         %31 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %42 = OpFunctionCall %void %subgroupMatrixStore_dc92cf
                OpReturn
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/dce0b7.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/dce0b7.wgsl.expected.spvasm
index aeb9778..9f6534d 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/dce0b7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/dce0b7.wgsl.expected.spvasm
@@ -39,7 +39,7 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_2
-         %15 = OpConstantNull %16
+         %15 = OpConstantComposite %16 %uint_0
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
      %uint_1 = OpConstant %uint 1
 %subgroupMatrixStore_dce0b7 = OpFunction %void None %10
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/eae7d8.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/eae7d8.wgsl.expected.spvasm
index 71d949a..d02a6e3 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/eae7d8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/eae7d8.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 25
+; Bound: 26
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -36,17 +36,18 @@
      %uint_8 = OpConstant %uint 8
      %uint_1 = OpConstant %uint 1
          %15 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %14 = OpConstantNull %15
+      %int_0 = OpConstant %int 0
+         %14 = OpConstantComposite %15 %int_0
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
 %subgroupMatrixStore_eae7d8 = OpFunction %void None %8
           %9 = OpLabel
          %10 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_rw %uint_0
-         %19 = OpAccessChain %_ptr_StorageBuffer_int %10 %uint_1
-               OpCooperativeMatrixStoreKHR %19 %14 %uint_1 %uint_1 NonPrivatePointer
+         %20 = OpAccessChain %_ptr_StorageBuffer_int %10 %uint_1
+               OpCooperativeMatrixStoreKHR %20 %14 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %8
-         %23 = OpLabel
-         %24 = OpFunctionCall %void %subgroupMatrixStore_eae7d8
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %subgroupMatrixStore_eae7d8
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/ee1195.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/ee1195.wgsl.expected.spvasm
index 4184905..54aa05f 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/ee1195.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/ee1195.wgsl.expected.spvasm
@@ -36,44 +36,44 @@
      %uint_8 = OpConstant %uint 8
      %uint_0 = OpConstant %uint 0
          %14 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %13 = OpConstantNull %14
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %13 = OpConstantComposite %14 %half_0x0p_0
 %_ptr_Workgroup_half = OpTypePointer Workgroup %half
      %uint_1 = OpConstant %uint 1
-         %24 = OpTypeFunction %void %uint
+         %25 = OpTypeFunction %void %uint
        %bool = OpTypeBool
-%half_0x0p_0 = OpConstant %half 0x0p+0
      %uint_2 = OpConstant %uint 2
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_ee1195 = OpFunction %void None %11
          %12 = OpLabel
-         %18 = OpAccessChain %_ptr_Workgroup_half %arg_0 %uint_1
-               OpCooperativeMatrixStoreKHR %18 %13 %uint_1 %uint_1 NonPrivatePointer
+         %19 = OpAccessChain %_ptr_Workgroup_half %arg_0 %uint_1
+               OpCooperativeMatrixStoreKHR %19 %13 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %24
+%compute_main_inner = OpFunction %void None %25
 %tint_local_index = OpFunctionParameter %uint
-         %25 = OpLabel
-               OpBranch %26
          %26 = OpLabel
-               OpBranch %29
-         %29 = OpLabel
-         %31 = OpPhi %uint %tint_local_index %26 %32 %28
-               OpLoopMerge %30 %28 None
                OpBranch %27
          %27 = OpLabel
-         %33 = OpUGreaterThanEqual %bool %31 %uint_64
-               OpSelectionMerge %35 None
-               OpBranchConditional %33 %36 %35
-         %36 = OpLabel
                OpBranch %30
-         %35 = OpLabel
-         %37 = OpAccessChain %_ptr_Workgroup_half %arg_0 %31
-               OpStore %37 %half_0x0p_0 NonPrivatePointer
+         %30 = OpLabel
+         %32 = OpPhi %uint %tint_local_index %27 %33 %29
+               OpLoopMerge %31 %29 None
                OpBranch %28
          %28 = OpLabel
-         %32 = OpIAdd %uint %31 %uint_1
+         %34 = OpUGreaterThanEqual %bool %32 %uint_64
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %36
+         %37 = OpLabel
+               OpBranch %31
+         %36 = OpLabel
+         %38 = OpAccessChain %_ptr_Workgroup_half %arg_0 %32
+               OpStore %38 %half_0x0p_0 NonPrivatePointer
                OpBranch %29
-         %30 = OpLabel
+         %29 = OpLabel
+         %33 = OpIAdd %uint %32 %uint_1
+               OpBranch %30
+         %31 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %42 = OpFunctionCall %void %subgroupMatrixStore_ee1195
                OpReturn
diff --git a/test/tint/builtins/gen/literal/subgroupMatrixStore/f04d67.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/subgroupMatrixStore/f04d67.wgsl.expected.spvasm
index 37bda7f..d9aa4b9 100644
--- a/test/tint/builtins/gen/literal/subgroupMatrixStore/f04d67.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/subgroupMatrixStore/f04d67.wgsl.expected.spvasm
@@ -33,43 +33,43 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %14 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_2
-         %13 = OpConstantNull %14
+      %int_0 = OpConstant %int 0
+         %13 = OpConstantComposite %14 %int_0
 %_ptr_Workgroup_int = OpTypePointer Workgroup %int
      %uint_1 = OpConstant %uint 1
-         %24 = OpTypeFunction %void %uint
+         %25 = OpTypeFunction %void %uint
        %bool = OpTypeBool
-      %int_0 = OpConstant %int 0
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_f04d67 = OpFunction %void None %11
          %12 = OpLabel
-         %18 = OpAccessChain %_ptr_Workgroup_int %arg_0 %uint_1
-               OpCooperativeMatrixStoreKHR %18 %13 %uint_1 %uint_1 NonPrivatePointer
+         %19 = OpAccessChain %_ptr_Workgroup_int %arg_0 %uint_1
+               OpCooperativeMatrixStoreKHR %19 %13 %uint_1 %uint_1 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %24
+%compute_main_inner = OpFunction %void None %25
 %tint_local_index = OpFunctionParameter %uint
-         %25 = OpLabel
-               OpBranch %26
          %26 = OpLabel
-               OpBranch %29
-         %29 = OpLabel
-         %31 = OpPhi %uint %tint_local_index %26 %32 %28
-               OpLoopMerge %30 %28 None
                OpBranch %27
          %27 = OpLabel
-         %33 = OpUGreaterThanEqual %bool %31 %uint_64
-               OpSelectionMerge %35 None
-               OpBranchConditional %33 %36 %35
-         %36 = OpLabel
                OpBranch %30
-         %35 = OpLabel
-         %37 = OpAccessChain %_ptr_Workgroup_int %arg_0 %31
-               OpStore %37 %int_0 NonPrivatePointer
+         %30 = OpLabel
+         %32 = OpPhi %uint %tint_local_index %27 %33 %29
+               OpLoopMerge %31 %29 None
                OpBranch %28
          %28 = OpLabel
-         %32 = OpIAdd %uint %31 %uint_1
+         %34 = OpUGreaterThanEqual %bool %32 %uint_64
+               OpSelectionMerge %36 None
+               OpBranchConditional %34 %37 %36
+         %37 = OpLabel
+               OpBranch %31
+         %36 = OpLabel
+         %38 = OpAccessChain %_ptr_Workgroup_int %arg_0 %32
+               OpStore %38 %int_0 NonPrivatePointer
                OpBranch %29
-         %30 = OpLabel
+         %29 = OpLabel
+         %33 = OpIAdd %uint %32 %uint_1
+               OpBranch %30
+         %31 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %41 = OpFunctionCall %void %subgroupMatrixStore_f04d67
                OpReturn
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2969da.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2969da.wgsl.expected.spvasm
index a75ead5..068d2c1 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2969da.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2969da.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 43
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -38,38 +38,39 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+      %int_0 = OpConstant %int 0
+         %15 = OpConstantComposite %16 %int_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
-         %21 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %20 = OpConstantNull %21
-%_ptr_Function_21 = OpTypePointer Function %21
-         %27 = OpConstantNull %9
+         %22 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+         %21 = OpConstantComposite %22 %int_0
+%_ptr_Function_22 = OpTypePointer Function %22
+         %28 = OpConstantComposite %9 %int_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %34 = OpTypeFunction %void
+         %35 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_2969da = OpFunction %9 None %13
          %14 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_16 Function
-      %arg_1 = OpVariable %_ptr_Function_21 Function
+      %arg_1 = OpVariable %_ptr_Function_22 Function
         %res = OpVariable %_ptr_Function_9 Function
                OpStore %arg_0 %15
-               OpStore %arg_1 %20
-         %25 = OpLoad %16 %arg_0 None
-         %26 = OpLoad %21 %arg_1 None
-         %28 = OpCooperativeMatrixMulAddKHR %9 %25 %26 %27 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR|MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
-               OpStore %res %28
-         %31 = OpLoad %9 %res None
-               OpReturnValue %31
+               OpStore %arg_1 %21
+         %26 = OpLoad %16 %arg_0 None
+         %27 = OpLoad %22 %arg_1 None
+         %29 = OpCooperativeMatrixMulAddKHR %9 %26 %27 %28 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR|MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
+               OpStore %res %29
+         %32 = OpLoad %9 %res None
+               OpReturnValue %32
                OpFunctionEnd
-%compute_main = OpFunction %void None %34
-         %35 = OpLabel
-         %36 = OpFunctionCall %9 %subgroupMatrixMultiply_2969da
-         %37 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
-         %39 = OpAccessChain %_ptr_StorageBuffer_int %37 %uint_0
-               OpCooperativeMatrixStoreKHR %39 %36 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %35
+         %36 = OpLabel
+         %37 = OpFunctionCall %9 %subgroupMatrixMultiply_2969da
+         %38 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+         %40 = OpAccessChain %_ptr_StorageBuffer_int %38 %uint_0
+               OpCooperativeMatrixStoreKHR %40 %37 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2c905b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2c905b.wgsl.expected.spvasm
index 62d2f16..40dbfbe 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiply/2c905b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/2c905b.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 43
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -38,38 +38,39 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+    %float_0 = OpConstant %float 0
+         %15 = OpConstantComposite %16 %float_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
-         %21 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %20 = OpConstantNull %21
-%_ptr_Function_21 = OpTypePointer Function %21
-         %27 = OpConstantNull %9
+         %22 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+         %21 = OpConstantComposite %22 %float_0
+%_ptr_Function_22 = OpTypePointer Function %22
+         %28 = OpConstantComposite %9 %float_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %34 = OpTypeFunction %void
+         %35 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_float_uint_1024 = OpTypePointer StorageBuffer %_arr_float_uint_1024
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_2c905b = OpFunction %9 None %13
          %14 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_16 Function
-      %arg_1 = OpVariable %_ptr_Function_21 Function
+      %arg_1 = OpVariable %_ptr_Function_22 Function
         %res = OpVariable %_ptr_Function_9 Function
                OpStore %arg_0 %15
-               OpStore %arg_1 %20
-         %25 = OpLoad %16 %arg_0 None
-         %26 = OpLoad %21 %arg_1 None
-         %28 = OpCooperativeMatrixMulAddKHR %9 %25 %26 %27 NoneKHR
-               OpStore %res %28
-         %31 = OpLoad %9 %res None
-               OpReturnValue %31
+               OpStore %arg_1 %21
+         %26 = OpLoad %16 %arg_0 None
+         %27 = OpLoad %22 %arg_1 None
+         %29 = OpCooperativeMatrixMulAddKHR %9 %26 %27 %28 NoneKHR
+               OpStore %res %29
+         %32 = OpLoad %9 %res None
+               OpReturnValue %32
                OpFunctionEnd
-%compute_main = OpFunction %void None %34
-         %35 = OpLabel
-         %36 = OpFunctionCall %9 %subgroupMatrixMultiply_2c905b
-         %37 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
-         %39 = OpAccessChain %_ptr_StorageBuffer_float %37 %uint_0
-               OpCooperativeMatrixStoreKHR %39 %36 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %35
+         %36 = OpLabel
+         %37 = OpFunctionCall %9 %subgroupMatrixMultiply_2c905b
+         %38 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
+         %40 = OpAccessChain %_ptr_StorageBuffer_float %38 %uint_0
+               OpCooperativeMatrixStoreKHR %40 %37 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3e9b04.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3e9b04.wgsl.expected.spvasm
index 8083762..ef4040b 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiply/3e9b04.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/3e9b04.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 43
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -38,38 +38,39 @@
         %int = OpTypeInt 32 1
      %uint_0 = OpConstant %uint 0
          %15 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+      %int_0 = OpConstant %int 0
+         %14 = OpConstantComposite %15 %int_0
 %_ptr_Function_15 = OpTypePointer Function %15
      %uint_1 = OpConstant %uint 1
-         %21 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %20 = OpConstantNull %21
-%_ptr_Function_21 = OpTypePointer Function %21
-         %27 = OpConstantNull %8
+         %22 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+         %21 = OpConstantComposite %22 %int_0
+%_ptr_Function_22 = OpTypePointer Function %22
+         %28 = OpConstantComposite %8 %uint_0
 %_ptr_Function_8 = OpTypePointer Function %8
        %void = OpTypeVoid
-         %34 = OpTypeFunction %void
+         %35 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_3e9b04 = OpFunction %8 None %12
          %13 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_15 Function
-      %arg_1 = OpVariable %_ptr_Function_21 Function
+      %arg_1 = OpVariable %_ptr_Function_22 Function
         %res = OpVariable %_ptr_Function_8 Function
                OpStore %arg_0 %14
-               OpStore %arg_1 %20
-         %25 = OpLoad %15 %arg_0 None
-         %26 = OpLoad %21 %arg_1 None
-         %28 = OpCooperativeMatrixMulAddKHR %8 %25 %26 %27 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
-               OpStore %res %28
-         %31 = OpLoad %8 %res None
-               OpReturnValue %31
+               OpStore %arg_1 %21
+         %26 = OpLoad %15 %arg_0 None
+         %27 = OpLoad %22 %arg_1 None
+         %29 = OpCooperativeMatrixMulAddKHR %8 %26 %27 %28 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
+               OpStore %res %29
+         %32 = OpLoad %8 %res None
+               OpReturnValue %32
                OpFunctionEnd
-%compute_main = OpFunction %void None %34
-         %35 = OpLabel
-         %36 = OpFunctionCall %8 %subgroupMatrixMultiply_3e9b04
-         %37 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
-         %39 = OpAccessChain %_ptr_StorageBuffer_uint %37 %uint_0
-               OpCooperativeMatrixStoreKHR %39 %36 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %35
+         %36 = OpLabel
+         %37 = OpFunctionCall %8 %subgroupMatrixMultiply_3e9b04
+         %38 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+         %40 = OpAccessChain %_ptr_StorageBuffer_uint %38 %uint_0
+               OpCooperativeMatrixStoreKHR %40 %37 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/42abed.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/42abed.wgsl.expected.spvasm
index 0352914..2905805 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiply/42abed.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/42abed.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 43
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -41,38 +41,39 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %15 = OpConstantComposite %16 %half_0x0p_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
-         %21 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %20 = OpConstantNull %21
-%_ptr_Function_21 = OpTypePointer Function %21
-         %27 = OpConstantNull %9
+         %22 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+         %21 = OpConstantComposite %22 %half_0x0p_0
+%_ptr_Function_22 = OpTypePointer Function %22
+         %28 = OpConstantComposite %9 %half_0x0p_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %34 = OpTypeFunction %void
+         %35 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_half_uint_1024 = OpTypePointer StorageBuffer %_arr_half_uint_1024
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_42abed = OpFunction %9 None %13
          %14 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_16 Function
-      %arg_1 = OpVariable %_ptr_Function_21 Function
+      %arg_1 = OpVariable %_ptr_Function_22 Function
         %res = OpVariable %_ptr_Function_9 Function
                OpStore %arg_0 %15
-               OpStore %arg_1 %20
-         %25 = OpLoad %16 %arg_0 None
-         %26 = OpLoad %21 %arg_1 None
-         %28 = OpCooperativeMatrixMulAddKHR %9 %25 %26 %27 NoneKHR
-               OpStore %res %28
-         %31 = OpLoad %9 %res None
-               OpReturnValue %31
+               OpStore %arg_1 %21
+         %26 = OpLoad %16 %arg_0 None
+         %27 = OpLoad %22 %arg_1 None
+         %29 = OpCooperativeMatrixMulAddKHR %9 %26 %27 %28 NoneKHR
+               OpStore %res %29
+         %32 = OpLoad %9 %res None
+               OpReturnValue %32
                OpFunctionEnd
-%compute_main = OpFunction %void None %34
-         %35 = OpLabel
-         %36 = OpFunctionCall %9 %subgroupMatrixMultiply_42abed
-         %37 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
-         %39 = OpAccessChain %_ptr_StorageBuffer_half %37 %uint_0
-               OpCooperativeMatrixStoreKHR %39 %36 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %35
+         %36 = OpLabel
+         %37 = OpFunctionCall %9 %subgroupMatrixMultiply_42abed
+         %38 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
+         %40 = OpAccessChain %_ptr_StorageBuffer_half %38 %uint_0
+               OpCooperativeMatrixStoreKHR %40 %37 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/5677fc.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/5677fc.wgsl.expected.spvasm
index 081c112..4892e56 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiply/5677fc.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/5677fc.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 44
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -42,38 +42,40 @@
        %half = OpTypeFloat 16
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %15 = OpConstantComposite %16 %half_0x0p_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
-         %22 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %21 = OpConstantNull %22
-%_ptr_Function_22 = OpTypePointer Function %22
-         %28 = OpConstantNull %9
+         %23 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+         %22 = OpConstantComposite %23 %half_0x0p_0
+%_ptr_Function_23 = OpTypePointer Function %23
+    %float_0 = OpConstant %float 0
+         %29 = OpConstantComposite %9 %float_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %35 = OpTypeFunction %void
+         %37 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_float_uint_1024 = OpTypePointer StorageBuffer %_arr_float_uint_1024
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_5677fc = OpFunction %9 None %13
          %14 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_16 Function
-      %arg_1 = OpVariable %_ptr_Function_22 Function
+      %arg_1 = OpVariable %_ptr_Function_23 Function
         %res = OpVariable %_ptr_Function_9 Function
                OpStore %arg_0 %15
-               OpStore %arg_1 %21
-         %26 = OpLoad %16 %arg_0 None
-         %27 = OpLoad %22 %arg_1 None
-         %29 = OpCooperativeMatrixMulAddKHR %9 %26 %27 %28 NoneKHR
-               OpStore %res %29
-         %32 = OpLoad %9 %res None
-               OpReturnValue %32
+               OpStore %arg_1 %22
+         %27 = OpLoad %16 %arg_0 None
+         %28 = OpLoad %23 %arg_1 None
+         %31 = OpCooperativeMatrixMulAddKHR %9 %27 %28 %29 NoneKHR
+               OpStore %res %31
+         %34 = OpLoad %9 %res None
+               OpReturnValue %34
                OpFunctionEnd
-%compute_main = OpFunction %void None %35
-         %36 = OpLabel
-         %37 = OpFunctionCall %9 %subgroupMatrixMultiply_5677fc
-         %38 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
-         %40 = OpAccessChain %_ptr_StorageBuffer_float %38 %uint_0
-               OpCooperativeMatrixStoreKHR %40 %37 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %37
+         %38 = OpLabel
+         %39 = OpFunctionCall %9 %subgroupMatrixMultiply_5677fc
+         %40 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
+         %42 = OpAccessChain %_ptr_StorageBuffer_float %40 %uint_0
+               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/704b4d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/704b4d.wgsl.expected.spvasm
index e9696d4..7401c044 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiply/704b4d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/704b4d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 44
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -42,38 +42,40 @@
        %half = OpTypeFloat 16
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %15 = OpConstantComposite %16 %half_0x0p_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
-         %22 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %21 = OpConstantNull %22
-%_ptr_Function_22 = OpTypePointer Function %22
-         %28 = OpConstantNull %9
+         %23 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+         %22 = OpConstantComposite %23 %half_0x0p_0
+%_ptr_Function_23 = OpTypePointer Function %23
+      %int_0 = OpConstant %int 0
+         %29 = OpConstantComposite %9 %int_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %35 = OpTypeFunction %void
+         %37 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_704b4d = OpFunction %9 None %13
          %14 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_16 Function
-      %arg_1 = OpVariable %_ptr_Function_22 Function
+      %arg_1 = OpVariable %_ptr_Function_23 Function
         %res = OpVariable %_ptr_Function_9 Function
                OpStore %arg_0 %15
-               OpStore %arg_1 %21
-         %26 = OpLoad %16 %arg_0 None
-         %27 = OpLoad %22 %arg_1 None
-         %29 = OpCooperativeMatrixMulAddKHR %9 %26 %27 %28 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
-               OpStore %res %29
-         %32 = OpLoad %9 %res None
-               OpReturnValue %32
+               OpStore %arg_1 %22
+         %27 = OpLoad %16 %arg_0 None
+         %28 = OpLoad %23 %arg_1 None
+         %31 = OpCooperativeMatrixMulAddKHR %9 %27 %28 %29 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
+               OpStore %res %31
+         %34 = OpLoad %9 %res None
+               OpReturnValue %34
                OpFunctionEnd
-%compute_main = OpFunction %void None %35
-         %36 = OpLabel
-         %37 = OpFunctionCall %9 %subgroupMatrixMultiply_704b4d
-         %38 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
-         %40 = OpAccessChain %_ptr_StorageBuffer_int %38 %uint_0
-               OpCooperativeMatrixStoreKHR %40 %37 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %37
+         %38 = OpLabel
+         %39 = OpFunctionCall %9 %subgroupMatrixMultiply_704b4d
+         %40 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+         %42 = OpAccessChain %_ptr_StorageBuffer_int %40 %uint_0
+               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8648ad.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8648ad.wgsl.expected.spvasm
index 96a22ce..da24aa9 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8648ad.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8648ad.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 44
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,38 +39,40 @@
         %int = OpTypeInt 32 1
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+      %int_0 = OpConstant %int 0
+         %15 = OpConstantComposite %16 %int_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
-         %22 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %21 = OpConstantNull %22
-%_ptr_Function_22 = OpTypePointer Function %22
-         %28 = OpConstantNull %9
+         %23 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+         %22 = OpConstantComposite %23 %int_0
+%_ptr_Function_23 = OpTypePointer Function %23
+    %float_0 = OpConstant %float 0
+         %29 = OpConstantComposite %9 %float_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %35 = OpTypeFunction %void
+         %37 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_float_uint_1024 = OpTypePointer StorageBuffer %_arr_float_uint_1024
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_8648ad = OpFunction %9 None %13
          %14 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_16 Function
-      %arg_1 = OpVariable %_ptr_Function_22 Function
+      %arg_1 = OpVariable %_ptr_Function_23 Function
         %res = OpVariable %_ptr_Function_9 Function
                OpStore %arg_0 %15
-               OpStore %arg_1 %21
-         %26 = OpLoad %16 %arg_0 None
-         %27 = OpLoad %22 %arg_1 None
-         %29 = OpCooperativeMatrixMulAddKHR %9 %26 %27 %28 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
-               OpStore %res %29
-         %32 = OpLoad %9 %res None
-               OpReturnValue %32
+               OpStore %arg_1 %22
+         %27 = OpLoad %16 %arg_0 None
+         %28 = OpLoad %23 %arg_1 None
+         %31 = OpCooperativeMatrixMulAddKHR %9 %27 %28 %29 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
+               OpStore %res %31
+         %34 = OpLoad %9 %res None
+               OpReturnValue %34
                OpFunctionEnd
-%compute_main = OpFunction %void None %35
-         %36 = OpLabel
-         %37 = OpFunctionCall %9 %subgroupMatrixMultiply_8648ad
-         %38 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
-         %40 = OpAccessChain %_ptr_StorageBuffer_float %38 %uint_0
-               OpCooperativeMatrixStoreKHR %40 %37 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %37
+         %38 = OpLabel
+         %39 = OpFunctionCall %9 %subgroupMatrixMultiply_8648ad
+         %40 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
+         %42 = OpAccessChain %_ptr_StorageBuffer_float %40 %uint_0
+               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8744bd.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8744bd.wgsl.expected.spvasm
index 5245eb0..791a4fa 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8744bd.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8744bd.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 44
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -42,38 +42,40 @@
       %float = OpTypeFloat 32
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+    %float_0 = OpConstant %float 0
+         %15 = OpConstantComposite %16 %float_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
-         %22 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %21 = OpConstantNull %22
-%_ptr_Function_22 = OpTypePointer Function %22
-         %28 = OpConstantNull %9
+         %23 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+         %22 = OpConstantComposite %23 %float_0
+%_ptr_Function_23 = OpTypePointer Function %23
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %29 = OpConstantComposite %9 %half_0x0p_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %35 = OpTypeFunction %void
+         %37 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_half_uint_1024 = OpTypePointer StorageBuffer %_arr_half_uint_1024
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_8744bd = OpFunction %9 None %13
          %14 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_16 Function
-      %arg_1 = OpVariable %_ptr_Function_22 Function
+      %arg_1 = OpVariable %_ptr_Function_23 Function
         %res = OpVariable %_ptr_Function_9 Function
                OpStore %arg_0 %15
-               OpStore %arg_1 %21
-         %26 = OpLoad %16 %arg_0 None
-         %27 = OpLoad %22 %arg_1 None
-         %29 = OpCooperativeMatrixMulAddKHR %9 %26 %27 %28 NoneKHR
-               OpStore %res %29
-         %32 = OpLoad %9 %res None
-               OpReturnValue %32
+               OpStore %arg_1 %22
+         %27 = OpLoad %16 %arg_0 None
+         %28 = OpLoad %23 %arg_1 None
+         %31 = OpCooperativeMatrixMulAddKHR %9 %27 %28 %29 NoneKHR
+               OpStore %res %31
+         %34 = OpLoad %9 %res None
+               OpReturnValue %34
                OpFunctionEnd
-%compute_main = OpFunction %void None %35
-         %36 = OpLabel
-         %37 = OpFunctionCall %9 %subgroupMatrixMultiply_8744bd
-         %38 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
-         %40 = OpAccessChain %_ptr_StorageBuffer_half %38 %uint_0
-               OpCooperativeMatrixStoreKHR %40 %37 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %37
+         %38 = OpLabel
+         %39 = OpFunctionCall %9 %subgroupMatrixMultiply_8744bd
+         %40 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
+         %42 = OpAccessChain %_ptr_StorageBuffer_half %40 %uint_0
+               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c3aac.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c3aac.wgsl.expected.spvasm
index 8353e1b..7f32f3b 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c3aac.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/8c3aac.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 43
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -38,38 +38,39 @@
       %float = OpTypeFloat 32
      %uint_0 = OpConstant %uint 0
          %15 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+    %float_0 = OpConstant %float 0
+         %14 = OpConstantComposite %15 %float_0
 %_ptr_Function_15 = OpTypePointer Function %15
      %uint_1 = OpConstant %uint 1
-         %21 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %20 = OpConstantNull %21
-%_ptr_Function_21 = OpTypePointer Function %21
-         %27 = OpConstantNull %8
+         %22 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+         %21 = OpConstantComposite %22 %float_0
+%_ptr_Function_22 = OpTypePointer Function %22
+         %28 = OpConstantComposite %8 %uint_0
 %_ptr_Function_8 = OpTypePointer Function %8
        %void = OpTypeVoid
-         %34 = OpTypeFunction %void
+         %35 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_8c3aac = OpFunction %8 None %12
          %13 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_15 Function
-      %arg_1 = OpVariable %_ptr_Function_21 Function
+      %arg_1 = OpVariable %_ptr_Function_22 Function
         %res = OpVariable %_ptr_Function_8 Function
                OpStore %arg_0 %14
-               OpStore %arg_1 %20
-         %25 = OpLoad %15 %arg_0 None
-         %26 = OpLoad %21 %arg_1 None
-         %28 = OpCooperativeMatrixMulAddKHR %8 %25 %26 %27 NoneKHR
-               OpStore %res %28
-         %31 = OpLoad %8 %res None
-               OpReturnValue %31
+               OpStore %arg_1 %21
+         %26 = OpLoad %15 %arg_0 None
+         %27 = OpLoad %22 %arg_1 None
+         %29 = OpCooperativeMatrixMulAddKHR %8 %26 %27 %28 NoneKHR
+               OpStore %res %29
+         %32 = OpLoad %8 %res None
+               OpReturnValue %32
                OpFunctionEnd
-%compute_main = OpFunction %void None %34
-         %35 = OpLabel
-         %36 = OpFunctionCall %8 %subgroupMatrixMultiply_8c3aac
-         %37 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
-         %39 = OpAccessChain %_ptr_StorageBuffer_uint %37 %uint_0
-               OpCooperativeMatrixStoreKHR %39 %36 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %35
+         %36 = OpLabel
+         %37 = OpFunctionCall %8 %subgroupMatrixMultiply_8c3aac
+         %38 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+         %40 = OpAccessChain %_ptr_StorageBuffer_uint %38 %uint_0
+               OpCooperativeMatrixStoreKHR %40 %37 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/957137.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/957137.wgsl.expected.spvasm
index f345229..0311eec 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiply/957137.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/957137.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 43
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -41,38 +41,39 @@
        %half = OpTypeFloat 16
      %uint_0 = OpConstant %uint 0
          %15 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %14 = OpConstantComposite %15 %half_0x0p_0
 %_ptr_Function_15 = OpTypePointer Function %15
      %uint_1 = OpConstant %uint 1
-         %21 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %20 = OpConstantNull %21
-%_ptr_Function_21 = OpTypePointer Function %21
-         %27 = OpConstantNull %8
+         %22 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+         %21 = OpConstantComposite %22 %half_0x0p_0
+%_ptr_Function_22 = OpTypePointer Function %22
+         %28 = OpConstantComposite %8 %uint_0
 %_ptr_Function_8 = OpTypePointer Function %8
        %void = OpTypeVoid
-         %34 = OpTypeFunction %void
+         %35 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_957137 = OpFunction %8 None %12
          %13 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_15 Function
-      %arg_1 = OpVariable %_ptr_Function_21 Function
+      %arg_1 = OpVariable %_ptr_Function_22 Function
         %res = OpVariable %_ptr_Function_8 Function
                OpStore %arg_0 %14
-               OpStore %arg_1 %20
-         %25 = OpLoad %15 %arg_0 None
-         %26 = OpLoad %21 %arg_1 None
-         %28 = OpCooperativeMatrixMulAddKHR %8 %25 %26 %27 NoneKHR
-               OpStore %res %28
-         %31 = OpLoad %8 %res None
-               OpReturnValue %31
+               OpStore %arg_1 %21
+         %26 = OpLoad %15 %arg_0 None
+         %27 = OpLoad %22 %arg_1 None
+         %29 = OpCooperativeMatrixMulAddKHR %8 %26 %27 %28 NoneKHR
+               OpStore %res %29
+         %32 = OpLoad %8 %res None
+               OpReturnValue %32
                OpFunctionEnd
-%compute_main = OpFunction %void None %34
-         %35 = OpLabel
-         %36 = OpFunctionCall %8 %subgroupMatrixMultiply_957137
-         %37 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
-         %39 = OpAccessChain %_ptr_StorageBuffer_uint %37 %uint_0
-               OpCooperativeMatrixStoreKHR %39 %36 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %35
+         %36 = OpLabel
+         %37 = OpFunctionCall %8 %subgroupMatrixMultiply_957137
+         %38 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+         %40 = OpAccessChain %_ptr_StorageBuffer_uint %38 %uint_0
+               OpCooperativeMatrixStoreKHR %40 %37 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/bf2e54.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/bf2e54.wgsl.expected.spvasm
index 4338c64..6fb2f0e 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiply/bf2e54.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/bf2e54.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 44
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -42,38 +42,40 @@
         %int = OpTypeInt 32 1
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+      %int_0 = OpConstant %int 0
+         %15 = OpConstantComposite %16 %int_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
-         %22 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %21 = OpConstantNull %22
-%_ptr_Function_22 = OpTypePointer Function %22
-         %28 = OpConstantNull %9
+         %23 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+         %22 = OpConstantComposite %23 %int_0
+%_ptr_Function_23 = OpTypePointer Function %23
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %29 = OpConstantComposite %9 %half_0x0p_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %35 = OpTypeFunction %void
+         %37 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_half_uint_1024 = OpTypePointer StorageBuffer %_arr_half_uint_1024
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_bf2e54 = OpFunction %9 None %13
          %14 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_16 Function
-      %arg_1 = OpVariable %_ptr_Function_22 Function
+      %arg_1 = OpVariable %_ptr_Function_23 Function
         %res = OpVariable %_ptr_Function_9 Function
                OpStore %arg_0 %15
-               OpStore %arg_1 %21
-         %26 = OpLoad %16 %arg_0 None
-         %27 = OpLoad %22 %arg_1 None
-         %29 = OpCooperativeMatrixMulAddKHR %9 %26 %27 %28 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
-               OpStore %res %29
-         %32 = OpLoad %9 %res None
-               OpReturnValue %32
+               OpStore %arg_1 %22
+         %27 = OpLoad %16 %arg_0 None
+         %28 = OpLoad %23 %arg_1 None
+         %31 = OpCooperativeMatrixMulAddKHR %9 %27 %28 %29 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
+               OpStore %res %31
+         %34 = OpLoad %9 %res None
+               OpReturnValue %34
                OpFunctionEnd
-%compute_main = OpFunction %void None %35
-         %36 = OpLabel
-         %37 = OpFunctionCall %9 %subgroupMatrixMultiply_bf2e54
-         %38 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
-         %40 = OpAccessChain %_ptr_StorageBuffer_half %38 %uint_0
-               OpCooperativeMatrixStoreKHR %40 %37 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %37
+         %38 = OpLabel
+         %39 = OpFunctionCall %9 %subgroupMatrixMultiply_bf2e54
+         %40 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
+         %42 = OpAccessChain %_ptr_StorageBuffer_half %40 %uint_0
+               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c26fb9.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c26fb9.wgsl.expected.spvasm
index 520dd4f..3c76916 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiply/c26fb9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/c26fb9.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 43
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -38,16 +38,17 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+         %15 = OpConstantComposite %16 %uint_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
          %21 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %20 = OpConstantNull %21
+         %20 = OpConstantComposite %21 %uint_0
 %_ptr_Function_21 = OpTypePointer Function %21
-         %27 = OpConstantNull %9
+    %float_0 = OpConstant %float 0
+         %27 = OpConstantComposite %9 %float_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %34 = OpTypeFunction %void
+         %35 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_float_uint_1024 = OpTypePointer StorageBuffer %_arr_float_uint_1024
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
     %uint_64 = OpConstant %uint 64
@@ -60,16 +61,16 @@
                OpStore %arg_1 %20
          %25 = OpLoad %16 %arg_0 None
          %26 = OpLoad %21 %arg_1 None
-         %28 = OpCooperativeMatrixMulAddKHR %9 %25 %26 %27 NoneKHR
-               OpStore %res %28
-         %31 = OpLoad %9 %res None
-               OpReturnValue %31
+         %29 = OpCooperativeMatrixMulAddKHR %9 %25 %26 %27 NoneKHR
+               OpStore %res %29
+         %32 = OpLoad %9 %res None
+               OpReturnValue %32
                OpFunctionEnd
-%compute_main = OpFunction %void None %34
-         %35 = OpLabel
-         %36 = OpFunctionCall %9 %subgroupMatrixMultiply_c26fb9
-         %37 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
-         %39 = OpAccessChain %_ptr_StorageBuffer_float %37 %uint_0
-               OpCooperativeMatrixStoreKHR %39 %36 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %35
+         %36 = OpLabel
+         %37 = OpFunctionCall %9 %subgroupMatrixMultiply_c26fb9
+         %38 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
+         %40 = OpAccessChain %_ptr_StorageBuffer_float %38 %uint_0
+               OpCooperativeMatrixStoreKHR %40 %37 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/da556f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/da556f.wgsl.expected.spvasm
index 1ca96e5..349e9f0 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiply/da556f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/da556f.wgsl.expected.spvasm
@@ -37,13 +37,13 @@
          %12 = OpTypeFunction %8
      %uint_0 = OpConstant %uint 0
          %15 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+         %14 = OpConstantComposite %15 %uint_0
 %_ptr_Function_15 = OpTypePointer Function %15
      %uint_1 = OpConstant %uint 1
          %20 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %19 = OpConstantNull %20
+         %19 = OpConstantComposite %20 %uint_0
 %_ptr_Function_20 = OpTypePointer Function %20
-         %26 = OpConstantNull %8
+         %26 = OpConstantComposite %8 %uint_0
 %_ptr_Function_8 = OpTypePointer Function %8
        %void = OpTypeVoid
          %33 = OpTypeFunction %void
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/db4ee8.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/db4ee8.wgsl.expected.spvasm
index db2b131..12f7333 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiply/db4ee8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/db4ee8.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 43
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -41,16 +41,17 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+         %15 = OpConstantComposite %16 %uint_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
          %21 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %20 = OpConstantNull %21
+         %20 = OpConstantComposite %21 %uint_0
 %_ptr_Function_21 = OpTypePointer Function %21
-         %27 = OpConstantNull %9
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %27 = OpConstantComposite %9 %half_0x0p_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %34 = OpTypeFunction %void
+         %35 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_half_uint_1024 = OpTypePointer StorageBuffer %_arr_half_uint_1024
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
     %uint_64 = OpConstant %uint 64
@@ -63,16 +64,16 @@
                OpStore %arg_1 %20
          %25 = OpLoad %16 %arg_0 None
          %26 = OpLoad %21 %arg_1 None
-         %28 = OpCooperativeMatrixMulAddKHR %9 %25 %26 %27 NoneKHR
-               OpStore %res %28
-         %31 = OpLoad %9 %res None
-               OpReturnValue %31
+         %29 = OpCooperativeMatrixMulAddKHR %9 %25 %26 %27 NoneKHR
+               OpStore %res %29
+         %32 = OpLoad %9 %res None
+               OpReturnValue %32
                OpFunctionEnd
-%compute_main = OpFunction %void None %34
-         %35 = OpLabel
-         %36 = OpFunctionCall %9 %subgroupMatrixMultiply_db4ee8
-         %37 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
-         %39 = OpAccessChain %_ptr_StorageBuffer_half %37 %uint_0
-               OpCooperativeMatrixStoreKHR %39 %36 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %35
+         %36 = OpLabel
+         %37 = OpFunctionCall %9 %subgroupMatrixMultiply_db4ee8
+         %38 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
+         %40 = OpAccessChain %_ptr_StorageBuffer_half %38 %uint_0
+               OpCooperativeMatrixStoreKHR %40 %37 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f51206.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f51206.wgsl.expected.spvasm
index 22e910a..2c8a94c 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiply/f51206.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/f51206.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 43
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -38,16 +38,17 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+         %15 = OpConstantComposite %16 %uint_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
          %21 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %20 = OpConstantNull %21
+         %20 = OpConstantComposite %21 %uint_0
 %_ptr_Function_21 = OpTypePointer Function %21
-         %27 = OpConstantNull %9
+      %int_0 = OpConstant %int 0
+         %27 = OpConstantComposite %9 %int_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %34 = OpTypeFunction %void
+         %35 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
     %uint_64 = OpConstant %uint 64
@@ -60,16 +61,16 @@
                OpStore %arg_1 %20
          %25 = OpLoad %16 %arg_0 None
          %26 = OpLoad %21 %arg_1 None
-         %28 = OpCooperativeMatrixMulAddKHR %9 %25 %26 %27 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
-               OpStore %res %28
-         %31 = OpLoad %9 %res None
-               OpReturnValue %31
+         %29 = OpCooperativeMatrixMulAddKHR %9 %25 %26 %27 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
+               OpStore %res %29
+         %32 = OpLoad %9 %res None
+               OpReturnValue %32
                OpFunctionEnd
-%compute_main = OpFunction %void None %34
-         %35 = OpLabel
-         %36 = OpFunctionCall %9 %subgroupMatrixMultiply_f51206
-         %37 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
-         %39 = OpAccessChain %_ptr_StorageBuffer_int %37 %uint_0
-               OpCooperativeMatrixStoreKHR %39 %36 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %35
+         %36 = OpLabel
+         %37 = OpFunctionCall %9 %subgroupMatrixMultiply_f51206
+         %38 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+         %40 = OpAccessChain %_ptr_StorageBuffer_int %38 %uint_0
+               OpCooperativeMatrixStoreKHR %40 %37 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiply/fa5318.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiply/fa5318.wgsl.expected.spvasm
index f0d4679..9548037 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiply/fa5318.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiply/fa5318.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 44
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,38 +39,40 @@
       %float = OpTypeFloat 32
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+    %float_0 = OpConstant %float 0
+         %15 = OpConstantComposite %16 %float_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
-         %22 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %21 = OpConstantNull %22
-%_ptr_Function_22 = OpTypePointer Function %22
-         %28 = OpConstantNull %9
+         %23 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+         %22 = OpConstantComposite %23 %float_0
+%_ptr_Function_23 = OpTypePointer Function %23
+      %int_0 = OpConstant %int 0
+         %29 = OpConstantComposite %9 %int_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %35 = OpTypeFunction %void
+         %37 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiply_fa5318 = OpFunction %9 None %13
          %14 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_16 Function
-      %arg_1 = OpVariable %_ptr_Function_22 Function
+      %arg_1 = OpVariable %_ptr_Function_23 Function
         %res = OpVariable %_ptr_Function_9 Function
                OpStore %arg_0 %15
-               OpStore %arg_1 %21
-         %26 = OpLoad %16 %arg_0 None
-         %27 = OpLoad %22 %arg_1 None
-         %29 = OpCooperativeMatrixMulAddKHR %9 %26 %27 %28 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
-               OpStore %res %29
-         %32 = OpLoad %9 %res None
-               OpReturnValue %32
+               OpStore %arg_1 %22
+         %27 = OpLoad %16 %arg_0 None
+         %28 = OpLoad %23 %arg_1 None
+         %31 = OpCooperativeMatrixMulAddKHR %9 %27 %28 %29 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
+               OpStore %res %31
+         %34 = OpLoad %9 %res None
+               OpReturnValue %34
                OpFunctionEnd
-%compute_main = OpFunction %void None %35
-         %36 = OpLabel
-         %37 = OpFunctionCall %9 %subgroupMatrixMultiply_fa5318
-         %38 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
-         %40 = OpAccessChain %_ptr_StorageBuffer_int %38 %uint_0
-               OpCooperativeMatrixStoreKHR %40 %37 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %37
+         %38 = OpLabel
+         %39 = OpFunctionCall %9 %subgroupMatrixMultiply_fa5318
+         %40 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+         %42 = OpAccessChain %_ptr_StorageBuffer_int %40 %uint_0
+               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/071472.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/071472.wgsl.expected.spvasm
index 472f1eb..4bd1220 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/071472.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/071472.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 46
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -43,41 +43,43 @@
        %half = OpTypeFloat 16
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %15 = OpConstantComposite %16 %half_0x0p_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
-         %22 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %21 = OpConstantNull %22
-%_ptr_Function_22 = OpTypePointer Function %22
-         %26 = OpConstantNull %9
+         %23 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+         %22 = OpConstantComposite %23 %half_0x0p_0
+%_ptr_Function_23 = OpTypePointer Function %23
+    %float_0 = OpConstant %float 0
+         %27 = OpConstantComposite %9 %float_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %37 = OpTypeFunction %void
+         %39 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_float_uint_1024 = OpTypePointer StorageBuffer %_arr_float_uint_1024
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_071472 = OpFunction %9 None %13
          %14 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_16 Function
-      %arg_1 = OpVariable %_ptr_Function_22 Function
+      %arg_1 = OpVariable %_ptr_Function_23 Function
       %arg_2 = OpVariable %_ptr_Function_9 Function
         %res = OpVariable %_ptr_Function_9 Function
                OpStore %arg_0 %15
-               OpStore %arg_1 %21
-               OpStore %arg_2 %26
-         %29 = OpLoad %16 %arg_0 None
-         %30 = OpLoad %22 %arg_1 None
-         %31 = OpLoad %9 %arg_2 None
-         %32 = OpCooperativeMatrixMulAddKHR %9 %29 %30 %31 NoneKHR
-               OpStore %res %32
-         %34 = OpLoad %9 %res None
-               OpReturnValue %34
+               OpStore %arg_1 %22
+               OpStore %arg_2 %27
+         %31 = OpLoad %16 %arg_0 None
+         %32 = OpLoad %23 %arg_1 None
+         %33 = OpLoad %9 %arg_2 None
+         %34 = OpCooperativeMatrixMulAddKHR %9 %31 %32 %33 NoneKHR
+               OpStore %res %34
+         %36 = OpLoad %9 %res None
+               OpReturnValue %36
                OpFunctionEnd
-%compute_main = OpFunction %void None %37
-         %38 = OpLabel
-         %39 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_071472
-         %40 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
-         %42 = OpAccessChain %_ptr_StorageBuffer_float %40 %uint_0
-               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %39
+         %40 = OpLabel
+         %41 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_071472
+         %42 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
+         %44 = OpAccessChain %_ptr_StorageBuffer_float %42 %uint_0
+               OpCooperativeMatrixStoreKHR %44 %41 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/075302.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/075302.wgsl.expected.spvasm
index 2ff1e1c..913cec2 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/075302.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/075302.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 45
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -42,16 +42,17 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+         %15 = OpConstantComposite %16 %uint_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
          %21 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %20 = OpConstantNull %21
+         %20 = OpConstantComposite %21 %uint_0
 %_ptr_Function_21 = OpTypePointer Function %21
-         %25 = OpConstantNull %9
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %25 = OpConstantComposite %9 %half_0x0p_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %36 = OpTypeFunction %void
+         %37 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_half_uint_1024 = OpTypePointer StorageBuffer %_arr_half_uint_1024
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
     %uint_64 = OpConstant %uint 64
@@ -64,19 +65,19 @@
                OpStore %arg_0 %15
                OpStore %arg_1 %20
                OpStore %arg_2 %25
-         %28 = OpLoad %16 %arg_0 None
-         %29 = OpLoad %21 %arg_1 None
-         %30 = OpLoad %9 %arg_2 None
-         %31 = OpCooperativeMatrixMulAddKHR %9 %28 %29 %30 NoneKHR
-               OpStore %res %31
-         %33 = OpLoad %9 %res None
-               OpReturnValue %33
+         %29 = OpLoad %16 %arg_0 None
+         %30 = OpLoad %21 %arg_1 None
+         %31 = OpLoad %9 %arg_2 None
+         %32 = OpCooperativeMatrixMulAddKHR %9 %29 %30 %31 NoneKHR
+               OpStore %res %32
+         %34 = OpLoad %9 %res None
+               OpReturnValue %34
                OpFunctionEnd
-%compute_main = OpFunction %void None %36
-         %37 = OpLabel
-         %38 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_075302
-         %39 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
-         %41 = OpAccessChain %_ptr_StorageBuffer_half %39 %uint_0
-               OpCooperativeMatrixStoreKHR %41 %38 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %37
+         %38 = OpLabel
+         %39 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_075302
+         %40 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
+         %42 = OpAccessChain %_ptr_StorageBuffer_half %40 %uint_0
+               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/12354d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/12354d.wgsl.expected.spvasm
index 084ef15..87708e4 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/12354d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/12354d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 45
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -42,41 +42,42 @@
        %half = OpTypeFloat 16
      %uint_0 = OpConstant %uint 0
          %15 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %14 = OpConstantComposite %15 %half_0x0p_0
 %_ptr_Function_15 = OpTypePointer Function %15
      %uint_1 = OpConstant %uint 1
-         %21 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %20 = OpConstantNull %21
-%_ptr_Function_21 = OpTypePointer Function %21
-         %25 = OpConstantNull %8
+         %22 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+         %21 = OpConstantComposite %22 %half_0x0p_0
+%_ptr_Function_22 = OpTypePointer Function %22
+         %26 = OpConstantComposite %8 %uint_0
 %_ptr_Function_8 = OpTypePointer Function %8
        %void = OpTypeVoid
-         %36 = OpTypeFunction %void
+         %37 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_12354d = OpFunction %8 None %12
          %13 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_15 Function
-      %arg_1 = OpVariable %_ptr_Function_21 Function
+      %arg_1 = OpVariable %_ptr_Function_22 Function
       %arg_2 = OpVariable %_ptr_Function_8 Function
         %res = OpVariable %_ptr_Function_8 Function
                OpStore %arg_0 %14
-               OpStore %arg_1 %20
-               OpStore %arg_2 %25
-         %28 = OpLoad %15 %arg_0 None
-         %29 = OpLoad %21 %arg_1 None
-         %30 = OpLoad %8 %arg_2 None
-         %31 = OpCooperativeMatrixMulAddKHR %8 %28 %29 %30 NoneKHR
-               OpStore %res %31
-         %33 = OpLoad %8 %res None
-               OpReturnValue %33
+               OpStore %arg_1 %21
+               OpStore %arg_2 %26
+         %29 = OpLoad %15 %arg_0 None
+         %30 = OpLoad %22 %arg_1 None
+         %31 = OpLoad %8 %arg_2 None
+         %32 = OpCooperativeMatrixMulAddKHR %8 %29 %30 %31 NoneKHR
+               OpStore %res %32
+         %34 = OpLoad %8 %res None
+               OpReturnValue %34
                OpFunctionEnd
-%compute_main = OpFunction %void None %36
-         %37 = OpLabel
-         %38 = OpFunctionCall %8 %subgroupMatrixMultiplyAccumulate_12354d
-         %39 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
-         %41 = OpAccessChain %_ptr_StorageBuffer_uint %39 %uint_0
-               OpCooperativeMatrixStoreKHR %41 %38 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %37
+         %38 = OpLabel
+         %39 = OpFunctionCall %8 %subgroupMatrixMultiplyAccumulate_12354d
+         %40 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+         %42 = OpAccessChain %_ptr_StorageBuffer_uint %40 %uint_0
+               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/163ab5.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/163ab5.wgsl.expected.spvasm
index 8423893..9ed94c6 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/163ab5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/163ab5.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 46
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -40,41 +40,43 @@
         %int = OpTypeInt 32 1
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+      %int_0 = OpConstant %int 0
+         %15 = OpConstantComposite %16 %int_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
-         %22 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %21 = OpConstantNull %22
-%_ptr_Function_22 = OpTypePointer Function %22
-         %26 = OpConstantNull %9
+         %23 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+         %22 = OpConstantComposite %23 %int_0
+%_ptr_Function_23 = OpTypePointer Function %23
+    %float_0 = OpConstant %float 0
+         %27 = OpConstantComposite %9 %float_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %37 = OpTypeFunction %void
+         %39 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_float_uint_1024 = OpTypePointer StorageBuffer %_arr_float_uint_1024
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_163ab5 = OpFunction %9 None %13
          %14 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_16 Function
-      %arg_1 = OpVariable %_ptr_Function_22 Function
+      %arg_1 = OpVariable %_ptr_Function_23 Function
       %arg_2 = OpVariable %_ptr_Function_9 Function
         %res = OpVariable %_ptr_Function_9 Function
                OpStore %arg_0 %15
-               OpStore %arg_1 %21
-               OpStore %arg_2 %26
-         %29 = OpLoad %16 %arg_0 None
-         %30 = OpLoad %22 %arg_1 None
-         %31 = OpLoad %9 %arg_2 None
-         %32 = OpCooperativeMatrixMulAddKHR %9 %29 %30 %31 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
-               OpStore %res %32
-         %34 = OpLoad %9 %res None
-               OpReturnValue %34
+               OpStore %arg_1 %22
+               OpStore %arg_2 %27
+         %31 = OpLoad %16 %arg_0 None
+         %32 = OpLoad %23 %arg_1 None
+         %33 = OpLoad %9 %arg_2 None
+         %34 = OpCooperativeMatrixMulAddKHR %9 %31 %32 %33 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
+               OpStore %res %34
+         %36 = OpLoad %9 %res None
+               OpReturnValue %36
                OpFunctionEnd
-%compute_main = OpFunction %void None %37
-         %38 = OpLabel
-         %39 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_163ab5
-         %40 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
-         %42 = OpAccessChain %_ptr_StorageBuffer_float %40 %uint_0
-               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %39
+         %40 = OpLabel
+         %41 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_163ab5
+         %42 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
+         %44 = OpAccessChain %_ptr_StorageBuffer_float %42 %uint_0
+               OpCooperativeMatrixStoreKHR %44 %41 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/3ea7db.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/3ea7db.wgsl.expected.spvasm
index 92c6b428..08d094e 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/3ea7db.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/3ea7db.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 46
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -43,41 +43,43 @@
        %half = OpTypeFloat 16
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %15 = OpConstantComposite %16 %half_0x0p_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
-         %22 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %21 = OpConstantNull %22
-%_ptr_Function_22 = OpTypePointer Function %22
-         %26 = OpConstantNull %9
+         %23 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+         %22 = OpConstantComposite %23 %half_0x0p_0
+%_ptr_Function_23 = OpTypePointer Function %23
+      %int_0 = OpConstant %int 0
+         %27 = OpConstantComposite %9 %int_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %37 = OpTypeFunction %void
+         %39 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_3ea7db = OpFunction %9 None %13
          %14 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_16 Function
-      %arg_1 = OpVariable %_ptr_Function_22 Function
+      %arg_1 = OpVariable %_ptr_Function_23 Function
       %arg_2 = OpVariable %_ptr_Function_9 Function
         %res = OpVariable %_ptr_Function_9 Function
                OpStore %arg_0 %15
-               OpStore %arg_1 %21
-               OpStore %arg_2 %26
-         %29 = OpLoad %16 %arg_0 None
-         %30 = OpLoad %22 %arg_1 None
-         %31 = OpLoad %9 %arg_2 None
-         %32 = OpCooperativeMatrixMulAddKHR %9 %29 %30 %31 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
-               OpStore %res %32
-         %34 = OpLoad %9 %res None
-               OpReturnValue %34
+               OpStore %arg_1 %22
+               OpStore %arg_2 %27
+         %31 = OpLoad %16 %arg_0 None
+         %32 = OpLoad %23 %arg_1 None
+         %33 = OpLoad %9 %arg_2 None
+         %34 = OpCooperativeMatrixMulAddKHR %9 %31 %32 %33 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
+               OpStore %res %34
+         %36 = OpLoad %9 %res None
+               OpReturnValue %36
                OpFunctionEnd
-%compute_main = OpFunction %void None %37
-         %38 = OpLabel
-         %39 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_3ea7db
-         %40 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
-         %42 = OpAccessChain %_ptr_StorageBuffer_int %40 %uint_0
-               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %39
+         %40 = OpLabel
+         %41 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_3ea7db
+         %42 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+         %44 = OpAccessChain %_ptr_StorageBuffer_int %42 %uint_0
+               OpCooperativeMatrixStoreKHR %44 %41 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/676ca8.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/676ca8.wgsl.expected.spvasm
index 525a1f6..ee17948 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/676ca8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/676ca8.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 45
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,16 +39,17 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+         %15 = OpConstantComposite %16 %uint_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
          %21 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %20 = OpConstantNull %21
+         %20 = OpConstantComposite %21 %uint_0
 %_ptr_Function_21 = OpTypePointer Function %21
-         %25 = OpConstantNull %9
+      %int_0 = OpConstant %int 0
+         %25 = OpConstantComposite %9 %int_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %36 = OpTypeFunction %void
+         %37 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
     %uint_64 = OpConstant %uint 64
@@ -61,19 +62,19 @@
                OpStore %arg_0 %15
                OpStore %arg_1 %20
                OpStore %arg_2 %25
-         %28 = OpLoad %16 %arg_0 None
-         %29 = OpLoad %21 %arg_1 None
-         %30 = OpLoad %9 %arg_2 None
-         %31 = OpCooperativeMatrixMulAddKHR %9 %28 %29 %30 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
-               OpStore %res %31
-         %33 = OpLoad %9 %res None
-               OpReturnValue %33
+         %29 = OpLoad %16 %arg_0 None
+         %30 = OpLoad %21 %arg_1 None
+         %31 = OpLoad %9 %arg_2 None
+         %32 = OpCooperativeMatrixMulAddKHR %9 %29 %30 %31 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
+               OpStore %res %32
+         %34 = OpLoad %9 %res None
+               OpReturnValue %34
                OpFunctionEnd
-%compute_main = OpFunction %void None %36
-         %37 = OpLabel
-         %38 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_676ca8
-         %39 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
-         %41 = OpAccessChain %_ptr_StorageBuffer_int %39 %uint_0
-               OpCooperativeMatrixStoreKHR %41 %38 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %37
+         %38 = OpLabel
+         %39 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_676ca8
+         %40 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+         %42 = OpAccessChain %_ptr_StorageBuffer_int %40 %uint_0
+               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/709578.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/709578.wgsl.expected.spvasm
index 0484af6..4952c5a 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/709578.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/709578.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 45
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,41 +39,42 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+      %int_0 = OpConstant %int 0
+         %15 = OpConstantComposite %16 %int_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
-         %21 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %20 = OpConstantNull %21
-%_ptr_Function_21 = OpTypePointer Function %21
-         %25 = OpConstantNull %9
+         %22 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+         %21 = OpConstantComposite %22 %int_0
+%_ptr_Function_22 = OpTypePointer Function %22
+         %26 = OpConstantComposite %9 %int_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %36 = OpTypeFunction %void
+         %37 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_709578 = OpFunction %9 None %13
          %14 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_16 Function
-      %arg_1 = OpVariable %_ptr_Function_21 Function
+      %arg_1 = OpVariable %_ptr_Function_22 Function
       %arg_2 = OpVariable %_ptr_Function_9 Function
         %res = OpVariable %_ptr_Function_9 Function
                OpStore %arg_0 %15
-               OpStore %arg_1 %20
-               OpStore %arg_2 %25
-         %28 = OpLoad %16 %arg_0 None
-         %29 = OpLoad %21 %arg_1 None
-         %30 = OpLoad %9 %arg_2 None
-         %31 = OpCooperativeMatrixMulAddKHR %9 %28 %29 %30 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR|MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
-               OpStore %res %31
-         %33 = OpLoad %9 %res None
-               OpReturnValue %33
+               OpStore %arg_1 %21
+               OpStore %arg_2 %26
+         %29 = OpLoad %16 %arg_0 None
+         %30 = OpLoad %22 %arg_1 None
+         %31 = OpLoad %9 %arg_2 None
+         %32 = OpCooperativeMatrixMulAddKHR %9 %29 %30 %31 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR|MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
+               OpStore %res %32
+         %34 = OpLoad %9 %res None
+               OpReturnValue %34
                OpFunctionEnd
-%compute_main = OpFunction %void None %36
-         %37 = OpLabel
-         %38 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_709578
-         %39 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
-         %41 = OpAccessChain %_ptr_StorageBuffer_int %39 %uint_0
-               OpCooperativeMatrixStoreKHR %41 %38 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %37
+         %38 = OpLabel
+         %39 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_709578
+         %40 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+         %42 = OpAccessChain %_ptr_StorageBuffer_int %40 %uint_0
+               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7ceae2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7ceae2.wgsl.expected.spvasm
index 8b4c848..638211f 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7ceae2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/7ceae2.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 46
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -43,41 +43,43 @@
         %int = OpTypeInt 32 1
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+      %int_0 = OpConstant %int 0
+         %15 = OpConstantComposite %16 %int_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
-         %22 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %21 = OpConstantNull %22
-%_ptr_Function_22 = OpTypePointer Function %22
-         %26 = OpConstantNull %9
+         %23 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+         %22 = OpConstantComposite %23 %int_0
+%_ptr_Function_23 = OpTypePointer Function %23
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %27 = OpConstantComposite %9 %half_0x0p_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %37 = OpTypeFunction %void
+         %39 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_half_uint_1024 = OpTypePointer StorageBuffer %_arr_half_uint_1024
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_7ceae2 = OpFunction %9 None %13
          %14 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_16 Function
-      %arg_1 = OpVariable %_ptr_Function_22 Function
+      %arg_1 = OpVariable %_ptr_Function_23 Function
       %arg_2 = OpVariable %_ptr_Function_9 Function
         %res = OpVariable %_ptr_Function_9 Function
                OpStore %arg_0 %15
-               OpStore %arg_1 %21
-               OpStore %arg_2 %26
-         %29 = OpLoad %16 %arg_0 None
-         %30 = OpLoad %22 %arg_1 None
-         %31 = OpLoad %9 %arg_2 None
-         %32 = OpCooperativeMatrixMulAddKHR %9 %29 %30 %31 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
-               OpStore %res %32
-         %34 = OpLoad %9 %res None
-               OpReturnValue %34
+               OpStore %arg_1 %22
+               OpStore %arg_2 %27
+         %31 = OpLoad %16 %arg_0 None
+         %32 = OpLoad %23 %arg_1 None
+         %33 = OpLoad %9 %arg_2 None
+         %34 = OpCooperativeMatrixMulAddKHR %9 %31 %32 %33 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
+               OpStore %res %34
+         %36 = OpLoad %9 %res None
+               OpReturnValue %36
                OpFunctionEnd
-%compute_main = OpFunction %void None %37
-         %38 = OpLabel
-         %39 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_7ceae2
-         %40 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
-         %42 = OpAccessChain %_ptr_StorageBuffer_half %40 %uint_0
-               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %39
+         %40 = OpLabel
+         %41 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_7ceae2
+         %42 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
+         %44 = OpAccessChain %_ptr_StorageBuffer_half %42 %uint_0
+               OpCooperativeMatrixStoreKHR %44 %41 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/877989.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/877989.wgsl.expected.spvasm
index dedc7ed1..ea34e6e 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/877989.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/877989.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 45
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,41 +39,42 @@
         %int = OpTypeInt 32 1
      %uint_0 = OpConstant %uint 0
          %15 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+      %int_0 = OpConstant %int 0
+         %14 = OpConstantComposite %15 %int_0
 %_ptr_Function_15 = OpTypePointer Function %15
      %uint_1 = OpConstant %uint 1
-         %21 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %20 = OpConstantNull %21
-%_ptr_Function_21 = OpTypePointer Function %21
-         %25 = OpConstantNull %8
+         %22 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
+         %21 = OpConstantComposite %22 %int_0
+%_ptr_Function_22 = OpTypePointer Function %22
+         %26 = OpConstantComposite %8 %uint_0
 %_ptr_Function_8 = OpTypePointer Function %8
        %void = OpTypeVoid
-         %36 = OpTypeFunction %void
+         %37 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_877989 = OpFunction %8 None %12
          %13 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_15 Function
-      %arg_1 = OpVariable %_ptr_Function_21 Function
+      %arg_1 = OpVariable %_ptr_Function_22 Function
       %arg_2 = OpVariable %_ptr_Function_8 Function
         %res = OpVariable %_ptr_Function_8 Function
                OpStore %arg_0 %14
-               OpStore %arg_1 %20
-               OpStore %arg_2 %25
-         %28 = OpLoad %15 %arg_0 None
-         %29 = OpLoad %21 %arg_1 None
-         %30 = OpLoad %8 %arg_2 None
-         %31 = OpCooperativeMatrixMulAddKHR %8 %28 %29 %30 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
-               OpStore %res %31
-         %33 = OpLoad %8 %res None
-               OpReturnValue %33
+               OpStore %arg_1 %21
+               OpStore %arg_2 %26
+         %29 = OpLoad %15 %arg_0 None
+         %30 = OpLoad %22 %arg_1 None
+         %31 = OpLoad %8 %arg_2 None
+         %32 = OpCooperativeMatrixMulAddKHR %8 %29 %30 %31 MatrixASignedComponentsKHR|MatrixBSignedComponentsKHR
+               OpStore %res %32
+         %34 = OpLoad %8 %res None
+               OpReturnValue %34
                OpFunctionEnd
-%compute_main = OpFunction %void None %36
-         %37 = OpLabel
-         %38 = OpFunctionCall %8 %subgroupMatrixMultiplyAccumulate_877989
-         %39 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
-         %41 = OpAccessChain %_ptr_StorageBuffer_uint %39 %uint_0
-               OpCooperativeMatrixStoreKHR %41 %38 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %37
+         %38 = OpLabel
+         %39 = OpFunctionCall %8 %subgroupMatrixMultiplyAccumulate_877989
+         %40 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+         %42 = OpAccessChain %_ptr_StorageBuffer_uint %40 %uint_0
+               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8b907c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8b907c.wgsl.expected.spvasm
index 2148625..0646fd5 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8b907c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/8b907c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 45
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -42,41 +42,42 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %15 = OpConstantComposite %16 %half_0x0p_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
-         %21 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %20 = OpConstantNull %21
-%_ptr_Function_21 = OpTypePointer Function %21
-         %25 = OpConstantNull %9
+         %22 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
+         %21 = OpConstantComposite %22 %half_0x0p_0
+%_ptr_Function_22 = OpTypePointer Function %22
+         %26 = OpConstantComposite %9 %half_0x0p_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %36 = OpTypeFunction %void
+         %37 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_half_uint_1024 = OpTypePointer StorageBuffer %_arr_half_uint_1024
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_8b907c = OpFunction %9 None %13
          %14 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_16 Function
-      %arg_1 = OpVariable %_ptr_Function_21 Function
+      %arg_1 = OpVariable %_ptr_Function_22 Function
       %arg_2 = OpVariable %_ptr_Function_9 Function
         %res = OpVariable %_ptr_Function_9 Function
                OpStore %arg_0 %15
-               OpStore %arg_1 %20
-               OpStore %arg_2 %25
-         %28 = OpLoad %16 %arg_0 None
-         %29 = OpLoad %21 %arg_1 None
-         %30 = OpLoad %9 %arg_2 None
-         %31 = OpCooperativeMatrixMulAddKHR %9 %28 %29 %30 NoneKHR
-               OpStore %res %31
-         %33 = OpLoad %9 %res None
-               OpReturnValue %33
+               OpStore %arg_1 %21
+               OpStore %arg_2 %26
+         %29 = OpLoad %16 %arg_0 None
+         %30 = OpLoad %22 %arg_1 None
+         %31 = OpLoad %9 %arg_2 None
+         %32 = OpCooperativeMatrixMulAddKHR %9 %29 %30 %31 NoneKHR
+               OpStore %res %32
+         %34 = OpLoad %9 %res None
+               OpReturnValue %34
                OpFunctionEnd
-%compute_main = OpFunction %void None %36
-         %37 = OpLabel
-         %38 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_8b907c
-         %39 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
-         %41 = OpAccessChain %_ptr_StorageBuffer_half %39 %uint_0
-               OpCooperativeMatrixStoreKHR %41 %38 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %37
+         %38 = OpLabel
+         %39 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_8b907c
+         %40 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
+         %42 = OpAccessChain %_ptr_StorageBuffer_half %40 %uint_0
+               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/9ad4f5.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/9ad4f5.wgsl.expected.spvasm
index 91b1939..7cfe5c3 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/9ad4f5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/9ad4f5.wgsl.expected.spvasm
@@ -38,13 +38,13 @@
          %12 = OpTypeFunction %8
      %uint_0 = OpConstant %uint 0
          %15 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+         %14 = OpConstantComposite %15 %uint_0
 %_ptr_Function_15 = OpTypePointer Function %15
      %uint_1 = OpConstant %uint 1
          %20 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %19 = OpConstantNull %20
+         %19 = OpConstantComposite %20 %uint_0
 %_ptr_Function_20 = OpTypePointer Function %20
-         %24 = OpConstantNull %8
+         %24 = OpConstantComposite %8 %uint_0
 %_ptr_Function_8 = OpTypePointer Function %8
        %void = OpTypeVoid
          %35 = OpTypeFunction %void
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c4062a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c4062a.wgsl.expected.spvasm
index 1f925ac..0f7e453 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c4062a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/c4062a.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 46
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -43,41 +43,43 @@
       %float = OpTypeFloat 32
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+    %float_0 = OpConstant %float 0
+         %15 = OpConstantComposite %16 %float_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
-         %22 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %21 = OpConstantNull %22
-%_ptr_Function_22 = OpTypePointer Function %22
-         %26 = OpConstantNull %9
+         %23 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+         %22 = OpConstantComposite %23 %float_0
+%_ptr_Function_23 = OpTypePointer Function %23
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %27 = OpConstantComposite %9 %half_0x0p_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %37 = OpTypeFunction %void
+         %39 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_half_uint_1024 = OpTypePointer StorageBuffer %_arr_half_uint_1024
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_c4062a = OpFunction %9 None %13
          %14 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_16 Function
-      %arg_1 = OpVariable %_ptr_Function_22 Function
+      %arg_1 = OpVariable %_ptr_Function_23 Function
       %arg_2 = OpVariable %_ptr_Function_9 Function
         %res = OpVariable %_ptr_Function_9 Function
                OpStore %arg_0 %15
-               OpStore %arg_1 %21
-               OpStore %arg_2 %26
-         %29 = OpLoad %16 %arg_0 None
-         %30 = OpLoad %22 %arg_1 None
-         %31 = OpLoad %9 %arg_2 None
-         %32 = OpCooperativeMatrixMulAddKHR %9 %29 %30 %31 NoneKHR
-               OpStore %res %32
-         %34 = OpLoad %9 %res None
-               OpReturnValue %34
+               OpStore %arg_1 %22
+               OpStore %arg_2 %27
+         %31 = OpLoad %16 %arg_0 None
+         %32 = OpLoad %23 %arg_1 None
+         %33 = OpLoad %9 %arg_2 None
+         %34 = OpCooperativeMatrixMulAddKHR %9 %31 %32 %33 NoneKHR
+               OpStore %res %34
+         %36 = OpLoad %9 %res None
+               OpReturnValue %36
                OpFunctionEnd
-%compute_main = OpFunction %void None %37
-         %38 = OpLabel
-         %39 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_c4062a
-         %40 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
-         %42 = OpAccessChain %_ptr_StorageBuffer_half %40 %uint_0
-               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %39
+         %40 = OpLabel
+         %41 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_c4062a
+         %42 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_1024 %1 %uint_0
+         %44 = OpAccessChain %_ptr_StorageBuffer_half %42 %uint_0
+               OpCooperativeMatrixStoreKHR %44 %41 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/db91bf.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/db91bf.wgsl.expected.spvasm
index 73b7867..d82a388 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/db91bf.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/db91bf.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 45
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,41 +39,42 @@
       %float = OpTypeFloat 32
      %uint_0 = OpConstant %uint 0
          %15 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+    %float_0 = OpConstant %float 0
+         %14 = OpConstantComposite %15 %float_0
 %_ptr_Function_15 = OpTypePointer Function %15
      %uint_1 = OpConstant %uint 1
-         %21 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %20 = OpConstantNull %21
-%_ptr_Function_21 = OpTypePointer Function %21
-         %25 = OpConstantNull %8
+         %22 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+         %21 = OpConstantComposite %22 %float_0
+%_ptr_Function_22 = OpTypePointer Function %22
+         %26 = OpConstantComposite %8 %uint_0
 %_ptr_Function_8 = OpTypePointer Function %8
        %void = OpTypeVoid
-         %36 = OpTypeFunction %void
+         %37 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_uint_uint_1024 = OpTypePointer StorageBuffer %_arr_uint_uint_1024
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_db91bf = OpFunction %8 None %12
          %13 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_15 Function
-      %arg_1 = OpVariable %_ptr_Function_21 Function
+      %arg_1 = OpVariable %_ptr_Function_22 Function
       %arg_2 = OpVariable %_ptr_Function_8 Function
         %res = OpVariable %_ptr_Function_8 Function
                OpStore %arg_0 %14
-               OpStore %arg_1 %20
-               OpStore %arg_2 %25
-         %28 = OpLoad %15 %arg_0 None
-         %29 = OpLoad %21 %arg_1 None
-         %30 = OpLoad %8 %arg_2 None
-         %31 = OpCooperativeMatrixMulAddKHR %8 %28 %29 %30 NoneKHR
-               OpStore %res %31
-         %33 = OpLoad %8 %res None
-               OpReturnValue %33
+               OpStore %arg_1 %21
+               OpStore %arg_2 %26
+         %29 = OpLoad %15 %arg_0 None
+         %30 = OpLoad %22 %arg_1 None
+         %31 = OpLoad %8 %arg_2 None
+         %32 = OpCooperativeMatrixMulAddKHR %8 %29 %30 %31 NoneKHR
+               OpStore %res %32
+         %34 = OpLoad %8 %res None
+               OpReturnValue %34
                OpFunctionEnd
-%compute_main = OpFunction %void None %36
-         %37 = OpLabel
-         %38 = OpFunctionCall %8 %subgroupMatrixMultiplyAccumulate_db91bf
-         %39 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
-         %41 = OpAccessChain %_ptr_StorageBuffer_uint %39 %uint_0
-               OpCooperativeMatrixStoreKHR %41 %38 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %37
+         %38 = OpLabel
+         %39 = OpFunctionCall %8 %subgroupMatrixMultiplyAccumulate_db91bf
+         %40 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_1024 %1 %uint_0
+         %42 = OpAccessChain %_ptr_StorageBuffer_uint %40 %uint_0
+               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e27d24.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e27d24.wgsl.expected.spvasm
index d492670..428fd90 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e27d24.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e27d24.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 46
+; Bound: 48
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -40,41 +40,43 @@
       %float = OpTypeFloat 32
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+    %float_0 = OpConstant %float 0
+         %15 = OpConstantComposite %16 %float_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
-         %22 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %21 = OpConstantNull %22
-%_ptr_Function_22 = OpTypePointer Function %22
-         %26 = OpConstantNull %9
+         %23 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+         %22 = OpConstantComposite %23 %float_0
+%_ptr_Function_23 = OpTypePointer Function %23
+      %int_0 = OpConstant %int 0
+         %27 = OpConstantComposite %9 %int_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %37 = OpTypeFunction %void
+         %39 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_int_uint_1024 = OpTypePointer StorageBuffer %_arr_int_uint_1024
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_e27d24 = OpFunction %9 None %13
          %14 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_16 Function
-      %arg_1 = OpVariable %_ptr_Function_22 Function
+      %arg_1 = OpVariable %_ptr_Function_23 Function
       %arg_2 = OpVariable %_ptr_Function_9 Function
         %res = OpVariable %_ptr_Function_9 Function
                OpStore %arg_0 %15
-               OpStore %arg_1 %21
-               OpStore %arg_2 %26
-         %29 = OpLoad %16 %arg_0 None
-         %30 = OpLoad %22 %arg_1 None
-         %31 = OpLoad %9 %arg_2 None
-         %32 = OpCooperativeMatrixMulAddKHR %9 %29 %30 %31 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
-               OpStore %res %32
-         %34 = OpLoad %9 %res None
-               OpReturnValue %34
+               OpStore %arg_1 %22
+               OpStore %arg_2 %27
+         %31 = OpLoad %16 %arg_0 None
+         %32 = OpLoad %23 %arg_1 None
+         %33 = OpLoad %9 %arg_2 None
+         %34 = OpCooperativeMatrixMulAddKHR %9 %31 %32 %33 MatrixCSignedComponentsKHR|MatrixResultSignedComponentsKHR
+               OpStore %res %34
+         %36 = OpLoad %9 %res None
+               OpReturnValue %36
                OpFunctionEnd
-%compute_main = OpFunction %void None %37
-         %38 = OpLabel
-         %39 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_e27d24
-         %40 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
-         %42 = OpAccessChain %_ptr_StorageBuffer_int %40 %uint_0
-               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %39
+         %40 = OpLabel
+         %41 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_e27d24
+         %42 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_1024 %1 %uint_0
+         %44 = OpAccessChain %_ptr_StorageBuffer_int %42 %uint_0
+               OpCooperativeMatrixStoreKHR %44 %41 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e49afd.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e49afd.wgsl.expected.spvasm
index 921a175..05f22f9 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e49afd.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e49afd.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 45
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,16 +39,17 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+         %15 = OpConstantComposite %16 %uint_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
          %21 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %20 = OpConstantNull %21
+         %20 = OpConstantComposite %21 %uint_0
 %_ptr_Function_21 = OpTypePointer Function %21
-         %25 = OpConstantNull %9
+    %float_0 = OpConstant %float 0
+         %25 = OpConstantComposite %9 %float_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %36 = OpTypeFunction %void
+         %37 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_float_uint_1024 = OpTypePointer StorageBuffer %_arr_float_uint_1024
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
     %uint_64 = OpConstant %uint 64
@@ -61,19 +62,19 @@
                OpStore %arg_0 %15
                OpStore %arg_1 %20
                OpStore %arg_2 %25
-         %28 = OpLoad %16 %arg_0 None
-         %29 = OpLoad %21 %arg_1 None
-         %30 = OpLoad %9 %arg_2 None
-         %31 = OpCooperativeMatrixMulAddKHR %9 %28 %29 %30 NoneKHR
-               OpStore %res %31
-         %33 = OpLoad %9 %res None
-               OpReturnValue %33
+         %29 = OpLoad %16 %arg_0 None
+         %30 = OpLoad %21 %arg_1 None
+         %31 = OpLoad %9 %arg_2 None
+         %32 = OpCooperativeMatrixMulAddKHR %9 %29 %30 %31 NoneKHR
+               OpStore %res %32
+         %34 = OpLoad %9 %res None
+               OpReturnValue %34
                OpFunctionEnd
-%compute_main = OpFunction %void None %36
-         %37 = OpLabel
-         %38 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_e49afd
-         %39 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
-         %41 = OpAccessChain %_ptr_StorageBuffer_float %39 %uint_0
-               OpCooperativeMatrixStoreKHR %41 %38 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %37
+         %38 = OpLabel
+         %39 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_e49afd
+         %40 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
+         %42 = OpAccessChain %_ptr_StorageBuffer_float %40 %uint_0
+               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e7fb3c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e7fb3c.wgsl.expected.spvasm
index db0c397..16eb5a7 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e7fb3c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixMultiplyAccumulate/e7fb3c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 45
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,41 +39,42 @@
          %13 = OpTypeFunction %9
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+    %float_0 = OpConstant %float 0
+         %15 = OpConstantComposite %16 %float_0
 %_ptr_Function_16 = OpTypePointer Function %16
      %uint_1 = OpConstant %uint 1
-         %21 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %20 = OpConstantNull %21
-%_ptr_Function_21 = OpTypePointer Function %21
-         %25 = OpConstantNull %9
+         %22 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
+         %21 = OpConstantComposite %22 %float_0
+%_ptr_Function_22 = OpTypePointer Function %22
+         %26 = OpConstantComposite %9 %float_0
 %_ptr_Function_9 = OpTypePointer Function %9
        %void = OpTypeVoid
-         %36 = OpTypeFunction %void
+         %37 = OpTypeFunction %void
 %_ptr_StorageBuffer__arr_float_uint_1024 = OpTypePointer StorageBuffer %_arr_float_uint_1024
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
     %uint_64 = OpConstant %uint 64
 %subgroupMatrixMultiplyAccumulate_e7fb3c = OpFunction %9 None %13
          %14 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_16 Function
-      %arg_1 = OpVariable %_ptr_Function_21 Function
+      %arg_1 = OpVariable %_ptr_Function_22 Function
       %arg_2 = OpVariable %_ptr_Function_9 Function
         %res = OpVariable %_ptr_Function_9 Function
                OpStore %arg_0 %15
-               OpStore %arg_1 %20
-               OpStore %arg_2 %25
-         %28 = OpLoad %16 %arg_0 None
-         %29 = OpLoad %21 %arg_1 None
-         %30 = OpLoad %9 %arg_2 None
-         %31 = OpCooperativeMatrixMulAddKHR %9 %28 %29 %30 NoneKHR
-               OpStore %res %31
-         %33 = OpLoad %9 %res None
-               OpReturnValue %33
+               OpStore %arg_1 %21
+               OpStore %arg_2 %26
+         %29 = OpLoad %16 %arg_0 None
+         %30 = OpLoad %22 %arg_1 None
+         %31 = OpLoad %9 %arg_2 None
+         %32 = OpCooperativeMatrixMulAddKHR %9 %29 %30 %31 NoneKHR
+               OpStore %res %32
+         %34 = OpLoad %9 %res None
+               OpReturnValue %34
                OpFunctionEnd
-%compute_main = OpFunction %void None %36
-         %37 = OpLabel
-         %38 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_e7fb3c
-         %39 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
-         %41 = OpAccessChain %_ptr_StorageBuffer_float %39 %uint_0
-               OpCooperativeMatrixStoreKHR %41 %38 %uint_0 %uint_64 NonPrivatePointer
+%compute_main = OpFunction %void None %37
+         %38 = OpLabel
+         %39 = OpFunctionCall %9 %subgroupMatrixMultiplyAccumulate_e7fb3c
+         %40 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_1024 %1 %uint_0
+         %42 = OpAccessChain %_ptr_StorageBuffer_float %40 %uint_0
+               OpCooperativeMatrixStoreKHR %42 %39 %uint_0 %uint_64 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/0522d1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/0522d1.wgsl.expected.spvasm
index 8191d23..aa8f84c 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/0522d1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/0522d1.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 35
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -46,7 +46,8 @@
      %uint_8 = OpConstant %uint 8
      %uint_0 = OpConstant %uint 0
          %17 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %16 = OpConstantNull %17
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %16 = OpConstantComposite %17 %half_0x0p_0
 %_ptr_Function_17 = OpTypePointer Function %17
 %_ptr_StorageBuffer__arr_half_uint_64 = OpTypePointer StorageBuffer %_arr_half_uint_64
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
@@ -58,16 +59,16 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %16
                OpStore %arg_4 %uint_1
-         %24 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_64 %1 %uint_0 %uint_0
-         %26 = OpLoad %uint %arg_1 None
-         %27 = OpLoad %17 %arg_2 None
-         %28 = OpLoad %uint %arg_4 None
-         %29 = OpAccessChain %_ptr_StorageBuffer_half %24 %26
-               OpCooperativeMatrixStoreKHR %29 %27 %uint_1 %28 NonPrivatePointer
+         %25 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_64 %1 %uint_0 %uint_0
+         %27 = OpLoad %uint %arg_1 None
+         %28 = OpLoad %17 %arg_2 None
+         %29 = OpLoad %uint %arg_4 None
+         %30 = OpAccessChain %_ptr_StorageBuffer_half %25 %27
+               OpCooperativeMatrixStoreKHR %30 %28 %uint_1 %29 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %11
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %subgroupMatrixStore_0522d1
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %subgroupMatrixStore_0522d1
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/127fb7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/127fb7.wgsl.expected.spvasm
index 7ce195d..e2def42 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/127fb7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/127fb7.wgsl.expected.spvasm
@@ -41,12 +41,12 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %17 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_2
-         %16 = OpConstantNull %17
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %16 = OpConstantComposite %17 %half_0x0p_0
 %_ptr_Function_17 = OpTypePointer Function %17
 %_ptr_Workgroup_half = OpTypePointer Workgroup %half
-         %32 = OpTypeFunction %void %uint
+         %33 = OpTypeFunction %void %uint
        %bool = OpTypeBool
-%half_0x0p_0 = OpConstant %half 0x0p+0
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_127fb7 = OpFunction %void None %11
          %12 = OpLabel
@@ -56,37 +56,37 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %16
                OpStore %arg_4 %uint_1
-         %24 = OpLoad %uint %arg_1 None
-         %25 = OpLoad %17 %arg_2 None
-         %26 = OpLoad %uint %arg_4 None
-         %27 = OpAccessChain %_ptr_Workgroup_half %arg_0 %24
-               OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
+         %25 = OpLoad %uint %arg_1 None
+         %26 = OpLoad %17 %arg_2 None
+         %27 = OpLoad %uint %arg_4 None
+         %28 = OpAccessChain %_ptr_Workgroup_half %arg_0 %25
+               OpCooperativeMatrixStoreKHR %28 %26 %uint_1 %27 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %32
+%compute_main_inner = OpFunction %void None %33
 %tint_local_index = OpFunctionParameter %uint
-         %33 = OpLabel
-               OpBranch %34
          %34 = OpLabel
-               OpBranch %37
-         %37 = OpLabel
-         %39 = OpPhi %uint %tint_local_index %34 %40 %36
-               OpLoopMerge %38 %36 None
                OpBranch %35
          %35 = OpLabel
-         %41 = OpUGreaterThanEqual %bool %39 %uint_64
-               OpSelectionMerge %43 None
-               OpBranchConditional %41 %44 %43
-         %44 = OpLabel
                OpBranch %38
-         %43 = OpLabel
-         %45 = OpAccessChain %_ptr_Workgroup_half %arg_0 %39
-               OpStore %45 %half_0x0p_0 NonPrivatePointer
+         %38 = OpLabel
+         %40 = OpPhi %uint %tint_local_index %35 %41 %37
+               OpLoopMerge %39 %37 None
                OpBranch %36
          %36 = OpLabel
-         %40 = OpIAdd %uint %39 %uint_1
+         %42 = OpUGreaterThanEqual %bool %40 %uint_64
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %44
+         %45 = OpLabel
+               OpBranch %39
+         %44 = OpLabel
+         %46 = OpAccessChain %_ptr_Workgroup_half %arg_0 %40
+               OpStore %46 %half_0x0p_0 NonPrivatePointer
                OpBranch %37
-         %38 = OpLabel
+         %37 = OpLabel
+         %41 = OpIAdd %uint %40 %uint_1
+               OpBranch %38
+         %39 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %49 = OpFunctionCall %void %subgroupMatrixStore_127fb7
                OpReturn
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/1466ba.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/1466ba.wgsl.expected.spvasm
index 7611a32..917a837 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/1466ba.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/1466ba.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 36
+; Bound: 37
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -46,7 +46,8 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %17 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_2
-         %16 = OpConstantNull %17
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %16 = OpConstantComposite %17 %half_0x0p_0
 %_ptr_Function_17 = OpTypePointer Function %17
 %_ptr_StorageBuffer__arr_half_uint_64 = OpTypePointer StorageBuffer %_arr_half_uint_64
      %uint_0 = OpConstant %uint 0
@@ -59,16 +60,16 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %16
                OpStore %arg_4 %uint_1
-         %24 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_64 %1 %uint_0 %uint_0
-         %27 = OpLoad %uint %arg_1 None
-         %28 = OpLoad %17 %arg_2 None
-         %29 = OpLoad %uint %arg_4 None
-         %30 = OpAccessChain %_ptr_StorageBuffer_half %24 %27
-               OpCooperativeMatrixStoreKHR %30 %28 %uint_1 %29 NonPrivatePointer
+         %25 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_64 %1 %uint_0 %uint_0
+         %28 = OpLoad %uint %arg_1 None
+         %29 = OpLoad %17 %arg_2 None
+         %30 = OpLoad %uint %arg_4 None
+         %31 = OpAccessChain %_ptr_StorageBuffer_half %25 %28
+               OpCooperativeMatrixStoreKHR %31 %29 %uint_1 %30 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %11
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %subgroupMatrixStore_1466ba
+         %35 = OpLabel
+         %36 = OpFunctionCall %void %subgroupMatrixStore_1466ba
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/184580.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/184580.wgsl.expected.spvasm
index 2936dfa..c33316c 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/184580.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/184580.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 35
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -42,7 +42,8 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %17 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %16 = OpConstantNull %17
+      %int_0 = OpConstant %int 0
+         %16 = OpConstantComposite %17 %int_0
 %_ptr_Function_17 = OpTypePointer Function %17
 %_ptr_StorageBuffer__arr_int_uint_64 = OpTypePointer StorageBuffer %_arr_int_uint_64
      %uint_0 = OpConstant %uint 0
@@ -55,16 +56,16 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %16
                OpStore %arg_4 %uint_1
-         %23 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_64 %1 %uint_0 %uint_0
-         %26 = OpLoad %uint %arg_1 None
-         %27 = OpLoad %17 %arg_2 None
-         %28 = OpLoad %uint %arg_4 None
-         %29 = OpAccessChain %_ptr_StorageBuffer_int %23 %26
-               OpCooperativeMatrixStoreKHR %29 %27 %uint_1 %28 NonPrivatePointer
+         %24 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_64 %1 %uint_0 %uint_0
+         %27 = OpLoad %uint %arg_1 None
+         %28 = OpLoad %17 %arg_2 None
+         %29 = OpLoad %uint %arg_4 None
+         %30 = OpAccessChain %_ptr_StorageBuffer_int %24 %27
+               OpCooperativeMatrixStoreKHR %30 %28 %uint_1 %29 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %11
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %subgroupMatrixStore_184580
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %subgroupMatrixStore_184580
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/197435.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/197435.wgsl.expected.spvasm
index 849152d..2d2158a 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/197435.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/197435.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 35
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -43,7 +43,8 @@
      %uint_8 = OpConstant %uint 8
      %uint_0 = OpConstant %uint 0
          %17 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %16 = OpConstantNull %17
+    %float_0 = OpConstant %float 0
+         %16 = OpConstantComposite %17 %float_0
 %_ptr_Function_17 = OpTypePointer Function %17
 %_ptr_StorageBuffer__arr_float_uint_64 = OpTypePointer StorageBuffer %_arr_float_uint_64
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
@@ -55,16 +56,16 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %16
                OpStore %arg_4 %uint_1
-         %24 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_64 %1 %uint_0 %uint_0
-         %26 = OpLoad %uint %arg_1 None
-         %27 = OpLoad %17 %arg_2 None
-         %28 = OpLoad %uint %arg_4 None
-         %29 = OpAccessChain %_ptr_StorageBuffer_float %24 %26
-               OpCooperativeMatrixStoreKHR %29 %27 %uint_1 %28 NonPrivatePointer
+         %25 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_64 %1 %uint_0 %uint_0
+         %27 = OpLoad %uint %arg_1 None
+         %28 = OpLoad %17 %arg_2 None
+         %29 = OpLoad %uint %arg_4 None
+         %30 = OpAccessChain %_ptr_StorageBuffer_float %25 %27
+               OpCooperativeMatrixStoreKHR %30 %28 %uint_1 %29 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %11
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %subgroupMatrixStore_197435
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %subgroupMatrixStore_197435
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/2d78d3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/2d78d3.wgsl.expected.spvasm
index bfc113e..d629320 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/2d78d3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/2d78d3.wgsl.expected.spvasm
@@ -37,10 +37,10 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %14 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %13 = OpConstantNull %14
+     %uint_0 = OpConstant %uint 0
+         %13 = OpConstantComposite %14 %uint_0
 %_ptr_Function_14 = OpTypePointer Function %14
 %_ptr_StorageBuffer__runtimearr_uint = OpTypePointer StorageBuffer %_runtimearr_uint
-     %uint_0 = OpConstant %uint 0
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
 %subgroupMatrixStore_2d78d3 = OpFunction %void None %8
           %9 = OpLabel
@@ -50,11 +50,11 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %13
                OpStore %arg_4 %uint_1
-         %20 = OpAccessChain %_ptr_StorageBuffer__runtimearr_uint %sb_rw %uint_0
+         %21 = OpAccessChain %_ptr_StorageBuffer__runtimearr_uint %sb_rw %uint_0
          %23 = OpLoad %uint %arg_1 None
          %24 = OpLoad %14 %arg_2 None
          %25 = OpLoad %uint %arg_4 None
-         %26 = OpAccessChain %_ptr_StorageBuffer_uint %20 %23
+         %26 = OpAccessChain %_ptr_StorageBuffer_uint %21 %23
                OpCooperativeMatrixStoreKHR %26 %24 %uint_1 %25 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/2de0b1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/2de0b1.wgsl.expected.spvasm
index 89118ac..92ad0d3 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/2de0b1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/2de0b1.wgsl.expected.spvasm
@@ -36,12 +36,12 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %15 = OpConstantNull %16
+     %uint_0 = OpConstant %uint 0
+         %15 = OpConstantComposite %16 %uint_0
 %_ptr_Function_16 = OpTypePointer Function %16
 %_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
-         %30 = OpTypeFunction %void %uint
+         %31 = OpTypeFunction %void %uint
        %bool = OpTypeBool
-     %uint_0 = OpConstant %uint 0
      %uint_2 = OpConstant %uint 2
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_2de0b1 = OpFunction %void None %10
@@ -52,37 +52,37 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %15
                OpStore %arg_4 %uint_1
-         %22 = OpLoad %uint %arg_1 None
-         %23 = OpLoad %16 %arg_2 None
-         %24 = OpLoad %uint %arg_4 None
-         %25 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %22
-               OpCooperativeMatrixStoreKHR %25 %23 %uint_1 %24 NonPrivatePointer
+         %23 = OpLoad %uint %arg_1 None
+         %24 = OpLoad %16 %arg_2 None
+         %25 = OpLoad %uint %arg_4 None
+         %26 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %23
+               OpCooperativeMatrixStoreKHR %26 %24 %uint_1 %25 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %30
+%compute_main_inner = OpFunction %void None %31
 %tint_local_index = OpFunctionParameter %uint
-         %31 = OpLabel
-               OpBranch %32
          %32 = OpLabel
-               OpBranch %35
-         %35 = OpLabel
-         %37 = OpPhi %uint %tint_local_index %32 %38 %34
-               OpLoopMerge %36 %34 None
                OpBranch %33
          %33 = OpLabel
-         %39 = OpUGreaterThanEqual %bool %37 %uint_64
-               OpSelectionMerge %41 None
-               OpBranchConditional %39 %42 %41
-         %42 = OpLabel
                OpBranch %36
-         %41 = OpLabel
-         %43 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %37
-               OpStore %43 %uint_0 NonPrivatePointer
+         %36 = OpLabel
+         %38 = OpPhi %uint %tint_local_index %33 %39 %35
+               OpLoopMerge %37 %35 None
                OpBranch %34
          %34 = OpLabel
-         %38 = OpIAdd %uint %37 %uint_1
+         %40 = OpUGreaterThanEqual %bool %38 %uint_64
+               OpSelectionMerge %42 None
+               OpBranchConditional %40 %43 %42
+         %43 = OpLabel
+               OpBranch %37
+         %42 = OpLabel
+         %44 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %38
+               OpStore %44 %uint_0 NonPrivatePointer
                OpBranch %35
-         %36 = OpLabel
+         %35 = OpLabel
+         %39 = OpIAdd %uint %38 %uint_1
+               OpBranch %36
+         %37 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %48 = OpFunctionCall %void %subgroupMatrixStore_2de0b1
                OpReturn
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/3ea76e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/3ea76e.wgsl.expected.spvasm
index 467730a..1043452 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/3ea76e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/3ea76e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,7 +39,8 @@
      %uint_8 = OpConstant %uint 8
      %uint_0 = OpConstant %uint 0
          %15 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+      %int_0 = OpConstant %int 0
+         %14 = OpConstantComposite %15 %int_0
 %_ptr_Function_15 = OpTypePointer Function %15
 %_ptr_StorageBuffer__runtimearr_int = OpTypePointer StorageBuffer %_runtimearr_int
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
@@ -51,16 +52,16 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %14
                OpStore %arg_4 %uint_1
-         %22 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_rw %uint_0
-         %24 = OpLoad %uint %arg_1 None
-         %25 = OpLoad %15 %arg_2 None
-         %26 = OpLoad %uint %arg_4 None
-         %27 = OpAccessChain %_ptr_StorageBuffer_int %22 %24
-               OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
+         %23 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_rw %uint_0
+         %25 = OpLoad %uint %arg_1 None
+         %26 = OpLoad %15 %arg_2 None
+         %27 = OpLoad %uint %arg_4 None
+         %28 = OpAccessChain %_ptr_StorageBuffer_int %23 %25
+               OpCooperativeMatrixStoreKHR %28 %26 %uint_1 %27 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %8
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %subgroupMatrixStore_3ea76e
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %subgroupMatrixStore_3ea76e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/3fcc0f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/3fcc0f.wgsl.expected.spvasm
index 0bc70d2..2dbd74a 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/3fcc0f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/3fcc0f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 35
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -42,7 +42,8 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %17 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %16 = OpConstantNull %17
+    %float_0 = OpConstant %float 0
+         %16 = OpConstantComposite %17 %float_0
 %_ptr_Function_17 = OpTypePointer Function %17
 %_ptr_StorageBuffer__arr_float_uint_64 = OpTypePointer StorageBuffer %_arr_float_uint_64
      %uint_0 = OpConstant %uint 0
@@ -55,16 +56,16 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %16
                OpStore %arg_4 %uint_1
-         %23 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_64 %1 %uint_0 %uint_0
-         %26 = OpLoad %uint %arg_1 None
-         %27 = OpLoad %17 %arg_2 None
-         %28 = OpLoad %uint %arg_4 None
-         %29 = OpAccessChain %_ptr_StorageBuffer_float %23 %26
-               OpCooperativeMatrixStoreKHR %29 %27 %uint_1 %28 NonPrivatePointer
+         %24 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_64 %1 %uint_0 %uint_0
+         %27 = OpLoad %uint %arg_1 None
+         %28 = OpLoad %17 %arg_2 None
+         %29 = OpLoad %uint %arg_4 None
+         %30 = OpAccessChain %_ptr_StorageBuffer_float %24 %27
+               OpCooperativeMatrixStoreKHR %30 %28 %uint_1 %29 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %11
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %subgroupMatrixStore_3fcc0f
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %subgroupMatrixStore_3fcc0f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/476cdf.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/476cdf.wgsl.expected.spvasm
index 0c25a83..4a6b878 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/476cdf.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/476cdf.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 34
+; Bound: 35
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,7 +39,8 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %15 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_2
-         %14 = OpConstantNull %15
+      %int_0 = OpConstant %int 0
+         %14 = OpConstantComposite %15 %int_0
 %_ptr_Function_15 = OpTypePointer Function %15
 %_ptr_StorageBuffer__runtimearr_int = OpTypePointer StorageBuffer %_runtimearr_int
      %uint_0 = OpConstant %uint 0
@@ -52,16 +53,16 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %14
                OpStore %arg_4 %uint_1
-         %22 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_rw %uint_0
-         %25 = OpLoad %uint %arg_1 None
-         %26 = OpLoad %15 %arg_2 None
-         %27 = OpLoad %uint %arg_4 None
-         %28 = OpAccessChain %_ptr_StorageBuffer_int %22 %25
-               OpCooperativeMatrixStoreKHR %28 %26 %uint_1 %27 NonPrivatePointer
+         %23 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_rw %uint_0
+         %26 = OpLoad %uint %arg_1 None
+         %27 = OpLoad %15 %arg_2 None
+         %28 = OpLoad %uint %arg_4 None
+         %29 = OpAccessChain %_ptr_StorageBuffer_int %23 %26
+               OpCooperativeMatrixStoreKHR %29 %27 %uint_1 %28 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %8
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %subgroupMatrixStore_476cdf
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %subgroupMatrixStore_476cdf
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/49b25b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/49b25b.wgsl.expected.spvasm
index f73e899..aea19f8 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/49b25b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/49b25b.wgsl.expected.spvasm
@@ -37,12 +37,12 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %17 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %16 = OpConstantNull %17
+    %float_0 = OpConstant %float 0
+         %16 = OpConstantComposite %17 %float_0
 %_ptr_Function_17 = OpTypePointer Function %17
 %_ptr_Workgroup_float = OpTypePointer Workgroup %float
-         %31 = OpTypeFunction %void %uint
+         %32 = OpTypeFunction %void %uint
        %bool = OpTypeBool
-    %float_0 = OpConstant %float 0
      %uint_2 = OpConstant %uint 2
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_49b25b = OpFunction %void None %11
@@ -53,37 +53,37 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %16
                OpStore %arg_4 %uint_1
-         %23 = OpLoad %uint %arg_1 None
-         %24 = OpLoad %17 %arg_2 None
-         %25 = OpLoad %uint %arg_4 None
-         %26 = OpAccessChain %_ptr_Workgroup_float %arg_0 %23
-               OpCooperativeMatrixStoreKHR %26 %24 %uint_1 %25 NonPrivatePointer
+         %24 = OpLoad %uint %arg_1 None
+         %25 = OpLoad %17 %arg_2 None
+         %26 = OpLoad %uint %arg_4 None
+         %27 = OpAccessChain %_ptr_Workgroup_float %arg_0 %24
+               OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %31
+%compute_main_inner = OpFunction %void None %32
 %tint_local_index = OpFunctionParameter %uint
-         %32 = OpLabel
-               OpBranch %33
          %33 = OpLabel
-               OpBranch %36
-         %36 = OpLabel
-         %38 = OpPhi %uint %tint_local_index %33 %39 %35
-               OpLoopMerge %37 %35 None
                OpBranch %34
          %34 = OpLabel
-         %40 = OpUGreaterThanEqual %bool %38 %uint_64
-               OpSelectionMerge %42 None
-               OpBranchConditional %40 %43 %42
-         %43 = OpLabel
                OpBranch %37
-         %42 = OpLabel
-         %44 = OpAccessChain %_ptr_Workgroup_float %arg_0 %38
-               OpStore %44 %float_0 NonPrivatePointer
+         %37 = OpLabel
+         %39 = OpPhi %uint %tint_local_index %34 %40 %36
+               OpLoopMerge %38 %36 None
                OpBranch %35
          %35 = OpLabel
-         %39 = OpIAdd %uint %38 %uint_1
+         %41 = OpUGreaterThanEqual %bool %39 %uint_64
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %43
+         %44 = OpLabel
+               OpBranch %38
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Workgroup_float %arg_0 %39
+               OpStore %45 %float_0 NonPrivatePointer
                OpBranch %36
-         %37 = OpLabel
+         %36 = OpLabel
+         %40 = OpIAdd %uint %39 %uint_1
+               OpBranch %37
+         %38 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %49 = OpFunctionCall %void %subgroupMatrixStore_49b25b
                OpReturn
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/543411.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/543411.wgsl.expected.spvasm
index 5ac2633..3cd2066 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/543411.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/543411.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -38,7 +38,8 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %15 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_1
-         %14 = OpConstantNull %15
+    %float_0 = OpConstant %float 0
+         %14 = OpConstantComposite %15 %float_0
 %_ptr_Function_15 = OpTypePointer Function %15
 %_ptr_StorageBuffer__runtimearr_float = OpTypePointer StorageBuffer %_runtimearr_float
      %uint_0 = OpConstant %uint 0
@@ -51,16 +52,16 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %14
                OpStore %arg_4 %uint_1
-         %21 = OpAccessChain %_ptr_StorageBuffer__runtimearr_float %sb_rw %uint_0
-         %24 = OpLoad %uint %arg_1 None
-         %25 = OpLoad %15 %arg_2 None
-         %26 = OpLoad %uint %arg_4 None
-         %27 = OpAccessChain %_ptr_StorageBuffer_float %21 %24
-               OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
+         %22 = OpAccessChain %_ptr_StorageBuffer__runtimearr_float %sb_rw %uint_0
+         %25 = OpLoad %uint %arg_1 None
+         %26 = OpLoad %15 %arg_2 None
+         %27 = OpLoad %uint %arg_4 None
+         %28 = OpAccessChain %_ptr_StorageBuffer_float %22 %25
+               OpCooperativeMatrixStoreKHR %28 %26 %uint_1 %27 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %8
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %subgroupMatrixStore_543411
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %subgroupMatrixStore_543411
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/5671e2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/5671e2.wgsl.expected.spvasm
index 69cae1c..856baf9 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/5671e2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/5671e2.wgsl.expected.spvasm
@@ -37,12 +37,12 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %17 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %16 = OpConstantNull %17
+      %int_0 = OpConstant %int 0
+         %16 = OpConstantComposite %17 %int_0
 %_ptr_Function_17 = OpTypePointer Function %17
 %_ptr_Workgroup_int = OpTypePointer Workgroup %int
-         %31 = OpTypeFunction %void %uint
+         %32 = OpTypeFunction %void %uint
        %bool = OpTypeBool
-      %int_0 = OpConstant %int 0
      %uint_2 = OpConstant %uint 2
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_5671e2 = OpFunction %void None %11
@@ -53,37 +53,37 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %16
                OpStore %arg_4 %uint_1
-         %23 = OpLoad %uint %arg_1 None
-         %24 = OpLoad %17 %arg_2 None
-         %25 = OpLoad %uint %arg_4 None
-         %26 = OpAccessChain %_ptr_Workgroup_int %arg_0 %23
-               OpCooperativeMatrixStoreKHR %26 %24 %uint_1 %25 NonPrivatePointer
+         %24 = OpLoad %uint %arg_1 None
+         %25 = OpLoad %17 %arg_2 None
+         %26 = OpLoad %uint %arg_4 None
+         %27 = OpAccessChain %_ptr_Workgroup_int %arg_0 %24
+               OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %31
+%compute_main_inner = OpFunction %void None %32
 %tint_local_index = OpFunctionParameter %uint
-         %32 = OpLabel
-               OpBranch %33
          %33 = OpLabel
-               OpBranch %36
-         %36 = OpLabel
-         %38 = OpPhi %uint %tint_local_index %33 %39 %35
-               OpLoopMerge %37 %35 None
                OpBranch %34
          %34 = OpLabel
-         %40 = OpUGreaterThanEqual %bool %38 %uint_64
-               OpSelectionMerge %42 None
-               OpBranchConditional %40 %43 %42
-         %43 = OpLabel
                OpBranch %37
-         %42 = OpLabel
-         %44 = OpAccessChain %_ptr_Workgroup_int %arg_0 %38
-               OpStore %44 %int_0 NonPrivatePointer
+         %37 = OpLabel
+         %39 = OpPhi %uint %tint_local_index %34 %40 %36
+               OpLoopMerge %38 %36 None
                OpBranch %35
          %35 = OpLabel
-         %39 = OpIAdd %uint %38 %uint_1
+         %41 = OpUGreaterThanEqual %bool %39 %uint_64
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %43
+         %44 = OpLabel
+               OpBranch %38
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Workgroup_int %arg_0 %39
+               OpStore %45 %int_0 NonPrivatePointer
                OpBranch %36
-         %37 = OpLabel
+         %36 = OpLabel
+         %40 = OpIAdd %uint %39 %uint_1
+               OpBranch %37
+         %38 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %49 = OpFunctionCall %void %subgroupMatrixStore_5671e2
                OpReturn
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/57de92.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/57de92.wgsl.expected.spvasm
index c21a502..f98f8bc 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/57de92.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/57de92.wgsl.expected.spvasm
@@ -41,10 +41,10 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_1
-         %15 = OpConstantNull %16
+     %uint_0 = OpConstant %uint 0
+         %15 = OpConstantComposite %16 %uint_0
 %_ptr_Function_16 = OpTypePointer Function %16
 %_ptr_StorageBuffer__arr_uint_uint_64 = OpTypePointer StorageBuffer %_arr_uint_uint_64
-     %uint_0 = OpConstant %uint 0
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
 %subgroupMatrixStore_57de92 = OpFunction %void None %10
          %11 = OpLabel
@@ -54,11 +54,11 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %15
                OpStore %arg_4 %uint_1
-         %22 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_64 %1 %uint_0 %uint_0
+         %23 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_64 %1 %uint_0 %uint_0
          %25 = OpLoad %uint %arg_1 None
          %26 = OpLoad %16 %arg_2 None
          %27 = OpLoad %uint %arg_4 None
-         %28 = OpAccessChain %_ptr_StorageBuffer_uint %22 %25
+         %28 = OpAccessChain %_ptr_StorageBuffer_uint %23 %25
                OpCooperativeMatrixStoreKHR %28 %26 %uint_1 %27 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/5915fe.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/5915fe.wgsl.expected.spvasm
index f8a0946..daf6c7e 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/5915fe.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/5915fe.wgsl.expected.spvasm
@@ -37,7 +37,7 @@
      %uint_8 = OpConstant %uint 8
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+         %15 = OpConstantComposite %16 %uint_0
 %_ptr_Function_16 = OpTypePointer Function %16
 %_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
          %31 = OpTypeFunction %void %uint
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/6d8de7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/6d8de7.wgsl.expected.spvasm
index e62be4b..dd8a857 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/6d8de7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/6d8de7.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -41,7 +41,8 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %15 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %14 = OpConstantNull %15
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %14 = OpConstantComposite %15 %half_0x0p_0
 %_ptr_Function_15 = OpTypePointer Function %15
 %_ptr_StorageBuffer__runtimearr_half = OpTypePointer StorageBuffer %_runtimearr_half
      %uint_0 = OpConstant %uint 0
@@ -54,16 +55,16 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %14
                OpStore %arg_4 %uint_1
-         %21 = OpAccessChain %_ptr_StorageBuffer__runtimearr_half %sb_rw %uint_0
-         %24 = OpLoad %uint %arg_1 None
-         %25 = OpLoad %15 %arg_2 None
-         %26 = OpLoad %uint %arg_4 None
-         %27 = OpAccessChain %_ptr_StorageBuffer_half %21 %24
-               OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
+         %22 = OpAccessChain %_ptr_StorageBuffer__runtimearr_half %sb_rw %uint_0
+         %25 = OpLoad %uint %arg_1 None
+         %26 = OpLoad %15 %arg_2 None
+         %27 = OpLoad %uint %arg_4 None
+         %28 = OpAccessChain %_ptr_StorageBuffer_half %22 %25
+               OpCooperativeMatrixStoreKHR %28 %26 %uint_1 %27 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %8
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %subgroupMatrixStore_6d8de7
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %subgroupMatrixStore_6d8de7
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/8a2280.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/8a2280.wgsl.expected.spvasm
index a2582aa..bd0c005 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/8a2280.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/8a2280.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 36
+; Bound: 37
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -43,7 +43,8 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %17 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_2
-         %16 = OpConstantNull %17
+    %float_0 = OpConstant %float 0
+         %16 = OpConstantComposite %17 %float_0
 %_ptr_Function_17 = OpTypePointer Function %17
 %_ptr_StorageBuffer__arr_float_uint_64 = OpTypePointer StorageBuffer %_arr_float_uint_64
      %uint_0 = OpConstant %uint 0
@@ -56,16 +57,16 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %16
                OpStore %arg_4 %uint_1
-         %24 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_64 %1 %uint_0 %uint_0
-         %27 = OpLoad %uint %arg_1 None
-         %28 = OpLoad %17 %arg_2 None
-         %29 = OpLoad %uint %arg_4 None
-         %30 = OpAccessChain %_ptr_StorageBuffer_float %24 %27
-               OpCooperativeMatrixStoreKHR %30 %28 %uint_1 %29 NonPrivatePointer
+         %25 = OpAccessChain %_ptr_StorageBuffer__arr_float_uint_64 %1 %uint_0 %uint_0
+         %28 = OpLoad %uint %arg_1 None
+         %29 = OpLoad %17 %arg_2 None
+         %30 = OpLoad %uint %arg_4 None
+         %31 = OpAccessChain %_ptr_StorageBuffer_float %25 %28
+               OpCooperativeMatrixStoreKHR %31 %29 %uint_1 %30 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %11
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %subgroupMatrixStore_8a2280
+         %35 = OpLabel
+         %36 = OpFunctionCall %void %subgroupMatrixStore_8a2280
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/8c59ed.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/8c59ed.wgsl.expected.spvasm
index c0ce957..ae07b66 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/8c59ed.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/8c59ed.wgsl.expected.spvasm
@@ -38,7 +38,7 @@
      %uint_8 = OpConstant %uint 8
      %uint_0 = OpConstant %uint 0
          %14 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %13 = OpConstantNull %14
+         %13 = OpConstantComposite %14 %uint_0
 %_ptr_Function_14 = OpTypePointer Function %14
 %_ptr_StorageBuffer__runtimearr_uint = OpTypePointer StorageBuffer %_runtimearr_uint
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9019ee.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/9019ee.wgsl.expected.spvasm
index 5a0c0dc..e1b4d7f 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/9019ee.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9019ee.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 35
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -43,7 +43,8 @@
      %uint_8 = OpConstant %uint 8
      %uint_0 = OpConstant %uint 0
          %17 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %16 = OpConstantNull %17
+      %int_0 = OpConstant %int 0
+         %16 = OpConstantComposite %17 %int_0
 %_ptr_Function_17 = OpTypePointer Function %17
 %_ptr_StorageBuffer__arr_int_uint_64 = OpTypePointer StorageBuffer %_arr_int_uint_64
 %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
@@ -55,16 +56,16 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %16
                OpStore %arg_4 %uint_1
-         %24 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_64 %1 %uint_0 %uint_0
-         %26 = OpLoad %uint %arg_1 None
-         %27 = OpLoad %17 %arg_2 None
-         %28 = OpLoad %uint %arg_4 None
-         %29 = OpAccessChain %_ptr_StorageBuffer_int %24 %26
-               OpCooperativeMatrixStoreKHR %29 %27 %uint_1 %28 NonPrivatePointer
+         %25 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_64 %1 %uint_0 %uint_0
+         %27 = OpLoad %uint %arg_1 None
+         %28 = OpLoad %17 %arg_2 None
+         %29 = OpLoad %uint %arg_4 None
+         %30 = OpAccessChain %_ptr_StorageBuffer_int %25 %27
+               OpCooperativeMatrixStoreKHR %30 %28 %uint_1 %29 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %11
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %subgroupMatrixStore_9019ee
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %subgroupMatrixStore_9019ee
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9a7d60.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/9a7d60.wgsl.expected.spvasm
index 23e016c..9d62273 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/9a7d60.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9a7d60.wgsl.expected.spvasm
@@ -37,12 +37,12 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_2
-         %15 = OpConstantNull %16
+     %uint_0 = OpConstant %uint 0
+         %15 = OpConstantComposite %16 %uint_0
 %_ptr_Function_16 = OpTypePointer Function %16
 %_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
-         %31 = OpTypeFunction %void %uint
+         %32 = OpTypeFunction %void %uint
        %bool = OpTypeBool
-     %uint_0 = OpConstant %uint 0
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_9a7d60 = OpFunction %void None %10
          %11 = OpLabel
@@ -52,37 +52,37 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %15
                OpStore %arg_4 %uint_1
-         %23 = OpLoad %uint %arg_1 None
-         %24 = OpLoad %16 %arg_2 None
-         %25 = OpLoad %uint %arg_4 None
-         %26 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %23
-               OpCooperativeMatrixStoreKHR %26 %24 %uint_1 %25 NonPrivatePointer
+         %24 = OpLoad %uint %arg_1 None
+         %25 = OpLoad %16 %arg_2 None
+         %26 = OpLoad %uint %arg_4 None
+         %27 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %24
+               OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %31
+%compute_main_inner = OpFunction %void None %32
 %tint_local_index = OpFunctionParameter %uint
-         %32 = OpLabel
-               OpBranch %33
          %33 = OpLabel
-               OpBranch %36
-         %36 = OpLabel
-         %38 = OpPhi %uint %tint_local_index %33 %39 %35
-               OpLoopMerge %37 %35 None
                OpBranch %34
          %34 = OpLabel
-         %40 = OpUGreaterThanEqual %bool %38 %uint_64
-               OpSelectionMerge %42 None
-               OpBranchConditional %40 %43 %42
-         %43 = OpLabel
                OpBranch %37
-         %42 = OpLabel
-         %44 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %38
-               OpStore %44 %uint_0 NonPrivatePointer
+         %37 = OpLabel
+         %39 = OpPhi %uint %tint_local_index %34 %40 %36
+               OpLoopMerge %38 %36 None
                OpBranch %35
          %35 = OpLabel
-         %39 = OpIAdd %uint %38 %uint_1
+         %41 = OpUGreaterThanEqual %bool %39 %uint_64
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %43
+         %44 = OpLabel
+               OpBranch %38
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Workgroup_uint %arg_0 %39
+               OpStore %45 %uint_0 NonPrivatePointer
                OpBranch %36
-         %37 = OpLabel
+         %36 = OpLabel
+         %40 = OpIAdd %uint %39 %uint_1
+               OpBranch %37
+         %38 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %48 = OpFunctionCall %void %subgroupMatrixStore_9a7d60
                OpReturn
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/9fffe5.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/9fffe5.wgsl.expected.spvasm
index d7a2e06..bf1052c 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/9fffe5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/9fffe5.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 36
+; Bound: 37
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -43,7 +43,8 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %17 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_2
-         %16 = OpConstantNull %17
+      %int_0 = OpConstant %int 0
+         %16 = OpConstantComposite %17 %int_0
 %_ptr_Function_17 = OpTypePointer Function %17
 %_ptr_StorageBuffer__arr_int_uint_64 = OpTypePointer StorageBuffer %_arr_int_uint_64
      %uint_0 = OpConstant %uint 0
@@ -56,16 +57,16 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %16
                OpStore %arg_4 %uint_1
-         %24 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_64 %1 %uint_0 %uint_0
-         %27 = OpLoad %uint %arg_1 None
-         %28 = OpLoad %17 %arg_2 None
-         %29 = OpLoad %uint %arg_4 None
-         %30 = OpAccessChain %_ptr_StorageBuffer_int %24 %27
-               OpCooperativeMatrixStoreKHR %30 %28 %uint_1 %29 NonPrivatePointer
+         %25 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_64 %1 %uint_0 %uint_0
+         %28 = OpLoad %uint %arg_1 None
+         %29 = OpLoad %17 %arg_2 None
+         %30 = OpLoad %uint %arg_4 None
+         %31 = OpAccessChain %_ptr_StorageBuffer_int %25 %28
+               OpCooperativeMatrixStoreKHR %31 %29 %uint_1 %30 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %11
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %subgroupMatrixStore_9fffe5
+         %35 = OpLabel
+         %36 = OpFunctionCall %void %subgroupMatrixStore_9fffe5
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/adbc3e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/adbc3e.wgsl.expected.spvasm
index af94758..39de255 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/adbc3e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/adbc3e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -42,7 +42,8 @@
      %uint_8 = OpConstant %uint 8
      %uint_0 = OpConstant %uint 0
          %15 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %14 = OpConstantComposite %15 %half_0x0p_0
 %_ptr_Function_15 = OpTypePointer Function %15
 %_ptr_StorageBuffer__runtimearr_half = OpTypePointer StorageBuffer %_runtimearr_half
 %_ptr_StorageBuffer_half = OpTypePointer StorageBuffer %half
@@ -54,16 +55,16 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %14
                OpStore %arg_4 %uint_1
-         %22 = OpAccessChain %_ptr_StorageBuffer__runtimearr_half %sb_rw %uint_0
-         %24 = OpLoad %uint %arg_1 None
-         %25 = OpLoad %15 %arg_2 None
-         %26 = OpLoad %uint %arg_4 None
-         %27 = OpAccessChain %_ptr_StorageBuffer_half %22 %24
-               OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
+         %23 = OpAccessChain %_ptr_StorageBuffer__runtimearr_half %sb_rw %uint_0
+         %25 = OpLoad %uint %arg_1 None
+         %26 = OpLoad %15 %arg_2 None
+         %27 = OpLoad %uint %arg_4 None
+         %28 = OpAccessChain %_ptr_StorageBuffer_half %23 %25
+               OpCooperativeMatrixStoreKHR %28 %26 %uint_1 %27 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %8
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %subgroupMatrixStore_adbc3e
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %subgroupMatrixStore_adbc3e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/b9ff25.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/b9ff25.wgsl.expected.spvasm
index a949be4..f7e911a 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/b9ff25.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/b9ff25.wgsl.expected.spvasm
@@ -38,12 +38,12 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %17 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_2
-         %16 = OpConstantNull %17
+    %float_0 = OpConstant %float 0
+         %16 = OpConstantComposite %17 %float_0
 %_ptr_Function_17 = OpTypePointer Function %17
 %_ptr_Workgroup_float = OpTypePointer Workgroup %float
-         %32 = OpTypeFunction %void %uint
+         %33 = OpTypeFunction %void %uint
        %bool = OpTypeBool
-    %float_0 = OpConstant %float 0
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_b9ff25 = OpFunction %void None %11
          %12 = OpLabel
@@ -53,37 +53,37 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %16
                OpStore %arg_4 %uint_1
-         %24 = OpLoad %uint %arg_1 None
-         %25 = OpLoad %17 %arg_2 None
-         %26 = OpLoad %uint %arg_4 None
-         %27 = OpAccessChain %_ptr_Workgroup_float %arg_0 %24
-               OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
+         %25 = OpLoad %uint %arg_1 None
+         %26 = OpLoad %17 %arg_2 None
+         %27 = OpLoad %uint %arg_4 None
+         %28 = OpAccessChain %_ptr_Workgroup_float %arg_0 %25
+               OpCooperativeMatrixStoreKHR %28 %26 %uint_1 %27 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %32
+%compute_main_inner = OpFunction %void None %33
 %tint_local_index = OpFunctionParameter %uint
-         %33 = OpLabel
-               OpBranch %34
          %34 = OpLabel
-               OpBranch %37
-         %37 = OpLabel
-         %39 = OpPhi %uint %tint_local_index %34 %40 %36
-               OpLoopMerge %38 %36 None
                OpBranch %35
          %35 = OpLabel
-         %41 = OpUGreaterThanEqual %bool %39 %uint_64
-               OpSelectionMerge %43 None
-               OpBranchConditional %41 %44 %43
-         %44 = OpLabel
                OpBranch %38
-         %43 = OpLabel
-         %45 = OpAccessChain %_ptr_Workgroup_float %arg_0 %39
-               OpStore %45 %float_0 NonPrivatePointer
+         %38 = OpLabel
+         %40 = OpPhi %uint %tint_local_index %35 %41 %37
+               OpLoopMerge %39 %37 None
                OpBranch %36
          %36 = OpLabel
-         %40 = OpIAdd %uint %39 %uint_1
+         %42 = OpUGreaterThanEqual %bool %40 %uint_64
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %44
+         %45 = OpLabel
+               OpBranch %39
+         %44 = OpLabel
+         %46 = OpAccessChain %_ptr_Workgroup_float %arg_0 %40
+               OpStore %46 %float_0 NonPrivatePointer
                OpBranch %37
-         %38 = OpLabel
+         %37 = OpLabel
+         %41 = OpIAdd %uint %40 %uint_1
+               OpBranch %38
+         %39 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %49 = OpFunctionCall %void %subgroupMatrixStore_b9ff25
                OpReturn
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/ba9442.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/ba9442.wgsl.expected.spvasm
index f356723..54c0159 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/ba9442.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/ba9442.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 35
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -45,7 +45,8 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %17 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %16 = OpConstantNull %17
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %16 = OpConstantComposite %17 %half_0x0p_0
 %_ptr_Function_17 = OpTypePointer Function %17
 %_ptr_StorageBuffer__arr_half_uint_64 = OpTypePointer StorageBuffer %_arr_half_uint_64
      %uint_0 = OpConstant %uint 0
@@ -58,16 +59,16 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %16
                OpStore %arg_4 %uint_1
-         %23 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_64 %1 %uint_0 %uint_0
-         %26 = OpLoad %uint %arg_1 None
-         %27 = OpLoad %17 %arg_2 None
-         %28 = OpLoad %uint %arg_4 None
-         %29 = OpAccessChain %_ptr_StorageBuffer_half %23 %26
-               OpCooperativeMatrixStoreKHR %29 %27 %uint_1 %28 NonPrivatePointer
+         %24 = OpAccessChain %_ptr_StorageBuffer__arr_half_uint_64 %1 %uint_0 %uint_0
+         %27 = OpLoad %uint %arg_1 None
+         %28 = OpLoad %17 %arg_2 None
+         %29 = OpLoad %uint %arg_4 None
+         %30 = OpAccessChain %_ptr_StorageBuffer_half %24 %27
+               OpCooperativeMatrixStoreKHR %30 %28 %uint_1 %29 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %11
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %subgroupMatrixStore_ba9442
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %subgroupMatrixStore_ba9442
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/bb2478.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/bb2478.wgsl.expected.spvasm
index 9512e27..c054712 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/bb2478.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/bb2478.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 34
+; Bound: 35
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,7 +39,8 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %15 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_2
-         %14 = OpConstantNull %15
+    %float_0 = OpConstant %float 0
+         %14 = OpConstantComposite %15 %float_0
 %_ptr_Function_15 = OpTypePointer Function %15
 %_ptr_StorageBuffer__runtimearr_float = OpTypePointer StorageBuffer %_runtimearr_float
      %uint_0 = OpConstant %uint 0
@@ -52,16 +53,16 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %14
                OpStore %arg_4 %uint_1
-         %22 = OpAccessChain %_ptr_StorageBuffer__runtimearr_float %sb_rw %uint_0
-         %25 = OpLoad %uint %arg_1 None
-         %26 = OpLoad %15 %arg_2 None
-         %27 = OpLoad %uint %arg_4 None
-         %28 = OpAccessChain %_ptr_StorageBuffer_float %22 %25
-               OpCooperativeMatrixStoreKHR %28 %26 %uint_1 %27 NonPrivatePointer
+         %23 = OpAccessChain %_ptr_StorageBuffer__runtimearr_float %sb_rw %uint_0
+         %26 = OpLoad %uint %arg_1 None
+         %27 = OpLoad %15 %arg_2 None
+         %28 = OpLoad %uint %arg_4 None
+         %29 = OpAccessChain %_ptr_StorageBuffer_float %23 %26
+               OpCooperativeMatrixStoreKHR %29 %27 %uint_1 %28 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %8
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %subgroupMatrixStore_bb2478
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %subgroupMatrixStore_bb2478
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/bb5d49.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/bb5d49.wgsl.expected.spvasm
index b0c59c2..0f2ae3f 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/bb5d49.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/bb5d49.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -39,7 +39,8 @@
      %uint_8 = OpConstant %uint 8
      %uint_0 = OpConstant %uint 0
          %15 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %14 = OpConstantNull %15
+    %float_0 = OpConstant %float 0
+         %14 = OpConstantComposite %15 %float_0
 %_ptr_Function_15 = OpTypePointer Function %15
 %_ptr_StorageBuffer__runtimearr_float = OpTypePointer StorageBuffer %_runtimearr_float
 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
@@ -51,16 +52,16 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %14
                OpStore %arg_4 %uint_1
-         %22 = OpAccessChain %_ptr_StorageBuffer__runtimearr_float %sb_rw %uint_0
-         %24 = OpLoad %uint %arg_1 None
-         %25 = OpLoad %15 %arg_2 None
-         %26 = OpLoad %uint %arg_4 None
-         %27 = OpAccessChain %_ptr_StorageBuffer_float %22 %24
-               OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
+         %23 = OpAccessChain %_ptr_StorageBuffer__runtimearr_float %sb_rw %uint_0
+         %25 = OpLoad %uint %arg_1 None
+         %26 = OpLoad %15 %arg_2 None
+         %27 = OpLoad %uint %arg_4 None
+         %28 = OpAccessChain %_ptr_StorageBuffer_float %23 %25
+               OpCooperativeMatrixStoreKHR %28 %26 %uint_1 %27 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %8
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %subgroupMatrixStore_bb5d49
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %subgroupMatrixStore_bb5d49
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/bfd0a4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/bfd0a4.wgsl.expected.spvasm
index c79e572..cdabd74 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/bfd0a4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/bfd0a4.wgsl.expected.spvasm
@@ -38,12 +38,12 @@
      %uint_8 = OpConstant %uint 8
      %uint_0 = OpConstant %uint 0
          %17 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_0
-         %16 = OpConstantNull %17
+      %int_0 = OpConstant %int 0
+         %16 = OpConstantComposite %17 %int_0
 %_ptr_Function_17 = OpTypePointer Function %17
 %_ptr_Workgroup_int = OpTypePointer Workgroup %int
-         %32 = OpTypeFunction %void %uint
+         %33 = OpTypeFunction %void %uint
        %bool = OpTypeBool
-      %int_0 = OpConstant %int 0
      %uint_2 = OpConstant %uint 2
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_bfd0a4 = OpFunction %void None %11
@@ -54,37 +54,37 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %16
                OpStore %arg_4 %uint_1
-         %24 = OpLoad %uint %arg_1 None
-         %25 = OpLoad %17 %arg_2 None
-         %26 = OpLoad %uint %arg_4 None
-         %27 = OpAccessChain %_ptr_Workgroup_int %arg_0 %24
-               OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
+         %25 = OpLoad %uint %arg_1 None
+         %26 = OpLoad %17 %arg_2 None
+         %27 = OpLoad %uint %arg_4 None
+         %28 = OpAccessChain %_ptr_Workgroup_int %arg_0 %25
+               OpCooperativeMatrixStoreKHR %28 %26 %uint_1 %27 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %32
+%compute_main_inner = OpFunction %void None %33
 %tint_local_index = OpFunctionParameter %uint
-         %33 = OpLabel
-               OpBranch %34
          %34 = OpLabel
-               OpBranch %37
-         %37 = OpLabel
-         %39 = OpPhi %uint %tint_local_index %34 %40 %36
-               OpLoopMerge %38 %36 None
                OpBranch %35
          %35 = OpLabel
-         %41 = OpUGreaterThanEqual %bool %39 %uint_64
-               OpSelectionMerge %43 None
-               OpBranchConditional %41 %44 %43
-         %44 = OpLabel
                OpBranch %38
-         %43 = OpLabel
-         %45 = OpAccessChain %_ptr_Workgroup_int %arg_0 %39
-               OpStore %45 %int_0 NonPrivatePointer
+         %38 = OpLabel
+         %40 = OpPhi %uint %tint_local_index %35 %41 %37
+               OpLoopMerge %39 %37 None
                OpBranch %36
          %36 = OpLabel
-         %40 = OpIAdd %uint %39 %uint_1
+         %42 = OpUGreaterThanEqual %bool %40 %uint_64
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %44
+         %45 = OpLabel
+               OpBranch %39
+         %44 = OpLabel
+         %46 = OpAccessChain %_ptr_Workgroup_int %arg_0 %40
+               OpStore %46 %int_0 NonPrivatePointer
                OpBranch %37
-         %38 = OpLabel
+         %37 = OpLabel
+         %41 = OpIAdd %uint %40 %uint_1
+               OpBranch %38
+         %39 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %50 = OpFunctionCall %void %subgroupMatrixStore_bfd0a4
                OpReturn
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/bfe106.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/bfe106.wgsl.expected.spvasm
index 42a9823..d0c943e 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/bfe106.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/bfe106.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 34
+; Bound: 35
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -42,7 +42,8 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %15 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_2
-         %14 = OpConstantNull %15
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %14 = OpConstantComposite %15 %half_0x0p_0
 %_ptr_Function_15 = OpTypePointer Function %15
 %_ptr_StorageBuffer__runtimearr_half = OpTypePointer StorageBuffer %_runtimearr_half
      %uint_0 = OpConstant %uint 0
@@ -55,16 +56,16 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %14
                OpStore %arg_4 %uint_1
-         %22 = OpAccessChain %_ptr_StorageBuffer__runtimearr_half %sb_rw %uint_0
-         %25 = OpLoad %uint %arg_1 None
-         %26 = OpLoad %15 %arg_2 None
-         %27 = OpLoad %uint %arg_4 None
-         %28 = OpAccessChain %_ptr_StorageBuffer_half %22 %25
-               OpCooperativeMatrixStoreKHR %28 %26 %uint_1 %27 NonPrivatePointer
+         %23 = OpAccessChain %_ptr_StorageBuffer__runtimearr_half %sb_rw %uint_0
+         %26 = OpLoad %uint %arg_1 None
+         %27 = OpLoad %15 %arg_2 None
+         %28 = OpLoad %uint %arg_4 None
+         %29 = OpAccessChain %_ptr_StorageBuffer_half %23 %26
+               OpCooperativeMatrixStoreKHR %29 %27 %uint_1 %28 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %8
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %subgroupMatrixStore_bfe106
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %subgroupMatrixStore_bfe106
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/d07581.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/d07581.wgsl.expected.spvasm
index 0e05401..7996d8c 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/d07581.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/d07581.wgsl.expected.spvasm
@@ -40,12 +40,12 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %17 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_1
-         %16 = OpConstantNull %17
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %16 = OpConstantComposite %17 %half_0x0p_0
 %_ptr_Function_17 = OpTypePointer Function %17
 %_ptr_Workgroup_half = OpTypePointer Workgroup %half
-         %31 = OpTypeFunction %void %uint
+         %32 = OpTypeFunction %void %uint
        %bool = OpTypeBool
-%half_0x0p_0 = OpConstant %half 0x0p+0
      %uint_2 = OpConstant %uint 2
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_d07581 = OpFunction %void None %11
@@ -56,37 +56,37 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %16
                OpStore %arg_4 %uint_1
-         %23 = OpLoad %uint %arg_1 None
-         %24 = OpLoad %17 %arg_2 None
-         %25 = OpLoad %uint %arg_4 None
-         %26 = OpAccessChain %_ptr_Workgroup_half %arg_0 %23
-               OpCooperativeMatrixStoreKHR %26 %24 %uint_1 %25 NonPrivatePointer
+         %24 = OpLoad %uint %arg_1 None
+         %25 = OpLoad %17 %arg_2 None
+         %26 = OpLoad %uint %arg_4 None
+         %27 = OpAccessChain %_ptr_Workgroup_half %arg_0 %24
+               OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %31
+%compute_main_inner = OpFunction %void None %32
 %tint_local_index = OpFunctionParameter %uint
-         %32 = OpLabel
-               OpBranch %33
          %33 = OpLabel
-               OpBranch %36
-         %36 = OpLabel
-         %38 = OpPhi %uint %tint_local_index %33 %39 %35
-               OpLoopMerge %37 %35 None
                OpBranch %34
          %34 = OpLabel
-         %40 = OpUGreaterThanEqual %bool %38 %uint_64
-               OpSelectionMerge %42 None
-               OpBranchConditional %40 %43 %42
-         %43 = OpLabel
                OpBranch %37
-         %42 = OpLabel
-         %44 = OpAccessChain %_ptr_Workgroup_half %arg_0 %38
-               OpStore %44 %half_0x0p_0 NonPrivatePointer
+         %37 = OpLabel
+         %39 = OpPhi %uint %tint_local_index %34 %40 %36
+               OpLoopMerge %38 %36 None
                OpBranch %35
          %35 = OpLabel
-         %39 = OpIAdd %uint %38 %uint_1
+         %41 = OpUGreaterThanEqual %bool %39 %uint_64
+               OpSelectionMerge %43 None
+               OpBranchConditional %41 %44 %43
+         %44 = OpLabel
+               OpBranch %38
+         %43 = OpLabel
+         %45 = OpAccessChain %_ptr_Workgroup_half %arg_0 %39
+               OpStore %45 %half_0x0p_0 NonPrivatePointer
                OpBranch %36
-         %37 = OpLabel
+         %36 = OpLabel
+         %40 = OpIAdd %uint %39 %uint_1
+               OpBranch %37
+         %38 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %49 = OpFunctionCall %void %subgroupMatrixStore_d07581
                OpReturn
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/d55153.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/d55153.wgsl.expected.spvasm
index f2569be..efe4d43 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/d55153.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/d55153.wgsl.expected.spvasm
@@ -38,10 +38,10 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %14 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_2
-         %13 = OpConstantNull %14
+     %uint_0 = OpConstant %uint 0
+         %13 = OpConstantComposite %14 %uint_0
 %_ptr_Function_14 = OpTypePointer Function %14
 %_ptr_StorageBuffer__runtimearr_uint = OpTypePointer StorageBuffer %_runtimearr_uint
-     %uint_0 = OpConstant %uint 0
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
 %subgroupMatrixStore_d55153 = OpFunction %void None %8
           %9 = OpLabel
@@ -51,11 +51,11 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %13
                OpStore %arg_4 %uint_1
-         %21 = OpAccessChain %_ptr_StorageBuffer__runtimearr_uint %sb_rw %uint_0
+         %22 = OpAccessChain %_ptr_StorageBuffer__runtimearr_uint %sb_rw %uint_0
          %24 = OpLoad %uint %arg_1 None
          %25 = OpLoad %14 %arg_2 None
          %26 = OpLoad %uint %arg_4 None
-         %27 = OpAccessChain %_ptr_StorageBuffer_uint %21 %24
+         %27 = OpAccessChain %_ptr_StorageBuffer_uint %22 %24
                OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/db6dd2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/db6dd2.wgsl.expected.spvasm
index df3b480..6847264 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/db6dd2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/db6dd2.wgsl.expected.spvasm
@@ -42,7 +42,7 @@
      %uint_8 = OpConstant %uint 8
      %uint_0 = OpConstant %uint 0
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_0
-         %15 = OpConstantNull %16
+         %15 = OpConstantComposite %16 %uint_0
 %_ptr_Function_16 = OpTypePointer Function %16
 %_ptr_StorageBuffer__arr_uint_uint_64 = OpTypePointer StorageBuffer %_arr_uint_uint_64
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/dc92cf.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/dc92cf.wgsl.expected.spvasm
index 7e60159..31b8428 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/dc92cf.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/dc92cf.wgsl.expected.spvasm
@@ -38,12 +38,12 @@
      %uint_8 = OpConstant %uint 8
      %uint_0 = OpConstant %uint 0
          %17 = OpTypeCooperativeMatrixKHR %float %uint_3 %uint_8 %uint_8 %uint_0
-         %16 = OpConstantNull %17
+    %float_0 = OpConstant %float 0
+         %16 = OpConstantComposite %17 %float_0
 %_ptr_Function_17 = OpTypePointer Function %17
 %_ptr_Workgroup_float = OpTypePointer Workgroup %float
-         %32 = OpTypeFunction %void %uint
+         %33 = OpTypeFunction %void %uint
        %bool = OpTypeBool
-    %float_0 = OpConstant %float 0
      %uint_2 = OpConstant %uint 2
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_dc92cf = OpFunction %void None %11
@@ -54,37 +54,37 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %16
                OpStore %arg_4 %uint_1
-         %24 = OpLoad %uint %arg_1 None
-         %25 = OpLoad %17 %arg_2 None
-         %26 = OpLoad %uint %arg_4 None
-         %27 = OpAccessChain %_ptr_Workgroup_float %arg_0 %24
-               OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
+         %25 = OpLoad %uint %arg_1 None
+         %26 = OpLoad %17 %arg_2 None
+         %27 = OpLoad %uint %arg_4 None
+         %28 = OpAccessChain %_ptr_Workgroup_float %arg_0 %25
+               OpCooperativeMatrixStoreKHR %28 %26 %uint_1 %27 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %32
+%compute_main_inner = OpFunction %void None %33
 %tint_local_index = OpFunctionParameter %uint
-         %33 = OpLabel
-               OpBranch %34
          %34 = OpLabel
-               OpBranch %37
-         %37 = OpLabel
-         %39 = OpPhi %uint %tint_local_index %34 %40 %36
-               OpLoopMerge %38 %36 None
                OpBranch %35
          %35 = OpLabel
-         %41 = OpUGreaterThanEqual %bool %39 %uint_64
-               OpSelectionMerge %43 None
-               OpBranchConditional %41 %44 %43
-         %44 = OpLabel
                OpBranch %38
-         %43 = OpLabel
-         %45 = OpAccessChain %_ptr_Workgroup_float %arg_0 %39
-               OpStore %45 %float_0 NonPrivatePointer
+         %38 = OpLabel
+         %40 = OpPhi %uint %tint_local_index %35 %41 %37
+               OpLoopMerge %39 %37 None
                OpBranch %36
          %36 = OpLabel
-         %40 = OpIAdd %uint %39 %uint_1
+         %42 = OpUGreaterThanEqual %bool %40 %uint_64
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %44
+         %45 = OpLabel
+               OpBranch %39
+         %44 = OpLabel
+         %46 = OpAccessChain %_ptr_Workgroup_float %arg_0 %40
+               OpStore %46 %float_0 NonPrivatePointer
                OpBranch %37
-         %38 = OpLabel
+         %37 = OpLabel
+         %41 = OpIAdd %uint %40 %uint_1
+               OpBranch %38
+         %39 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %50 = OpFunctionCall %void %subgroupMatrixStore_dc92cf
                OpReturn
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/dce0b7.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/dce0b7.wgsl.expected.spvasm
index d7c57f5..2458522 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/dce0b7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/dce0b7.wgsl.expected.spvasm
@@ -42,10 +42,10 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %16 = OpTypeCooperativeMatrixKHR %uint %uint_3 %uint_8 %uint_8 %uint_2
-         %15 = OpConstantNull %16
+     %uint_0 = OpConstant %uint 0
+         %15 = OpConstantComposite %16 %uint_0
 %_ptr_Function_16 = OpTypePointer Function %16
 %_ptr_StorageBuffer__arr_uint_uint_64 = OpTypePointer StorageBuffer %_arr_uint_uint_64
-     %uint_0 = OpConstant %uint 0
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
 %subgroupMatrixStore_dce0b7 = OpFunction %void None %10
          %11 = OpLabel
@@ -55,11 +55,11 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %15
                OpStore %arg_4 %uint_1
-         %23 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_64 %1 %uint_0 %uint_0
+         %24 = OpAccessChain %_ptr_StorageBuffer__arr_uint_uint_64 %1 %uint_0 %uint_0
          %26 = OpLoad %uint %arg_1 None
          %27 = OpLoad %16 %arg_2 None
          %28 = OpLoad %uint %arg_4 None
-         %29 = OpAccessChain %_ptr_StorageBuffer_uint %23 %26
+         %29 = OpAccessChain %_ptr_StorageBuffer_uint %24 %26
                OpCooperativeMatrixStoreKHR %29 %27 %uint_1 %28 NonPrivatePointer
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/eae7d8.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/eae7d8.wgsl.expected.spvasm
index c836c77..b34c141 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/eae7d8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/eae7d8.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 1
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability VulkanMemoryModel
@@ -38,7 +38,8 @@
      %uint_3 = OpConstant %uint 3
      %uint_8 = OpConstant %uint 8
          %15 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_1
-         %14 = OpConstantNull %15
+      %int_0 = OpConstant %int 0
+         %14 = OpConstantComposite %15 %int_0
 %_ptr_Function_15 = OpTypePointer Function %15
 %_ptr_StorageBuffer__runtimearr_int = OpTypePointer StorageBuffer %_runtimearr_int
      %uint_0 = OpConstant %uint 0
@@ -51,16 +52,16 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %14
                OpStore %arg_4 %uint_1
-         %21 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_rw %uint_0
-         %24 = OpLoad %uint %arg_1 None
-         %25 = OpLoad %15 %arg_2 None
-         %26 = OpLoad %uint %arg_4 None
-         %27 = OpAccessChain %_ptr_StorageBuffer_int %21 %24
-               OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
+         %22 = OpAccessChain %_ptr_StorageBuffer__runtimearr_int %sb_rw %uint_0
+         %25 = OpLoad %uint %arg_1 None
+         %26 = OpLoad %15 %arg_2 None
+         %27 = OpLoad %uint %arg_4 None
+         %28 = OpAccessChain %_ptr_StorageBuffer_int %22 %25
+               OpCooperativeMatrixStoreKHR %28 %26 %uint_1 %27 NonPrivatePointer
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %8
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %subgroupMatrixStore_eae7d8
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %subgroupMatrixStore_eae7d8
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/ee1195.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/ee1195.wgsl.expected.spvasm
index 822d716..d3254ce 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/ee1195.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/ee1195.wgsl.expected.spvasm
@@ -41,12 +41,12 @@
      %uint_8 = OpConstant %uint 8
      %uint_0 = OpConstant %uint 0
          %17 = OpTypeCooperativeMatrixKHR %half %uint_3 %uint_8 %uint_8 %uint_0
-         %16 = OpConstantNull %17
+%half_0x0p_0 = OpConstant %half 0x0p+0
+         %16 = OpConstantComposite %17 %half_0x0p_0
 %_ptr_Function_17 = OpTypePointer Function %17
 %_ptr_Workgroup_half = OpTypePointer Workgroup %half
-         %32 = OpTypeFunction %void %uint
+         %33 = OpTypeFunction %void %uint
        %bool = OpTypeBool
-%half_0x0p_0 = OpConstant %half 0x0p+0
      %uint_2 = OpConstant %uint 2
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_ee1195 = OpFunction %void None %11
@@ -57,37 +57,37 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %16
                OpStore %arg_4 %uint_1
-         %24 = OpLoad %uint %arg_1 None
-         %25 = OpLoad %17 %arg_2 None
-         %26 = OpLoad %uint %arg_4 None
-         %27 = OpAccessChain %_ptr_Workgroup_half %arg_0 %24
-               OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
+         %25 = OpLoad %uint %arg_1 None
+         %26 = OpLoad %17 %arg_2 None
+         %27 = OpLoad %uint %arg_4 None
+         %28 = OpAccessChain %_ptr_Workgroup_half %arg_0 %25
+               OpCooperativeMatrixStoreKHR %28 %26 %uint_1 %27 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %32
+%compute_main_inner = OpFunction %void None %33
 %tint_local_index = OpFunctionParameter %uint
-         %33 = OpLabel
-               OpBranch %34
          %34 = OpLabel
-               OpBranch %37
-         %37 = OpLabel
-         %39 = OpPhi %uint %tint_local_index %34 %40 %36
-               OpLoopMerge %38 %36 None
                OpBranch %35
          %35 = OpLabel
-         %41 = OpUGreaterThanEqual %bool %39 %uint_64
-               OpSelectionMerge %43 None
-               OpBranchConditional %41 %44 %43
-         %44 = OpLabel
                OpBranch %38
-         %43 = OpLabel
-         %45 = OpAccessChain %_ptr_Workgroup_half %arg_0 %39
-               OpStore %45 %half_0x0p_0 NonPrivatePointer
+         %38 = OpLabel
+         %40 = OpPhi %uint %tint_local_index %35 %41 %37
+               OpLoopMerge %39 %37 None
                OpBranch %36
          %36 = OpLabel
-         %40 = OpIAdd %uint %39 %uint_1
+         %42 = OpUGreaterThanEqual %bool %40 %uint_64
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %44
+         %45 = OpLabel
+               OpBranch %39
+         %44 = OpLabel
+         %46 = OpAccessChain %_ptr_Workgroup_half %arg_0 %40
+               OpStore %46 %half_0x0p_0 NonPrivatePointer
                OpBranch %37
-         %38 = OpLabel
+         %37 = OpLabel
+         %41 = OpIAdd %uint %40 %uint_1
+               OpBranch %38
+         %39 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %50 = OpFunctionCall %void %subgroupMatrixStore_ee1195
                OpReturn
diff --git a/test/tint/builtins/gen/var/subgroupMatrixStore/f04d67.wgsl.expected.spvasm b/test/tint/builtins/gen/var/subgroupMatrixStore/f04d67.wgsl.expected.spvasm
index 9db988c..6d9c265 100644
--- a/test/tint/builtins/gen/var/subgroupMatrixStore/f04d67.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/subgroupMatrixStore/f04d67.wgsl.expected.spvasm
@@ -38,12 +38,12 @@
      %uint_8 = OpConstant %uint 8
      %uint_2 = OpConstant %uint 2
          %17 = OpTypeCooperativeMatrixKHR %int %uint_3 %uint_8 %uint_8 %uint_2
-         %16 = OpConstantNull %17
+      %int_0 = OpConstant %int 0
+         %16 = OpConstantComposite %17 %int_0
 %_ptr_Function_17 = OpTypePointer Function %17
 %_ptr_Workgroup_int = OpTypePointer Workgroup %int
-         %32 = OpTypeFunction %void %uint
+         %33 = OpTypeFunction %void %uint
        %bool = OpTypeBool
-      %int_0 = OpConstant %int 0
  %uint_24840 = OpConstant %uint 24840
 %subgroupMatrixStore_f04d67 = OpFunction %void None %11
          %12 = OpLabel
@@ -53,37 +53,37 @@
                OpStore %arg_1 %uint_1
                OpStore %arg_2 %16
                OpStore %arg_4 %uint_1
-         %24 = OpLoad %uint %arg_1 None
-         %25 = OpLoad %17 %arg_2 None
-         %26 = OpLoad %uint %arg_4 None
-         %27 = OpAccessChain %_ptr_Workgroup_int %arg_0 %24
-               OpCooperativeMatrixStoreKHR %27 %25 %uint_1 %26 NonPrivatePointer
+         %25 = OpLoad %uint %arg_1 None
+         %26 = OpLoad %17 %arg_2 None
+         %27 = OpLoad %uint %arg_4 None
+         %28 = OpAccessChain %_ptr_Workgroup_int %arg_0 %25
+               OpCooperativeMatrixStoreKHR %28 %26 %uint_1 %27 NonPrivatePointer
                OpReturn
                OpFunctionEnd
-%compute_main_inner = OpFunction %void None %32
+%compute_main_inner = OpFunction %void None %33
 %tint_local_index = OpFunctionParameter %uint
-         %33 = OpLabel
-               OpBranch %34
          %34 = OpLabel
-               OpBranch %37
-         %37 = OpLabel
-         %39 = OpPhi %uint %tint_local_index %34 %40 %36
-               OpLoopMerge %38 %36 None
                OpBranch %35
          %35 = OpLabel
-         %41 = OpUGreaterThanEqual %bool %39 %uint_64
-               OpSelectionMerge %43 None
-               OpBranchConditional %41 %44 %43
-         %44 = OpLabel
                OpBranch %38
-         %43 = OpLabel
-         %45 = OpAccessChain %_ptr_Workgroup_int %arg_0 %39
-               OpStore %45 %int_0 NonPrivatePointer
+         %38 = OpLabel
+         %40 = OpPhi %uint %tint_local_index %35 %41 %37
+               OpLoopMerge %39 %37 None
                OpBranch %36
          %36 = OpLabel
-         %40 = OpIAdd %uint %39 %uint_1
+         %42 = OpUGreaterThanEqual %bool %40 %uint_64
+               OpSelectionMerge %44 None
+               OpBranchConditional %42 %45 %44
+         %45 = OpLabel
+               OpBranch %39
+         %44 = OpLabel
+         %46 = OpAccessChain %_ptr_Workgroup_int %arg_0 %40
+               OpStore %46 %int_0 NonPrivatePointer
                OpBranch %37
-         %38 = OpLabel
+         %37 = OpLabel
+         %41 = OpIAdd %uint %40 %uint_1
+               OpBranch %38
+         %39 = OpLabel
                OpControlBarrier %uint_2 %uint_2 %uint_24840
          %49 = OpFunctionCall %void %subgroupMatrixStore_f04d67
                OpReturn