diff --git a/src/tint/lang/hlsl/hlsl.def b/src/tint/lang/hlsl/hlsl.def
index f0f44ab..877bf52 100644
--- a/src/tint/lang/hlsl/hlsl.def
+++ b/src/tint/lang/hlsl/hlsl.def
@@ -623,24 +623,24 @@
                             coords: vec4<f32>) -> vec4<f32>
 @member_function fn Sample(texture: texture_depth_2d,
                            sampler: sampler,
-                            coords: vec2<f32>) -> f32
+                            coords: vec2<f32>) -> vec4<f32>
 @member_function fn Sample(texture: texture_depth_2d,
                            sampler: sampler,
                             coords: vec2<f32>,
-                            offset: vec2<i32>) -> f32
+                            offset: vec2<i32>) -> vec4<f32>
 @member_function fn Sample(texture: texture_depth_2d_array,
                            sampler: sampler,
-                            coords: vec3<f32>) -> f32
+                            coords: vec3<f32>) -> vec4<f32>
 @member_function fn Sample(texture: texture_depth_2d_array,
                            sampler: sampler,
                             coords: vec3<f32>,
-                            offset: vec2<i32>) -> f32
+                            offset: vec2<i32>) -> vec4<f32>
 @member_function fn Sample(texture: texture_depth_cube,
                            sampler: sampler,
-                            coords: vec3<f32>) -> f32
+                            coords: vec3<f32>) -> vec4<f32>
 @member_function fn Sample(texture: texture_depth_cube_array,
                            sampler: sampler,
-                            coords: vec4<f32>) -> f32
+                            coords: vec4<f32>) -> vec4<f32>
 
 @member_function fn SampleBias(texture: texture_2d<f32>,
                                sampler: sampler,
@@ -814,26 +814,26 @@
 @member_function fn SampleLevel(texture: texture_depth_2d,
                                 sampler: sampler,
                                  coords: vec2<f32>,
-                                  level: f32) -> f32
+                                  level: f32) -> vec4<f32>
 @member_function fn SampleLevel(texture: texture_depth_2d,
                                 sampler: sampler,
                                  coords: vec2<f32>,
                                  level: f32,
-                                 offset: vec2<i32>) -> f32
+                                 offset: vec2<i32>) -> vec4<f32>
 @member_function fn SampleLevel(texture: texture_depth_2d_array,
                                 sampler: sampler,
                                  coords: vec3<f32>,
-                                  level: f32) -> f32
+                                  level: f32) -> vec4<f32>
 @member_function fn SampleLevel(texture: texture_depth_2d_array,
                                 sampler: sampler,
                                  coords: vec3<f32>,
                                   level: f32,
-                                 offset: vec2<i32>) -> f32
+                                 offset: vec2<i32>) -> vec4<f32>
 @member_function fn SampleLevel(texture: texture_depth_cube,
                                 sampler: sampler,
                                  coords: vec3<f32>,
-                                  level: f32) -> f32
+                                  level: f32) -> vec4<f32>
 @member_function fn SampleLevel(texture: texture_depth_cube_array,
                                 sampler: sampler,
                                  coords: vec4<f32>,
-                                  level: f32) -> f32
+                                  level: f32) -> vec4<f32>
diff --git a/src/tint/lang/hlsl/intrinsic/data.cc b/src/tint/lang/hlsl/intrinsic/data.cc
index 042221a..a09c776 100644
--- a/src/tint/lang/hlsl/intrinsic/data.cc
+++ b/src/tint/lang/hlsl/intrinsic/data.cc
@@ -4241,7 +4241,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(133),
-    /* return_matcher_indices */ MatcherIndicesIndex(2),
+    /* return_matcher_indices */ MatcherIndicesIndex(120),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4252,7 +4252,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(159),
-    /* return_matcher_indices */ MatcherIndicesIndex(2),
+    /* return_matcher_indices */ MatcherIndicesIndex(120),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4263,7 +4263,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(138),
-    /* return_matcher_indices */ MatcherIndicesIndex(2),
+    /* return_matcher_indices */ MatcherIndicesIndex(120),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4274,7 +4274,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(163),
-    /* return_matcher_indices */ MatcherIndicesIndex(2),
+    /* return_matcher_indices */ MatcherIndicesIndex(120),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4285,7 +4285,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(251),
-    /* return_matcher_indices */ MatcherIndicesIndex(2),
+    /* return_matcher_indices */ MatcherIndicesIndex(120),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4296,7 +4296,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(255),
-    /* return_matcher_indices */ MatcherIndicesIndex(2),
+    /* return_matcher_indices */ MatcherIndicesIndex(120),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4395,7 +4395,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(133),
-    /* return_matcher_indices */ MatcherIndicesIndex(2),
+    /* return_matcher_indices */ MatcherIndicesIndex(120),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4406,7 +4406,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(133),
-    /* return_matcher_indices */ MatcherIndicesIndex(2),
+    /* return_matcher_indices */ MatcherIndicesIndex(120),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4417,7 +4417,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(138),
-    /* return_matcher_indices */ MatcherIndicesIndex(2),
+    /* return_matcher_indices */ MatcherIndicesIndex(120),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4428,7 +4428,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(138),
-    /* return_matcher_indices */ MatcherIndicesIndex(2),
+    /* return_matcher_indices */ MatcherIndicesIndex(120),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4439,7 +4439,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(251),
-    /* return_matcher_indices */ MatcherIndicesIndex(2),
+    /* return_matcher_indices */ MatcherIndicesIndex(120),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4450,7 +4450,7 @@
     /* num_templates   */ 0,
     /* templates */ TemplateIndex(/* invalid */),
     /* parameters */ ParameterIndex(255),
-    /* return_matcher_indices */ MatcherIndicesIndex(2),
+    /* return_matcher_indices */ MatcherIndicesIndex(120),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4832,10 +4832,10 @@
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 0,
-    /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(133),
-    /* return_matcher_indices */ MatcherIndicesIndex(120),
+    /* num_templates   */ 1,
+    /* templates */ TemplateIndex(24),
+    /* parameters */ ParameterIndex(167),
+    /* return_matcher_indices */ MatcherIndicesIndex(124),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4843,10 +4843,10 @@
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 0,
-    /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(159),
-    /* return_matcher_indices */ MatcherIndicesIndex(120),
+    /* num_templates   */ 1,
+    /* templates */ TemplateIndex(24),
+    /* parameters */ ParameterIndex(167),
+    /* return_matcher_indices */ MatcherIndicesIndex(124),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4854,10 +4854,10 @@
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 0,
-    /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(138),
-    /* return_matcher_indices */ MatcherIndicesIndex(120),
+    /* num_templates   */ 1,
+    /* templates */ TemplateIndex(24),
+    /* parameters */ ParameterIndex(171),
+    /* return_matcher_indices */ MatcherIndicesIndex(124),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4865,10 +4865,10 @@
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 0,
-    /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(163),
-    /* return_matcher_indices */ MatcherIndicesIndex(120),
+    /* num_templates   */ 1,
+    /* templates */ TemplateIndex(24),
+    /* parameters */ ParameterIndex(171),
+    /* return_matcher_indices */ MatcherIndicesIndex(124),
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
@@ -4876,72 +4876,6 @@
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
-    /* num_templates   */ 0,
-    /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(251),
-    /* return_matcher_indices */ MatcherIndicesIndex(120),
-    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
-  },
-  {
-    /* [116] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
-    /* num_parameters */ 3,
-    /* num_explicit_templates */ 0,
-    /* num_templates   */ 0,
-    /* templates */ TemplateIndex(/* invalid */),
-    /* parameters */ ParameterIndex(255),
-    /* return_matcher_indices */ MatcherIndicesIndex(120),
-    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
-  },
-  {
-    /* [117] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
-    /* num_parameters */ 3,
-    /* num_explicit_templates */ 0,
-    /* num_templates   */ 1,
-    /* templates */ TemplateIndex(24),
-    /* parameters */ ParameterIndex(167),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
-    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
-  },
-  {
-    /* [118] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
-    /* num_parameters */ 4,
-    /* num_explicit_templates */ 0,
-    /* num_templates   */ 1,
-    /* templates */ TemplateIndex(24),
-    /* parameters */ ParameterIndex(167),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
-    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
-  },
-  {
-    /* [119] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
-    /* num_parameters */ 3,
-    /* num_explicit_templates */ 0,
-    /* num_templates   */ 1,
-    /* templates */ TemplateIndex(24),
-    /* parameters */ ParameterIndex(171),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
-    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
-  },
-  {
-    /* [120] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
-    /* num_parameters */ 4,
-    /* num_explicit_templates */ 0,
-    /* num_templates   */ 1,
-    /* templates */ TemplateIndex(24),
-    /* parameters */ ParameterIndex(171),
-    /* return_matcher_indices */ MatcherIndicesIndex(124),
-    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
-  },
-  {
-    /* [121] */
-    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
-    /* num_parameters */ 3,
-    /* num_explicit_templates */ 0,
     /* num_templates   */ 1,
     /* templates */ TemplateIndex(24),
     /* parameters */ ParameterIndex(334),
@@ -4949,7 +4883,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [122] */
+    /* [116] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
@@ -4960,7 +4894,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [123] */
+    /* [117] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
@@ -4971,7 +4905,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [124] */
+    /* [118] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
@@ -4982,7 +4916,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [125] */
+    /* [119] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
@@ -4993,7 +4927,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [126] */
+    /* [120] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
@@ -5004,7 +4938,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [127] */
+    /* [121] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
@@ -5015,7 +4949,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [128] */
+    /* [122] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
@@ -5026,7 +4960,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [129] */
+    /* [123] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
@@ -5037,7 +4971,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [130] */
+    /* [124] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
@@ -5048,7 +4982,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [131] */
+    /* [125] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
@@ -5059,7 +4993,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [132] */
+    /* [126] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
@@ -5070,7 +5004,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [133] */
+    /* [127] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
@@ -5081,7 +5015,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [134] */
+    /* [128] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
@@ -5092,7 +5026,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [135] */
+    /* [129] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
@@ -5103,7 +5037,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [136] */
+    /* [130] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
@@ -5114,7 +5048,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [137] */
+    /* [131] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
@@ -5125,7 +5059,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [138] */
+    /* [132] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
@@ -5136,7 +5070,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [139] */
+    /* [133] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
@@ -5147,7 +5081,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [140] */
+    /* [134] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
@@ -5158,7 +5092,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [141] */
+    /* [135] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
@@ -5169,7 +5103,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [142] */
+    /* [136] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
@@ -5180,7 +5114,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [143] */
+    /* [137] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 5,
     /* num_explicit_templates */ 0,
@@ -5191,7 +5125,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [144] */
+    /* [138] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
@@ -5202,7 +5136,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [145] */
+    /* [139] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 4,
     /* num_explicit_templates */ 0,
@@ -5213,7 +5147,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [146] */
+    /* [140] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
@@ -5224,7 +5158,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [147] */
+    /* [141] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
@@ -5235,7 +5169,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [148] */
+    /* [142] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
@@ -5246,7 +5180,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [149] */
+    /* [143] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
@@ -5257,7 +5191,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [150] */
+    /* [144] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
@@ -5268,7 +5202,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [151] */
+    /* [145] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
@@ -5279,7 +5213,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [152] */
+    /* [146] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
@@ -5290,7 +5224,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [153] */
+    /* [147] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
@@ -5301,7 +5235,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [154] */
+    /* [148] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
@@ -5312,7 +5246,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [155] */
+    /* [149] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
@@ -5323,7 +5257,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [156] */
+    /* [150] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
@@ -5334,7 +5268,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [157] */
+    /* [151] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 1,
     /* num_explicit_templates */ 0,
@@ -5345,7 +5279,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [158] */
+    /* [152] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
     /* num_parameters */ 0,
     /* num_explicit_templates */ 0,
@@ -5356,7 +5290,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [159] */
+    /* [153] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
@@ -5367,7 +5301,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [160] */
+    /* [154] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
@@ -5378,7 +5312,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [161] */
+    /* [155] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
@@ -5389,7 +5323,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [162] */
+    /* [156] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
@@ -5400,7 +5334,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [163] */
+    /* [157] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
@@ -5411,7 +5345,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [164] */
+    /* [158] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
@@ -5422,7 +5356,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [165] */
+    /* [159] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 2,
     /* num_explicit_templates */ 0,
@@ -5433,7 +5367,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [166] */
+    /* [160] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
@@ -5444,7 +5378,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [167] */
+    /* [161] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
@@ -5455,7 +5389,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [168] */
+    /* [162] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
@@ -5466,7 +5400,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [169] */
+    /* [163] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
@@ -5477,7 +5411,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [170] */
+    /* [164] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
@@ -5488,7 +5422,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [171] */
+    /* [165] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
@@ -5499,7 +5433,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [172] */
+    /* [166] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
@@ -5510,7 +5444,7 @@
     /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
   },
   {
-    /* [173] */
+    /* [167] */
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMemberFunction),
     /* num_parameters */ 3,
     /* num_explicit_templates */ 0,
@@ -5531,103 +5465,103 @@
     /* fn asint[T : f32_u32](T) -> i32 */
     /* fn asint[T : f32_u32, N : num](vec<N, T>) -> vec<N, i32> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(132),
+    /* overloads */ OverloadIndex(126),
   },
   {
     /* [1] */
     /* fn asuint[T : f32_i32](T) -> u32 */
     /* fn asuint[T : f32_i32, N : num](vec<N, T>) -> vec<N, u32> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(134),
+    /* overloads */ OverloadIndex(128),
   },
   {
     /* [2] */
     /* fn asfloat[T : iu32](T) -> f32 */
     /* fn asfloat[T : iu32, N : num](vec<N, T>) -> vec<N, f32> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(136),
+    /* overloads */ OverloadIndex(130),
   },
   {
     /* [3] */
     /* fn dot4add_i8packed(u32, u32, ptr<function, i32, writable>) -> i32 */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(152),
+    /* overloads */ OverloadIndex(146),
   },
   {
     /* [4] */
     /* fn dot4add_u8packed(u32, u32, ptr<function, u32, writable>) -> u32 */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(153),
+    /* overloads */ OverloadIndex(147),
   },
   {
     /* [5] */
     /* fn f32tof16(f32) -> u32 */
     /* fn f32tof16[N : num](vec<N, f32>) -> vec<N, u32> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(138),
+    /* overloads */ OverloadIndex(132),
   },
   {
     /* [6] */
     /* fn f16tof32(u32) -> f32 */
     /* fn f16tof32[N : num](vec<N, u32>) -> vec<N, f32> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(140),
+    /* overloads */ OverloadIndex(134),
   },
   {
     /* [7] */
     /* fn InterlockedCompareExchange[T : iu32](ptr<workgroup, atomic<T>, read_write>, compare_value: iu32, value: iu32, original_value: ptr<function, iu32, read_write>) */
     /* fn InterlockedCompareExchange(byte_address_buffer<read_write>, offset: iu32, compare_value: iu32, value: iu32, original_value: ptr<function, iu32, read_write>) */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(142),
+    /* overloads */ OverloadIndex(136),
   },
   {
     /* [8] */
     /* fn InterlockedExchange[T : iu32](ptr<workgroup, atomic<T>, read_write>, value: iu32, original_value: ptr<function, iu32, read_write>) */
     /* fn InterlockedExchange(byte_address_buffer<readable>, offset: iu32, value: iu32, original_value: ptr<function, iu32, read_write>) */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(144),
+    /* overloads */ OverloadIndex(138),
   },
   {
     /* [9] */
     /* fn InterlockedAdd[T : iu32](ptr<workgroup, atomic<T>, read_write>, value: iu32, original_value: ptr<function, iu32, read_write>) */
     /* fn InterlockedAdd(byte_address_buffer<readable>, offset: iu32, value: iu32, original_value: ptr<function, iu32, read_write>) */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(144),
+    /* overloads */ OverloadIndex(138),
   },
   {
     /* [10] */
     /* fn InterlockedMax[T : iu32](ptr<workgroup, atomic<T>, read_write>, value: iu32, original_value: ptr<function, iu32, read_write>) */
     /* fn InterlockedMax(byte_address_buffer<readable>, offset: iu32, value: iu32, original_value: ptr<function, iu32, read_write>) */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(144),
+    /* overloads */ OverloadIndex(138),
   },
   {
     /* [11] */
     /* fn InterlockedMin[T : iu32](ptr<workgroup, atomic<T>, read_write>, value: iu32, original_value: ptr<function, iu32, read_write>) */
     /* fn InterlockedMin(byte_address_buffer<readable>, offset: iu32, value: iu32, original_value: ptr<function, iu32, read_write>) */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(144),
+    /* overloads */ OverloadIndex(138),
   },
   {
     /* [12] */
     /* fn InterlockedAnd[T : iu32](ptr<workgroup, atomic<T>, read_write>, value: iu32, original_value: ptr<function, iu32, read_write>) */
     /* fn InterlockedAnd(byte_address_buffer<readable>, offset: iu32, value: iu32, original_value: ptr<function, iu32, read_write>) */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(144),
+    /* overloads */ OverloadIndex(138),
   },
   {
     /* [13] */
     /* fn InterlockedOr[T : iu32](ptr<workgroup, atomic<T>, read_write>, value: iu32, original_value: ptr<function, iu32, read_write>) */
     /* fn InterlockedOr(byte_address_buffer<readable>, offset: iu32, value: iu32, original_value: ptr<function, iu32, read_write>) */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(144),
+    /* overloads */ OverloadIndex(138),
   },
   {
     /* [14] */
     /* fn InterlockedXor[T : iu32](ptr<workgroup, atomic<T>, read_write>, value: iu32, original_value: ptr<function, iu32, read_write>) */
     /* fn InterlockedXor(byte_address_buffer<readable>, offset: iu32, value: iu32, original_value: ptr<function, iu32, read_write>) */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(144),
+    /* overloads */ OverloadIndex(138),
   },
   {
     /* [15] */
@@ -5635,32 +5569,32 @@
     /* fn mul[T : f32_f16, C : num, R : num](vec<R, T>, mat<R, C, T>) -> vec<C, T> */
     /* fn mul[T : f32_f16, K : num, C : num, R : num](mat<R, K, T>, mat<K, C, T>) -> mat<R, C, T> */
     /* num overloads */ 3,
-    /* overloads */ OverloadIndex(129),
+    /* overloads */ OverloadIndex(123),
   },
   {
     /* [16] */
     /* fn pack_u8(vec4<u32>) -> uint8_t4_packed */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(154),
+    /* overloads */ OverloadIndex(148),
   },
   {
     /* [17] */
     /* fn pack_s8(vec4<i32>) -> int8_t4_packed */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(155),
+    /* overloads */ OverloadIndex(149),
   },
   {
     /* [18] */
     /* fn pack_clamp_s8(vec4<i32>) -> int8_t4_packed */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(155),
+    /* overloads */ OverloadIndex(149),
   },
   {
     /* [19] */
     /* fn sign[T : fi32_f16](T) -> i32 */
     /* fn sign[N : num, T : fi32_f16](vec<N, T>) -> vec<N, i32> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(146),
+    /* overloads */ OverloadIndex(140),
   },
   {
     /* [20] */
@@ -5683,46 +5617,46 @@
     /* [21] */
     /* fn unpack_s8s32(int8_t4_packed) -> vec4<i32> */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(156),
+    /* overloads */ OverloadIndex(150),
   },
   {
     /* [22] */
     /* fn unpack_u8u32(uint8_t4_packed) -> vec4<u32> */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(157),
+    /* overloads */ OverloadIndex(151),
   },
   {
     /* [23] */
     /* fn WaveGetLaneIndex() -> u32 */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(158),
+    /* overloads */ OverloadIndex(152),
   },
   {
     /* [24] */
     /* fn WaveGetLaneCount() -> u32 */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(158),
+    /* overloads */ OverloadIndex(152),
   },
   {
     /* [25] */
     /* fn WaveReadLaneAt[T : fiu32_f16](T, u32) -> T */
     /* fn WaveReadLaneAt[N : num, T : fiu32_f16](vec<N, T>, u32) -> vec<N, T> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(148),
+    /* overloads */ OverloadIndex(142),
   },
   {
     /* [26] */
     /* fn modf[T : f32_f16](T, T) -> T */
     /* fn modf[N : num, T : f32_f16](vec<N, T>, vec<N, T>) -> vec<N, T> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(150),
+    /* overloads */ OverloadIndex(144),
   },
   {
     /* [27] */
     /* fn frexp[T : f32_f16](T, T) -> T */
     /* fn frexp[N : num, T : f32_f16](vec<N, T>, vec<N, T>) -> vec<N, T> */
     /* num overloads */ 2,
-    /* overloads */ OverloadIndex(150),
+    /* overloads */ OverloadIndex(144),
   },
   {
     /* [28] */
@@ -5754,91 +5688,91 @@
     /* [29] */
     /* fn Load2(byte_address_buffer<readable>, offset: u32) -> vec2<u32> */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(159),
+    /* overloads */ OverloadIndex(153),
   },
   {
     /* [30] */
     /* fn Load3(byte_address_buffer<readable>, offset: u32) -> vec3<u32> */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(160),
+    /* overloads */ OverloadIndex(154),
   },
   {
     /* [31] */
     /* fn Load4(byte_address_buffer<readable>, offset: u32) -> vec4<u32> */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(161),
+    /* overloads */ OverloadIndex(155),
   },
   {
     /* [32] */
     /* fn LoadF16(byte_address_buffer<readable>, offset: u32) -> f16 */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(162),
+    /* overloads */ OverloadIndex(156),
   },
   {
     /* [33] */
     /* fn Load2F16(byte_address_buffer<readable>, offset: u32) -> vec2<f16> */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(163),
+    /* overloads */ OverloadIndex(157),
   },
   {
     /* [34] */
     /* fn Load3F16(byte_address_buffer<readable>, offset: u32) -> vec3<f16> */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(164),
+    /* overloads */ OverloadIndex(158),
   },
   {
     /* [35] */
     /* fn Load4F16(byte_address_buffer<readable>, offset: u32) -> vec4<f16> */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(165),
+    /* overloads */ OverloadIndex(159),
   },
   {
     /* [36] */
     /* fn Store(byte_address_buffer<writable>, offset: u32, value: u32) */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(166),
+    /* overloads */ OverloadIndex(160),
   },
   {
     /* [37] */
     /* fn Store2(byte_address_buffer<writable>, offset: u32, value: vec2<u32>) */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(167),
+    /* overloads */ OverloadIndex(161),
   },
   {
     /* [38] */
     /* fn Store3(byte_address_buffer<writable>, offset: u32, value: vec3<u32>) */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(168),
+    /* overloads */ OverloadIndex(162),
   },
   {
     /* [39] */
     /* fn Store4(byte_address_buffer<writable>, offset: u32, value: vec4<u32>) */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(169),
+    /* overloads */ OverloadIndex(163),
   },
   {
     /* [40] */
     /* fn StoreF16(byte_address_buffer<writable>, offset: u32, value: f16) */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(170),
+    /* overloads */ OverloadIndex(164),
   },
   {
     /* [41] */
     /* fn Store2F16(byte_address_buffer<writable>, offset: u32, value: vec2<f16>) */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(171),
+    /* overloads */ OverloadIndex(165),
   },
   {
     /* [42] */
     /* fn Store3F16(byte_address_buffer<writable>, offset: u32, value: vec3<f16>) */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(172),
+    /* overloads */ OverloadIndex(166),
   },
   {
     /* [43] */
     /* fn Store4F16(byte_address_buffer<writable>, offset: u32, value: vec4<f16>) */
     /* num overloads */ 1,
-    /* overloads */ OverloadIndex(173),
+    /* overloads */ OverloadIndex(167),
   },
   {
     /* [44] */
@@ -5860,7 +5794,7 @@
     /* fn Gather(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> vec4<f32> */
     /* fn Gather(texture: texture_depth_cube_array, sampler: sampler, coords: vec4<f32>) -> vec4<f32> */
     /* num overloads */ 6,
-    /* overloads */ OverloadIndex(111),
+    /* overloads */ OverloadIndex(57),
   },
   {
     /* [46] */
@@ -5871,7 +5805,7 @@
     /* fn GatherAlpha[T : fiu32](texture: texture_cube<T>, sampler: sampler, coords: vec3<f32>) -> vec4<T> */
     /* fn GatherAlpha[T : fiu32](texture: texture_cube_array<T>, sampler: sampler, coords: vec4<f32>) -> vec4<T> */
     /* num overloads */ 6,
-    /* overloads */ OverloadIndex(117),
+    /* overloads */ OverloadIndex(111),
   },
   {
     /* [47] */
@@ -5882,7 +5816,7 @@
     /* fn GatherBlue[T : fiu32](texture: texture_cube<T>, sampler: sampler, coords: vec3<f32>) -> vec4<T> */
     /* fn GatherBlue[T : fiu32](texture: texture_cube_array<T>, sampler: sampler, coords: vec4<f32>) -> vec4<T> */
     /* num overloads */ 6,
-    /* overloads */ OverloadIndex(117),
+    /* overloads */ OverloadIndex(111),
   },
   {
     /* [48] */
@@ -5893,7 +5827,7 @@
     /* fn GatherGreen[T : fiu32](texture: texture_cube<T>, sampler: sampler, coords: vec3<f32>) -> vec4<T> */
     /* fn GatherGreen[T : fiu32](texture: texture_cube_array<T>, sampler: sampler, coords: vec4<f32>) -> vec4<T> */
     /* num overloads */ 6,
-    /* overloads */ OverloadIndex(117),
+    /* overloads */ OverloadIndex(111),
   },
   {
     /* [49] */
@@ -5904,7 +5838,7 @@
     /* fn GatherRed[T : fiu32](texture: texture_cube<T>, sampler: sampler, coords: vec3<f32>) -> vec4<T> */
     /* fn GatherRed[T : fiu32](texture: texture_cube_array<T>, sampler: sampler, coords: vec4<f32>) -> vec4<T> */
     /* num overloads */ 6,
-    /* overloads */ OverloadIndex(117),
+    /* overloads */ OverloadIndex(111),
   },
   {
     /* [50] */
@@ -5949,12 +5883,12 @@
     /* fn Sample(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, offset: vec3<i32>) -> vec4<f32> */
     /* fn Sample(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>) -> vec4<f32> */
     /* fn Sample(texture: texture_cube_array<f32>, sampler: sampler, coords: vec4<f32>) -> vec4<f32> */
-    /* fn Sample(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>) -> f32 */
-    /* fn Sample(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> f32 */
-    /* fn Sample(texture: texture_depth_2d_array, sampler: sampler, coords: vec3<f32>) -> f32 */
-    /* fn Sample(texture: texture_depth_2d_array, sampler: sampler, coords: vec3<f32>, offset: vec2<i32>) -> f32 */
-    /* fn Sample(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> f32 */
-    /* fn Sample(texture: texture_depth_cube_array, sampler: sampler, coords: vec4<f32>) -> f32 */
+    /* fn Sample(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
+    /* fn Sample(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> vec4<f32> */
+    /* fn Sample(texture: texture_depth_2d_array, sampler: sampler, coords: vec3<f32>) -> vec4<f32> */
+    /* fn Sample(texture: texture_depth_2d_array, sampler: sampler, coords: vec3<f32>, offset: vec2<i32>) -> vec4<f32> */
+    /* fn Sample(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> vec4<f32> */
+    /* fn Sample(texture: texture_depth_cube_array, sampler: sampler, coords: vec4<f32>) -> vec4<f32> */
     /* num overloads */ 15,
     /* overloads */ OverloadIndex(48),
   },
@@ -5980,7 +5914,7 @@
     /* fn SampleCmp(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, value: f32) -> f32 */
     /* fn SampleCmp(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec4<f32>, value: f32) -> f32 */
     /* num overloads */ 6,
-    /* overloads */ OverloadIndex(123),
+    /* overloads */ OverloadIndex(117),
   },
   {
     /* [54] */
@@ -5991,7 +5925,7 @@
     /* fn SampleCmpLevelZero(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, value: f32) -> f32 */
     /* fn SampleCmpLevelZero(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec4<f32>, value: f32) -> f32 */
     /* num overloads */ 6,
-    /* overloads */ OverloadIndex(123),
+    /* overloads */ OverloadIndex(117),
   },
   {
     /* [55] */
@@ -6016,12 +5950,12 @@
     /* fn SampleLevel(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, level: f32, offset: vec3<i32>) -> vec4<f32> */
     /* fn SampleLevel(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, level: f32) -> vec4<f32> */
     /* fn SampleLevel(texture: texture_cube_array<f32>, sampler: sampler, coords: vec4<f32>, level: f32) -> vec4<f32> */
-    /* fn SampleLevel(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: f32) -> f32 */
-    /* fn SampleLevel(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: f32, offset: vec2<i32>) -> f32 */
-    /* fn SampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: vec3<f32>, level: f32) -> f32 */
-    /* fn SampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: vec3<f32>, level: f32, offset: vec2<i32>) -> f32 */
-    /* fn SampleLevel(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>, level: f32) -> f32 */
-    /* fn SampleLevel(texture: texture_depth_cube_array, sampler: sampler, coords: vec4<f32>, level: f32) -> f32 */
+    /* fn SampleLevel(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: f32) -> vec4<f32> */
+    /* fn SampleLevel(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: f32, offset: vec2<i32>) -> vec4<f32> */
+    /* fn SampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: vec3<f32>, level: f32) -> vec4<f32> */
+    /* fn SampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: vec3<f32>, level: f32, offset: vec2<i32>) -> vec4<f32> */
+    /* fn SampleLevel(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>, level: f32) -> vec4<f32> */
+    /* fn SampleLevel(texture: texture_depth_cube_array, sampler: sampler, coords: vec4<f32>, level: f32) -> vec4<f32> */
     /* num overloads */ 14,
     /* overloads */ OverloadIndex(63),
   },
diff --git a/src/tint/lang/hlsl/writer/builtin_test.cc b/src/tint/lang/hlsl/writer/builtin_test.cc
index f6d8609..71e10ed 100644
--- a/src/tint/lang/hlsl/writer/builtin_test.cc
+++ b/src/tint/lang/hlsl/writer/builtin_test.cc
@@ -3816,7 +3816,7 @@
 Texture2D v : register(t0);
 SamplerState v_1 : register(s1);
 void foo() {
-  float x = v.Sample(v_1, float2(1.0f, 2.0f));
+  float x = v.Sample(v_1, float2(1.0f, 2.0f)).x;
 }
 
 )");
@@ -3851,7 +3851,7 @@
 Texture2D v : register(t0);
 SamplerState v_1 : register(s1);
 void foo() {
-  float x = v.Sample(v_1, float2(1.0f, 2.0f), int2(int(4), int(5)));
+  float x = v.Sample(v_1, float2(1.0f, 2.0f), int2(int(4), int(5))).x;
 }
 
 )");
@@ -3887,7 +3887,7 @@
 SamplerState v_1 : register(s1);
 void foo() {
   float2 v_2 = float2(1.0f, 2.0f);
-  float x = v.Sample(v_1, float3(v_2, float(4u)));
+  float x = v.Sample(v_1, float3(v_2, float(4u))).x;
 }
 
 )");
@@ -3924,7 +3924,7 @@
 SamplerState v_1 : register(s1);
 void foo() {
   float2 v_2 = float2(1.0f, 2.0f);
-  float x = v.Sample(v_1, float3(v_2, float(4u)), int2(int(4), int(5)));
+  float x = v.Sample(v_1, float3(v_2, float(4u)), int2(int(4), int(5))).x;
 }
 
 )");
@@ -3960,7 +3960,7 @@
 SamplerState v_1 : register(s1);
 void foo() {
   float3 v_2 = float3(1.0f, 2.0f, 3.0f);
-  float x = v.Sample(v_1, float4(v_2, float(4u)));
+  float x = v.Sample(v_1, float4(v_2, float(4u))).x;
 }
 
 )");
@@ -4289,7 +4289,7 @@
 SamplerState v_1 : register(s1);
 void foo() {
   float2 v_2 = float2(1.0f, 2.0f);
-  float x = v.SampleLevel(v_1, v_2, float(int(3)));
+  float x = v.SampleLevel(v_1, v_2, float(int(3))).x;
 }
 
 )");
@@ -4325,7 +4325,7 @@
 SamplerState v_1 : register(s1);
 void foo() {
   float2 v_2 = float2(1.0f, 2.0f);
-  float x = v.SampleLevel(v_1, v_2, float(int(3)), int2(int(4), int(5)));
+  float x = v.SampleLevel(v_1, v_2, float(int(3)), int2(int(4), int(5))).x;
 }
 
 )");
@@ -4362,7 +4362,7 @@
 void foo() {
   float2 v_2 = float2(1.0f, 2.0f);
   float3 v_3 = float3(v_2, float(4u));
-  float x = v.SampleLevel(v_1, v_3, float(3u));
+  float x = v.SampleLevel(v_1, v_3, float(3u)).x;
 }
 
 )");
@@ -4401,7 +4401,7 @@
 void foo() {
   float2 v_2 = float2(1.0f, 2.0f);
   float3 v_3 = float3(v_2, float(4u));
-  float x = v.SampleLevel(v_1, v_3, float(int(3)), int2(int(4), int(5)));
+  float x = v.SampleLevel(v_1, v_3, float(int(3)), int2(int(4), int(5))).x;
 }
 
 )");
@@ -4438,7 +4438,7 @@
 void foo() {
   float3 v_2 = float3(1.0f, 2.0f, 3.0f);
   float4 v_3 = float4(v_2, float(4u));
-  float x = v.SampleLevel(v_1, v_3, float(3u));
+  float x = v.SampleLevel(v_1, v_3, float(3u)).x;
 }
 
 )");
diff --git a/src/tint/lang/hlsl/writer/raise/builtin_polyfill.cc b/src/tint/lang/hlsl/writer/raise/builtin_polyfill.cc
index ac6b7a6..a8fc4b3 100644
--- a/src/tint/lang/hlsl/writer/raise/builtin_polyfill.cc
+++ b/src/tint/lang/hlsl/writer/raise/builtin_polyfill.cc
@@ -1262,8 +1262,14 @@
                     TINT_UNREACHABLE();
             }
 
-            b.MemberCallWithResult<hlsl::ir::MemberBuiltinCall>(
-                call->DetachResult(), hlsl::BuiltinFn::kSample, tex, params);
+            core::ir::Instruction* result = b.MemberCall<hlsl::ir::MemberBuiltinCall>(
+                ty.vec4<f32>(), hlsl::BuiltinFn::kSample, tex, params);
+            if (tex_type->Is<core::type::DepthTexture>()) {
+                // Swizzle x from vec4 result for depth textures
+                TINT_ASSERT(call->Result(0)->Type()->Is<core::type::F32>());
+                result = b.Swizzle(ty.f32(), result, {0});
+            }
+            result->SetResults(Vector{call->DetachResult()});
         });
         call->Destroy();
     }
@@ -1488,8 +1494,14 @@
                     TINT_UNREACHABLE();
             }
 
-            b.MemberCallWithResult<hlsl::ir::MemberBuiltinCall>(
-                call->DetachResult(), hlsl::BuiltinFn::kSampleLevel, tex, params);
+            core::ir::Instruction* result = b.MemberCall<hlsl::ir::MemberBuiltinCall>(
+                ty.vec4<f32>(), hlsl::BuiltinFn::kSampleLevel, tex, params);
+            if (tex_type->Is<core::type::DepthTexture>()) {
+                // Swizzle x from vec4 result for depth textures
+                TINT_ASSERT(call->Result(0)->Type()->Is<core::type::F32>());
+                result = b.Swizzle(ty.f32(), result, {0});
+            }
+            result->SetResults(Vector{call->DetachResult()});
         });
         call->Destroy();
     }
diff --git a/src/tint/lang/hlsl/writer/raise/builtin_polyfill_test.cc b/src/tint/lang/hlsl/writer/raise/builtin_polyfill_test.cc
index 036db8a..1006c1a 100644
--- a/src/tint/lang/hlsl/writer/raise/builtin_polyfill_test.cc
+++ b/src/tint/lang/hlsl/writer/raise/builtin_polyfill_test.cc
@@ -2706,8 +2706,9 @@
     %4:vec2<f32> = construct 1.0f, 2.0f
     %5:texture_depth_2d = load %1
     %6:sampler = load %2
-    %7:f32 = %5.Sample %6, %4
-    %x:f32 = let %7
+    %7:vec4<f32> = %5.Sample %6, %4
+    %8:f32 = swizzle %7, x
+    %x:f32 = let %8
     ret
   }
 }
@@ -2770,8 +2771,9 @@
     %4:vec2<f32> = construct 1.0f, 2.0f
     %5:texture_depth_2d = load %1
     %6:sampler = load %2
-    %7:f32 = %5.Sample %6, %4, vec2<i32>(4i, 5i)
-    %x:f32 = let %7
+    %7:vec4<f32> = %5.Sample %6, %4, vec2<i32>(4i, 5i)
+    %8:f32 = swizzle %7, x
+    %x:f32 = let %8
     ret
   }
 }
@@ -2836,8 +2838,9 @@
     %6:sampler = load %2
     %7:f32 = convert 4u
     %8:vec3<f32> = construct %4, %7
-    %9:f32 = %5.Sample %6, %8
-    %x:f32 = let %9
+    %9:vec4<f32> = %5.Sample %6, %8
+    %10:f32 = swizzle %9, x
+    %x:f32 = let %10
     ret
   }
 }
@@ -2903,8 +2906,9 @@
     %6:sampler = load %2
     %7:f32 = convert 4u
     %8:vec3<f32> = construct %4, %7
-    %9:f32 = %5.Sample %6, %8, vec2<i32>(4i, 5i)
-    %x:f32 = let %9
+    %9:vec4<f32> = %5.Sample %6, %8, vec2<i32>(4i, 5i)
+    %10:f32 = swizzle %9, x
+    %x:f32 = let %10
     ret
   }
 }
@@ -2969,8 +2973,9 @@
     %6:sampler = load %2
     %7:f32 = convert 4u
     %8:vec4<f32> = construct %4, %7
-    %9:f32 = %5.Sample %6, %8
-    %x:f32 = let %9
+    %9:vec4<f32> = %5.Sample %6, %8
+    %10:f32 = swizzle %9, x
+    %x:f32 = let %10
     ret
   }
 }
@@ -5437,8 +5442,9 @@
     %5:texture_depth_2d = load %1
     %6:sampler = load %2
     %7:f32 = convert 3i
-    %8:f32 = %5.SampleLevel %6, %4, %7
-    %x:f32 = let %8
+    %8:vec4<f32> = %5.SampleLevel %6, %4, %7
+    %9:f32 = swizzle %8, x
+    %x:f32 = let %9
     ret
   }
 }
@@ -5502,8 +5508,9 @@
     %5:texture_depth_2d = load %1
     %6:sampler = load %2
     %7:f32 = convert 3u
-    %8:f32 = %5.SampleLevel %6, %4, %7, vec2<i32>(4i, 5i)
-    %x:f32 = let %8
+    %8:vec4<f32> = %5.SampleLevel %6, %4, %7, vec2<i32>(4i, 5i)
+    %9:f32 = swizzle %8, x
+    %x:f32 = let %9
     ret
   }
 }
@@ -5569,8 +5576,9 @@
     %7:f32 = convert 4u
     %8:vec3<f32> = construct %4, %7
     %9:f32 = convert 3i
-    %10:f32 = %5.SampleLevel %6, %8, %9
-    %x:f32 = let %10
+    %10:vec4<f32> = %5.SampleLevel %6, %8, %9
+    %11:f32 = swizzle %10, x
+    %x:f32 = let %11
     ret
   }
 }
@@ -5638,8 +5646,9 @@
     %7:f32 = convert 4u
     %8:vec3<f32> = construct %4, %7
     %9:f32 = convert 3u
-    %10:f32 = %5.SampleLevel %6, %8, %9, vec2<i32>(4i, 5i)
-    %x:f32 = let %10
+    %10:vec4<f32> = %5.SampleLevel %6, %8, %9, vec2<i32>(4i, 5i)
+    %11:f32 = swizzle %10, x
+    %x:f32 = let %11
     ret
   }
 }
@@ -5705,8 +5714,9 @@
     %7:f32 = convert 4u
     %8:vec4<f32> = construct %4, %7
     %9:f32 = convert 3i
-    %10:f32 = %5.SampleLevel %6, %8, %9
-    %x:f32 = let %10
+    %10:vec4<f32> = %5.SampleLevel %6, %8, %9
+    %11:f32 = swizzle %10, x
+    %x:f32 = let %11
     ret
   }
 }
diff --git a/test/tint/bug/tint/978.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/978.wgsl.expected.ir.dxc.hlsl
index da591b7..38aa326 100644
--- a/test/tint/bug/tint/978.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/978.wgsl.expected.ir.dxc.hlsl
@@ -18,7 +18,7 @@
 Texture2D depthMap : register(t5, space1);
 SamplerState texSampler : register(s3, space1);
 FragmentOutput main_inner(FragmentInput fIn) {
-  float tint_symbol = depthMap.Sample(texSampler, fIn.vUv);
+  float tint_symbol = depthMap.Sample(texSampler, fIn.vUv).x;
   float3 color = float3(tint_symbol, tint_symbol, tint_symbol);
   FragmentOutput fOut = (FragmentOutput)0;
   fOut.color = float4(color, 1.0f);
diff --git a/test/tint/bug/tint/978.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/978.wgsl.expected.ir.fxc.hlsl
index da591b7..38aa326 100644
--- a/test/tint/bug/tint/978.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/978.wgsl.expected.ir.fxc.hlsl
@@ -18,7 +18,7 @@
 Texture2D depthMap : register(t5, space1);
 SamplerState texSampler : register(s3, space1);
 FragmentOutput main_inner(FragmentInput fIn) {
-  float tint_symbol = depthMap.Sample(texSampler, fIn.vUv);
+  float tint_symbol = depthMap.Sample(texSampler, fIn.vUv).x;
   float3 color = float3(tint_symbol, tint_symbol, tint_symbol);
   FragmentOutput fOut = (FragmentOutput)0;
   fOut.color = float4(color, 1.0f);
diff --git a/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl.expected.ir.dxc.hlsl
index 3e90d35..110bca2 100644
--- a/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 Texture2D arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSample_0dff6c() {
-  float res = arg_0.Sample(arg_1, (1.0f).xx, (int(1)).xx);
+  float res = arg_0.Sample(arg_1, (1.0f).xx, (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl.expected.ir.fxc.hlsl
index 3e90d35..110bca2 100644
--- a/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 Texture2D arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSample_0dff6c() {
-  float res = arg_0.Sample(arg_1, (1.0f).xx, (int(1)).xx);
+  float res = arg_0.Sample(arg_1, (1.0f).xx, (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSample/1a4e1b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSample/1a4e1b.wgsl.expected.ir.dxc.hlsl
index c699117..f37847c 100644
--- a/test/tint/builtins/gen/literal/textureSample/1a4e1b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/1a4e1b.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSample_1a4e1b() {
-  float res = arg_0.Sample(arg_1, float3((1.0f).xx, float(1u)));
+  float res = arg_0.Sample(arg_1, float3((1.0f).xx, float(1u))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSample/1a4e1b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSample/1a4e1b.wgsl.expected.ir.fxc.hlsl
index c699117..f37847c 100644
--- a/test/tint/builtins/gen/literal/textureSample/1a4e1b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/1a4e1b.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSample_1a4e1b() {
-  float res = arg_0.Sample(arg_1, float3((1.0f).xx, float(1u)));
+  float res = arg_0.Sample(arg_1, float3((1.0f).xx, float(1u))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSample/38bbb9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSample/38bbb9.wgsl.expected.ir.dxc.hlsl
index e738eee..a2fc5bb 100644
--- a/test/tint/builtins/gen/literal/textureSample/38bbb9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/38bbb9.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 Texture2D arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSample_38bbb9() {
-  float res = arg_0.Sample(arg_1, (1.0f).xx);
+  float res = arg_0.Sample(arg_1, (1.0f).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSample/38bbb9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSample/38bbb9.wgsl.expected.ir.fxc.hlsl
index e738eee..a2fc5bb 100644
--- a/test/tint/builtins/gen/literal/textureSample/38bbb9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/38bbb9.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 Texture2D arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSample_38bbb9() {
-  float res = arg_0.Sample(arg_1, (1.0f).xx);
+  float res = arg_0.Sample(arg_1, (1.0f).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.ir.dxc.hlsl
index 7bc2d98..f7e9f45 100644
--- a/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSample_4703d0() {
-  float res = arg_0.Sample(arg_1, float3((1.0f).xx, float(1u)), (int(1)).xx);
+  float res = arg_0.Sample(arg_1, float3((1.0f).xx, float(1u)), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.ir.fxc.hlsl
index 7bc2d98..f7e9f45 100644
--- a/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSample_4703d0() {
-  float res = arg_0.Sample(arg_1, float3((1.0f).xx, float(1u)), (int(1)).xx);
+  float res = arg_0.Sample(arg_1, float3((1.0f).xx, float(1u)), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.ir.dxc.hlsl
index 21c9afa..0078aef 100644
--- a/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSample_60bf45() {
-  float res = arg_0.Sample(arg_1, float3((1.0f).xx, float(int(1))), (int(1)).xx);
+  float res = arg_0.Sample(arg_1, float3((1.0f).xx, float(int(1))), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.ir.fxc.hlsl
index 21c9afa..0078aef 100644
--- a/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSample_60bf45() {
-  float res = arg_0.Sample(arg_1, float3((1.0f).xx, float(int(1))), (int(1)).xx);
+  float res = arg_0.Sample(arg_1, float3((1.0f).xx, float(int(1))), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSample/7e9ffd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSample/7e9ffd.wgsl.expected.ir.dxc.hlsl
index f45e457..e330688 100644
--- a/test/tint/builtins/gen/literal/textureSample/7e9ffd.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/7e9ffd.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSample_7e9ffd() {
-  float res = arg_0.Sample(arg_1, float3((1.0f).xx, float(int(1))));
+  float res = arg_0.Sample(arg_1, float3((1.0f).xx, float(int(1)))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSample/7e9ffd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSample/7e9ffd.wgsl.expected.ir.fxc.hlsl
index f45e457..e330688 100644
--- a/test/tint/builtins/gen/literal/textureSample/7e9ffd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/7e9ffd.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSample_7e9ffd() {
-  float res = arg_0.Sample(arg_1, float3((1.0f).xx, float(int(1))));
+  float res = arg_0.Sample(arg_1, float3((1.0f).xx, float(int(1)))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSample/7fd8cb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSample/7fd8cb.wgsl.expected.ir.dxc.hlsl
index cb5a2b0..39ed674 100644
--- a/test/tint/builtins/gen/literal/textureSample/7fd8cb.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/7fd8cb.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSample_7fd8cb() {
-  float res = arg_0.Sample(arg_1, float4((1.0f).xxx, float(1u)));
+  float res = arg_0.Sample(arg_1, float4((1.0f).xxx, float(1u))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSample/7fd8cb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSample/7fd8cb.wgsl.expected.ir.fxc.hlsl
index cb5a2b0..39ed674 100644
--- a/test/tint/builtins/gen/literal/textureSample/7fd8cb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/7fd8cb.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSample_7fd8cb() {
-  float res = arg_0.Sample(arg_1, float4((1.0f).xxx, float(1u)));
+  float res = arg_0.Sample(arg_1, float4((1.0f).xxx, float(1u))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.ir.dxc.hlsl
index 45fef82..a80fe56 100644
--- a/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSample_c2f4e8() {
-  float res = arg_0.Sample(arg_1, float4((1.0f).xxx, float(int(1))));
+  float res = arg_0.Sample(arg_1, float4((1.0f).xxx, float(int(1)))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.ir.fxc.hlsl
index 45fef82..a80fe56 100644
--- a/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSample_c2f4e8() {
-  float res = arg_0.Sample(arg_1, float4((1.0f).xxx, float(int(1))));
+  float res = arg_0.Sample(arg_1, float4((1.0f).xxx, float(int(1)))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSample/ea7030.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSample/ea7030.wgsl.expected.ir.dxc.hlsl
index f014bde..5df084c 100644
--- a/test/tint/builtins/gen/literal/textureSample/ea7030.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/ea7030.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 TextureCube arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSample_ea7030() {
-  float res = arg_0.Sample(arg_1, (1.0f).xxx);
+  float res = arg_0.Sample(arg_1, (1.0f).xxx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSample/ea7030.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSample/ea7030.wgsl.expected.ir.fxc.hlsl
index f014bde..5df084c 100644
--- a/test/tint/builtins/gen/literal/textureSample/ea7030.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/ea7030.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 TextureCube arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSample_ea7030() {
-  float res = arg_0.Sample(arg_1, (1.0f).xxx);
+  float res = arg_0.Sample(arg_1, (1.0f).xxx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/02be59.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/02be59.wgsl.expected.ir.dxc.hlsl
index 69ff5cb..01d92b9 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/02be59.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/02be59.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_02be59() {
-  float res = arg_0.SampleLevel(arg_1, (1.0f).xx, float(int(1)));
+  float res = arg_0.SampleLevel(arg_1, (1.0f).xx, float(int(1))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/02be59.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/02be59.wgsl.expected.ir.fxc.hlsl
index 69ff5cb..01d92b9 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/02be59.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/02be59.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_02be59() {
-  float res = arg_0.SampleLevel(arg_1, (1.0f).xx, float(int(1)));
+  float res = arg_0.SampleLevel(arg_1, (1.0f).xx, float(int(1))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.ir.dxc.hlsl
index ab94714..0834d55 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_1b0291() {
-  float res = arg_0.SampleLevel(arg_1, (1.0f).xxx, float(int(1)));
+  float res = arg_0.SampleLevel(arg_1, (1.0f).xxx, float(int(1))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.ir.fxc.hlsl
index ab94714..0834d55 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_1b0291() {
-  float res = arg_0.SampleLevel(arg_1, (1.0f).xxx, float(int(1)));
+  float res = arg_0.SampleLevel(arg_1, (1.0f).xxx, float(int(1))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.ir.dxc.hlsl
index 98eaa44..fe17bd9 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_1bf73e() {
   float3 v = float3((1.0f).xx, float(int(1)));
-  float res = arg_0.SampleLevel(arg_1, v, float(int(1)));
+  float res = arg_0.SampleLevel(arg_1, v, float(int(1))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.ir.fxc.hlsl
index 98eaa44..fe17bd9 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_1bf73e() {
   float3 v = float3((1.0f).xx, float(int(1)));
-  float res = arg_0.SampleLevel(arg_1, v, float(int(1)));
+  float res = arg_0.SampleLevel(arg_1, v, float(int(1))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/2974eb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/2974eb.wgsl.expected.ir.dxc.hlsl
index 57e3ef5..e446dee 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/2974eb.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/2974eb.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_2974eb() {
   float3 v = float3((1.0f).xx, float(int(1)));
-  float res = arg_0.SampleLevel(arg_1, v, float(1u));
+  float res = arg_0.SampleLevel(arg_1, v, float(1u)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/2974eb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/2974eb.wgsl.expected.ir.fxc.hlsl
index 57e3ef5..e446dee 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/2974eb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/2974eb.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_2974eb() {
   float3 v = float3((1.0f).xx, float(int(1)));
-  float res = arg_0.SampleLevel(arg_1, v, float(1u));
+  float res = arg_0.SampleLevel(arg_1, v, float(1u)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.ir.dxc.hlsl
index a9eb83b..7aaa756 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_36780e() {
   float3 v = float3((1.0f).xx, float(int(1)));
-  float res = arg_0.SampleLevel(arg_1, v, float(int(1)), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v, float(int(1)), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.ir.fxc.hlsl
index a9eb83b..7aaa756 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_36780e() {
   float3 v = float3((1.0f).xx, float(int(1)));
-  float res = arg_0.SampleLevel(arg_1, v, float(int(1)), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v, float(int(1)), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.ir.dxc.hlsl
index 4d80354..a88c527 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_36f0d3() {
   float3 v = float3((1.0f).xx, float(int(1)));
-  float res = arg_0.SampleLevel(arg_1, v, float(1u), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v, float(1u), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.ir.fxc.hlsl
index 4d80354..a88c527 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_36f0d3() {
   float3 v = float3((1.0f).xx, float(int(1)));
-  float res = arg_0.SampleLevel(arg_1, v, float(1u), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v, float(1u), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/3c3442.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/3c3442.wgsl.expected.ir.dxc.hlsl
index 80cf221..89ba701 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/3c3442.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/3c3442.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_3c3442() {
   float3 v = float3((1.0f).xx, float(1u));
-  float res = arg_0.SampleLevel(arg_1, v, float(int(1)));
+  float res = arg_0.SampleLevel(arg_1, v, float(int(1))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/3c3442.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/3c3442.wgsl.expected.ir.fxc.hlsl
index 80cf221..89ba701 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/3c3442.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/3c3442.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_3c3442() {
   float3 v = float3((1.0f).xx, float(1u));
-  float res = arg_0.SampleLevel(arg_1, v, float(int(1)));
+  float res = arg_0.SampleLevel(arg_1, v, float(int(1))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/615583.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/615583.wgsl.expected.ir.dxc.hlsl
index 34272d3..35c472d 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/615583.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/615583.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_615583() {
   float3 v = float3((1.0f).xx, float(1u));
-  float res = arg_0.SampleLevel(arg_1, v, float(1u));
+  float res = arg_0.SampleLevel(arg_1, v, float(1u)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/615583.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/615583.wgsl.expected.ir.fxc.hlsl
index 34272d3..35c472d 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/615583.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/615583.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_615583() {
   float3 v = float3((1.0f).xx, float(1u));
-  float res = arg_0.SampleLevel(arg_1, v, float(1u));
+  float res = arg_0.SampleLevel(arg_1, v, float(1u)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/73e892.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/73e892.wgsl.expected.ir.dxc.hlsl
index ac40070..a712801 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/73e892.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/73e892.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_73e892() {
-  float res = arg_0.SampleLevel(arg_1, (1.0f).xx, float(1u));
+  float res = arg_0.SampleLevel(arg_1, (1.0f).xx, float(1u)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/73e892.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/73e892.wgsl.expected.ir.fxc.hlsl
index ac40070..a712801 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/73e892.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/73e892.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_73e892() {
-  float res = arg_0.SampleLevel(arg_1, (1.0f).xx, float(1u));
+  float res = arg_0.SampleLevel(arg_1, (1.0f).xx, float(1u)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl.expected.ir.dxc.hlsl
index f383d9a..0453e38 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_749baf() {
-  float res = arg_0.SampleLevel(arg_1, (1.0f).xx, float(int(1)), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, (1.0f).xx, float(int(1)), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl.expected.ir.fxc.hlsl
index f383d9a..0453e38 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_749baf() {
-  float res = arg_0.SampleLevel(arg_1, (1.0f).xx, float(int(1)), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, (1.0f).xx, float(int(1)), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/941a53.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/941a53.wgsl.expected.ir.dxc.hlsl
index f5dd164..e53489c 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/941a53.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/941a53.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_941a53() {
   float4 v = float4((1.0f).xxx, float(1u));
-  float res = arg_0.SampleLevel(arg_1, v, float(1u));
+  float res = arg_0.SampleLevel(arg_1, v, float(1u)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/941a53.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/941a53.wgsl.expected.ir.fxc.hlsl
index f5dd164..e53489c 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/941a53.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/941a53.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_941a53() {
   float4 v = float4((1.0f).xxx, float(1u));
-  float res = arg_0.SampleLevel(arg_1, v, float(1u));
+  float res = arg_0.SampleLevel(arg_1, v, float(1u)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/a12142.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/a12142.wgsl.expected.ir.dxc.hlsl
index 892e68b..fb57bfd 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/a12142.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/a12142.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_a12142() {
   float4 v = float4((1.0f).xxx, float(int(1)));
-  float res = arg_0.SampleLevel(arg_1, v, float(1u));
+  float res = arg_0.SampleLevel(arg_1, v, float(1u)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/a12142.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/a12142.wgsl.expected.ir.fxc.hlsl
index 892e68b..fb57bfd 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/a12142.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/a12142.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_a12142() {
   float4 v = float4((1.0f).xxx, float(int(1)));
-  float res = arg_0.SampleLevel(arg_1, v, float(1u));
+  float res = arg_0.SampleLevel(arg_1, v, float(1u)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.ir.dxc.hlsl
index 95ef5e0..63f2916 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_ae5e39() {
   float4 v = float4((1.0f).xxx, float(int(1)));
-  float res = arg_0.SampleLevel(arg_1, v, float(int(1)));
+  float res = arg_0.SampleLevel(arg_1, v, float(int(1))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.ir.fxc.hlsl
index 95ef5e0..63f2916 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_ae5e39() {
   float4 v = float4((1.0f).xxx, float(int(1)));
-  float res = arg_0.SampleLevel(arg_1, v, float(int(1)));
+  float res = arg_0.SampleLevel(arg_1, v, float(int(1))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/ae92a2.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/ae92a2.wgsl.expected.ir.dxc.hlsl
index 7164062..725aecf 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/ae92a2.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/ae92a2.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_ae92a2() {
-  float res = arg_0.SampleLevel(arg_1, (1.0f).xxx, float(1u));
+  float res = arg_0.SampleLevel(arg_1, (1.0f).xxx, float(1u)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/ae92a2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/ae92a2.wgsl.expected.ir.fxc.hlsl
index 7164062..725aecf 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/ae92a2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/ae92a2.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_ae92a2() {
-  float res = arg_0.SampleLevel(arg_1, (1.0f).xxx, float(1u));
+  float res = arg_0.SampleLevel(arg_1, (1.0f).xxx, float(1u)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.ir.dxc.hlsl
index a3aa219..b778b3a 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_cdfe0f() {
   float3 v = float3((1.0f).xx, float(1u));
-  float res = arg_0.SampleLevel(arg_1, v, float(1u), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v, float(1u), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.ir.fxc.hlsl
index a3aa219..b778b3a 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_cdfe0f() {
   float3 v = float3((1.0f).xx, float(1u));
-  float res = arg_0.SampleLevel(arg_1, v, float(1u), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v, float(1u), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.ir.dxc.hlsl
index 2aac8f7..11e7319 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_e6ce9e() {
   float3 v = float3((1.0f).xx, float(1u));
-  float res = arg_0.SampleLevel(arg_1, v, float(int(1)), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v, float(int(1)), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.ir.fxc.hlsl
index 2aac8f7..11e7319 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_e6ce9e() {
   float3 v = float3((1.0f).xx, float(1u));
-  float res = arg_0.SampleLevel(arg_1, v, float(int(1)), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v, float(int(1)), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/f3b2c8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/f3b2c8.wgsl.expected.ir.dxc.hlsl
index 3a45661..aa10271 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/f3b2c8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/f3b2c8.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_f3b2c8() {
-  float res = arg_0.SampleLevel(arg_1, (1.0f).xx, float(1u), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, (1.0f).xx, float(1u), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/f3b2c8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/f3b2c8.wgsl.expected.ir.fxc.hlsl
index 3a45661..aa10271 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/f3b2c8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/f3b2c8.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_f3b2c8() {
-  float res = arg_0.SampleLevel(arg_1, (1.0f).xx, float(1u), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, (1.0f).xx, float(1u), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/ff11bc.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/ff11bc.wgsl.expected.ir.dxc.hlsl
index 38ece8b..5178246 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/ff11bc.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/ff11bc.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_ff11bc() {
   float4 v = float4((1.0f).xxx, float(1u));
-  float res = arg_0.SampleLevel(arg_1, v, float(int(1)));
+  float res = arg_0.SampleLevel(arg_1, v, float(int(1))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/ff11bc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/ff11bc.wgsl.expected.ir.fxc.hlsl
index 38ece8b..5178246 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/ff11bc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/ff11bc.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSampleLevel_ff11bc() {
   float4 v = float4((1.0f).xxx, float(1u));
-  float res = arg_0.SampleLevel(arg_1, v, float(int(1)));
+  float res = arg_0.SampleLevel(arg_1, v, float(int(1))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl.expected.ir.dxc.hlsl
index 3c410ca..ebdc3ba 100644
--- a/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl.expected.ir.dxc.hlsl
@@ -4,7 +4,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSample_0dff6c() {
   float2 arg_2 = (1.0f).xx;
-  float res = arg_0.Sample(arg_1, arg_2, (int(1)).xx);
+  float res = arg_0.Sample(arg_1, arg_2, (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl.expected.ir.fxc.hlsl
index 3c410ca..ebdc3ba 100644
--- a/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl.expected.ir.fxc.hlsl
@@ -4,7 +4,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSample_0dff6c() {
   float2 arg_2 = (1.0f).xx;
-  float res = arg_0.Sample(arg_1, arg_2, (int(1)).xx);
+  float res = arg_0.Sample(arg_1, arg_2, (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSample/1a4e1b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSample/1a4e1b.wgsl.expected.ir.dxc.hlsl
index 460aae3..053fca6 100644
--- a/test/tint/builtins/gen/var/textureSample/1a4e1b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/1a4e1b.wgsl.expected.ir.dxc.hlsl
@@ -6,7 +6,7 @@
   float2 arg_2 = (1.0f).xx;
   uint arg_3 = 1u;
   float2 v = arg_2;
-  float res = arg_0.Sample(arg_1, float3(v, float(arg_3)));
+  float res = arg_0.Sample(arg_1, float3(v, float(arg_3))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSample/1a4e1b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSample/1a4e1b.wgsl.expected.ir.fxc.hlsl
index 460aae3..053fca6 100644
--- a/test/tint/builtins/gen/var/textureSample/1a4e1b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/1a4e1b.wgsl.expected.ir.fxc.hlsl
@@ -6,7 +6,7 @@
   float2 arg_2 = (1.0f).xx;
   uint arg_3 = 1u;
   float2 v = arg_2;
-  float res = arg_0.Sample(arg_1, float3(v, float(arg_3)));
+  float res = arg_0.Sample(arg_1, float3(v, float(arg_3))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSample/38bbb9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSample/38bbb9.wgsl.expected.ir.dxc.hlsl
index 2a9f7e2..1109d57 100644
--- a/test/tint/builtins/gen/var/textureSample/38bbb9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/38bbb9.wgsl.expected.ir.dxc.hlsl
@@ -4,7 +4,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSample_38bbb9() {
   float2 arg_2 = (1.0f).xx;
-  float res = arg_0.Sample(arg_1, arg_2);
+  float res = arg_0.Sample(arg_1, arg_2).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSample/38bbb9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSample/38bbb9.wgsl.expected.ir.fxc.hlsl
index 2a9f7e2..1109d57 100644
--- a/test/tint/builtins/gen/var/textureSample/38bbb9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/38bbb9.wgsl.expected.ir.fxc.hlsl
@@ -4,7 +4,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSample_38bbb9() {
   float2 arg_2 = (1.0f).xx;
-  float res = arg_0.Sample(arg_1, arg_2);
+  float res = arg_0.Sample(arg_1, arg_2).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.ir.dxc.hlsl
index 662cf4b..0be0ef5 100644
--- a/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.ir.dxc.hlsl
@@ -6,7 +6,7 @@
   float2 arg_2 = (1.0f).xx;
   uint arg_3 = 1u;
   float2 v = arg_2;
-  float res = arg_0.Sample(arg_1, float3(v, float(arg_3)), (int(1)).xx);
+  float res = arg_0.Sample(arg_1, float3(v, float(arg_3)), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.ir.fxc.hlsl
index 662cf4b..0be0ef5 100644
--- a/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.ir.fxc.hlsl
@@ -6,7 +6,7 @@
   float2 arg_2 = (1.0f).xx;
   uint arg_3 = 1u;
   float2 v = arg_2;
-  float res = arg_0.Sample(arg_1, float3(v, float(arg_3)), (int(1)).xx);
+  float res = arg_0.Sample(arg_1, float3(v, float(arg_3)), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.ir.dxc.hlsl
index e25ae04..960d43e 100644
--- a/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.ir.dxc.hlsl
@@ -6,7 +6,7 @@
   float2 arg_2 = (1.0f).xx;
   int arg_3 = int(1);
   float2 v = arg_2;
-  float res = arg_0.Sample(arg_1, float3(v, float(arg_3)), (int(1)).xx);
+  float res = arg_0.Sample(arg_1, float3(v, float(arg_3)), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.ir.fxc.hlsl
index e25ae04..960d43e 100644
--- a/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.ir.fxc.hlsl
@@ -6,7 +6,7 @@
   float2 arg_2 = (1.0f).xx;
   int arg_3 = int(1);
   float2 v = arg_2;
-  float res = arg_0.Sample(arg_1, float3(v, float(arg_3)), (int(1)).xx);
+  float res = arg_0.Sample(arg_1, float3(v, float(arg_3)), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSample/7e9ffd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSample/7e9ffd.wgsl.expected.ir.dxc.hlsl
index b18e9df..8263e12 100644
--- a/test/tint/builtins/gen/var/textureSample/7e9ffd.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/7e9ffd.wgsl.expected.ir.dxc.hlsl
@@ -6,7 +6,7 @@
   float2 arg_2 = (1.0f).xx;
   int arg_3 = int(1);
   float2 v = arg_2;
-  float res = arg_0.Sample(arg_1, float3(v, float(arg_3)));
+  float res = arg_0.Sample(arg_1, float3(v, float(arg_3))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSample/7e9ffd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSample/7e9ffd.wgsl.expected.ir.fxc.hlsl
index b18e9df..8263e12 100644
--- a/test/tint/builtins/gen/var/textureSample/7e9ffd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/7e9ffd.wgsl.expected.ir.fxc.hlsl
@@ -6,7 +6,7 @@
   float2 arg_2 = (1.0f).xx;
   int arg_3 = int(1);
   float2 v = arg_2;
-  float res = arg_0.Sample(arg_1, float3(v, float(arg_3)));
+  float res = arg_0.Sample(arg_1, float3(v, float(arg_3))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSample/7fd8cb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSample/7fd8cb.wgsl.expected.ir.dxc.hlsl
index 38f1bfa..9a1ace7 100644
--- a/test/tint/builtins/gen/var/textureSample/7fd8cb.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/7fd8cb.wgsl.expected.ir.dxc.hlsl
@@ -6,7 +6,7 @@
   float3 arg_2 = (1.0f).xxx;
   uint arg_3 = 1u;
   float3 v = arg_2;
-  float res = arg_0.Sample(arg_1, float4(v, float(arg_3)));
+  float res = arg_0.Sample(arg_1, float4(v, float(arg_3))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSample/7fd8cb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSample/7fd8cb.wgsl.expected.ir.fxc.hlsl
index 38f1bfa..9a1ace7 100644
--- a/test/tint/builtins/gen/var/textureSample/7fd8cb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/7fd8cb.wgsl.expected.ir.fxc.hlsl
@@ -6,7 +6,7 @@
   float3 arg_2 = (1.0f).xxx;
   uint arg_3 = 1u;
   float3 v = arg_2;
-  float res = arg_0.Sample(arg_1, float4(v, float(arg_3)));
+  float res = arg_0.Sample(arg_1, float4(v, float(arg_3))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.ir.dxc.hlsl
index 8722f24..de0bbd2 100644
--- a/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.ir.dxc.hlsl
@@ -6,7 +6,7 @@
   float3 arg_2 = (1.0f).xxx;
   int arg_3 = int(1);
   float3 v = arg_2;
-  float res = arg_0.Sample(arg_1, float4(v, float(arg_3)));
+  float res = arg_0.Sample(arg_1, float4(v, float(arg_3))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.ir.fxc.hlsl
index 8722f24..de0bbd2 100644
--- a/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.ir.fxc.hlsl
@@ -6,7 +6,7 @@
   float3 arg_2 = (1.0f).xxx;
   int arg_3 = int(1);
   float3 v = arg_2;
-  float res = arg_0.Sample(arg_1, float4(v, float(arg_3)));
+  float res = arg_0.Sample(arg_1, float4(v, float(arg_3))).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSample/ea7030.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSample/ea7030.wgsl.expected.ir.dxc.hlsl
index 1516c42..7cf778c 100644
--- a/test/tint/builtins/gen/var/textureSample/ea7030.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/ea7030.wgsl.expected.ir.dxc.hlsl
@@ -4,7 +4,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSample_ea7030() {
   float3 arg_2 = (1.0f).xxx;
-  float res = arg_0.Sample(arg_1, arg_2);
+  float res = arg_0.Sample(arg_1, arg_2).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSample/ea7030.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSample/ea7030.wgsl.expected.ir.fxc.hlsl
index 1516c42..7cf778c 100644
--- a/test/tint/builtins/gen/var/textureSample/ea7030.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/ea7030.wgsl.expected.ir.fxc.hlsl
@@ -4,7 +4,7 @@
 SamplerState arg_1 : register(s1, space1);
 float textureSample_ea7030() {
   float3 arg_2 = (1.0f).xxx;
-  float res = arg_0.Sample(arg_1, arg_2);
+  float res = arg_0.Sample(arg_1, arg_2).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/02be59.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/02be59.wgsl.expected.ir.dxc.hlsl
index 4f34a34..1412ae6 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/02be59.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/02be59.wgsl.expected.ir.dxc.hlsl
@@ -16,7 +16,7 @@
   float2 arg_2 = (1.0f).xx;
   int arg_3 = int(1);
   float2 v = arg_2;
-  float res = arg_0.SampleLevel(arg_1, v, float(arg_3));
+  float res = arg_0.SampleLevel(arg_1, v, float(arg_3)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/02be59.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/02be59.wgsl.expected.ir.fxc.hlsl
index 4f34a34..1412ae6 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/02be59.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/02be59.wgsl.expected.ir.fxc.hlsl
@@ -16,7 +16,7 @@
   float2 arg_2 = (1.0f).xx;
   int arg_3 = int(1);
   float2 v = arg_2;
-  float res = arg_0.SampleLevel(arg_1, v, float(arg_3));
+  float res = arg_0.SampleLevel(arg_1, v, float(arg_3)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.ir.dxc.hlsl
index b793fc4..d76ca4d 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.ir.dxc.hlsl
@@ -16,7 +16,7 @@
   float3 arg_2 = (1.0f).xxx;
   int arg_3 = int(1);
   float3 v = arg_2;
-  float res = arg_0.SampleLevel(arg_1, v, float(arg_3));
+  float res = arg_0.SampleLevel(arg_1, v, float(arg_3)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.ir.fxc.hlsl
index b793fc4..d76ca4d 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.ir.fxc.hlsl
@@ -16,7 +16,7 @@
   float3 arg_2 = (1.0f).xxx;
   int arg_3 = int(1);
   float3 v = arg_2;
-  float res = arg_0.SampleLevel(arg_1, v, float(arg_3));
+  float res = arg_0.SampleLevel(arg_1, v, float(arg_3)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.ir.dxc.hlsl
index 2b630e4..8cf8585 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.ir.dxc.hlsl
@@ -19,7 +19,7 @@
   float2 v = arg_2;
   int v_1 = arg_4;
   float3 v_2 = float3(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1));
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.ir.fxc.hlsl
index 2b630e4..8cf8585 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.ir.fxc.hlsl
@@ -19,7 +19,7 @@
   float2 v = arg_2;
   int v_1 = arg_4;
   float3 v_2 = float3(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1));
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/2974eb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/2974eb.wgsl.expected.ir.dxc.hlsl
index 3a3c352..785a0c8 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/2974eb.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/2974eb.wgsl.expected.ir.dxc.hlsl
@@ -19,7 +19,7 @@
   float2 v = arg_2;
   uint v_1 = arg_4;
   float3 v_2 = float3(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1));
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/2974eb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/2974eb.wgsl.expected.ir.fxc.hlsl
index 3a3c352..785a0c8 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/2974eb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/2974eb.wgsl.expected.ir.fxc.hlsl
@@ -19,7 +19,7 @@
   float2 v = arg_2;
   uint v_1 = arg_4;
   float3 v_2 = float3(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1));
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.ir.dxc.hlsl
index bb282e8..26108a2 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.ir.dxc.hlsl
@@ -19,7 +19,7 @@
   float2 v = arg_2;
   int v_1 = arg_4;
   float3 v_2 = float3(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.ir.fxc.hlsl
index bb282e8..26108a2 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.ir.fxc.hlsl
@@ -19,7 +19,7 @@
   float2 v = arg_2;
   int v_1 = arg_4;
   float3 v_2 = float3(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.ir.dxc.hlsl
index 6115445..8cef832 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.ir.dxc.hlsl
@@ -19,7 +19,7 @@
   float2 v = arg_2;
   uint v_1 = arg_4;
   float3 v_2 = float3(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.ir.fxc.hlsl
index 6115445..8cef832 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.ir.fxc.hlsl
@@ -19,7 +19,7 @@
   float2 v = arg_2;
   uint v_1 = arg_4;
   float3 v_2 = float3(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/3c3442.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/3c3442.wgsl.expected.ir.dxc.hlsl
index ad89c6b..3d86db0 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/3c3442.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/3c3442.wgsl.expected.ir.dxc.hlsl
@@ -19,7 +19,7 @@
   float2 v = arg_2;
   int v_1 = arg_4;
   float3 v_2 = float3(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1));
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/3c3442.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/3c3442.wgsl.expected.ir.fxc.hlsl
index ad89c6b..3d86db0 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/3c3442.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/3c3442.wgsl.expected.ir.fxc.hlsl
@@ -19,7 +19,7 @@
   float2 v = arg_2;
   int v_1 = arg_4;
   float3 v_2 = float3(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1));
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/615583.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/615583.wgsl.expected.ir.dxc.hlsl
index 1cb49c4..2283e70 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/615583.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/615583.wgsl.expected.ir.dxc.hlsl
@@ -19,7 +19,7 @@
   float2 v = arg_2;
   uint v_1 = arg_4;
   float3 v_2 = float3(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1));
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/615583.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/615583.wgsl.expected.ir.fxc.hlsl
index 1cb49c4..2283e70 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/615583.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/615583.wgsl.expected.ir.fxc.hlsl
@@ -19,7 +19,7 @@
   float2 v = arg_2;
   uint v_1 = arg_4;
   float3 v_2 = float3(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1));
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/73e892.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/73e892.wgsl.expected.ir.dxc.hlsl
index 6e28d1c..e284861 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/73e892.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/73e892.wgsl.expected.ir.dxc.hlsl
@@ -16,7 +16,7 @@
   float2 arg_2 = (1.0f).xx;
   uint arg_3 = 1u;
   float2 v = arg_2;
-  float res = arg_0.SampleLevel(arg_1, v, float(arg_3));
+  float res = arg_0.SampleLevel(arg_1, v, float(arg_3)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/73e892.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/73e892.wgsl.expected.ir.fxc.hlsl
index 6e28d1c..e284861 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/73e892.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/73e892.wgsl.expected.ir.fxc.hlsl
@@ -16,7 +16,7 @@
   float2 arg_2 = (1.0f).xx;
   uint arg_3 = 1u;
   float2 v = arg_2;
-  float res = arg_0.SampleLevel(arg_1, v, float(arg_3));
+  float res = arg_0.SampleLevel(arg_1, v, float(arg_3)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl.expected.ir.dxc.hlsl
index b7f08c9..56b4acf 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl.expected.ir.dxc.hlsl
@@ -16,7 +16,7 @@
   float2 arg_2 = (1.0f).xx;
   int arg_3 = int(1);
   float2 v = arg_2;
-  float res = arg_0.SampleLevel(arg_1, v, float(arg_3), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v, float(arg_3), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl.expected.ir.fxc.hlsl
index b7f08c9..56b4acf 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl.expected.ir.fxc.hlsl
@@ -16,7 +16,7 @@
   float2 arg_2 = (1.0f).xx;
   int arg_3 = int(1);
   float2 v = arg_2;
-  float res = arg_0.SampleLevel(arg_1, v, float(arg_3), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v, float(arg_3), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/941a53.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/941a53.wgsl.expected.ir.dxc.hlsl
index 5ce6cfc..ac03390 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/941a53.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/941a53.wgsl.expected.ir.dxc.hlsl
@@ -19,7 +19,7 @@
   float3 v = arg_2;
   uint v_1 = arg_4;
   float4 v_2 = float4(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1));
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/941a53.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/941a53.wgsl.expected.ir.fxc.hlsl
index 5ce6cfc..ac03390 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/941a53.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/941a53.wgsl.expected.ir.fxc.hlsl
@@ -19,7 +19,7 @@
   float3 v = arg_2;
   uint v_1 = arg_4;
   float4 v_2 = float4(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1));
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/a12142.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/a12142.wgsl.expected.ir.dxc.hlsl
index 540b1c2..009070c 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/a12142.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/a12142.wgsl.expected.ir.dxc.hlsl
@@ -19,7 +19,7 @@
   float3 v = arg_2;
   uint v_1 = arg_4;
   float4 v_2 = float4(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1));
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/a12142.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/a12142.wgsl.expected.ir.fxc.hlsl
index 540b1c2..009070c 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/a12142.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/a12142.wgsl.expected.ir.fxc.hlsl
@@ -19,7 +19,7 @@
   float3 v = arg_2;
   uint v_1 = arg_4;
   float4 v_2 = float4(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1));
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.ir.dxc.hlsl
index 035ee58..418138a 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.ir.dxc.hlsl
@@ -19,7 +19,7 @@
   float3 v = arg_2;
   int v_1 = arg_4;
   float4 v_2 = float4(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1));
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.ir.fxc.hlsl
index 035ee58..418138a 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.ir.fxc.hlsl
@@ -19,7 +19,7 @@
   float3 v = arg_2;
   int v_1 = arg_4;
   float4 v_2 = float4(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1));
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/ae92a2.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/ae92a2.wgsl.expected.ir.dxc.hlsl
index 04a5543..e9822e0 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/ae92a2.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/ae92a2.wgsl.expected.ir.dxc.hlsl
@@ -16,7 +16,7 @@
   float3 arg_2 = (1.0f).xxx;
   uint arg_3 = 1u;
   float3 v = arg_2;
-  float res = arg_0.SampleLevel(arg_1, v, float(arg_3));
+  float res = arg_0.SampleLevel(arg_1, v, float(arg_3)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/ae92a2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/ae92a2.wgsl.expected.ir.fxc.hlsl
index 04a5543..e9822e0 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/ae92a2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/ae92a2.wgsl.expected.ir.fxc.hlsl
@@ -16,7 +16,7 @@
   float3 arg_2 = (1.0f).xxx;
   uint arg_3 = 1u;
   float3 v = arg_2;
-  float res = arg_0.SampleLevel(arg_1, v, float(arg_3));
+  float res = arg_0.SampleLevel(arg_1, v, float(arg_3)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.ir.dxc.hlsl
index b5270fc..659ae1a 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.ir.dxc.hlsl
@@ -19,7 +19,7 @@
   float2 v = arg_2;
   uint v_1 = arg_4;
   float3 v_2 = float3(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.ir.fxc.hlsl
index b5270fc..659ae1a 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.ir.fxc.hlsl
@@ -19,7 +19,7 @@
   float2 v = arg_2;
   uint v_1 = arg_4;
   float3 v_2 = float3(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.ir.dxc.hlsl
index 0629a50..ae9c863 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.ir.dxc.hlsl
@@ -19,7 +19,7 @@
   float2 v = arg_2;
   int v_1 = arg_4;
   float3 v_2 = float3(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.ir.fxc.hlsl
index 0629a50..ae9c863 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.ir.fxc.hlsl
@@ -19,7 +19,7 @@
   float2 v = arg_2;
   int v_1 = arg_4;
   float3 v_2 = float3(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/f3b2c8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/f3b2c8.wgsl.expected.ir.dxc.hlsl
index d5d6e09..87d0a5f 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/f3b2c8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/f3b2c8.wgsl.expected.ir.dxc.hlsl
@@ -16,7 +16,7 @@
   float2 arg_2 = (1.0f).xx;
   uint arg_3 = 1u;
   float2 v = arg_2;
-  float res = arg_0.SampleLevel(arg_1, v, float(arg_3), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v, float(arg_3), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/f3b2c8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/f3b2c8.wgsl.expected.ir.fxc.hlsl
index d5d6e09..87d0a5f 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/f3b2c8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/f3b2c8.wgsl.expected.ir.fxc.hlsl
@@ -16,7 +16,7 @@
   float2 arg_2 = (1.0f).xx;
   uint arg_3 = 1u;
   float2 v = arg_2;
-  float res = arg_0.SampleLevel(arg_1, v, float(arg_3), (int(1)).xx);
+  float res = arg_0.SampleLevel(arg_1, v, float(arg_3), (int(1)).xx).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/ff11bc.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/ff11bc.wgsl.expected.ir.dxc.hlsl
index 6a50b9b..09eeedd 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/ff11bc.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/ff11bc.wgsl.expected.ir.dxc.hlsl
@@ -19,7 +19,7 @@
   float3 v = arg_2;
   int v_1 = arg_4;
   float4 v_2 = float4(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1));
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1)).x;
   return res;
 }
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/ff11bc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/ff11bc.wgsl.expected.ir.fxc.hlsl
index 6a50b9b..09eeedd 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/ff11bc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/ff11bc.wgsl.expected.ir.fxc.hlsl
@@ -19,7 +19,7 @@
   float3 v = arg_2;
   int v_1 = arg_4;
   float4 v_2 = float4(v, float(arg_3));
-  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1));
+  float res = arg_0.SampleLevel(arg_1, v_2, float(v_1)).x;
   return res;
 }
 
diff --git a/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.dxc.hlsl b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.dxc.hlsl
deleted file mode 100644
index bbde24f..0000000
--- a/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.dxc.hlsl
+++ /dev/null
@@ -1,37 +0,0 @@
-SKIP: FAILED
-
-
-SamplerState x_10 : register(s0);
-Texture2D x_20 : register(t1, space2);
-SamplerState x_30 : register(s1);
-void main_1() {
-  float2 vf12 = float2(1.0f, 2.0f);
-  float2 vf21 = float2(2.0f, 1.0f);
-  float3 vf123 = float3(1.0f, 2.0f, 3.0f);
-  float4 vf1234 = float4(1.0f, 2.0f, 3.0f, 4.0f);
-  int i1 = int(1);
-  int2 vi12 = int2(int(1), int(2));
-  int3 vi123 = int3(int(1), int(2), int(3));
-  int4 vi1234 = int4(int(1), int(2), int(3), int(4));
-  uint u1 = 1u;
-  uint2 vu12 = uint2(1u, 2u);
-  uint3 vu123 = uint3(1u, 2u, 3u);
-  uint4 vu1234 = uint4(1u, 2u, 3u, 4u);
-  float coords1 = 1.0f;
-  float2 coords12 = vf12;
-  float3 coords123 = vf123;
-  float4 coords1234 = vf1234;
-  float4 x_79 = float4(x_20.SampleLevel(x_10, vf12, float(int(1))), 0.0f, 0.0f, 0.0f);
-}
-
-void main() {
-  main_1();
-}
-
-DXC validation failure:
-hlsl.hlsl:22:24: error: too many elements in vector initialization (expected 4 elements, have 7)
-  float4 x_79 = float4(x_20.SampleLevel(x_10, vf12, float(int(1))), 0.0f, 0.0f, 0.0f);
-                       ^
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.fxc.hlsl b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.fxc.hlsl
deleted file mode 100644
index 50f9202..0000000
--- a/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.fxc.hlsl
+++ /dev/null
@@ -1,35 +0,0 @@
-SKIP: FAILED
-
-
-SamplerState x_10 : register(s0);
-Texture2D x_20 : register(t1, space2);
-SamplerState x_30 : register(s1);
-void main_1() {
-  float2 vf12 = float2(1.0f, 2.0f);
-  float2 vf21 = float2(2.0f, 1.0f);
-  float3 vf123 = float3(1.0f, 2.0f, 3.0f);
-  float4 vf1234 = float4(1.0f, 2.0f, 3.0f, 4.0f);
-  int i1 = int(1);
-  int2 vi12 = int2(int(1), int(2));
-  int3 vi123 = int3(int(1), int(2), int(3));
-  int4 vi1234 = int4(int(1), int(2), int(3), int(4));
-  uint u1 = 1u;
-  uint2 vu12 = uint2(1u, 2u);
-  uint3 vu123 = uint3(1u, 2u, 3u);
-  uint4 vu1234 = uint4(1u, 2u, 3u, 4u);
-  float coords1 = 1.0f;
-  float2 coords12 = vf12;
-  float3 coords123 = vf123;
-  float4 coords1234 = vf1234;
-  float4 x_79 = float4(x_20.SampleLevel(x_10, vf12, float(int(1))), 0.0f, 0.0f, 0.0f);
-}
-
-void main() {
-  main_1();
-}
-
-FXC validation failure:
-<scrubbed_path>(22,17-85): error X3014: incorrect number of arguments to numeric-type constructor
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.dxc.hlsl b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.dxc.hlsl
deleted file mode 100644
index c58548a..0000000
--- a/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.dxc.hlsl
+++ /dev/null
@@ -1,39 +0,0 @@
-SKIP: FAILED
-
-
-SamplerState x_10 : register(s0);
-Texture2D x_20 : register(t1, space2);
-SamplerComparisonState x_30 : register(s1);
-void main_1() {
-  float f1 = 1.0f;
-  float2 vf12 = float2(1.0f, 2.0f);
-  float2 vf21 = float2(2.0f, 1.0f);
-  float3 vf123 = float3(1.0f, 2.0f, 3.0f);
-  float4 vf1234 = float4(1.0f, 2.0f, 3.0f, 4.0f);
-  int i1 = int(1);
-  int2 vi12 = int2(int(1), int(2));
-  int3 vi123 = int3(int(1), int(2), int(3));
-  int4 vi1234 = int4(int(1), int(2), int(3), int(4));
-  uint u1 = 1u;
-  uint2 vu12 = uint2(1u, 2u);
-  uint3 vu123 = uint3(1u, 2u, 3u);
-  uint4 vu1234 = uint4(1u, 2u, 3u, 4u);
-  float coords1 = 1.0f;
-  float2 coords12 = vf12;
-  float3 coords123 = vf123;
-  float4 coords1234 = vf1234;
-  float4 x_200 = float4(x_20.Sample(x_10, coords12), 0.0f, 0.0f, 0.0f);
-  float x_210 = x_20.SampleCmp(x_30, coords12, 0.20000000298023223877f);
-}
-
-void main() {
-  main_1();
-}
-
-DXC validation failure:
-hlsl.hlsl:23:25: error: too many elements in vector initialization (expected 4 elements, have 7)
-  float4 x_200 = float4(x_20.Sample(x_10, coords12), 0.0f, 0.0f, 0.0f);
-                        ^
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.fxc.hlsl b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.fxc.hlsl
deleted file mode 100644
index aa16a2c..0000000
--- a/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.fxc.hlsl
+++ /dev/null
@@ -1,37 +0,0 @@
-SKIP: FAILED
-
-
-SamplerState x_10 : register(s0);
-Texture2D x_20 : register(t1, space2);
-SamplerComparisonState x_30 : register(s1);
-void main_1() {
-  float f1 = 1.0f;
-  float2 vf12 = float2(1.0f, 2.0f);
-  float2 vf21 = float2(2.0f, 1.0f);
-  float3 vf123 = float3(1.0f, 2.0f, 3.0f);
-  float4 vf1234 = float4(1.0f, 2.0f, 3.0f, 4.0f);
-  int i1 = int(1);
-  int2 vi12 = int2(int(1), int(2));
-  int3 vi123 = int3(int(1), int(2), int(3));
-  int4 vi1234 = int4(int(1), int(2), int(3), int(4));
-  uint u1 = 1u;
-  uint2 vu12 = uint2(1u, 2u);
-  uint3 vu123 = uint3(1u, 2u, 3u);
-  uint4 vu1234 = uint4(1u, 2u, 3u, 4u);
-  float coords1 = 1.0f;
-  float2 coords12 = vf12;
-  float3 coords123 = vf123;
-  float4 coords1234 = vf1234;
-  float4 x_200 = float4(x_20.Sample(x_10, coords12), 0.0f, 0.0f, 0.0f);
-  float x_210 = x_20.SampleCmp(x_30, coords12, 0.20000000298023223877f);
-}
-
-void main() {
-  main_1();
-}
-
-FXC validation failure:
-<scrubbed_path>(23,18-70): error X3014: incorrect number of arguments to numeric-type constructor
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.dxc.hlsl b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.dxc.hlsl
deleted file mode 100644
index 0222fc8..0000000
--- a/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.dxc.hlsl
+++ /dev/null
@@ -1,38 +0,0 @@
-SKIP: FAILED
-
-
-SamplerState x_10 : register(s0);
-Texture2D x_20 : register(t1, space2);
-SamplerState x_30 : register(s1);
-void main_1() {
-  float f1 = 1.0f;
-  float2 vf12 = float2(1.0f, 2.0f);
-  float2 vf21 = float2(2.0f, 1.0f);
-  float3 vf123 = float3(1.0f, 2.0f, 3.0f);
-  float4 vf1234 = float4(1.0f, 2.0f, 3.0f, 4.0f);
-  int i1 = int(1);
-  int2 vi12 = int2(int(1), int(2));
-  int3 vi123 = int3(int(1), int(2), int(3));
-  int4 vi1234 = int4(int(1), int(2), int(3), int(4));
-  uint u1 = 1u;
-  uint2 vu12 = uint2(1u, 2u);
-  uint3 vu123 = uint3(1u, 2u, 3u);
-  uint4 vu1234 = uint4(1u, 2u, 3u, 4u);
-  float coords1 = 1.0f;
-  float2 coords12 = vf12;
-  float3 coords123 = vf123;
-  float4 coords1234 = vf1234;
-  float4 x_79 = float4(x_20.Sample(x_10, (coords123.xy / coords123[2u])), 0.0f, 0.0f, 0.0f);
-}
-
-void main() {
-  main_1();
-}
-
-DXC validation failure:
-hlsl.hlsl:23:24: error: too many elements in vector initialization (expected 4 elements, have 7)
-  float4 x_79 = float4(x_20.Sample(x_10, (coords123.xy / coords123[2u])), 0.0f, 0.0f, 0.0f);
-                       ^
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.fxc.hlsl b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.fxc.hlsl
deleted file mode 100644
index 66019cd..0000000
--- a/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.fxc.hlsl
+++ /dev/null
@@ -1,36 +0,0 @@
-SKIP: FAILED
-
-
-SamplerState x_10 : register(s0);
-Texture2D x_20 : register(t1, space2);
-SamplerState x_30 : register(s1);
-void main_1() {
-  float f1 = 1.0f;
-  float2 vf12 = float2(1.0f, 2.0f);
-  float2 vf21 = float2(2.0f, 1.0f);
-  float3 vf123 = float3(1.0f, 2.0f, 3.0f);
-  float4 vf1234 = float4(1.0f, 2.0f, 3.0f, 4.0f);
-  int i1 = int(1);
-  int2 vi12 = int2(int(1), int(2));
-  int3 vi123 = int3(int(1), int(2), int(3));
-  int4 vi1234 = int4(int(1), int(2), int(3), int(4));
-  uint u1 = 1u;
-  uint2 vu12 = uint2(1u, 2u);
-  uint3 vu123 = uint3(1u, 2u, 3u);
-  uint4 vu1234 = uint4(1u, 2u, 3u, 4u);
-  float coords1 = 1.0f;
-  float2 coords12 = vf12;
-  float3 coords123 = vf123;
-  float4 coords1234 = vf1234;
-  float4 x_79 = float4(x_20.Sample(x_10, (coords123.xy / coords123[2u])), 0.0f, 0.0f, 0.0f);
-}
-
-void main() {
-  main_1();
-}
-
-FXC validation failure:
-<scrubbed_path>(23,17-91): error X3014: incorrect number of arguments to numeric-type constructor
-
-
-tint executable returned error: exit status 1
