Update src/tint unittests to new @stage format.

This CL updates all of the Tint unittests to the new @stage shorter
syntax. This also updates the WGSL writer to emit the new short forms
instead of using the deprecated form.

Bug: tint:1503
Change-Id: I8c49e5319a19cccb5b4b5078f3ab39c50f31a9a8
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/92483
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/tint/ast/module_clone_test.cc b/src/tint/ast/module_clone_test.cc
index 65c2406..bd96b26 100644
--- a/src/tint/ast/module_clone_test.cc
+++ b/src/tint/ast/module_clone_test.cc
@@ -99,7 +99,7 @@
   return 1.0;
 }
 
-@stage(fragment)
+@fragment
 fn main() {
   f1(1.0, 2);
 }
diff --git a/src/tint/fuzzers/tint_regex_fuzzer/regex_fuzzer_tests.cc b/src/tint/fuzzers/tint_regex_fuzzer/regex_fuzzer_tests.cc
index b344a69..891a111 100644
--- a/src/tint/fuzzers/tint_regex_fuzzer/regex_fuzzer_tests.cc
+++ b/src/tint/fuzzers/tint_regex_fuzzer/regex_fuzzer_tests.cc
@@ -172,16 +172,16 @@
         R"(fn clamp_0acf8f() {
         var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>());
       }
-      @stage(vertex)
+      @vertex
       fn vertex_main() -> @builtin(position) vec4<f32> {
          clamp_0acf8f();"
          return vec4<f32>();
       }
-      @stage(fragment)
+      @fragment
       fn fragment_main() {
         clamp_0acf8f();
       }
-      @stage(compute) @workgroup_size(1)
+      @compute @workgroup_size(1)
       fn compute_main() {"
         var<private> foo: f32 = 0.0;
         clamp_0acf8f();
@@ -192,13 +192,13 @@
     std::vector<std::pair<size_t, size_t>> ground_truth = {
         std::make_pair(3, 12),   std::make_pair(28, 3),  std::make_pair(37, 4),
         std::make_pair(49, 5),   std::make_pair(60, 3),  std::make_pair(68, 4),
-        std::make_pair(81, 4),   std::make_pair(110, 5), std::make_pair(130, 2),
-        std::make_pair(140, 4),  std::make_pair(151, 7), std::make_pair(169, 4),
-        std::make_pair(190, 12), std::make_pair(216, 6), std::make_pair(228, 3),
-        std::make_pair(251, 5),  std::make_pair(273, 2), std::make_pair(285, 4),
-        std::make_pair(302, 12), std::make_pair(333, 5), std::make_pair(349, 14),
-        std::make_pair(373, 2),  std::make_pair(384, 4), std::make_pair(402, 3),
-        std::make_pair(415, 3),  std::make_pair(420, 3), std::make_pair(439, 12)};
+        std::make_pair(81, 4),   std::make_pair(110, 6), std::make_pair(123, 2),
+        std::make_pair(133, 4),  std::make_pair(144, 7), std::make_pair(162, 4),
+        std::make_pair(183, 12), std::make_pair(209, 6), std::make_pair(221, 3),
+        std::make_pair(244, 8),  std::make_pair(259, 2), std::make_pair(271, 4),
+        std::make_pair(288, 12), std::make_pair(319, 7), std::make_pair(328, 14),
+        std::make_pair(352, 2),  std::make_pair(363, 4), std::make_pair(381, 3),
+        std::make_pair(394, 3),  std::make_pair(399, 3), std::make_pair(418, 12)};
 
     ASSERT_EQ(ground_truth, identifiers_pos);
 }
@@ -208,17 +208,17 @@
         R"(fn clamp_0acf8f() {
         var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>());
       }
-      @stage(vertex)
+      @vertex
       fn vertex_main() -> @builtin(position) vec4<f32> {
         clamp_0acf8f();
         var foo_1: i32 = 3;
         return vec4<f32>();
       }
-      @stage(fragment)
+      @fragment
       fn fragment_main() {
         clamp_0acf8f();
       }
-      @stage(compute) @workgroup_size(1)
+      @compute @workgroup_size(1)
       fn compute_main() {
         var<private> foo: f32 = 0.0;
         var foo_2: i32 = 10;
@@ -249,17 +249,17 @@
           var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>());
           }
         }
-        @stage(vertex)
+        @vertex
         fn vertex_main() -> @builtin(position) vec4<f32> {
           clamp_0acf8f();
           var foo_1: i32 = 3;
           return vec4<f32>();
         }
-        @stage(fragment)
+        @fragment
         fn fragment_main() {
           clamp_0acf8f();
         }
-        @stage(compute) @workgroup_size(1)
+        @compute @workgroup_size(1)
         fn compute_main() {
           var<private> foo: f32 = 0.0;
           var foo_2: i32 = 10;
@@ -295,17 +295,17 @@
         var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>());
         }
       }
-      @stage(vertex)
+      @vertex
       fn vertex_main() -> @builtin(position) vec4<f32> {
         clamp_0acf8f();
         var foo_1: i32 = 3;
         return vec4<f32>();
       }
-      @stage(fragment)
+      @fragment
       fn fragment_main() {
         clamp_0acf8f();
       }
-      @stage(compute) @workgroup_size(1)
+      @compute @workgroup_size(1)
       fn compute_main() {
         var<private> foo: f32 = 0.0;
         var foo_2: i32 = 10;
@@ -334,17 +334,17 @@
         R"(fn clamp_0acf8f() {
         var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>());
       }
-      @stage(vertex)
+      @vertex
       fn vertex_main() -> @builtin(position) vec4<f32> {
         clamp_0acf8f();
         var foo_1: i32 = 3;
         return vec4<f32>();
       }
-      @stage(fragment)
+      @fragment
       fn fragment_main() {
         clamp_0acf8f();
       }
-      @stage(compute) @workgroup_size(1)
+      @compute @workgroup_size(1)
       fn compute_main() {
         var<private> foo: f32 = 0.0;
         var foo_2: i32 = 10;
@@ -367,17 +367,17 @@
         R"(fn clamp_0acf8f() {
         var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>());return true;
       }
-      @stage(vertex)
+      @vertex
       fn vertex_main() -> @builtin(position) vec4<f32> {
         clamp_0acf8f();
         var foo_1: i32 = 3;
         return vec4<f32>();
       }
-      @stage(fragment)
+      @fragment
       fn fragment_main() {
         clamp_0acf8f();
       }
-      @stage(compute) @workgroup_size(1)
+      @compute @workgroup_size(1)
       fn compute_main() {
         var<private> foo: f32 = 0.0;
         var foo_2: i32 = 10;
@@ -394,17 +394,17 @@
         R"(fn clamp_0acf8f() {
           var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>());
         }
-        @stage(vertex)
+        @vertex
         fn vertex_main() -> @builtin(position) vec4<f32> {
           clamp_0acf8f();
           var foo_1: i32 = 3;
           return vec4<f32>();
         }
-        @stage(fragment)
+        @fragment
         fn fragment_main() {
           clamp_0acf8f();
         }
-        @stage(compute) @workgroup_size(1)
+        @compute @workgroup_size(1)
         fn compute_main() {
           var<private> foo: f32 = 0.0;
           var foo_2: i32 = 10;
@@ -419,7 +419,7 @@
         var foo_3 : i32 = -20;)";
 
     std::vector<size_t> function_positions = GetFunctionBodyPositions(wgsl_code);
-    std::vector<size_t> expected_positions = {187, 607};
+    std::vector<size_t> expected_positions = {180, 586};
     ASSERT_EQ(expected_positions, function_positions);
 }
 
@@ -428,17 +428,17 @@
         R"(fn clamp_0acf8f() {
           var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>())
         }
-        @stage(vertex)
+        @vertex
         fn vertex_main() -> @builtin(position) vec4<f32> {
           clamp_0acf8f()
           var foo_1: i32 = 3
           return vec4<f32>()
         }
-        @stage(fragment)
+        @fragment
         fn fragment_main() {
           clamp_0acf8f();
         }
-        @stage(compute) @workgroup_size(1)
+        @compute @workgroup_size(1)
         fn compute_main() {
           var<private> foo: f32 = 0.0;
           var foo_2: i32 = 10;
@@ -461,17 +461,17 @@
         R"(fn clamp_0acf8f() {
           var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>())
         }
-        @stage(vertex)
+        @vertex
         fn vertex_main() -> @builtin(position) vec4<f32> {
           clamp_0acf8f()
           var foo_1: i32 = 3
           return vec4<f32>()
         }
-        @stage(fragment)
+        @fragment
         fn fragment_main() {
           clamp_0acf8f();
         }
-        @stage(compute) @workgroup_size(1)
+        @compute @workgroup_size(1)
         fn compute_main() {
           var<private> foo: f32 = 0.0;
           var foo_2: i32 = 10;
diff --git a/src/tint/inspector/inspector_test.cc b/src/tint/inspector/inspector_test.cc
index 033f5b8..986e169 100644
--- a/src/tint/inspector/inspector_test.cc
+++ b/src/tint/inspector/inspector_test.cc
@@ -2485,7 +2485,7 @@
 
 TEST_F(InspectorGetSamplerTextureUsesTest, None) {
     std::string shader = R"(
-@stage(fragment)
+@fragment
 fn main() {
 })";
 
@@ -2501,7 +2501,7 @@
 @group(0) @binding(1) var mySampler: sampler;
 @group(0) @binding(2) var myTexture: texture_2d<f32>;
 
-@stage(fragment)
+@fragment
 fn main(@location(0) fragUV: vec2<f32>,
         @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return textureSample(myTexture, mySampler, fragUV) * fragPosition;
@@ -2524,7 +2524,7 @@
 @group(0) @binding(1) var mySampler: sampler;
 @group(0) @binding(2) var myTexture: texture_2d<f32>;
 
-@stage(fragment)
+@fragment
 fn main(@location(0) fragUV: vec2<f32>,
         @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return textureSample(myTexture, mySampler, fragUV) * fragPosition;
@@ -2540,7 +2540,7 @@
 @group(0) @binding(1) var mySampler: sampler;
 @group(0) @binding(2) var myTexture: texture_2d<f32>;
 
-@stage(fragment)
+@fragment
 fn main(@location(0) fragUV: vec2<f32>,
         @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return textureSample(myTexture, mySampler, fragUV) * fragPosition;
@@ -2565,7 +2565,7 @@
   return textureSample(t, s, uv);
 }
 
-@stage(fragment)
+@fragment
 fn main(@location(0) fragUV: vec2<f32>,
         @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return doSample(myTexture, mySampler, fragUV) * fragPosition;
@@ -2592,7 +2592,7 @@
   return textureSample(myTexture, s, uv);
 }
 
-@stage(fragment)
+@fragment
 fn main(@location(0) fragUV: vec2<f32>,
         @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return doSample(mySampler, fragUV) * fragPosition;
@@ -2619,7 +2619,7 @@
   return textureSample(t, mySampler, uv);
 }
 
-@stage(fragment)
+@fragment
 fn main(@location(0) fragUV: vec2<f32>,
         @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return doSample(myTexture, fragUV) * fragPosition;
@@ -2646,7 +2646,7 @@
   return textureSample(myTexture, mySampler, uv);
 }
 
-@stage(fragment)
+@fragment
 fn main(@location(0) fragUV: vec2<f32>,
         @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return doSample(fragUV) * fragPosition;
@@ -2686,19 +2686,19 @@
   return X(t, s, uv) + Y(t, s, uv);
 }
 
-@stage(fragment)
+@fragment
 fn via_call(@location(0) fragUV: vec2<f32>,
         @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return Z(myTexture, mySampler, fragUV) * fragPosition;
 }
 
-@stage(fragment)
+@fragment
 fn via_ptr(@location(0) fragUV: vec2<f32>,
         @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return textureSample(myTexture, mySampler, fragUV) + fragPosition;
 }
 
-@stage(fragment)
+@fragment
 fn direct(@location(0) fragUV: vec2<f32>,
         @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return textureSample(myTexture, mySampler, fragUV) + fragPosition;
@@ -2836,7 +2836,7 @@
 // Test calling GetUsedExtensionNames on a shader with no extension.
 TEST_F(InspectorGetUsedExtensionNamesTest, None) {
     std::string shader = R"(
-@stage(fragment)
+@fragment
 fn main() {
 })";
 
@@ -2851,7 +2851,7 @@
     std::string shader = R"(
 enable f16;
 
-@stage(fragment)
+@fragment
 fn main() {
 })";
 
@@ -2869,7 +2869,7 @@
 enable f16;
 enable f16;
 
-@stage(fragment)
+@fragment
 fn main() {
 })";
 
@@ -2893,7 +2893,7 @@
 // Test calling GetEnableDirectives on a shader with no extension.
 TEST_F(InspectorGetEnableDirectivesTest, None) {
     std::string shader = R"(
-@stage(fragment)
+@fragment
 fn main() {
 })";
 
@@ -2908,7 +2908,7 @@
     std::string shader = R"(
 enable f16;
 
-@stage(fragment)
+@fragment
 fn main() {
 })";
 
@@ -2927,7 +2927,7 @@
 enable f16;
 
 enable f16;
-@stage(fragment)
+@fragment
 fn main() {
 })";
 
@@ -2952,7 +2952,7 @@
   return textureSample(t, s, uv);
 }
 
-@stage(fragment)
+@fragment
 fn main(@location(0) fragUV: vec2<f32>,
         @location(1) fragPosition: vec4<f32>) -> @location(0) vec4<f32> {
   return doSample(myTexture, mySampler, fragUV) * fragPosition;
diff --git a/src/tint/reader/spirv/function_call_test.cc b/src/tint/reader/spirv/function_call_test.cc
index aa1789b..584ad16 100644
--- a/src/tint/reader/spirv/function_call_test.cc
+++ b/src/tint/reader/spirv/function_call_test.cc
@@ -59,7 +59,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn x_100() {
   x_100_1();
 }
@@ -185,7 +185,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn x_100() {
   x_100_1();
 }
diff --git a/src/tint/reader/spirv/function_memory_test.cc b/src/tint/reader/spirv/function_memory_test.cc
index ed39e21..2bb98e3 100644
--- a/src/tint/reader/spirv/function_memory_test.cc
+++ b/src/tint/reader/spirv/function_memory_test.cc
@@ -810,7 +810,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main() {
   main_1();
 }
@@ -850,7 +850,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main() {
   main_1();
 }
diff --git a/src/tint/reader/spirv/parser_impl_function_decl_test.cc b/src/tint/reader/spirv/parser_impl_function_decl_test.cc
index fe6b1e0..459460d 100644
--- a/src/tint/reader/spirv/parser_impl_function_decl_test.cc
+++ b/src/tint/reader/spirv/parser_impl_function_decl_test.cc
@@ -126,7 +126,7 @@
 )")) << program_ast;
 
     EXPECT_THAT(program_ast, HasSubstr(R"(
-@stage(vertex)
+@vertex
 fn main() -> main_out {
 )"));
 }
@@ -144,7 +144,7 @@
     Program program = p->program();
     const auto program_ast = test::ToString(program);
     EXPECT_THAT(program_ast, HasSubstr(R"(
-@stage(fragment)
+@fragment
 fn main() {
 )"));
 }
@@ -162,7 +162,7 @@
     Program program = p->program();
     const auto program_ast = test::ToString(program);
     EXPECT_THAT(program_ast, HasSubstr(R"(
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
 )"));
 }
@@ -182,11 +182,11 @@
     Program program = p->program();
     const auto program_ast = test::ToString(program);
     EXPECT_THAT(program_ast, HasSubstr(R"(
-@stage(fragment)
+@fragment
 fn first_shader() {
 )"));
     EXPECT_THAT(program_ast, HasSubstr(R"(
-@stage(fragment)
+@fragment
 fn second_shader() {
 )"));
 }
@@ -208,7 +208,7 @@
     Program program = p->program();
     const auto program_ast = test::ToString(program);
     EXPECT_THAT(program_ast, HasSubstr(R"(
-@stage(compute) @workgroup_size(2i, 4i, 8i)
+@compute @workgroup_size(2i, 4i, 8i)
 fn comp_main() {
 )")) << program_ast;
 }
@@ -233,7 +233,7 @@
     Program program = p->program();
     const auto program_ast = test::ToString(program);
     EXPECT_THAT(program_ast, HasSubstr(R"(
-@stage(compute) @workgroup_size(3i, 5i, 7i)
+@compute @workgroup_size(3i, 5i, 7i)
 fn comp_main() {
 )")) << program_ast;
 }
@@ -262,7 +262,7 @@
     Program program = p->program();
     const auto program_ast = test::ToString(program);
     EXPECT_THAT(program_ast, HasSubstr(R"(
-@stage(compute) @workgroup_size(3i, 5i, 7i)
+@compute @workgroup_size(3i, 5i, 7i)
 fn comp_main() {
 )")) << program_ast;
 }
@@ -290,7 +290,7 @@
     Program program = p->program();
     const auto program_ast = test::ToString(program);
     EXPECT_THAT(program_ast, HasSubstr(R"(
-@stage(compute) @workgroup_size(3i, 5i, 7i)
+@compute @workgroup_size(3i, 5i, 7i)
 fn comp_main() {
 )")) << program_ast;
 }
@@ -323,7 +323,7 @@
     Program program = p->program();
     const auto program_ast = test::ToString(program);
     EXPECT_THAT(program_ast, HasSubstr(R"(
-@stage(compute) @workgroup_size(3i, 5i, 7i)
+@compute @workgroup_size(3i, 5i, 7i)
 fn comp_main() {
 )")) << program_ast;
 }
@@ -409,7 +409,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn x_100() {
   x_100_1();
 }
diff --git a/src/tint/reader/spirv/parser_impl_module_var_test.cc b/src/tint/reader/spirv/parser_impl_module_var_test.cc
index 622d383..e4ac8cb 100644
--- a/src/tint/reader/spirv/parser_impl_module_var_test.cc
+++ b/src/tint/reader/spirv/parser_impl_module_var_test.cc
@@ -460,7 +460,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> main_out {
   main_1();
   return main_out(gl_Position);
@@ -519,7 +519,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> main_out {
   main_1();
   return main_out(gl_Position);
@@ -575,7 +575,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> main_out {
   main_1();
   return main_out(gl_Position);
@@ -634,7 +634,7 @@
   x_2_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> main_out {
   main_1();
   return main_out(x_2);
@@ -690,7 +690,7 @@
   x_2_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> main_out {
   main_1();
   return main_out(x_2);
@@ -746,7 +746,7 @@
   x_2_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> main_out {
   main_1();
   return main_out(x_2);
@@ -782,7 +782,7 @@
   x_2_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> main_out {
   main_1();
   return main_out(x_2);
@@ -1650,7 +1650,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(sample_index) x_1_param : u32) {
   x_1 = bitcast<i32>(x_1_param);
   main_1();
@@ -1763,7 +1763,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(sample_index) x_1_param : u32) {
   x_1 = bitcast<i32>(x_1_param);
   main_1();
@@ -1816,7 +1816,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(sample_index) x_1_param : u32) {
   x_1 = x_1_param;
   main_1();
@@ -1846,7 +1846,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(sample_index) x_1_param : u32) {
   x_1 = x_1_param;
   main_1();
@@ -1875,7 +1875,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(sample_index) x_1_param : u32) {
   x_1 = x_1_param;
   main_1();
@@ -1989,7 +1989,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(sample_mask) x_1_param : u32) {
   x_1[0i] = x_1_param;
   main_1();
@@ -2021,7 +2021,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(sample_mask) x_1_param : u32) {
   x_1[0i] = x_1_param;
   main_1();
@@ -2053,7 +2053,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(sample_mask) x_1_param : u32) {
   x_1[0i] = x_1_param;
   main_1();
@@ -2084,7 +2084,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(sample_mask) x_1_param : u32) {
   x_1[0i] = bitcast<i32>(x_1_param);
   main_1();
@@ -2116,7 +2116,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(sample_mask) x_1_param : u32) {
   x_1[0i] = bitcast<i32>(x_1_param);
   main_1();
@@ -2148,7 +2148,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(sample_mask) x_1_param : u32) {
   x_1[0i] = bitcast<i32>(x_1_param);
   main_1();
@@ -2202,7 +2202,7 @@
   x_1_1 : u32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_1[0i]);
@@ -2239,7 +2239,7 @@
   x_1_1 : u32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_1[0i]);
@@ -2276,7 +2276,7 @@
   x_1_1 : u32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_1[0i]);
@@ -2312,7 +2312,7 @@
   x_1_1 : u32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(bitcast<u32>(x_1[0i]));
@@ -2349,7 +2349,7 @@
   x_1_1 : u32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(bitcast<u32>(x_1[0i]));
@@ -2386,7 +2386,7 @@
   x_1_1 : u32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(bitcast<u32>(x_1[0i]));
@@ -2425,7 +2425,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(sample_mask) x_1_param : u32) {
   x_1[0i] = x_1_param;
   main_1();
@@ -2469,7 +2469,7 @@
   x_1_1 : u32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_1[0i]);
@@ -2527,7 +2527,7 @@
   x_4_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) x_1_param : u32) -> main_out {
   x_1 = bitcast<i32>(x_1_param);
   main_1();
@@ -2565,7 +2565,7 @@
   x_4_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) x_1_param : u32) -> main_out {
   x_1 = bitcast<i32>(x_1_param);
   main_1();
@@ -2602,7 +2602,7 @@
   x_4_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) x_1_param : u32) -> main_out {
   x_1 = bitcast<i32>(x_1_param);
   main_1();
@@ -2638,7 +2638,7 @@
   x_4_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) x_1_param : u32) -> main_out {
   x_1 = x_1_param;
   main_1();
@@ -2676,7 +2676,7 @@
   x_4_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) x_1_param : u32) -> main_out {
   x_1 = x_1_param;
   main_1();
@@ -2713,7 +2713,7 @@
   x_4_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) x_1_param : u32) -> main_out {
   x_1 = x_1_param;
   main_1();
@@ -2797,7 +2797,7 @@
   position_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@builtin(instance_index) x_1_param : u32) -> main_out {
   x_1 = bitcast<i32>(x_1_param);
   main_1();
@@ -2835,7 +2835,7 @@
   position_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@builtin(instance_index) x_1_param : u32) -> main_out {
   x_1 = bitcast<i32>(x_1_param);
   main_1();
@@ -2872,7 +2872,7 @@
   position_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@builtin(instance_index) x_1_param : u32) -> main_out {
   x_1 = bitcast<i32>(x_1_param);
   main_1();
@@ -2931,7 +2931,7 @@
   position_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@builtin(instance_index) x_1_param : u32) -> main_out {
   x_1 = x_1_param;
   main_1();
@@ -2969,7 +2969,7 @@
   position_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@builtin(instance_index) x_1_param : u32) -> main_out {
   x_1 = x_1_param;
   main_1();
@@ -3006,7 +3006,7 @@
   position_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@builtin(instance_index) x_1_param : u32) -> main_out {
   x_1 = x_1_param;
   main_1();
@@ -3149,7 +3149,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main(@builtin(${wgsl_builtin}) x_1_param : ${unsigned_wgsl_type}) {
   x_1 = ${assignment_value};
   main_1();
@@ -3195,7 +3195,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main(@builtin(${wgsl_builtin}) x_1_param : ${unsigned_wgsl_type}) {
   x_1 = ${assignment_value};
   main_1();
@@ -3240,7 +3240,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main(@builtin(${wgsl_builtin}) x_1_param : ${unsigned_wgsl_type}) {
   x_1 = ${assignment_value};
   main_1();
@@ -3552,7 +3552,7 @@
   x_4_1 : u32,
 }
 
-@stage(fragment)
+@fragment
 fn main(@location(0) @interpolate(flat) x_1_param : u32, @location(30) @interpolate(flat) x_3_param : u32) -> main_out {
   x_1 = x_1_param;
   x_3 = x_3_param;
@@ -3603,7 +3603,7 @@
   x_4_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@builtin(instance_index) x_1_param : u32) -> main_out {
   x_1 = x_1_param;
   main_1();
@@ -3652,7 +3652,7 @@
   x_4_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@builtin(instance_index) x_1_param : u32) -> main_out {
   x_1 = bitcast<i32>(x_1_param);
   main_1();
@@ -3692,7 +3692,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(sample_mask) x_1_param : u32) {
   x_1[0i] = x_1_param;
   main_1();
@@ -3730,7 +3730,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(sample_mask) x_1_param : u32) {
   x_1[0i] = bitcast<i32>(x_1_param);
   main_1();
@@ -3776,7 +3776,7 @@
   x_1_1 : u32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_1[0i]);
@@ -3822,7 +3822,7 @@
   x_1_1 : u32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(bitcast<u32>(x_1[0i]));
@@ -3865,7 +3865,7 @@
   x_1_1 : f32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_1);
@@ -3899,7 +3899,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> main_out {
   main_1();
   return main_out(gl_Position);
@@ -3968,7 +3968,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> main_out {
   main_1();
   return main_out(gl_Position);
@@ -4025,7 +4025,7 @@
   x_2_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(4) x_1_param : f32, @location(5) x_1_param_1 : f32, @location(6) x_1_param_2 : f32) -> main_out {
   x_1[0i] = x_1_param;
   x_1[1i] = x_1_param_1;
@@ -4083,7 +4083,7 @@
   x_2_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(9) x_1_param : vec4<f32>, @location(10) x_1_param_1 : vec4<f32>) -> main_out {
   x_1[0i] = x_1_param;
   x_1[1i] = x_1_param_1;
@@ -4150,7 +4150,7 @@
   x_2_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(9) x_1_param : f32, @location(10) x_1_param_1 : vec4<f32>) -> main_out {
   x_1.alice = x_1_param;
   x_1.bob = x_1_param_1;
@@ -4209,7 +4209,7 @@
   x_2_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(7) x_1_param : vec4<f32>, @location(8) x_1_param_1 : vec4<f32>, @location(9) x_1_param_2 : vec4<f32>, @location(10) x_1_param_3 : vec4<f32>) -> main_out {
   x_1[0i][0i] = x_1_param;
   x_1[0i][1i] = x_1_param_1;
@@ -4276,7 +4276,7 @@
   x_2_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> main_out {
   main_1();
   return main_out(x_1[0i], x_1[1i], x_1[2i], x_2);
@@ -4335,7 +4335,7 @@
   x_2_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> main_out {
   main_1();
   return main_out(x_1[0i], x_1[1i], x_2);
@@ -4404,7 +4404,7 @@
   x_2_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> main_out {
   main_1();
   return main_out(x_1.alice, x_1.bob, x_2);
@@ -4479,7 +4479,7 @@
   x_3_2 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(9) x_1_param : f32, @location(11) x_1_param_1 : vec4<f32>) -> main_out {
   x_1.alice = x_1_param;
   x_1.bob = x_1_param_1;
@@ -4558,7 +4558,7 @@
   x_10_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(1) @interpolate(flat) x_1_param : u32, @location(2) @interpolate(flat) x_2_param : vec2<u32>, @location(3) @interpolate(flat) x_3_param : i32, @location(4) @interpolate(flat) x_4_param : vec2<i32>, @location(5) @interpolate(flat) x_5_param : f32, @location(6) @interpolate(flat) x_6_param : vec2<f32>) -> main_out {
   x_1 = x_1_param;
   x_2 = x_2_param;
@@ -4653,7 +4653,7 @@
   x_10_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> main_out {
   main_1();
   return main_out(x_1, x_2, x_3, x_4, x_5, x_6, x_10);
@@ -4703,7 +4703,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main(@location(1) @interpolate(flat) x_1_param : f32, @location(2) @interpolate(flat) x_1_param_1 : f32, @location(5) @interpolate(flat) x_2_param : f32, @location(6) @interpolate(flat) x_2_param_1 : f32) {
   x_1[0i] = x_1_param;
   x_1[1i] = x_1_param_1;
@@ -4777,7 +4777,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main(@location(1) x_1_param : f32, @location(2) @interpolate(perspective, centroid) x_2_param : f32, @location(3) @interpolate(perspective, sample) x_3_param : f32, @location(4) @interpolate(linear) x_4_param : f32, @location(5) @interpolate(linear, centroid) x_5_param : f32, @location(6) @interpolate(linear, sample) x_6_param : f32) {
   x_1 = x_1_param;
   x_2 = x_2_param;
@@ -4844,7 +4844,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main(@location(1) x_1_param : f32, @location(2) @interpolate(perspective, centroid) x_1_param_1 : f32, @location(3) @interpolate(perspective, sample) x_1_param_2 : f32, @location(4) @interpolate(linear) x_1_param_3 : f32, @location(5) @interpolate(linear, centroid) x_1_param_4 : f32, @location(6) @interpolate(linear, sample) x_1_param_5 : f32) {
   x_1.field0 = x_1_param;
   x_1.field1 = x_1_param_1;
@@ -4935,7 +4935,7 @@
   x_6_1 : f32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_1, x_2, x_3, x_4, x_5, x_6);
@@ -5014,7 +5014,7 @@
   x_1_6 : f32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_1.field0, x_1.field1, x_1.field2, x_1.field3, x_1.field4, x_1.field5);
@@ -5100,7 +5100,7 @@
   x_10_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> main_out {
   main_1();
   return main_out(x_1, x_2, x_3, x_4, x_5, x_6, x_10);
@@ -5163,7 +5163,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main(@location(1) @interpolate(flat) x_1_param : u32, @location(2) @interpolate(flat) x_2_param : vec2<u32>, @location(3) @interpolate(flat) x_3_param : i32, @location(4) @interpolate(flat) x_4_param : vec2<i32>, @location(5) x_5_param : f32, @location(6) x_6_param : vec2<f32>) {
   x_1 = x_1_param;
   x_2 = x_2_param;
diff --git a/src/tint/reader/wgsl/parser_impl_error_msg_test.cc b/src/tint/reader/wgsl/parser_impl_error_msg_test.cc
index 1234ae4..ab97d94 100644
--- a/src/tint/reader/wgsl/parser_impl_error_msg_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_error_msg_test.cc
@@ -306,6 +306,7 @@
 )");
 }
 
+// TODO(crbug.com/tint/1503): Remove this when @stage is removed
 TEST_F(ParserImplErrorTest, FunctionDeclStageMissingLParen) {
     EXPECT("@stage vertex) fn f() {}",
            R"(test.wgsl:1:8 error: expected '(' for stage attribute
@@ -566,10 +567,10 @@
 }
 
 TEST_F(ParserImplErrorTest, GlobalDeclInvalidAttribute) {
-    EXPECT("@stage(vertex) x;",
-           R"(test.wgsl:1:16 error: expected declaration after attributes
-@stage(vertex) x;
-               ^
+    EXPECT("@vertex x;",
+           R"(test.wgsl:1:9 error: expected declaration after attributes
+@vertex x;
+        ^
 )");
 }
 
diff --git a/src/tint/reader/wgsl/parser_impl_function_attribute_list_test.cc b/src/tint/reader/wgsl/parser_impl_function_attribute_list_test.cc
index 83ebeac..0773ffd 100644
--- a/src/tint/reader/wgsl/parser_impl_function_attribute_list_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_function_attribute_list_test.cc
@@ -18,6 +18,7 @@
 namespace tint::reader::wgsl {
 namespace {
 
+// TODO(crbug.com/tint/1503): Remove this when @stage is removed
 TEST_F(ParserImplTest, AttributeList_Parses_Stage) {
     auto p = parser("@workgroup_size(2) @stage(compute)");
     auto attrs = p->attribute_list();
diff --git a/src/tint/reader/wgsl/parser_impl_function_attribute_test.cc b/src/tint/reader/wgsl/parser_impl_function_attribute_test.cc
index 15be222..44f3d78 100644
--- a/src/tint/reader/wgsl/parser_impl_function_attribute_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_function_attribute_test.cc
@@ -212,6 +212,7 @@
     EXPECT_EQ(p->error(), "1:22: expected workgroup_size z parameter");
 }
 
+// TODO(crbug.com/tint/1503): Remove when @stage is removed
 TEST_F(ParserImplTest, Attribute_Stage) {
     auto p = parser("stage(compute)");
     auto attr = p->attribute();
diff --git a/src/tint/reader/wgsl/parser_impl_function_decl_test.cc b/src/tint/reader/wgsl/parser_impl_function_decl_test.cc
index 181501a..4d7857b0 100644
--- a/src/tint/reader/wgsl/parser_impl_function_decl_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_function_decl_test.cc
@@ -137,7 +137,7 @@
 
 TEST_F(ParserImplTest, FunctionDecl_AttributeList_MultipleEntries) {
     auto p = parser(R"(
-@workgroup_size(2, 3, 4) @stage(compute)
+@workgroup_size(2, 3, 4) @compute
 fn main() { return; })");
     auto attrs = p->attribute_list();
     EXPECT_FALSE(p->has_error()) << p->error();
@@ -186,7 +186,7 @@
 TEST_F(ParserImplTest, FunctionDecl_AttributeList_MultipleLists) {
     auto p = parser(R"(
 @workgroup_size(2, 3, 4)
-@stage(compute)
+@compute
 fn main() { return; })");
     auto attributes = p->attribute_list();
     EXPECT_FALSE(p->has_error()) << p->error();
diff --git a/src/tint/reader/wgsl/parser_impl_test.cc b/src/tint/reader/wgsl/parser_impl_test.cc
index 66291c5..99ca25d 100644
--- a/src/tint/reader/wgsl/parser_impl_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_test.cc
@@ -24,7 +24,7 @@
 
 TEST_F(ParserImplTest, Parses) {
     auto p = parser(R"(
-@stage(fragment)
+@fragment
 fn main() -> @location(0) vec4<f32> {
   return vec4<f32>(.4, .2, .3, 1);
 }
@@ -112,7 +112,7 @@
  * /* I can nest /**/ comments. */
  * // I can nest line comments too.
  **/
-@stage(fragment) // This is the stage
+@fragment // This is the stage
 fn main(/*
 no
 parameters
@@ -126,7 +126,7 @@
 
 TEST_F(ParserImplTest, Comments_UnterminatedBlockComment) {
     auto p = parser(R"(
-@stage(fragment)
+@fragment
 fn main() -> @location(0) vec4<f32> {
   return vec4<f32>(.4, .2, .3, 1);
 } /* unterminated block comments are invalid ...)");
diff --git a/src/tint/reader/wgsl/parser_test.cc b/src/tint/reader/wgsl/parser_test.cc
index d343c7c..1f0e206 100644
--- a/src/tint/reader/wgsl/parser_test.cc
+++ b/src/tint/reader/wgsl/parser_test.cc
@@ -32,7 +32,7 @@
 
 TEST_F(ParserTest, Parses) {
     Source::File file("test.wgsl", R"(
-@stage(fragment)
+@fragment
 fn main() -> @location(0) vec4<f32> {
   return vec4<f32>(.4, .2, .3, 1.);
 }
diff --git a/src/tint/resolver/builtin_validation_test.cc b/src/tint/resolver/builtin_validation_test.cc
index 770d8d0..ab40296 100644
--- a/src/tint/resolver/builtin_validation_test.cc
+++ b/src/tint/resolver/builtin_validation_test.cc
@@ -34,7 +34,7 @@
 }
 
 TEST_F(ResolverBuiltinValidationTest, InvalidPipelineStageDirect) {
-    // @stage(compute) @workgroup_size(1) fn func { return dpdx(1.0); }
+    // @compute @workgroup_size(1) fn func { return dpdx(1.0); }
 
     auto* dpdx =
         create<ast::CallExpression>(Source{{3, 4}}, Expr("dpdx"), ast::ExpressionList{Expr(1_f)});
@@ -49,7 +49,7 @@
     // fn f0 { return dpdx(1.0); }
     // fn f1 { f0(); }
     // fn f2 { f1(); }
-    // @stage(compute) @workgroup_size(1) fn main { return f2(); }
+    // @compute @workgroup_size(1) fn main { return f2(); }
 
     auto* dpdx =
         create<ast::CallExpression>(Source{{3, 4}}, Expr("dpdx"), ast::ExpressionList{Expr(1_f)});
diff --git a/src/tint/resolver/builtins_validation_test.cc b/src/tint/resolver/builtins_validation_test.cc
index 9744e9b..0c59485 100644
--- a/src/tint/resolver/builtins_validation_test.cc
+++ b/src/tint/resolver/builtins_validation_test.cc
@@ -126,7 +126,7 @@
                          testing::ValuesIn(cases));
 
 TEST_F(ResolverBuiltinsValidationTest, FragDepthIsInput_Fail) {
-    // @stage(fragment)
+    // @fragment
     // fn fs_main(
     //   @builtin(frag_depth) fd: f32,
     // ) -> @location(0) f32 { return 1.0; }
@@ -144,7 +144,7 @@
     // struct MyInputs {
     //   @builtin(frag_depth) ff: f32;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn fragShader(arg: MyInputs) -> @location(0) f32 { return 1.0; }
 
     auto* s = Structure(
@@ -165,7 +165,7 @@
     // struct S {
     //   @builtin(vertex_index) idx: u32;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn fragShader() { var s : S; }
 
     Structure("S", {Member("idx", ty.u32(), {Builtin(ast::Builtin::kVertexIndex)})});
@@ -181,7 +181,7 @@
     // struct MyInputs {
     //   @builtin(kPosition) p: vec4<u32>;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn fragShader(is_front: MyInputs) -> @location(0) f32 { return 1.0; }
 
     auto* m = Member("position", ty.vec4<u32>(),
@@ -195,7 +195,7 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, PositionNotF32_ReturnType_Fail) {
-    // @stage(vertex)
+    // @vertex
     // fn main() -> @builtin(position) f32 { return 1.0; }
     Func("main", {}, ty.f32(), {Return(1_f)}, {Stage(ast::PipelineStage::kVertex)},
          {Builtin(Source{{12, 34}}, ast::Builtin::kPosition)});
@@ -208,7 +208,7 @@
     // struct MyInputs {
     //   @builtin(kFragDepth) p: i32;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn fragShader(is_front: MyInputs) -> @location(0) f32 { return 1.0; }
 
     auto* m = Member("frag_depth", ty.i32(),
@@ -225,7 +225,7 @@
     // struct MyInputs {
     //   @builtin(sample_mask) m: f32;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn fragShader(is_front: MyInputs) -> @location(0) f32 { return 1.0; }
 
     auto* s = Structure(
@@ -240,7 +240,7 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, SampleMaskNotU32_ReturnType_Fail) {
-    // @stage(fragment)
+    // @fragment
     // fn main() -> @builtin(sample_mask) i32 { return 1; }
     Func("main", {}, ty.i32(), {Return(1_i)}, {Stage(ast::PipelineStage::kFragment)},
          {Builtin(Source{{12, 34}}, ast::Builtin::kSampleMask)});
@@ -250,7 +250,7 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, SampleMaskIsNotU32_Fail) {
-    // @stage(fragment)
+    // @fragment
     // fn fs_main(
     //   @builtin(sample_mask) arg: bool
     // ) -> @location(0) f32 { return 1.0; }
@@ -266,7 +266,7 @@
     // struct MyInputs {
     //   @builtin(sample_index) m: f32;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn fragShader(is_front: MyInputs) -> @location(0) f32 { return 1.0; }
 
     auto* s = Structure(
@@ -281,7 +281,7 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, SampleIndexIsNotU32_Fail) {
-    // @stage(fragment)
+    // @fragment
     // fn fs_main(
     //   @builtin(sample_index) arg: bool
     // ) -> @location(0) f32 { return 1.0; }
@@ -294,7 +294,7 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, PositionIsNotF32_Fail) {
-    // @stage(fragment)
+    // @fragment
     // fn fs_main(
     //   @builtin(kPosition) p: vec3<f32>,
     // ) -> @location(0) f32 { return 1.0; }
@@ -307,7 +307,7 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, FragDepthIsNotF32_Fail) {
-    // @stage(fragment)
+    // @fragment
     // fn fs_main() -> @builtin(kFragDepth) f32 { var fd: i32; return fd; }
     auto* fd = Var("fd", ty.i32());
     Func("fs_main", {}, ty.i32(), {Decl(fd), Return(fd)},
@@ -318,7 +318,7 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, VertexIndexIsNotU32_Fail) {
-    // @stage(vertex)
+    // @vertex
     // fn main(
     //   @builtin(kVertexIndex) vi : f32,
     //   @builtin(kPosition) p :vec4<f32>
@@ -334,7 +334,7 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, InstanceIndexIsNotU32) {
-    // @stage(vertex)
+    // @vertex
     // fn main(
     //   @builtin(kInstanceIndex) ii : f32,
     //   @builtin(kPosition) p :vec4<f32>
@@ -350,7 +350,7 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, FragmentBuiltin_Pass) {
-    // @stage(fragment)
+    // @fragment
     // fn fs_main(
     //   @builtin(kPosition) p: vec4<f32>,
     //   @builtin(front_facing) ff: bool,
@@ -369,7 +369,7 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, VertexBuiltin_Pass) {
-    // @stage(vertex)
+    // @vertex
     // fn main(
     //   @builtin(vertex_index) vi : u32,
     //   @builtin(instance_index) ii : u32,
@@ -392,7 +392,7 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, ComputeBuiltin_Pass) {
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn main(
     //   @builtin(local_invocationId) li_id: vec3<u32>,
     //   @builtin(local_invocationIndex) li_index: u32,
@@ -493,7 +493,7 @@
     //   @builtin(sample_index) si: u32;
     //   @builtin(sample_mask) sm : u32;;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn fragShader(arg: MyInputs) -> @location(0) f32 { return 1.0; }
 
     auto* s = Structure(
@@ -509,7 +509,7 @@
 }
 
 TEST_F(ResolverBuiltinsValidationTest, FrontFacingParamIsNotBool_Fail) {
-    // @stage(fragment)
+    // @fragment
     // fn fs_main(
     //   @builtin(front_facing) is_front: i32;
     // ) -> @location(0) f32 { return 1.0; }
@@ -528,7 +528,7 @@
     // struct MyInputs {
     //   @builtin(front_facing) pos: f32;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn fragShader(is_front: MyInputs) -> @location(0) f32 { return 1.0; }
 
     auto* s = Structure(
diff --git a/src/tint/resolver/call_validation_test.cc b/src/tint/resolver/call_validation_test.cc
index 84d2a51..4aa6350 100644
--- a/src/tint/resolver/call_validation_test.cc
+++ b/src/tint/resolver/call_validation_test.cc
@@ -163,7 +163,7 @@
     // fn bar(p: ptr<function, i32>) {
     // foo(p);
     // }
-    // @stage(fragment)
+    // @fragment
     // fn main() {
     //   var v: i32;
     //   bar(&v);
@@ -185,7 +185,7 @@
 
 TEST_F(ResolverCallValidationTest, LetPointer) {
     // fn x(p : ptr<function, i32>) -> i32 {}
-    // @stage(fragment)
+    // @fragment
     // fn main() {
     //   var v: i32;
     //   let p: ptr<function, i32> = &v;
@@ -214,7 +214,7 @@
     // let p: ptr<private, i32> = &v;
     // fn foo(p : ptr<private, i32>) -> i32 {}
     // var v: i32;
-    // @stage(fragment)
+    // @fragment
     // fn main() {
     //   var c: i32 = foo(p);
     // }
diff --git a/src/tint/resolver/entry_point_validation_test.cc b/src/tint/resolver/entry_point_validation_test.cc
index 3028d9b..5e5df15 100644
--- a/src/tint/resolver/entry_point_validation_test.cc
+++ b/src/tint/resolver/entry_point_validation_test.cc
@@ -47,7 +47,7 @@
 class ResolverEntryPointValidationTest : public TestHelper, public testing::Test {};
 
 TEST_F(ResolverEntryPointValidationTest, ReturnTypeAttribute_Location) {
-    // @stage(fragment)
+    // @fragment
     // fn main() -> @location(0) f32 { return 1.0; }
     Func(Source{{12, 34}}, "main", {}, ty.f32(), {Return(1_f)},
          {Stage(ast::PipelineStage::kFragment)}, {Location(0)});
@@ -56,7 +56,7 @@
 }
 
 TEST_F(ResolverEntryPointValidationTest, ReturnTypeAttribute_Builtin) {
-    // @stage(vertex)
+    // @vertex
     // fn main() -> @builtin(position) vec4<f32> { return vec4<f32>(); }
     Func(Source{{12, 34}}, "main", {}, ty.vec4<f32>(), {Return(Construct(ty.vec4<f32>()))},
          {Stage(ast::PipelineStage::kVertex)}, {Builtin(ast::Builtin::kPosition)});
@@ -65,7 +65,7 @@
 }
 
 TEST_F(ResolverEntryPointValidationTest, ReturnTypeAttribute_Missing) {
-    // @stage(vertex)
+    // @vertex
     // fn main() -> f32 {
     //   return 1.0;
     // }
@@ -77,7 +77,7 @@
 }
 
 TEST_F(ResolverEntryPointValidationTest, ReturnTypeAttribute_Multiple) {
-    // @stage(vertex)
+    // @vertex
     // fn main() -> @location(0) @builtin(position) vec4<f32> {
     //   return vec4<f32>();
     // }
@@ -95,7 +95,7 @@
     //   @location(0) a : f32;
     //   @builtin(frag_depth) b : f32;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn main() -> Output {
     //   return Output();
     // }
@@ -112,7 +112,7 @@
     // struct Output {
     //   @location(0) @builtin(frag_depth) a : f32;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn main() -> Output {
     //   return Output();
     // }
@@ -134,7 +134,7 @@
     //   @location(0) a : f32;
     //   b : f32;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn main() -> Output {
     //   return Output();
     // }
@@ -154,7 +154,7 @@
     //   @builtin(frag_depth) a : f32;
     //   @builtin(frag_depth) b : f32;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn main() -> Output {
     //   return Output();
     // }
@@ -172,7 +172,7 @@
 }
 
 TEST_F(ResolverEntryPointValidationTest, ParameterAttribute_Location) {
-    // @stage(fragment)
+    // @fragment
     // fn main(@location(0) param : f32) {}
     auto* param = Param("param", ty.f32(), {Location(0)});
     Func(Source{{12, 34}}, "main", {param}, ty.void_(), {}, {Stage(ast::PipelineStage::kFragment)});
@@ -181,7 +181,7 @@
 }
 
 TEST_F(ResolverEntryPointValidationTest, ParameterAttribute_Missing) {
-    // @stage(fragment)
+    // @fragment
     // fn main(param : f32) {}
     auto* param = Param(Source{{13, 43}}, "param", ty.vec4<f32>());
     Func(Source{{12, 34}}, "main", {param}, ty.void_(), {}, {Stage(ast::PipelineStage::kFragment)});
@@ -191,7 +191,7 @@
 }
 
 TEST_F(ResolverEntryPointValidationTest, ParameterAttribute_Multiple) {
-    // @stage(fragment)
+    // @fragment
     // fn main(@location(0) @builtin(sample_index) param : u32) {}
     auto* param = Param(
         "param", ty.u32(),
@@ -208,7 +208,7 @@
     //   @location(0) a : f32;
     //   @builtin(sample_index) b : u32;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn main(param : Input) {}
     auto* input =
         Structure("Input", {Member("a", ty.f32(), {Location(0)}),
@@ -223,7 +223,7 @@
     // struct Input {
     //   @location(0) @builtin(sample_index) a : u32;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn main(param : Input) {}
     auto* input =
         Structure("Input", {Member("a", ty.u32(),
@@ -243,7 +243,7 @@
     //   @location(0) a : f32;
     //   b : f32;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn main(param : Input) {}
     auto* input = Structure("Input", {Member(Source{{13, 43}}, "a", ty.f32(), {Location(0)}),
                                       Member(Source{{14, 52}}, "b", ty.f32(), {})});
@@ -256,7 +256,7 @@
 }
 
 TEST_F(ResolverEntryPointValidationTest, Parameter_DuplicateBuiltins) {
-    // @stage(fragment)
+    // @fragment
     // fn main(@builtin(sample_index) param_a : u32,
     //         @builtin(sample_index) param_b : u32) {}
     auto* param_a = Param("param_a", ty.u32(), {Builtin(ast::Builtin::kSampleIndex)});
@@ -277,7 +277,7 @@
     // struct InputB {
     //   @builtin(sample_index) a : u32;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn main(param_a : InputA, param_b : InputB) {}
     auto* input_a =
         Structure("InputA", {Member("a", ty.u32(), {Builtin(ast::Builtin::kSampleIndex)})});
@@ -296,7 +296,7 @@
 }
 
 TEST_F(ResolverEntryPointValidationTest, VertexShaderMustReturnPosition) {
-    // @stage(vertex)
+    // @vertex
     // fn main() {}
     Func(Source{{12, 34}}, "main", {}, ty.void_(), {}, {Stage(ast::PipelineStage::kVertex)});
 
@@ -337,7 +337,7 @@
 };
 
 TEST_P(TypeValidationTest, BareInputs) {
-    // @stage(fragment)
+    // @fragment
     // fn main(@location(0) @interpolate(flat) a : *) {}
     auto params = GetParam();
     auto* a = Param("a", params.create_ast_type(*this), {Location(0), Flat()});
@@ -354,7 +354,7 @@
     // struct Input {
     //   @location(0) @interpolate(flat) a : *;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn main(a : Input) {}
     auto params = GetParam();
     auto* input =
@@ -370,7 +370,7 @@
 }
 
 TEST_P(TypeValidationTest, BareOutputs) {
-    // @stage(fragment)
+    // @fragment
     // fn main() -> @location(0) * {
     //   return *();
     // }
@@ -390,7 +390,7 @@
     // struct Output {
     //   @location(0) a : *;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn main() -> Output {
     //   return Output();
     // }
@@ -416,7 +416,7 @@
 using LocationAttributeTests = ResolverTest;
 
 TEST_F(LocationAttributeTests, Pass) {
-    // @stage(fragment)
+    // @fragment
     // fn frag_main(@location(0) @interpolate(flat) a: i32) {}
 
     auto* p = Param(Source{{12, 34}}, "a", ty.i32(), {Location(0), Flat()});
@@ -426,7 +426,7 @@
 }
 
 TEST_F(LocationAttributeTests, BadType_Input_bool) {
-    // @stage(fragment)
+    // @fragment
     // fn frag_main(@location(0) a: bool) {}
 
     auto* p = Param(Source{{12, 34}}, "a", ty.bool_(), {Location(Source{{34, 56}}, 0)});
@@ -441,7 +441,7 @@
 }
 
 TEST_F(LocationAttributeTests, BadType_Output_Array) {
-    // @stage(fragment)
+    // @fragment
     // fn frag_main()->@location(0) array<f32, 2> { return array<f32, 2>(); }
 
     Func(Source{{12, 34}}, "frag_main", {}, ty.array<f32, 2>(),
@@ -460,7 +460,7 @@
     // struct Input {
     //   a : f32;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn main(@location(0) param : Input) {}
     auto* input = Structure("Input", {Member("a", ty.f32())});
     auto* param = Param(Source{{12, 34}}, "param", ty.Of(input), {Location(Source{{13, 43}}, 0)});
@@ -481,7 +481,7 @@
     // struct Input {
     //   a : Inner;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn main(param : Input) {}
     auto* inner = Structure("Inner", {Member(Source{{13, 43}}, "a", ty.f32(), {Location(0)})});
     auto* input = Structure("Input", {Member(Source{{14, 52}}, "a", ty.Of(inner))});
@@ -498,7 +498,7 @@
     // struct Input {
     //   @location(0) a : array<f32>;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn main(param : Input) {}
     auto* input =
         Structure("Input", {Member(Source{{13, 43}}, "a", ty.array<f32>(), {Location(0)})});
@@ -515,7 +515,7 @@
 
 TEST_F(LocationAttributeTests, BadMemberType_Input) {
     // struct S { @location(0) m: array<i32>; };
-    // @stage(fragment)
+    // @fragment
     // fn frag_main( a: S) {}
 
     auto* m = Member(Source{{34, 56}}, "m", ty.array<i32>(),
@@ -535,7 +535,7 @@
 
 TEST_F(LocationAttributeTests, BadMemberType_Output) {
     // struct S { @location(0) m: atomic<i32>; };
-    // @stage(fragment)
+    // @fragment
     // fn frag_main() -> S {}
     auto* m = Member(Source{{34, 56}}, "m", ty.atomic<i32>(),
                      ast::AttributeList{Location(Source{{12, 34}}, 0u)});
@@ -572,7 +572,7 @@
     //   @location(0) a : f32;
     //   @builtin(frag_depth) b : f32;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn main() -> Output {
     //   return Output();
     // }
@@ -589,7 +589,7 @@
     // struct Output {
     //   a : f32;
     // };
-    // @stage(vertex)
+    // @vertex
     // fn main() -> @location(0) Output {
     //   return Output();
     // }
@@ -612,7 +612,7 @@
     // struct Output {
     //   a : Inner;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn main() -> Output { return Output(); }
     auto* inner = Structure("Inner", {Member(Source{{13, 43}}, "a", ty.f32(), {Location(0)})});
     auto* output = Structure("Output", {Member(Source{{14, 52}}, "a", ty.Of(inner))});
@@ -629,7 +629,7 @@
     // struct Output {
     //   @location(0) a : array<f32>;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn main() -> Output {
     //   return Output();
     // }
@@ -695,7 +695,7 @@
 }
 
 TEST_F(LocationAttributeTests, Duplicate_input) {
-    // @stage(fragment)
+    // @fragment
     // fn main(@location(1) param_a : f32,
     //         @location(1) param_b : f32) {}
     auto* param_a = Param("param_a", ty.f32(), {Location(1)});
@@ -714,7 +714,7 @@
     // struct InputB {
     //   @location(1) a : f32;
     // };
-    // @stage(fragment)
+    // @fragment
     // fn main(param_a : InputA, param_b : InputB) {}
     auto* input_a = Structure("InputA", {Member("a", ty.f32(), {Location(1)})});
     auto* input_b = Structure("InputB", {Member("a", ty.f32(), {Location(Source{{34, 56}}, 1)})});
diff --git a/src/tint/resolver/function_validation_test.cc b/src/tint/resolver/function_validation_test.cc
index 3be06a9..cf8ddab 100644
--- a/src/tint/resolver/function_validation_test.cc
+++ b/src/tint/resolver/function_validation_test.cc
@@ -342,7 +342,7 @@
 }
 
 TEST_F(ResolverFunctionValidationTest, CannotCallEntryPoint) {
-    // @stage(compute) @workgroup_size(1) fn entrypoint() {}
+    // @compute @workgroup_size(1) fn entrypoint() {}
     // fn func() { return entrypoint(); }
     Func("entrypoint", {}, ty.void_(), {},
          {Stage(ast::PipelineStage::kCompute), WorkgroupSize(1_i)});
@@ -359,8 +359,8 @@
 }
 
 TEST_F(ResolverFunctionValidationTest, PipelineStage_MustBeUnique_Fail) {
-    // @stage(fragment)
-    // @stage(vertex)
+    // @fragment
+    // @vertex
     // fn main() { return; }
     Func(Source{{12, 34}}, "main", {}, ty.void_(),
          {
@@ -425,7 +425,7 @@
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_GoodType_ConstU32) {
     // let x = 4u;
     // let x = 8u;
-    // @stage(compute) @workgroup_size(x, y, 16u)
+    // @compute @workgroup_size(x, y, 16u)
     // fn main() {}
     auto* x = GlobalConst("x", ty.u32(), Expr(4_u));
     auto* y = GlobalConst("y", ty.u32(), Expr(8_u));
@@ -447,7 +447,7 @@
 }
 
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_GoodType_I32) {
-    // @stage(compute) @workgroup_size(1i, 2i, 3i)
+    // @compute @workgroup_size(1i, 2i, 3i)
     // fn main() {}
 
     Func("main", {}, ty.void_(), {},
@@ -457,7 +457,7 @@
 }
 
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_GoodType_U32) {
-    // @stage(compute) @workgroup_size(1u, 2u, 3u)
+    // @compute @workgroup_size(1u, 2u, 3u)
     // fn main() {}
 
     Func("main", {}, ty.void_(), {},
@@ -467,7 +467,7 @@
 }
 
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_GoodType_I32_AInt) {
-    // @stage(compute) @workgroup_size(1, 2i, 3)
+    // @compute @workgroup_size(1, 2i, 3)
     // fn main() {}
 
     Func("main", {}, ty.void_(), {},
@@ -477,7 +477,7 @@
 }
 
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_GoodType_U32_AInt) {
-    // @stage(compute) @workgroup_size(1u, 2, 3u)
+    // @compute @workgroup_size(1u, 2, 3u)
     // fn main() {}
 
     Func("main", {}, ty.void_(), {},
@@ -487,7 +487,7 @@
 }
 
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_MismatchType_U32) {
-    // @stage(compute) @workgroup_size(1u, 2, 3_i)
+    // @compute @workgroup_size(1u, 2, 3_i)
     // fn main() {}
 
     Func("main", {}, ty.void_(), {},
@@ -499,7 +499,7 @@
 }
 
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_MismatchType_I32) {
-    // @stage(compute) @workgroup_size(1_i, 2u, 3)
+    // @compute @workgroup_size(1_i, 2u, 3)
     // fn main() {}
 
     Func("main", {}, ty.void_(), {},
@@ -512,7 +512,7 @@
 
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_Const_TypeMismatch) {
     // let x = 64u;
-    // @stage(compute) @workgroup_size(1i, x)
+    // @compute @workgroup_size(1i, x)
     // fn main() {}
     GlobalConst("x", ty.u32(), Expr(64_u));
     Func("main", {}, ty.void_(), {},
@@ -526,7 +526,7 @@
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_Const_TypeMismatch2) {
     // let x = 64u;
     // let y = 32i;
-    // @stage(compute) @workgroup_size(x, y)
+    // @compute @workgroup_size(x, y)
     // fn main() {}
     GlobalConst("x", ty.u32(), Expr(64_u));
     GlobalConst("y", ty.i32(), Expr(32_i));
@@ -540,7 +540,7 @@
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_Mismatch_ConstU32) {
     // let x = 4u;
     // let x = 8u;
-    // @stage(compute) @workgroup_size(x, y, 16i)
+    // @compute @workgroup_size(x, y, 16i)
     // fn main() {}
     GlobalConst("x", ty.u32(), Expr(4_u));
     GlobalConst("y", ty.u32(), Expr(8_u));
@@ -553,7 +553,7 @@
 }
 
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_Literal_BadType) {
-    // @stage(compute) @workgroup_size(64.0)
+    // @compute @workgroup_size(64.0)
     // fn main() {}
 
     Func("main", {}, ty.void_(), {},
@@ -566,7 +566,7 @@
 }
 
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_Literal_Negative) {
-    // @stage(compute) @workgroup_size(-2i)
+    // @compute @workgroup_size(-2i)
     // fn main() {}
 
     Func("main", {}, ty.void_(), {},
@@ -577,7 +577,7 @@
 }
 
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_Literal_Zero) {
-    // @stage(compute) @workgroup_size(0i)
+    // @compute @workgroup_size(0i)
     // fn main() {}
 
     Func("main", {}, ty.void_(), {},
@@ -589,7 +589,7 @@
 
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_Const_BadType) {
     // let x = 64.0;
-    // @stage(compute) @workgroup_size(x)
+    // @compute @workgroup_size(x)
     // fn main() {}
     GlobalConst("x", ty.f32(), Expr(64_f));
     Func("main", {}, ty.void_(), {},
@@ -603,7 +603,7 @@
 
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_Const_Negative) {
     // let x = -2i;
-    // @stage(compute) @workgroup_size(x)
+    // @compute @workgroup_size(x)
     // fn main() {}
     GlobalConst("x", ty.i32(), Expr(-2_i));
     Func("main", {}, ty.void_(), {},
@@ -615,7 +615,7 @@
 
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_Const_Zero) {
     // let x = 0i;
-    // @stage(compute) @workgroup_size(x)
+    // @compute @workgroup_size(x)
     // fn main() {}
     GlobalConst("x", ty.i32(), Expr(0_i));
     Func("main", {}, ty.void_(), {},
@@ -627,7 +627,7 @@
 
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_Const_NestedZeroValueConstructor) {
     // let x = i32(i32(i32()));
-    // @stage(compute) @workgroup_size(x)
+    // @compute @workgroup_size(x)
     // fn main() {}
     GlobalConst("x", ty.i32(), Construct(ty.i32(), Construct(ty.i32(), Construct(ty.i32()))));
     Func("main", {}, ty.void_(), {},
@@ -639,7 +639,7 @@
 
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_NonConst) {
     // var<private> x = 64i;
-    // @stage(compute) @workgroup_size(x)
+    // @compute @workgroup_size(x)
     // fn main() {}
     Global("x", ty.i32(), ast::StorageClass::kPrivate, Expr(64_i));
     Func("main", {}, ty.void_(), {},
@@ -652,7 +652,7 @@
 }
 
 TEST_F(ResolverFunctionValidationTest, WorkgroupSize_InvalidExpr) {
-    // @stage(compute) @workgroup_size(i32(1))
+    // @compute @workgroup_size(i32(1))
     // fn main() {}
     Func("main", {}, ty.void_(), {},
          {Stage(ast::PipelineStage::kCompute),
diff --git a/src/tint/resolver/materialize_test.cc b/src/tint/resolver/materialize_test.cc
index d62ece9..22d5606 100644
--- a/src/tint/resolver/materialize_test.cc
+++ b/src/tint/resolver/materialize_test.cc
@@ -143,7 +143,7 @@
     kSwitchCaseWithAbstractCase,
 
     // @workgroup_size(target_expr, abstract_expr, 123)
-    // @stage(compute)
+    // @compute
     // fn f() {}
     kWorkgroupSize
 };
@@ -608,7 +608,7 @@
     kSwitch,
 
     // @workgroup_size(abstract_expr)
-    // @stage(compute)
+    // @compute
     // fn f() {}
     kWorkgroupSize,
 
diff --git a/src/tint/resolver/resolver_test.cc b/src/tint/resolver/resolver_test.cc
index 07c661c..16725ba 100644
--- a/src/tint/resolver/resolver_test.cc
+++ b/src/tint/resolver/resolver_test.cc
@@ -912,7 +912,7 @@
 }
 
 TEST_F(ResolverTest, Function_WorkgroupSize_NotSet) {
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn main() {}
     auto* func = Func("main", ast::VariableList{}, ty.void_(), {}, {});
 
@@ -930,7 +930,7 @@
 }
 
 TEST_F(ResolverTest, Function_WorkgroupSize_Literals) {
-    // @stage(compute) @workgroup_size(8, 2, 3)
+    // @compute @workgroup_size(8, 2, 3)
     // fn main() {}
     auto* func = Func("main", ast::VariableList{}, ty.void_(), {},
                       {Stage(ast::PipelineStage::kCompute), WorkgroupSize(8_i, 2_i, 3_i)});
@@ -952,7 +952,7 @@
     // let width = 16i;
     // let height = 8i;
     // let depth = 2i;
-    // @stage(compute) @workgroup_size(width, height, depth)
+    // @compute @workgroup_size(width, height, depth)
     // fn main() {}
     GlobalConst("width", ty.i32(), Expr(16_i));
     GlobalConst("height", ty.i32(), Expr(8_i));
@@ -977,7 +977,7 @@
 TEST_F(ResolverTest, Function_WorkgroupSize_Consts_NestedInitializer) {
     // let width = i32(i32(i32(8i)));
     // let height = i32(i32(i32(4i)));
-    // @stage(compute) @workgroup_size(width, height)
+    // @compute @workgroup_size(width, height)
     // fn main() {}
     GlobalConst("width", ty.i32(),
                 Construct(ty.i32(), Construct(ty.i32(), Construct(ty.i32(), 8_i))));
@@ -1003,7 +1003,7 @@
     // @id(0) override width = 16i;
     // @id(1) override height = 8i;
     // @id(2) override depth = 2i;
-    // @stage(compute) @workgroup_size(width, height, depth)
+    // @compute @workgroup_size(width, height, depth)
     // fn main() {}
     auto* width = Override("width", ty.i32(), Expr(16_i), {Id(0)});
     auto* height = Override("height", ty.i32(), Expr(8_i), {Id(1)});
@@ -1029,7 +1029,7 @@
     // @id(0) override width : i32;
     // @id(1) override height : i32;
     // @id(2) override depth : i32;
-    // @stage(compute) @workgroup_size(width, height, depth)
+    // @compute @workgroup_size(width, height, depth)
     // fn main() {}
     auto* width = Override("width", ty.i32(), nullptr, {Id(0)});
     auto* height = Override("height", ty.i32(), nullptr, {Id(1)});
@@ -1054,7 +1054,7 @@
 TEST_F(ResolverTest, Function_WorkgroupSize_Mixed) {
     // @id(1) override height = 2i;
     // let depth = 3i;
-    // @stage(compute) @workgroup_size(8, height, depth)
+    // @compute @workgroup_size(8, height, depth)
     // fn main() {}
     auto* height = Override("height", ty.i32(), Expr(2_i), {Id(0)});
     GlobalConst("depth", ty.i32(), Expr(3_i));
diff --git a/src/tint/resolver/type_validation_test.cc b/src/tint/resolver/type_validation_test.cc
index ff1b57b..a5e68ce 100644
--- a/src/tint/resolver/type_validation_test.cc
+++ b/src/tint/resolver/type_validation_test.cc
@@ -369,7 +369,7 @@
 }
 
 TEST_F(ResolverTypeValidationTest, RuntimeArrayInFunction_Fail) {
-    /// @stage(vertex)
+    /// @vertex
     // fn func() { var a : array<i32>; }
 
     auto* var = Var(Source{{12, 34}}, "a", ty.array<i32>(), ast::StorageClass::kNone);
@@ -552,7 +552,7 @@
 
 TEST_F(ResolverTypeValidationTest, RuntimeArrayAsParameter_Fail) {
     // fn func(a : array<u32>) {}
-    // @stage(vertex) fn main() {}
+    // @vertex fn main() {}
 
     auto* param = Param(Source{{12, 34}}, "a", ty.array<i32>());
 
diff --git a/src/tint/resolver/uniformity_test.cc b/src/tint/resolver/uniformity_test.cc
index 4a71045..396baf8 100644
--- a/src/tint/resolver/uniformity_test.cc
+++ b/src/tint/resolver/uniformity_test.cc
@@ -683,7 +683,7 @@
                        public ::testing::TestWithParam<BuiltinEntry> {};
 TEST_P(ComputeBuiltin, AsParam) {
     std::string src = R"(
-@stage(compute) @workgroup_size(64)
+@compute @workgroup_size(64)
 fn main(@builtin()" + GetParam().name +
                       R"() b : )" + GetParam().type + R"() {
   if (all(vec3(b) == vec3(0u))) {
@@ -719,7 +719,7 @@
                       R"() b : )" + GetParam().type + R"(
 }
 
-@stage(compute) @workgroup_size(64)
+@compute @workgroup_size(64)
 fn main(s : S) {
   if (all(vec3(s.b) == vec3(0u))) {
     workgroupBarrier();
@@ -767,7 +767,7 @@
   @builtin(local_invocation_index) idx : u32,
 }
 
-@stage(compute) @workgroup_size(64)
+@compute @workgroup_size(64)
 fn main(s : S) {
   if (s.num_groups.x == 0u) {
     workgroupBarrier();
@@ -795,7 +795,7 @@
                         public ::testing::TestWithParam<BuiltinEntry> {};
 TEST_P(FragmentBuiltin, AsParam) {
     std::string src = R"(
-@stage(fragment)
+@fragment
 fn main(@builtin()" + GetParam().name +
                       R"() b : )" + GetParam().type + R"() {
   if (u32(vec4(b).x) == 0u) {
@@ -830,7 +830,7 @@
                       R"() b : )" + GetParam().type + R"(
 }
 
-@stage(fragment)
+@fragment
 fn main(s : S) {
   if (u32(vec4(s.b).x) == 0u) {
     dpdx(0.5);
@@ -869,7 +869,7 @@
 
 TEST_F(UniformityAnalysisTest, FragmentLocation) {
     std::string src = R"(
-@stage(fragment)
+@fragment
 fn main(@location(0) l : f32) {
   if (l == 0.0) {
     dpdx(0.5);
@@ -899,7 +899,7 @@
   @location(0) l : f32
 }
 
-@stage(fragment)
+@fragment
 fn main(s : S) {
   if (s.l == 0.0) {
     dpdx(0.5);
@@ -5598,7 +5598,7 @@
   }
 }
 
-@stage(fragment)
+@fragment
 fn main() {
   foo();
 }
diff --git a/src/tint/resolver/validation_test.cc b/src/tint/resolver/validation_test.cc
index 9270065..4fe5b2b 100644
--- a/src/tint/resolver/validation_test.cc
+++ b/src/tint/resolver/validation_test.cc
@@ -80,7 +80,7 @@
     // var<workgroup> dst : vec4<f32>;
     // fn f2(){ dst = wg; }
     // fn f1() { f2(); }
-    // @stage(fragment)
+    // @fragment
     // fn f0() {
     //  f1();
     //}
diff --git a/src/tint/transform/add_empty_entry_point_test.cc b/src/tint/transform/add_empty_entry_point_test.cc
index 2f8a7ad..44f9005 100644
--- a/src/tint/transform/add_empty_entry_point_test.cc
+++ b/src/tint/transform/add_empty_entry_point_test.cc
@@ -31,7 +31,7 @@
 
 TEST_F(AddEmptyEntryPointTest, ShouldRunExistingEntryPoint) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn existing() {}
 )";
 
@@ -42,7 +42,7 @@
     auto* src = R"()";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn unused_entry_point() {
 }
 )";
@@ -54,7 +54,7 @@
 
 TEST_F(AddEmptyEntryPointTest, ExistingEntryPoint) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn main() {
 }
 )";
@@ -70,7 +70,7 @@
     auto* src = R"(var<private> unused_entry_point : f32;)";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn unused_entry_point_1() {
 }
 
diff --git a/src/tint/transform/add_spirv_block_attribute_test.cc b/src/tint/transform/add_spirv_block_attribute_test.cc
index 14ba929..455be60 100644
--- a/src/tint/transform/add_spirv_block_attribute_test.cc
+++ b/src/tint/transform/add_spirv_block_attribute_test.cc
@@ -41,7 +41,7 @@
 
 var<private> p : S;
 
-@stage(fragment)
+@fragment
 fn main() {
   p.f = 1.0;
 }
@@ -60,7 +60,7 @@
   f : f32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> S {
   return S();
 }
@@ -77,7 +77,7 @@
 @group(0) @binding(0)
 var<uniform> u : f32;
 
-@stage(fragment)
+@fragment
 fn main() {
   let f = u;
 }
@@ -90,7 +90,7 @@
 
 @group(0) @binding(0) var<uniform> u : u_block;
 
-@stage(fragment)
+@fragment
 fn main() {
   let f = u.inner;
 }
@@ -106,7 +106,7 @@
 @group(0) @binding(0)
 var<uniform> u : array<vec4<f32>, 4u>;
 
-@stage(fragment)
+@fragment
 fn main() {
   let a = u;
 }
@@ -119,7 +119,7 @@
 
 @group(0) @binding(0) var<uniform> u : u_block;
 
-@stage(fragment)
+@fragment
 fn main() {
   let a = u.inner;
 }
@@ -137,7 +137,7 @@
 @group(0) @binding(0)
 var<uniform> u : Numbers;
 
-@stage(fragment)
+@fragment
 fn main() {
   let a = u;
 }
@@ -152,7 +152,7 @@
 
 @group(0) @binding(0) var<uniform> u : u_block;
 
-@stage(fragment)
+@fragment
 fn main() {
   let a = u.inner;
 }
@@ -172,7 +172,7 @@
 @group(0) @binding(0)
 var<uniform> u : S;
 
-@stage(fragment)
+@fragment
 fn main() {
   let f = u.f;
 }
@@ -185,7 +185,7 @@
 
 @group(0) @binding(0) var<uniform> u : S;
 
-@stage(fragment)
+@fragment
 fn main() {
   let f = u.f;
 }
@@ -209,7 +209,7 @@
 @group(0) @binding(0)
 var<uniform> u : Outer;
 
-@stage(fragment)
+@fragment
 fn main() {
   let f = u.i.f;
 }
@@ -226,7 +226,7 @@
 
 @group(0) @binding(0) var<uniform> u : Outer;
 
-@stage(fragment)
+@fragment
 fn main() {
   let f = u.i.f;
 }
@@ -253,7 +253,7 @@
 @group(0) @binding(1)
 var<uniform> u1 : Inner;
 
-@stage(fragment)
+@fragment
 fn main() {
   let f0 = u0.i.f;
   let f1 = u1.f;
@@ -278,7 +278,7 @@
 
 @group(0) @binding(1) var<uniform> u1 : u1_block;
 
-@stage(fragment)
+@fragment
 fn main() {
   let f0 = u0.i.f;
   let f1 = u1.inner.f;
@@ -305,7 +305,7 @@
 @group(0) @binding(1)
 var<uniform> u : Inner;
 
-@stage(fragment)
+@fragment
 fn main() {
   let f0 = p.i.f;
   let f1 = u.f;
@@ -329,7 +329,7 @@
 
 @group(0) @binding(1) var<uniform> u : u_block;
 
-@stage(fragment)
+@fragment
 fn main() {
   let f0 = p.i.f;
   let f1 = u.inner.f;
@@ -360,7 +360,7 @@
 @group(0) @binding(2)
 var<uniform> u2 : Inner;
 
-@stage(fragment)
+@fragment
 fn main() {
   let f0 = u0.i.f;
   let f1 = u1.f;
@@ -388,7 +388,7 @@
 
 @group(0) @binding(2) var<uniform> u2 : u1_block;
 
-@stage(fragment)
+@fragment
 fn main() {
   let f0 = u0.i.f;
   let f1 = u1.inner.f;
@@ -410,7 +410,7 @@
 @group(0) @binding(0)
 var<uniform> u : S;
 
-@stage(fragment)
+@fragment
 fn main() {
   let f = u.f;
   let a = array<S, 4>();
@@ -428,7 +428,7 @@
 
 @group(0) @binding(0) var<uniform> u : u_block;
 
-@stage(fragment)
+@fragment
 fn main() {
   let f = u.inner.f;
   let a = array<S, 4>();
@@ -452,7 +452,7 @@
 @group(0) @binding(1)
 var<uniform> u1 : S;
 
-@stage(fragment)
+@fragment
 fn main() {
   let f0 = u0.f;
   let f1 = u1.f;
@@ -473,7 +473,7 @@
 
 @group(0) @binding(1) var<uniform> u1 : u0_block;
 
-@stage(fragment)
+@fragment
 fn main() {
   let f0 = u0.inner.f;
   let f1 = u1.inner.f;
@@ -506,7 +506,7 @@
 @group(0) @binding(1)
 var<uniform> u1 : MyInner;
 
-@stage(fragment)
+@fragment
 fn main() {
   let f0 = u0.i.f;
   let f1 = u1.f;
@@ -535,7 +535,7 @@
 
 @group(0) @binding(1) var<uniform> u1 : u1_block;
 
-@stage(fragment)
+@fragment
 fn main() {
   let f0 = u0.i.f;
   let f1 = u1.inner.f;
@@ -549,7 +549,7 @@
 
 TEST_F(AddSpirvBlockAttributeTest, Aliases_Nested_OuterBuffer_InnerBuffer_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn main() {
   let f0 = u0.i.f;
   let f1 = u1.f;
@@ -574,7 +574,7 @@
 };
 )";
     auto* expect = R"(
-@stage(fragment)
+@fragment
 fn main() {
   let f0 = u0.i.f;
   let f1 = u1.inner.f;
diff --git a/src/tint/transform/array_length_from_uniform_test.cc b/src/tint/transform/array_length_from_uniform_test.cc
index ee0d4b1..109904c 100644
--- a/src/tint/transform/array_length_from_uniform_test.cc
+++ b/src/tint/transform/array_length_from_uniform_test.cc
@@ -40,7 +40,7 @@
 
 @group(0) @binding(0) var<storage, read> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
 }
 )";
@@ -57,7 +57,7 @@
 
 @group(0) @binding(0) var<storage, read> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var len : u32 = arrayLength(&sb.arr);
 }
@@ -75,7 +75,7 @@
 
 @group(0) @binding(0) var<storage, read> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var len : u32 = arrayLength(&sb.arr);
 }
@@ -94,7 +94,7 @@
     auto* src = R"(
 @group(0) @binding(0) var<storage, read> sb : array<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var len : u32 = arrayLength(&sb);
 }
@@ -109,7 +109,7 @@
 
 @group(0) @binding(0) var<storage, read> sb : array<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var len : u32 = (tint_symbol_1.buffer_size[0u][0u] / 4u);
 }
@@ -137,7 +137,7 @@
 
 @group(0) @binding(0) var<storage, read> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var len : u32 = arrayLength(&sb.arr);
 }
@@ -157,7 +157,7 @@
 
 @group(0) @binding(0) var<storage, read> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var len : u32 = ((tint_symbol_1.buffer_size[0u][0u] - 4u) / 4u);
 }
@@ -197,7 +197,7 @@
 @group(3) @binding(2) var<storage, read> sb4 : SB4;
 @group(4) @binding(2) var<storage, read> sb5 : array<vec4<f32>>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var len1 : u32 = arrayLength(&(sb1.arr1));
   var len2 : u32 = arrayLength(&(sb2.arr2));
@@ -240,7 +240,7 @@
 
 @group(4) @binding(2) var<storage, read> sb5 : array<vec4<f32>>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var len1 : u32 = ((tint_symbol_1.buffer_size[0u][0u] - 4u) / 4u);
   var len2 : u32 = ((tint_symbol_1.buffer_size[0u][1u] - 16u) / 16u);
@@ -289,7 +289,7 @@
 @group(3) @binding(2) var<storage, read> sb4 : SB4;
 @group(4) @binding(2) var<storage, read> sb5 : array<vec4<f32>>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var len1 : u32 = arrayLength(&(sb1.arr1));
   var len3 : u32 = arrayLength(&sb3);
@@ -329,7 +329,7 @@
 
 @group(4) @binding(2) var<storage, read> sb5 : array<vec4<f32>>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var len1 : u32 = ((tint_symbol_1.buffer_size[0u][0u] - 4u) / 4u);
   var len3 : u32 = (tint_symbol_1.buffer_size[0u][2u] / 16u);
@@ -363,7 +363,7 @@
 
 @group(0) @binding(0) var<storage, read> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = &(sb.arr);
 }
@@ -397,7 +397,7 @@
 
 @group(1) @binding(2) var<storage, read> sb2 : SB2;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var len1 : u32 = arrayLength(&(sb1.arr1));
   var len2 : u32 = arrayLength(&(sb2.arr2));
@@ -426,7 +426,7 @@
 
 @group(1) @binding(2) var<storage, read> sb2 : SB2;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var len1 : u32 = ((tint_symbol_1.buffer_size[0u][0u] - 4u) / 4u);
   var len2 : u32 = arrayLength(&(sb2.arr2));
@@ -449,7 +449,7 @@
 
 TEST_F(ArrayLengthFromUniformTest, OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var len : u32 = arrayLength(&sb.arr);
 }
@@ -469,7 +469,7 @@
 
 @group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var len : u32 = ((tint_symbol_1.buffer_size[0u][0u] - 4u) / 4u);
 }
diff --git a/src/tint/transform/binding_remapper_test.cc b/src/tint/transform/binding_remapper_test.cc
index 29a96c3..3274886 100644
--- a/src/tint/transform/binding_remapper_test.cc
+++ b/src/tint/transform/binding_remapper_test.cc
@@ -74,7 +74,7 @@
 
 @group(3) @binding(2) var<storage, read> b : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
 }
 )";
@@ -99,7 +99,7 @@
 
 @group(3) @binding(2) var<storage, read> b : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
 }
 )";
@@ -113,7 +113,7 @@
 
 @group(3) @binding(2) var<storage, read> b : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
 }
 )";
@@ -143,7 +143,7 @@
 
 @group(4) @binding(3) var<storage, read> c : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
 }
 )";
@@ -159,7 +159,7 @@
 
 @group(4) @binding(3) var<storage, read> c : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
 }
 )";
@@ -187,7 +187,7 @@
 
 @group(3) @binding(2) var<storage, read> b : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
 }
 )";
@@ -201,7 +201,7 @@
 
 @group(6) @binding(7) var<storage, write> b : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
 }
 )";
@@ -235,7 +235,7 @@
 
 @group(5) @binding(4) var<storage, read> d : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let x : i32 = (((a.i + b.i) + c.i) + d.i);
 }
@@ -254,7 +254,7 @@
 
 @internal(disable_validation__binding_point_collision) @group(5) @binding(4) var<storage, read> d : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let x : i32 = (((a.i + b.i) + c.i) + d.i);
 }
@@ -287,12 +287,12 @@
 
 @group(5) @binding(4) var<storage, read> d : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f1() {
   let x : i32 = (a.i + c.i);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f2() {
   let x : i32 = (b.i + d.i);
 }
@@ -311,12 +311,12 @@
 
 @group(5) @binding(4) var<storage, read> d : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f1() {
   let x : i32 = (a.i + c.i);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f2() {
   let x : i32 = (b.i + d.i);
 }
@@ -345,7 +345,7 @@
 
 @group(3) @binding(2) var<storage, read> b : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
 }
 )";
diff --git a/src/tint/transform/calculate_array_length_test.cc b/src/tint/transform/calculate_array_length_test.cc
index 9c7c3ac..e2674b0 100644
--- a/src/tint/transform/calculate_array_length_test.cc
+++ b/src/tint/transform/calculate_array_length_test.cc
@@ -38,7 +38,7 @@
 
 @group(0) @binding(0) var<storage, read> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
 }
 )";
@@ -55,7 +55,7 @@
 
 @group(0) @binding(0) var<storage, read> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var len : u32 = arrayLength(&sb.arr);
 }
@@ -68,7 +68,7 @@
     auto* src = R"(
 @group(0) @binding(0) var<storage, read> sb : array<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var len : u32 = arrayLength(&sb);
 }
@@ -80,7 +80,7 @@
 
 @group(0) @binding(0) var<storage, read> sb : array<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var tint_symbol_1 : u32 = 0u;
   tint_symbol(sb, &(tint_symbol_1));
@@ -103,7 +103,7 @@
 
 @group(0) @binding(0) var<storage, read> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var len : u32 = arrayLength(&sb.arr);
 }
@@ -120,7 +120,7 @@
 
 @group(0) @binding(0) var<storage, read> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var tint_symbol_1 : u32 = 0u;
   tint_symbol(sb, &(tint_symbol_1));
@@ -142,7 +142,7 @@
 
 @group(0) @binding(0) var<storage, read> arr : array<S>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let len = arrayLength(&arr);
 }
@@ -157,7 +157,7 @@
 
 @group(0) @binding(0) var<storage, read> arr : array<S>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var tint_symbol_1 : u32 = 0u;
   tint_symbol(arr, &(tint_symbol_1));
@@ -179,7 +179,7 @@
 
 @group(0) @binding(0) var<storage, read> arr : array<array<S, 4>>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let len = arrayLength(&arr);
 }
@@ -194,7 +194,7 @@
 
 @group(0) @binding(0) var<storage, read> arr : array<array<S, 4>>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var tint_symbol_1 : u32 = 0u;
   tint_symbol(arr, &(tint_symbol_1));
@@ -212,7 +212,7 @@
     auto* src = R"(
 @group(0) @binding(0) var<storage, read> sb : array<i32>;;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var a : u32 = arrayLength(&sb);
   var b : u32 = arrayLength(&sb);
@@ -226,7 +226,7 @@
 
 @group(0) @binding(0) var<storage, read> sb : array<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var tint_symbol_1 : u32 = 0u;
   tint_symbol(sb, &(tint_symbol_1));
@@ -251,7 +251,7 @@
 
 @group(0) @binding(0) var<storage, read> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var a : u32 = arrayLength(&sb.arr);
   var b : u32 = arrayLength(&sb.arr);
@@ -270,7 +270,7 @@
 
 @group(0) @binding(0) var<storage, read> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var tint_symbol_1 : u32 = 0u;
   tint_symbol(sb, &(tint_symbol_1));
@@ -295,7 +295,7 @@
 
 @group(0) @binding(0) var<storage, read> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   if (true) {
     var len : u32 = arrayLength(&sb.arr);
@@ -318,7 +318,7 @@
 
 @group(0) @binding(0) var<storage, read> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   if (true) {
     var tint_symbol_1 : u32 = 0u;
@@ -359,7 +359,7 @@
 
 @group(0) @binding(2) var<storage, read> sb3 : array<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var len1 : u32 = arrayLength(&(sb1.arr1));
   var len2 : u32 = arrayLength(&(sb2.arr2));
@@ -394,7 +394,7 @@
 
 @group(0) @binding(2) var<storage, read> sb3 : array<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var tint_symbol_1 : u32 = 0u;
   tint_symbol(sb1, &(tint_symbol_1));
@@ -427,7 +427,7 @@
 @group(0) @binding(0) var<storage, read> a : SB;
 @group(0) @binding(1) var<storage, read> b : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = &a;
   var a : u32 = arrayLength(&a.arr);
@@ -451,7 +451,7 @@
 
 @group(0) @binding(1) var<storage, read> b : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var tint_symbol_1 : u32 = 0u;
   tint_symbol(a, &(tint_symbol_1));
@@ -473,7 +473,7 @@
 
 TEST_F(CalculateArrayLengthTest, OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var len1 : u32 = arrayLength(&(sb1.arr1));
   var len2 : u32 = arrayLength(&(sb2.arr2));
@@ -508,7 +508,7 @@
 @internal(intrinsic_buffer_size)
 fn tint_symbol_6(@internal(disable_validation__ignore_constructible_function_parameter) buffer : array<i32>, result : ptr<function, u32>)
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var tint_symbol_1 : u32 = 0u;
   tint_symbol(sb1, &(tint_symbol_1));
diff --git a/src/tint/transform/canonicalize_entry_point_io_test.cc b/src/tint/transform/canonicalize_entry_point_io_test.cc
index 68ccb8b..f17c5f5 100644
--- a/src/tint/transform/canonicalize_entry_point_io_test.cc
+++ b/src/tint/transform/canonicalize_entry_point_io_test.cc
@@ -38,11 +38,11 @@
     // Test that we do not introduce wrapper functions when there is no shader IO
     // to process.
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main() {
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main() {
 }
 )";
@@ -58,7 +58,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Parameters_Spirv) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main(@location(1) loc1 : f32,
              @location(2) @interpolate(flat) loc2 : vec4<u32>,
              @builtin(position) coord : vec4<f32>) {
@@ -77,7 +77,7 @@
   var col : f32 = (coord.x * loc1);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() {
   frag_main_inner(loc1_1, loc2_1, coord_1);
 }
@@ -92,7 +92,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Parameters_Msl) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main(@location(1) loc1 : f32,
              @location(2) @interpolate(flat) loc2 : vec4<u32>,
              @builtin(position) coord : vec4<f32>) {
@@ -112,7 +112,7 @@
   var col : f32 = (coord.x * loc1);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(@builtin(position) coord : vec4<f32>, tint_symbol : tint_symbol_1) {
   frag_main_inner(tint_symbol.loc1, tint_symbol.loc2, coord);
 }
@@ -127,7 +127,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Parameters_Hlsl) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main(@location(1) loc1 : f32,
              @location(2) @interpolate(flat) loc2 : vec4<u32>,
              @builtin(position) coord : vec4<f32>) {
@@ -149,7 +149,7 @@
   var col : f32 = (coord.x * loc1);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(tint_symbol : tint_symbol_1) {
   frag_main_inner(tint_symbol.loc1, tint_symbol.loc2, tint_symbol.coord);
 }
@@ -166,7 +166,7 @@
     auto* src = R"(
 type myf32 = f32;
 
-@stage(fragment)
+@fragment
 fn frag_main(@location(1) loc1 : myf32) {
   var x : myf32 = loc1;
 }
@@ -184,7 +184,7 @@
   var x : myf32 = loc1;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(tint_symbol : tint_symbol_1) {
   frag_main_inner(tint_symbol.loc1);
 }
@@ -199,7 +199,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Parameter_TypeAlias_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main(@location(1) loc1 : myf32) {
   var x : myf32 = loc1;
 }
@@ -217,7 +217,7 @@
   var x : myf32 = loc1;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(tint_symbol : tint_symbol_1) {
   frag_main_inner(tint_symbol.loc1);
 }
@@ -242,7 +242,7 @@
   @location(2) @interpolate(flat) loc2 : vec4<u32>,
 };
 
-@stage(fragment)
+@fragment
 fn frag_main(@location(0) loc0 : f32,
              locations : FragLocations,
              builtins : FragBuiltins) {
@@ -272,7 +272,7 @@
   var col : f32 = ((builtins.coord.x * locations.loc1) + loc0);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() {
   frag_main_inner(loc0_1, FragLocations(loc1_1, loc2_1), FragBuiltins(coord_1));
 }
@@ -287,7 +287,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, StructParameters_Spirv_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main(@location(0) loc0 : f32,
              locations : FragLocations,
              builtins : FragBuiltins) {
@@ -316,7 +316,7 @@
   var col : f32 = ((builtins.coord.x * locations.loc1) + loc0);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() {
   frag_main_inner(loc0_1, FragLocations(loc1_1, loc2_1), FragBuiltins(coord_1));
 }
@@ -348,7 +348,7 @@
   @location(2) @interpolate(flat) loc2 : vec4<u32>,
 };
 
-@stage(fragment)
+@fragment
 fn frag_main(@location(0) loc0 : f32,
              locations : FragLocations,
              builtins : FragBuiltins) {
@@ -379,7 +379,7 @@
   var col : f32 = ((builtins.coord.x * locations.loc1) + loc0);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(@builtin(position) coord : vec4<f32>, tint_symbol : tint_symbol_1) {
   frag_main_inner(tint_symbol.loc0, FragLocations(tint_symbol.loc1, tint_symbol.loc2), FragBuiltins(coord));
 }
@@ -394,7 +394,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, StructParameters_kMsl_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main(@location(0) loc0 : f32,
              locations : FragLocations,
              builtins : FragBuiltins) {
@@ -424,7 +424,7 @@
   var col : f32 = ((builtins.coord.x * locations.loc1) + loc0);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(@builtin(position) coord : vec4<f32>, tint_symbol : tint_symbol_1) {
   frag_main_inner(tint_symbol.loc0, FragLocations(tint_symbol.loc1, tint_symbol.loc2), FragBuiltins(coord));
 }
@@ -456,7 +456,7 @@
   @location(2) @interpolate(flat) loc2 : vec4<u32>,
 };
 
-@stage(fragment)
+@fragment
 fn frag_main(@location(0) loc0 : f32,
              locations : FragLocations,
              builtins : FragBuiltins) {
@@ -489,7 +489,7 @@
   var col : f32 = ((builtins.coord.x * locations.loc1) + loc0);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(tint_symbol : tint_symbol_1) {
   frag_main_inner(tint_symbol.loc0, FragLocations(tint_symbol.loc1, tint_symbol.loc2), FragBuiltins(tint_symbol.coord));
 }
@@ -504,7 +504,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, StructParameters_Hlsl_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main(@location(0) loc0 : f32,
              locations : FragLocations,
              builtins : FragBuiltins) {
@@ -536,7 +536,7 @@
   var col : f32 = ((builtins.coord.x * locations.loc1) + loc0);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(tint_symbol : tint_symbol_1) {
   frag_main_inner(tint_symbol.loc0, FragLocations(tint_symbol.loc1, tint_symbol.loc2), FragBuiltins(tint_symbol.coord));
 }
@@ -560,7 +560,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Return_NonStruct_Spirv) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main() -> @builtin(frag_depth) f32 {
   return 1.0;
 }
@@ -573,7 +573,7 @@
   return 1.0;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() {
   let inner_result = frag_main_inner();
   value = inner_result;
@@ -589,7 +589,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Return_NonStruct_Msl) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main() -> @builtin(frag_depth) f32 {
   return 1.0;
 }
@@ -605,7 +605,7 @@
   return 1.0;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -623,7 +623,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Return_NonStruct_Hlsl) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main() -> @builtin(frag_depth) f32 {
   return 1.0;
 }
@@ -639,7 +639,7 @@
   return 1.0;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -663,7 +663,7 @@
   @builtin(sample_mask) mask : u32,
 };
 
-@stage(fragment)
+@fragment
 fn frag_main() -> FragOutput {
   var output : FragOutput;
   output.depth = 1.0;
@@ -694,7 +694,7 @@
   return output;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() {
   let inner_result = frag_main_inner();
   color_1 = inner_result.color;
@@ -712,7 +712,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Return_Struct_Spirv_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main() -> FragOutput {
   var output : FragOutput;
   output.depth = 1.0;
@@ -743,7 +743,7 @@
   return output;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() {
   let inner_result = frag_main_inner();
   color_1 = inner_result.color;
@@ -773,7 +773,7 @@
   @builtin(sample_mask) mask : u32,
 };
 
-@stage(fragment)
+@fragment
 fn frag_main() -> FragOutput {
   var output : FragOutput;
   output.depth = 1.0;
@@ -807,7 +807,7 @@
   return output;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -827,7 +827,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Return_Struct_Msl_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main() -> FragOutput {
   var output : FragOutput;
   output.depth = 1.0;
@@ -861,7 +861,7 @@
   return output;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -893,7 +893,7 @@
   @builtin(sample_mask) mask : u32,
 };
 
-@stage(fragment)
+@fragment
 fn frag_main() -> FragOutput {
   var output : FragOutput;
   output.depth = 1.0;
@@ -927,7 +927,7 @@
   return output;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -947,7 +947,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Return_Struct_Hlsl_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main() -> FragOutput {
   var output : FragOutput;
   output.depth = 1.0;
@@ -981,7 +981,7 @@
   return output;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -1016,12 +1016,12 @@
   return x.value * x.mul;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main1(inputs : FragmentInput) {
   var x : f32 = foo(inputs);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main2(inputs : FragmentInput) {
   var x : f32 = foo(inputs);
 }
@@ -1049,7 +1049,7 @@
   var x : f32 = foo(inputs);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main1() {
   frag_main1_inner(FragmentInput(value_1, mul_1));
 }
@@ -1058,7 +1058,7 @@
   var x : f32 = foo(inputs);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main2() {
   frag_main2_inner(FragmentInput(value_2, mul_2));
 }
@@ -1073,12 +1073,12 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, StructParameters_SharedDeviceFunction_Spirv_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main1(inputs : FragmentInput) {
   var x : f32 = foo(inputs);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main2(inputs : FragmentInput) {
   var x : f32 = foo(inputs);
 }
@@ -1106,7 +1106,7 @@
   var x : f32 = foo(inputs);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main1() {
   frag_main1_inner(FragmentInput(value_1, mul_1));
 }
@@ -1115,7 +1115,7 @@
   var x : f32 = foo(inputs);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main2() {
   frag_main2_inner(FragmentInput(value_2, mul_2));
 }
@@ -1148,12 +1148,12 @@
   return x.value * x.mul;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main1(inputs : FragmentInput) {
   var x : f32 = foo(inputs);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main2(inputs : FragmentInput) {
   var x : f32 = foo(inputs);
 }
@@ -1180,7 +1180,7 @@
   var x : f32 = foo(inputs);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main1(tint_symbol : tint_symbol_1) {
   frag_main1_inner(FragmentInput(tint_symbol.value, tint_symbol.mul));
 }
@@ -1196,7 +1196,7 @@
   var x : f32 = foo(inputs);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main2(tint_symbol_2 : tint_symbol_3) {
   frag_main2_inner(FragmentInput(tint_symbol_2.value, tint_symbol_2.mul));
 }
@@ -1211,12 +1211,12 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, StructParameters_SharedDeviceFunction_Msl_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main1(inputs : FragmentInput) {
   var x : f32 = foo(inputs);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main2(inputs : FragmentInput) {
   var x : f32 = foo(inputs);
 }
@@ -1243,7 +1243,7 @@
   var x : f32 = foo(inputs);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main1(tint_symbol : tint_symbol_1) {
   frag_main1_inner(FragmentInput(tint_symbol.value, tint_symbol.mul));
 }
@@ -1259,7 +1259,7 @@
   var x : f32 = foo(inputs);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main2(tint_symbol_2 : tint_symbol_3) {
   frag_main2_inner(FragmentInput(tint_symbol_2.value, tint_symbol_2.mul));
 }
@@ -1292,12 +1292,12 @@
   return x.value * x.mul;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main1(inputs : FragmentInput) {
   var x : f32 = foo(inputs);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main2(inputs : FragmentInput) {
   var x : f32 = foo(inputs);
 }
@@ -1324,7 +1324,7 @@
   var x : f32 = foo(inputs);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main1(tint_symbol : tint_symbol_1) {
   frag_main1_inner(FragmentInput(tint_symbol.value, tint_symbol.mul));
 }
@@ -1340,7 +1340,7 @@
   var x : f32 = foo(inputs);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main2(tint_symbol_2 : tint_symbol_3) {
   frag_main2_inner(FragmentInput(tint_symbol_2.value, tint_symbol_2.mul));
 }
@@ -1355,12 +1355,12 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, StructParameters_SharedDeviceFunction_Hlsl_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main1(inputs : FragmentInput) {
   var x : f32 = foo(inputs);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main2(inputs : FragmentInput) {
   var x : f32 = foo(inputs);
 }
@@ -1387,7 +1387,7 @@
   var x : f32 = foo(inputs);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main1(tint_symbol : tint_symbol_1) {
   frag_main1_inner(FragmentInput(tint_symbol.value, tint_symbol.mul));
 }
@@ -1403,7 +1403,7 @@
   var x : f32 = foo(inputs);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main2(tint_symbol_2 : tint_symbol_3) {
   frag_main2_inner(FragmentInput(tint_symbol_2.value, tint_symbol_2.mul));
 }
@@ -1442,7 +1442,7 @@
   return global_inputs.col2 * 2.0;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main1(inputs : FragmentInput) {
  global_inputs = inputs;
  var r : f32 = foo();
@@ -1479,7 +1479,7 @@
   var g : f32 = bar();
 }
 
-@stage(fragment)
+@fragment
 fn frag_main1(tint_symbol : tint_symbol_1) {
   frag_main1_inner(FragmentInput(tint_symbol.col1, tint_symbol.col2));
 }
@@ -1494,7 +1494,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Struct_ModuleScopeVariable_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main1(inputs : FragmentInput) {
  global_inputs = inputs;
  var r : f32 = foo();
@@ -1531,7 +1531,7 @@
   var g : f32 = bar();
 }
 
-@stage(fragment)
+@fragment
 fn frag_main1(tint_symbol : tint_symbol_1) {
   frag_main1_inner(FragmentInput(tint_symbol.col1, tint_symbol.col2));
 }
@@ -1581,7 +1581,7 @@
   return x.col1;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(inputs : MyFragmentInput) -> MyFragmentOutput {
   var x : myf32 = foo(inputs);
   return MyFragmentOutput(x, inputs.col2);
@@ -1628,7 +1628,7 @@
   return MyFragmentOutput(x, inputs.col2);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(tint_symbol : tint_symbol_1) -> tint_symbol_2 {
   let inner_result = frag_main_inner(MyFragmentInput(tint_symbol.col1, tint_symbol.col2));
   var wrapper_result : tint_symbol_2;
@@ -1647,7 +1647,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Struct_TypeAliases_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main(inputs : MyFragmentInput) -> MyFragmentOutput {
   var x : myf32 = foo(inputs);
   return MyFragmentOutput(x, inputs.col2);
@@ -1694,7 +1694,7 @@
   return MyFragmentOutput(x, inputs.col2);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(tint_symbol : tint_symbol_1) -> tint_symbol_2 {
   let inner_result = frag_main_inner(MyFragmentInput(tint_symbol.col1, tint_symbol.col2));
   var wrapper_result : tint_symbol_2;
@@ -1745,12 +1745,12 @@
   @location(2) @interpolate(linear, sample) loc2 : f32,
 };
 
-@stage(vertex)
+@vertex
 fn vert_main() -> VertexOut {
   return VertexOut();
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(inputs : FragmentIn,
              @location(3) @interpolate(perspective, centroid) loc3 : f32) {
   let x = inputs.loc1 + inputs.loc2 + loc3;
@@ -1785,7 +1785,7 @@
   return VertexOut();
 }
 
-@stage(vertex)
+@vertex
 fn vert_main() -> tint_symbol {
   let inner_result = vert_main_inner();
   var wrapper_result : tint_symbol;
@@ -1809,7 +1809,7 @@
   let x = ((inputs.loc1 + inputs.loc2) + loc3);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(tint_symbol_1 : tint_symbol_2) {
   frag_main_inner(FragmentIn(tint_symbol_1.loc1, tint_symbol_1.loc2), tint_symbol_1.loc3);
 }
@@ -1824,13 +1824,13 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, InterpolateAttributes_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main(inputs : FragmentIn,
              @location(3) @interpolate(perspective, centroid) loc3 : f32) {
   let x = inputs.loc1 + inputs.loc2 + loc3;
 }
 
-@stage(vertex)
+@vertex
 fn vert_main() -> VertexOut {
   return VertexOut();
 }
@@ -1862,7 +1862,7 @@
   let x = ((inputs.loc1 + inputs.loc2) + loc3);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(tint_symbol : tint_symbol_1) {
   frag_main_inner(FragmentIn(tint_symbol.loc1, tint_symbol.loc2), tint_symbol.loc3);
 }
@@ -1882,7 +1882,7 @@
   return VertexOut();
 }
 
-@stage(vertex)
+@vertex
 fn vert_main() -> tint_symbol_2 {
   let inner_result = vert_main_inner();
   var wrapper_result : tint_symbol_2;
@@ -1939,12 +1939,12 @@
   @location(3) @interpolate(flat) vu : vec4<u32>,
 };
 
-@stage(vertex)
+@vertex
 fn vert_main(in : VertexIn) -> VertexOut {
   return VertexOut(in.i, in.u, in.vi, in.vu, vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(inputs : FragmentInterface) -> FragmentInterface {
   return inputs;
 }
@@ -2012,7 +2012,7 @@
   return VertexOut(in.i, in.u, in.vi, in.vu, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vert_main() {
   let inner_result = vert_main_inner(VertexIn(i_1, u_1, vi_1, vu_1));
   i_2 = inner_result.i;
@@ -2026,7 +2026,7 @@
   return inputs;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() {
   let inner_result_1 = frag_main_inner(FragmentInterface(i_3, u_3, vi_3, vu_3));
   i_4 = inner_result_1.i;
@@ -2047,12 +2047,12 @@
     // Test that we add a Flat attribute to integers that are vertex outputs and
     // fragment inputs, but not vertex inputs or fragment outputs.
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn vert_main(in : VertexIn) -> VertexOut {
   return VertexOut(in.i, in.u, in.vi, in.vu, vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(inputs : FragmentInterface) -> FragmentInterface {
   return inputs;
 }
@@ -2120,7 +2120,7 @@
   return VertexOut(in.i, in.u, in.vi, in.vu, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vert_main() {
   let inner_result = vert_main_inner(VertexIn(i_1, u_1, vi_1, vu_1));
   i_2 = inner_result.i;
@@ -2134,7 +2134,7 @@
   return inputs;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() {
   let inner_result_1 = frag_main_inner(FragmentInterface(i_3, u_3, vi_3, vu_3));
   i_4 = inner_result_1.i;
@@ -2179,12 +2179,12 @@
   @builtin(position) @invariant pos : vec4<f32>,
 };
 
-@stage(vertex)
+@vertex
 fn main1() -> VertexOut {
   return VertexOut();
 }
 
-@stage(vertex)
+@vertex
 fn main2() -> @builtin(position) @invariant vec4<f32> {
   return vec4<f32>();
 }
@@ -2204,7 +2204,7 @@
   return VertexOut();
 }
 
-@stage(vertex)
+@vertex
 fn main1() -> tint_symbol {
   let inner_result = main1_inner();
   var wrapper_result : tint_symbol;
@@ -2221,7 +2221,7 @@
   return vec4<f32>();
 }
 
-@stage(vertex)
+@vertex
 fn main2() -> tint_symbol_1 {
   let inner_result_1 = main2_inner();
   var wrapper_result_1 : tint_symbol_1;
@@ -2239,12 +2239,12 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, InvariantAttributes_OutOfOrder) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn main1() -> VertexOut {
   return VertexOut();
 }
 
-@stage(vertex)
+@vertex
 fn main2() -> @builtin(position) @invariant vec4<f32> {
   return vec4<f32>();
 }
@@ -2264,7 +2264,7 @@
   return VertexOut();
 }
 
-@stage(vertex)
+@vertex
 fn main1() -> tint_symbol {
   let inner_result = main1_inner();
   var wrapper_result : tint_symbol;
@@ -2281,7 +2281,7 @@
   return vec4<f32>();
 }
 
-@stage(vertex)
+@vertex
 fn main2() -> tint_symbol_1 {
   let inner_result_1 = main2_inner();
   var wrapper_result_1 : tint_symbol_1;
@@ -2313,7 +2313,7 @@
   @size(16) @location(1) @interpolate(flat) value : f32,
 };
 
-@stage(fragment)
+@fragment
 fn frag_main(inputs : FragmentInput) -> FragmentOutput {
   return FragmentOutput(inputs.coord.x * inputs.value + inputs.loc0);
 }
@@ -2352,7 +2352,7 @@
   return FragmentOutput(((inputs.coord.x * inputs.value) + inputs.loc0));
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(tint_symbol : tint_symbol_1) -> tint_symbol_2 {
   let inner_result = frag_main_inner(FragmentInput(tint_symbol.value, tint_symbol.coord, tint_symbol.loc0));
   var wrapper_result : tint_symbol_2;
@@ -2370,7 +2370,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Struct_LayoutAttributes_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main(inputs : FragmentInput) -> FragmentOutput {
   return FragmentOutput(inputs.coord.x * inputs.value + inputs.loc0);
 }
@@ -2405,7 +2405,7 @@
   return FragmentOutput(((inputs.coord.x * inputs.value) + inputs.loc0));
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(tint_symbol : tint_symbol_1) -> tint_symbol_2 {
   let inner_result = frag_main_inner(FragmentInput(tint_symbol.value, tint_symbol.coord, tint_symbol.loc0));
   var wrapper_result : tint_symbol_2;
@@ -2451,12 +2451,12 @@
   @location(0) a : f32,
 };
 
-@stage(vertex)
+@vertex
 fn vert_main() -> VertexOutput {
   return VertexOutput();
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(@builtin(front_facing) ff : bool,
              @location(2) @interpolate(flat) c : i32,
              inputs : FragmentInputExtra,
@@ -2496,7 +2496,7 @@
   return VertexOutput();
 }
 
-@stage(vertex)
+@vertex
 fn vert_main() -> tint_symbol {
   let inner_result = vert_main_inner();
   var wrapper_result : tint_symbol;
@@ -2526,7 +2526,7 @@
 fn frag_main_inner(ff : bool, c : i32, inputs : FragmentInputExtra, b : u32) {
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(tint_symbol_1 : tint_symbol_2) {
   frag_main_inner(tint_symbol_1.ff, tint_symbol_1.c, FragmentInputExtra(tint_symbol_1.d, tint_symbol_1.pos, tint_symbol_1.a), tint_symbol_1.b);
 }
@@ -2541,12 +2541,12 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, SortedMembers_OutOfOrder) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn vert_main() -> VertexOutput {
   return VertexOutput();
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(@builtin(front_facing) ff : bool,
              @location(2) @interpolate(flat) c : i32,
              inputs : FragmentInputExtra,
@@ -2586,7 +2586,7 @@
   return VertexOutput();
 }
 
-@stage(vertex)
+@vertex
 fn vert_main() -> tint_symbol {
   let inner_result = vert_main_inner();
   var wrapper_result : tint_symbol;
@@ -2616,7 +2616,7 @@
 fn frag_main_inner(ff : bool, c : i32, inputs : FragmentInputExtra, b : u32) {
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(tint_symbol_1 : tint_symbol_2) {
   frag_main_inner(tint_symbol_1.ff, tint_symbol_1.c, FragmentInputExtra(tint_symbol_1.d, tint_symbol_1.pos, tint_symbol_1.a), tint_symbol_1.b);
 }
@@ -2645,7 +2645,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, DontRenameSymbols) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn tint_symbol_1(@location(0) col : f32) {
 }
 )";
@@ -2659,7 +2659,7 @@
 fn tint_symbol_1_inner(col : f32) {
 }
 
-@stage(fragment)
+@fragment
 fn tint_symbol_1(tint_symbol : tint_symbol_2) {
   tint_symbol_1_inner(tint_symbol.col);
 }
@@ -2674,7 +2674,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, FixedSampleMask_VoidNoReturn) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main() {
 }
 )";
@@ -2688,7 +2688,7 @@
 fn frag_main_inner() {
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() -> tint_symbol {
   frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -2706,7 +2706,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, FixedSampleMask_VoidWithReturn) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main() {
   return;
 }
@@ -2722,7 +2722,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() -> tint_symbol {
   frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -2740,7 +2740,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, FixedSampleMask_WithAuthoredMask) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main() -> @builtin(sample_mask) u32 {
   return 7u;
 }
@@ -2756,7 +2756,7 @@
   return 7u;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -2774,7 +2774,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, FixedSampleMask_WithoutAuthoredMask) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main() -> @location(0) f32 {
   return 1.0;
 }
@@ -2792,7 +2792,7 @@
   return 1.0;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -2817,7 +2817,7 @@
   @location(0) value : f32,
 };
 
-@stage(fragment)
+@fragment
 fn frag_main() -> Output {
   return Output(0.5, 7u, 1.0);
 }
@@ -2843,7 +2843,7 @@
   return Output(0.5, 7u, 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -2863,7 +2863,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, FixedSampleMask_StructWithAuthoredMask_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main() -> Output {
   return Output(0.5, 7u, 1.0);
 }
@@ -2889,7 +2889,7 @@
   return Output(0.5, 7u, 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -2920,7 +2920,7 @@
   @location(0) value : f32,
 };
 
-@stage(fragment)
+@fragment
 fn frag_main() -> Output {
   return Output(0.5, 1.0);
 }
@@ -2945,7 +2945,7 @@
   return Output(0.5, 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -2965,7 +2965,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, FixedSampleMask_StructWithoutAuthoredMask_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main() -> Output {
   return Output(0.5, 1.0);
 }
@@ -2990,7 +2990,7 @@
   return Output(0.5, 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -3015,22 +3015,22 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, FixedSampleMask_MultipleShaders) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn frag_main1() -> @builtin(sample_mask) u32 {
   return 7u;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main2() -> @location(0) f32 {
   return 1.0;
 }
 
-@stage(vertex)
+@vertex
 fn vert_main1() -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main1() {
 }
 )";
@@ -3045,7 +3045,7 @@
   return 7u;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main1() -> tint_symbol {
   let inner_result = frag_main1_inner();
   var wrapper_result : tint_symbol;
@@ -3064,7 +3064,7 @@
   return 1.0;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main2() -> tint_symbol_1 {
   let inner_result_1 = frag_main2_inner();
   var wrapper_result_1 : tint_symbol_1;
@@ -3082,7 +3082,7 @@
   return vec4<f32>();
 }
 
-@stage(vertex)
+@vertex
 fn vert_main1() -> tint_symbol_2 {
   let inner_result_2 = vert_main1_inner();
   var wrapper_result_2 : tint_symbol_2;
@@ -3090,7 +3090,7 @@
   return wrapper_result_2;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main1() {
 }
 )";
@@ -3109,7 +3109,7 @@
   @location(1) fixed_sample_mask_1 : vec4<f32>,
 };
 
-@stage(fragment)
+@fragment
 fn frag_main() -> FragOut {
   return FragOut();
 }
@@ -3134,7 +3134,7 @@
   return FragOut();
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() -> tint_symbol {
   let inner_result = frag_main_inner();
   var wrapper_result : tint_symbol;
@@ -3154,7 +3154,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_ReturnNonStruct_Spirv) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn vert_main() -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
@@ -3169,7 +3169,7 @@
   return vec4<f32>();
 }
 
-@stage(vertex)
+@vertex
 fn vert_main() {
   let inner_result = vert_main_inner();
   value = inner_result;
@@ -3187,7 +3187,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_ReturnNonStruct_Msl) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn vert_main() -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
@@ -3205,7 +3205,7 @@
   return vec4<f32>();
 }
 
-@stage(vertex)
+@vertex
 fn vert_main() -> tint_symbol {
   let inner_result = vert_main_inner();
   var wrapper_result : tint_symbol;
@@ -3229,7 +3229,7 @@
   @builtin(position) pos : vec4<f32>,
 };
 
-@stage(vertex)
+@vertex
 fn vert_main() -> VertOut {
   return VertOut();
 }
@@ -3248,7 +3248,7 @@
   return VertOut();
 }
 
-@stage(vertex)
+@vertex
 fn vert_main() {
   let inner_result = vert_main_inner();
   pos_1 = inner_result.pos;
@@ -3266,7 +3266,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_ReturnStruct_Spirv_OutOfOrder) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn vert_main() -> VertOut {
   return VertOut();
 }
@@ -3285,7 +3285,7 @@
   return VertOut();
 }
 
-@stage(vertex)
+@vertex
 fn vert_main() {
   let inner_result = vert_main_inner();
   pos_1 = inner_result.pos;
@@ -3311,7 +3311,7 @@
   @builtin(position) pos : vec4<f32>,
 };
 
-@stage(vertex)
+@vertex
 fn vert_main() -> VertOut {
   return VertOut();
 }
@@ -3333,7 +3333,7 @@
   return VertOut();
 }
 
-@stage(vertex)
+@vertex
 fn vert_main() -> tint_symbol {
   let inner_result = vert_main_inner();
   var wrapper_result : tint_symbol;
@@ -3353,7 +3353,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_ReturnStruct_Msl_OutOfOrder) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn vert_main() -> VertOut {
   return VertOut();
 }
@@ -3375,7 +3375,7 @@
   return VertOut();
 }
 
-@stage(vertex)
+@vertex
 fn vert_main() -> tint_symbol {
   let inner_result = vert_main_inner();
   var wrapper_result : tint_symbol;
@@ -3416,7 +3416,7 @@
   @builtin(position) vertex_point_size_1 : vec4<f32>,
 };
 
-@stage(vertex)
+@vertex
 fn vert_main(collide : VertIn1, collide_1 : VertIn2) -> VertOut {
   let x = collide.collide + collide_1.collide;
   return VertOut();
@@ -3458,7 +3458,7 @@
   return VertOut();
 }
 
-@stage(vertex)
+@vertex
 fn vert_main() {
   let inner_result = vert_main_inner(VertIn1(collide_2), VertIn2(collide_3));
   vertex_point_size_3 = inner_result.vertex_point_size;
@@ -3477,7 +3477,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_AvoidNameClash_Spirv_OutOfOrder) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn vert_main(collide : VertIn1, collide_1 : VertIn2) -> VertOut {
   let x = collide.collide + collide_1.collide;
   return VertOut();
@@ -3517,7 +3517,7 @@
   return VertOut();
 }
 
-@stage(vertex)
+@vertex
 fn vert_main() {
   let inner_result = vert_main_inner(VertIn1(collide_2), VertIn2(collide_3));
   vertex_point_size_3 = inner_result.vertex_point_size;
@@ -3568,7 +3568,7 @@
   @builtin(position) vertex_point_size_1 : vec4<f32>,
 };
 
-@stage(vertex)
+@vertex
 fn vert_main(collide : VertIn1, collide_1 : VertIn2) -> VertOut {
   let x = collide.collide + collide_1.collide;
   return VertOut();
@@ -3610,7 +3610,7 @@
   return VertOut();
 }
 
-@stage(vertex)
+@vertex
 fn vert_main(tint_symbol : tint_symbol_1) -> tint_symbol_2 {
   let inner_result = vert_main_inner(VertIn1(tint_symbol.collide), VertIn2(tint_symbol.collide_2));
   var wrapper_result : tint_symbol_2;
@@ -3631,7 +3631,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_AvoidNameClash_Msl_OutOfOrder) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn vert_main(collide : VertIn1, collide_1 : VertIn2) -> VertOut {
   let x = collide.collide + collide_1.collide;
   return VertOut();
@@ -3673,7 +3673,7 @@
   return VertOut();
 }
 
-@stage(vertex)
+@vertex
 fn vert_main(tint_symbol : tint_symbol_1) -> tint_symbol_2 {
   let inner_result = vert_main_inner(VertIn1(tint_symbol.collide), VertIn2(tint_symbol.collide_2));
   var wrapper_result : tint_symbol_2;
@@ -3720,7 +3720,7 @@
   @builtin(position) vertex_point_size_1 : vec4<f32>,
 };
 
-@stage(vertex)
+@vertex
 fn vert_main(collide : VertIn1, collide_1 : VertIn2) -> VertOut {
   let x = collide.collide + collide_1.collide;
   return VertOut();
@@ -3762,7 +3762,7 @@
   return VertOut();
 }
 
-@stage(vertex)
+@vertex
 fn vert_main(tint_symbol : tint_symbol_1) -> tint_symbol_2 {
   let inner_result = vert_main_inner(VertIn1(tint_symbol.collide), VertIn2(tint_symbol.collide_2));
   var wrapper_result : tint_symbol_2;
@@ -3783,7 +3783,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_AvoidNameClash_Hlsl_OutOfOrder) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn vert_main(collide : VertIn1, collide_1 : VertIn2) -> VertOut {
   let x = collide.collide + collide_1.collide;
   return VertOut();
@@ -3825,7 +3825,7 @@
   return VertOut();
 }
 
-@stage(vertex)
+@vertex
 fn vert_main(tint_symbol : tint_symbol_1) -> tint_symbol_2 {
   let inner_result = vert_main_inner(VertIn1(tint_symbol.collide), VertIn2(tint_symbol.collide_2));
   var wrapper_result : tint_symbol_2;
@@ -3859,7 +3859,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, SpirvSampleMaskBuiltins) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn main(@builtin(sample_index) sample_index : u32,
         @builtin(sample_mask) mask_in : u32
         ) -> @builtin(sample_mask) u32 {
@@ -3878,7 +3878,7 @@
   return mask_in;
 }
 
-@stage(fragment)
+@fragment
 fn main() {
   let inner_result = main_inner(sample_index_1, mask_in_1[0i]);
   value[0i] = inner_result;
@@ -3894,7 +3894,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, GLSLSampleMaskBuiltins) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn fragment_main(@builtin(sample_index) sample_index : u32,
                  @builtin(sample_mask) mask_in : u32
                  ) -> @builtin(sample_mask) u32 {
@@ -3913,7 +3913,7 @@
   return mask_in;
 }
 
-@stage(fragment)
+@fragment
 fn main() {
   let inner_result = fragment_main(bitcast<u32>(gl_SampleID), bitcast<u32>(gl_SampleMaskIn[0i]));
   gl_SampleMask[0i] = bitcast<i32>(inner_result);
@@ -3929,7 +3929,7 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, GLSLVertexInstanceIndexBuiltins) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn vertex_main(@builtin(vertex_index) vertexID : u32,
                @builtin(instance_index) instanceID : u32
                ) -> @builtin(position) vec4<f32> {
@@ -3948,7 +3948,7 @@
   return vec4<f32>((f32(vertexID) + f32(instanceID)));
 }
 
-@stage(vertex)
+@vertex
 fn main() {
   let inner_result = vertex_main(bitcast<u32>(gl_VertexID), bitcast<u32>(gl_InstanceID));
   gl_Position = inner_result;
diff --git a/src/tint/transform/decompose_memory_access_test.cc b/src/tint/transform/decompose_memory_access_test.cc
index 19f8b2e..4b96bcb 100644
--- a/src/tint/transform/decompose_memory_access_test.cc
+++ b/src/tint/transform/decompose_memory_access_test.cc
@@ -78,7 +78,7 @@
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var a : i32 = sb.a;
   var b : u32 = sb.b;
@@ -213,7 +213,7 @@
   return arr;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var a : i32 = tint_symbol(sb, 0u);
   var b : u32 = tint_symbol_1(sb, 4u);
@@ -247,7 +247,7 @@
 
 TEST_F(DecomposeMemoryAccessTest, SB_BasicLoad_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var a : i32 = sb.a;
   var b : u32 = sb.b;
@@ -382,7 +382,7 @@
   return arr;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var a : i32 = tint_symbol(sb, 0u);
   var b : u32 = tint_symbol_1(sb, 4u);
@@ -470,7 +470,7 @@
 
 @group(0) @binding(0) var<uniform> ub : UB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var a : i32 = ub.a;
   var b : u32 = ub.b;
@@ -605,7 +605,7 @@
   return arr;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var a : i32 = tint_symbol(ub, 0u);
   var b : u32 = tint_symbol_1(ub, 4u);
@@ -639,7 +639,7 @@
 
 TEST_F(DecomposeMemoryAccessTest, UB_BasicLoad_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var a : i32 = ub.a;
   var b : u32 = ub.b;
@@ -774,7 +774,7 @@
   return arr;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var a : i32 = tint_symbol(ub, 0u);
   var b : u32 = tint_symbol_1(ub, 4u);
@@ -862,7 +862,7 @@
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   sb.a = i32();
   sb.b = u32();
@@ -1014,7 +1014,7 @@
   }
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   tint_symbol(sb, 0u, i32());
   tint_symbol_1(sb, 4u, u32());
@@ -1048,7 +1048,7 @@
 
 TEST_F(DecomposeMemoryAccessTest, SB_BasicStore_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   sb.a = i32();
   sb.b = u32();
@@ -1200,7 +1200,7 @@
   }
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   tint_symbol(sb, 0u, i32());
   tint_symbol_1(sb, 4u, u32());
@@ -1288,7 +1288,7 @@
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var x : SB = sb;
 }
@@ -1406,7 +1406,7 @@
   return SB(tint_symbol_1(buffer, (offset + 0u)), tint_symbol_2(buffer, (offset + 4u)), tint_symbol_3(buffer, (offset + 8u)), tint_symbol_4(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 24u)), tint_symbol_6(buffer, (offset + 32u)), tint_symbol_7(buffer, (offset + 48u)), tint_symbol_8(buffer, (offset + 64u)), tint_symbol_9(buffer, (offset + 80u)), tint_symbol_10(buffer, (offset + 96u)), tint_symbol_11(buffer, (offset + 112u)), tint_symbol_12(buffer, (offset + 128u)), tint_symbol_13(buffer, (offset + 144u)), tint_symbol_14(buffer, (offset + 160u)), tint_symbol_15(buffer, (offset + 192u)), tint_symbol_16(buffer, (offset + 224u)), tint_symbol_17(buffer, (offset + 256u)), tint_symbol_18(buffer, (offset + 304u)), tint_symbol_19(buffer, (offset + 352u)), tint_symbol_20(buffer, (offset + 384u)), tint_symbol_21(buffer, (offset + 448u)), tint_symbol_22(buffer, (offset + 512u)));
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var x : SB = tint_symbol(sb, 0u);
 }
@@ -1419,7 +1419,7 @@
 
 TEST_F(DecomposeMemoryAccessTest, LoadStructure_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var x : SB = sb;
 }
@@ -1537,7 +1537,7 @@
   return SB(tint_symbol_1(buffer, (offset + 0u)), tint_symbol_2(buffer, (offset + 4u)), tint_symbol_3(buffer, (offset + 8u)), tint_symbol_4(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 24u)), tint_symbol_6(buffer, (offset + 32u)), tint_symbol_7(buffer, (offset + 48u)), tint_symbol_8(buffer, (offset + 64u)), tint_symbol_9(buffer, (offset + 80u)), tint_symbol_10(buffer, (offset + 96u)), tint_symbol_11(buffer, (offset + 112u)), tint_symbol_12(buffer, (offset + 128u)), tint_symbol_13(buffer, (offset + 144u)), tint_symbol_14(buffer, (offset + 160u)), tint_symbol_15(buffer, (offset + 192u)), tint_symbol_16(buffer, (offset + 224u)), tint_symbol_17(buffer, (offset + 256u)), tint_symbol_18(buffer, (offset + 304u)), tint_symbol_19(buffer, (offset + 352u)), tint_symbol_20(buffer, (offset + 384u)), tint_symbol_21(buffer, (offset + 448u)), tint_symbol_22(buffer, (offset + 512u)));
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var x : SB = tint_symbol(sb, 0u);
 }
@@ -1604,7 +1604,7 @@
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   sb = SB();
 }
@@ -1760,7 +1760,7 @@
   tint_symbol_22(buffer, (offset + 512u), value.v);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   tint_symbol(sb, 0u, SB());
 }
@@ -1773,7 +1773,7 @@
 
 TEST_F(DecomposeMemoryAccessTest, StoreStructure_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   sb = SB();
 }
@@ -1929,7 +1929,7 @@
   tint_symbol_22(buffer, (offset + 512u), value.v);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   tint_symbol(sb, 0u, SB());
 }
@@ -1993,7 +1993,7 @@
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var x : f32 = sb.b[4].b[1].b.z;
 }
@@ -2030,7 +2030,7 @@
 @internal(intrinsic_load_storage_f32) @internal(disable_validation__function_has_no_body)
 fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> f32
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var x : f32 = tint_symbol(sb, 712u);
 }
@@ -2043,7 +2043,7 @@
 
 TEST_F(DecomposeMemoryAccessTest, ComplexStaticAccessChain_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var x : f32 = sb.b[4].b[1].b.z;
 }
@@ -2080,7 +2080,7 @@
 @internal(intrinsic_load_storage_f32) @internal(disable_validation__function_has_no_body)
 fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> f32
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var x : f32 = tint_symbol(sb, 712u);
 }
@@ -2133,7 +2133,7 @@
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : i32 = 4;
   var j : u32 = 1u;
@@ -2166,7 +2166,7 @@
 @internal(intrinsic_load_storage_f32) @internal(disable_validation__function_has_no_body)
 fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> f32
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : i32 = 4;
   var j : u32 = 1u;
@@ -2182,7 +2182,7 @@
 
 TEST_F(DecomposeMemoryAccessTest, ComplexDynamicAccessChain_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : i32 = 4;
   var j : u32 = 1u;
@@ -2215,7 +2215,7 @@
 @internal(intrinsic_load_storage_f32) @internal(disable_validation__function_has_no_body)
 fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> f32
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : i32 = 4;
   var j : u32 = 1u;
@@ -2279,7 +2279,7 @@
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : i32 = 4;
   var j : u32 = 1u;
@@ -2320,7 +2320,7 @@
 @internal(intrinsic_load_storage_f32) @internal(disable_validation__function_has_no_body)
 fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> f32
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : i32 = 4;
   var j : u32 = 1u;
@@ -2336,7 +2336,7 @@
 
 TEST_F(DecomposeMemoryAccessTest, ComplexDynamicAccessChainWithAliases_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : i32 = 4;
   var j : u32 = 1u;
@@ -2377,7 +2377,7 @@
 @internal(intrinsic_load_storage_f32) @internal(disable_validation__function_has_no_body)
 fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> f32
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : i32 = 4;
   var j : u32 = 1u;
@@ -2429,7 +2429,7 @@
 
 @group(0) @binding(0) var<storage, read_write> sb : SB;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   atomicStore(&sb.a, 123);
   atomicLoad(&sb.a);
@@ -2542,7 +2542,7 @@
 @internal(intrinsic_atomic_compare_exchange_weak_storage_u32) @internal(disable_validation__function_has_no_body)
 fn tint_atomicCompareExchangeWeak_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32, param_2 : u32) -> atomic_compare_exchange_weak_ret_type_1
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   tint_atomicStore(sb, 16u, 123);
   tint_atomicLoad(sb, 16u);
@@ -2576,7 +2576,7 @@
 
 TEST_F(DecomposeMemoryAccessTest, StorageBufferAtomics_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   atomicStore(&sb.a, 123);
   atomicLoad(&sb.a);
@@ -2689,7 +2689,7 @@
 @internal(intrinsic_atomic_compare_exchange_weak_storage_u32) @internal(disable_validation__function_has_no_body)
 fn tint_atomicCompareExchangeWeak_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32, param_2 : u32) -> atomic_compare_exchange_weak_ret_type_1
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   tint_atomicStore(sb, 16u, 123);
   tint_atomicLoad(sb, 16u);
@@ -2739,7 +2739,7 @@
 
 var<workgroup> w : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   atomicStore(&(w.a), 123);
   atomicLoad(&(w.a));
@@ -2775,7 +2775,7 @@
 
 TEST_F(DecomposeMemoryAccessTest, WorkgroupBufferAtomics_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   atomicStore(&(w.a), 123);
   atomicLoad(&(w.a));
diff --git a/src/tint/transform/decompose_strided_array_test.cc b/src/tint/transform/decompose_strided_array_test.cc
index e911df3..ffc6695 100644
--- a/src/tint/transform/decompose_strided_array_test.cc
+++ b/src/tint/transform/decompose_strided_array_test.cc
@@ -71,7 +71,7 @@
 TEST_F(DecomposeStridedArrayTest, PrivateDefaultStridedArray) {
     // var<private> arr : @stride(4) array<f32, 4u>
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   let a : @stride(4) array<f32, 4u> = a;
     //   let b : f32 = arr[1];
@@ -92,7 +92,7 @@
     auto* expect = R"(
 var<private> arr : array<f32, 4u>;
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   let a : array<f32, 4u> = arr;
   let b : f32 = arr[1i];
@@ -107,7 +107,7 @@
 TEST_F(DecomposeStridedArrayTest, PrivateStridedArray) {
     // var<private> arr : @stride(32) array<f32, 4u>
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   let a : @stride(32) array<f32, 4u> = a;
     //   let b : f32 = arr[1];
@@ -133,7 +133,7 @@
 
 var<private> arr : array<strided_arr, 4u>;
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   let a : array<strided_arr, 4u> = arr;
   let b : f32 = arr[1i].el;
@@ -151,7 +151,7 @@
     // };
     // @group(0) @binding(0) var<uniform> s : S;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   let a : @stride(32) array<f32, 4u> = s.a;
     //   let b : f32 = s.a[1];
@@ -181,7 +181,7 @@
 
 @group(0) @binding(0) var<uniform> s : S;
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   let a : array<strided_arr, 4u> = s.a;
   let b : f32 = s.a[1i].el;
@@ -199,7 +199,7 @@
     // };
     // @group(0) @binding(0) var<uniform> s : S;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   let a : @stride(16) array<vec4<f32>, 4u> = s.a;
     //   let b : f32 = s.a[1][2];
@@ -227,7 +227,7 @@
 
 @group(0) @binding(0) var<uniform> s : S;
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   let a : array<vec4<f32>, 4u> = s.a;
   let b : f32 = s.a[1i][2i];
@@ -245,7 +245,7 @@
     // };
     // @group(0) @binding(0) var<storage> s : S;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   let a : @stride(32) array<f32, 4u> = s.a;
     //   let b : f32 = s.a[1];
@@ -275,7 +275,7 @@
 
 @group(0) @binding(0) var<storage> s : S;
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   let a : array<strided_arr, 4u> = s.a;
   let b : f32 = s.a[1i].el;
@@ -293,7 +293,7 @@
     // };
     // @group(0) @binding(0) var<storage> s : S;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   let a : @stride(4) array<f32, 4u> = s.a;
     //   let b : f32 = s.a[1];
@@ -318,7 +318,7 @@
 
 @group(0) @binding(0) var<storage> s : S;
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   let a : array<f32, 4u> = s.a;
   let b : f32 = s.a[1i];
@@ -336,7 +336,7 @@
     // };
     // @group(0) @binding(0) var<storage, read_write> s : S;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   s.a = @stride(32) array<f32, 4u>();
     //   s.a = @stride(32) array<f32, 4u>(1.0, 2.0, 3.0, 4.0);
@@ -371,7 +371,7 @@
 
 @group(0) @binding(0) var<storage, read_write> s : S;
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   s.a = array<strided_arr, 4u>();
   s.a = array<strided_arr, 4u>(strided_arr(1.0f), strided_arr(2.0f), strided_arr(3.0f), strided_arr(4.0f));
@@ -390,7 +390,7 @@
     // };
     // @group(0) @binding(0) var<storage, read_write> s : S;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   s.a = @stride(4) array<f32, 4u>();
     //   s.a = @stride(4) array<f32, 4u>(1.0, 2.0, 3.0, 4.0);
@@ -420,7 +420,7 @@
 
 @group(0) @binding(0) var<storage, read_write> s : S;
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   s.a = array<f32, 4u>();
   s.a = array<f32, 4u>(1.0f, 2.0f, 3.0f, 4.0f);
@@ -439,7 +439,7 @@
     // };
     // @group(0) @binding(0) var<storage, read_write> s : S;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   let a = &s.a;
     //   let b = &*&*(a);
@@ -479,7 +479,7 @@
 
 @group(0) @binding(0) var<storage, read_write> s : S;
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   let c = s.a;
   let d = s.a[1i].el;
@@ -500,7 +500,7 @@
     // };
     // @group(0) @binding(0) var<storage, read_write> s : S;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   let a : ARR = s.a;
     //   let b : f32 = s.a[1];
@@ -541,7 +541,7 @@
 
 @group(0) @binding(0) var<storage, read_write> s : S;
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   let a : ARR = s.a;
   let b : f32 = s.a[1i].el;
@@ -564,7 +564,7 @@
     // };
     // @group(0) @binding(0) var<storage, read_write> s : S;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   let a : ARR_B = s.a;
     //   let b : array<@stride(8) array<f32, 2u>, 3u> = s.a[3];
@@ -641,7 +641,7 @@
 
 @group(0) @binding(0) var<storage, read_write> s : S;
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   let a : ARR_B = s.a;
   let b : array<ARR_A, 3u> = s.a[3i].el;
diff --git a/src/tint/transform/decompose_strided_matrix_test.cc b/src/tint/transform/decompose_strided_matrix_test.cc
index 2367cf1..06169d7 100644
--- a/src/tint/transform/decompose_strided_matrix_test.cc
+++ b/src/tint/transform/decompose_strided_matrix_test.cc
@@ -62,7 +62,7 @@
     // };
     // @group(0) @binding(0) var<uniform> s : S;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   let x : mat2x2<f32> = s.m;
     // }
@@ -99,7 +99,7 @@
   return mat2x2<f32>(arr[0u], arr[1u]);
 }
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   let x : mat2x2<f32> = arr_to_mat2x2_stride_32(s.m);
 }
@@ -118,7 +118,7 @@
     // };
     // @group(0) @binding(0) var<uniform> s : S;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   let x : vec2<f32> = s.m[1];
     // }
@@ -152,7 +152,7 @@
 
 @group(0) @binding(0) var<uniform> s : S;
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   let x : vec2<f32> = s.m[1i];
 }
@@ -171,7 +171,7 @@
     // };
     // @group(0) @binding(0) var<uniform> s : S;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   let x : mat2x2<f32> = s.m;
     // }
@@ -205,7 +205,7 @@
 
 @group(0) @binding(0) var<uniform> s : S;
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   let x : mat2x2<f32> = s.m;
 }
@@ -224,7 +224,7 @@
     // };
     // @group(0) @binding(0) var<storage, read_write> s : S;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   let x : mat2x2<f32> = s.m;
     // }
@@ -262,7 +262,7 @@
   return mat2x2<f32>(arr[0u], arr[1u]);
 }
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   let x : mat2x2<f32> = arr_to_mat2x2_stride_32(s.m);
 }
@@ -281,7 +281,7 @@
     // };
     // @group(0) @binding(0) var<storage, read_write> s : S;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   let x : vec2<f32> = s.m[1];
     // }
@@ -316,7 +316,7 @@
 
 @group(0) @binding(0) var<storage, read_write> s : S;
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   let x : vec2<f32> = s.m[1i];
 }
@@ -335,7 +335,7 @@
     // };
     // @group(0) @binding(0) var<storage, read_write> s : S;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   s.m = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
     // }
@@ -374,7 +374,7 @@
   return @stride(32) array<vec2<f32>, 2u>(m[0u], m[1u]);
 }
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   s.m = mat2x2_stride_32_to_arr(mat2x2<f32>(vec2<f32>(1.0f, 2.0f), vec2<f32>(3.0f, 4.0f)));
 }
@@ -393,7 +393,7 @@
     // };
     // @group(0) @binding(0) var<storage, read_write> s : S;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   s.m[1] = vec2<f32>(1.0, 2.0);
     // }
@@ -427,7 +427,7 @@
 
 @group(0) @binding(0) var<storage, read_write> s : S;
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   s.m[1i] = vec2<f32>(1.0f, 2.0f);
 }
@@ -446,7 +446,7 @@
     // };
     // @group(0) @binding(0) var<storage, read_write> s : S;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   let a = &s.m;
     //   let b = &*&*(a);
@@ -500,7 +500,7 @@
   return @stride(32) array<vec2<f32>, 2u>(m[0u], m[1u]);
 }
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   let x = arr_to_mat2x2_stride_32(s.m);
   let y = s.m[1i];
@@ -523,7 +523,7 @@
     // };
     // var<private> s : S;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   let x : mat2x2<f32> = s.m;
     // }
@@ -557,7 +557,7 @@
 
 var<private> s : S;
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   let x : mat2x2<f32> = s.m;
 }
@@ -576,7 +576,7 @@
     // };
     // var<private> s : S;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn f() {
     //   s.m = mat2x2<f32>(vec2<f32>(1.0, 2.0), vec2<f32>(3.0, 4.0));
     // }
@@ -611,7 +611,7 @@
 
 var<private> s : S;
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn f() {
   s.m = mat2x2<f32>(vec2<f32>(1.0f, 2.0f), vec2<f32>(3.0f, 4.0f));
 }
diff --git a/src/tint/transform/disable_uniformity_analysis_test.cc b/src/tint/transform/disable_uniformity_analysis_test.cc
index a502442..3bcac0e 100644
--- a/src/tint/transform/disable_uniformity_analysis_test.cc
+++ b/src/tint/transform/disable_uniformity_analysis_test.cc
@@ -54,7 +54,7 @@
     auto* src = R"(
 @group(0) @binding(0) var<storage, read> global : i32;
 
-@stage(compute) @workgroup_size(64)
+@compute @workgroup_size(64)
 fn main() {
   if ((global == 42)) {
     workgroupBarrier();
diff --git a/src/tint/transform/first_index_offset_test.cc b/src/tint/transform/first_index_offset_test.cc
index a467c17..c159261 100644
--- a/src/tint/transform/first_index_offset_test.cc
+++ b/src/tint/transform/first_index_offset_test.cc
@@ -33,7 +33,7 @@
 
 TEST_F(FirstIndexOffsetTest, ShouldRunFragmentStage) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn entry() {
   return;
 }
@@ -44,7 +44,7 @@
 
 TEST_F(FirstIndexOffsetTest, ShouldRunVertexStage) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn entry() -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
@@ -70,7 +70,7 @@
 
 TEST_F(FirstIndexOffsetTest, BasicVertexShader) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn entry() -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
@@ -95,7 +95,7 @@
   return vert_idx;
 }
 
-@stage(vertex)
+@vertex
 fn entry(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32> {
   test(vert_idx);
   return vec4<f32>();
@@ -114,7 +114,7 @@
   return vert_idx;
 }
 
-@stage(vertex)
+@vertex
 fn entry(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32> {
   test((vert_idx + tint_symbol_1.first_vertex_index));
   return vec4<f32>();
@@ -135,7 +135,7 @@
 
 TEST_F(FirstIndexOffsetTest, BasicModuleVertexIndex_OutOfOrder) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn entry(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32> {
   test(vert_idx);
   return vec4<f32>();
@@ -154,7 +154,7 @@
 
 @binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
 
-@stage(vertex)
+@vertex
 fn entry(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32> {
   test((vert_idx + tint_symbol_1.first_vertex_index));
   return vec4<f32>();
@@ -183,7 +183,7 @@
   return inst_idx;
 }
 
-@stage(vertex)
+@vertex
 fn entry(@builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f32> {
   test(inst_idx);
   return vec4<f32>();
@@ -202,7 +202,7 @@
   return inst_idx;
 }
 
-@stage(vertex)
+@vertex
 fn entry(@builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f32> {
   test((inst_idx + tint_symbol_1.first_instance_index));
   return vec4<f32>();
@@ -223,7 +223,7 @@
 
 TEST_F(FirstIndexOffsetTest, BasicModuleInstanceIndex_OutOfOrder) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn entry(@builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f32> {
   test(inst_idx);
   return vec4<f32>();
@@ -242,7 +242,7 @@
 
 @binding(1) @group(7) var<uniform> tint_symbol_1 : tint_symbol;
 
-@stage(vertex)
+@vertex
 fn entry(@builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f32> {
   test((inst_idx + tint_symbol_1.first_instance_index));
   return vec4<f32>();
@@ -276,7 +276,7 @@
   @builtin(vertex_index) vert_idx : u32,
 };
 
-@stage(vertex)
+@vertex
 fn entry(inputs : Inputs) -> @builtin(position) vec4<f32> {
   test(inputs.instance_idx, inputs.vert_idx);
   return vec4<f32>();
@@ -302,7 +302,7 @@
   vert_idx : u32,
 }
 
-@stage(vertex)
+@vertex
 fn entry(inputs : Inputs) -> @builtin(position) vec4<f32> {
   test((inputs.instance_idx + tint_symbol_1.first_instance_index), (inputs.vert_idx + tint_symbol_1.first_vertex_index));
   return vec4<f32>();
@@ -323,7 +323,7 @@
 
 TEST_F(FirstIndexOffsetTest, BasicModuleBothIndex_OutOfOrder) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn entry(inputs : Inputs) -> @builtin(position) vec4<f32> {
   test(inputs.instance_idx, inputs.vert_idx);
   return vec4<f32>();
@@ -347,7 +347,7 @@
 
 @binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
 
-@stage(vertex)
+@vertex
 fn entry(inputs : Inputs) -> @builtin(position) vec4<f32> {
   test((inputs.instance_idx + tint_symbol_1.first_instance_index), (inputs.vert_idx + tint_symbol_1.first_vertex_index));
   return vec4<f32>();
@@ -387,7 +387,7 @@
   return func1(vert_idx);
 }
 
-@stage(vertex)
+@vertex
 fn entry(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32> {
   func2(vert_idx);
   return vec4<f32>();
@@ -410,7 +410,7 @@
   return func1(vert_idx);
 }
 
-@stage(vertex)
+@vertex
 fn entry(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32> {
   func2((vert_idx + tint_symbol_1.first_vertex_index));
   return vec4<f32>();
@@ -431,7 +431,7 @@
 
 TEST_F(FirstIndexOffsetTest, NestedCalls_OutOfOrder) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn entry(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32> {
   func2(vert_idx);
   return vec4<f32>();
@@ -454,7 +454,7 @@
 
 @binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
 
-@stage(vertex)
+@vertex
 fn entry(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32> {
   func2((vert_idx + tint_symbol_1.first_vertex_index));
   return vec4<f32>();
@@ -487,19 +487,19 @@
   return i;
 }
 
-@stage(vertex)
+@vertex
 fn entry_a(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32> {
   func(vert_idx);
   return vec4<f32>();
 }
 
-@stage(vertex)
+@vertex
 fn entry_b(@builtin(vertex_index) vert_idx : u32, @builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f32> {
   func(vert_idx + inst_idx);
   return vec4<f32>();
 }
 
-@stage(vertex)
+@vertex
 fn entry_c(@builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f32> {
   func(inst_idx);
   return vec4<f32>();
@@ -518,19 +518,19 @@
   return i;
 }
 
-@stage(vertex)
+@vertex
 fn entry_a(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32> {
   func((vert_idx + tint_symbol_1.first_vertex_index));
   return vec4<f32>();
 }
 
-@stage(vertex)
+@vertex
 fn entry_b(@builtin(vertex_index) vert_idx : u32, @builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f32> {
   func(((vert_idx + tint_symbol_1.first_vertex_index) + (inst_idx + tint_symbol_1.first_instance_index)));
   return vec4<f32>();
 }
 
-@stage(vertex)
+@vertex
 fn entry_c(@builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f32> {
   func((inst_idx + tint_symbol_1.first_instance_index));
   return vec4<f32>();
@@ -551,19 +551,19 @@
 
 TEST_F(FirstIndexOffsetTest, MultipleEntryPoints_OutOfOrder) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn entry_a(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32> {
   func(vert_idx);
   return vec4<f32>();
 }
 
-@stage(vertex)
+@vertex
 fn entry_b(@builtin(vertex_index) vert_idx : u32, @builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f32> {
   func(vert_idx + inst_idx);
   return vec4<f32>();
 }
 
-@stage(vertex)
+@vertex
 fn entry_c(@builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f32> {
   func(inst_idx);
   return vec4<f32>();
@@ -582,19 +582,19 @@
 
 @binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
 
-@stage(vertex)
+@vertex
 fn entry_a(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32> {
   func((vert_idx + tint_symbol_1.first_vertex_index));
   return vec4<f32>();
 }
 
-@stage(vertex)
+@vertex
 fn entry_b(@builtin(vertex_index) vert_idx : u32, @builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f32> {
   func(((vert_idx + tint_symbol_1.first_vertex_index) + (inst_idx + tint_symbol_1.first_instance_index)));
   return vec4<f32>();
 }
 
-@stage(vertex)
+@vertex
 fn entry_c(@builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f32> {
   func((inst_idx + tint_symbol_1.first_instance_index));
   return vec4<f32>();
diff --git a/src/tint/transform/localize_struct_array_assignment_test.cc b/src/tint/transform/localize_struct_array_assignment_test.cc
index ee6df9f..e85a600 100644
--- a/src/tint/transform/localize_struct_array_assignment_test.cc
+++ b/src/tint/transform/localize_struct_array_assignment_test.cc
@@ -46,7 +46,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -69,7 +69,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -88,7 +88,7 @@
 
 TEST_F(LocalizeStructArrayAssignmentTest, StructArray_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -111,7 +111,7 @@
 )";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -162,7 +162,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -189,7 +189,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -208,7 +208,7 @@
 
 TEST_F(LocalizeStructArrayAssignmentTest, StructStructArray_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -235,7 +235,7 @@
 )";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -287,7 +287,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -311,7 +311,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -348,7 +348,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -375,7 +375,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -413,7 +413,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s : OuterS;
@@ -441,7 +441,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s : OuterS;
@@ -488,7 +488,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s : OuterS;
@@ -523,7 +523,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s : OuterS;
@@ -545,7 +545,7 @@
 
 TEST_F(LocalizeStructArrayAssignmentTest, IndexingWithSideEffectFunc_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s : OuterS;
@@ -579,7 +579,7 @@
 )";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s : OuterS;
@@ -643,7 +643,7 @@
   (*p).a1[uniforms.i] = v;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   f(&s1);
@@ -675,7 +675,7 @@
   }
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   f(&(s1));
@@ -688,7 +688,7 @@
 
 TEST_F(LocalizeStructArrayAssignmentTest, ViaPointerArg_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   f(&s1);
@@ -714,7 +714,7 @@
 )";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   f(&(s1));
@@ -769,7 +769,7 @@
   *(p) = v;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -797,7 +797,7 @@
   *(p) = v;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
@@ -831,7 +831,7 @@
   return (i + 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   var v : vec3<f32>;
diff --git a/src/tint/transform/module_scope_var_to_entry_point_param_test.cc b/src/tint/transform/module_scope_var_to_entry_point_param_test.cc
index 580e695..9e81d31 100644
--- a/src/tint/transform/module_scope_var_to_entry_point_param_test.cc
+++ b/src/tint/transform/module_scope_var_to_entry_point_param_test.cc
@@ -42,14 +42,14 @@
 var<private> p : f32;
 var<workgroup> w : f32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   w = p;
 }
 )";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   @internal(disable_validation__ignore_storage_class) var<workgroup> tint_symbol : f32;
   @internal(disable_validation__ignore_storage_class) var<private> tint_symbol_1 : f32;
@@ -64,7 +64,7 @@
 
 TEST_F(ModuleScopeVarToEntryPointParamTest, Basic_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   w = p;
 }
@@ -74,7 +74,7 @@
 )";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   @internal(disable_validation__ignore_storage_class) var<workgroup> tint_symbol : f32;
   @internal(disable_validation__ignore_storage_class) var<private> tint_symbol_1 : f32;
@@ -106,7 +106,7 @@
   no_uses();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   foo(1.0);
 }
@@ -127,7 +127,7 @@
   no_uses();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   @internal(disable_validation__ignore_storage_class) var<private> tint_symbol_4 : f32;
   @internal(disable_validation__ignore_storage_class) var<workgroup> tint_symbol_5 : f32;
@@ -142,7 +142,7 @@
 
 TEST_F(ModuleScopeVarToEntryPointParamTest, FunctionCalls_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   foo(1.0);
 }
@@ -166,7 +166,7 @@
 )";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   @internal(disable_validation__ignore_storage_class) var<private> tint_symbol : f32;
   @internal(disable_validation__ignore_storage_class) var<workgroup> tint_symbol_1 : f32;
@@ -198,14 +198,14 @@
 var<private> a : f32 = 1.0;
 var<private> b : f32 = f32();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x : f32 = a + b;
 }
 )";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   @internal(disable_validation__ignore_storage_class) var<private> tint_symbol : f32 = 1.0;
   @internal(disable_validation__ignore_storage_class) var<private> tint_symbol_1 : f32 = f32();
@@ -220,7 +220,7 @@
 
 TEST_F(ModuleScopeVarToEntryPointParamTest, Constructors_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x : f32 = a + b;
 }
@@ -230,7 +230,7 @@
 )";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   @internal(disable_validation__ignore_storage_class) var<private> tint_symbol : f32 = 1.0;
   @internal(disable_validation__ignore_storage_class) var<private> tint_symbol_1 : f32 = f32();
@@ -248,7 +248,7 @@
 var<private> p : f32;
 var<workgroup> w : f32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let p_ptr : ptr<private, f32> = &p;
   let w_ptr : ptr<workgroup, f32> = &w;
@@ -258,7 +258,7 @@
 )";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   @internal(disable_validation__ignore_storage_class) var<private> tint_symbol : f32;
   @internal(disable_validation__ignore_storage_class) var<workgroup> tint_symbol_1 : f32;
@@ -276,7 +276,7 @@
 
 TEST_F(ModuleScopeVarToEntryPointParamTest, Pointers_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let p_ptr : ptr<private, f32> = &p;
   let w_ptr : ptr<workgroup, f32> = &w;
@@ -289,7 +289,7 @@
 )";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   @internal(disable_validation__ignore_storage_class) var<private> tint_symbol : f32;
   @internal(disable_validation__ignore_storage_class) var<workgroup> tint_symbol_1 : f32;
@@ -317,7 +317,7 @@
   bar(&v);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   foo();
 }
@@ -332,7 +332,7 @@
   bar(tint_symbol);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   @internal(disable_validation__ignore_storage_class) var<private> tint_symbol_1 : f32;
   foo(&(tint_symbol_1));
@@ -346,7 +346,7 @@
 
 TEST_F(ModuleScopeVarToEntryPointParamTest, FoldAddressOfDeref_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   foo();
 }
@@ -363,7 +363,7 @@
 )";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   @internal(disable_validation__ignore_storage_class) var<private> tint_symbol : f32;
   foo(&(tint_symbol));
@@ -394,7 +394,7 @@
 @group(0) @binding(1)
 var<storage> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = u;
   _ = s;
@@ -406,7 +406,7 @@
   a : f32,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol : ptr<uniform, S>, @group(0) @binding(1) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol_1 : ptr<storage, S>) {
   _ = *(tint_symbol);
   _ = *(tint_symbol_1);
@@ -420,7 +420,7 @@
 
 TEST_F(ModuleScopeVarToEntryPointParamTest, Buffers_Basic_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = u;
   _ = s;
@@ -436,7 +436,7 @@
 )";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol : ptr<uniform, S>, @group(0) @binding(1) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol_1 : ptr<storage, S>) {
   _ = *(tint_symbol);
   _ = *(tint_symbol_1);
@@ -457,7 +457,7 @@
 @group(0) @binding(0)
 var<storage> buffer : array<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = buffer[0];
 }
@@ -468,7 +468,7 @@
   arr : array<f32>,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol : ptr<storage, tint_symbol_1>) {
   _ = (*(tint_symbol)).arr[0];
 }
@@ -481,7 +481,7 @@
 
 TEST_F(ModuleScopeVarToEntryPointParamTest, Buffer_RuntimeArray_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = buffer[0];
 }
@@ -495,7 +495,7 @@
   arr : array<f32>,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol : ptr<storage, tint_symbol_1>) {
   _ = (*(tint_symbol)).arr[0];
 }
@@ -515,7 +515,7 @@
   _ = buffer[0];
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   foo();
 }
@@ -530,7 +530,7 @@
   _ = (*(tint_symbol))[0];
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol_1 : ptr<storage, tint_symbol_2>) {
   foo(&((*(tint_symbol_1)).arr));
 }
@@ -543,7 +543,7 @@
 
 TEST_F(ModuleScopeVarToEntryPointParamTest, Buffer_RuntimeArrayInsideFunction_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   foo();
 }
@@ -560,7 +560,7 @@
   arr : array<f32>,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol : ptr<storage, tint_symbol_1>) {
   foo(&((*(tint_symbol)).arr));
 }
@@ -582,7 +582,7 @@
 @group(0) @binding(0)
 var<storage> buffer : myarray;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = buffer[0];
 }
@@ -595,7 +595,7 @@
 
 type myarray = array<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol : ptr<storage, tint_symbol_1>) {
   _ = (*(tint_symbol)).arr[0];
 }
@@ -608,7 +608,7 @@
 
 TEST_F(ModuleScopeVarToEntryPointParamTest, Buffer_RuntimeArray_Alias_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = buffer[0];
 }
@@ -623,7 +623,7 @@
   arr : array<f32>,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol : ptr<storage, tint_symbol_1>) {
   _ = (*(tint_symbol)).arr[0];
 }
@@ -645,7 +645,7 @@
 @group(0) @binding(0)
 var<storage> buffer : array<S>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = buffer[0];
 }
@@ -660,7 +660,7 @@
   arr : array<S>,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol : ptr<storage, tint_symbol_1>) {
   _ = (*(tint_symbol)).arr[0];
 }
@@ -673,7 +673,7 @@
 
 TEST_F(ModuleScopeVarToEntryPointParamTest, Buffer_ArrayOfStruct_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = buffer[0];
 }
@@ -694,7 +694,7 @@
   arr : array<S>,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol : ptr<storage, tint_symbol_1>) {
   _ = (*(tint_symbol)).arr[0];
 }
@@ -731,7 +731,7 @@
   no_uses();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   foo(1.0);
 }
@@ -757,7 +757,7 @@
   no_uses();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol_4 : ptr<uniform, S>, @group(0) @binding(1) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol_5 : ptr<storage, S>) {
   foo(1.0, tint_symbol_4, tint_symbol_5);
 }
@@ -770,7 +770,7 @@
 
 TEST_F(ModuleScopeVarToEntryPointParamTest, Buffers_FunctionCalls_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   foo(1.0);
 }
@@ -801,7 +801,7 @@
 )";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol : ptr<uniform, S>, @group(0) @binding(1) @internal(disable_validation__entry_point_parameter) @internal(disable_validation__ignore_storage_class) tint_symbol_1 : ptr<storage, S>) {
   foo(1.0, tint_symbol, tint_symbol_1);
 }
@@ -836,7 +836,7 @@
 @group(0) @binding(0) var t : texture_2d<f32>;
 @group(0) @binding(1) var s : sampler;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t;
   _ = s;
@@ -844,7 +844,7 @@
 )";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) tint_symbol : texture_2d<f32>, @group(0) @binding(1) @internal(disable_validation__entry_point_parameter) tint_symbol_1 : sampler) {
   _ = tint_symbol;
   _ = tint_symbol_1;
@@ -876,7 +876,7 @@
   no_uses();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   foo(1.0);
 }
@@ -898,7 +898,7 @@
   no_uses();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) tint_symbol_4 : texture_2d<f32>, @group(0) @binding(1) @internal(disable_validation__entry_point_parameter) tint_symbol_5 : sampler) {
   foo(1.0, tint_symbol_4, tint_symbol_5);
 }
@@ -911,7 +911,7 @@
 
 TEST_F(ModuleScopeVarToEntryPointParamTest, HandleTypes_FunctionCalls_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   foo(1.0);
 }
@@ -936,7 +936,7 @@
 )";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_parameter) tint_symbol : texture_2d<f32>, @group(0) @binding(1) @internal(disable_validation__entry_point_parameter) tint_symbol_1 : sampler) {
   foo(1.0, tint_symbol, tint_symbol_1);
 }
@@ -966,7 +966,7 @@
     auto* src = R"(
 var<workgroup> m : mat2x2<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = m;
 }
@@ -977,7 +977,7 @@
   m : mat2x2<f32>,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@internal(disable_validation__entry_point_parameter) tint_symbol_1 : ptr<workgroup, tint_symbol_2>) {
   let tint_symbol : ptr<workgroup, mat2x2<f32>> = &((*(tint_symbol_1)).m);
   let x = *(tint_symbol);
@@ -999,7 +999,7 @@
 };
 var<workgroup> m : array<S2, 4>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = m;
 }
@@ -1018,7 +1018,7 @@
   m : array<S2, 4u>,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@internal(disable_validation__entry_point_parameter) tint_symbol_1 : ptr<workgroup, tint_symbol_2>) {
   let tint_symbol : ptr<workgroup, array<S2, 4u>> = &((*(tint_symbol_1)).m);
   let x = *(tint_symbol);
@@ -1042,7 +1042,7 @@
 
 var<workgroup> b : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = a;
   let y = b;
@@ -1059,7 +1059,7 @@
   b : S,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@internal(disable_validation__entry_point_parameter) tint_symbol_1 : ptr<workgroup, tint_symbol_3>) {
   let tint_symbol : ptr<workgroup, S> = &((*(tint_symbol_1)).a);
   let tint_symbol_2 : ptr<workgroup, S> = &((*(tint_symbol_1)).b);
@@ -1077,7 +1077,7 @@
 // variables that are promoted to threadgroup memory arguments.
 TEST_F(ModuleScopeVarToEntryPointParamTest, DuplicateThreadgroupArgumentTypes_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = a;
   let y = b;
@@ -1101,7 +1101,7 @@
   b : S,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@internal(disable_validation__entry_point_parameter) tint_symbol_1 : ptr<workgroup, tint_symbol_3>) {
   let tint_symbol : ptr<workgroup, S> = &((*(tint_symbol_1)).a);
   let tint_symbol_2 : ptr<workgroup, S> = &((*(tint_symbol_1)).b);
@@ -1132,7 +1132,7 @@
 @group(0) @binding(2) var t : texture_2d<f32>;
 @group(0) @binding(3) var s : sampler;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
 }
 )";
@@ -1142,7 +1142,7 @@
   a : f32,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
 }
 )";
diff --git a/src/tint/transform/multiplanar_external_texture_test.cc b/src/tint/transform/multiplanar_external_texture_test.cc
index 39c4602..63d12f1 100644
--- a/src/tint/transform/multiplanar_external_texture_test.cc
+++ b/src/tint/transform/multiplanar_external_texture_test.cc
@@ -56,7 +56,7 @@
 @group(0) @binding(0) var s : sampler;
 @group(0) @binding(1) var ext_tex : texture_external;
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureSampleLevel(ext_tex, s, coord.xy);
 }
@@ -74,7 +74,7 @@
 @group(0) @binding(0) var s : sampler;
 @group(0) @binding(1) var ext_tex : texture_external;
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureSampleLevel(ext_tex, s, coord.xy);
 }
@@ -96,7 +96,7 @@
     auto* src = R"(
 @group(0) @binding(0) var ext_tex : texture_external;
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   var dim : vec2<i32>;
   dim = textureDimensions(ext_tex);
@@ -130,7 +130,7 @@
 
 @group(0) @binding(0) var ext_tex : texture_2d<f32>;
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   var dim : vec2<i32>;
   dim = textureDimensions(ext_tex);
@@ -148,7 +148,7 @@
 // Tests that the transform works with a textureDimensions call.
 TEST_F(MultiplanarExternalTextureTest, Dimensions_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   var dim : vec2<i32>;
   dim = textureDimensions(ext_tex);
@@ -182,7 +182,7 @@
 
 @group(0) @binding(2) var<uniform> ext_tex_params : ExternalTextureParams;
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   var dim : vec2<i32>;
   dim = textureDimensions(ext_tex);
@@ -205,7 +205,7 @@
 @group(0) @binding(0) var s : sampler;
 @group(0) @binding(1) var ext_tex : texture_external;
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureSampleLevel(ext_tex, s, coord.xy);
 }
@@ -259,7 +259,7 @@
   return vec4<f32>(color, 1.0f);
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureSampleExternal(ext_tex, ext_tex_plane_1, s, coord.xy, ext_tex_params);
 }
@@ -275,7 +275,7 @@
 // Test that the transform works with a textureSampleLevel call.
 TEST_F(MultiplanarExternalTextureTest, BasicTextureSampleLevel_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureSampleLevel(ext_tex, s, coord.xy);
 }
@@ -328,7 +328,7 @@
   return vec4<f32>(color, 1.0f);
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureSampleExternal(ext_tex, ext_tex_plane_1, s, coord.xy, ext_tex_params);
 }
@@ -350,7 +350,7 @@
     auto* src = R"(
 @group(0) @binding(0) var ext_tex : texture_external;
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureLoad(ext_tex, vec2<i32>(1, 1));
 }
@@ -402,7 +402,7 @@
   return vec4<f32>(color, 1.0f);
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureLoadExternal(ext_tex, ext_tex_plane_1, vec2<i32>(1, 1), ext_tex_params);
 }
@@ -418,7 +418,7 @@
 // Tests that the transform works with a textureLoad call.
 TEST_F(MultiplanarExternalTextureTest, BasicTextureLoad_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureLoad(ext_tex, vec2<i32>(1, 1));
 }
@@ -470,7 +470,7 @@
   return vec4<f32>(color, 1.0f);
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureLoadExternal(ext_tex, ext_tex_plane_1, vec2<i32>(1, 1), ext_tex_params);
 }
@@ -492,7 +492,7 @@
 @group(0) @binding(0) var s : sampler;
 @group(0) @binding(1) var ext_tex : texture_external;
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureSampleLevel(ext_tex, s, coord.xy) + textureLoad(ext_tex, vec2<i32>(1, 1));
 }
@@ -559,7 +559,7 @@
   return vec4<f32>(color, 1.0f);
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return (textureSampleExternal(ext_tex, ext_tex_plane_1, s, coord.xy, ext_tex_params) + textureLoadExternal(ext_tex, ext_tex_plane_1, vec2<i32>(1, 1), ext_tex_params));
 }
@@ -576,7 +576,7 @@
 // call.
 TEST_F(MultiplanarExternalTextureTest, TextureSampleAndTextureLoad_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureSampleLevel(ext_tex, s, coord.xy) + textureLoad(ext_tex, vec2<i32>(1, 1));
 }
@@ -642,7 +642,7 @@
   return vec4<f32>(color, 1.0f);
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return (textureSampleExternal(ext_tex, ext_tex_plane_1, s, coord.xy, ext_tex_params) + textureLoadExternal(ext_tex, ext_tex_plane_1, vec2<i32>(1, 1), ext_tex_params));
 }
@@ -668,7 +668,7 @@
 @group(0) @binding(3) var ext_tex_2 : texture_external;
 @group(1) @binding(0) var ext_tex_3 : texture_external;
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return textureSampleLevel(ext_tex, s, coord.xy) + textureSampleLevel(ext_tex_1, s, coord.xy) + textureSampleLevel(ext_tex_2, s, coord.xy) + textureSampleLevel(ext_tex_3, s, coord.xy);
 }
@@ -740,7 +740,7 @@
   return vec4<f32>(color, 1.0f);
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
   return (((textureSampleExternal(ext_tex, ext_tex_plane_1, s, coord.xy, ext_tex_params) + textureSampleExternal(ext_tex_1, ext_tex_plane_1_1, s, coord.xy, ext_tex_params_1)) + textureSampleExternal(ext_tex_2, ext_tex_plane_1_2, s, coord.xy, ext_tex_params_2)) + textureSampleExternal(ext_tex_3, ext_tex_plane_1_3, s, coord.xy, ext_tex_params_3));
 }
@@ -768,7 +768,7 @@
 @group(0) @binding(0) var ext_tex : texture_external;
 @group(0) @binding(1) var smp : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   f(ext_tex, smp);
 }
@@ -826,7 +826,7 @@
 
 @group(0) @binding(1) var smp : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   f(ext_tex, ext_tex_plane_1, ext_tex_params, smp);
 }
@@ -843,7 +843,7 @@
 // correct output.
 TEST_F(MultiplanarExternalTextureTest, ExternalTexturePassedAsParam_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn main() {
   f(ext_tex, smp);
 }
@@ -880,7 +880,7 @@
 
 @group(0) @binding(3) var<uniform> ext_tex_params : ExternalTextureParams;
 
-@stage(fragment)
+@fragment
 fn main() {
   f(ext_tex, ext_tex_plane_1, ext_tex_params, smp);
 }
@@ -932,7 +932,7 @@
 @group(0) @binding(0) var ext_tex : texture_external;
 @group(0) @binding(1) var smp : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   f(smp, ext_tex);
 }
@@ -990,7 +990,7 @@
 
 @group(0) @binding(1) var smp : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   f(smp, ext_tex, ext_tex_plane_1, ext_tex_params);
 }
@@ -1016,7 +1016,7 @@
 @group(0) @binding(1) var smp : sampler;
 @group(0) @binding(2) var ext_tex2 : texture_external;
 
-@stage(fragment)
+@fragment
 fn main() {
   f(ext_tex, smp, ext_tex2);
 }
@@ -1081,7 +1081,7 @@
 
 @group(0) @binding(2) var ext_tex2 : texture_2d<f32>;
 
-@stage(fragment)
+@fragment
 fn main() {
   f(ext_tex, ext_tex_plane_1, ext_tex_params, smp, ext_tex2, ext_tex_plane_1_1, ext_tex_params_1);
 }
@@ -1099,7 +1099,7 @@
 // correct output.
 TEST_F(MultiplanarExternalTextureTest, ExternalTexturePassedAsParamMultiple_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn main() {
   f(ext_tex, smp, ext_tex2);
 }
@@ -1143,7 +1143,7 @@
 
 @group(0) @binding(6) var<uniform> ext_tex_params_1 : ExternalTextureParams;
 
-@stage(fragment)
+@fragment
 fn main() {
   f(ext_tex, ext_tex_plane_1, ext_tex_params, smp, ext_tex2, ext_tex_plane_1_1, ext_tex_params_1);
 }
@@ -1203,7 +1203,7 @@
 @group(0) @binding(0) var ext_tex : texture_external;
 @group(0) @binding(1) var smp : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   f(ext_tex, smp);
 }
@@ -1265,7 +1265,7 @@
 
 @group(0) @binding(1) var smp : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   f(ext_tex, ext_tex_plane_1, ext_tex_params, smp);
 }
@@ -1293,7 +1293,7 @@
 @group(0) @binding(0) var ext_tex : texture_external;
 @group(0) @binding(1) var smp : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   f(ext_tex, smp);
 }
@@ -1355,7 +1355,7 @@
 
 @group(0) @binding(1) var smp : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   f(ext_tex, ext_tex_plane_1, ext_tex_params, smp);
 }
@@ -1421,7 +1421,7 @@
 @group(0) @binding(0) var ext_tex : ET;
 @group(0) @binding(1) var smp : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   f(ext_tex, smp);
 }
@@ -1481,7 +1481,7 @@
 
 @group(0) @binding(1) var smp : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   f(ext_tex, ext_tex_plane_1, ext_tex_params, smp);
 }
@@ -1497,7 +1497,7 @@
 // Tests that the the transform handles aliases to external textures
 TEST_F(MultiplanarExternalTextureTest, ExternalTextureAlias_OutOfOrder) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn main() {
   f(ext_tex, smp);
 }
@@ -1536,7 +1536,7 @@
 
 @group(0) @binding(3) var<uniform> ext_tex_params : ExternalTextureParams;
 
-@stage(fragment)
+@fragment
 fn main() {
   f(ext_tex, ext_tex_plane_1, ext_tex_params, smp);
 }
diff --git a/src/tint/transform/num_workgroups_from_uniform_test.cc b/src/tint/transform/num_workgroups_from_uniform_test.cc
index ffc0ca8..8562c01 100644
--- a/src/tint/transform/num_workgroups_from_uniform_test.cc
+++ b/src/tint/transform/num_workgroups_from_uniform_test.cc
@@ -33,7 +33,7 @@
 
 TEST_F(NumWorkgroupsFromUniformTest, ShouldRunHasNumWorkgroups) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@builtin(num_workgroups) num_wgs : vec3<u32>) {
 }
 )";
@@ -43,7 +43,7 @@
 
 TEST_F(NumWorkgroupsFromUniformTest, Error_MissingTransformData) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@builtin(num_workgroups) num_wgs : vec3<u32>) {
 }
 )";
@@ -61,7 +61,7 @@
 
 TEST_F(NumWorkgroupsFromUniformTest, Basic) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@builtin(num_workgroups) num_wgs : vec3<u32>) {
   let groups_x = num_wgs.x;
   let groups_y = num_wgs.y;
@@ -82,7 +82,7 @@
   let groups_z = num_wgs.z;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   main_inner(tint_symbol_3.num_workgroups);
 }
@@ -101,7 +101,7 @@
   @builtin(num_workgroups) num_wgs : vec3<u32>,
 };
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(in : Builtins) {
   let groups_x = in.num_wgs.x;
   let groups_y = in.num_wgs.y;
@@ -126,7 +126,7 @@
   let groups_z = in.num_wgs.z;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   main_inner(Builtins(tint_symbol_3.num_workgroups));
 }
@@ -141,7 +141,7 @@
 
 TEST_F(NumWorkgroupsFromUniformTest, StructOnlyMember_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(in : Builtins) {
   let groups_x = in.num_wgs.x;
   let groups_y = in.num_wgs.y;
@@ -166,7 +166,7 @@
   let groups_z = in.num_wgs.z;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   main_inner(Builtins(tint_symbol_3.num_workgroups));
 }
@@ -191,7 +191,7 @@
   @builtin(workgroup_id) wgid : vec3<u32>,
 };
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(in : Builtins) {
   let groups_x = in.num_wgs.x;
   let groups_y = in.num_wgs.y;
@@ -225,7 +225,7 @@
   let groups_z = in.num_wgs.z;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(tint_symbol : tint_symbol_1) {
   main_inner(Builtins(tint_symbol.gid, tint_symbol_3.num_workgroups, tint_symbol.wgid));
 }
@@ -240,7 +240,7 @@
 
 TEST_F(NumWorkgroupsFromUniformTest, StructMultipleMembers_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(in : Builtins) {
   let groups_x = in.num_wgs.x;
   let groups_y = in.num_wgs.y;
@@ -275,7 +275,7 @@
   let groups_z = in.num_wgs.z;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(tint_symbol : tint_symbol_1) {
   main_inner(Builtins(tint_symbol.gid, tint_symbol_3.num_workgroups, tint_symbol.wgid));
 }
@@ -306,21 +306,21 @@
   @builtin(workgroup_id) wgid : vec3<u32>,
 };
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main1(in : Builtins1) {
   let groups_x = in.num_wgs.x;
   let groups_y = in.num_wgs.y;
   let groups_z = in.num_wgs.z;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main2(in : Builtins2) {
   let groups_x = in.num_wgs.x;
   let groups_y = in.num_wgs.y;
   let groups_z = in.num_wgs.z;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main3(@builtin(num_workgroups) num_wgs : vec3<u32>) {
   let groups_x = num_wgs.x;
   let groups_y = num_wgs.y;
@@ -351,7 +351,7 @@
   let groups_z = in.num_wgs.z;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main1() {
   main1_inner(Builtins1(tint_symbol_7.num_workgroups));
 }
@@ -369,7 +369,7 @@
   let groups_z = in.num_wgs.z;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main2(tint_symbol_2 : tint_symbol_3) {
   main2_inner(Builtins2(tint_symbol_2.gid, tint_symbol_7.num_workgroups, tint_symbol_2.wgid));
 }
@@ -380,7 +380,7 @@
   let groups_z = num_wgs.z;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main3() {
   main3_inner(tint_symbol_7.num_workgroups);
 }
@@ -400,7 +400,7 @@
   @builtin(workgroup_id) wgid : vec3<u32>,
 };
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(in : Builtins) {
 }
 )";
@@ -421,7 +421,7 @@
 fn main_inner(in : Builtins) {
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(tint_symbol : tint_symbol_1) {
   main_inner(Builtins(tint_symbol.gid, tint_symbol.wgid));
 }
@@ -448,21 +448,21 @@
   @builtin(workgroup_id) wgid : vec3<u32>,
 };
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main1(in : Builtins1) {
   let groups_x = in.num_wgs.x;
   let groups_y = in.num_wgs.y;
   let groups_z = in.num_wgs.z;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main2(in : Builtins2) {
   let groups_x = in.num_wgs.x;
   let groups_y = in.num_wgs.y;
   let groups_z = in.num_wgs.z;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main3(@builtin(num_workgroups) num_wgs : vec3<u32>) {
   let groups_x = num_wgs.x;
   let groups_y = num_wgs.y;
@@ -493,7 +493,7 @@
   let groups_z = in.num_wgs.z;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main1() {
   main1_inner(Builtins1(tint_symbol_7.num_workgroups));
 }
@@ -511,7 +511,7 @@
   let groups_z = in.num_wgs.z;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main2(tint_symbol_2 : tint_symbol_3) {
   main2_inner(Builtins2(tint_symbol_2.gid, tint_symbol_7.num_workgroups, tint_symbol_2.wgid));
 }
@@ -522,7 +522,7 @@
   let groups_z = num_wgs.z;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main3() {
   main3_inner(tint_symbol_7.num_workgroups);
 }
@@ -572,7 +572,7 @@
 @group(1) @binding(3) var<storage, read> g9 : S0;
 @group(3) @binding(2) var<storage, read_write> g10 : S0;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main1(in : Builtins1) {
   let groups_x = in.num_wgs.x;
   let groups_y = in.num_wgs.y;
@@ -580,14 +580,14 @@
   g8.m0 = 1u;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main2(in : Builtins2) {
   let groups_x = in.num_wgs.x;
   let groups_y = in.num_wgs.y;
   let groups_z = in.num_wgs.z;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main3(@builtin(num_workgroups) num_wgs : vec3<u32>) {
   let groups_x = num_wgs.x;
   let groups_y = num_wgs.y;
@@ -647,7 +647,7 @@
   g8.m0 = 1u;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main1() {
   main1_inner(Builtins1(tint_symbol_7.num_workgroups));
 }
@@ -665,7 +665,7 @@
   let groups_z = in.num_wgs.z;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main2(tint_symbol_2 : tint_symbol_3) {
   main2_inner(Builtins2(tint_symbol_2.gid, tint_symbol_7.num_workgroups, tint_symbol_2.wgid));
 }
@@ -676,7 +676,7 @@
   let groups_z = num_wgs.z;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main3() {
   main3_inner(tint_symbol_7.num_workgroups);
 }
diff --git a/src/tint/transform/renamer_test.cc b/src/tint/transform/renamer_test.cc
index f56971e..516b164 100644
--- a/src/tint/transform/renamer_test.cc
+++ b/src/tint/transform/renamer_test.cc
@@ -50,7 +50,7 @@
   return vert_idx;
 }
 
-@stage(vertex)
+@vertex
 fn entry(@builtin(vertex_index) vert_idx : u32
         ) -> @builtin(position) vec4<f32>  {
   _ = test(vert_idx);
@@ -63,7 +63,7 @@
   return tint_symbol_1;
 }
 
-@stage(vertex)
+@vertex
 fn tint_symbol_2(@builtin(vertex_index) tint_symbol_1 : u32) -> @builtin(position) vec4<f32> {
   _ = tint_symbol(tint_symbol_1);
   return vec4<f32>();
@@ -87,7 +87,7 @@
 
 TEST_F(RenamerTest, PreserveSwizzles) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn entry() -> @builtin(position) vec4<f32> {
   var v : vec4<f32>;
   var rgba : f32;
@@ -97,7 +97,7 @@
 )";
 
     auto* expect = R"(
-@stage(vertex)
+@vertex
 fn tint_symbol() -> @builtin(position) vec4<f32> {
   var tint_symbol_1 : vec4<f32>;
   var tint_symbol_2 : f32;
@@ -124,7 +124,7 @@
 
 TEST_F(RenamerTest, PreserveBuiltins) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn entry() -> @builtin(position) vec4<f32> {
   var blah : vec4<f32>;
   return abs(blah);
@@ -132,7 +132,7 @@
 )";
 
     auto* expect = R"(
-@stage(vertex)
+@vertex
 fn tint_symbol() -> @builtin(position) vec4<f32> {
   var tint_symbol_1 : vec4<f32>;
   return abs(tint_symbol_1);
@@ -155,7 +155,7 @@
 
 TEST_F(RenamerTest, PreserveBuiltinTypes) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn entry() {
   var a = modf(1.0).whole;
   var b = modf(1.0).fract;
@@ -165,7 +165,7 @@
 )";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn tint_symbol() {
   var tint_symbol_1 = modf(1.0).whole;
   var tint_symbol_2 = modf(1.0).fract;
@@ -190,7 +190,7 @@
 
 TEST_F(RenamerTest, PreserveUnicode) {
     auto src = R"(
-@stage(fragment)
+@fragment
 fn frag_main() {
   var )" + std::string(kUnicodeIdentifier) +
                R"( : i32;
@@ -209,7 +209,7 @@
 
 TEST_F(RenamerTest, AttemptSymbolCollision) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn entry() -> @builtin(position) vec4<f32> {
   var tint_symbol : vec4<f32>;
   var tint_symbol_2 : vec4<f32>;
@@ -219,7 +219,7 @@
 )";
 
     auto* expect = R"(
-@stage(vertex)
+@vertex
 fn tint_symbol() -> @builtin(position) vec4<f32> {
   var tint_symbol_1 : vec4<f32>;
   var tint_symbol_2 : vec4<f32>;
@@ -252,7 +252,7 @@
     auto keyword = GetParam();
 
     auto src = R"(
-@stage(fragment)
+@fragment
 fn frag_main() {
   var )" + keyword +
                R"( : i32;
@@ -260,7 +260,7 @@
 )";
 
     auto* expect = R"(
-@stage(fragment)
+@fragment
 fn frag_main() {
   var tint_symbol : i32;
 }
@@ -278,7 +278,7 @@
     auto keyword = GetParam();
 
     auto src = R"(
-@stage(fragment)
+@fragment
 fn frag_main() {
   var )" + keyword +
                R"( : i32;
@@ -286,7 +286,7 @@
 )";
 
     auto* expect = R"(
-@stage(fragment)
+@fragment
 fn frag_main() {
   var tint_symbol : i32;
 }
@@ -304,7 +304,7 @@
     auto keyword = GetParam();
 
     auto src = R"(
-@stage(fragment)
+@fragment
 fn frag_main() {
   var )" + keyword +
                R"( : i32;
@@ -312,7 +312,7 @@
 )";
 
     auto* expect = R"(
-@stage(fragment)
+@fragment
 fn frag_main() {
   var tint_symbol : i32;
 }
diff --git a/src/tint/transform/simplify_pointers_test.cc b/src/tint/transform/simplify_pointers_test.cc
index f5658de..9848ff3 100644
--- a/src/tint/transform/simplify_pointers_test.cc
+++ b/src/tint/transform/simplify_pointers_test.cc
@@ -236,7 +236,7 @@
   return 1;
 }
 
-@stage(fragment)
+@fragment
 fn main() {
   var arr = array<f32, 4>();
   for (let a = &arr[foo()]; ;) {
@@ -251,7 +251,7 @@
   return 1;
 }
 
-@stage(fragment)
+@fragment
 fn main() {
   var arr = array<f32, 4>();
   let a_save = foo();
@@ -337,7 +337,7 @@
     auto* src = R"(
 var<private> a : array<i32, 2>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = &a;
   var a : i32 = (*x)[0];
@@ -350,7 +350,7 @@
     auto* expect = R"(
 var<private> a : array<i32, 2>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var a_1 : i32 = a[0];
   {
diff --git a/src/tint/transform/single_entry_point_test.cc b/src/tint/transform/single_entry_point_test.cc
index 8044621..8445f61 100644
--- a/src/tint/transform/single_entry_point_test.cc
+++ b/src/tint/transform/single_entry_point_test.cc
@@ -47,7 +47,7 @@
 
 TEST_F(SingleEntryPointTest, Error_InvalidEntryPoint) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn main() -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
@@ -68,7 +68,7 @@
     auto* src = R"(
 fn foo() {}
 
-@stage(fragment)
+@fragment
 fn main() {}
 )";
 
@@ -85,7 +85,7 @@
 
 TEST_F(SingleEntryPointTest, SingleEntryPoint) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
 }
 )";
@@ -101,26 +101,26 @@
 
 TEST_F(SingleEntryPointTest, MultipleEntryPoints) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn vert_main() -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() {
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main1() {
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main2() {
 }
 )";
 
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main1() {
 }
 )";
@@ -144,23 +144,23 @@
 
 var<private> d : f32;
 
-@stage(vertex)
+@vertex
 fn vert_main() -> @builtin(position) vec4<f32> {
   a = 0.0;
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() {
   b = 0.0;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main1() {
   c = 0.0;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main2() {
   d = 0.0;
 }
@@ -169,7 +169,7 @@
     auto* expect = R"(
 var<private> c : f32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main1() {
   c = 0.0;
 }
@@ -194,23 +194,23 @@
 
 let d : f32 = 1.0;
 
-@stage(vertex)
+@vertex
 fn vert_main() -> @builtin(position) vec4<f32> {
   let local_a : f32 = a;
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() {
   let local_b : f32 = b;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main1() {
   let local_c : f32 = c;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main2() {
   let local_d : f32 = d;
 }
@@ -219,7 +219,7 @@
     auto* expect = R"(
 let c : f32 = 1.0;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main1() {
   let local_c : f32 = c;
 }
@@ -238,7 +238,7 @@
     auto* src = R"(
 let size : i32 = 1;
 
-@stage(compute) @workgroup_size(size)
+@compute @workgroup_size(size)
 fn main() {
 }
 )";
@@ -261,27 +261,27 @@
 @id(0)    override c3 : u32 = 1u;
 @id(9999) override c4 : u32 = 1u;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main1() {
     let local_d = c1;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main2() {
     let local_d = c2;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main3() {
     let local_d = c3;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main4() {
     let local_d = c4;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main5() {
     let local_d = 1u;
 }
@@ -292,7 +292,7 @@
         auto* expect = R"(
 @id(1001) override c1 : u32 = 1u;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main1() {
   let local_d = c1;
 }
@@ -310,7 +310,7 @@
         auto* expect = R"(
 @id(1) override c2 : u32 = 1u;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main2() {
   let local_d = c2;
 }
@@ -326,7 +326,7 @@
         auto* expect = R"(
 @id(0) override c3 : u32 = 1u;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main3() {
   let local_d = c3;
 }
@@ -342,7 +342,7 @@
         auto* expect = R"(
 @id(9999) override c4 : u32 = 1u;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main4() {
   let local_d = c4;
 }
@@ -356,7 +356,7 @@
     {
         SingleEntryPoint::Config cfg("comp_main5");
         auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main5() {
   let local_d = 1u;
 }
@@ -389,12 +389,12 @@
   inner_shared();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main1() {
   outer1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main2() {
   outer2();
 }
@@ -412,7 +412,7 @@
   inner_shared();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main1() {
   outer1();
 }
@@ -463,12 +463,12 @@
   outer2_var = 0.0;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main1() {
   outer1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main2() {
   outer2();
 }
@@ -495,7 +495,7 @@
   outer1_var = 0.0;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main1() {
   outer1();
 }
diff --git a/src/tint/transform/unwind_discard_functions_test.cc b/src/tint/transform/unwind_discard_functions_test.cc
index 70b4218..481df9d 100644
--- a/src/tint/transform/unwind_discard_functions_test.cc
+++ b/src/tint/transform/unwind_discard_functions_test.cc
@@ -102,7 +102,7 @@
   let marker1 = 0;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   f();
   let marker1 = 0;
@@ -122,7 +122,7 @@
   discard;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   f();
   if (tint_discard) {
@@ -156,7 +156,7 @@
   return s;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   let marker1 = 0;
   f();
@@ -186,7 +186,7 @@
   discard;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   let marker1 = 0;
   f();
@@ -230,7 +230,7 @@
   return 0;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   let marker1 = 0;
   h();
@@ -275,7 +275,7 @@
   discard;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   let marker1 = 0;
   h();
@@ -311,7 +311,7 @@
   let marker1 = 0;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   let marker1 = 0;
   f();
@@ -348,7 +348,7 @@
   discard;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   let marker1 = 0;
   f();
@@ -381,7 +381,7 @@
 
 TEST_F(UnwindDiscardFunctionsTest, Call_DiscardFuncDeclaredBelow) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   f();
   let marker1 = 0;
@@ -400,7 +400,7 @@
 
 var<private> tint_discard : bool = false;
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   f();
   if (tint_discard) {
@@ -433,7 +433,7 @@
   return 42;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   if (f() == 42) {
     let marker1 = 0;
@@ -456,7 +456,7 @@
   discard;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   let tint_symbol = f();
   if (tint_discard) {
@@ -485,7 +485,7 @@
   return 42;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   if (true) {
     let marker1 = 0;
@@ -512,7 +512,7 @@
   discard;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   if (true) {
     let marker1 = 0;
@@ -547,7 +547,7 @@
   return 42;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   let marker1 = 0;
   var a = 0;
@@ -573,7 +573,7 @@
   discard;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   let marker1 = 0;
   var a = 0;
@@ -605,7 +605,7 @@
   return 42;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   let marker1 = 0;
   for (f(); ; ) {
@@ -630,7 +630,7 @@
   discard;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   let marker1 = 0;
   var tint_symbol = f();
@@ -661,7 +661,7 @@
   return 42;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   let marker1 = 0;
   for (let i = f(); ; ) {
@@ -686,7 +686,7 @@
   discard;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   let marker1 = 0;
   var tint_symbol = f();
@@ -717,7 +717,7 @@
   return 42;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   let marker1 = 0;
   for (; f() == 42; ) {
@@ -742,7 +742,7 @@
   discard;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   let marker1 = 0;
   loop {
@@ -778,7 +778,7 @@
   return 42;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   let marker1 = 0;
   for (; ; f()) {
@@ -809,7 +809,7 @@
   return 42;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   switch (f()) {
     case 0: {
@@ -843,7 +843,7 @@
   discard;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   var tint_symbol = f();
   if (tint_discard) {
@@ -893,7 +893,7 @@
   return f();
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   let marker1 = 0;
   g();
@@ -929,7 +929,7 @@
   discard;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   let marker1 = 0;
   g();
@@ -956,7 +956,7 @@
   return 42;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   var a = f();
   let marker1 = 0;
@@ -978,7 +978,7 @@
   discard;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   var a = f();
   if (tint_discard) {
@@ -1005,7 +1005,7 @@
   return 42;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   var a : i32;
   a = f();
@@ -1028,7 +1028,7 @@
   discard;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   var a : i32;
   a = f();
@@ -1056,7 +1056,7 @@
   return 0;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   var b = array<i32, 10>();
   b[f()] = 10;
@@ -1079,7 +1079,7 @@
   discard;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   var b = array<i32, 10>();
   let tint_symbol = f();
@@ -1115,7 +1115,7 @@
   return 0;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   var b = array<i32, 10>();
   b[f()] = g();
@@ -1146,7 +1146,7 @@
   discard;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   var b = array<i32, 10>();
   let tint_symbol = g();
@@ -1194,7 +1194,7 @@
   return 0;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   if ((f() + g() + h()) == 0) {
     let marker1 = 0;
@@ -1233,7 +1233,7 @@
   discard;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   let tint_symbol = f();
   if (tint_discard) {
@@ -1286,7 +1286,7 @@
   return 0;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   if (f() == 1 && g() == 2 && h() == 3) {
     let marker1 = 0;
@@ -1325,7 +1325,7 @@
   discard;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   let tint_symbol_2 = f();
   if (tint_discard) {
@@ -1373,7 +1373,7 @@
   let marker1 = 0;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in: vec4<f32>) -> @location(0) vec4<f32> {
   f();
   let marker1 = 0;
@@ -1397,7 +1397,7 @@
   discard;
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) coord_in : vec4<f32>) -> @location(0) vec4<f32> {
   f();
   if (tint_discard_1) {
diff --git a/src/tint/transform/vectorize_scalar_matrix_constructors_test.cc b/src/tint/transform/vectorize_scalar_matrix_constructors_test.cc
index 2b1c098..1ee9d33 100644
--- a/src/tint/transform/vectorize_scalar_matrix_constructors_test.cc
+++ b/src/tint/transform/vectorize_scalar_matrix_constructors_test.cc
@@ -53,7 +53,7 @@
     }
 
     std::string src = R"(
-@stage(fragment)
+@fragment
 fn main() {
   let m = ${matrix}(42.0);
 }
@@ -64,7 +64,7 @@
   return ${matrix}(${values});
 }
 
-@stage(fragment)
+@fragment
 fn main() {
   let m = build_${matrix_no_type}(42.0);
 }
@@ -107,7 +107,7 @@
     }
 
     std::string tmpl = R"(
-@stage(fragment)
+@fragment
 fn main() {
   let m = ${matrix}(${values});
 }
@@ -137,7 +137,7 @@
     }
 
     std::string tmpl = R"(
-@stage(fragment)
+@fragment
 fn main() {
   let m = ${matrix}(${columns});
 }
diff --git a/src/tint/transform/vertex_pulling_test.cc b/src/tint/transform/vertex_pulling_test.cc
index ef37631..5fb8b1c 100644
--- a/src/tint/transform/vertex_pulling_test.cc
+++ b/src/tint/transform/vertex_pulling_test.cc
@@ -37,7 +37,7 @@
 
 TEST_F(VertexPullingTest, Error_InvalidEntryPoint) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn main() -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
@@ -57,7 +57,7 @@
 
 TEST_F(VertexPullingTest, Error_EntryPointWrongStage) {
     auto* src = R"(
-@stage(fragment)
+@fragment
 fn main() {}
 )";
 
@@ -75,7 +75,7 @@
 
 TEST_F(VertexPullingTest, Error_BadStride) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn main(@location(0) var_a : f32) -> @builtin(position) vec4<f32> {
   return vec4<f32>(var_a, 0.0, 0.0, 1.0);
 }
@@ -98,7 +98,7 @@
 
 TEST_F(VertexPullingTest, BasicModule) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn main() -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
@@ -109,7 +109,7 @@
   tint_vertex_data : array<u32>,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> @builtin(position) vec4<f32> {
   return vec4<f32>();
 }
@@ -127,7 +127,7 @@
 
 TEST_F(VertexPullingTest, OneAttribute) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn main(@location(0) var_a : f32) -> @builtin(position) vec4<f32> {
   return vec4<f32>(var_a, 0.0, 0.0, 1.0);
 }
@@ -140,7 +140,7 @@
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) tint_pulling_vertex_index : u32) -> @builtin(position) vec4<f32> {
   var var_a : f32;
   {
@@ -164,7 +164,7 @@
 
 TEST_F(VertexPullingTest, OneInstancedAttribute) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn main(@location(0) var_a : f32) -> @builtin(position) vec4<f32> {
   return vec4<f32>(var_a, 0.0, 0.0, 1.0);
 }
@@ -177,7 +177,7 @@
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
-@stage(vertex)
+@vertex
 fn main(@builtin(instance_index) tint_pulling_instance_index : u32) -> @builtin(position) vec4<f32> {
   var var_a : f32;
   {
@@ -201,7 +201,7 @@
 
 TEST_F(VertexPullingTest, OneAttributeDifferentOutputSet) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn main(@location(0) var_a : f32) -> @builtin(position) vec4<f32> {
   return vec4<f32>(var_a, 0.0, 0.0, 1.0);
 }
@@ -214,7 +214,7 @@
 
 @binding(0) @group(5) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) tint_pulling_vertex_index : u32) -> @builtin(position) vec4<f32> {
   var var_a : f32;
   {
@@ -243,7 +243,7 @@
   @location(0) var_a : f32,
 };
 
-@stage(vertex)
+@vertex
 fn main(inputs : Inputs) -> @builtin(position) vec4<f32> {
   return vec4<f32>(inputs.var_a, 0.0, 0.0, 1.0);
 }
@@ -261,7 +261,7 @@
   var_a : f32,
 }
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) tint_pulling_vertex_index : u32) -> @builtin(position) vec4<f32> {
   var inputs : Inputs;
   {
@@ -286,7 +286,7 @@
 // We expect the transform to use an existing builtin variables if it finds them
 TEST_F(VertexPullingTest, ExistingVertexIndexAndInstanceIndex) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn main(@location(0) var_a : f32,
         @location(1) var_b : f32,
         @builtin(vertex_index) custom_vertex_index : u32,
@@ -305,7 +305,7 @@
 
 @binding(1) @group(4) var<storage, read> tint_pulling_vertex_buffer_1 : TintVertexData;
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) custom_vertex_index : u32, @builtin(instance_index) custom_instance_index : u32) -> @builtin(position) vec4<f32> {
   var var_a : f32;
   var var_b : f32;
@@ -350,7 +350,7 @@
   @builtin(instance_index) custom_instance_index : u32,
 };
 
-@stage(vertex)
+@vertex
 fn main(inputs : Inputs) -> @builtin(position) vec4<f32> {
   return vec4<f32>(inputs.var_a, inputs.var_b, 0.0, 1.0);
 }
@@ -383,7 +383,7 @@
   custom_instance_index : u32,
 }
 
-@stage(vertex)
+@vertex
 fn main(tint_symbol_1 : tint_symbol) -> @builtin(position) vec4<f32> {
   var inputs : Inputs;
   inputs.custom_vertex_index = tint_symbol_1.custom_vertex_index;
@@ -422,7 +422,7 @@
 
 TEST_F(VertexPullingTest, ExistingVertexIndexAndInstanceIndex_Struct_OutOfOrder) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn main(inputs : Inputs) -> @builtin(position) vec4<f32> {
   return vec4<f32>(inputs.var_a, inputs.var_b, 0.0, 1.0);
 }
@@ -451,7 +451,7 @@
   custom_instance_index : u32,
 }
 
-@stage(vertex)
+@vertex
 fn main(tint_symbol_1 : tint_symbol) -> @builtin(position) vec4<f32> {
   var inputs : Inputs;
   inputs.custom_vertex_index = tint_symbol_1.custom_vertex_index;
@@ -511,7 +511,7 @@
   @builtin(instance_index) custom_instance_index : u32,
 };
 
-@stage(vertex)
+@vertex
 fn main(inputs : Inputs, indices : Indices) -> @builtin(position) vec4<f32> {
   return vec4<f32>(inputs.var_a, inputs.var_b, 0.0, 1.0);
 }
@@ -540,7 +540,7 @@
   custom_instance_index : u32,
 }
 
-@stage(vertex)
+@vertex
 fn main(indices : Indices) -> @builtin(position) vec4<f32> {
   var inputs : Inputs;
   {
@@ -577,7 +577,7 @@
 
 TEST_F(VertexPullingTest, ExistingVertexIndexAndInstanceIndex_SeparateStruct_OutOfOrder) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn main(inputs : Inputs, indices : Indices) -> @builtin(position) vec4<f32> {
   return vec4<f32>(inputs.var_a, inputs.var_b, 0.0, 1.0);
 }
@@ -602,7 +602,7 @@
 
 @binding(1) @group(4) var<storage, read> tint_pulling_vertex_buffer_1 : TintVertexData;
 
-@stage(vertex)
+@vertex
 fn main(indices : Indices) -> @builtin(position) vec4<f32> {
   var inputs : Inputs;
   {
@@ -653,7 +653,7 @@
 
 TEST_F(VertexPullingTest, TwoAttributesSameBuffer) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn main(@location(0) var_a : f32,
         @location(1) var_b : vec4<f32>) -> @builtin(position) vec4<f32> {
   return vec4<f32>();
@@ -667,7 +667,7 @@
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) tint_pulling_vertex_index : u32) -> @builtin(position) vec4<f32> {
   var var_a : f32;
   var var_b : vec4<f32>;
@@ -695,7 +695,7 @@
 
 TEST_F(VertexPullingTest, FloatVectorAttributes) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn main(@location(0) var_a : vec2<f32>,
         @location(1) var_b : vec3<f32>,
         @location(2) var_c : vec4<f32>
@@ -715,7 +715,7 @@
 
 @binding(2) @group(4) var<storage, read> tint_pulling_vertex_buffer_2 : TintVertexData;
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) tint_pulling_vertex_index : u32) -> @builtin(position) vec4<f32> {
   var var_a : vec2<f32>;
   var var_b : vec3<f32>;
@@ -749,7 +749,7 @@
 
 TEST_F(VertexPullingTest, AttemptSymbolCollision) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn main(@location(0) var_a : f32,
         @location(1) var_b : vec4<f32>) -> @builtin(position) vec4<f32> {
   var tint_pulling_vertex_index : i32;
@@ -767,7 +767,7 @@
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0_1 : TintVertexData;
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) tint_pulling_vertex_index_1 : u32) -> @builtin(position) vec4<f32> {
   var var_a : f32;
   var var_b : vec4<f32>;
@@ -799,7 +799,7 @@
 
 TEST_F(VertexPullingTest, FormatsAligned) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn main(
     @location(0) uint8x2 : vec2<u32>,
     @location(1) uint8x4 : vec4<u32>,
@@ -843,7 +843,7 @@
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) tint_pulling_vertex_index : u32) -> @builtin(position) vec4<f32> {
   var uint8x2 : vec2<u32>;
   var uint8x4 : vec4<u32>;
@@ -944,7 +944,7 @@
 
 TEST_F(VertexPullingTest, FormatsStrideUnaligned) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn main(
     @location(0) uint8x2 : vec2<u32>,
     @location(1) uint8x4 : vec4<u32>,
@@ -989,7 +989,7 @@
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) tint_pulling_vertex_index : u32) -> @builtin(position) vec4<f32> {
   var uint8x2 : vec2<u32>;
   var uint8x4 : vec4<u32>;
@@ -1090,7 +1090,7 @@
 
 TEST_F(VertexPullingTest, FormatsWithVectorsResized) {
     auto* src = R"(
-@stage(vertex)
+@vertex
 fn main(
     @location(0) uint8x2 : vec3<u32>,
     @location(1) uint8x4 : vec2<u32>,
@@ -1134,7 +1134,7 @@
 
 @binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) tint_pulling_vertex_index : u32) -> @builtin(position) vec4<f32> {
   var uint8x2 : vec3<u32>;
   var uint8x4 : vec2<u32>;
diff --git a/src/tint/transform/zero_init_workgroup_memory_test.cc b/src/tint/transform/zero_init_workgroup_memory_test.cc
index c846d55..93f3933 100644
--- a/src/tint/transform/zero_init_workgroup_memory_test.cc
+++ b/src/tint/transform/zero_init_workgroup_memory_test.cc
@@ -81,7 +81,7 @@
   b = c;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
 }
 )";
@@ -94,7 +94,7 @@
 
 TEST_F(ZeroInitWorkgroupMemoryTest, UnreferencedWorkgroupVars_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
 }
 
@@ -119,7 +119,7 @@
     auto* src = R"(
 var<workgroup> v : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_idx : u32) {
   _ = v; // Initialization should be inserted above this statement
 }
@@ -127,7 +127,7 @@
     auto* expect = R"(
 var<workgroup> v : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_idx : u32) {
   {
     v = i32();
@@ -144,7 +144,7 @@
 
 TEST_F(ZeroInitWorkgroupMemoryTest, SingleWorkgroupVar_ExistingLocalIndex_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_idx : u32) {
   _ = v; // Initialization should be inserted above this statement
 }
@@ -152,7 +152,7 @@
 var<workgroup> v : i32;
 )";
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_idx : u32) {
   {
     v = i32();
@@ -177,7 +177,7 @@
   @builtin(local_invocation_index) local_idx : u32,
 };
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(params : Params) {
   _ = v; // Initialization should be inserted above this statement
 }
@@ -190,7 +190,7 @@
   local_idx : u32,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(params : Params) {
   {
     v = i32();
@@ -207,7 +207,7 @@
 
 TEST_F(ZeroInitWorkgroupMemoryTest, SingleWorkgroupVar_ExistingLocalIndexInStruct_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(params : Params) {
   _ = v; // Initialization should be inserted above this statement
 }
@@ -219,7 +219,7 @@
 var<workgroup> v : i32;
 )";
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(params : Params) {
   {
     v = i32();
@@ -245,7 +245,7 @@
     auto* src = R"(
 var<workgroup> v : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   _ = v; // Initialization should be inserted above this statement
 }
@@ -253,7 +253,7 @@
     auto* expect = R"(
 var<workgroup> v : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_invocation_index : u32) {
   {
     v = i32();
@@ -270,7 +270,7 @@
 
 TEST_F(ZeroInitWorkgroupMemoryTest, SingleWorkgroupVar_InjectedLocalIndex_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   _ = v; // Initialization should be inserted above this statement
 }
@@ -278,7 +278,7 @@
 var<workgroup> v : i32;
 )";
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_invocation_index : u32) {
   {
     v = i32();
@@ -308,7 +308,7 @@
 
 var<workgroup> c : array<S, 32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_idx : u32) {
   _ = a; // Initialization should be inserted above this statement
   _ = b;
@@ -327,7 +327,7 @@
 
 var<workgroup> c : array<S, 32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_idx : u32) {
   {
     a = i32();
@@ -360,7 +360,7 @@
 
 TEST_F(ZeroInitWorkgroupMemoryTest, MultipleWorkgroupVar_ExistingLocalIndex_Size1_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_idx : u32) {
   _ = a; // Initialization should be inserted above this statement
   _ = b;
@@ -379,7 +379,7 @@
 };
 )";
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_idx : u32) {
   {
     a = i32();
@@ -434,7 +434,7 @@
 
 var<workgroup> c : array<S, 32>;
 
-@stage(compute) @workgroup_size(2, 3)
+@compute @workgroup_size(2, 3)
 fn f(@builtin(local_invocation_index) local_idx : u32) {
   _ = a; // Initialization should be inserted above this statement
   _ = b;
@@ -453,7 +453,7 @@
 
 var<workgroup> c : array<S, 32>;
 
-@stage(compute) @workgroup_size(2, 3)
+@compute @workgroup_size(2, 3)
 fn f(@builtin(local_invocation_index) local_idx : u32) {
   if ((local_idx < 1u)) {
     a = i32();
@@ -499,7 +499,7 @@
 
 @id(1) override X : i32;
 
-@stage(compute) @workgroup_size(2, 3, X)
+@compute @workgroup_size(2, 3, X)
 fn f(@builtin(local_invocation_index) local_idx : u32) {
   _ = a; // Initialization should be inserted above this statement
   _ = b;
@@ -521,7 +521,7 @@
 
 @id(1) override X : i32;
 
-@stage(compute) @workgroup_size(2, 3, X)
+@compute @workgroup_size(2, 3, X)
 fn f(@builtin(local_invocation_index) local_idx : u32) {
   for(var idx : u32 = local_idx; (idx < 1u); idx = (idx + (u32(X) * 6u))) {
     a = i32();
@@ -568,7 +568,7 @@
 
 @id(1) override X : u32;
 
-@stage(compute) @workgroup_size(5u, X, 10u)
+@compute @workgroup_size(5u, X, 10u)
 fn f(@builtin(local_invocation_index) local_idx : u32) {
   _ = a; // Initialization should be inserted above this statement
   _ = b;
@@ -591,7 +591,7 @@
 
 @id(1) override X : u32;
 
-@stage(compute) @workgroup_size(5u, X, 10u)
+@compute @workgroup_size(5u, X, 10u)
 fn f(@builtin(local_invocation_index) local_idx : u32) {
   for(var idx : u32 = local_idx; (idx < 1u); idx = (idx + (X * 50u))) {
     a = i32();
@@ -654,7 +654,7 @@
 
 var<workgroup> c : array<S, 32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_id) local_invocation_id : vec3<u32>) {
   _ = a; // Initialization should be inserted above this statement
   _ = b;
@@ -673,7 +673,7 @@
 
 var<workgroup> c : array<S, 32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_id) local_invocation_id : vec3<u32>, @builtin(local_invocation_index) local_invocation_index : u32) {
   {
     a = i32();
@@ -706,7 +706,7 @@
 
 TEST_F(ZeroInitWorkgroupMemoryTest, MultipleWorkgroupVar_InjectedLocalIndex_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_id) local_invocation_id : vec3<u32>) {
   _ = a; // Initialization should be inserted above this statement
   _ = b;
@@ -725,7 +725,7 @@
 };
 )";
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_id) local_invocation_id : vec3<u32>, @builtin(local_invocation_index) local_invocation_index : u32) {
   {
     a = i32();
@@ -780,18 +780,18 @@
 
 var<workgroup> c : array<S, 32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f1() {
   _ = a; // Initialization should be inserted above this statement
   _ = c;
 }
 
-@stage(compute) @workgroup_size(1, 2, 3)
+@compute @workgroup_size(1, 2, 3)
 fn f2(@builtin(local_invocation_id) local_invocation_id : vec3<u32>) {
   _ = b; // Initialization should be inserted above this statement
 }
 
-@stage(compute) @workgroup_size(4, 5, 6)
+@compute @workgroup_size(4, 5, 6)
 fn f3() {
   _ = c; // Initialization should be inserted above this statement
   _ = a;
@@ -809,7 +809,7 @@
 
 var<workgroup> c : array<S, 32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f1(@builtin(local_invocation_index) local_invocation_index : u32) {
   {
     a = i32();
@@ -828,7 +828,7 @@
   _ = c;
 }
 
-@stage(compute) @workgroup_size(1, 2, 3)
+@compute @workgroup_size(1, 2, 3)
 fn f2(@builtin(local_invocation_id) local_invocation_id : vec3<u32>, @builtin(local_invocation_index) local_invocation_index_1 : u32) {
   if ((local_invocation_index_1 < 1u)) {
     b.x = i32();
@@ -841,7 +841,7 @@
   _ = b;
 }
 
-@stage(compute) @workgroup_size(4, 5, 6)
+@compute @workgroup_size(4, 5, 6)
 fn f3(@builtin(local_invocation_index) local_invocation_index_2 : u32) {
   if ((local_invocation_index_2 < 1u)) {
     a = i32();
@@ -868,18 +868,18 @@
 
 TEST_F(ZeroInitWorkgroupMemoryTest, MultipleWorkgroupVar_MultipleEntryPoints_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f1() {
   _ = a; // Initialization should be inserted above this statement
   _ = c;
 }
 
-@stage(compute) @workgroup_size(1, 2, 3)
+@compute @workgroup_size(1, 2, 3)
 fn f2(@builtin(local_invocation_id) local_invocation_id : vec3<u32>) {
   _ = b; // Initialization should be inserted above this statement
 }
 
-@stage(compute) @workgroup_size(4, 5, 6)
+@compute @workgroup_size(4, 5, 6)
 fn f3() {
   _ = c; // Initialization should be inserted above this statement
   _ = a;
@@ -897,7 +897,7 @@
 };
 )";
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f1(@builtin(local_invocation_index) local_invocation_index : u32) {
   {
     a = i32();
@@ -916,7 +916,7 @@
   _ = c;
 }
 
-@stage(compute) @workgroup_size(1, 2, 3)
+@compute @workgroup_size(1, 2, 3)
 fn f2(@builtin(local_invocation_id) local_invocation_id : vec3<u32>, @builtin(local_invocation_index) local_invocation_index_1 : u32) {
   if ((local_invocation_index_1 < 1u)) {
     b.x = i32();
@@ -929,7 +929,7 @@
   _ = b;
 }
 
-@stage(compute) @workgroup_size(4, 5, 6)
+@compute @workgroup_size(4, 5, 6)
 fn f3(@builtin(local_invocation_index) local_invocation_index_2 : u32) {
   if ((local_invocation_index_2 < 1u)) {
     a = i32();
@@ -977,7 +977,7 @@
   use_v();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_idx : u32) {
   call_use_v(); // Initialization should be inserted above this statement
 }
@@ -993,7 +993,7 @@
   use_v();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_idx : u32) {
   {
     v = i32();
@@ -1010,7 +1010,7 @@
 
 TEST_F(ZeroInitWorkgroupMemoryTest, TransitiveUsage_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_idx : u32) {
   call_use_v(); // Initialization should be inserted above this statement
 }
@@ -1026,7 +1026,7 @@
 var<workgroup> v : i32;
 )";
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_idx : u32) {
   {
     v = i32();
@@ -1056,7 +1056,7 @@
 var<workgroup> i : atomic<i32>;
 var<workgroup> u : atomic<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   atomicLoad(&(i)); // Initialization should be inserted above this statement
   atomicLoad(&(u));
@@ -1067,7 +1067,7 @@
 
 var<workgroup> u : atomic<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_invocation_index : u32) {
   {
     atomicStore(&(i), i32());
@@ -1086,7 +1086,7 @@
 
 TEST_F(ZeroInitWorkgroupMemoryTest, WorkgroupAtomics_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   atomicLoad(&(i)); // Initialization should be inserted above this statement
   atomicLoad(&(u));
@@ -1096,7 +1096,7 @@
 var<workgroup> u : atomic<u32>;
 )";
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_invocation_index : u32) {
   {
     atomicStore(&(i), i32());
@@ -1129,7 +1129,7 @@
 
 var<workgroup> w : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   _ = w.a; // Initialization should be inserted above this statement
 }
@@ -1145,7 +1145,7 @@
 
 var<workgroup> w : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_invocation_index : u32) {
   {
     w.a = i32();
@@ -1166,7 +1166,7 @@
 
 TEST_F(ZeroInitWorkgroupMemoryTest, WorkgroupStructOfAtomics_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   _ = w.a; // Initialization should be inserted above this statement
 }
@@ -1182,7 +1182,7 @@
 };
 )";
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_invocation_index : u32) {
   {
     w.a = i32();
@@ -1215,7 +1215,7 @@
     auto* src = R"(
 var<workgroup> w : array<atomic<u32>, 4>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   atomicLoad(&w[0]); // Initialization should be inserted above this statement
 }
@@ -1223,7 +1223,7 @@
     auto* expect = R"(
 var<workgroup> w : array<atomic<u32>, 4>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_invocation_index : u32) {
   for(var idx : u32 = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
     let i : u32 = idx;
@@ -1241,7 +1241,7 @@
 
 TEST_F(ZeroInitWorkgroupMemoryTest, WorkgroupArrayOfAtomics_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   atomicLoad(&w[0]); // Initialization should be inserted above this statement
 }
@@ -1249,7 +1249,7 @@
 var<workgroup> w : array<atomic<u32>, 4>;
 )";
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_invocation_index : u32) {
   for(var idx : u32 = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
     let i : u32 = idx;
@@ -1279,7 +1279,7 @@
 
 var<workgroup> w : array<S, 4>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   _ = w[0].a; // Initialization should be inserted above this statement
 }
@@ -1295,7 +1295,7 @@
 
 var<workgroup> w : array<S, 4>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_invocation_index : u32) {
   for(var idx : u32 = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
     let i_1 : u32 = idx;
@@ -1317,7 +1317,7 @@
 
 TEST_F(ZeroInitWorkgroupMemoryTest, WorkgroupArrayOfStructOfAtomics_OutOfOrder) {
     auto* src = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   _ = w[0].a; // Initialization should be inserted above this statement
 }
@@ -1333,7 +1333,7 @@
 };
 )";
     auto* expect = R"(
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f(@builtin(local_invocation_index) local_invocation_index : u32) {
   for(var idx : u32 = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
     let i_1 : u32 = idx;
diff --git a/src/tint/writer/glsl/generator_impl_function_test.cc b/src/tint/writer/glsl/generator_impl_function_test.cc
index 201e757..c5bccf2 100644
--- a/src/tint/writer/glsl/generator_impl_function_test.cc
+++ b/src/tint/writer/glsl/generator_impl_function_test.cc
@@ -877,13 +877,13 @@
     // };
     // @binding(0) @group(0) var<storage> data : Data;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn a() {
     //   var v = data.d;
     //   return;
     // }
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn b() {
     //   var v = data.d;
     //   return;
diff --git a/src/tint/writer/hlsl/generator_impl_function_test.cc b/src/tint/writer/hlsl/generator_impl_function_test.cc
index cbd95ec..c994b35 100644
--- a/src/tint/writer/hlsl/generator_impl_function_test.cc
+++ b/src/tint/writer/hlsl/generator_impl_function_test.cc
@@ -816,13 +816,13 @@
     // };
     // @binding(0) @group(0) var<storage> data : Data;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn a() {
     //   var v = data.d;
     //   return;
     // }
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn b() {
     //   var v = data.d;
     //   return;
diff --git a/src/tint/writer/msl/generator_impl_function_test.cc b/src/tint/writer/msl/generator_impl_function_test.cc
index 585e8fc..3c78522 100644
--- a/src/tint/writer/msl/generator_impl_function_test.cc
+++ b/src/tint/writer/msl/generator_impl_function_test.cc
@@ -615,12 +615,12 @@
     // };
     // @binding(0) @group(0) var<storage> data : Data;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn a() {
     //   return;
     // }
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn b() {
     //   return;
     // }
diff --git a/src/tint/writer/spirv/builder_entry_point_test.cc b/src/tint/writer/spirv/builder_entry_point_test.cc
index 50398a3..a407aa7 100644
--- a/src/tint/writer/spirv/builder_entry_point_test.cc
+++ b/src/tint/writer/spirv/builder_entry_point_test.cc
@@ -37,7 +37,7 @@
 using BuilderTest = TestHelper;
 
 TEST_F(BuilderTest, EntryPoint_Parameters) {
-    // @stage(fragment)
+    // @fragment
     // fn frag_main(@builtin(position) coord : vec4<f32>,
     //              @location(1) loc1 : f32) {
     //   var col : f32 = (coord.x * loc1);
@@ -105,7 +105,7 @@
 }
 
 TEST_F(BuilderTest, EntryPoint_ReturnValue) {
-    // @stage(fragment)
+    // @fragment
     // fn frag_main(@location(0) @interpolate(flat) loc_in : u32)
     //     -> @location(0) f32 {
     //   if (loc_in > 10) {
@@ -187,12 +187,12 @@
     //   @builtin(position) pos : vec4<f32>;
     // };
     //
-    // @stage(vertex)
+    // @vertex
     // fn vert_main() -> Interface {
     //   return Interface(42.0, vec4<f32>());
     // }
     //
-    // @stage(fragment)
+    // @fragment
     // fn frag_main(inputs : Interface) -> @builtin(frag_depth) f32 {
     //   return inputs.value;
     // }
diff --git a/src/tint/writer/spirv/builder_function_test.cc b/src/tint/writer/spirv/builder_function_test.cc
index fdb6a34..2fd1c32 100644
--- a/src/tint/writer/spirv/builder_function_test.cc
+++ b/src/tint/writer/spirv/builder_function_test.cc
@@ -186,12 +186,12 @@
     // };
     // @binding(0) @group(0) var<storage> data : Data;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn a() {
     //   return;
     // }
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn b() {
     //   return;
     // }
diff --git a/src/tint/writer/wgsl/generator_impl.cc b/src/tint/writer/wgsl/generator_impl.cc
index c71cd49..5e0ce8c 100644
--- a/src/tint/writer/wgsl/generator_impl.cc
+++ b/src/tint/writer/wgsl/generator_impl.cc
@@ -710,7 +710,7 @@
                 return true;
             },
             [&](const ast::StageAttribute* stage) {
-                out << "stage(" << stage->stage << ")";
+                out << stage->stage;
                 return true;
             },
             [&](const ast::BindingAttribute* binding) {
diff --git a/src/tint/writer/wgsl/generator_impl_function_test.cc b/src/tint/writer/wgsl/generator_impl_function_test.cc
index 4c43a59..e34292b 100644
--- a/src/tint/writer/wgsl/generator_impl_function_test.cc
+++ b/src/tint/writer/wgsl/generator_impl_function_test.cc
@@ -73,7 +73,7 @@
     gen.increment_indent();
 
     ASSERT_TRUE(gen.EmitFunction(func));
-    EXPECT_EQ(gen.result(), R"(  @stage(compute) @workgroup_size(2i, 4i, 6i)
+    EXPECT_EQ(gen.result(), R"(  @compute @workgroup_size(2i, 4i, 6i)
   fn my_func() {
     return;
   }
@@ -93,7 +93,7 @@
     gen.increment_indent();
 
     ASSERT_TRUE(gen.EmitFunction(func));
-    EXPECT_EQ(gen.result(), R"(  @stage(compute) @workgroup_size(2i, height)
+    EXPECT_EQ(gen.result(), R"(  @compute @workgroup_size(2i, height)
   fn my_func() {
     return;
   }
@@ -114,7 +114,7 @@
     gen.increment_indent();
 
     ASSERT_TRUE(gen.EmitFunction(func));
-    EXPECT_EQ(gen.result(), R"(  @stage(fragment)
+    EXPECT_EQ(gen.result(), R"(  @fragment
   fn frag_main(@builtin(position) coord : vec4<f32>, @location(1) loc1 : f32) {
   }
 )");
@@ -137,7 +137,7 @@
     gen.increment_indent();
 
     ASSERT_TRUE(gen.EmitFunction(func));
-    EXPECT_EQ(gen.result(), R"(  @stage(fragment)
+    EXPECT_EQ(gen.result(), R"(  @fragment
   fn frag_main() -> @location(1) f32 {
     return 1.0f;
   }
@@ -151,12 +151,12 @@
     // };
     // @binding(0) @group(0) var<storage> data : Data;
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn a() {
     //   return;
     // }
     //
-    // @stage(compute) @workgroup_size(1)
+    // @compute @workgroup_size(1)
     // fn b() {
     //   return;
     // }
@@ -206,13 +206,13 @@
 
 @binding(0) @group(0) var<storage, read_write> data : Data;
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn a() {
   var v : f32 = data.d;
   return;
 }
 
-@stage(compute) @workgroup_size(1i)
+@compute @workgroup_size(1i)
 fn b() {
   var v : f32 = data.d;
   return;
diff --git a/src/tint/writer/wgsl/generator_impl_global_decl_test.cc b/src/tint/writer/wgsl/generator_impl_global_decl_test.cc
index 8e1c9a6..48f1276 100644
--- a/src/tint/writer/wgsl/generator_impl_global_decl_test.cc
+++ b/src/tint/writer/wgsl/generator_impl_global_decl_test.cc
@@ -35,7 +35,7 @@
     gen.increment_indent();
 
     ASSERT_TRUE(gen.Generate()) << gen.error();
-    EXPECT_EQ(gen.result(), R"(  @stage(compute) @workgroup_size(1i, 1i, 1i)
+    EXPECT_EQ(gen.result(), R"(  @compute @workgroup_size(1i, 1i, 1i)
   fn test_function() {
     var a : f32;
   }
@@ -91,7 +91,7 @@
     a : i32,
   }
 
-  @stage(compute) @workgroup_size(1i)
+  @compute @workgroup_size(1i)
   fn main() {
     var s0 : S0;
     var s1 : S1;
diff --git a/test/tint/access/let/matrix.spvasm.expected.wgsl b/test/tint/access/let/matrix.spvasm.expected.wgsl
index 9b26713..01bd441 100644
--- a/test/tint/access/let/matrix.spvasm.expected.wgsl
+++ b/test/tint/access/let/matrix.spvasm.expected.wgsl
@@ -3,7 +3,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/access/let/matrix.wgsl b/test/tint/access/let/matrix.wgsl
index b4c77cf..3d96fba 100644
--- a/test/tint/access/let/matrix.wgsl
+++ b/test/tint/access/let/matrix.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let m : mat3x3<f32> = mat3x3<f32>(vec3<f32>(1., 2., 3.), vec3<f32>(4., 5., 6.), vec3<f32>(7., 8., 9.));
   let v : vec3<f32> = m[1];
diff --git a/test/tint/access/let/matrix.wgsl.expected.wgsl b/test/tint/access/let/matrix.wgsl.expected.wgsl
index f5dbdfb..bdfd207 100644
--- a/test/tint/access/let/matrix.wgsl.expected.wgsl
+++ b/test/tint/access/let/matrix.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let m : mat3x3<f32> = mat3x3<f32>(vec3<f32>(1.0, 2.0, 3.0), vec3<f32>(4.0, 5.0, 6.0), vec3<f32>(7.0, 8.0, 9.0));
   let v : vec3<f32> = m[1];
diff --git a/test/tint/access/let/vector.spvasm.expected.wgsl b/test/tint/access/let/vector.spvasm.expected.wgsl
index a5385e1..d80b9cf 100644
--- a/test/tint/access/let/vector.spvasm.expected.wgsl
+++ b/test/tint/access/let/vector.spvasm.expected.wgsl
@@ -5,7 +5,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/access/let/vector.wgsl b/test/tint/access/let/vector.wgsl
index 3589c6b..87604a9 100644
--- a/test/tint/access/let/vector.wgsl
+++ b/test/tint/access/let/vector.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let v : vec3<f32> = vec3<f32>(1., 2., 3.);
   let scalar : f32 = v.y;
diff --git a/test/tint/access/let/vector.wgsl.expected.wgsl b/test/tint/access/let/vector.wgsl.expected.wgsl
index d7d7a2d..6646867 100644
--- a/test/tint/access/let/vector.wgsl.expected.wgsl
+++ b/test/tint/access/let/vector.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let v : vec3<f32> = vec3<f32>(1.0, 2.0, 3.0);
   let scalar : f32 = v.y;
diff --git a/test/tint/access/var/matrix.spvasm.expected.wgsl b/test/tint/access/var/matrix.spvasm.expected.wgsl
index a187f2c..df0ad85 100644
--- a/test/tint/access/var/matrix.spvasm.expected.wgsl
+++ b/test/tint/access/var/matrix.spvasm.expected.wgsl
@@ -5,7 +5,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/access/var/matrix.wgsl b/test/tint/access/var/matrix.wgsl
index d511bd4..92db7c0 100644
--- a/test/tint/access/var/matrix.wgsl
+++ b/test/tint/access/var/matrix.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var m : mat3x3<f32>;
   let v : vec3<f32> = m[1];
diff --git a/test/tint/access/var/matrix.wgsl.expected.wgsl b/test/tint/access/var/matrix.wgsl.expected.wgsl
index d511bd4..92db7c0 100644
--- a/test/tint/access/var/matrix.wgsl.expected.wgsl
+++ b/test/tint/access/var/matrix.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var m : mat3x3<f32>;
   let v : vec3<f32> = m[1];
diff --git a/test/tint/access/var/vector.spvasm.expected.wgsl b/test/tint/access/var/vector.spvasm.expected.wgsl
index b13bb1a..a44d633 100644
--- a/test/tint/access/var/vector.spvasm.expected.wgsl
+++ b/test/tint/access/var/vector.spvasm.expected.wgsl
@@ -8,7 +8,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/access/var/vector.wgsl b/test/tint/access/var/vector.wgsl
index 078f82e..8cc17f8 100644
--- a/test/tint/access/var/vector.wgsl
+++ b/test/tint/access/var/vector.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : vec3<f32>;
   let scalar : f32 = v.y;
diff --git a/test/tint/access/var/vector.wgsl.expected.wgsl b/test/tint/access/var/vector.wgsl.expected.wgsl
index 078f82e..8cc17f8 100644
--- a/test/tint/access/var/vector.wgsl.expected.wgsl
+++ b/test/tint/access/var/vector.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : vec3<f32>;
   let scalar : f32 = v.y;
diff --git a/test/tint/array/function_parameter.wgsl b/test/tint/array/function_parameter.wgsl
index 23de855..be06c51 100644
--- a/test/tint/array/function_parameter.wgsl
+++ b/test/tint/array/function_parameter.wgsl
@@ -10,7 +10,7 @@
   return a[1][2][3];
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let a1 : array<f32, 4> = array<f32, 4>();
   let a2 : array<array<f32, 4>, 3> = array<array<f32, 4>, 3>();
diff --git a/test/tint/array/function_parameter.wgsl.expected.wgsl b/test/tint/array/function_parameter.wgsl.expected.wgsl
index 23de855..be06c51 100644
--- a/test/tint/array/function_parameter.wgsl.expected.wgsl
+++ b/test/tint/array/function_parameter.wgsl.expected.wgsl
@@ -10,7 +10,7 @@
   return a[1][2][3];
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let a1 : array<f32, 4> = array<f32, 4>();
   let a2 : array<array<f32, 4>, 3> = array<array<f32, 4>, 3>();
diff --git a/test/tint/array/function_return_type.wgsl b/test/tint/array/function_return_type.wgsl
index 7491245..4b5dddc 100644
--- a/test/tint/array/function_return_type.wgsl
+++ b/test/tint/array/function_return_type.wgsl
@@ -10,7 +10,7 @@
   return array<array<array<f32, 4>, 3>, 2>(f2(), f2());
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let a1 : array<f32, 4> = f1();
   let a2 : array<array<f32, 4>, 3> = f2();
diff --git a/test/tint/array/function_return_type.wgsl.expected.wgsl b/test/tint/array/function_return_type.wgsl.expected.wgsl
index 7491245..4b5dddc 100644
--- a/test/tint/array/function_return_type.wgsl.expected.wgsl
+++ b/test/tint/array/function_return_type.wgsl.expected.wgsl
@@ -10,7 +10,7 @@
   return array<array<array<f32, 4>, 3>, 2>(f2(), f2());
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let a1 : array<f32, 4> = f1();
   let a2 : array<array<f32, 4>, 3> = f2();
diff --git a/test/tint/array/size.wgsl b/test/tint/array/size.wgsl
index 60721db..f9135ad 100644
--- a/test/tint/array/size.wgsl
+++ b/test/tint/array/size.wgsl
@@ -1,7 +1,7 @@
 let slen = 4;
 let ulen = 4u;
 
-@stage(fragment)
+@fragment
 fn main() {
   var signed_literal : array<f32, 4>;
   var unsigned_literal : array<f32, 4u>;
diff --git a/test/tint/array/size.wgsl.expected.wgsl b/test/tint/array/size.wgsl.expected.wgsl
index 0998407..7b6efc6 100644
--- a/test/tint/array/size.wgsl.expected.wgsl
+++ b/test/tint/array/size.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 let ulen = 4u;
 
-@stage(fragment)
+@fragment
 fn main() {
   var signed_literal : array<f32, 4>;
   var unsigned_literal : array<f32, 4u>;
diff --git a/test/tint/array/strides.spvasm b/test/tint/array/strides.spvasm
index d0ae14d..9730642 100644
--- a/test/tint/array/strides.spvasm
+++ b/test/tint/array/strides.spvasm
@@ -5,7 +5,7 @@
 ; };
 ; @group(0) @binding(0) var<storage, read_write> s : S;
 ;
-; @stage(compute) @workgroup_size(1)
+; @compute @workgroup_size(1)
 ; fn f() {
 ;   let a : ARR_B = s.a;
 ;   let b : array<@stride(8) array<f32, 2>, 3> = s.a[3];
diff --git a/test/tint/array/strides.spvasm.expected.wgsl b/test/tint/array/strides.spvasm.expected.wgsl
index 14e0a9e..74fe15c 100644
--- a/test/tint/array/strides.spvasm.expected.wgsl
+++ b/test/tint/array/strides.spvasm.expected.wgsl
@@ -30,7 +30,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn f() {
   f_1();
 }
diff --git a/test/tint/array/type_constructor.wgsl b/test/tint/array/type_constructor.wgsl
index 8a07f39..e975089 100644
--- a/test/tint/array/type_constructor.wgsl
+++ b/test/tint/array/type_constructor.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x : i32 = 42;
 
diff --git a/test/tint/array/type_constructor.wgsl.expected.wgsl b/test/tint/array/type_constructor.wgsl.expected.wgsl
index 4381ec8..a1a942a 100644
--- a/test/tint/array/type_constructor.wgsl.expected.wgsl
+++ b/test/tint/array/type_constructor.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x : i32 = 42;
   let empty : array<i32, 4> = array<i32, 4>();
diff --git a/test/tint/benchmark/animometer.wgsl b/test/tint/benchmark/animometer.wgsl
index 393c487..db0eae2 100644
--- a/test/tint/benchmark/animometer.wgsl
+++ b/test/tint/benchmark/animometer.wgsl
@@ -21,7 +21,7 @@
   v_color : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn vert_main(@location(0) position : vec4<f32>, @location(1) color : vec4<f32>) -> VertexOutput {
   var fade : f32 = ((uniforms.scalarOffset + ((time.value * uniforms.scalar) / 10.0)) % 1.0);
   if ((fade < 0.5)) {
@@ -42,7 +42,7 @@
   return output;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(@location(0) v_color : vec4<f32>) -> @location(0) vec4<f32> {
   return v_color;
 }
diff --git a/test/tint/benchmark/bloom-vertical-blur.wgsl b/test/tint/benchmark/bloom-vertical-blur.wgsl
index 79145c9..3754c10 100644
--- a/test/tint/benchmark/bloom-vertical-blur.wgsl
+++ b/test/tint/benchmark/bloom-vertical-blur.wgsl
@@ -34,7 +34,7 @@
 
 @group(0) @binding(3) var prevTexture : texture_2d<f32>;
 
-@stage(fragment)
+@fragment
 fn fragmentMain(input : FragmentInput) -> @location(0) vec4<f32> {
   let blurColor = getGaussianBlur(input.texCoord);
   let dimColor = (textureSample(prevTexture, bloomSampler, input.texCoord) * bloom.dim);
diff --git a/test/tint/benchmark/cluster-lights.wgsl b/test/tint/benchmark/cluster-lights.wgsl
index 81d937c..c6eacc4 100644
--- a/test/tint/benchmark/cluster-lights.wgsl
+++ b/test/tint/benchmark/cluster-lights.wgsl
@@ -85,7 +85,7 @@
   return sqDist;
 }
 
-@stage(compute) @workgroup_size(4, 2, 4)
+@compute @workgroup_size(4, 2, 4)
 fn computeMain(@builtin(global_invocation_id) global_id : vec3<u32>) {
   let tileIndex = ((global_id.x + (global_id.y * tileCount.x)) + ((global_id.z * tileCount.x) * tileCount.y));
   var clusterLightCount = 0u;
diff --git a/test/tint/benchmark/metaball-isosurface.wgsl b/test/tint/benchmark/metaball-isosurface.wgsl
index e5dd381..33eecb0 100644
--- a/test/tint/benchmark/metaball-isosurface.wgsl
+++ b/test/tint/benchmark/metaball-isosurface.wgsl
@@ -102,7 +102,7 @@
   cubeVerts = (cubeVerts + 1u);
 }
 
-@stage(compute) @workgroup_size(4, 4, 4)
+@compute @workgroup_size(4, 4, 4)
 fn computeMain(@builtin(global_invocation_id) global_id : vec3<u32>) {
   let i0 = global_id;
   let i1 = (global_id + vec3<u32>(1u, 0u, 0u));
diff --git a/test/tint/benchmark/particles.wgsl b/test/tint/benchmark/particles.wgsl
index 416f878..48628ff 100644
--- a/test/tint/benchmark/particles.wgsl
+++ b/test/tint/benchmark/particles.wgsl
@@ -31,7 +31,7 @@
   @location(1)       quad_pos : vec2<f32>, // -1..+1
 };
 
-@stage(vertex)
+@vertex
 fn vs_main(in : VertexInput) -> VertexOutput {
   var quad_pos = mat2x3<f32>(render_params.right, render_params.up) * in.quad_pos;
   var position = in.position + quad_pos * 0.01;
@@ -45,7 +45,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // Fragment shader
 ////////////////////////////////////////////////////////////////////////////////
-@stage(fragment)
+@fragment
 fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
   var color = in.color;
   // Apply a circular particle alpha mask
@@ -76,7 +76,7 @@
 @binding(1) @group(0) var<storage, read_write> data : Particles;
 @binding(2) @group(0) var texture : texture_2d<f32>;
 
-@stage(compute) @workgroup_size(64)
+@compute @workgroup_size(64)
 fn simulate(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   rand_seed = (sim_params.seed.xy + vec2<f32>(GlobalInvocationID.xy)) * sim_params.seed.zw;
 
@@ -148,7 +148,7 @@
 // Loads the alpha channel from a texel of the source image, and writes it to
 // the buf_out.weights.
 ////////////////////////////////////////////////////////////////////////////////
-@stage(compute) @workgroup_size(64)
+@compute @workgroup_size(64)
 fn import_level(@builtin(global_invocation_id) coord : vec3<u32>) {
   _ = &buf_in;
   let offset = coord.x + coord.y * ubo.width;
@@ -163,7 +163,7 @@
 // mip level of tex_out. See simulate() in particle.wgsl to understand the
 // probability logic.
 ////////////////////////////////////////////////////////////////////////////////
-@stage(compute) @workgroup_size(64)
+@compute @workgroup_size(64)
 fn export_level(@builtin(global_invocation_id) coord : vec3<u32>) {
   if (all(coord.xy < vec2<u32>(textureDimensions(tex_out)))) {
     let dst_offset = coord.x    + coord.y    * ubo.width;
diff --git a/test/tint/benchmark/shadow-fragment.wgsl b/test/tint/benchmark/shadow-fragment.wgsl
index ee8269e..29eee86 100644
--- a/test/tint/benchmark/shadow-fragment.wgsl
+++ b/test/tint/benchmark/shadow-fragment.wgsl
@@ -25,7 +25,7 @@
 
 let ambientFactor : f32 = 0.200000003;
 
-@stage(fragment)
+@fragment
 fn main(input : FragmentInput) -> @location(0) vec4<f32> {
   var visibility : f32 = 0.0;
   let oneOverShadowDepthTextureSize = (1.0 / shadowDepthTextureSize);
diff --git a/test/tint/benchmark/simple-compute.wgsl b/test/tint/benchmark/simple-compute.wgsl
index d2c2f20..427e51c 100644
--- a/test/tint/benchmark/simple-compute.wgsl
+++ b/test/tint/benchmark/simple-compute.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(0) var<storage, read_write> buffer : SB;
 
-@stage(compute) @workgroup_size(1, 2, 3)
+@compute @workgroup_size(1, 2, 3)
 fn main(@builtin(global_invocation_id) id : vec3<u32>) {
   buffer.data[id.x] = buffer.data[id.x] + 1;
 }
diff --git a/test/tint/benchmark/simple-fragment.wgsl b/test/tint/benchmark/simple-fragment.wgsl
index 7041355..73e8ff8 100644
--- a/test/tint/benchmark/simple-fragment.wgsl
+++ b/test/tint/benchmark/simple-fragment.wgsl
@@ -6,7 +6,7 @@
   @location(0) color: vec4<f32>,
 };
 
-@stage(fragment)
+@fragment
 fn main(in : Input) -> Output {
   return Output(in.color);
 }
diff --git a/test/tint/benchmark/simple-vertex.wgsl b/test/tint/benchmark/simple-vertex.wgsl
index b3e260e..45b6bce 100644
--- a/test/tint/benchmark/simple-vertex.wgsl
+++ b/test/tint/benchmark/simple-vertex.wgsl
@@ -6,7 +6,7 @@
   @builtin(position) position : vec4<f32>,
 };
 
-@stage(vertex)
+@vertex
 fn main(in : Input) -> Output {
   return Output(in.position);
 }
diff --git a/test/tint/benchmark/skinned-shadowed-pbr-fragment.wgsl b/test/tint/benchmark/skinned-shadowed-pbr-fragment.wgsl
index 5aa8758..eb1c0b0 100644
--- a/test/tint/benchmark/skinned-shadowed-pbr-fragment.wgsl
+++ b/test/tint/benchmark/skinned-shadowed-pbr-fragment.wgsl
@@ -330,7 +330,7 @@
   emissive : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn fragmentMain(input : VertexOutput) -> FragmentOutput {
   let surface = GetSurfaceInfo(input);
   var Lo = vec3(0.0, 0.0, 0.0);
diff --git a/test/tint/benchmark/skinned-shadowed-pbr-vertex.wgsl b/test/tint/benchmark/skinned-shadowed-pbr-vertex.wgsl
index 593ba23..daef31d 100644
--- a/test/tint/benchmark/skinned-shadowed-pbr-vertex.wgsl
+++ b/test/tint/benchmark/skinned-shadowed-pbr-vertex.wgsl
@@ -80,7 +80,7 @@
   return skinMatrix;
 }
 
-@stage(vertex)
+@vertex
 fn vertexMain(input : VertexInput) -> VertexOutput {
   var output : VertexOutput;
   let modelMatrix = getSkinMatrix(input);
diff --git a/test/tint/buffer/storage/dynamic_index/read.wgsl b/test/tint/buffer/storage/dynamic_index/read.wgsl
index d46694a..7c50c42 100644
--- a/test/tint/buffer/storage/dynamic_index/read.wgsl
+++ b/test/tint/buffer/storage/dynamic_index/read.wgsl
@@ -16,7 +16,7 @@
 
 @binding(0) @group(0) var<storage, read> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@builtin(local_invocation_index) idx : u32) {
     let a = s.arr[idx].a;
     let b = s.arr[idx].b;
diff --git a/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.wgsl b/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.wgsl
index ddfe806..f082887 100644
--- a/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.wgsl
@@ -16,7 +16,7 @@
 
 @binding(0) @group(0) var<storage, read> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@builtin(local_invocation_index) idx : u32) {
   let a = s.arr[idx].a;
   let b = s.arr[idx].b;
diff --git a/test/tint/buffer/storage/dynamic_index/write.wgsl b/test/tint/buffer/storage/dynamic_index/write.wgsl
index 03980d5..38f202c 100644
--- a/test/tint/buffer/storage/dynamic_index/write.wgsl
+++ b/test/tint/buffer/storage/dynamic_index/write.wgsl
@@ -16,7 +16,7 @@
 
 @binding(0) @group(0) var<storage, read_write> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@builtin(local_invocation_index) idx : u32) {
     s.arr[idx].a = vec3<i32>();
     s.arr[idx].b = i32();
diff --git a/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.wgsl b/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.wgsl
index dc76bc0..d2fbdff 100644
--- a/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.wgsl
@@ -16,7 +16,7 @@
 
 @binding(0) @group(0) var<storage, read_write> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@builtin(local_invocation_index) idx : u32) {
   s.arr[idx].a = vec3<i32>();
   s.arr[idx].b = i32();
diff --git a/test/tint/buffer/storage/static_index/read.wgsl b/test/tint/buffer/storage/static_index/read.wgsl
index fb56a9c..84c5148 100644
--- a/test/tint/buffer/storage/static_index/read.wgsl
+++ b/test/tint/buffer/storage/static_index/read.wgsl
@@ -17,7 +17,7 @@
 
 @binding(0) @group(0) var<storage, read> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     let a = s.a;
     let b = s.b;
diff --git a/test/tint/buffer/storage/static_index/read.wgsl.expected.wgsl b/test/tint/buffer/storage/static_index/read.wgsl.expected.wgsl
index 6a5f32b..89ab3c2 100644
--- a/test/tint/buffer/storage/static_index/read.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/static_index/read.wgsl.expected.wgsl
@@ -17,7 +17,7 @@
 
 @binding(0) @group(0) var<storage, read> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let a = s.a;
   let b = s.b;
diff --git a/test/tint/buffer/storage/static_index/write.wgsl b/test/tint/buffer/storage/static_index/write.wgsl
index d9c16cf..e1f7eab 100644
--- a/test/tint/buffer/storage/static_index/write.wgsl
+++ b/test/tint/buffer/storage/static_index/write.wgsl
@@ -17,7 +17,7 @@
 
 @binding(0) @group(0) var<storage, write> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     s.a = vec3<i32>();
     s.b = i32();
diff --git a/test/tint/buffer/storage/static_index/write.wgsl.expected.wgsl b/test/tint/buffer/storage/static_index/write.wgsl.expected.wgsl
index 74e5902..fd7a137 100644
--- a/test/tint/buffer/storage/static_index/write.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/static_index/write.wgsl.expected.wgsl
@@ -17,7 +17,7 @@
 
 @binding(0) @group(0) var<storage, write> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   s.a = vec3<i32>();
   s.b = i32();
diff --git a/test/tint/buffer/storage/types/array.wgsl b/test/tint/buffer/storage/types/array.wgsl
index ae79369..b78ebdc 100644
--- a/test/tint/buffer/storage/types/array.wgsl
+++ b/test/tint/buffer/storage/types/array.wgsl
@@ -4,7 +4,7 @@
 @group(0) @binding(1)
 var<storage, read_write> out : array<f32, 4>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/array.wgsl.expected.wgsl b/test/tint/buffer/storage/types/array.wgsl.expected.wgsl
index 7cfa5a3..690258d 100644
--- a/test/tint/buffer/storage/types/array.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/types/array.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(0) @binding(1) var<storage, read_write> out : array<f32, 4>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/f32.wgsl b/test/tint/buffer/storage/types/f32.wgsl
index d8d60af..08826f4 100644
--- a/test/tint/buffer/storage/types/f32.wgsl
+++ b/test/tint/buffer/storage/types/f32.wgsl
@@ -4,7 +4,7 @@
 @group(0) @binding(1)
 var<storage, read_write> out : f32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/f32.wgsl.expected.wgsl b/test/tint/buffer/storage/types/f32.wgsl.expected.wgsl
index fc61aa9..968b335 100644
--- a/test/tint/buffer/storage/types/f32.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/types/f32.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(0) @binding(1) var<storage, read_write> out : f32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/i32.wgsl b/test/tint/buffer/storage/types/i32.wgsl
index fa63f1d..63f64e5 100644
--- a/test/tint/buffer/storage/types/i32.wgsl
+++ b/test/tint/buffer/storage/types/i32.wgsl
@@ -4,7 +4,7 @@
 @group(0) @binding(1)
 var<storage, read_write> out : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/i32.wgsl.expected.wgsl b/test/tint/buffer/storage/types/i32.wgsl.expected.wgsl
index f4b6b78..9e0bc0f 100644
--- a/test/tint/buffer/storage/types/i32.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/types/i32.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(0) @binding(1) var<storage, read_write> out : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/mat2x2.wgsl b/test/tint/buffer/storage/types/mat2x2.wgsl
index 0fece18..0e2b545 100644
--- a/test/tint/buffer/storage/types/mat2x2.wgsl
+++ b/test/tint/buffer/storage/types/mat2x2.wgsl
@@ -4,7 +4,7 @@
 @group(0) @binding(1)
 var<storage, read_write> out : mat2x2<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/mat2x2.wgsl.expected.wgsl b/test/tint/buffer/storage/types/mat2x2.wgsl.expected.wgsl
index 5d3e650..75a7f28 100644
--- a/test/tint/buffer/storage/types/mat2x2.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/types/mat2x2.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(0) @binding(1) var<storage, read_write> out : mat2x2<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/mat2x3.wgsl b/test/tint/buffer/storage/types/mat2x3.wgsl
index 7d64f7b..f4cc6d2 100644
--- a/test/tint/buffer/storage/types/mat2x3.wgsl
+++ b/test/tint/buffer/storage/types/mat2x3.wgsl
@@ -4,7 +4,7 @@
 @group(0) @binding(1)
 var<storage, read_write> out : mat2x3<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/mat2x3.wgsl.expected.wgsl b/test/tint/buffer/storage/types/mat2x3.wgsl.expected.wgsl
index 48eda48..b3d979a 100644
--- a/test/tint/buffer/storage/types/mat2x3.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/types/mat2x3.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(0) @binding(1) var<storage, read_write> out : mat2x3<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/mat3x2.wgsl b/test/tint/buffer/storage/types/mat3x2.wgsl
index e3f972f..b9eee8c 100644
--- a/test/tint/buffer/storage/types/mat3x2.wgsl
+++ b/test/tint/buffer/storage/types/mat3x2.wgsl
@@ -4,7 +4,7 @@
 @group(0) @binding(1)
 var<storage, read_write> out : mat3x2<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/mat3x2.wgsl.expected.wgsl b/test/tint/buffer/storage/types/mat3x2.wgsl.expected.wgsl
index d5db436..aa300ea 100644
--- a/test/tint/buffer/storage/types/mat3x2.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/types/mat3x2.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(0) @binding(1) var<storage, read_write> out : mat3x2<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/mat4x4.wgsl b/test/tint/buffer/storage/types/mat4x4.wgsl
index 673d9d3..7a2d773 100644
--- a/test/tint/buffer/storage/types/mat4x4.wgsl
+++ b/test/tint/buffer/storage/types/mat4x4.wgsl
@@ -4,7 +4,7 @@
 @group(0) @binding(1)
 var<storage, read_write> out : mat4x4<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/mat4x4.wgsl.expected.wgsl b/test/tint/buffer/storage/types/mat4x4.wgsl.expected.wgsl
index 402743f..d06843b 100644
--- a/test/tint/buffer/storage/types/mat4x4.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/types/mat4x4.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(0) @binding(1) var<storage, read_write> out : mat4x4<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/runtime_array.wgsl b/test/tint/buffer/storage/types/runtime_array.wgsl
index 156fd68..4ecdc37 100644
--- a/test/tint/buffer/storage/types/runtime_array.wgsl
+++ b/test/tint/buffer/storage/types/runtime_array.wgsl
@@ -8,7 +8,7 @@
 @group(0) @binding(1)
 var<storage, read_write> out : array<S>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out[0] = in[0];
 }
diff --git a/test/tint/buffer/storage/types/runtime_array.wgsl.expected.wgsl b/test/tint/buffer/storage/types/runtime_array.wgsl.expected.wgsl
index 5ceee23..3946635 100644
--- a/test/tint/buffer/storage/types/runtime_array.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/types/runtime_array.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
 
 @group(0) @binding(1) var<storage, read_write> out : array<S>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out[0] = in[0];
 }
diff --git a/test/tint/buffer/storage/types/struct.wgsl b/test/tint/buffer/storage/types/struct.wgsl
index 57ad78a..ad75a94 100644
--- a/test/tint/buffer/storage/types/struct.wgsl
+++ b/test/tint/buffer/storage/types/struct.wgsl
@@ -11,7 +11,7 @@
 @group(0) @binding(1)
 var<storage, read_write> out : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/struct.wgsl.expected.wgsl b/test/tint/buffer/storage/types/struct.wgsl.expected.wgsl
index 553d4b7..ad3cde3 100644
--- a/test/tint/buffer/storage/types/struct.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/types/struct.wgsl.expected.wgsl
@@ -10,7 +10,7 @@
 
 @group(0) @binding(1) var<storage, read_write> out : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/u32.wgsl b/test/tint/buffer/storage/types/u32.wgsl
index 0b87510..421ec82 100644
--- a/test/tint/buffer/storage/types/u32.wgsl
+++ b/test/tint/buffer/storage/types/u32.wgsl
@@ -4,7 +4,7 @@
 @group(0) @binding(1)
 var<storage, read_write> out : u32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/u32.wgsl.expected.wgsl b/test/tint/buffer/storage/types/u32.wgsl.expected.wgsl
index 2cebf5e..896139e 100644
--- a/test/tint/buffer/storage/types/u32.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/types/u32.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(0) @binding(1) var<storage, read_write> out : u32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/vec2.wgsl b/test/tint/buffer/storage/types/vec2.wgsl
index d1466d5..ae7b643 100644
--- a/test/tint/buffer/storage/types/vec2.wgsl
+++ b/test/tint/buffer/storage/types/vec2.wgsl
@@ -4,7 +4,7 @@
 @group(0) @binding(1)
 var<storage, read_write> out : vec2<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/vec2.wgsl.expected.wgsl b/test/tint/buffer/storage/types/vec2.wgsl.expected.wgsl
index 806600b..a129911 100644
--- a/test/tint/buffer/storage/types/vec2.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/types/vec2.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(0) @binding(1) var<storage, read_write> out : vec2<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/vec3.wgsl b/test/tint/buffer/storage/types/vec3.wgsl
index 38e25d0..d7872e4 100644
--- a/test/tint/buffer/storage/types/vec3.wgsl
+++ b/test/tint/buffer/storage/types/vec3.wgsl
@@ -4,7 +4,7 @@
 @group(0) @binding(1)
 var<storage, read_write> out : vec3<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/vec3.wgsl.expected.wgsl b/test/tint/buffer/storage/types/vec3.wgsl.expected.wgsl
index a3fcf3a..a476b2f 100644
--- a/test/tint/buffer/storage/types/vec3.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/types/vec3.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(0) @binding(1) var<storage, read_write> out : vec3<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/vec4.wgsl b/test/tint/buffer/storage/types/vec4.wgsl
index b9bf279..c5041b6 100644
--- a/test/tint/buffer/storage/types/vec4.wgsl
+++ b/test/tint/buffer/storage/types/vec4.wgsl
@@ -4,7 +4,7 @@
 @group(0) @binding(1)
 var<storage, read_write> out : vec4<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/storage/types/vec4.wgsl.expected.wgsl b/test/tint/buffer/storage/types/vec4.wgsl.expected.wgsl
index 22065c7..5450df4 100644
--- a/test/tint/buffer/storage/types/vec4.wgsl.expected.wgsl
+++ b/test/tint/buffer/storage/types/vec4.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(0) @binding(1) var<storage, read_write> out : vec4<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   out = in;
 }
diff --git a/test/tint/buffer/uniform/dynamic_index/read.wgsl b/test/tint/buffer/uniform/dynamic_index/read.wgsl
index 6057810..05d1083 100644
--- a/test/tint/buffer/uniform/dynamic_index/read.wgsl
+++ b/test/tint/buffer/uniform/dynamic_index/read.wgsl
@@ -18,7 +18,7 @@
 
 @binding(0) @group(0) var<uniform> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@builtin(local_invocation_index) idx : u32) {
     let a = s.arr[idx].a;
     let b = s.arr[idx].b;
diff --git a/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.wgsl b/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.wgsl
index 486b22b..8c8e684 100644
--- a/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.wgsl
+++ b/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.wgsl
@@ -20,7 +20,7 @@
 
 @binding(0) @group(0) var<uniform> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@builtin(local_invocation_index) idx : u32) {
   let a = s.arr[idx].a;
   let b = s.arr[idx].b;
diff --git a/test/tint/buffer/uniform/static_index/read.wgsl b/test/tint/buffer/uniform/static_index/read.wgsl
index 85552f3..ed6e7dc 100644
--- a/test/tint/buffer/uniform/static_index/read.wgsl
+++ b/test/tint/buffer/uniform/static_index/read.wgsl
@@ -19,7 +19,7 @@
 
 @binding(0) @group(0) var<uniform> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     let a = s.a;
     let b = s.b;
diff --git a/test/tint/buffer/uniform/static_index/read.wgsl.expected.wgsl b/test/tint/buffer/uniform/static_index/read.wgsl.expected.wgsl
index eb0a0f1..3c5c891 100644
--- a/test/tint/buffer/uniform/static_index/read.wgsl.expected.wgsl
+++ b/test/tint/buffer/uniform/static_index/read.wgsl.expected.wgsl
@@ -22,7 +22,7 @@
 
 @binding(0) @group(0) var<uniform> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let a = s.a;
   let b = s.b;
diff --git a/test/tint/buffer/uniform/types/array.wgsl b/test/tint/buffer/uniform/types/array.wgsl
index 01a7138..90a400c 100644
--- a/test/tint/buffer/uniform/types/array.wgsl
+++ b/test/tint/buffer/uniform/types/array.wgsl
@@ -1,7 +1,7 @@
 @group(0) @binding(0)
 var<uniform> u : array<vec4<f32>, 4>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/array.wgsl.expected.wgsl b/test/tint/buffer/uniform/types/array.wgsl.expected.wgsl
index 43d91c8..8c2b5f0 100644
--- a/test/tint/buffer/uniform/types/array.wgsl.expected.wgsl
+++ b/test/tint/buffer/uniform/types/array.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<uniform> u : array<vec4<f32>, 4>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/f32.wgsl b/test/tint/buffer/uniform/types/f32.wgsl
index bd785bb..5826ac7 100644
--- a/test/tint/buffer/uniform/types/f32.wgsl
+++ b/test/tint/buffer/uniform/types/f32.wgsl
@@ -1,7 +1,7 @@
 @group(0) @binding(0)
 var<uniform> u : f32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/f32.wgsl.expected.wgsl b/test/tint/buffer/uniform/types/f32.wgsl.expected.wgsl
index ef2fa27..967dc09 100644
--- a/test/tint/buffer/uniform/types/f32.wgsl.expected.wgsl
+++ b/test/tint/buffer/uniform/types/f32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<uniform> u : f32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/i32.wgsl b/test/tint/buffer/uniform/types/i32.wgsl
index 9d6e5d4..ce51ee8 100644
--- a/test/tint/buffer/uniform/types/i32.wgsl
+++ b/test/tint/buffer/uniform/types/i32.wgsl
@@ -1,7 +1,7 @@
 @group(0) @binding(0)
 var<uniform> u : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/i32.wgsl.expected.wgsl b/test/tint/buffer/uniform/types/i32.wgsl.expected.wgsl
index 794f018..5862e44 100644
--- a/test/tint/buffer/uniform/types/i32.wgsl.expected.wgsl
+++ b/test/tint/buffer/uniform/types/i32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<uniform> u : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/mat2x2.wgsl b/test/tint/buffer/uniform/types/mat2x2.wgsl
index 5522acc..cedb1d6 100644
--- a/test/tint/buffer/uniform/types/mat2x2.wgsl
+++ b/test/tint/buffer/uniform/types/mat2x2.wgsl
@@ -1,7 +1,7 @@
 @group(0) @binding(0)
 var<uniform> u : mat2x2<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/mat2x2.wgsl.expected.wgsl b/test/tint/buffer/uniform/types/mat2x2.wgsl.expected.wgsl
index 49ce708..815d3d3 100644
--- a/test/tint/buffer/uniform/types/mat2x2.wgsl.expected.wgsl
+++ b/test/tint/buffer/uniform/types/mat2x2.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<uniform> u : mat2x2<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/mat2x3.wgsl b/test/tint/buffer/uniform/types/mat2x3.wgsl
index 5179d28..4ded5c4 100644
--- a/test/tint/buffer/uniform/types/mat2x3.wgsl
+++ b/test/tint/buffer/uniform/types/mat2x3.wgsl
@@ -1,7 +1,7 @@
 @group(0) @binding(0)
 var<uniform> u : mat2x3<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/mat2x3.wgsl.expected.wgsl b/test/tint/buffer/uniform/types/mat2x3.wgsl.expected.wgsl
index e7f0073..58b2268 100644
--- a/test/tint/buffer/uniform/types/mat2x3.wgsl.expected.wgsl
+++ b/test/tint/buffer/uniform/types/mat2x3.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<uniform> u : mat2x3<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/mat3x2.wgsl b/test/tint/buffer/uniform/types/mat3x2.wgsl
index 0a308b4..2f6d0b7 100644
--- a/test/tint/buffer/uniform/types/mat3x2.wgsl
+++ b/test/tint/buffer/uniform/types/mat3x2.wgsl
@@ -1,7 +1,7 @@
 @group(0) @binding(0)
 var<uniform> u : mat3x2<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/mat3x2.wgsl.expected.wgsl b/test/tint/buffer/uniform/types/mat3x2.wgsl.expected.wgsl
index 874cf97..f1c0ae0 100644
--- a/test/tint/buffer/uniform/types/mat3x2.wgsl.expected.wgsl
+++ b/test/tint/buffer/uniform/types/mat3x2.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<uniform> u : mat3x2<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/mat4x4.wgsl b/test/tint/buffer/uniform/types/mat4x4.wgsl
index a9bf3ca..7b587af 100644
--- a/test/tint/buffer/uniform/types/mat4x4.wgsl
+++ b/test/tint/buffer/uniform/types/mat4x4.wgsl
@@ -1,7 +1,7 @@
 @group(0) @binding(0)
 var<uniform> u : mat4x4<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/mat4x4.wgsl.expected.wgsl b/test/tint/buffer/uniform/types/mat4x4.wgsl.expected.wgsl
index aa2f714..ac47c7d 100644
--- a/test/tint/buffer/uniform/types/mat4x4.wgsl.expected.wgsl
+++ b/test/tint/buffer/uniform/types/mat4x4.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<uniform> u : mat4x4<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/struct.wgsl b/test/tint/buffer/uniform/types/struct.wgsl
index 91dbeb1..c50edb3 100644
--- a/test/tint/buffer/uniform/types/struct.wgsl
+++ b/test/tint/buffer/uniform/types/struct.wgsl
@@ -8,7 +8,7 @@
 @group(0) @binding(0)
 var<uniform> u : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/struct.wgsl.expected.wgsl b/test/tint/buffer/uniform/types/struct.wgsl.expected.wgsl
index 745979d..552be2c 100644
--- a/test/tint/buffer/uniform/types/struct.wgsl.expected.wgsl
+++ b/test/tint/buffer/uniform/types/struct.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
 
 @group(0) @binding(0) var<uniform> u : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/u32.wgsl b/test/tint/buffer/uniform/types/u32.wgsl
index 3afc920..ffccee1 100644
--- a/test/tint/buffer/uniform/types/u32.wgsl
+++ b/test/tint/buffer/uniform/types/u32.wgsl
@@ -1,7 +1,7 @@
 @group(0) @binding(0)
 var<uniform> u : u32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/u32.wgsl.expected.wgsl b/test/tint/buffer/uniform/types/u32.wgsl.expected.wgsl
index d5d7e7f..ab6b39f 100644
--- a/test/tint/buffer/uniform/types/u32.wgsl.expected.wgsl
+++ b/test/tint/buffer/uniform/types/u32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<uniform> u : u32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/vec2.wgsl b/test/tint/buffer/uniform/types/vec2.wgsl
index 89e8889..d86481f 100644
--- a/test/tint/buffer/uniform/types/vec2.wgsl
+++ b/test/tint/buffer/uniform/types/vec2.wgsl
@@ -1,7 +1,7 @@
 @group(0) @binding(0)
 var<uniform> u : vec2<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/vec2.wgsl.expected.wgsl b/test/tint/buffer/uniform/types/vec2.wgsl.expected.wgsl
index 44de55f..0aa9b70 100644
--- a/test/tint/buffer/uniform/types/vec2.wgsl.expected.wgsl
+++ b/test/tint/buffer/uniform/types/vec2.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<uniform> u : vec2<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/vec3.wgsl b/test/tint/buffer/uniform/types/vec3.wgsl
index e571c47..60e53df 100644
--- a/test/tint/buffer/uniform/types/vec3.wgsl
+++ b/test/tint/buffer/uniform/types/vec3.wgsl
@@ -1,7 +1,7 @@
 @group(0) @binding(0)
 var<uniform> u : vec3<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/vec3.wgsl.expected.wgsl b/test/tint/buffer/uniform/types/vec3.wgsl.expected.wgsl
index be459f7..07e2102 100644
--- a/test/tint/buffer/uniform/types/vec3.wgsl.expected.wgsl
+++ b/test/tint/buffer/uniform/types/vec3.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<uniform> u : vec3<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/vec4.wgsl b/test/tint/buffer/uniform/types/vec4.wgsl
index f15e971..f3f92cc 100644
--- a/test/tint/buffer/uniform/types/vec4.wgsl
+++ b/test/tint/buffer/uniform/types/vec4.wgsl
@@ -1,7 +1,7 @@
 @group(0) @binding(0)
 var<uniform> u : vec4<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/buffer/uniform/types/vec4.wgsl.expected.wgsl b/test/tint/buffer/uniform/types/vec4.wgsl.expected.wgsl
index 41a4f37..e3a8eb7 100644
--- a/test/tint/buffer/uniform/types/vec4.wgsl.expected.wgsl
+++ b/test/tint/buffer/uniform/types/vec4.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<uniform> u : vec4<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x = u;
 }
diff --git a/test/tint/bug/chromium/1251009.wgsl b/test/tint/bug/chromium/1251009.wgsl
index 436cd2f..7d4a346 100644
--- a/test/tint/bug/chromium/1251009.wgsl
+++ b/test/tint/bug/chromium/1251009.wgsl
@@ -7,7 +7,7 @@
   @location(3) loc3 : vec4<f32>,
 };
 
-@stage(vertex)
+@vertex
 fn main(
   inputs0 : VertexInputs0,
   @location(1) loc1 : u32,
diff --git a/test/tint/bug/chromium/1251009.wgsl.expected.wgsl b/test/tint/bug/chromium/1251009.wgsl.expected.wgsl
index 745618e..17b12ce 100644
--- a/test/tint/bug/chromium/1251009.wgsl.expected.wgsl
+++ b/test/tint/bug/chromium/1251009.wgsl.expected.wgsl
@@ -12,7 +12,7 @@
   loc3 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(inputs0 : VertexInputs0, @location(1) loc1 : u32, @builtin(instance_index) instance_index : u32, inputs1 : VertexInputs1) -> @builtin(position) vec4<f32> {
   let foo : u32 = (inputs0.vertex_index + instance_index);
   return vec4<f32>();
diff --git a/test/tint/bug/chromium/1273230.wgsl b/test/tint/bug/chromium/1273230.wgsl
index 4fcf8f9..674edaf 100644
--- a/test/tint/bug/chromium/1273230.wgsl
+++ b/test/tint/bug/chromium/1273230.wgsl
@@ -101,7 +101,7 @@
   var g55 = atomicLoad(&(LUT.values[0]));
 }
 
-@stage(compute) @workgroup_size(128)
+@compute @workgroup_size(128)
 fn main_count(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   var triangleIndex = GlobalInvocationID.x;
   if ((triangleIndex >= uniforms.numTriangles)) {
diff --git a/test/tint/bug/chromium/1273230.wgsl.expected.wgsl b/test/tint/bug/chromium/1273230.wgsl.expected.wgsl
index 165ae07..80a32cd 100644
--- a/test/tint/bug/chromium/1273230.wgsl.expected.wgsl
+++ b/test/tint/bug/chromium/1273230.wgsl.expected.wgsl
@@ -98,7 +98,7 @@
   var g55 = atomicLoad(&(LUT.values[0]));
 }
 
-@stage(compute) @workgroup_size(128)
+@compute @workgroup_size(128)
 fn main_count(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   var triangleIndex = GlobalInvocationID.x;
   if ((triangleIndex >= uniforms.numTriangles)) {
diff --git a/test/tint/bug/chromium/1290107.wgsl b/test/tint/bug/chromium/1290107.wgsl
index 22899ad..de69aad 100644
--- a/test/tint/bug/chromium/1290107.wgsl
+++ b/test/tint/bug/chromium/1290107.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(0) var<storage, read> arr : array<S>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let len = arrayLength(&arr);
 }
diff --git a/test/tint/bug/chromium/1290107.wgsl.expected.wgsl b/test/tint/bug/chromium/1290107.wgsl.expected.wgsl
index 99d1abb..24eb88f 100644
--- a/test/tint/bug/chromium/1290107.wgsl.expected.wgsl
+++ b/test/tint/bug/chromium/1290107.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(0) var<storage, read> arr : array<S>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let len = arrayLength(&(arr));
 }
diff --git a/test/tint/bug/dawn/947.wgsl b/test/tint/bug/dawn/947.wgsl
index f89542f..5c5fa77 100644
--- a/test/tint/bug/dawn/947.wgsl
+++ b/test/tint/bug/dawn/947.wgsl
@@ -9,7 +9,7 @@
     @builtin(position) position : vec4<f32>,
 };
 
-@stage(vertex) fn vs_main(
+@vertex fn vs_main(
     @builtin(vertex_index) VertexIndex : u32
 ) -> VertexOutputs {
     var texcoord = array<vec2<f32>, 3>(
@@ -46,7 +46,7 @@
 @binding(1) @group(0) var mySampler: sampler;
 @binding(2) @group(0) var myTexture: texture_2d<f32>;
 
-@stage(fragment) fn fs_main(
+@fragment fn fs_main(
     @location(0) texcoord : vec2<f32>
 ) -> @location(0) vec4<f32> {
     // Clamp the texcoord and discard the out-of-bound pixels.
diff --git a/test/tint/bug/dawn/947.wgsl.expected.wgsl b/test/tint/bug/dawn/947.wgsl.expected.wgsl
index 04d34b0..69590c5 100644
--- a/test/tint/bug/dawn/947.wgsl.expected.wgsl
+++ b/test/tint/bug/dawn/947.wgsl.expected.wgsl
@@ -24,7 +24,7 @@
   position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn vs_main(@builtin(vertex_index) VertexIndex : u32) -> VertexOutputs {
   var texcoord = array<vec2<f32>, 3>(vec2<f32>(-0.5, 0.0), vec2<f32>(1.5, 0.0), vec2<f32>(0.5, 2.0));
   var output : VertexOutputs;
@@ -42,7 +42,7 @@
 
 @binding(2) @group(0) var myTexture : texture_2d<f32>;
 
-@stage(fragment)
+@fragment
 fn fs_main(@location(0) texcoord : vec2<f32>) -> @location(0) vec4<f32> {
   var clampedTexcoord = clamp(texcoord, vec2<f32>(0.0, 0.0), vec2<f32>(1.0, 1.0));
   if (!(all((clampedTexcoord == texcoord)))) {
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl
index 549d267..089d82b 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl
@@ -10,7 +10,7 @@
 };
 @group(0) @binding(1) var<storage, read_write> result: Result;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var s : S;
   result.out = s.data[ubo.dynamic_idx];
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.wgsl
index 74fe168..0d74328 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.wgsl
@@ -14,7 +14,7 @@
 
 @group(0) @binding(1) var<storage, read_write> result : Result;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var s : S;
   result.out = s.data[ubo.dynamic_idx];
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl
index 28cf032..838c01f 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl
@@ -12,7 +12,7 @@
 
 var<private> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   result.out = s.data[ubo.dynamic_idx];
 }
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.wgsl
index e8ecf94..53ae23a 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.wgsl
@@ -16,7 +16,7 @@
 
 var<private> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   result.out = s.data[ubo.dynamic_idx];
 }
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl
index c665d8e..eed6688 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl
@@ -12,7 +12,7 @@
 };
 @group(0) @binding(1) var<storage, read_write> ssbo: SSBO;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   result.out = ssbo.data[ubo.dynamic_idx];
 }
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.wgsl
index 82b357d..537156d 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.wgsl
@@ -16,7 +16,7 @@
 
 @group(0) @binding(1) var<storage, read_write> ssbo : SSBO;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   result.out = ssbo.data[ubo.dynamic_idx];
 }
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl
index 0201af5..c5140a7 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl
@@ -8,7 +8,7 @@
 };
 @group(0) @binding(2) var<storage, read_write> result: Result;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   result.out = ubo.data[ubo.dynamic_idx].x;
 }
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.wgsl
index 1a0f804..d1903e3 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.wgsl
@@ -11,7 +11,7 @@
 
 @group(0) @binding(2) var<storage, read_write> result : Result;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   result.out = ubo.data[ubo.dynamic_idx].x;
 }
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl
index 44d7f1e..210adfe 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl
@@ -12,7 +12,7 @@
 
 var<workgroup> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   result.out = s.data[ubo.dynamic_idx];
 }
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.wgsl
index 35d672a..c49cc40 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.wgsl
@@ -16,7 +16,7 @@
 
 var<workgroup> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   result.out = s.data[ubo.dynamic_idx];
 }
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl
index f8b1cbb..b19ea53 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl
@@ -10,7 +10,7 @@
 };
 @group(0) @binding(1) var<storage, read_write> result: Result;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var s : S;
   s.data[ubo.dynamic_idx] = 1;
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.wgsl
index 4d3b911..4c2070d 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.wgsl
@@ -14,7 +14,7 @@
 
 @group(0) @binding(1) var<storage, read_write> result : Result;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var s : S;
   s.data[ubo.dynamic_idx] = 1;
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl
index 4fcf160..1586325 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl
@@ -14,7 +14,7 @@
   (*p).data[ubo.dynamic_idx] = 1;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var s : S;
   x(&s);
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.wgsl
index 79b2222..85c61a5 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.wgsl
@@ -18,7 +18,7 @@
   (*(p)).data[ubo.dynamic_idx] = 1;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var s : S;
   x(&(s));
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl
index c86094a..a6e4f17 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl
@@ -12,7 +12,7 @@
 
 var<private> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   s.data[ubo.dynamic_idx] = 1;
   result.out = s.data[3];
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.wgsl
index 31d7c74..5505a8b 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.wgsl
@@ -16,7 +16,7 @@
 
 var<private> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   s.data[ubo.dynamic_idx] = 1;
   result.out = s.data[3];
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl
index 94329c6..67706cd 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl
@@ -16,7 +16,7 @@
   (*p).data[ubo.dynamic_idx] = 1;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   x(&s);
   result.out = s.data[3];
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.wgsl
index 9724ec0..21d815f 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.wgsl
@@ -20,7 +20,7 @@
   (*(p)).data[ubo.dynamic_idx] = 1;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   x(&(s));
   result.out = s.data[3];
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl
index f0204ba..9429cf6 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl
@@ -12,7 +12,7 @@
 };
 @group(0) @binding(1) var<storage, read_write> ssbo: SSBO;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   ssbo.data[ubo.dynamic_idx] = 1;
   result.out = ssbo.data[3];
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.wgsl
index 942aea7..aa07c77 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.wgsl
@@ -16,7 +16,7 @@
 
 @group(0) @binding(1) var<storage, read_write> ssbo : SSBO;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   ssbo.data[ubo.dynamic_idx] = 1;
   result.out = ssbo.data[3];
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl
index 8aa0ab3..08bacaa 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl
@@ -12,7 +12,7 @@
 
 var<workgroup> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   s.data[ubo.dynamic_idx] = 1;
   result.out = s.data[3];
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.wgsl b/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.wgsl
index 59c68f2..0bdf4ac 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.wgsl
@@ -16,7 +16,7 @@
 
 var<workgroup> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   s.data[ubo.dynamic_idx] = 1;
   result.out = s.data[3];
diff --git a/test/tint/bug/fxc/gradient_in_varying_loop/1112.wgsl b/test/tint/bug/fxc/gradient_in_varying_loop/1112.wgsl
index a18d525..dab8b71 100644
--- a/test/tint/bug/fxc/gradient_in_varying_loop/1112.wgsl
+++ b/test/tint/bug/fxc/gradient_in_varying_loop/1112.wgsl
@@ -3,7 +3,7 @@
 @group(0) @binding(1) var randomTexture: texture_2d<f32>;
 @group(0) @binding(2) var depthTexture: texture_2d<f32>;
 
-@stage(fragment)
+@fragment
 fn main(@location(0) vUV : vec2<f32>) -> @location(0) vec4<f32> {
     let random: vec3<f32> = textureSample(randomTexture, Sampler, vUV).rgb;
 
diff --git a/test/tint/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.wgsl b/test/tint/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.wgsl
index 6b76e79..1c743a4 100644
--- a/test/tint/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.wgsl
@@ -16,7 +16,7 @@
 
 @group(0) @binding(2) var depthTexture : texture_2d<f32>;
 
-@stage(fragment)
+@fragment
 fn main(@location(0) vUV : vec2<f32>) -> @location(0) vec4<f32> {
   let random : vec3<f32> = textureSample(randomTexture, Sampler, vUV).rgb;
   var i = 0;
diff --git a/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl
index 4ac0a51..7008e78 100644
--- a/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl
+++ b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl
@@ -16,7 +16,7 @@
 @group(1) @binding(3) var<storage, read> particles : Particles;
 @group(1) @binding(4) var<uniform> sim : Simulation;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var particle = particles.p[0];
   particle.position[sim.i] = particle.position[sim.i];
diff --git a/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.wgsl b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.wgsl
index 25f718b..d27f556 100644
--- a/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.wgsl
@@ -17,7 +17,7 @@
 
 @group(1) @binding(4) var<uniform> sim : Simulation;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var particle = particles.p[0];
   particle.position[sim.i] = particle.position[sim.i];
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl
index 2e7870b..934ac92 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl
@@ -5,7 +5,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var m1 : mat2x4<f32>;
   m1[uniforms.i][0] = 1.0;
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.wgsl
index 03abbbb..b3f2644 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var m1 : mat2x4<f32>;
   m1[uniforms.i][0] = 1.0;
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl
index 1167892..8384885 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl
@@ -5,7 +5,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var m1 : mat2x4<f32>;
   m1[uniforms.i][uniforms.j] = 1.0;
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.wgsl
index 76c2e48..2d7f645 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var m1 : mat2x4<f32>;
   m1[uniforms.i][uniforms.j] = 1.0;
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl
index 138c9a7..15112c5 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl
@@ -7,7 +7,7 @@
 
 var<private> m1 : mat2x4<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   m1[0][uniforms.j] = 1.0;
 }
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.wgsl
index f588147..24e47ab 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.wgsl
@@ -7,7 +7,7 @@
 
 var<private> m1 : mat2x4<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   m1[0][uniforms.j] = 1.0;
 }
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl
index e531d92..4e51c4e 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl
@@ -5,7 +5,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var m1 : mat2x4<f32>;
   m1[uniforms.i] = vec4<f32>(1.0);
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.wgsl
index d03625d..fa5e112 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var m1 : mat2x4<f32>;
   m1[uniforms.i] = vec4<f32>(1.0);
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl
index 0ec75d9..8d866e9 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl
@@ -7,7 +7,7 @@
 
 var<private> m1 : mat2x4<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   m1[uniforms.i][0] = 1.0;
 }
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.wgsl
index 4f4c665..ec0a575 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.wgsl
@@ -7,7 +7,7 @@
 
 var<private> m1 : mat2x4<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   m1[uniforms.i][0] = 1.0;
 }
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl
index 89630b7..324ba03 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl
@@ -7,7 +7,7 @@
 
 var<private> m1 : mat2x4<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   m1[uniforms.i][uniforms.j] = 1.0;
 }
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.wgsl
index 931ae51..a231286 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.wgsl
@@ -7,7 +7,7 @@
 
 var<private> m1 : mat2x4<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   m1[uniforms.i][uniforms.j] = 1.0;
 }
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl
index 138c9a7..15112c5 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl
@@ -7,7 +7,7 @@
 
 var<private> m1 : mat2x4<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   m1[0][uniforms.j] = 1.0;
 }
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.wgsl
index f588147..24e47ab 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.wgsl
@@ -7,7 +7,7 @@
 
 var<private> m1 : mat2x4<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   m1[0][uniforms.j] = 1.0;
 }
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl
index 31cee85..0c80983 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl
@@ -7,7 +7,7 @@
 
 var<private> m1 : mat2x4<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   m1[uniforms.i] = vec4<f32>(1.0);
 }
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.wgsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.wgsl
index 913ff02..7ca896f 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.wgsl
@@ -7,7 +7,7 @@
 
 var<private> m1 : mat2x4<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   m1[uniforms.i] = vec4<f32>(1.0);
 }
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl
index 82fdac2..9dd26c7 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl
@@ -12,7 +12,7 @@
   }
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main() {
 
   for (var i : i32 = 0; i < 2; i = i + 1) {
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.wgsl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.wgsl
index be75b18..4bac1fd 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.wgsl
@@ -15,7 +15,7 @@
   }
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main() {
   for(var i : i32 = 0; (i < 2); i = (i + 1)) {
     foo();
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl
index f7d64cd..02b5ab0 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl
@@ -11,7 +11,7 @@
   v2b[i] = true;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main() {
 
   for (var i : i32 = 0; i < 2; i = i + 1) {
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.wgsl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.wgsl
index 8b055f2..84a1ba7 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.wgsl
@@ -14,7 +14,7 @@
   v2b[i] = true;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main() {
   for(var i : i32 = 0; (i < 2); i = (i + 1)) {
     foo();
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl
index 51460eb..d382062 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main() {
   var v2f : vec2<f32>;
   var v3f : vec3<f32>;
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl.expected.wgsl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl.expected.wgsl
index 45acb5d..8c4a734 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main() {
   var v2f : vec2<f32>;
   var v3f : vec3<f32>;
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl
index beeaa2c..eda040d 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main() {
   var v2f : vec2<f32>;
   var v2f_2 : vec2<f32>;
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl.expected.wgsl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl.expected.wgsl
index 659db49..2776a18 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main() {
   var v2f : vec2<f32>;
   var v2f_2 : vec2<f32>;
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl
index c48c1a8..56f5adc 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main() {
   var v2f : vec2<f32>;
   var v3f : vec3<f32>;
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl.expected.wgsl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl.expected.wgsl
index 01115a6..b59e49e 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main() {
   var v2f : vec2<f32>;
   var v3f : vec3<f32>;
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/no_loop.wgsl b/test/tint/bug/fxc/vector_assignment_in_loop/no_loop.wgsl
index 2ff69eb..63bf302 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/no_loop.wgsl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/no_loop.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main() {
   var v2f : vec2<f32>;
   var v3f : vec3<f32>;
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/no_loop.wgsl.expected.wgsl b/test/tint/bug/fxc/vector_assignment_in_loop/no_loop.wgsl.expected.wgsl
index 72a4494..5013baf 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/no_loop.wgsl.expected.wgsl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/no_loop.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main() {
   var v2f : vec2<f32>;
   var v3f : vec3<f32>;
diff --git a/test/tint/bug/tint/1046.wgsl b/test/tint/bug/tint/1046.wgsl
index 4acfe95..56d191f 100644
--- a/test/tint/bug/tint/1046.wgsl
+++ b/test/tint/bug/tint/1046.wgsl
@@ -63,7 +63,7 @@
     return color;
 };
 
-@stage(fragment)
+@fragment
 fn main(fragment : FragmentInput) -> FragmentOutput {
 
     var output : FragmentOutput;
diff --git a/test/tint/bug/tint/1046.wgsl.expected.wgsl b/test/tint/bug/tint/1046.wgsl.expected.wgsl
index 430eb9d..56a8c8e 100644
--- a/test/tint/bug/tint/1046.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1046.wgsl.expected.wgsl
@@ -55,7 +55,7 @@
   return color;
 }
 
-@stage(fragment)
+@fragment
 fn main(fragment : FragmentInput) -> FragmentOutput {
   var output : FragmentOutput;
   output.color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
diff --git a/test/tint/bug/tint/1064.wgsl b/test/tint/bug/tint/1064.wgsl
index 4ab5117..db344ea 100644
--- a/test/tint/bug/tint/1064.wgsl
+++ b/test/tint/bug/tint/1064.wgsl
@@ -1,4 +1,4 @@
-@stage(fragment)
+@fragment
 fn main() {
   loop {
     if (false) {
diff --git a/test/tint/bug/tint/1064.wgsl.expected.wgsl b/test/tint/bug/tint/1064.wgsl.expected.wgsl
index 581cb90..2fe72ba 100644
--- a/test/tint/bug/tint/1064.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1064.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(fragment)
+@fragment
 fn main() {
   loop {
     if (false) {
diff --git a/test/tint/bug/tint/1076.wgsl b/test/tint/bug/tint/1076.wgsl
index 4ce9001..c407740 100644
--- a/test/tint/bug/tint/1076.wgsl
+++ b/test/tint/bug/tint/1076.wgsl
@@ -3,7 +3,7 @@
   @builtin(sample_mask) mask : u32,
 };
 
-@stage(fragment)
+@fragment
 fn main(in : FragIn, @location(1) b : f32) -> FragIn {
   if (in.mask == 0u) {
     return in;
diff --git a/test/tint/bug/tint/1076.wgsl.expected.wgsl b/test/tint/bug/tint/1076.wgsl.expected.wgsl
index 716cb91..0a21df0 100644
--- a/test/tint/bug/tint/1076.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1076.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   mask : u32,
 }
 
-@stage(fragment)
+@fragment
 fn main(in : FragIn, @location(1) b : f32) -> FragIn {
   if ((in.mask == 0u)) {
     return in;
diff --git a/test/tint/bug/tint/1081.wgsl b/test/tint/bug/tint/1081.wgsl
index 6d339a8..14ba2ed 100644
--- a/test/tint/bug/tint/1081.wgsl
+++ b/test/tint/bug/tint/1081.wgsl
@@ -5,7 +5,7 @@
   return x;
 }
 
-@stage(fragment)
+@fragment
 fn main(@location(1) @interpolate(flat) x: vec3<i32>) -> @location(2) i32 {
   var y = x.x;
   loop {
diff --git a/test/tint/bug/tint/1081.wgsl.expected.wgsl b/test/tint/bug/tint/1081.wgsl.expected.wgsl
index 3f7cc7a..61b0568 100644
--- a/test/tint/bug/tint/1081.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1081.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   return x;
 }
 
-@stage(fragment)
+@fragment
 fn main(@location(1) @interpolate(flat) x : vec3<i32>) -> @location(2) i32 {
   var y = x.x;
   loop {
diff --git a/test/tint/bug/tint/1083.wgsl b/test/tint/bug/tint/1083.wgsl
index 12e985f..046d356 100644
--- a/test/tint/bug/tint/1083.wgsl
+++ b/test/tint/bug/tint/1083.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 0;
diff --git a/test/tint/bug/tint/1083.wgsl.expected.wgsl b/test/tint/bug/tint/1083.wgsl.expected.wgsl
index 4d2024c..b664e4c 100644
--- a/test/tint/bug/tint/1083.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1083.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 0;
diff --git a/test/tint/bug/tint/1086.wgsl b/test/tint/bug/tint/1086.wgsl
index a5c2982..0c2e0fe 100644
--- a/test/tint/bug/tint/1086.wgsl
+++ b/test/tint/bug/tint/1086.wgsl
@@ -8,7 +8,7 @@
   x(&v);
 }
 
-@stage(fragment)
+@fragment
 fn f() {
   g();
 }
diff --git a/test/tint/bug/tint/1086.wgsl.expected.wgsl b/test/tint/bug/tint/1086.wgsl.expected.wgsl
index 9c7a8fc..f8e4bea 100644
--- a/test/tint/bug/tint/1086.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1086.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
   x(&(v));
 }
 
-@stage(fragment)
+@fragment
 fn f() {
   g();
 }
diff --git a/test/tint/bug/tint/1088.spvasm.expected.wgsl b/test/tint/bug/tint/1088.spvasm.expected.wgsl
index 23899cc..74fb32d 100644
--- a/test/tint/bug/tint/1088.spvasm.expected.wgsl
+++ b/test/tint/bug/tint/1088.spvasm.expected.wgsl
@@ -60,7 +60,7 @@
   vUV_1 : vec2<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) position_param : vec3<f32>, @location(2) uv_param : vec2<f32>, @location(1) normal_param : vec3<f32>) -> main_out {
   position = position_param;
   uv = uv_param;
diff --git a/test/tint/bug/tint/1113.wgsl b/test/tint/bug/tint/1113.wgsl
index 1b38021..e1c2ce8 100644
--- a/test/tint/bug/tint/1113.wgsl
+++ b/test/tint/bug/tint/1113.wgsl
@@ -95,7 +95,7 @@
 
 }
 
-@stage(compute) @workgroup_size(128)
+@compute @workgroup_size(128)
 fn main_count(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
 
     var triangleIndex = GlobalInvocationID.x;
@@ -132,7 +132,7 @@
 
 }
 
-@stage(compute) @workgroup_size(128)
+@compute @workgroup_size(128)
 fn main_create_lut(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
 
     var voxelIndex = GlobalInvocationID.x;
@@ -155,7 +155,7 @@
 
 }
 
-@stage(compute) @workgroup_size(128)
+@compute @workgroup_size(128)
 fn main_sort_triangles(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
 
     var triangleIndex = GlobalInvocationID.x;
diff --git a/test/tint/bug/tint/1113.wgsl.expected.wgsl b/test/tint/bug/tint/1113.wgsl.expected.wgsl
index 187c752..1d69ccd 100644
--- a/test/tint/bug/tint/1113.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1113.wgsl.expected.wgsl
@@ -92,7 +92,7 @@
   var g55 = atomicLoad(&(LUT.values[0]));
 }
 
-@stage(compute) @workgroup_size(128)
+@compute @workgroup_size(128)
 fn main_count(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   var triangleIndex = GlobalInvocationID.x;
   if ((triangleIndex >= uniforms.numTriangles)) {
@@ -117,7 +117,7 @@
   }
 }
 
-@stage(compute) @workgroup_size(128)
+@compute @workgroup_size(128)
 fn main_create_lut(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   var voxelIndex = GlobalInvocationID.x;
   doIgnore();
@@ -133,7 +133,7 @@
   atomicStore(&(LUT.values[voxelIndex]), offset);
 }
 
-@stage(compute) @workgroup_size(128)
+@compute @workgroup_size(128)
 fn main_sort_triangles(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   var triangleIndex = GlobalInvocationID.x;
   doIgnore();
diff --git a/test/tint/bug/tint/1118.wgsl b/test/tint/bug/tint/1118.wgsl
index bd59a5f..67703f9 100644
--- a/test/tint/bug/tint/1118.wgsl
+++ b/test/tint/bug/tint/1118.wgsl
@@ -108,7 +108,7 @@
   glFragColor_1 : vec4<f32>,
 };
 
-@stage(fragment)
+@fragment
 fn main(@location(2) fClipDistance3_param : f32, @location(3) fClipDistance4_param : f32) -> main_out {
   fClipDistance3 = fClipDistance3_param;
   fClipDistance4 = fClipDistance4_param;
diff --git a/test/tint/bug/tint/1118.wgsl.expected.wgsl b/test/tint/bug/tint/1118.wgsl.expected.wgsl
index 87f5948..a82080a 100644
--- a/test/tint/bug/tint/1118.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1118.wgsl.expected.wgsl
@@ -120,7 +120,7 @@
   glFragColor_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@location(2) fClipDistance3_param : f32, @location(3) fClipDistance4_param : f32) -> main_out {
   fClipDistance3 = fClipDistance3_param;
   fClipDistance4 = fClipDistance4_param;
diff --git a/test/tint/bug/tint/1121.wgsl b/test/tint/bug/tint/1121.wgsl
index 7e5cfd0..fa82219 100644
--- a/test/tint/bug/tint/1121.wgsl
+++ b/test/tint/bug/tint/1121.wgsl
@@ -44,7 +44,7 @@
     fullScreenSize : vec4<f32>,    // width, height
 };
 @group(3) @binding(0) var<uniform> uniforms: Uniforms;
-@stage(compute) @workgroup_size(64, 1, 1)
+@compute @workgroup_size(64, 1, 1)
 fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
     var index = GlobalInvocationID.x;
     if (index >= config.numLights) {
diff --git a/test/tint/bug/tint/1121.wgsl.expected.wgsl b/test/tint/bug/tint/1121.wgsl.expected.wgsl
index 9207245..bea6cab 100644
--- a/test/tint/bug/tint/1121.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1121.wgsl.expected.wgsl
@@ -42,7 +42,7 @@
 
 @group(3) @binding(0) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(64, 1, 1)
+@compute @workgroup_size(64, 1, 1)
 fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   var index = GlobalInvocationID.x;
   if ((index >= config.numLights)) {
diff --git a/test/tint/bug/tint/1321.wgsl b/test/tint/bug/tint/1321.wgsl
index 1ab9e23..b2ec2f7 100644
--- a/test/tint/bug/tint/1321.wgsl
+++ b/test/tint/bug/tint/1321.wgsl
@@ -2,7 +2,7 @@
   return 1;
 }
 
-@stage(fragment)
+@fragment
 fn main() {
   var arr = array<f32, 4>();
   for (let a = &arr[foo()]; ;) {
diff --git a/test/tint/bug/tint/1321.wgsl.expected.wgsl b/test/tint/bug/tint/1321.wgsl.expected.wgsl
index 2117393..a6d0d98 100644
--- a/test/tint/bug/tint/1321.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1321.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   return 1;
 }
 
-@stage(fragment)
+@fragment
 fn main() {
   var arr = array<f32, 4>();
   for(let a = &(arr[foo()]); ; ) {
diff --git a/test/tint/bug/tint/1332.wgsl b/test/tint/bug/tint/1332.wgsl
index 985fccb..d83c3ab 100644
--- a/test/tint/bug/tint/1332.wgsl
+++ b/test/tint/bug/tint/1332.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
 	let a = 1.23;
 	var b = max(a, 1.17549435e-38);
diff --git a/test/tint/bug/tint/1332.wgsl.expected.wgsl b/test/tint/bug/tint/1332.wgsl.expected.wgsl
index c0ccd8d..f95540e 100644
--- a/test/tint/bug/tint/1332.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1332.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   let a = 1.230000019;
   var b = max(a, 1.17549435e-38);
diff --git a/test/tint/bug/tint/1369.wgsl b/test/tint/bug/tint/1369.wgsl
index b90b8e3..30e3d01 100644
--- a/test/tint/bug/tint/1369.wgsl
+++ b/test/tint/bug/tint/1369.wgsl
@@ -3,7 +3,7 @@
   return true;
 }
 
-@stage(fragment)
+@fragment
 fn f() {
     var v = call_discard();
     var also_unreachable : bool;
diff --git a/test/tint/bug/tint/1369.wgsl.expected.wgsl b/test/tint/bug/tint/1369.wgsl.expected.wgsl
index 2da3171..818f5a3 100644
--- a/test/tint/bug/tint/1369.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1369.wgsl.expected.wgsl
@@ -11,7 +11,7 @@
   return true;
 }
 
-@stage(fragment)
+@fragment
 fn f() {
   var v = call_discard();
   var also_unreachable : bool;
diff --git a/test/tint/bug/tint/1385.wgsl b/test/tint/bug/tint/1385.wgsl
index 78f402e..9be207e 100644
--- a/test/tint/bug/tint/1385.wgsl
+++ b/test/tint/bug/tint/1385.wgsl
@@ -5,7 +5,7 @@
   return data[0];
 }
 
-@stage(compute) @workgroup_size(16, 16, 1)
+@compute @workgroup_size(16, 16, 1)
 fn main() {
   foo();
 }
diff --git a/test/tint/bug/tint/1385.wgsl.expected.wgsl b/test/tint/bug/tint/1385.wgsl.expected.wgsl
index 3e522fd..f4f5d94 100644
--- a/test/tint/bug/tint/1385.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1385.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   return data[0];
 }
 
-@stage(compute) @workgroup_size(16, 16, 1)
+@compute @workgroup_size(16, 16, 1)
 fn main() {
   foo();
 }
diff --git a/test/tint/bug/tint/1520.spvasm.expected.wgsl b/test/tint/bug/tint/1520.spvasm.expected.wgsl
index 88c4ea4..e3b92b8 100644
--- a/test/tint/bug/tint/1520.spvasm.expected.wgsl
+++ b/test/tint/bug/tint/1520.spvasm.expected.wgsl
@@ -156,7 +156,7 @@
   sk_FragColor_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(front_facing) sk_Clockwise_param : bool, @location(0) vcolor_S0_param : vec4<f32>) -> main_out {
   sk_Clockwise = sk_Clockwise_param;
   vcolor_S0 = vcolor_S0_param;
diff --git a/test/tint/bug/tint/1540.wgsl b/test/tint/bug/tint/1540.wgsl
index 95c51fb..54314d11 100644
--- a/test/tint/bug/tint/1540.wgsl
+++ b/test/tint/bug/tint/1540.wgsl
@@ -2,7 +2,7 @@
     e: bool,
 }
 
-@stage(compute)
+@compute
 @workgroup_size(1)
 fn main() {
     var b : bool;
diff --git a/test/tint/bug/tint/1540.wgsl.expected.wgsl b/test/tint/bug/tint/1540.wgsl.expected.wgsl
index 50f6bf3..d19be0f 100644
--- a/test/tint/bug/tint/1540.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1540.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   e : bool,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var b : bool;
   var v = S((true & b));
diff --git a/test/tint/bug/tint/1541.wgsl b/test/tint/bug/tint/1541.wgsl
index 44d04f0..afcec54 100644
--- a/test/tint/bug/tint/1541.wgsl
+++ b/test/tint/bug/tint/1541.wgsl
@@ -1,4 +1,4 @@
-@stage(compute)
+@compute
 @workgroup_size(1)
 fn main() {
     var v = select(true & true, true, false);
diff --git a/test/tint/bug/tint/1541.wgsl.expected.wgsl b/test/tint/bug/tint/1541.wgsl.expected.wgsl
index ed2d91b..fc554b1 100644
--- a/test/tint/bug/tint/1541.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1541.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v = select((true & true), true, false);
 }
diff --git a/test/tint/bug/tint/1573.wgsl b/test/tint/bug/tint/1573.wgsl
index 850e79c..b8c3c81 100644
--- a/test/tint/bug/tint/1573.wgsl
+++ b/test/tint/bug/tint/1573.wgsl
@@ -1,7 +1,7 @@
 @group(0) @binding(0)
 var<storage, read_write> a : atomic<u32>;
 
-@stage(compute) @workgroup_size(16)
+@compute @workgroup_size(16)
 fn main() {
   var value = 42u;
   let result = atomicCompareExchangeWeak(&a, 0u, value);
diff --git a/test/tint/bug/tint/1573.wgsl.expected.wgsl b/test/tint/bug/tint/1573.wgsl.expected.wgsl
index 639dc55..be83957 100644
--- a/test/tint/bug/tint/1573.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1573.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<storage, read_write> a : atomic<u32>;
 
-@stage(compute) @workgroup_size(16)
+@compute @workgroup_size(16)
 fn main() {
   var value = 42u;
   let result = atomicCompareExchangeWeak(&(a), 0u, value);
diff --git a/test/tint/bug/tint/1574.wgsl b/test/tint/bug/tint/1574.wgsl
index 3a52312..fb07239 100644
--- a/test/tint/bug/tint/1574.wgsl
+++ b/test/tint/bug/tint/1574.wgsl
@@ -9,7 +9,7 @@
 var<workgroup> b_i32 : atomic<i32>;
 
 
-@stage(compute) @workgroup_size(16)
+@compute @workgroup_size(16)
 fn main() {
   {
     var value = 42u;
diff --git a/test/tint/bug/tint/1574.wgsl.expected.wgsl b/test/tint/bug/tint/1574.wgsl.expected.wgsl
index 97dbbee..e5ca3c9 100644
--- a/test/tint/bug/tint/1574.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1574.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
 
 var<workgroup> b_i32 : atomic<i32>;
 
-@stage(compute) @workgroup_size(16)
+@compute @workgroup_size(16)
 fn main() {
   {
     var value = 42u;
diff --git a/test/tint/bug/tint/219.spvasm.expected.wgsl b/test/tint/bug/tint/219.spvasm.expected.wgsl
index 3f4fca2..edcc23c 100644
--- a/test/tint/bug/tint/219.spvasm.expected.wgsl
+++ b/test/tint/bug/tint/219.spvasm.expected.wgsl
@@ -9,7 +9,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/bug/tint/221.wgsl b/test/tint/bug/tint/221.wgsl
index 3beb8ed..49c40d1 100644
--- a/test/tint/bug/tint/221.wgsl
+++ b/test/tint/bug/tint/221.wgsl
@@ -7,7 +7,7 @@
 
 @group(0) @binding(0) var<storage, read_write> b : Buf;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : u32 = 0u;
   loop {
diff --git a/test/tint/bug/tint/221.wgsl.expected.wgsl b/test/tint/bug/tint/221.wgsl.expected.wgsl
index ee36aea..0a49ba5 100644
--- a/test/tint/bug/tint/221.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/221.wgsl.expected.wgsl
@@ -7,7 +7,7 @@
 
 @group(0) @binding(0) var<storage, read_write> b : Buf;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : u32 = 0u;
   loop {
diff --git a/test/tint/bug/tint/292.wgsl b/test/tint/bug/tint/292.wgsl
index daebb4f..ac2b421 100644
--- a/test/tint/bug/tint/292.wgsl
+++ b/test/tint/bug/tint/292.wgsl
@@ -1,4 +1,4 @@
-@stage(vertex)
+@vertex
 fn main() -> @builtin(position) vec4<f32> {
   var light : vec3<f32> = vec3<f32>(1.2, 1., 2.);
   var negative_light : vec3<f32> = -light;
diff --git a/test/tint/bug/tint/292.wgsl.expected.wgsl b/test/tint/bug/tint/292.wgsl.expected.wgsl
index 071b9da..b89b327 100644
--- a/test/tint/bug/tint/292.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/292.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(vertex)
+@vertex
 fn main() -> @builtin(position) vec4<f32> {
   var light : vec3<f32> = vec3<f32>(1.200000048, 1.0, 2.0);
   var negative_light : vec3<f32> = -(light);
diff --git a/test/tint/bug/tint/403.wgsl b/test/tint/bug/tint/403.wgsl
index 1c2a46f..ed20da6 100644
--- a/test/tint/bug/tint/403.wgsl
+++ b/test/tint/bug/tint/403.wgsl
@@ -10,7 +10,7 @@
 @group(1) @binding(0) var<uniform> x_26 : vertexUniformBuffer2;
 
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) gl_VertexIndex : u32) -> @builtin(position) vec4<f32> {
   var indexable : array<vec2<f32>, 3>;
   let x_23 : mat2x2<f32> = x_20.transform1;
diff --git a/test/tint/bug/tint/403.wgsl.expected.wgsl b/test/tint/bug/tint/403.wgsl.expected.wgsl
index 9ab50ec..a889483 100644
--- a/test/tint/bug/tint/403.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/403.wgsl.expected.wgsl
@@ -10,7 +10,7 @@
 
 @group(1) @binding(0) var<uniform> x_26 : vertexUniformBuffer2;
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) gl_VertexIndex : u32) -> @builtin(position) vec4<f32> {
   var indexable : array<vec2<f32>, 3>;
   let x_23 : mat2x2<f32> = x_20.transform1;
diff --git a/test/tint/bug/tint/413.spvasm.expected.wgsl b/test/tint/bug/tint/413.spvasm.expected.wgsl
index 623f45a..e9101a2 100644
--- a/test/tint/bug/tint/413.spvasm.expected.wgsl
+++ b/test/tint/bug/tint/413.spvasm.expected.wgsl
@@ -13,7 +13,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/bug/tint/453.wgsl b/test/tint/bug/tint/453.wgsl
index 99e53b4..e45e85f 100644
--- a/test/tint/bug/tint/453.wgsl
+++ b/test/tint/bug/tint/453.wgsl
@@ -1,7 +1,7 @@
 @group(0) @binding(0) var Src : texture_2d<u32>;
 @group(0) @binding(1) var Dst : texture_storage_2d<r32uint, write>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var srcValue : vec4<u32>;
   let x_22 : vec4<u32> = textureLoad(Src, vec2<i32>(0, 0), 0);
diff --git a/test/tint/bug/tint/453.wgsl.expected.wgsl b/test/tint/bug/tint/453.wgsl.expected.wgsl
index 8fe5795..87f03df 100644
--- a/test/tint/bug/tint/453.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/453.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(0) @binding(1) var Dst : texture_storage_2d<r32uint, write>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var srcValue : vec4<u32>;
   let x_22 : vec4<u32> = textureLoad(Src, vec2<i32>(0, 0), 0);
diff --git a/test/tint/bug/tint/492.wgsl b/test/tint/bug/tint/492.wgsl
index 7f361f4..e9cc78f 100644
--- a/test/tint/bug/tint/492.wgsl
+++ b/test/tint/bug/tint/492.wgsl
@@ -1,7 +1,7 @@
  struct S { a : i32, };
 @group(0) @binding(0) var<storage, read_write> buf : S;
 
-@stage(compute) @workgroup_size(1) fn main() {
+@compute @workgroup_size(1) fn main() {
   let p : ptr<storage, i32, read_write> = &buf.a;
   *p = 12;
 }
diff --git a/test/tint/bug/tint/492.wgsl.expected.wgsl b/test/tint/bug/tint/492.wgsl.expected.wgsl
index 9831e48..0d16b19 100644
--- a/test/tint/bug/tint/492.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/492.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(0) var<storage, read_write> buf : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let p : ptr<storage, i32, read_write> = &(buf.a);
   *(p) = 12;
diff --git a/test/tint/bug/tint/534.wgsl b/test/tint/bug/tint/534.wgsl
index 6a41cc4..b328b1a 100644
--- a/test/tint/bug/tint/534.wgsl
+++ b/test/tint/bug/tint/534.wgsl
@@ -18,7 +18,7 @@
     return 1u;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
     var size : vec2<i32> = textureDimensions(src);
     var dstTexCoord : vec2<i32> = vec2<i32>(GlobalInvocationID.xy);
diff --git a/test/tint/bug/tint/534.wgsl.expected.wgsl b/test/tint/bug/tint/534.wgsl.expected.wgsl
index fefeba0..83a4bfd 100644
--- a/test/tint/bug/tint/534.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/534.wgsl.expected.wgsl
@@ -21,7 +21,7 @@
   return 1u;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   var size : vec2<i32> = textureDimensions(src);
   var dstTexCoord : vec2<i32> = vec2<i32>(GlobalInvocationID.xy);
diff --git a/test/tint/bug/tint/744.wgsl b/test/tint/bug/tint/744.wgsl
index 4391fd8..70e57cc 100644
--- a/test/tint/bug/tint/744.wgsl
+++ b/test/tint/bug/tint/744.wgsl
@@ -12,7 +12,7 @@
 @group(0) @binding(2) var<storage, write> resultMatrix : Matrix;
 @group(0) @binding(3) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(2,2,1)
+@compute @workgroup_size(2,2,1)
 fn main(@builtin(global_invocation_id) global_id  : vec3<u32>) {
     let resultCell : vec2<u32> = vec2<u32>(global_id.y, global_id.x);
     let dimInner : u32 = uniforms.aShape.y;
diff --git a/test/tint/bug/tint/744.wgsl.expected.wgsl b/test/tint/bug/tint/744.wgsl.expected.wgsl
index 9ac2447..d08d2d9 100644
--- a/test/tint/bug/tint/744.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/744.wgsl.expected.wgsl
@@ -16,7 +16,7 @@
 
 @group(0) @binding(3) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(2, 2, 1)
+@compute @workgroup_size(2, 2, 1)
 fn main(@builtin(global_invocation_id) global_id : vec3<u32>) {
   let resultCell : vec2<u32> = vec2<u32>(global_id.y, global_id.x);
   let dimInner : u32 = uniforms.aShape.y;
diff --git a/test/tint/bug/tint/749.spvasm.expected.wgsl b/test/tint/bug/tint/749.spvasm.expected.wgsl
index 577838b..2592686 100644
--- a/test/tint/bug/tint/749.spvasm.expected.wgsl
+++ b/test/tint/bug/tint/749.spvasm.expected.wgsl
@@ -1473,7 +1473,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/bug/tint/757.wgsl b/test/tint/bug/tint/757.wgsl
index 437f7b4..d3d01e5 100644
--- a/test/tint/bug/tint/757.wgsl
+++ b/test/tint/bug/tint/757.wgsl
@@ -11,7 +11,7 @@
 };
 @group(0) @binding(3) var<storage, read_write> result : Result;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   var flatIndex : u32 =
     2u * 2u * GlobalInvocationID.z +
diff --git a/test/tint/bug/tint/757.wgsl.expected.wgsl b/test/tint/bug/tint/757.wgsl.expected.wgsl
index 15f4e3f..bc2b941 100644
--- a/test/tint/bug/tint/757.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/757.wgsl.expected.wgsl
@@ -12,7 +12,7 @@
 
 @group(0) @binding(3) var<storage, read_write> result : Result;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   var flatIndex : u32 = ((((2u * 2u) * GlobalInvocationID.z) + (2u * GlobalInvocationID.y)) + GlobalInvocationID.x);
   flatIndex = (flatIndex * 1u);
diff --git a/test/tint/bug/tint/824.wgsl b/test/tint/bug/tint/824.wgsl
index 7319fc0..f9e1467 100644
--- a/test/tint/bug/tint/824.wgsl
+++ b/test/tint/bug/tint/824.wgsl
@@ -2,7 +2,7 @@
     @builtin(position) Position : vec4<f32>,
     @location(0) color : vec4<f32>,
 };
-@stage(vertex) fn main(
+@vertex fn main(
     @builtin(vertex_index) VertexIndex : u32,
     @builtin(instance_index) InstanceIndex : u32) -> Output {
     // TODO: remove workaround for Tint unary array access broke
diff --git a/test/tint/bug/tint/824.wgsl.expected.wgsl b/test/tint/bug/tint/824.wgsl.expected.wgsl
index 7518b89..9ac4af3 100644
--- a/test/tint/bug/tint/824.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/824.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   color : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) VertexIndex : u32, @builtin(instance_index) InstanceIndex : u32) -> Output {
   let zv : array<vec2<f32>, 4> = array<vec2<f32>, 4>(vec2<f32>(0.200000003, 0.200000003), vec2<f32>(0.300000012, 0.300000012), vec2<f32>(-0.100000001, -0.100000001), vec2<f32>(1.100000024, 1.100000024));
   let z : f32 = zv[InstanceIndex].x;
diff --git a/test/tint/bug/tint/827.wgsl b/test/tint/bug/tint/827.wgsl
index d1dbc00..761b3d8 100644
--- a/test/tint/bug/tint/827.wgsl
+++ b/test/tint/bug/tint/827.wgsl
@@ -7,7 +7,7 @@
 @group(0) @binding(0) var tex : texture_depth_2d;
 @group(0) @binding(1) var<storage, read_write> result : Result;
 
-@stage(compute) @workgroup_size(1) fn main(
+@compute @workgroup_size(1) fn main(
     @builtin(global_invocation_id) GlobalInvocationId : vec3<u32>
 ) {
     result.values[GlobalInvocationId.y * width + GlobalInvocationId.x] = textureLoad(
diff --git a/test/tint/bug/tint/827.wgsl.expected.wgsl b/test/tint/bug/tint/827.wgsl.expected.wgsl
index 57561ca..c54420e 100644
--- a/test/tint/bug/tint/827.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/827.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
 
 @group(0) @binding(1) var<storage, read_write> result : Result;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@builtin(global_invocation_id) GlobalInvocationId : vec3<u32>) {
   result.values[((GlobalInvocationId.y * width) + GlobalInvocationId.x)] = textureLoad(tex, vec2<i32>(i32(GlobalInvocationId.x), i32(GlobalInvocationId.y)), 0);
 }
diff --git a/test/tint/bug/tint/870.spvasm.expected.wgsl b/test/tint/bug/tint/870.spvasm.expected.wgsl
index c3b7c8f..1dfaaa0 100644
--- a/test/tint/bug/tint/870.spvasm.expected.wgsl
+++ b/test/tint/bug/tint/870.spvasm.expected.wgsl
@@ -25,7 +25,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn main() {
   main_1();
 }
diff --git a/test/tint/bug/tint/913.wgsl b/test/tint/bug/tint/913.wgsl
index 5d1ad7a..a7786d5 100644
--- a/test/tint/bug/tint/913.wgsl
+++ b/test/tint/bug/tint/913.wgsl
@@ -16,7 +16,7 @@
     // The value diff should be smaller than the hard coded tolerance.
     return abs(value - expect) < 0.001;
 }
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
     let srcSize : vec2<i32> = textureDimensions(src);
     let dstSize : vec2<i32> = textureDimensions(dst);
diff --git a/test/tint/bug/tint/913.wgsl.expected.wgsl b/test/tint/bug/tint/913.wgsl.expected.wgsl
index 2e471da..d06c995 100644
--- a/test/tint/bug/tint/913.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/913.wgsl.expected.wgsl
@@ -22,7 +22,7 @@
   return (abs((value - expect)) < 0.001);
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
   let srcSize : vec2<i32> = textureDimensions(src);
   let dstSize : vec2<i32> = textureDimensions(dst);
diff --git a/test/tint/bug/tint/914.wgsl b/test/tint/bug/tint/914.wgsl
index 5ee9ad2..9493b2b 100644
--- a/test/tint/bug/tint/914.wgsl
+++ b/test/tint/bug/tint/914.wgsl
@@ -45,7 +45,7 @@
 let TileInner : u32 = 64u;
 var<workgroup> mm_Asub : array<array<f32, 64>, 64>;
 var<workgroup> mm_Bsub : array<array<f32, 64>, 64>;
-@stage(compute) @workgroup_size(16, 16, 1)
+@compute @workgroup_size(16, 16, 1)
 fn main(@builtin(local_invocation_id) local_id : vec3<u32>,
         @builtin(global_invocation_id) global_id  : vec3<u32>) {
     let tileRow : u32 = local_id.y * RowPerThread;
diff --git a/test/tint/bug/tint/914.wgsl.expected.wgsl b/test/tint/bug/tint/914.wgsl.expected.wgsl
index 9c5ad0c..67fd494 100644
--- a/test/tint/bug/tint/914.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/914.wgsl.expected.wgsl
@@ -53,7 +53,7 @@
 
 var<workgroup> mm_Bsub : array<array<f32, 64>, 64>;
 
-@stage(compute) @workgroup_size(16, 16, 1)
+@compute @workgroup_size(16, 16, 1)
 fn main(@builtin(local_invocation_id) local_id : vec3<u32>, @builtin(global_invocation_id) global_id : vec3<u32>) {
   let tileRow : u32 = (local_id.y * RowPerThread);
   let tileCol : u32 = (local_id.x * ColPerThread);
diff --git a/test/tint/bug/tint/922.wgsl b/test/tint/bug/tint/922.wgsl
index 0e7a0cb..0d83270 100644
--- a/test/tint/bug/tint/922.wgsl
+++ b/test/tint/bug/tint/922.wgsl
@@ -283,7 +283,7 @@
     }
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) a_Position: vec3<f32>, @location(1) a_UV: vec2<f32>, @location(2) a_Color: vec4<f32>, @location(3) a_Normal: vec3<f32>, @location(4) a_PosMtxIdx: f32) -> VertexOutput {
     a_Position1 = a_Position;
     a_UV1 = a_UV;
diff --git a/test/tint/bug/tint/922.wgsl.expected.wgsl b/test/tint/bug/tint/922.wgsl.expected.wgsl
index 00055b1..82dd431 100644
--- a/test/tint/bug/tint/922.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/922.wgsl.expected.wgsl
@@ -279,7 +279,7 @@
   }
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) a_Position : vec3<f32>, @location(1) a_UV : vec2<f32>, @location(2) a_Color : vec4<f32>, @location(3) a_Normal : vec3<f32>, @location(4) a_PosMtxIdx : f32) -> VertexOutput {
   a_Position1 = a_Position;
   a_UV1 = a_UV;
diff --git a/test/tint/bug/tint/926.wgsl b/test/tint/bug/tint/926.wgsl
index ba04a7b..1fe8057 100644
--- a/test/tint/bug/tint/926.wgsl
+++ b/test/tint/bug/tint/926.wgsl
@@ -5,7 +5,7 @@
 
 var<private> cubeVerts : u32 = 0u;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn computeMain(@builtin(global_invocation_id) global_id : vec3<u32>) {
   // Increment cubeVerts based on some criteria...
 
diff --git a/test/tint/bug/tint/926.wgsl.expected.wgsl b/test/tint/bug/tint/926.wgsl.expected.wgsl
index 847850d..bc0535c 100644
--- a/test/tint/bug/tint/926.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/926.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
 
 var<private> cubeVerts : u32 = 0u;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn computeMain(@builtin(global_invocation_id) global_id : vec3<u32>) {
   let firstVertex : u32 = atomicAdd(&(drawOut.vertexCount), cubeVerts);
 }
diff --git a/test/tint/bug/tint/942.wgsl b/test/tint/bug/tint/942.wgsl
index 722dc75..d4c2bcb 100644
--- a/test/tint/bug/tint/942.wgsl
+++ b/test/tint/bug/tint/942.wgsl
@@ -29,7 +29,7 @@
 
 var<workgroup> tile : array<array<vec3<f32>, 256>, 4>;
 
-@stage(compute) @workgroup_size(64, 1, 1)
+@compute @workgroup_size(64, 1, 1)
 fn main(
   @builtin(workgroup_id) WorkGroupID : vec3<u32>,
   @builtin(local_invocation_id) LocalInvocationID : vec3<u32>
diff --git a/test/tint/bug/tint/942.wgsl.expected.wgsl b/test/tint/bug/tint/942.wgsl.expected.wgsl
index 99b1bd4..837581e 100644
--- a/test/tint/bug/tint/942.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/942.wgsl.expected.wgsl
@@ -19,7 +19,7 @@
 
 var<workgroup> tile : array<array<vec3<f32>, 256>, 4>;
 
-@stage(compute) @workgroup_size(64, 1, 1)
+@compute @workgroup_size(64, 1, 1)
 fn main(@builtin(workgroup_id) WorkGroupID : vec3<u32>, @builtin(local_invocation_id) LocalInvocationID : vec3<u32>) {
   let filterOffset : u32 = ((params.filterDim - 1u) / 2u);
   let dims : vec2<i32> = textureDimensions(inputTex, 0);
diff --git a/test/tint/bug/tint/943.spvasm.expected.wgsl b/test/tint/bug/tint/943.spvasm.expected.wgsl
index 30df000..645db5a 100644
--- a/test/tint/bug/tint/943.spvasm.expected.wgsl
+++ b/test/tint/bug/tint/943.spvasm.expected.wgsl
@@ -517,7 +517,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 64i, 1i)
+@compute @workgroup_size(1i, 64i, 1i)
 fn main(@builtin(local_invocation_id) gl_LocalInvocationID_param : vec3<u32>, @builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {
   gl_LocalInvocationID = gl_LocalInvocationID_param;
   gl_GlobalInvocationID = gl_GlobalInvocationID_param;
diff --git a/test/tint/bug/tint/948.wgsl b/test/tint/bug/tint/948.wgsl
index 4cc4329..68432d5 100644
--- a/test/tint/bug/tint/948.wgsl
+++ b/test/tint/bug/tint/948.wgsl
@@ -215,7 +215,7 @@
   glFragColor_1 : vec4<f32>,
 };
 
-@stage(fragment)
+@fragment
 fn main(@location(2) tUV_param : vec2<f32>, @location(5) tileID_1_param : vec2<f32>, @location(4) levelUnits_param : vec2<f32>, @location(3) stageUnits_1_param : vec2<f32>, @location(0) vPosition_param : vec3<f32>, @location(1) vUV_param : vec2<f32>) -> main_out {
   tUV = tUV_param;
   tileID_1 = tileID_1_param;
diff --git a/test/tint/bug/tint/948.wgsl.expected.wgsl b/test/tint/bug/tint/948.wgsl.expected.wgsl
index 533c9e4..a902aec 100644
--- a/test/tint/bug/tint/948.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/948.wgsl.expected.wgsl
@@ -227,7 +227,7 @@
   glFragColor_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@location(2) tUV_param : vec2<f32>, @location(5) tileID_1_param : vec2<f32>, @location(4) levelUnits_param : vec2<f32>, @location(3) stageUnits_1_param : vec2<f32>, @location(0) vPosition_param : vec3<f32>, @location(1) vUV_param : vec2<f32>) -> main_out {
   tUV = tUV_param;
   tileID_1 = tileID_1_param;
diff --git a/test/tint/bug/tint/949.wgsl b/test/tint/bug/tint/949.wgsl
index 3b302a6..b06e420 100644
--- a/test/tint/bug/tint/949.wgsl
+++ b/test/tint/bug/tint/949.wgsl
@@ -441,7 +441,7 @@
   glFragColor_1 : vec4<f32>,
 };
 
-@stage(fragment)
+@fragment
 fn main(@location(1) vMainuv_param : vec2<f32>, @location(0) v_output1_param : vec4<f32>, @builtin(front_facing) gl_FrontFacing_param : bool, @location(3) v_uv_param : vec2<f32>, @location(2) v_output2_param : vec4<f32>) -> main_out {
   vMainuv = vMainuv_param;
   v_output1 = v_output1_param;
diff --git a/test/tint/bug/tint/949.wgsl.expected.wgsl b/test/tint/bug/tint/949.wgsl.expected.wgsl
index d911621..aac23a0 100644
--- a/test/tint/bug/tint/949.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/949.wgsl.expected.wgsl
@@ -452,7 +452,7 @@
   glFragColor_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@location(1) vMainuv_param : vec2<f32>, @location(0) v_output1_param : vec4<f32>, @builtin(front_facing) gl_FrontFacing_param : bool, @location(3) v_uv_param : vec2<f32>, @location(2) v_output2_param : vec4<f32>) -> main_out {
   vMainuv = vMainuv_param;
   v_output1 = v_output1_param;
diff --git a/test/tint/bug/tint/951.spvasm.expected.wgsl b/test/tint/bug/tint/951.spvasm.expected.wgsl
index 8778a7b..c59626a 100644
--- a/test/tint/bug/tint/951.spvasm.expected.wgsl
+++ b/test/tint/bug/tint/951.spvasm.expected.wgsl
@@ -72,7 +72,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(128i, 1i, 1i)
+@compute @workgroup_size(128i, 1i, 1i)
 fn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {
   gl_GlobalInvocationID = gl_GlobalInvocationID_param;
   main_1();
diff --git a/test/tint/bug/tint/959.wgsl b/test/tint/bug/tint/959.wgsl
index e472591..8f3d9ba 100644
--- a/test/tint/bug/tint/959.wgsl
+++ b/test/tint/bug/tint/959.wgsl
@@ -58,7 +58,7 @@
 @group(14) @binding(300) var s14 : sampler_comparison;
 @group(15) @binding(300) var s15 : sampler_comparison;
 
-@stage(fragment)
+@fragment
 fn main() {
   _ = b0;
   _ = b1;
diff --git a/test/tint/bug/tint/959.wgsl.expected.wgsl b/test/tint/bug/tint/959.wgsl.expected.wgsl
index face4f9..95fad73 100644
--- a/test/tint/bug/tint/959.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/959.wgsl.expected.wgsl
@@ -98,7 +98,7 @@
 
 @group(15) @binding(300) var s15 : sampler_comparison;
 
-@stage(fragment)
+@fragment
 fn main() {
   _ = b0;
   _ = b1;
diff --git a/test/tint/bug/tint/977.spvasm.expected.wgsl b/test/tint/bug/tint/977.spvasm.expected.wgsl
index 5b02dce..7ec6a24 100644
--- a/test/tint/bug/tint/977.spvasm.expected.wgsl
+++ b/test/tint/bug/tint/977.spvasm.expected.wgsl
@@ -69,7 +69,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {
   gl_GlobalInvocationID = gl_GlobalInvocationID_param;
   main_1();
diff --git a/test/tint/bug/tint/978.wgsl b/test/tint/bug/tint/978.wgsl
index 3a0635f..c0b5132 100644
--- a/test/tint/bug/tint/978.wgsl
+++ b/test/tint/bug/tint/978.wgsl
@@ -14,7 +14,7 @@
 @binding(3) @group(1) var texSampler : sampler;
 
 
-@stage(fragment)
+@fragment
 fn main( fIn : FragmentInput ) -> FragmentOutput
 {
     let sample : f32 = textureSample( depthMap , texSampler, fIn.vUv );
diff --git a/test/tint/bug/tint/978.wgsl.expected.wgsl b/test/tint/bug/tint/978.wgsl.expected.wgsl
index 8327a57..4b36794 100644
--- a/test/tint/bug/tint/978.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/978.wgsl.expected.wgsl
@@ -12,7 +12,7 @@
 
 @binding(3) @group(1) var texSampler : sampler;
 
-@stage(fragment)
+@fragment
 fn main(fIn : FragmentInput) -> FragmentOutput {
   let sample : f32 = textureSample(depthMap, texSampler, fIn.vUv);
   let color : vec3<f32> = vec3<f32>(sample, sample, sample);
diff --git a/test/tint/bug/tint/980.wgsl b/test/tint/bug/tint/980.wgsl
index 3188a80..5d64cc1 100644
--- a/test/tint/bug/tint/980.wgsl
+++ b/test/tint/bug/tint/980.wgsl
@@ -7,7 +7,7 @@
 
  struct S { v : vec3<f32>, i : u32, };
 @binding(0) @group(0) var<storage, read_write> io : S;
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@builtin(local_invocation_index) idx : u32) {
     io.v = Bad(io.i, io.v);
 }
diff --git a/test/tint/bug/tint/980.wgsl.expected.wgsl b/test/tint/bug/tint/980.wgsl.expected.wgsl
index 076e450..f7c24e9 100644
--- a/test/tint/bug/tint/980.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/980.wgsl.expected.wgsl
@@ -11,7 +11,7 @@
 
 @binding(0) @group(0) var<storage, read_write> io : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@builtin(local_invocation_index) idx : u32) {
   io.v = Bad(io.i, io.v);
 }
diff --git a/test/tint/bug/tint/992.wgsl b/test/tint/bug/tint/992.wgsl
index 461e17c..0e315bf 100644
--- a/test/tint/bug/tint/992.wgsl
+++ b/test/tint/bug/tint/992.wgsl
@@ -1,4 +1,4 @@
-@stage(fragment)
+@fragment
 fn frag_main() -> @location(0) vec4<f32> {
     var b: f32 = 0.0;
     var v: vec3<f32> = vec3<f32>(b);
diff --git a/test/tint/bug/tint/992.wgsl.expected.wgsl b/test/tint/bug/tint/992.wgsl.expected.wgsl
index 1742838..60a2022 100644
--- a/test/tint/bug/tint/992.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/992.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(fragment)
+@fragment
 fn frag_main() -> @location(0) vec4<f32> {
   var b : f32 = 0.0;
   var v : vec3<f32> = vec3<f32>(b);
diff --git a/test/tint/bug/tint/993.wgsl b/test/tint/bug/tint/993.wgsl
index 35f4599..e45d789 100644
--- a/test/tint/bug/tint/993.wgsl
+++ b/test/tint/bug/tint/993.wgsl
@@ -18,7 +18,7 @@
   return atomicLoad(&s.data[(0u) + u32(constants.zero)]);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   result.value = u32(runTest());
 }
diff --git a/test/tint/bug/tint/993.wgsl.expected.wgsl b/test/tint/bug/tint/993.wgsl.expected.wgsl
index 32aefc6..df926b8 100644
--- a/test/tint/bug/tint/993.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/993.wgsl.expected.wgsl
@@ -20,7 +20,7 @@
   return atomicLoad(&(s.data[(0u + u32(constants.zero))]));
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   result.value = u32(runTest());
 }
diff --git a/test/tint/bug/tint/998.wgsl b/test/tint/bug/tint/998.wgsl
index cb85dde..e04eec0 100644
--- a/test/tint/bug/tint/998.wgsl
+++ b/test/tint/bug/tint/998.wgsl
@@ -13,7 +13,7 @@
 };
 var<private> s: S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   s.data[constants.zero] = 0u;
 }
diff --git a/test/tint/bug/tint/998.wgsl.expected.wgsl b/test/tint/bug/tint/998.wgsl.expected.wgsl
index 1068851..ebdae6e 100644
--- a/test/tint/bug/tint/998.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/998.wgsl.expected.wgsl
@@ -16,7 +16,7 @@
 
 var<private> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   s.data[constants.zero] = 0u;
 }
diff --git a/test/tint/builtins/arrayLength/complex_via_let.wgsl b/test/tint/builtins/arrayLength/complex_via_let.wgsl
index 29c07c9..85836f0 100644
--- a/test/tint/builtins/arrayLength/complex_via_let.wgsl
+++ b/test/tint/builtins/arrayLength/complex_via_let.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(0) var<storage, read> G : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     let p = &G;
     let p2 = &((*p).a);
diff --git a/test/tint/builtins/arrayLength/complex_via_let.wgsl.expected.wgsl b/test/tint/builtins/arrayLength/complex_via_let.wgsl.expected.wgsl
index a35b6e4..6fed13c 100644
--- a/test/tint/builtins/arrayLength/complex_via_let.wgsl.expected.wgsl
+++ b/test/tint/builtins/arrayLength/complex_via_let.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(0) var<storage, read> G : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let p = &(G);
   let p2 = &((*(p)).a);
diff --git a/test/tint/builtins/arrayLength/complex_via_let_no_struct.wgsl b/test/tint/builtins/arrayLength/complex_via_let_no_struct.wgsl
index 8626deeb..231dbd2 100644
--- a/test/tint/builtins/arrayLength/complex_via_let_no_struct.wgsl
+++ b/test/tint/builtins/arrayLength/complex_via_let_no_struct.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<storage, read> G : array<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     let p = &G;
     let p2 = &(*p);
diff --git a/test/tint/builtins/arrayLength/complex_via_let_no_struct.wgsl.expected.wgsl b/test/tint/builtins/arrayLength/complex_via_let_no_struct.wgsl.expected.wgsl
index 2d06902..2cce05d 100644
--- a/test/tint/builtins/arrayLength/complex_via_let_no_struct.wgsl.expected.wgsl
+++ b/test/tint/builtins/arrayLength/complex_via_let_no_struct.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<storage, read> G : array<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let p = &(G);
   let p2 = &(*(p));
diff --git a/test/tint/builtins/arrayLength/deprecated.wgsl b/test/tint/builtins/arrayLength/deprecated.wgsl
index 0af15ea..2de8025 100644
--- a/test/tint/builtins/arrayLength/deprecated.wgsl
+++ b/test/tint/builtins/arrayLength/deprecated.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(0) var<storage, read> G : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     let l1 : u32 = arrayLength(&G.a);
 
diff --git a/test/tint/builtins/arrayLength/deprecated.wgsl.expected.wgsl b/test/tint/builtins/arrayLength/deprecated.wgsl.expected.wgsl
index 7d96296..fb4b550 100644
--- a/test/tint/builtins/arrayLength/deprecated.wgsl.expected.wgsl
+++ b/test/tint/builtins/arrayLength/deprecated.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(0) var<storage, read> G : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let l1 : u32 = arrayLength(&(G.a));
   let p = &(G.a);
diff --git a/test/tint/builtins/arrayLength/simple.wgsl b/test/tint/builtins/arrayLength/simple.wgsl
index 74ff5cc..23e9176 100644
--- a/test/tint/builtins/arrayLength/simple.wgsl
+++ b/test/tint/builtins/arrayLength/simple.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(0) var<storage, read> G : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     let l1 : u32 = arrayLength(&G.a);
 }
diff --git a/test/tint/builtins/arrayLength/simple.wgsl.expected.wgsl b/test/tint/builtins/arrayLength/simple.wgsl.expected.wgsl
index f1db44b..6641075 100644
--- a/test/tint/builtins/arrayLength/simple.wgsl.expected.wgsl
+++ b/test/tint/builtins/arrayLength/simple.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(0) var<storage, read> G : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let l1 : u32 = arrayLength(&(G.a));
 }
diff --git a/test/tint/builtins/arrayLength/simple_no_struct.wgsl b/test/tint/builtins/arrayLength/simple_no_struct.wgsl
index 985c87e..5f24327 100644
--- a/test/tint/builtins/arrayLength/simple_no_struct.wgsl
+++ b/test/tint/builtins/arrayLength/simple_no_struct.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<storage, read> G : array<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     let l1 : u32 = arrayLength(&G);
 }
diff --git a/test/tint/builtins/arrayLength/simple_no_struct.wgsl.expected.wgsl b/test/tint/builtins/arrayLength/simple_no_struct.wgsl.expected.wgsl
index b45cd36..463136c 100644
--- a/test/tint/builtins/arrayLength/simple_no_struct.wgsl.expected.wgsl
+++ b/test/tint/builtins/arrayLength/simple_no_struct.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<storage, read> G : array<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let l1 : u32 = arrayLength(&(G));
 }
diff --git a/test/tint/builtins/arrayLength/via_let.wgsl b/test/tint/builtins/arrayLength/via_let.wgsl
index e3dff0b..11b3200 100644
--- a/test/tint/builtins/arrayLength/via_let.wgsl
+++ b/test/tint/builtins/arrayLength/via_let.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(0) var<storage, read> G : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     let p = &G.a;
     let p2 = p;
diff --git a/test/tint/builtins/arrayLength/via_let.wgsl.expected.wgsl b/test/tint/builtins/arrayLength/via_let.wgsl.expected.wgsl
index 7a7ffbd..b2f9d9d 100644
--- a/test/tint/builtins/arrayLength/via_let.wgsl.expected.wgsl
+++ b/test/tint/builtins/arrayLength/via_let.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(0) var<storage, read> G : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let p = &(G.a);
   let p2 = p;
diff --git a/test/tint/builtins/arrayLength/via_let_complex.wgsl b/test/tint/builtins/arrayLength/via_let_complex.wgsl
index a30a39d..6704983 100644
--- a/test/tint/builtins/arrayLength/via_let_complex.wgsl
+++ b/test/tint/builtins/arrayLength/via_let_complex.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(0) var<storage, read> G : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let p = &*&G;
   let p2 = &*p;
diff --git a/test/tint/builtins/arrayLength/via_let_complex.wgsl.expected.wgsl b/test/tint/builtins/arrayLength/via_let_complex.wgsl.expected.wgsl
index 2db8863..b229c01 100644
--- a/test/tint/builtins/arrayLength/via_let_complex.wgsl.expected.wgsl
+++ b/test/tint/builtins/arrayLength/via_let_complex.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(0) var<storage, read> G : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let p = &(*(&(G)));
   let p2 = &(*(p));
diff --git a/test/tint/builtins/arrayLength/via_let_complex_no_struct.wgsl b/test/tint/builtins/arrayLength/via_let_complex_no_struct.wgsl
index dd8beb6..e199d23a 100644
--- a/test/tint/builtins/arrayLength/via_let_complex_no_struct.wgsl
+++ b/test/tint/builtins/arrayLength/via_let_complex_no_struct.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<storage, read> G : array<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let p = &*&G;
   let p2 = &*p;
diff --git a/test/tint/builtins/arrayLength/via_let_complex_no_struct.wgsl.expected.wgsl b/test/tint/builtins/arrayLength/via_let_complex_no_struct.wgsl.expected.wgsl
index a92b9be..cb64467 100644
--- a/test/tint/builtins/arrayLength/via_let_complex_no_struct.wgsl.expected.wgsl
+++ b/test/tint/builtins/arrayLength/via_let_complex_no_struct.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<storage, read> G : array<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let p = &(*(&(G)));
   let p2 = &(*(p));
diff --git a/test/tint/builtins/arrayLength/via_let_no_struct.wgsl b/test/tint/builtins/arrayLength/via_let_no_struct.wgsl
index 203f0e0..066c19f 100644
--- a/test/tint/builtins/arrayLength/via_let_no_struct.wgsl
+++ b/test/tint/builtins/arrayLength/via_let_no_struct.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<storage, read> G : array<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     let p = &G;
     let p2 = p;
diff --git a/test/tint/builtins/arrayLength/via_let_no_struct.wgsl.expected.wgsl b/test/tint/builtins/arrayLength/via_let_no_struct.wgsl.expected.wgsl
index 3e07603..fea4058 100644
--- a/test/tint/builtins/arrayLength/via_let_no_struct.wgsl.expected.wgsl
+++ b/test/tint/builtins/arrayLength/via_let_no_struct.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var<storage, read> G : array<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let p = &(G);
   let p2 = p;
diff --git a/test/tint/builtins/degrees.spvasm.expected.wgsl b/test/tint/builtins/degrees.spvasm.expected.wgsl
index d0d2ba5..d5a3382 100644
--- a/test/tint/builtins/degrees.spvasm.expected.wgsl
+++ b/test/tint/builtins/degrees.spvasm.expected.wgsl
@@ -7,7 +7,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.wgsl b/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.wgsl
index 37c5314..c381fad 100644
--- a/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.wgsl
+++ b/test/tint/builtins/extractBits/scalar/i32.spvasm.expected.wgsl
@@ -9,7 +9,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn f() {
   f_1();
 }
diff --git a/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.wgsl b/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.wgsl
index cab6bcf..c9987a9 100644
--- a/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.wgsl
+++ b/test/tint/builtins/extractBits/scalar/u32.spvasm.expected.wgsl
@@ -9,7 +9,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn f() {
   f_1();
 }
diff --git a/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.wgsl b/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.wgsl
index 9497207..2a9d713 100644
--- a/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.wgsl
+++ b/test/tint/builtins/extractBits/vec3/i32.spvasm.expected.wgsl
@@ -9,7 +9,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn f() {
   f_1();
 }
diff --git a/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.wgsl b/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.wgsl
index 7bb29a5..5c48450 100644
--- a/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.wgsl
+++ b/test/tint/builtins/extractBits/vec3/u32.spvasm.expected.wgsl
@@ -9,7 +9,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn f() {
   f_1();
 }
diff --git a/test/tint/builtins/frexp.wgsl b/test/tint/builtins/frexp.wgsl
index f4c30d4..549c3c6 100644
--- a/test/tint/builtins/frexp.wgsl
+++ b/test/tint/builtins/frexp.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     let res = frexp(1.23);
     let exp : i32 = res.exp;
diff --git a/test/tint/builtins/frexp.wgsl.expected.wgsl b/test/tint/builtins/frexp.wgsl.expected.wgsl
index 50cbd40..a36f01a 100644
--- a/test/tint/builtins/frexp.wgsl.expected.wgsl
+++ b/test/tint/builtins/frexp.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let res = frexp(1.230000019);
   let exp : i32 = res.exp;
diff --git a/test/tint/builtins/gen/gen.wgsl.tmpl b/test/tint/builtins/gen/gen.wgsl.tmpl
index 0e43231..2f28e00 100644
--- a/test/tint/builtins/gen/gen.wgsl.tmpl
+++ b/test/tint/builtins/gen/gen.wgsl.tmpl
@@ -144,7 +144,7 @@
 {{/*new line*/ -}}
 
 {{- if $overload.CanBeUsedInStage.Vertex }}
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   {{$permutation}}();
   return vec4<f32>();
@@ -152,14 +152,14 @@
 {{ end -}}
 
 {{- if $overload.CanBeUsedInStage.Fragment }}
-@stage(fragment)
+@fragment
 fn fragment_main() {
   {{$permutation}}();
 }
 {{ end -}}
 
 {{- if $overload.CanBeUsedInStage.Compute }}
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   {{$permutation}}();
 }
diff --git a/test/tint/builtins/gen/literal/abs/002533.wgsl b/test/tint/builtins/gen/literal/abs/002533.wgsl
index 629d145..d3c51c9 100644
--- a/test/tint/builtins/gen/literal/abs/002533.wgsl
+++ b/test/tint/builtins/gen/literal/abs/002533.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = abs(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_002533();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_002533();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_002533();
 }
diff --git a/test/tint/builtins/gen/literal/abs/002533.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/002533.wgsl.expected.wgsl
index 8edc059..9e957d4 100644
--- a/test/tint/builtins/gen/literal/abs/002533.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/002533.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = abs(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_002533();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_002533();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_002533();
 }
diff --git a/test/tint/builtins/gen/literal/abs/005174.wgsl b/test/tint/builtins/gen/literal/abs/005174.wgsl
index b22b60d..c6032b3 100644
--- a/test/tint/builtins/gen/literal/abs/005174.wgsl
+++ b/test/tint/builtins/gen/literal/abs/005174.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = abs(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_005174();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_005174();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_005174();
 }
diff --git a/test/tint/builtins/gen/literal/abs/005174.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/005174.wgsl.expected.wgsl
index 0675fff..f3e9494 100644
--- a/test/tint/builtins/gen/literal/abs/005174.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/005174.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = abs(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_005174();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_005174();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_005174();
 }
diff --git a/test/tint/builtins/gen/literal/abs/1ce782.wgsl b/test/tint/builtins/gen/literal/abs/1ce782.wgsl
index 7487129..8076d8e 100644
--- a/test/tint/builtins/gen/literal/abs/1ce782.wgsl
+++ b/test/tint/builtins/gen/literal/abs/1ce782.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = abs(vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_1ce782();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_1ce782();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_1ce782();
 }
diff --git a/test/tint/builtins/gen/literal/abs/1ce782.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/1ce782.wgsl.expected.wgsl
index 02c1c23..cc92a17 100644
--- a/test/tint/builtins/gen/literal/abs/1ce782.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/1ce782.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = abs(vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_1ce782();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_1ce782();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_1ce782();
 }
diff --git a/test/tint/builtins/gen/literal/abs/1e9d53.wgsl b/test/tint/builtins/gen/literal/abs/1e9d53.wgsl
index 0a43ebc..d8d5cfd 100644
--- a/test/tint/builtins/gen/literal/abs/1e9d53.wgsl
+++ b/test/tint/builtins/gen/literal/abs/1e9d53.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = abs(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_1e9d53();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_1e9d53();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_1e9d53();
 }
diff --git a/test/tint/builtins/gen/literal/abs/1e9d53.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/1e9d53.wgsl.expected.wgsl
index ba2ae4b..5e5072d 100644
--- a/test/tint/builtins/gen/literal/abs/1e9d53.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/1e9d53.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = abs(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_1e9d53();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_1e9d53();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_1e9d53();
 }
diff --git a/test/tint/builtins/gen/literal/abs/467cd1.wgsl b/test/tint/builtins/gen/literal/abs/467cd1.wgsl
index f56c0e7..f6052d0 100644
--- a/test/tint/builtins/gen/literal/abs/467cd1.wgsl
+++ b/test/tint/builtins/gen/literal/abs/467cd1.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = abs(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_467cd1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_467cd1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_467cd1();
 }
diff --git a/test/tint/builtins/gen/literal/abs/467cd1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/467cd1.wgsl.expected.wgsl
index 0af4141..a69414d 100644
--- a/test/tint/builtins/gen/literal/abs/467cd1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/467cd1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = abs(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_467cd1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_467cd1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_467cd1();
 }
diff --git a/test/tint/builtins/gen/literal/abs/4ad288.wgsl b/test/tint/builtins/gen/literal/abs/4ad288.wgsl
index ac0a540..a07ca37 100644
--- a/test/tint/builtins/gen/literal/abs/4ad288.wgsl
+++ b/test/tint/builtins/gen/literal/abs/4ad288.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = abs(1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_4ad288();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_4ad288();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_4ad288();
 }
diff --git a/test/tint/builtins/gen/literal/abs/4ad288.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/4ad288.wgsl.expected.wgsl
index e96f644..7c47bf8 100644
--- a/test/tint/builtins/gen/literal/abs/4ad288.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/4ad288.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = abs(1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_4ad288();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_4ad288();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_4ad288();
 }
diff --git a/test/tint/builtins/gen/literal/abs/5ad50a.wgsl b/test/tint/builtins/gen/literal/abs/5ad50a.wgsl
index b31a2d7..aa6b91f 100644
--- a/test/tint/builtins/gen/literal/abs/5ad50a.wgsl
+++ b/test/tint/builtins/gen/literal/abs/5ad50a.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = abs(vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_5ad50a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_5ad50a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_5ad50a();
 }
diff --git a/test/tint/builtins/gen/literal/abs/5ad50a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/5ad50a.wgsl.expected.wgsl
index d1cf47f..7ed9352 100644
--- a/test/tint/builtins/gen/literal/abs/5ad50a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/5ad50a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = abs(vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_5ad50a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_5ad50a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_5ad50a();
 }
diff --git a/test/tint/builtins/gen/literal/abs/7326de.wgsl b/test/tint/builtins/gen/literal/abs/7326de.wgsl
index 2341b40..6d9857a6 100644
--- a/test/tint/builtins/gen/literal/abs/7326de.wgsl
+++ b/test/tint/builtins/gen/literal/abs/7326de.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = abs(vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_7326de();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_7326de();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_7326de();
 }
diff --git a/test/tint/builtins/gen/literal/abs/7326de.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/7326de.wgsl.expected.wgsl
index 4d07d26..d7d7be1 100644
--- a/test/tint/builtins/gen/literal/abs/7326de.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/7326de.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = abs(vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_7326de();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_7326de();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_7326de();
 }
diff --git a/test/tint/builtins/gen/literal/abs/7f28e6.wgsl b/test/tint/builtins/gen/literal/abs/7f28e6.wgsl
index 140a4a8..f49e2f3 100644
--- a/test/tint/builtins/gen/literal/abs/7f28e6.wgsl
+++ b/test/tint/builtins/gen/literal/abs/7f28e6.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = abs(vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_7f28e6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_7f28e6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_7f28e6();
 }
diff --git a/test/tint/builtins/gen/literal/abs/7f28e6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/7f28e6.wgsl.expected.wgsl
index 8f83b40..6b2658c 100644
--- a/test/tint/builtins/gen/literal/abs/7f28e6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/7f28e6.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = abs(vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_7f28e6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_7f28e6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_7f28e6();
 }
diff --git a/test/tint/builtins/gen/literal/abs/7faa9e.wgsl b/test/tint/builtins/gen/literal/abs/7faa9e.wgsl
index 23011a2..6cc6230 100644
--- a/test/tint/builtins/gen/literal/abs/7faa9e.wgsl
+++ b/test/tint/builtins/gen/literal/abs/7faa9e.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = abs(vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_7faa9e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_7faa9e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_7faa9e();
 }
diff --git a/test/tint/builtins/gen/literal/abs/7faa9e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/7faa9e.wgsl.expected.wgsl
index c8e0001..d2b29b2 100644
--- a/test/tint/builtins/gen/literal/abs/7faa9e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/7faa9e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = abs(vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_7faa9e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_7faa9e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_7faa9e();
 }
diff --git a/test/tint/builtins/gen/literal/abs/9c80a6.wgsl b/test/tint/builtins/gen/literal/abs/9c80a6.wgsl
index 1fba92e..fe7c446 100644
--- a/test/tint/builtins/gen/literal/abs/9c80a6.wgsl
+++ b/test/tint/builtins/gen/literal/abs/9c80a6.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = abs(vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_9c80a6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_9c80a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_9c80a6();
 }
diff --git a/test/tint/builtins/gen/literal/abs/9c80a6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/9c80a6.wgsl.expected.wgsl
index 6e3519d..46af62a 100644
--- a/test/tint/builtins/gen/literal/abs/9c80a6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/9c80a6.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = abs(vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_9c80a6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_9c80a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_9c80a6();
 }
diff --git a/test/tint/builtins/gen/literal/abs/b96037.wgsl b/test/tint/builtins/gen/literal/abs/b96037.wgsl
index 603d341..9299117 100644
--- a/test/tint/builtins/gen/literal/abs/b96037.wgsl
+++ b/test/tint/builtins/gen/literal/abs/b96037.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = abs(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_b96037();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_b96037();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_b96037();
 }
diff --git a/test/tint/builtins/gen/literal/abs/b96037.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/b96037.wgsl.expected.wgsl
index 22c47c2..f9b972b 100644
--- a/test/tint/builtins/gen/literal/abs/b96037.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/b96037.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = abs(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_b96037();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_b96037();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_b96037();
 }
diff --git a/test/tint/builtins/gen/literal/acos/489247.wgsl b/test/tint/builtins/gen/literal/acos/489247.wgsl
index 0bdc1bf..3ff4a38 100644
--- a/test/tint/builtins/gen/literal/acos/489247.wgsl
+++ b/test/tint/builtins/gen/literal/acos/489247.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = acos(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_489247();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   acos_489247();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   acos_489247();
 }
diff --git a/test/tint/builtins/gen/literal/acos/489247.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acos/489247.wgsl.expected.wgsl
index d8570fb..b2d78e1 100644
--- a/test/tint/builtins/gen/literal/acos/489247.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acos/489247.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = acos(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_489247();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   acos_489247();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   acos_489247();
 }
diff --git a/test/tint/builtins/gen/literal/acos/8e2acf.wgsl b/test/tint/builtins/gen/literal/acos/8e2acf.wgsl
index 6371bc9..13d836a 100644
--- a/test/tint/builtins/gen/literal/acos/8e2acf.wgsl
+++ b/test/tint/builtins/gen/literal/acos/8e2acf.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = acos(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_8e2acf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   acos_8e2acf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   acos_8e2acf();
 }
diff --git a/test/tint/builtins/gen/literal/acos/8e2acf.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acos/8e2acf.wgsl.expected.wgsl
index c03ab26..2703d5b 100644
--- a/test/tint/builtins/gen/literal/acos/8e2acf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acos/8e2acf.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = acos(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_8e2acf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   acos_8e2acf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   acos_8e2acf();
 }
diff --git a/test/tint/builtins/gen/literal/acos/a610c4.wgsl b/test/tint/builtins/gen/literal/acos/a610c4.wgsl
index 1d8c7f0..27d6d3e 100644
--- a/test/tint/builtins/gen/literal/acos/a610c4.wgsl
+++ b/test/tint/builtins/gen/literal/acos/a610c4.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = acos(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_a610c4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   acos_a610c4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   acos_a610c4();
 }
diff --git a/test/tint/builtins/gen/literal/acos/a610c4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acos/a610c4.wgsl.expected.wgsl
index 24807be..e6e820b 100644
--- a/test/tint/builtins/gen/literal/acos/a610c4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acos/a610c4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = acos(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_a610c4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   acos_a610c4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   acos_a610c4();
 }
diff --git a/test/tint/builtins/gen/literal/acos/dfc915.wgsl b/test/tint/builtins/gen/literal/acos/dfc915.wgsl
index b8d95bd..58a06dd 100644
--- a/test/tint/builtins/gen/literal/acos/dfc915.wgsl
+++ b/test/tint/builtins/gen/literal/acos/dfc915.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = acos(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_dfc915();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   acos_dfc915();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   acos_dfc915();
 }
diff --git a/test/tint/builtins/gen/literal/acos/dfc915.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acos/dfc915.wgsl.expected.wgsl
index e16d1ea..f76f516 100644
--- a/test/tint/builtins/gen/literal/acos/dfc915.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acos/dfc915.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = acos(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_dfc915();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   acos_dfc915();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   acos_dfc915();
 }
diff --git a/test/tint/builtins/gen/literal/all/353d6a.wgsl b/test/tint/builtins/gen/literal/all/353d6a.wgsl
index 2709c44..678b0ce 100644
--- a/test/tint/builtins/gen/literal/all/353d6a.wgsl
+++ b/test/tint/builtins/gen/literal/all/353d6a.wgsl
@@ -28,18 +28,18 @@
   var res: bool = all(bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   all_353d6a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   all_353d6a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   all_353d6a();
 }
diff --git a/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.wgsl
index b1ae87d..2cab924 100644
--- a/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : bool = all(bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   all_353d6a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   all_353d6a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   all_353d6a();
 }
diff --git a/test/tint/builtins/gen/literal/all/986c7b.wgsl b/test/tint/builtins/gen/literal/all/986c7b.wgsl
index 92714f7..1c89cb3 100644
--- a/test/tint/builtins/gen/literal/all/986c7b.wgsl
+++ b/test/tint/builtins/gen/literal/all/986c7b.wgsl
@@ -28,18 +28,18 @@
   var res: bool = all(vec4<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   all_986c7b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   all_986c7b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   all_986c7b();
 }
diff --git a/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.wgsl
index 9195321..c6d562b 100644
--- a/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : bool = all(vec4<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   all_986c7b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   all_986c7b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   all_986c7b();
 }
diff --git a/test/tint/builtins/gen/literal/all/bd2dba.wgsl b/test/tint/builtins/gen/literal/all/bd2dba.wgsl
index e28d07b..df0672c 100644
--- a/test/tint/builtins/gen/literal/all/bd2dba.wgsl
+++ b/test/tint/builtins/gen/literal/all/bd2dba.wgsl
@@ -28,18 +28,18 @@
   var res: bool = all(vec3<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   all_bd2dba();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   all_bd2dba();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   all_bd2dba();
 }
diff --git a/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.wgsl
index 9ec977d..062840b 100644
--- a/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : bool = all(vec3<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   all_bd2dba();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   all_bd2dba();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   all_bd2dba();
 }
diff --git a/test/tint/builtins/gen/literal/all/f46790.wgsl b/test/tint/builtins/gen/literal/all/f46790.wgsl
index cef2ae2..3d5b39f 100644
--- a/test/tint/builtins/gen/literal/all/f46790.wgsl
+++ b/test/tint/builtins/gen/literal/all/f46790.wgsl
@@ -28,18 +28,18 @@
   var res: bool = all(vec2<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   all_f46790();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   all_f46790();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   all_f46790();
 }
diff --git a/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.wgsl
index a222bb5..27bdf58 100644
--- a/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : bool = all(vec2<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   all_f46790();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   all_f46790();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   all_f46790();
 }
diff --git a/test/tint/builtins/gen/literal/any/083428.wgsl b/test/tint/builtins/gen/literal/any/083428.wgsl
index 0d7f1b3..81ce451 100644
--- a/test/tint/builtins/gen/literal/any/083428.wgsl
+++ b/test/tint/builtins/gen/literal/any/083428.wgsl
@@ -28,18 +28,18 @@
   var res: bool = any(vec4<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   any_083428();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   any_083428();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   any_083428();
 }
diff --git a/test/tint/builtins/gen/literal/any/083428.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/any/083428.wgsl.expected.wgsl
index acd23c8..7f58549 100644
--- a/test/tint/builtins/gen/literal/any/083428.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/any/083428.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : bool = any(vec4<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   any_083428();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   any_083428();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   any_083428();
 }
diff --git a/test/tint/builtins/gen/literal/any/0e3e58.wgsl b/test/tint/builtins/gen/literal/any/0e3e58.wgsl
index c71e30b..ddcf052 100644
--- a/test/tint/builtins/gen/literal/any/0e3e58.wgsl
+++ b/test/tint/builtins/gen/literal/any/0e3e58.wgsl
@@ -28,18 +28,18 @@
   var res: bool = any(vec2<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   any_0e3e58();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   any_0e3e58();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   any_0e3e58();
 }
diff --git a/test/tint/builtins/gen/literal/any/0e3e58.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/any/0e3e58.wgsl.expected.wgsl
index c94d9a1..d553b64 100644
--- a/test/tint/builtins/gen/literal/any/0e3e58.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/any/0e3e58.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : bool = any(vec2<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   any_0e3e58();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   any_0e3e58();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   any_0e3e58();
 }
diff --git a/test/tint/builtins/gen/literal/any/2ab91a.wgsl b/test/tint/builtins/gen/literal/any/2ab91a.wgsl
index 819c692..463da0f 100644
--- a/test/tint/builtins/gen/literal/any/2ab91a.wgsl
+++ b/test/tint/builtins/gen/literal/any/2ab91a.wgsl
@@ -28,18 +28,18 @@
   var res: bool = any(bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   any_2ab91a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   any_2ab91a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   any_2ab91a();
 }
diff --git a/test/tint/builtins/gen/literal/any/2ab91a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/any/2ab91a.wgsl.expected.wgsl
index 283ab5a..7300c56 100644
--- a/test/tint/builtins/gen/literal/any/2ab91a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/any/2ab91a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : bool = any(bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   any_2ab91a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   any_2ab91a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   any_2ab91a();
 }
diff --git a/test/tint/builtins/gen/literal/any/e755c1.wgsl b/test/tint/builtins/gen/literal/any/e755c1.wgsl
index 39e9415..2a40218 100644
--- a/test/tint/builtins/gen/literal/any/e755c1.wgsl
+++ b/test/tint/builtins/gen/literal/any/e755c1.wgsl
@@ -28,18 +28,18 @@
   var res: bool = any(vec3<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   any_e755c1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   any_e755c1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   any_e755c1();
 }
diff --git a/test/tint/builtins/gen/literal/any/e755c1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/any/e755c1.wgsl.expected.wgsl
index bf47826..dfbbe68 100644
--- a/test/tint/builtins/gen/literal/any/e755c1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/any/e755c1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : bool = any(vec3<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   any_e755c1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   any_e755c1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   any_e755c1();
 }
diff --git a/test/tint/builtins/gen/literal/arrayLength/1588cd.wgsl b/test/tint/builtins/gen/literal/arrayLength/1588cd.wgsl
index c4dec13..5af41cc 100644
--- a/test/tint/builtins/gen/literal/arrayLength/1588cd.wgsl
+++ b/test/tint/builtins/gen/literal/arrayLength/1588cd.wgsl
@@ -32,18 +32,18 @@
   var res: u32 = arrayLength(&sb_ro.arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_1588cd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_1588cd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_1588cd();
 }
diff --git a/test/tint/builtins/gen/literal/arrayLength/1588cd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/arrayLength/1588cd.wgsl.expected.wgsl
index 2a2648d..8b3b166 100644
--- a/test/tint/builtins/gen/literal/arrayLength/1588cd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/arrayLength/1588cd.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : u32 = arrayLength(&(sb_ro.arg_0));
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_1588cd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_1588cd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_1588cd();
 }
diff --git a/test/tint/builtins/gen/literal/arrayLength/61b1c7.wgsl b/test/tint/builtins/gen/literal/arrayLength/61b1c7.wgsl
index a7adcc1..6e5afea 100644
--- a/test/tint/builtins/gen/literal/arrayLength/61b1c7.wgsl
+++ b/test/tint/builtins/gen/literal/arrayLength/61b1c7.wgsl
@@ -32,18 +32,18 @@
   var res: u32 = arrayLength(&sb_rw.arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_61b1c7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_61b1c7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_61b1c7();
 }
diff --git a/test/tint/builtins/gen/literal/arrayLength/61b1c7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/arrayLength/61b1c7.wgsl.expected.wgsl
index 73dbbb7..b9b63ee 100644
--- a/test/tint/builtins/gen/literal/arrayLength/61b1c7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/arrayLength/61b1c7.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : u32 = arrayLength(&(sb_rw.arg_0));
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_61b1c7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_61b1c7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_61b1c7();
 }
diff --git a/test/tint/builtins/gen/literal/arrayLength/a0f5ca.wgsl b/test/tint/builtins/gen/literal/arrayLength/a0f5ca.wgsl
index 3f83858..547dc4e 100644
--- a/test/tint/builtins/gen/literal/arrayLength/a0f5ca.wgsl
+++ b/test/tint/builtins/gen/literal/arrayLength/a0f5ca.wgsl
@@ -32,18 +32,18 @@
   var res: u32 = arrayLength(&sb_ro.arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_a0f5ca();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_a0f5ca();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_a0f5ca();
 }
diff --git a/test/tint/builtins/gen/literal/arrayLength/a0f5ca.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/arrayLength/a0f5ca.wgsl.expected.wgsl
index a1eb324..fa60a15 100644
--- a/test/tint/builtins/gen/literal/arrayLength/a0f5ca.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/arrayLength/a0f5ca.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : u32 = arrayLength(&(sb_ro.arg_0));
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_a0f5ca();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_a0f5ca();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_a0f5ca();
 }
diff --git a/test/tint/builtins/gen/literal/arrayLength/cdd123.wgsl b/test/tint/builtins/gen/literal/arrayLength/cdd123.wgsl
index 3b38e51..1a1fe99 100644
--- a/test/tint/builtins/gen/literal/arrayLength/cdd123.wgsl
+++ b/test/tint/builtins/gen/literal/arrayLength/cdd123.wgsl
@@ -32,18 +32,18 @@
   var res: u32 = arrayLength(&sb_rw.arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_cdd123();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_cdd123();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_cdd123();
 }
diff --git a/test/tint/builtins/gen/literal/arrayLength/cdd123.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/arrayLength/cdd123.wgsl.expected.wgsl
index 1f2d17c..d792619 100644
--- a/test/tint/builtins/gen/literal/arrayLength/cdd123.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/arrayLength/cdd123.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : u32 = arrayLength(&(sb_rw.arg_0));
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_cdd123();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_cdd123();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_cdd123();
 }
diff --git a/test/tint/builtins/gen/literal/arrayLength/cfca0a.wgsl b/test/tint/builtins/gen/literal/arrayLength/cfca0a.wgsl
index 99d788d..0951ce4 100644
--- a/test/tint/builtins/gen/literal/arrayLength/cfca0a.wgsl
+++ b/test/tint/builtins/gen/literal/arrayLength/cfca0a.wgsl
@@ -32,18 +32,18 @@
   var res: u32 = arrayLength(&sb_ro.arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_cfca0a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_cfca0a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_cfca0a();
 }
diff --git a/test/tint/builtins/gen/literal/arrayLength/cfca0a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/arrayLength/cfca0a.wgsl.expected.wgsl
index 5778963..d741ef0 100644
--- a/test/tint/builtins/gen/literal/arrayLength/cfca0a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/arrayLength/cfca0a.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : u32 = arrayLength(&(sb_ro.arg_0));
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_cfca0a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_cfca0a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_cfca0a();
 }
diff --git a/test/tint/builtins/gen/literal/arrayLength/eb510f.wgsl b/test/tint/builtins/gen/literal/arrayLength/eb510f.wgsl
index cc2627b..2308569 100644
--- a/test/tint/builtins/gen/literal/arrayLength/eb510f.wgsl
+++ b/test/tint/builtins/gen/literal/arrayLength/eb510f.wgsl
@@ -32,18 +32,18 @@
   var res: u32 = arrayLength(&sb_rw.arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_eb510f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_eb510f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_eb510f();
 }
diff --git a/test/tint/builtins/gen/literal/arrayLength/eb510f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/arrayLength/eb510f.wgsl.expected.wgsl
index 805917c..a048944 100644
--- a/test/tint/builtins/gen/literal/arrayLength/eb510f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/arrayLength/eb510f.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : u32 = arrayLength(&(sb_rw.arg_0));
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_eb510f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_eb510f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_eb510f();
 }
diff --git a/test/tint/builtins/gen/literal/asin/064953.wgsl b/test/tint/builtins/gen/literal/asin/064953.wgsl
index 0d11d1d..f220fee 100644
--- a/test/tint/builtins/gen/literal/asin/064953.wgsl
+++ b/test/tint/builtins/gen/literal/asin/064953.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = asin(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_064953();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   asin_064953();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   asin_064953();
 }
diff --git a/test/tint/builtins/gen/literal/asin/064953.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asin/064953.wgsl.expected.wgsl
index ed58d99..6dadefd 100644
--- a/test/tint/builtins/gen/literal/asin/064953.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asin/064953.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = asin(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_064953();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   asin_064953();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   asin_064953();
 }
diff --git a/test/tint/builtins/gen/literal/asin/7b6a44.wgsl b/test/tint/builtins/gen/literal/asin/7b6a44.wgsl
index d51fc3f..c57c3a1 100644
--- a/test/tint/builtins/gen/literal/asin/7b6a44.wgsl
+++ b/test/tint/builtins/gen/literal/asin/7b6a44.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = asin(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_7b6a44();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   asin_7b6a44();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   asin_7b6a44();
 }
diff --git a/test/tint/builtins/gen/literal/asin/7b6a44.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asin/7b6a44.wgsl.expected.wgsl
index d70e952..f45d522 100644
--- a/test/tint/builtins/gen/literal/asin/7b6a44.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asin/7b6a44.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = asin(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_7b6a44();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   asin_7b6a44();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   asin_7b6a44();
 }
diff --git a/test/tint/builtins/gen/literal/asin/8cd9c9.wgsl b/test/tint/builtins/gen/literal/asin/8cd9c9.wgsl
index 0fec623..b266449 100644
--- a/test/tint/builtins/gen/literal/asin/8cd9c9.wgsl
+++ b/test/tint/builtins/gen/literal/asin/8cd9c9.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = asin(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_8cd9c9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   asin_8cd9c9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   asin_8cd9c9();
 }
diff --git a/test/tint/builtins/gen/literal/asin/8cd9c9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asin/8cd9c9.wgsl.expected.wgsl
index 2f4ea23..6a6b96a 100644
--- a/test/tint/builtins/gen/literal/asin/8cd9c9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asin/8cd9c9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = asin(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_8cd9c9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   asin_8cd9c9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   asin_8cd9c9();
 }
diff --git a/test/tint/builtins/gen/literal/asin/c0c272.wgsl b/test/tint/builtins/gen/literal/asin/c0c272.wgsl
index 1557428..5c7a0b5 100644
--- a/test/tint/builtins/gen/literal/asin/c0c272.wgsl
+++ b/test/tint/builtins/gen/literal/asin/c0c272.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = asin(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_c0c272();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   asin_c0c272();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   asin_c0c272();
 }
diff --git a/test/tint/builtins/gen/literal/asin/c0c272.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asin/c0c272.wgsl.expected.wgsl
index d3a8d05..731845e 100644
--- a/test/tint/builtins/gen/literal/asin/c0c272.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asin/c0c272.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = asin(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_c0c272();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   asin_c0c272();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   asin_c0c272();
 }
diff --git a/test/tint/builtins/gen/literal/atan/02979a.wgsl b/test/tint/builtins/gen/literal/atan/02979a.wgsl
index 11619cc..84a3189 100644
--- a/test/tint/builtins/gen/literal/atan/02979a.wgsl
+++ b/test/tint/builtins/gen/literal/atan/02979a.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = atan(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_02979a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan_02979a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan_02979a();
 }
diff --git a/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.wgsl
index 75af743..5e33806 100644
--- a/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = atan(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_02979a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan_02979a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan_02979a();
 }
diff --git a/test/tint/builtins/gen/literal/atan/331e6d.wgsl b/test/tint/builtins/gen/literal/atan/331e6d.wgsl
index d3bac2d..7e8bf08 100644
--- a/test/tint/builtins/gen/literal/atan/331e6d.wgsl
+++ b/test/tint/builtins/gen/literal/atan/331e6d.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = atan(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_331e6d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan_331e6d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan_331e6d();
 }
diff --git a/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.wgsl
index 7bc7982..def3810 100644
--- a/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = atan(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_331e6d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan_331e6d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan_331e6d();
 }
diff --git a/test/tint/builtins/gen/literal/atan/a8b696.wgsl b/test/tint/builtins/gen/literal/atan/a8b696.wgsl
index e517917..4ea6dec 100644
--- a/test/tint/builtins/gen/literal/atan/a8b696.wgsl
+++ b/test/tint/builtins/gen/literal/atan/a8b696.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = atan(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_a8b696();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan_a8b696();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan_a8b696();
 }
diff --git a/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.wgsl
index 70b4684..007981d 100644
--- a/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = atan(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_a8b696();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan_a8b696();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan_a8b696();
 }
diff --git a/test/tint/builtins/gen/literal/atan/ad96e4.wgsl b/test/tint/builtins/gen/literal/atan/ad96e4.wgsl
index 75a7564..2cb00b6 100644
--- a/test/tint/builtins/gen/literal/atan/ad96e4.wgsl
+++ b/test/tint/builtins/gen/literal/atan/ad96e4.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = atan(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_ad96e4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan_ad96e4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan_ad96e4();
 }
diff --git a/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.wgsl
index dcf775a..d2622df 100644
--- a/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = atan(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_ad96e4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan_ad96e4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan_ad96e4();
 }
diff --git a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl
index e1d1967..204c83a 100644
--- a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = atan2(vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_57fb13();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan2_57fb13();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan2_57fb13();
 }
diff --git a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.wgsl
index ec7ff3a..57193fb 100644
--- a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = atan2(vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_57fb13();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan2_57fb13();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan2_57fb13();
 }
diff --git a/test/tint/builtins/gen/literal/atan2/96057c.wgsl b/test/tint/builtins/gen/literal/atan2/96057c.wgsl
index d4c2769..5327ebb 100644
--- a/test/tint/builtins/gen/literal/atan2/96057c.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/96057c.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = atan2(1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_96057c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan2_96057c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan2_96057c();
 }
diff --git a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.wgsl
index 78abdd4..9a2817d 100644
--- a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = atan2(1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_96057c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan2_96057c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan2_96057c();
 }
diff --git a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl
index 7341157..5822a6b 100644
--- a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = atan2(vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_a70d0d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan2_a70d0d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan2_a70d0d();
 }
diff --git a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.wgsl
index 9b32967..99d3201 100644
--- a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = atan2(vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_a70d0d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan2_a70d0d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan2_a70d0d();
 }
diff --git a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl
index 3b02156..08c2bdf 100644
--- a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = atan2(vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_ae713e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan2_ae713e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan2_ae713e();
 }
diff --git a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.wgsl
index d765ab4..dc1a474 100644
--- a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = atan2(vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_ae713e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan2_ae713e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan2_ae713e();
 }
diff --git a/test/tint/builtins/gen/literal/atomicAdd/794055.wgsl b/test/tint/builtins/gen/literal/atomicAdd/794055.wgsl
index 56d9338..2f3cab3 100644
--- a/test/tint/builtins/gen/literal/atomicAdd/794055.wgsl
+++ b/test/tint/builtins/gen/literal/atomicAdd/794055.wgsl
@@ -29,7 +29,7 @@
   var res: i32 = atomicAdd(&arg_0, 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAdd_794055();
 }
diff --git a/test/tint/builtins/gen/literal/atomicAdd/794055.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicAdd/794055.wgsl.expected.wgsl
index 57290be..ce52b8f 100644
--- a/test/tint/builtins/gen/literal/atomicAdd/794055.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicAdd/794055.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : i32 = atomicAdd(&(arg_0), 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAdd_794055();
 }
diff --git a/test/tint/builtins/gen/literal/atomicAdd/8a199a.wgsl b/test/tint/builtins/gen/literal/atomicAdd/8a199a.wgsl
index 91e2298..3975fb6 100644
--- a/test/tint/builtins/gen/literal/atomicAdd/8a199a.wgsl
+++ b/test/tint/builtins/gen/literal/atomicAdd/8a199a.wgsl
@@ -32,12 +32,12 @@
   var res: u32 = atomicAdd(&sb_rw.arg_0, 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicAdd_8a199a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAdd_8a199a();
 }
diff --git a/test/tint/builtins/gen/literal/atomicAdd/8a199a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicAdd/8a199a.wgsl.expected.wgsl
index c97cce1..973ffe2 100644
--- a/test/tint/builtins/gen/literal/atomicAdd/8a199a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicAdd/8a199a.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : u32 = atomicAdd(&(sb_rw.arg_0), 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicAdd_8a199a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAdd_8a199a();
 }
diff --git a/test/tint/builtins/gen/literal/atomicAdd/d32fe4.wgsl b/test/tint/builtins/gen/literal/atomicAdd/d32fe4.wgsl
index 8bbef8b..eb5a968 100644
--- a/test/tint/builtins/gen/literal/atomicAdd/d32fe4.wgsl
+++ b/test/tint/builtins/gen/literal/atomicAdd/d32fe4.wgsl
@@ -32,12 +32,12 @@
   var res: i32 = atomicAdd(&sb_rw.arg_0, 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicAdd_d32fe4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAdd_d32fe4();
 }
diff --git a/test/tint/builtins/gen/literal/atomicAdd/d32fe4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicAdd/d32fe4.wgsl.expected.wgsl
index 9eeac04..4303284 100644
--- a/test/tint/builtins/gen/literal/atomicAdd/d32fe4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicAdd/d32fe4.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : i32 = atomicAdd(&(sb_rw.arg_0), 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicAdd_d32fe4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAdd_d32fe4();
 }
diff --git a/test/tint/builtins/gen/literal/atomicAdd/d5db1d.wgsl b/test/tint/builtins/gen/literal/atomicAdd/d5db1d.wgsl
index b5e30f2..5742c49 100644
--- a/test/tint/builtins/gen/literal/atomicAdd/d5db1d.wgsl
+++ b/test/tint/builtins/gen/literal/atomicAdd/d5db1d.wgsl
@@ -29,7 +29,7 @@
   var res: u32 = atomicAdd(&arg_0, 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAdd_d5db1d();
 }
diff --git a/test/tint/builtins/gen/literal/atomicAdd/d5db1d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicAdd/d5db1d.wgsl.expected.wgsl
index e7381bb..22b1fbb 100644
--- a/test/tint/builtins/gen/literal/atomicAdd/d5db1d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicAdd/d5db1d.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : u32 = atomicAdd(&(arg_0), 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAdd_d5db1d();
 }
diff --git a/test/tint/builtins/gen/literal/atomicAnd/152966.wgsl b/test/tint/builtins/gen/literal/atomicAnd/152966.wgsl
index 4409003..803964f 100644
--- a/test/tint/builtins/gen/literal/atomicAnd/152966.wgsl
+++ b/test/tint/builtins/gen/literal/atomicAnd/152966.wgsl
@@ -32,12 +32,12 @@
   var res: i32 = atomicAnd(&sb_rw.arg_0, 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicAnd_152966();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAnd_152966();
 }
diff --git a/test/tint/builtins/gen/literal/atomicAnd/152966.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicAnd/152966.wgsl.expected.wgsl
index ec13db7..38d19dd 100644
--- a/test/tint/builtins/gen/literal/atomicAnd/152966.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicAnd/152966.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : i32 = atomicAnd(&(sb_rw.arg_0), 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicAnd_152966();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAnd_152966();
 }
diff --git a/test/tint/builtins/gen/literal/atomicAnd/34edd3.wgsl b/test/tint/builtins/gen/literal/atomicAnd/34edd3.wgsl
index 4029423..0e9a314 100644
--- a/test/tint/builtins/gen/literal/atomicAnd/34edd3.wgsl
+++ b/test/tint/builtins/gen/literal/atomicAnd/34edd3.wgsl
@@ -29,7 +29,7 @@
   var res: u32 = atomicAnd(&arg_0, 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAnd_34edd3();
 }
diff --git a/test/tint/builtins/gen/literal/atomicAnd/34edd3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicAnd/34edd3.wgsl.expected.wgsl
index 89cec48..7cae2d8 100644
--- a/test/tint/builtins/gen/literal/atomicAnd/34edd3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicAnd/34edd3.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : u32 = atomicAnd(&(arg_0), 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAnd_34edd3();
 }
diff --git a/test/tint/builtins/gen/literal/atomicAnd/45a819.wgsl b/test/tint/builtins/gen/literal/atomicAnd/45a819.wgsl
index b47df1c..0924c7a 100644
--- a/test/tint/builtins/gen/literal/atomicAnd/45a819.wgsl
+++ b/test/tint/builtins/gen/literal/atomicAnd/45a819.wgsl
@@ -29,7 +29,7 @@
   var res: i32 = atomicAnd(&arg_0, 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAnd_45a819();
 }
diff --git a/test/tint/builtins/gen/literal/atomicAnd/45a819.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicAnd/45a819.wgsl.expected.wgsl
index c022cee..a93b45a 100644
--- a/test/tint/builtins/gen/literal/atomicAnd/45a819.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicAnd/45a819.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : i32 = atomicAnd(&(arg_0), 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAnd_45a819();
 }
diff --git a/test/tint/builtins/gen/literal/atomicAnd/85a8d9.wgsl b/test/tint/builtins/gen/literal/atomicAnd/85a8d9.wgsl
index 2948f9a..5c402de 100644
--- a/test/tint/builtins/gen/literal/atomicAnd/85a8d9.wgsl
+++ b/test/tint/builtins/gen/literal/atomicAnd/85a8d9.wgsl
@@ -32,12 +32,12 @@
   var res: u32 = atomicAnd(&sb_rw.arg_0, 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicAnd_85a8d9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAnd_85a8d9();
 }
diff --git a/test/tint/builtins/gen/literal/atomicAnd/85a8d9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicAnd/85a8d9.wgsl.expected.wgsl
index 3a32a76..f570c70 100644
--- a/test/tint/builtins/gen/literal/atomicAnd/85a8d9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicAnd/85a8d9.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : u32 = atomicAnd(&(sb_rw.arg_0), 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicAnd_85a8d9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAnd_85a8d9();
 }
diff --git a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/1bd40a.wgsl b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/1bd40a.wgsl
index 7732bd9..ac831e6 100644
--- a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/1bd40a.wgsl
+++ b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/1bd40a.wgsl
@@ -32,12 +32,12 @@
   var res = atomicCompareExchangeWeak(&sb_rw.arg_0, 1, 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicCompareExchangeWeak_1bd40a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_1bd40a();
 }
diff --git a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/1bd40a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/1bd40a.wgsl.expected.wgsl
index 7e22177..d52ac19 100644
--- a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/1bd40a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/1bd40a.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res = atomicCompareExchangeWeak(&(sb_rw.arg_0), 1, 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicCompareExchangeWeak_1bd40a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_1bd40a();
 }
diff --git a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/63d8e6.wgsl b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/63d8e6.wgsl
index 61972dc..360c33c 100644
--- a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/63d8e6.wgsl
+++ b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/63d8e6.wgsl
@@ -32,12 +32,12 @@
   var res = atomicCompareExchangeWeak(&sb_rw.arg_0, 1u, 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicCompareExchangeWeak_63d8e6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_63d8e6();
 }
diff --git a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/63d8e6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/63d8e6.wgsl.expected.wgsl
index 3ecac33..af3d89f 100644
--- a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/63d8e6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/63d8e6.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res = atomicCompareExchangeWeak(&(sb_rw.arg_0), 1u, 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicCompareExchangeWeak_63d8e6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_63d8e6();
 }
diff --git a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/83580d.wgsl b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/83580d.wgsl
index 9545b42..2677d48 100644
--- a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/83580d.wgsl
+++ b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/83580d.wgsl
@@ -29,7 +29,7 @@
   var res = atomicCompareExchangeWeak(&arg_0, 1u, 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_83580d();
 }
diff --git a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/83580d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/83580d.wgsl.expected.wgsl
index 77a8862..aec8cab 100644
--- a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/83580d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/83580d.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res = atomicCompareExchangeWeak(&(arg_0), 1u, 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_83580d();
 }
diff --git a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/e88938.wgsl b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/e88938.wgsl
index 03076c5..4d9299f 100644
--- a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/e88938.wgsl
+++ b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/e88938.wgsl
@@ -29,7 +29,7 @@
   var res = atomicCompareExchangeWeak(&arg_0, 1, 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_e88938();
 }
diff --git a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/e88938.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/e88938.wgsl.expected.wgsl
index e882b01..d79317d 100644
--- a/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/e88938.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicCompareExchangeWeak/e88938.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res = atomicCompareExchangeWeak(&(arg_0), 1, 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_e88938();
 }
diff --git a/test/tint/builtins/gen/literal/atomicExchange/0a5dca.wgsl b/test/tint/builtins/gen/literal/atomicExchange/0a5dca.wgsl
index eea1d0f..5f3fbf7 100644
--- a/test/tint/builtins/gen/literal/atomicExchange/0a5dca.wgsl
+++ b/test/tint/builtins/gen/literal/atomicExchange/0a5dca.wgsl
@@ -29,7 +29,7 @@
   var res: u32 = atomicExchange(&arg_0, 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicExchange_0a5dca();
 }
diff --git a/test/tint/builtins/gen/literal/atomicExchange/0a5dca.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicExchange/0a5dca.wgsl.expected.wgsl
index a7acabd..cf1786b 100644
--- a/test/tint/builtins/gen/literal/atomicExchange/0a5dca.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicExchange/0a5dca.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : u32 = atomicExchange(&(arg_0), 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicExchange_0a5dca();
 }
diff --git a/test/tint/builtins/gen/literal/atomicExchange/d59712.wgsl b/test/tint/builtins/gen/literal/atomicExchange/d59712.wgsl
index e47ed14..a41a0be 100644
--- a/test/tint/builtins/gen/literal/atomicExchange/d59712.wgsl
+++ b/test/tint/builtins/gen/literal/atomicExchange/d59712.wgsl
@@ -32,12 +32,12 @@
   var res: u32 = atomicExchange(&sb_rw.arg_0, 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicExchange_d59712();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicExchange_d59712();
 }
diff --git a/test/tint/builtins/gen/literal/atomicExchange/d59712.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicExchange/d59712.wgsl.expected.wgsl
index 2e72015..1fda804 100644
--- a/test/tint/builtins/gen/literal/atomicExchange/d59712.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicExchange/d59712.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : u32 = atomicExchange(&(sb_rw.arg_0), 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicExchange_d59712();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicExchange_d59712();
 }
diff --git a/test/tint/builtins/gen/literal/atomicExchange/e114ba.wgsl b/test/tint/builtins/gen/literal/atomicExchange/e114ba.wgsl
index 541c188..4ec862b 100644
--- a/test/tint/builtins/gen/literal/atomicExchange/e114ba.wgsl
+++ b/test/tint/builtins/gen/literal/atomicExchange/e114ba.wgsl
@@ -29,7 +29,7 @@
   var res: i32 = atomicExchange(&arg_0, 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicExchange_e114ba();
 }
diff --git a/test/tint/builtins/gen/literal/atomicExchange/e114ba.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicExchange/e114ba.wgsl.expected.wgsl
index 9735838..785a006 100644
--- a/test/tint/builtins/gen/literal/atomicExchange/e114ba.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicExchange/e114ba.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : i32 = atomicExchange(&(arg_0), 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicExchange_e114ba();
 }
diff --git a/test/tint/builtins/gen/literal/atomicExchange/f2e22f.wgsl b/test/tint/builtins/gen/literal/atomicExchange/f2e22f.wgsl
index 5832659..5d11139 100644
--- a/test/tint/builtins/gen/literal/atomicExchange/f2e22f.wgsl
+++ b/test/tint/builtins/gen/literal/atomicExchange/f2e22f.wgsl
@@ -32,12 +32,12 @@
   var res: i32 = atomicExchange(&sb_rw.arg_0, 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicExchange_f2e22f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicExchange_f2e22f();
 }
diff --git a/test/tint/builtins/gen/literal/atomicExchange/f2e22f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicExchange/f2e22f.wgsl.expected.wgsl
index 5405f25..4b473d2 100644
--- a/test/tint/builtins/gen/literal/atomicExchange/f2e22f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicExchange/f2e22f.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : i32 = atomicExchange(&(sb_rw.arg_0), 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicExchange_f2e22f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicExchange_f2e22f();
 }
diff --git a/test/tint/builtins/gen/literal/atomicLoad/0806ad.wgsl b/test/tint/builtins/gen/literal/atomicLoad/0806ad.wgsl
index e20d830..e2cee71 100644
--- a/test/tint/builtins/gen/literal/atomicLoad/0806ad.wgsl
+++ b/test/tint/builtins/gen/literal/atomicLoad/0806ad.wgsl
@@ -32,12 +32,12 @@
   var res: i32 = atomicLoad(&sb_rw.arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicLoad_0806ad();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicLoad_0806ad();
 }
diff --git a/test/tint/builtins/gen/literal/atomicLoad/0806ad.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicLoad/0806ad.wgsl.expected.wgsl
index e761dd9..06c2703 100644
--- a/test/tint/builtins/gen/literal/atomicLoad/0806ad.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicLoad/0806ad.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : i32 = atomicLoad(&(sb_rw.arg_0));
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicLoad_0806ad();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicLoad_0806ad();
 }
diff --git a/test/tint/builtins/gen/literal/atomicLoad/361bf1.wgsl b/test/tint/builtins/gen/literal/atomicLoad/361bf1.wgsl
index e0cc43f..3ebeea9 100644
--- a/test/tint/builtins/gen/literal/atomicLoad/361bf1.wgsl
+++ b/test/tint/builtins/gen/literal/atomicLoad/361bf1.wgsl
@@ -29,7 +29,7 @@
   var res: u32 = atomicLoad(&arg_0);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicLoad_361bf1();
 }
diff --git a/test/tint/builtins/gen/literal/atomicLoad/361bf1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicLoad/361bf1.wgsl.expected.wgsl
index 1040bf2..2fb4caa 100644
--- a/test/tint/builtins/gen/literal/atomicLoad/361bf1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicLoad/361bf1.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : u32 = atomicLoad(&(arg_0));
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicLoad_361bf1();
 }
diff --git a/test/tint/builtins/gen/literal/atomicLoad/afcc03.wgsl b/test/tint/builtins/gen/literal/atomicLoad/afcc03.wgsl
index 025384f..bc946af 100644
--- a/test/tint/builtins/gen/literal/atomicLoad/afcc03.wgsl
+++ b/test/tint/builtins/gen/literal/atomicLoad/afcc03.wgsl
@@ -29,7 +29,7 @@
   var res: i32 = atomicLoad(&arg_0);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicLoad_afcc03();
 }
diff --git a/test/tint/builtins/gen/literal/atomicLoad/afcc03.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicLoad/afcc03.wgsl.expected.wgsl
index e39317d..37509ca 100644
--- a/test/tint/builtins/gen/literal/atomicLoad/afcc03.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicLoad/afcc03.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : i32 = atomicLoad(&(arg_0));
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicLoad_afcc03();
 }
diff --git a/test/tint/builtins/gen/literal/atomicLoad/fe6cc3.wgsl b/test/tint/builtins/gen/literal/atomicLoad/fe6cc3.wgsl
index 63b1594..6c29700 100644
--- a/test/tint/builtins/gen/literal/atomicLoad/fe6cc3.wgsl
+++ b/test/tint/builtins/gen/literal/atomicLoad/fe6cc3.wgsl
@@ -32,12 +32,12 @@
   var res: u32 = atomicLoad(&sb_rw.arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicLoad_fe6cc3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicLoad_fe6cc3();
 }
diff --git a/test/tint/builtins/gen/literal/atomicLoad/fe6cc3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicLoad/fe6cc3.wgsl.expected.wgsl
index f811ee3..8691467 100644
--- a/test/tint/builtins/gen/literal/atomicLoad/fe6cc3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicLoad/fe6cc3.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : u32 = atomicLoad(&(sb_rw.arg_0));
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicLoad_fe6cc3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicLoad_fe6cc3();
 }
diff --git a/test/tint/builtins/gen/literal/atomicMax/51b9be.wgsl b/test/tint/builtins/gen/literal/atomicMax/51b9be.wgsl
index f83327c..905b7a8 100644
--- a/test/tint/builtins/gen/literal/atomicMax/51b9be.wgsl
+++ b/test/tint/builtins/gen/literal/atomicMax/51b9be.wgsl
@@ -32,12 +32,12 @@
   var res: u32 = atomicMax(&sb_rw.arg_0, 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicMax_51b9be();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMax_51b9be();
 }
diff --git a/test/tint/builtins/gen/literal/atomicMax/51b9be.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicMax/51b9be.wgsl.expected.wgsl
index ec37f39..f59ae6d 100644
--- a/test/tint/builtins/gen/literal/atomicMax/51b9be.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicMax/51b9be.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : u32 = atomicMax(&(sb_rw.arg_0), 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicMax_51b9be();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMax_51b9be();
 }
diff --git a/test/tint/builtins/gen/literal/atomicMax/92aa72.wgsl b/test/tint/builtins/gen/literal/atomicMax/92aa72.wgsl
index 29f0e77..14f8505 100644
--- a/test/tint/builtins/gen/literal/atomicMax/92aa72.wgsl
+++ b/test/tint/builtins/gen/literal/atomicMax/92aa72.wgsl
@@ -32,12 +32,12 @@
   var res: i32 = atomicMax(&sb_rw.arg_0, 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicMax_92aa72();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMax_92aa72();
 }
diff --git a/test/tint/builtins/gen/literal/atomicMax/92aa72.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicMax/92aa72.wgsl.expected.wgsl
index 24dcfcc..ead8895 100644
--- a/test/tint/builtins/gen/literal/atomicMax/92aa72.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicMax/92aa72.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : i32 = atomicMax(&(sb_rw.arg_0), 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicMax_92aa72();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMax_92aa72();
 }
diff --git a/test/tint/builtins/gen/literal/atomicMax/a89cc3.wgsl b/test/tint/builtins/gen/literal/atomicMax/a89cc3.wgsl
index c008f25..c612589 100644
--- a/test/tint/builtins/gen/literal/atomicMax/a89cc3.wgsl
+++ b/test/tint/builtins/gen/literal/atomicMax/a89cc3.wgsl
@@ -29,7 +29,7 @@
   var res: i32 = atomicMax(&arg_0, 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMax_a89cc3();
 }
diff --git a/test/tint/builtins/gen/literal/atomicMax/a89cc3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicMax/a89cc3.wgsl.expected.wgsl
index d36703e..80c0ae1 100644
--- a/test/tint/builtins/gen/literal/atomicMax/a89cc3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicMax/a89cc3.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : i32 = atomicMax(&(arg_0), 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMax_a89cc3();
 }
diff --git a/test/tint/builtins/gen/literal/atomicMax/beccfc.wgsl b/test/tint/builtins/gen/literal/atomicMax/beccfc.wgsl
index eee2d88..b1a20cf 100644
--- a/test/tint/builtins/gen/literal/atomicMax/beccfc.wgsl
+++ b/test/tint/builtins/gen/literal/atomicMax/beccfc.wgsl
@@ -29,7 +29,7 @@
   var res: u32 = atomicMax(&arg_0, 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMax_beccfc();
 }
diff --git a/test/tint/builtins/gen/literal/atomicMax/beccfc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicMax/beccfc.wgsl.expected.wgsl
index f14f91a..7b1f90a 100644
--- a/test/tint/builtins/gen/literal/atomicMax/beccfc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicMax/beccfc.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : u32 = atomicMax(&(arg_0), 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMax_beccfc();
 }
diff --git a/test/tint/builtins/gen/literal/atomicMin/278235.wgsl b/test/tint/builtins/gen/literal/atomicMin/278235.wgsl
index e21994e..9edf832 100644
--- a/test/tint/builtins/gen/literal/atomicMin/278235.wgsl
+++ b/test/tint/builtins/gen/literal/atomicMin/278235.wgsl
@@ -29,7 +29,7 @@
   var res: i32 = atomicMin(&arg_0, 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMin_278235();
 }
diff --git a/test/tint/builtins/gen/literal/atomicMin/278235.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicMin/278235.wgsl.expected.wgsl
index 981a7b3..9619e26 100644
--- a/test/tint/builtins/gen/literal/atomicMin/278235.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicMin/278235.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : i32 = atomicMin(&(arg_0), 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMin_278235();
 }
diff --git a/test/tint/builtins/gen/literal/atomicMin/69d383.wgsl b/test/tint/builtins/gen/literal/atomicMin/69d383.wgsl
index 1eacad5..f7f6f33 100644
--- a/test/tint/builtins/gen/literal/atomicMin/69d383.wgsl
+++ b/test/tint/builtins/gen/literal/atomicMin/69d383.wgsl
@@ -29,7 +29,7 @@
   var res: u32 = atomicMin(&arg_0, 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMin_69d383();
 }
diff --git a/test/tint/builtins/gen/literal/atomicMin/69d383.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicMin/69d383.wgsl.expected.wgsl
index 034d1af..1fba69f 100644
--- a/test/tint/builtins/gen/literal/atomicMin/69d383.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicMin/69d383.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : u32 = atomicMin(&(arg_0), 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMin_69d383();
 }
diff --git a/test/tint/builtins/gen/literal/atomicMin/8e38dc.wgsl b/test/tint/builtins/gen/literal/atomicMin/8e38dc.wgsl
index 66134fe..7a79d74 100644
--- a/test/tint/builtins/gen/literal/atomicMin/8e38dc.wgsl
+++ b/test/tint/builtins/gen/literal/atomicMin/8e38dc.wgsl
@@ -32,12 +32,12 @@
   var res: i32 = atomicMin(&sb_rw.arg_0, 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicMin_8e38dc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMin_8e38dc();
 }
diff --git a/test/tint/builtins/gen/literal/atomicMin/8e38dc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicMin/8e38dc.wgsl.expected.wgsl
index bd66a39..7b64966 100644
--- a/test/tint/builtins/gen/literal/atomicMin/8e38dc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicMin/8e38dc.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : i32 = atomicMin(&(sb_rw.arg_0), 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicMin_8e38dc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMin_8e38dc();
 }
diff --git a/test/tint/builtins/gen/literal/atomicMin/c67a74.wgsl b/test/tint/builtins/gen/literal/atomicMin/c67a74.wgsl
index 150bb3f..9047662 100644
--- a/test/tint/builtins/gen/literal/atomicMin/c67a74.wgsl
+++ b/test/tint/builtins/gen/literal/atomicMin/c67a74.wgsl
@@ -32,12 +32,12 @@
   var res: u32 = atomicMin(&sb_rw.arg_0, 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicMin_c67a74();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMin_c67a74();
 }
diff --git a/test/tint/builtins/gen/literal/atomicMin/c67a74.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicMin/c67a74.wgsl.expected.wgsl
index 96d7c2a..cd9b000 100644
--- a/test/tint/builtins/gen/literal/atomicMin/c67a74.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicMin/c67a74.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : u32 = atomicMin(&(sb_rw.arg_0), 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicMin_c67a74();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMin_c67a74();
 }
diff --git a/test/tint/builtins/gen/literal/atomicOr/5e3d61.wgsl b/test/tint/builtins/gen/literal/atomicOr/5e3d61.wgsl
index 17f9ba17..1b49098 100644
--- a/test/tint/builtins/gen/literal/atomicOr/5e3d61.wgsl
+++ b/test/tint/builtins/gen/literal/atomicOr/5e3d61.wgsl
@@ -29,7 +29,7 @@
   var res: u32 = atomicOr(&arg_0, 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicOr_5e3d61();
 }
diff --git a/test/tint/builtins/gen/literal/atomicOr/5e3d61.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicOr/5e3d61.wgsl.expected.wgsl
index 00f3e66..9de0d3f 100644
--- a/test/tint/builtins/gen/literal/atomicOr/5e3d61.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicOr/5e3d61.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : u32 = atomicOr(&(arg_0), 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicOr_5e3d61();
 }
diff --git a/test/tint/builtins/gen/literal/atomicOr/5e95d4.wgsl b/test/tint/builtins/gen/literal/atomicOr/5e95d4.wgsl
index 64fd1553..36a3ff6 100644
--- a/test/tint/builtins/gen/literal/atomicOr/5e95d4.wgsl
+++ b/test/tint/builtins/gen/literal/atomicOr/5e95d4.wgsl
@@ -32,12 +32,12 @@
   var res: u32 = atomicOr(&sb_rw.arg_0, 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicOr_5e95d4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicOr_5e95d4();
 }
diff --git a/test/tint/builtins/gen/literal/atomicOr/5e95d4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicOr/5e95d4.wgsl.expected.wgsl
index 1d8867e..839af64 100644
--- a/test/tint/builtins/gen/literal/atomicOr/5e95d4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicOr/5e95d4.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : u32 = atomicOr(&(sb_rw.arg_0), 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicOr_5e95d4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicOr_5e95d4();
 }
diff --git a/test/tint/builtins/gen/literal/atomicOr/8d96a0.wgsl b/test/tint/builtins/gen/literal/atomicOr/8d96a0.wgsl
index 506fe20..354a4ef 100644
--- a/test/tint/builtins/gen/literal/atomicOr/8d96a0.wgsl
+++ b/test/tint/builtins/gen/literal/atomicOr/8d96a0.wgsl
@@ -32,12 +32,12 @@
   var res: i32 = atomicOr(&sb_rw.arg_0, 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicOr_8d96a0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicOr_8d96a0();
 }
diff --git a/test/tint/builtins/gen/literal/atomicOr/8d96a0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicOr/8d96a0.wgsl.expected.wgsl
index c9b1604..9cae8d3 100644
--- a/test/tint/builtins/gen/literal/atomicOr/8d96a0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicOr/8d96a0.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : i32 = atomicOr(&(sb_rw.arg_0), 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicOr_8d96a0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicOr_8d96a0();
 }
diff --git a/test/tint/builtins/gen/literal/atomicOr/d09248.wgsl b/test/tint/builtins/gen/literal/atomicOr/d09248.wgsl
index 29d80f8..35f12d8 100644
--- a/test/tint/builtins/gen/literal/atomicOr/d09248.wgsl
+++ b/test/tint/builtins/gen/literal/atomicOr/d09248.wgsl
@@ -29,7 +29,7 @@
   var res: i32 = atomicOr(&arg_0, 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicOr_d09248();
 }
diff --git a/test/tint/builtins/gen/literal/atomicOr/d09248.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicOr/d09248.wgsl.expected.wgsl
index c28f1c7..38bb462 100644
--- a/test/tint/builtins/gen/literal/atomicOr/d09248.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicOr/d09248.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : i32 = atomicOr(&(arg_0), 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicOr_d09248();
 }
diff --git a/test/tint/builtins/gen/literal/atomicStore/726882.wgsl b/test/tint/builtins/gen/literal/atomicStore/726882.wgsl
index c9ebbff..06da7e5 100644
--- a/test/tint/builtins/gen/literal/atomicStore/726882.wgsl
+++ b/test/tint/builtins/gen/literal/atomicStore/726882.wgsl
@@ -29,7 +29,7 @@
   atomicStore(&arg_0, 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicStore_726882();
 }
diff --git a/test/tint/builtins/gen/literal/atomicStore/726882.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicStore/726882.wgsl.expected.wgsl
index d81b71e..e50c9e2 100644
--- a/test/tint/builtins/gen/literal/atomicStore/726882.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicStore/726882.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   atomicStore(&(arg_0), 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicStore_726882();
 }
diff --git a/test/tint/builtins/gen/literal/atomicStore/8bea94.wgsl b/test/tint/builtins/gen/literal/atomicStore/8bea94.wgsl
index 079c62e..86770ab 100644
--- a/test/tint/builtins/gen/literal/atomicStore/8bea94.wgsl
+++ b/test/tint/builtins/gen/literal/atomicStore/8bea94.wgsl
@@ -29,7 +29,7 @@
   atomicStore(&arg_0, 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicStore_8bea94();
 }
diff --git a/test/tint/builtins/gen/literal/atomicStore/8bea94.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicStore/8bea94.wgsl.expected.wgsl
index 2616d87..a2394c2 100644
--- a/test/tint/builtins/gen/literal/atomicStore/8bea94.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicStore/8bea94.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   atomicStore(&(arg_0), 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicStore_8bea94();
 }
diff --git a/test/tint/builtins/gen/literal/atomicStore/cdc29e.wgsl b/test/tint/builtins/gen/literal/atomicStore/cdc29e.wgsl
index 1b35f80..9ac610e 100644
--- a/test/tint/builtins/gen/literal/atomicStore/cdc29e.wgsl
+++ b/test/tint/builtins/gen/literal/atomicStore/cdc29e.wgsl
@@ -32,12 +32,12 @@
   atomicStore(&sb_rw.arg_0, 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicStore_cdc29e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicStore_cdc29e();
 }
diff --git a/test/tint/builtins/gen/literal/atomicStore/cdc29e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicStore/cdc29e.wgsl.expected.wgsl
index 6da44d4..61aa944 100644
--- a/test/tint/builtins/gen/literal/atomicStore/cdc29e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicStore/cdc29e.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   atomicStore(&(sb_rw.arg_0), 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicStore_cdc29e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicStore_cdc29e();
 }
diff --git a/test/tint/builtins/gen/literal/atomicStore/d1e9a6.wgsl b/test/tint/builtins/gen/literal/atomicStore/d1e9a6.wgsl
index 00cb359..8fedd1b 100644
--- a/test/tint/builtins/gen/literal/atomicStore/d1e9a6.wgsl
+++ b/test/tint/builtins/gen/literal/atomicStore/d1e9a6.wgsl
@@ -32,12 +32,12 @@
   atomicStore(&sb_rw.arg_0, 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicStore_d1e9a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicStore_d1e9a6();
 }
diff --git a/test/tint/builtins/gen/literal/atomicStore/d1e9a6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicStore/d1e9a6.wgsl.expected.wgsl
index 5d509ce..e7c02a6 100644
--- a/test/tint/builtins/gen/literal/atomicStore/d1e9a6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicStore/d1e9a6.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   atomicStore(&(sb_rw.arg_0), 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicStore_d1e9a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicStore_d1e9a6();
 }
diff --git a/test/tint/builtins/gen/literal/atomicSub/051100.wgsl b/test/tint/builtins/gen/literal/atomicSub/051100.wgsl
index 38f24bc..1c95889 100644
--- a/test/tint/builtins/gen/literal/atomicSub/051100.wgsl
+++ b/test/tint/builtins/gen/literal/atomicSub/051100.wgsl
@@ -32,12 +32,12 @@
   var res: i32 = atomicSub(&sb_rw.arg_0, 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicSub_051100();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicSub_051100();
 }
diff --git a/test/tint/builtins/gen/literal/atomicSub/051100.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicSub/051100.wgsl.expected.wgsl
index faf9784..539fd24 100644
--- a/test/tint/builtins/gen/literal/atomicSub/051100.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicSub/051100.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : i32 = atomicSub(&(sb_rw.arg_0), 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicSub_051100();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicSub_051100();
 }
diff --git a/test/tint/builtins/gen/literal/atomicSub/0d26c2.wgsl b/test/tint/builtins/gen/literal/atomicSub/0d26c2.wgsl
index 4104bbf..f6b1102 100644
--- a/test/tint/builtins/gen/literal/atomicSub/0d26c2.wgsl
+++ b/test/tint/builtins/gen/literal/atomicSub/0d26c2.wgsl
@@ -29,7 +29,7 @@
   var res: u32 = atomicSub(&arg_0, 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicSub_0d26c2();
 }
diff --git a/test/tint/builtins/gen/literal/atomicSub/0d26c2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicSub/0d26c2.wgsl.expected.wgsl
index 6b75ecb..fcbe53c 100644
--- a/test/tint/builtins/gen/literal/atomicSub/0d26c2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicSub/0d26c2.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : u32 = atomicSub(&(arg_0), 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicSub_0d26c2();
 }
diff --git a/test/tint/builtins/gen/literal/atomicSub/15bfc9.wgsl b/test/tint/builtins/gen/literal/atomicSub/15bfc9.wgsl
index fb46746..31e1da0 100644
--- a/test/tint/builtins/gen/literal/atomicSub/15bfc9.wgsl
+++ b/test/tint/builtins/gen/literal/atomicSub/15bfc9.wgsl
@@ -32,12 +32,12 @@
   var res: u32 = atomicSub(&sb_rw.arg_0, 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicSub_15bfc9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicSub_15bfc9();
 }
diff --git a/test/tint/builtins/gen/literal/atomicSub/15bfc9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicSub/15bfc9.wgsl.expected.wgsl
index 74ec8cd..8d1ad29 100644
--- a/test/tint/builtins/gen/literal/atomicSub/15bfc9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicSub/15bfc9.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : u32 = atomicSub(&(sb_rw.arg_0), 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicSub_15bfc9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicSub_15bfc9();
 }
diff --git a/test/tint/builtins/gen/literal/atomicSub/77883a.wgsl b/test/tint/builtins/gen/literal/atomicSub/77883a.wgsl
index 257aead..57409e3 100644
--- a/test/tint/builtins/gen/literal/atomicSub/77883a.wgsl
+++ b/test/tint/builtins/gen/literal/atomicSub/77883a.wgsl
@@ -29,7 +29,7 @@
   var res: i32 = atomicSub(&arg_0, 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicSub_77883a();
 }
diff --git a/test/tint/builtins/gen/literal/atomicSub/77883a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicSub/77883a.wgsl.expected.wgsl
index 4a49222..3443f94 100644
--- a/test/tint/builtins/gen/literal/atomicSub/77883a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicSub/77883a.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : i32 = atomicSub(&(arg_0), 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicSub_77883a();
 }
diff --git a/test/tint/builtins/gen/literal/atomicXor/54510e.wgsl b/test/tint/builtins/gen/literal/atomicXor/54510e.wgsl
index 8de2df6..5f36b0a 100644
--- a/test/tint/builtins/gen/literal/atomicXor/54510e.wgsl
+++ b/test/tint/builtins/gen/literal/atomicXor/54510e.wgsl
@@ -32,12 +32,12 @@
   var res: u32 = atomicXor(&sb_rw.arg_0, 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicXor_54510e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicXor_54510e();
 }
diff --git a/test/tint/builtins/gen/literal/atomicXor/54510e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicXor/54510e.wgsl.expected.wgsl
index 61a2419..b771102 100644
--- a/test/tint/builtins/gen/literal/atomicXor/54510e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicXor/54510e.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : u32 = atomicXor(&(sb_rw.arg_0), 1u);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicXor_54510e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicXor_54510e();
 }
diff --git a/test/tint/builtins/gen/literal/atomicXor/75dc95.wgsl b/test/tint/builtins/gen/literal/atomicXor/75dc95.wgsl
index 8bc0705..ab55761 100644
--- a/test/tint/builtins/gen/literal/atomicXor/75dc95.wgsl
+++ b/test/tint/builtins/gen/literal/atomicXor/75dc95.wgsl
@@ -29,7 +29,7 @@
   var res: i32 = atomicXor(&arg_0, 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicXor_75dc95();
 }
diff --git a/test/tint/builtins/gen/literal/atomicXor/75dc95.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicXor/75dc95.wgsl.expected.wgsl
index cae6c21..30add29 100644
--- a/test/tint/builtins/gen/literal/atomicXor/75dc95.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicXor/75dc95.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : i32 = atomicXor(&(arg_0), 1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicXor_75dc95();
 }
diff --git a/test/tint/builtins/gen/literal/atomicXor/c1b78c.wgsl b/test/tint/builtins/gen/literal/atomicXor/c1b78c.wgsl
index 9fd915e..1e26cbe 100644
--- a/test/tint/builtins/gen/literal/atomicXor/c1b78c.wgsl
+++ b/test/tint/builtins/gen/literal/atomicXor/c1b78c.wgsl
@@ -32,12 +32,12 @@
   var res: i32 = atomicXor(&sb_rw.arg_0, 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicXor_c1b78c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicXor_c1b78c();
 }
diff --git a/test/tint/builtins/gen/literal/atomicXor/c1b78c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicXor/c1b78c.wgsl.expected.wgsl
index 219e9d4..c63962c 100644
--- a/test/tint/builtins/gen/literal/atomicXor/c1b78c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicXor/c1b78c.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : i32 = atomicXor(&(sb_rw.arg_0), 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicXor_c1b78c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicXor_c1b78c();
 }
diff --git a/test/tint/builtins/gen/literal/atomicXor/c8e6be.wgsl b/test/tint/builtins/gen/literal/atomicXor/c8e6be.wgsl
index 5a7f935..805c305 100644
--- a/test/tint/builtins/gen/literal/atomicXor/c8e6be.wgsl
+++ b/test/tint/builtins/gen/literal/atomicXor/c8e6be.wgsl
@@ -29,7 +29,7 @@
   var res: u32 = atomicXor(&arg_0, 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicXor_c8e6be();
 }
diff --git a/test/tint/builtins/gen/literal/atomicXor/c8e6be.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atomicXor/c8e6be.wgsl.expected.wgsl
index d422ea0..f6bb2b9 100644
--- a/test/tint/builtins/gen/literal/atomicXor/c8e6be.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atomicXor/c8e6be.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : u32 = atomicXor(&(arg_0), 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicXor_c8e6be();
 }
diff --git a/test/tint/builtins/gen/literal/ceil/34064b.wgsl b/test/tint/builtins/gen/literal/ceil/34064b.wgsl
index 99b39a4..24a4535 100644
--- a/test/tint/builtins/gen/literal/ceil/34064b.wgsl
+++ b/test/tint/builtins/gen/literal/ceil/34064b.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = ceil(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_34064b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ceil_34064b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ceil_34064b();
 }
diff --git a/test/tint/builtins/gen/literal/ceil/34064b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/ceil/34064b.wgsl.expected.wgsl
index a72e184..36539d6 100644
--- a/test/tint/builtins/gen/literal/ceil/34064b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/ceil/34064b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = ceil(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_34064b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ceil_34064b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ceil_34064b();
 }
diff --git a/test/tint/builtins/gen/literal/ceil/678655.wgsl b/test/tint/builtins/gen/literal/ceil/678655.wgsl
index 7af7800..71813ff 100644
--- a/test/tint/builtins/gen/literal/ceil/678655.wgsl
+++ b/test/tint/builtins/gen/literal/ceil/678655.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = ceil(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_678655();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ceil_678655();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ceil_678655();
 }
diff --git a/test/tint/builtins/gen/literal/ceil/678655.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/ceil/678655.wgsl.expected.wgsl
index bb57a0a..bf111b7 100644
--- a/test/tint/builtins/gen/literal/ceil/678655.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/ceil/678655.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = ceil(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_678655();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ceil_678655();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ceil_678655();
 }
diff --git a/test/tint/builtins/gen/literal/ceil/96f597.wgsl b/test/tint/builtins/gen/literal/ceil/96f597.wgsl
index 13dd9af..582a96c 100644
--- a/test/tint/builtins/gen/literal/ceil/96f597.wgsl
+++ b/test/tint/builtins/gen/literal/ceil/96f597.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = ceil(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_96f597();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ceil_96f597();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ceil_96f597();
 }
diff --git a/test/tint/builtins/gen/literal/ceil/96f597.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/ceil/96f597.wgsl.expected.wgsl
index bf6d138..8a22627 100644
--- a/test/tint/builtins/gen/literal/ceil/96f597.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/ceil/96f597.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = ceil(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_96f597();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ceil_96f597();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ceil_96f597();
 }
diff --git a/test/tint/builtins/gen/literal/ceil/b74c16.wgsl b/test/tint/builtins/gen/literal/ceil/b74c16.wgsl
index 6f2a52f..fa466e9 100644
--- a/test/tint/builtins/gen/literal/ceil/b74c16.wgsl
+++ b/test/tint/builtins/gen/literal/ceil/b74c16.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = ceil(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_b74c16();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ceil_b74c16();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ceil_b74c16();
 }
diff --git a/test/tint/builtins/gen/literal/ceil/b74c16.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/ceil/b74c16.wgsl.expected.wgsl
index c019db4..138281c 100644
--- a/test/tint/builtins/gen/literal/ceil/b74c16.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/ceil/b74c16.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = ceil(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_b74c16();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ceil_b74c16();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ceil_b74c16();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/0acf8f.wgsl b/test/tint/builtins/gen/literal/clamp/0acf8f.wgsl
index 75e94ee..08142ac 100644
--- a/test/tint/builtins/gen/literal/clamp/0acf8f.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/0acf8f.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_0acf8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_0acf8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_0acf8f();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/0acf8f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/0acf8f.wgsl.expected.wgsl
index a6f58e5..bf10a7b 100644
--- a/test/tint/builtins/gen/literal/clamp/0acf8f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/0acf8f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = clamp(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_0acf8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_0acf8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_0acf8f();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/1a32e3.wgsl b/test/tint/builtins/gen/literal/clamp/1a32e3.wgsl
index 908c846..38b9f23 100644
--- a/test/tint/builtins/gen/literal/clamp/1a32e3.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/1a32e3.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = clamp(vec4<i32>(), vec4<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_1a32e3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_1a32e3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_1a32e3();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/1a32e3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/1a32e3.wgsl.expected.wgsl
index 4ca8d1e..c27d956 100644
--- a/test/tint/builtins/gen/literal/clamp/1a32e3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/1a32e3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = clamp(vec4<i32>(), vec4<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_1a32e3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_1a32e3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_1a32e3();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/2bd567.wgsl b/test/tint/builtins/gen/literal/clamp/2bd567.wgsl
index 464ea33..2b4686e 100644
--- a/test/tint/builtins/gen/literal/clamp/2bd567.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/2bd567.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = clamp(1.0, 1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_2bd567();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_2bd567();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_2bd567();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/2bd567.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/2bd567.wgsl.expected.wgsl
index fdd1c3c..9076b3a 100644
--- a/test/tint/builtins/gen/literal/clamp/2bd567.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/2bd567.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = clamp(1.0, 1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_2bd567();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_2bd567();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_2bd567();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/2bde41.wgsl b/test/tint/builtins/gen/literal/clamp/2bde41.wgsl
index 0b91f22..948afca 100644
--- a/test/tint/builtins/gen/literal/clamp/2bde41.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/2bde41.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = clamp(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_2bde41();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_2bde41();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_2bde41();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/2bde41.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/2bde41.wgsl.expected.wgsl
index 21f3a2d..e4bf23f 100644
--- a/test/tint/builtins/gen/literal/clamp/2bde41.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/2bde41.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = clamp(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_2bde41();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_2bde41();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_2bde41();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/548fc7.wgsl b/test/tint/builtins/gen/literal/clamp/548fc7.wgsl
index a12a22e..07ef786 100644
--- a/test/tint/builtins/gen/literal/clamp/548fc7.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/548fc7.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = clamp(vec3<u32>(), vec3<u32>(), vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_548fc7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_548fc7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_548fc7();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/548fc7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/548fc7.wgsl.expected.wgsl
index 05f4d9e..14f57ec 100644
--- a/test/tint/builtins/gen/literal/clamp/548fc7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/548fc7.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = clamp(vec3<u32>(), vec3<u32>(), vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_548fc7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_548fc7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_548fc7();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/5f0819.wgsl b/test/tint/builtins/gen/literal/clamp/5f0819.wgsl
index 04d79c7..638f8cc 100644
--- a/test/tint/builtins/gen/literal/clamp/5f0819.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/5f0819.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = clamp(vec3<i32>(), vec3<i32>(), vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_5f0819();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_5f0819();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_5f0819();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/5f0819.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/5f0819.wgsl.expected.wgsl
index 6265d72..6266b18 100644
--- a/test/tint/builtins/gen/literal/clamp/5f0819.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/5f0819.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = clamp(vec3<i32>(), vec3<i32>(), vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_5f0819();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_5f0819();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_5f0819();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/6c1749.wgsl b/test/tint/builtins/gen/literal/clamp/6c1749.wgsl
index 430bd15..b090e35 100644
--- a/test/tint/builtins/gen/literal/clamp/6c1749.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/6c1749.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = clamp(vec2<i32>(), vec2<i32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_6c1749();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_6c1749();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_6c1749();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/6c1749.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/6c1749.wgsl.expected.wgsl
index 58ea370..e1153a2 100644
--- a/test/tint/builtins/gen/literal/clamp/6c1749.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/6c1749.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = clamp(vec2<i32>(), vec2<i32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_6c1749();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_6c1749();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_6c1749();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/7706d7.wgsl b/test/tint/builtins/gen/literal/clamp/7706d7.wgsl
index 381e25d..ca4aa60 100644
--- a/test/tint/builtins/gen/literal/clamp/7706d7.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/7706d7.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = clamp(vec2<u32>(), vec2<u32>(), vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_7706d7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_7706d7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_7706d7();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/7706d7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/7706d7.wgsl.expected.wgsl
index b21343c..33837ee 100644
--- a/test/tint/builtins/gen/literal/clamp/7706d7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/7706d7.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = clamp(vec2<u32>(), vec2<u32>(), vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_7706d7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_7706d7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_7706d7();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/867397.wgsl b/test/tint/builtins/gen/literal/clamp/867397.wgsl
index 91cacc2..ae1ee11 100644
--- a/test/tint/builtins/gen/literal/clamp/867397.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/867397.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = clamp(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_867397();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_867397();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_867397();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/867397.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/867397.wgsl.expected.wgsl
index 0c74877..9f0b0f5 100644
--- a/test/tint/builtins/gen/literal/clamp/867397.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/867397.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = clamp(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_867397();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_867397();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_867397();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/a2de25.wgsl b/test/tint/builtins/gen/literal/clamp/a2de25.wgsl
index bc687e3..7e4bbaa 100644
--- a/test/tint/builtins/gen/literal/clamp/a2de25.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/a2de25.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = clamp(1u, 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_a2de25();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_a2de25();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_a2de25();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/a2de25.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/a2de25.wgsl.expected.wgsl
index 28aa330..5aee4d3 100644
--- a/test/tint/builtins/gen/literal/clamp/a2de25.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/a2de25.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = clamp(1u, 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_a2de25();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_a2de25();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_a2de25();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/b07c65.wgsl b/test/tint/builtins/gen/literal/clamp/b07c65.wgsl
index 4387f72..11c9efa 100644
--- a/test/tint/builtins/gen/literal/clamp/b07c65.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/b07c65.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = clamp(1, 1, 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_b07c65();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_b07c65();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_b07c65();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/b07c65.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/b07c65.wgsl.expected.wgsl
index 3ed77bc..2ad022b 100644
--- a/test/tint/builtins/gen/literal/clamp/b07c65.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/b07c65.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = clamp(1, 1, 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_b07c65();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_b07c65();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_b07c65();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/bd43ce.wgsl b/test/tint/builtins/gen/literal/clamp/bd43ce.wgsl
index 80d6b85..8443626 100644
--- a/test/tint/builtins/gen/literal/clamp/bd43ce.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/bd43ce.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = clamp(vec4<u32>(), vec4<u32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_bd43ce();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_bd43ce();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_bd43ce();
 }
diff --git a/test/tint/builtins/gen/literal/clamp/bd43ce.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/bd43ce.wgsl.expected.wgsl
index 51f94ba..7be89df 100644
--- a/test/tint/builtins/gen/literal/clamp/bd43ce.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/bd43ce.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = clamp(vec4<u32>(), vec4<u32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_bd43ce();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_bd43ce();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_bd43ce();
 }
diff --git a/test/tint/builtins/gen/literal/cos/16dc15.wgsl b/test/tint/builtins/gen/literal/cos/16dc15.wgsl
index a49842f..cdbc9c1 100644
--- a/test/tint/builtins/gen/literal/cos/16dc15.wgsl
+++ b/test/tint/builtins/gen/literal/cos/16dc15.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = cos(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_16dc15();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cos_16dc15();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cos_16dc15();
 }
diff --git a/test/tint/builtins/gen/literal/cos/16dc15.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/cos/16dc15.wgsl.expected.wgsl
index fb24d34..d4b9449 100644
--- a/test/tint/builtins/gen/literal/cos/16dc15.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/cos/16dc15.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = cos(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_16dc15();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cos_16dc15();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cos_16dc15();
 }
diff --git a/test/tint/builtins/gen/literal/cos/29d66d.wgsl b/test/tint/builtins/gen/literal/cos/29d66d.wgsl
index 2488f6f..5caf5f3 100644
--- a/test/tint/builtins/gen/literal/cos/29d66d.wgsl
+++ b/test/tint/builtins/gen/literal/cos/29d66d.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = cos(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_29d66d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cos_29d66d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cos_29d66d();
 }
diff --git a/test/tint/builtins/gen/literal/cos/29d66d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/cos/29d66d.wgsl.expected.wgsl
index 7bd0947..8ec11e5 100644
--- a/test/tint/builtins/gen/literal/cos/29d66d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/cos/29d66d.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = cos(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_29d66d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cos_29d66d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cos_29d66d();
 }
diff --git a/test/tint/builtins/gen/literal/cos/c3b486.wgsl b/test/tint/builtins/gen/literal/cos/c3b486.wgsl
index 053ed82..30c718f 100644
--- a/test/tint/builtins/gen/literal/cos/c3b486.wgsl
+++ b/test/tint/builtins/gen/literal/cos/c3b486.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = cos(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_c3b486();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cos_c3b486();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cos_c3b486();
 }
diff --git a/test/tint/builtins/gen/literal/cos/c3b486.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/cos/c3b486.wgsl.expected.wgsl
index 3dfb7da..888becf 100644
--- a/test/tint/builtins/gen/literal/cos/c3b486.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/cos/c3b486.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = cos(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_c3b486();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cos_c3b486();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cos_c3b486();
 }
diff --git a/test/tint/builtins/gen/literal/cos/c5c28e.wgsl b/test/tint/builtins/gen/literal/cos/c5c28e.wgsl
index 649e53f..8293d1b 100644
--- a/test/tint/builtins/gen/literal/cos/c5c28e.wgsl
+++ b/test/tint/builtins/gen/literal/cos/c5c28e.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = cos(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_c5c28e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cos_c5c28e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cos_c5c28e();
 }
diff --git a/test/tint/builtins/gen/literal/cos/c5c28e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/cos/c5c28e.wgsl.expected.wgsl
index e298621..28bc70e 100644
--- a/test/tint/builtins/gen/literal/cos/c5c28e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/cos/c5c28e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = cos(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_c5c28e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cos_c5c28e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cos_c5c28e();
 }
diff --git a/test/tint/builtins/gen/literal/cosh/377652.wgsl b/test/tint/builtins/gen/literal/cosh/377652.wgsl
index b30d0f0..e462cdd 100644
--- a/test/tint/builtins/gen/literal/cosh/377652.wgsl
+++ b/test/tint/builtins/gen/literal/cosh/377652.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = cosh(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_377652();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cosh_377652();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cosh_377652();
 }
diff --git a/test/tint/builtins/gen/literal/cosh/377652.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/cosh/377652.wgsl.expected.wgsl
index bfcc51a..953b207 100644
--- a/test/tint/builtins/gen/literal/cosh/377652.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/cosh/377652.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = cosh(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_377652();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cosh_377652();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cosh_377652();
 }
diff --git a/test/tint/builtins/gen/literal/cosh/c13756.wgsl b/test/tint/builtins/gen/literal/cosh/c13756.wgsl
index fb791cf..cb58944 100644
--- a/test/tint/builtins/gen/literal/cosh/c13756.wgsl
+++ b/test/tint/builtins/gen/literal/cosh/c13756.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = cosh(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_c13756();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cosh_c13756();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cosh_c13756();
 }
diff --git a/test/tint/builtins/gen/literal/cosh/c13756.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/cosh/c13756.wgsl.expected.wgsl
index 3940b8e..efd35c1 100644
--- a/test/tint/builtins/gen/literal/cosh/c13756.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/cosh/c13756.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = cosh(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_c13756();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cosh_c13756();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cosh_c13756();
 }
diff --git a/test/tint/builtins/gen/literal/cosh/da92dd.wgsl b/test/tint/builtins/gen/literal/cosh/da92dd.wgsl
index 61dc016..2612239 100644
--- a/test/tint/builtins/gen/literal/cosh/da92dd.wgsl
+++ b/test/tint/builtins/gen/literal/cosh/da92dd.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = cosh(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_da92dd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cosh_da92dd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cosh_da92dd();
 }
diff --git a/test/tint/builtins/gen/literal/cosh/da92dd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/cosh/da92dd.wgsl.expected.wgsl
index e653a5c..79c75e6 100644
--- a/test/tint/builtins/gen/literal/cosh/da92dd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/cosh/da92dd.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = cosh(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_da92dd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cosh_da92dd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cosh_da92dd();
 }
diff --git a/test/tint/builtins/gen/literal/cosh/e0c1de.wgsl b/test/tint/builtins/gen/literal/cosh/e0c1de.wgsl
index 10fe5b4..afc0841 100644
--- a/test/tint/builtins/gen/literal/cosh/e0c1de.wgsl
+++ b/test/tint/builtins/gen/literal/cosh/e0c1de.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = cosh(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_e0c1de();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cosh_e0c1de();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cosh_e0c1de();
 }
diff --git a/test/tint/builtins/gen/literal/cosh/e0c1de.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/cosh/e0c1de.wgsl.expected.wgsl
index 64b0a08..4745662 100644
--- a/test/tint/builtins/gen/literal/cosh/e0c1de.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/cosh/e0c1de.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = cosh(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_e0c1de();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cosh_e0c1de();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cosh_e0c1de();
 }
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/208d46.wgsl b/test/tint/builtins/gen/literal/countLeadingZeros/208d46.wgsl
index b68a887..74faea7 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/208d46.wgsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/208d46.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = countLeadingZeros(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_208d46();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_208d46();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_208d46();
 }
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/208d46.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countLeadingZeros/208d46.wgsl.expected.wgsl
index f2120c3..ccf686a 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/208d46.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/208d46.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = countLeadingZeros(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_208d46();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_208d46();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_208d46();
 }
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/6d4656.wgsl b/test/tint/builtins/gen/literal/countLeadingZeros/6d4656.wgsl
index bb8d2f1..fe84c34 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/6d4656.wgsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/6d4656.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = countLeadingZeros(1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_6d4656();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_6d4656();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_6d4656();
 }
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/6d4656.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countLeadingZeros/6d4656.wgsl.expected.wgsl
index f8b28af..cc35ad5 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/6d4656.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/6d4656.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = countLeadingZeros(1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_6d4656();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_6d4656();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_6d4656();
 }
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/70783f.wgsl b/test/tint/builtins/gen/literal/countLeadingZeros/70783f.wgsl
index 2c807da..16d7040 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/70783f.wgsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/70783f.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = countLeadingZeros(vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_70783f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_70783f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_70783f();
 }
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/70783f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countLeadingZeros/70783f.wgsl.expected.wgsl
index 340cac2..00f65ce 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/70783f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/70783f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = countLeadingZeros(vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_70783f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_70783f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_70783f();
 }
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/7c38a6.wgsl b/test/tint/builtins/gen/literal/countLeadingZeros/7c38a6.wgsl
index d17f72b..4838028 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/7c38a6.wgsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/7c38a6.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = countLeadingZeros(vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_7c38a6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_7c38a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_7c38a6();
 }
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/7c38a6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countLeadingZeros/7c38a6.wgsl.expected.wgsl
index 11cdbfa..866762f 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/7c38a6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/7c38a6.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = countLeadingZeros(vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_7c38a6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_7c38a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_7c38a6();
 }
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/858d40.wgsl b/test/tint/builtins/gen/literal/countLeadingZeros/858d40.wgsl
index 6690e55..745f6d0 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/858d40.wgsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/858d40.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = countLeadingZeros(vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_858d40();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_858d40();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_858d40();
 }
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/858d40.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countLeadingZeros/858d40.wgsl.expected.wgsl
index d083be8..f5c838a 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/858d40.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/858d40.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = countLeadingZeros(vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_858d40();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_858d40();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_858d40();
 }
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/ab6345.wgsl b/test/tint/builtins/gen/literal/countLeadingZeros/ab6345.wgsl
index 64926a4..ff43e9c 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/ab6345.wgsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/ab6345.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = countLeadingZeros(vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_ab6345();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_ab6345();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_ab6345();
 }
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/ab6345.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countLeadingZeros/ab6345.wgsl.expected.wgsl
index d710174..05ba162 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/ab6345.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/ab6345.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = countLeadingZeros(vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_ab6345();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_ab6345();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_ab6345();
 }
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/eab32b.wgsl b/test/tint/builtins/gen/literal/countLeadingZeros/eab32b.wgsl
index b62ce85..03d018e 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/eab32b.wgsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/eab32b.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = countLeadingZeros(vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_eab32b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_eab32b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_eab32b();
 }
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/eab32b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countLeadingZeros/eab32b.wgsl.expected.wgsl
index fe35461..dc7c03c 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/eab32b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/eab32b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = countLeadingZeros(vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_eab32b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_eab32b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_eab32b();
 }
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/f70103.wgsl b/test/tint/builtins/gen/literal/countLeadingZeros/f70103.wgsl
index 0c19060..ae1e449 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/f70103.wgsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/f70103.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = countLeadingZeros(vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_f70103();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_f70103();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_f70103();
 }
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/f70103.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countLeadingZeros/f70103.wgsl.expected.wgsl
index 6ce4b6c..17d7078 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/f70103.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/f70103.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = countLeadingZeros(vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_f70103();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_f70103();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_f70103();
 }
diff --git a/test/tint/builtins/gen/literal/countOneBits/0d0e46.wgsl b/test/tint/builtins/gen/literal/countOneBits/0d0e46.wgsl
index cd82445..00e4e39 100644
--- a/test/tint/builtins/gen/literal/countOneBits/0d0e46.wgsl
+++ b/test/tint/builtins/gen/literal/countOneBits/0d0e46.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = countOneBits(vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_0d0e46();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_0d0e46();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_0d0e46();
 }
diff --git a/test/tint/builtins/gen/literal/countOneBits/0d0e46.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countOneBits/0d0e46.wgsl.expected.wgsl
index 271af00..d5c977e 100644
--- a/test/tint/builtins/gen/literal/countOneBits/0d0e46.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countOneBits/0d0e46.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = countOneBits(vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_0d0e46();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_0d0e46();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_0d0e46();
 }
diff --git a/test/tint/builtins/gen/literal/countOneBits/0f7980.wgsl b/test/tint/builtins/gen/literal/countOneBits/0f7980.wgsl
index 0e1a0c5..5b64377 100644
--- a/test/tint/builtins/gen/literal/countOneBits/0f7980.wgsl
+++ b/test/tint/builtins/gen/literal/countOneBits/0f7980.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = countOneBits(vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_0f7980();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_0f7980();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_0f7980();
 }
diff --git a/test/tint/builtins/gen/literal/countOneBits/0f7980.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countOneBits/0f7980.wgsl.expected.wgsl
index 1291aa3..4e506ef 100644
--- a/test/tint/builtins/gen/literal/countOneBits/0f7980.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countOneBits/0f7980.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = countOneBits(vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_0f7980();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_0f7980();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_0f7980();
 }
diff --git a/test/tint/builtins/gen/literal/countOneBits/65d2ae.wgsl b/test/tint/builtins/gen/literal/countOneBits/65d2ae.wgsl
index b2d344b..d493b7c 100644
--- a/test/tint/builtins/gen/literal/countOneBits/65d2ae.wgsl
+++ b/test/tint/builtins/gen/literal/countOneBits/65d2ae.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = countOneBits(vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_65d2ae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_65d2ae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_65d2ae();
 }
diff --git a/test/tint/builtins/gen/literal/countOneBits/65d2ae.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countOneBits/65d2ae.wgsl.expected.wgsl
index e142860..6cabccb 100644
--- a/test/tint/builtins/gen/literal/countOneBits/65d2ae.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countOneBits/65d2ae.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = countOneBits(vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_65d2ae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_65d2ae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_65d2ae();
 }
diff --git a/test/tint/builtins/gen/literal/countOneBits/690cfc.wgsl b/test/tint/builtins/gen/literal/countOneBits/690cfc.wgsl
index 3ffaaad..60360d3 100644
--- a/test/tint/builtins/gen/literal/countOneBits/690cfc.wgsl
+++ b/test/tint/builtins/gen/literal/countOneBits/690cfc.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = countOneBits(vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_690cfc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_690cfc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_690cfc();
 }
diff --git a/test/tint/builtins/gen/literal/countOneBits/690cfc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countOneBits/690cfc.wgsl.expected.wgsl
index b74eb79..8347470 100644
--- a/test/tint/builtins/gen/literal/countOneBits/690cfc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countOneBits/690cfc.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = countOneBits(vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_690cfc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_690cfc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_690cfc();
 }
diff --git a/test/tint/builtins/gen/literal/countOneBits/94fd81.wgsl b/test/tint/builtins/gen/literal/countOneBits/94fd81.wgsl
index f3dc811..136829a 100644
--- a/test/tint/builtins/gen/literal/countOneBits/94fd81.wgsl
+++ b/test/tint/builtins/gen/literal/countOneBits/94fd81.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = countOneBits(vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_94fd81();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_94fd81();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_94fd81();
 }
diff --git a/test/tint/builtins/gen/literal/countOneBits/94fd81.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countOneBits/94fd81.wgsl.expected.wgsl
index e713f92..51b9380 100644
--- a/test/tint/builtins/gen/literal/countOneBits/94fd81.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countOneBits/94fd81.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = countOneBits(vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_94fd81();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_94fd81();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_94fd81();
 }
diff --git a/test/tint/builtins/gen/literal/countOneBits/ae44f9.wgsl b/test/tint/builtins/gen/literal/countOneBits/ae44f9.wgsl
index db3be10..1e13e00 100644
--- a/test/tint/builtins/gen/literal/countOneBits/ae44f9.wgsl
+++ b/test/tint/builtins/gen/literal/countOneBits/ae44f9.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = countOneBits(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_ae44f9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_ae44f9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_ae44f9();
 }
diff --git a/test/tint/builtins/gen/literal/countOneBits/ae44f9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countOneBits/ae44f9.wgsl.expected.wgsl
index 3a54993..880bb56 100644
--- a/test/tint/builtins/gen/literal/countOneBits/ae44f9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countOneBits/ae44f9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = countOneBits(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_ae44f9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_ae44f9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_ae44f9();
 }
diff --git a/test/tint/builtins/gen/literal/countOneBits/af90e2.wgsl b/test/tint/builtins/gen/literal/countOneBits/af90e2.wgsl
index 1a12e33..983e471 100644
--- a/test/tint/builtins/gen/literal/countOneBits/af90e2.wgsl
+++ b/test/tint/builtins/gen/literal/countOneBits/af90e2.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = countOneBits(vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_af90e2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_af90e2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_af90e2();
 }
diff --git a/test/tint/builtins/gen/literal/countOneBits/af90e2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countOneBits/af90e2.wgsl.expected.wgsl
index c2d693a..f0c48d3 100644
--- a/test/tint/builtins/gen/literal/countOneBits/af90e2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countOneBits/af90e2.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = countOneBits(vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_af90e2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_af90e2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_af90e2();
 }
diff --git a/test/tint/builtins/gen/literal/countOneBits/fd88b2.wgsl b/test/tint/builtins/gen/literal/countOneBits/fd88b2.wgsl
index 7f1ec3c..ea4c2a0 100644
--- a/test/tint/builtins/gen/literal/countOneBits/fd88b2.wgsl
+++ b/test/tint/builtins/gen/literal/countOneBits/fd88b2.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = countOneBits(1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_fd88b2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_fd88b2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_fd88b2();
 }
diff --git a/test/tint/builtins/gen/literal/countOneBits/fd88b2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countOneBits/fd88b2.wgsl.expected.wgsl
index c9e437b..9f8ef5f 100644
--- a/test/tint/builtins/gen/literal/countOneBits/fd88b2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countOneBits/fd88b2.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = countOneBits(1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_fd88b2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_fd88b2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_fd88b2();
 }
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/1ad138.wgsl b/test/tint/builtins/gen/literal/countTrailingZeros/1ad138.wgsl
index ead70fa..94c3464 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/1ad138.wgsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/1ad138.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = countTrailingZeros(vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_1ad138();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_1ad138();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_1ad138();
 }
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/1ad138.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countTrailingZeros/1ad138.wgsl.expected.wgsl
index 049f99f..a6642f4 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/1ad138.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/1ad138.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = countTrailingZeros(vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_1ad138();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_1ad138();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_1ad138();
 }
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/1dc84a.wgsl b/test/tint/builtins/gen/literal/countTrailingZeros/1dc84a.wgsl
index 0a6e556..44fdeab 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/1dc84a.wgsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/1dc84a.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = countTrailingZeros(vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_1dc84a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_1dc84a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_1dc84a();
 }
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/1dc84a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countTrailingZeros/1dc84a.wgsl.expected.wgsl
index de89ed5..30c6741 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/1dc84a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/1dc84a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = countTrailingZeros(vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_1dc84a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_1dc84a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_1dc84a();
 }
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/21e394.wgsl b/test/tint/builtins/gen/literal/countTrailingZeros/21e394.wgsl
index 114ae57..a8eb991 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/21e394.wgsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/21e394.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = countTrailingZeros(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_21e394();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_21e394();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_21e394();
 }
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/21e394.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countTrailingZeros/21e394.wgsl.expected.wgsl
index a11d849..c04b853 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/21e394.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/21e394.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = countTrailingZeros(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_21e394();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_21e394();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_21e394();
 }
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/327c37.wgsl b/test/tint/builtins/gen/literal/countTrailingZeros/327c37.wgsl
index 36f93b1..4c0db1c 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/327c37.wgsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/327c37.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = countTrailingZeros(vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_327c37();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_327c37();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_327c37();
 }
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/327c37.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countTrailingZeros/327c37.wgsl.expected.wgsl
index b48dedf..852e01c 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/327c37.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/327c37.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = countTrailingZeros(vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_327c37();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_327c37();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_327c37();
 }
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/42fed6.wgsl b/test/tint/builtins/gen/literal/countTrailingZeros/42fed6.wgsl
index 178f96e..33db383 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/42fed6.wgsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/42fed6.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = countTrailingZeros(1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_42fed6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_42fed6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_42fed6();
 }
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/42fed6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countTrailingZeros/42fed6.wgsl.expected.wgsl
index 6a560f3..e277113 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/42fed6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/42fed6.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = countTrailingZeros(1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_42fed6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_42fed6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_42fed6();
 }
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/8ed26f.wgsl b/test/tint/builtins/gen/literal/countTrailingZeros/8ed26f.wgsl
index 5e515f9..5076bef 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/8ed26f.wgsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/8ed26f.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = countTrailingZeros(vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_8ed26f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_8ed26f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_8ed26f();
 }
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/8ed26f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countTrailingZeros/8ed26f.wgsl.expected.wgsl
index 6556745..a308abf 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/8ed26f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/8ed26f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = countTrailingZeros(vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_8ed26f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_8ed26f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_8ed26f();
 }
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/acfacb.wgsl b/test/tint/builtins/gen/literal/countTrailingZeros/acfacb.wgsl
index 59019eb..78706ca 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/acfacb.wgsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/acfacb.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = countTrailingZeros(vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_acfacb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_acfacb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_acfacb();
 }
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/acfacb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countTrailingZeros/acfacb.wgsl.expected.wgsl
index e375186..d7c6363 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/acfacb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/acfacb.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = countTrailingZeros(vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_acfacb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_acfacb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_acfacb();
 }
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/d2b4a0.wgsl b/test/tint/builtins/gen/literal/countTrailingZeros/d2b4a0.wgsl
index 4ce8b4d..1c576e1 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/d2b4a0.wgsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/d2b4a0.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = countTrailingZeros(vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_d2b4a0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_d2b4a0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_d2b4a0();
 }
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/d2b4a0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/countTrailingZeros/d2b4a0.wgsl.expected.wgsl
index d37e2a1..d49ffcb 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/d2b4a0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/d2b4a0.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = countTrailingZeros(vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_d2b4a0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_d2b4a0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_d2b4a0();
 }
diff --git a/test/tint/builtins/gen/literal/cross/041cb0.wgsl b/test/tint/builtins/gen/literal/cross/041cb0.wgsl
index 1d68e7c..5d10c7b 100644
--- a/test/tint/builtins/gen/literal/cross/041cb0.wgsl
+++ b/test/tint/builtins/gen/literal/cross/041cb0.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = cross(vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cross_041cb0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cross_041cb0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cross_041cb0();
 }
diff --git a/test/tint/builtins/gen/literal/cross/041cb0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/cross/041cb0.wgsl.expected.wgsl
index c3548ce..b4f3b74 100644
--- a/test/tint/builtins/gen/literal/cross/041cb0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/cross/041cb0.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = cross(vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cross_041cb0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cross_041cb0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cross_041cb0();
 }
diff --git a/test/tint/builtins/gen/literal/degrees/0d170c.wgsl b/test/tint/builtins/gen/literal/degrees/0d170c.wgsl
index eb22063..586a019 100644
--- a/test/tint/builtins/gen/literal/degrees/0d170c.wgsl
+++ b/test/tint/builtins/gen/literal/degrees/0d170c.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = degrees(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_0d170c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   degrees_0d170c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   degrees_0d170c();
 }
diff --git a/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.wgsl
index 6c62108..0a9cf40 100644
--- a/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = degrees(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_0d170c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   degrees_0d170c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   degrees_0d170c();
 }
diff --git a/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl b/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl
index a0dac14b..69bba35 100644
--- a/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl
+++ b/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = degrees(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_1ad5df();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   degrees_1ad5df();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   degrees_1ad5df();
 }
diff --git a/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.wgsl
index db91a65..6a028eb 100644
--- a/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = degrees(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_1ad5df();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   degrees_1ad5df();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   degrees_1ad5df();
 }
diff --git a/test/tint/builtins/gen/literal/degrees/2af623.wgsl b/test/tint/builtins/gen/literal/degrees/2af623.wgsl
index b01e1a6..ab5ff4f 100644
--- a/test/tint/builtins/gen/literal/degrees/2af623.wgsl
+++ b/test/tint/builtins/gen/literal/degrees/2af623.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = degrees(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_2af623();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   degrees_2af623();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   degrees_2af623();
 }
diff --git a/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.wgsl
index d3af418..8044f00 100644
--- a/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = degrees(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_2af623();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   degrees_2af623();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   degrees_2af623();
 }
diff --git a/test/tint/builtins/gen/literal/degrees/51f705.wgsl b/test/tint/builtins/gen/literal/degrees/51f705.wgsl
index 3ff7ece..dc1bf3b 100644
--- a/test/tint/builtins/gen/literal/degrees/51f705.wgsl
+++ b/test/tint/builtins/gen/literal/degrees/51f705.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = degrees(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_51f705();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   degrees_51f705();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   degrees_51f705();
 }
diff --git a/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.wgsl
index 5ec8b91..af56927 100644
--- a/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = degrees(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_51f705();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   degrees_51f705();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   degrees_51f705();
 }
diff --git a/test/tint/builtins/gen/literal/determinant/2b62ba.wgsl b/test/tint/builtins/gen/literal/determinant/2b62ba.wgsl
index 8c5b626..f3c7931 100644
--- a/test/tint/builtins/gen/literal/determinant/2b62ba.wgsl
+++ b/test/tint/builtins/gen/literal/determinant/2b62ba.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = determinant(mat3x3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   determinant_2b62ba();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   determinant_2b62ba();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   determinant_2b62ba();
 }
diff --git a/test/tint/builtins/gen/literal/determinant/2b62ba.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/determinant/2b62ba.wgsl.expected.wgsl
index b9c8bcd..f18858f 100644
--- a/test/tint/builtins/gen/literal/determinant/2b62ba.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/determinant/2b62ba.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = determinant(mat3x3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   determinant_2b62ba();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   determinant_2b62ba();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   determinant_2b62ba();
 }
diff --git a/test/tint/builtins/gen/literal/determinant/a0a87c.wgsl b/test/tint/builtins/gen/literal/determinant/a0a87c.wgsl
index 541f546..0f65ef3 100644
--- a/test/tint/builtins/gen/literal/determinant/a0a87c.wgsl
+++ b/test/tint/builtins/gen/literal/determinant/a0a87c.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = determinant(mat4x4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   determinant_a0a87c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   determinant_a0a87c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   determinant_a0a87c();
 }
diff --git a/test/tint/builtins/gen/literal/determinant/a0a87c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/determinant/a0a87c.wgsl.expected.wgsl
index 1352baf..ed1f785 100644
--- a/test/tint/builtins/gen/literal/determinant/a0a87c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/determinant/a0a87c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = determinant(mat4x4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   determinant_a0a87c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   determinant_a0a87c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   determinant_a0a87c();
 }
diff --git a/test/tint/builtins/gen/literal/determinant/e19305.wgsl b/test/tint/builtins/gen/literal/determinant/e19305.wgsl
index 18cc6b2..99c571c 100644
--- a/test/tint/builtins/gen/literal/determinant/e19305.wgsl
+++ b/test/tint/builtins/gen/literal/determinant/e19305.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = determinant(mat2x2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   determinant_e19305();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   determinant_e19305();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   determinant_e19305();
 }
diff --git a/test/tint/builtins/gen/literal/determinant/e19305.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/determinant/e19305.wgsl.expected.wgsl
index 67724c6..23c1aa0 100644
--- a/test/tint/builtins/gen/literal/determinant/e19305.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/determinant/e19305.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = determinant(mat2x2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   determinant_e19305();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   determinant_e19305();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   determinant_e19305();
 }
diff --git a/test/tint/builtins/gen/literal/distance/0657d4.wgsl b/test/tint/builtins/gen/literal/distance/0657d4.wgsl
index a0b3af8..aae2064 100644
--- a/test/tint/builtins/gen/literal/distance/0657d4.wgsl
+++ b/test/tint/builtins/gen/literal/distance/0657d4.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = distance(vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_0657d4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   distance_0657d4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   distance_0657d4();
 }
diff --git a/test/tint/builtins/gen/literal/distance/0657d4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/distance/0657d4.wgsl.expected.wgsl
index 1945bbb..ca065c7 100644
--- a/test/tint/builtins/gen/literal/distance/0657d4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/distance/0657d4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = distance(vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_0657d4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   distance_0657d4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   distance_0657d4();
 }
diff --git a/test/tint/builtins/gen/literal/distance/9646ea.wgsl b/test/tint/builtins/gen/literal/distance/9646ea.wgsl
index 3b8aa55..3770c60 100644
--- a/test/tint/builtins/gen/literal/distance/9646ea.wgsl
+++ b/test/tint/builtins/gen/literal/distance/9646ea.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = distance(vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_9646ea();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   distance_9646ea();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   distance_9646ea();
 }
diff --git a/test/tint/builtins/gen/literal/distance/9646ea.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/distance/9646ea.wgsl.expected.wgsl
index 0e02dff..db90e03 100644
--- a/test/tint/builtins/gen/literal/distance/9646ea.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/distance/9646ea.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = distance(vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_9646ea();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   distance_9646ea();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   distance_9646ea();
 }
diff --git a/test/tint/builtins/gen/literal/distance/aa4055.wgsl b/test/tint/builtins/gen/literal/distance/aa4055.wgsl
index 71334d5..ead3544 100644
--- a/test/tint/builtins/gen/literal/distance/aa4055.wgsl
+++ b/test/tint/builtins/gen/literal/distance/aa4055.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = distance(vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_aa4055();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   distance_aa4055();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   distance_aa4055();
 }
diff --git a/test/tint/builtins/gen/literal/distance/aa4055.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/distance/aa4055.wgsl.expected.wgsl
index 307399d..79c3589 100644
--- a/test/tint/builtins/gen/literal/distance/aa4055.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/distance/aa4055.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = distance(vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_aa4055();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   distance_aa4055();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   distance_aa4055();
 }
diff --git a/test/tint/builtins/gen/literal/distance/cfed73.wgsl b/test/tint/builtins/gen/literal/distance/cfed73.wgsl
index c7fe4c5..5a13c21 100644
--- a/test/tint/builtins/gen/literal/distance/cfed73.wgsl
+++ b/test/tint/builtins/gen/literal/distance/cfed73.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = distance(1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_cfed73();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   distance_cfed73();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   distance_cfed73();
 }
diff --git a/test/tint/builtins/gen/literal/distance/cfed73.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/distance/cfed73.wgsl.expected.wgsl
index db5bc7d..482fc28 100644
--- a/test/tint/builtins/gen/literal/distance/cfed73.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/distance/cfed73.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = distance(1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_cfed73();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   distance_cfed73();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   distance_cfed73();
 }
diff --git a/test/tint/builtins/gen/literal/dot/0c577b.wgsl b/test/tint/builtins/gen/literal/dot/0c577b.wgsl
index e48b669..a735d41 100644
--- a/test/tint/builtins/gen/literal/dot/0c577b.wgsl
+++ b/test/tint/builtins/gen/literal/dot/0c577b.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = dot(vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_0c577b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_0c577b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_0c577b();
 }
diff --git a/test/tint/builtins/gen/literal/dot/0c577b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dot/0c577b.wgsl.expected.wgsl
index 22411b9..ab76066 100644
--- a/test/tint/builtins/gen/literal/dot/0c577b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dot/0c577b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = dot(vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_0c577b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_0c577b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_0c577b();
 }
diff --git a/test/tint/builtins/gen/literal/dot/7548a0.wgsl b/test/tint/builtins/gen/literal/dot/7548a0.wgsl
index 567e340..ffa3fdf 100644
--- a/test/tint/builtins/gen/literal/dot/7548a0.wgsl
+++ b/test/tint/builtins/gen/literal/dot/7548a0.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = dot(vec3<u32>(), vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_7548a0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_7548a0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_7548a0();
 }
diff --git a/test/tint/builtins/gen/literal/dot/7548a0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dot/7548a0.wgsl.expected.wgsl
index c8b9017..9e56b7b 100644
--- a/test/tint/builtins/gen/literal/dot/7548a0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dot/7548a0.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = dot(vec3<u32>(), vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_7548a0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_7548a0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_7548a0();
 }
diff --git a/test/tint/builtins/gen/literal/dot/883f0e.wgsl b/test/tint/builtins/gen/literal/dot/883f0e.wgsl
index fbf13b5..c15829e 100644
--- a/test/tint/builtins/gen/literal/dot/883f0e.wgsl
+++ b/test/tint/builtins/gen/literal/dot/883f0e.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = dot(vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_883f0e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_883f0e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_883f0e();
 }
diff --git a/test/tint/builtins/gen/literal/dot/883f0e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dot/883f0e.wgsl.expected.wgsl
index 4be39c5..b1b745c 100644
--- a/test/tint/builtins/gen/literal/dot/883f0e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dot/883f0e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = dot(vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_883f0e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_883f0e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_883f0e();
 }
diff --git a/test/tint/builtins/gen/literal/dot/97c7ee.wgsl b/test/tint/builtins/gen/literal/dot/97c7ee.wgsl
index f802cca..8d7999b 100644
--- a/test/tint/builtins/gen/literal/dot/97c7ee.wgsl
+++ b/test/tint/builtins/gen/literal/dot/97c7ee.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = dot(vec2<u32>(), vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_97c7ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_97c7ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_97c7ee();
 }
diff --git a/test/tint/builtins/gen/literal/dot/97c7ee.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dot/97c7ee.wgsl.expected.wgsl
index 488052d..73607bd 100644
--- a/test/tint/builtins/gen/literal/dot/97c7ee.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dot/97c7ee.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = dot(vec2<u32>(), vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_97c7ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_97c7ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_97c7ee();
 }
diff --git a/test/tint/builtins/gen/literal/dot/ba4246.wgsl b/test/tint/builtins/gen/literal/dot/ba4246.wgsl
index ed2c792..9a99619 100644
--- a/test/tint/builtins/gen/literal/dot/ba4246.wgsl
+++ b/test/tint/builtins/gen/literal/dot/ba4246.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = dot(vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_ba4246();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_ba4246();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_ba4246();
 }
diff --git a/test/tint/builtins/gen/literal/dot/ba4246.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dot/ba4246.wgsl.expected.wgsl
index 7ddc8d1..a0d779c 100644
--- a/test/tint/builtins/gen/literal/dot/ba4246.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dot/ba4246.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = dot(vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_ba4246();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_ba4246();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_ba4246();
 }
diff --git a/test/tint/builtins/gen/literal/dot/e994c7.wgsl b/test/tint/builtins/gen/literal/dot/e994c7.wgsl
index bbcfafb..72196ee 100644
--- a/test/tint/builtins/gen/literal/dot/e994c7.wgsl
+++ b/test/tint/builtins/gen/literal/dot/e994c7.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = dot(vec4<u32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_e994c7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_e994c7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_e994c7();
 }
diff --git a/test/tint/builtins/gen/literal/dot/e994c7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dot/e994c7.wgsl.expected.wgsl
index 2b54959..fd7c439 100644
--- a/test/tint/builtins/gen/literal/dot/e994c7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dot/e994c7.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = dot(vec4<u32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_e994c7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_e994c7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_e994c7();
 }
diff --git a/test/tint/builtins/gen/literal/dot/ef6b1d.wgsl b/test/tint/builtins/gen/literal/dot/ef6b1d.wgsl
index 2c73a7a..16a4704 100644
--- a/test/tint/builtins/gen/literal/dot/ef6b1d.wgsl
+++ b/test/tint/builtins/gen/literal/dot/ef6b1d.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = dot(vec4<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_ef6b1d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_ef6b1d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_ef6b1d();
 }
diff --git a/test/tint/builtins/gen/literal/dot/ef6b1d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dot/ef6b1d.wgsl.expected.wgsl
index 075cfcd..c1dda84c 100644
--- a/test/tint/builtins/gen/literal/dot/ef6b1d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dot/ef6b1d.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = dot(vec4<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_ef6b1d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_ef6b1d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_ef6b1d();
 }
diff --git a/test/tint/builtins/gen/literal/dot/f1312c.wgsl b/test/tint/builtins/gen/literal/dot/f1312c.wgsl
index 7966682..49e5c62 100644
--- a/test/tint/builtins/gen/literal/dot/f1312c.wgsl
+++ b/test/tint/builtins/gen/literal/dot/f1312c.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = dot(vec3<i32>(), vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_f1312c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_f1312c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_f1312c();
 }
diff --git a/test/tint/builtins/gen/literal/dot/f1312c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dot/f1312c.wgsl.expected.wgsl
index 7440cf9..7d9778e 100644
--- a/test/tint/builtins/gen/literal/dot/f1312c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dot/f1312c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = dot(vec3<i32>(), vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_f1312c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_f1312c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_f1312c();
 }
diff --git a/test/tint/builtins/gen/literal/dot/fc5f7c.wgsl b/test/tint/builtins/gen/literal/dot/fc5f7c.wgsl
index a7d1354..8a256ab 100644
--- a/test/tint/builtins/gen/literal/dot/fc5f7c.wgsl
+++ b/test/tint/builtins/gen/literal/dot/fc5f7c.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = dot(vec2<i32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_fc5f7c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_fc5f7c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_fc5f7c();
 }
diff --git a/test/tint/builtins/gen/literal/dot/fc5f7c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dot/fc5f7c.wgsl.expected.wgsl
index 6d30122..472b368 100644
--- a/test/tint/builtins/gen/literal/dot/fc5f7c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dot/fc5f7c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = dot(vec2<i32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_fc5f7c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_fc5f7c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_fc5f7c();
 }
diff --git a/test/tint/builtins/gen/literal/dpdx/0763f7.wgsl b/test/tint/builtins/gen/literal/dpdx/0763f7.wgsl
index 0c0cfad..faf72f4 100644
--- a/test/tint/builtins/gen/literal/dpdx/0763f7.wgsl
+++ b/test/tint/builtins/gen/literal/dpdx/0763f7.wgsl
@@ -28,7 +28,7 @@
   var res: vec3<f32> = dpdx(vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdx_0763f7();
 }
diff --git a/test/tint/builtins/gen/literal/dpdx/0763f7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdx/0763f7.wgsl.expected.wgsl
index 15235d6..8e119a5 100644
--- a/test/tint/builtins/gen/literal/dpdx/0763f7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdx/0763f7.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec3<f32> = dpdx(vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdx_0763f7();
 }
diff --git a/test/tint/builtins/gen/literal/dpdx/99edb1.wgsl b/test/tint/builtins/gen/literal/dpdx/99edb1.wgsl
index 45393f1..86324e0 100644
--- a/test/tint/builtins/gen/literal/dpdx/99edb1.wgsl
+++ b/test/tint/builtins/gen/literal/dpdx/99edb1.wgsl
@@ -28,7 +28,7 @@
   var res: vec2<f32> = dpdx(vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdx_99edb1();
 }
diff --git a/test/tint/builtins/gen/literal/dpdx/99edb1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdx/99edb1.wgsl.expected.wgsl
index 7405f0f..b10e05e 100644
--- a/test/tint/builtins/gen/literal/dpdx/99edb1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdx/99edb1.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec2<f32> = dpdx(vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdx_99edb1();
 }
diff --git a/test/tint/builtins/gen/literal/dpdx/c487fa.wgsl b/test/tint/builtins/gen/literal/dpdx/c487fa.wgsl
index c05487c..c55be8a 100644
--- a/test/tint/builtins/gen/literal/dpdx/c487fa.wgsl
+++ b/test/tint/builtins/gen/literal/dpdx/c487fa.wgsl
@@ -28,7 +28,7 @@
   var res: vec4<f32> = dpdx(vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdx_c487fa();
 }
diff --git a/test/tint/builtins/gen/literal/dpdx/c487fa.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdx/c487fa.wgsl.expected.wgsl
index f2ebe8e..a289889 100644
--- a/test/tint/builtins/gen/literal/dpdx/c487fa.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdx/c487fa.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec4<f32> = dpdx(vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdx_c487fa();
 }
diff --git a/test/tint/builtins/gen/literal/dpdx/e263de.wgsl b/test/tint/builtins/gen/literal/dpdx/e263de.wgsl
index f367bd5..815eadc 100644
--- a/test/tint/builtins/gen/literal/dpdx/e263de.wgsl
+++ b/test/tint/builtins/gen/literal/dpdx/e263de.wgsl
@@ -28,7 +28,7 @@
   var res: f32 = dpdx(1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdx_e263de();
 }
diff --git a/test/tint/builtins/gen/literal/dpdx/e263de.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdx/e263de.wgsl.expected.wgsl
index ac653d8..55b3525 100644
--- a/test/tint/builtins/gen/literal/dpdx/e263de.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdx/e263de.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : f32 = dpdx(1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdx_e263de();
 }
diff --git a/test/tint/builtins/gen/literal/dpdxCoarse/029152.wgsl b/test/tint/builtins/gen/literal/dpdxCoarse/029152.wgsl
index c490c29..d27e0bc 100644
--- a/test/tint/builtins/gen/literal/dpdxCoarse/029152.wgsl
+++ b/test/tint/builtins/gen/literal/dpdxCoarse/029152.wgsl
@@ -28,7 +28,7 @@
   var res: f32 = dpdxCoarse(1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxCoarse_029152();
 }
diff --git a/test/tint/builtins/gen/literal/dpdxCoarse/029152.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdxCoarse/029152.wgsl.expected.wgsl
index 38fe60c..5a98eb8 100644
--- a/test/tint/builtins/gen/literal/dpdxCoarse/029152.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdxCoarse/029152.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : f32 = dpdxCoarse(1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxCoarse_029152();
 }
diff --git a/test/tint/builtins/gen/literal/dpdxCoarse/9581cf.wgsl b/test/tint/builtins/gen/literal/dpdxCoarse/9581cf.wgsl
index 864f0a1..5bc2899 100644
--- a/test/tint/builtins/gen/literal/dpdxCoarse/9581cf.wgsl
+++ b/test/tint/builtins/gen/literal/dpdxCoarse/9581cf.wgsl
@@ -28,7 +28,7 @@
   var res: vec2<f32> = dpdxCoarse(vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxCoarse_9581cf();
 }
diff --git a/test/tint/builtins/gen/literal/dpdxCoarse/9581cf.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdxCoarse/9581cf.wgsl.expected.wgsl
index 51ac0a5..068a7ba 100644
--- a/test/tint/builtins/gen/literal/dpdxCoarse/9581cf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdxCoarse/9581cf.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec2<f32> = dpdxCoarse(vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxCoarse_9581cf();
 }
diff --git a/test/tint/builtins/gen/literal/dpdxCoarse/c28641.wgsl b/test/tint/builtins/gen/literal/dpdxCoarse/c28641.wgsl
index 98b2ca8..032b5fd 100644
--- a/test/tint/builtins/gen/literal/dpdxCoarse/c28641.wgsl
+++ b/test/tint/builtins/gen/literal/dpdxCoarse/c28641.wgsl
@@ -28,7 +28,7 @@
   var res: vec4<f32> = dpdxCoarse(vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxCoarse_c28641();
 }
diff --git a/test/tint/builtins/gen/literal/dpdxCoarse/c28641.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdxCoarse/c28641.wgsl.expected.wgsl
index 51fa7dc..b2aa9ae 100644
--- a/test/tint/builtins/gen/literal/dpdxCoarse/c28641.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdxCoarse/c28641.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec4<f32> = dpdxCoarse(vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxCoarse_c28641();
 }
diff --git a/test/tint/builtins/gen/literal/dpdxCoarse/f64d7b.wgsl b/test/tint/builtins/gen/literal/dpdxCoarse/f64d7b.wgsl
index b9e6721..f792bea 100644
--- a/test/tint/builtins/gen/literal/dpdxCoarse/f64d7b.wgsl
+++ b/test/tint/builtins/gen/literal/dpdxCoarse/f64d7b.wgsl
@@ -28,7 +28,7 @@
   var res: vec3<f32> = dpdxCoarse(vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxCoarse_f64d7b();
 }
diff --git a/test/tint/builtins/gen/literal/dpdxCoarse/f64d7b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdxCoarse/f64d7b.wgsl.expected.wgsl
index f5a9d29..ae0ecba 100644
--- a/test/tint/builtins/gen/literal/dpdxCoarse/f64d7b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdxCoarse/f64d7b.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec3<f32> = dpdxCoarse(vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxCoarse_f64d7b();
 }
diff --git a/test/tint/builtins/gen/literal/dpdxFine/8c5069.wgsl b/test/tint/builtins/gen/literal/dpdxFine/8c5069.wgsl
index 55e5fdd..5d406de 100644
--- a/test/tint/builtins/gen/literal/dpdxFine/8c5069.wgsl
+++ b/test/tint/builtins/gen/literal/dpdxFine/8c5069.wgsl
@@ -28,7 +28,7 @@
   var res: vec4<f32> = dpdxFine(vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxFine_8c5069();
 }
diff --git a/test/tint/builtins/gen/literal/dpdxFine/8c5069.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdxFine/8c5069.wgsl.expected.wgsl
index 6de1a1c..926635d 100644
--- a/test/tint/builtins/gen/literal/dpdxFine/8c5069.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdxFine/8c5069.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec4<f32> = dpdxFine(vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxFine_8c5069();
 }
diff --git a/test/tint/builtins/gen/literal/dpdxFine/9631de.wgsl b/test/tint/builtins/gen/literal/dpdxFine/9631de.wgsl
index 96f4ef3..b7212d9 100644
--- a/test/tint/builtins/gen/literal/dpdxFine/9631de.wgsl
+++ b/test/tint/builtins/gen/literal/dpdxFine/9631de.wgsl
@@ -28,7 +28,7 @@
   var res: vec2<f32> = dpdxFine(vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxFine_9631de();
 }
diff --git a/test/tint/builtins/gen/literal/dpdxFine/9631de.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdxFine/9631de.wgsl.expected.wgsl
index a56d3c4..d358417 100644
--- a/test/tint/builtins/gen/literal/dpdxFine/9631de.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdxFine/9631de.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec2<f32> = dpdxFine(vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxFine_9631de();
 }
diff --git a/test/tint/builtins/gen/literal/dpdxFine/f401a2.wgsl b/test/tint/builtins/gen/literal/dpdxFine/f401a2.wgsl
index 0c28759..36381e4 100644
--- a/test/tint/builtins/gen/literal/dpdxFine/f401a2.wgsl
+++ b/test/tint/builtins/gen/literal/dpdxFine/f401a2.wgsl
@@ -28,7 +28,7 @@
   var res: f32 = dpdxFine(1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxFine_f401a2();
 }
diff --git a/test/tint/builtins/gen/literal/dpdxFine/f401a2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdxFine/f401a2.wgsl.expected.wgsl
index 3f5c836..5a3cd8a 100644
--- a/test/tint/builtins/gen/literal/dpdxFine/f401a2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdxFine/f401a2.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : f32 = dpdxFine(1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxFine_f401a2();
 }
diff --git a/test/tint/builtins/gen/literal/dpdxFine/f92fb6.wgsl b/test/tint/builtins/gen/literal/dpdxFine/f92fb6.wgsl
index c387414..4dc23ec 100644
--- a/test/tint/builtins/gen/literal/dpdxFine/f92fb6.wgsl
+++ b/test/tint/builtins/gen/literal/dpdxFine/f92fb6.wgsl
@@ -28,7 +28,7 @@
   var res: vec3<f32> = dpdxFine(vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxFine_f92fb6();
 }
diff --git a/test/tint/builtins/gen/literal/dpdxFine/f92fb6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdxFine/f92fb6.wgsl.expected.wgsl
index 5189c7f..f2391e8 100644
--- a/test/tint/builtins/gen/literal/dpdxFine/f92fb6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdxFine/f92fb6.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec3<f32> = dpdxFine(vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxFine_f92fb6();
 }
diff --git a/test/tint/builtins/gen/literal/dpdy/699a05.wgsl b/test/tint/builtins/gen/literal/dpdy/699a05.wgsl
index 14025bc..d520294 100644
--- a/test/tint/builtins/gen/literal/dpdy/699a05.wgsl
+++ b/test/tint/builtins/gen/literal/dpdy/699a05.wgsl
@@ -28,7 +28,7 @@
   var res: vec4<f32> = dpdy(vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdy_699a05();
 }
diff --git a/test/tint/builtins/gen/literal/dpdy/699a05.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdy/699a05.wgsl.expected.wgsl
index 9aa244c..a300cd9 100644
--- a/test/tint/builtins/gen/literal/dpdy/699a05.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdy/699a05.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec4<f32> = dpdy(vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdy_699a05();
 }
diff --git a/test/tint/builtins/gen/literal/dpdy/7f8d84.wgsl b/test/tint/builtins/gen/literal/dpdy/7f8d84.wgsl
index 4d2fb93..85d7b6e 100644
--- a/test/tint/builtins/gen/literal/dpdy/7f8d84.wgsl
+++ b/test/tint/builtins/gen/literal/dpdy/7f8d84.wgsl
@@ -28,7 +28,7 @@
   var res: f32 = dpdy(1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdy_7f8d84();
 }
diff --git a/test/tint/builtins/gen/literal/dpdy/7f8d84.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdy/7f8d84.wgsl.expected.wgsl
index 732458e..edd98aa 100644
--- a/test/tint/builtins/gen/literal/dpdy/7f8d84.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdy/7f8d84.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : f32 = dpdy(1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdy_7f8d84();
 }
diff --git a/test/tint/builtins/gen/literal/dpdy/a8b56e.wgsl b/test/tint/builtins/gen/literal/dpdy/a8b56e.wgsl
index f7a51b3..5dab467 100644
--- a/test/tint/builtins/gen/literal/dpdy/a8b56e.wgsl
+++ b/test/tint/builtins/gen/literal/dpdy/a8b56e.wgsl
@@ -28,7 +28,7 @@
   var res: vec2<f32> = dpdy(vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdy_a8b56e();
 }
diff --git a/test/tint/builtins/gen/literal/dpdy/a8b56e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdy/a8b56e.wgsl.expected.wgsl
index 3493de8..0286f63 100644
--- a/test/tint/builtins/gen/literal/dpdy/a8b56e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdy/a8b56e.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec2<f32> = dpdy(vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdy_a8b56e();
 }
diff --git a/test/tint/builtins/gen/literal/dpdy/feb40f.wgsl b/test/tint/builtins/gen/literal/dpdy/feb40f.wgsl
index ac9641c..d722df2 100644
--- a/test/tint/builtins/gen/literal/dpdy/feb40f.wgsl
+++ b/test/tint/builtins/gen/literal/dpdy/feb40f.wgsl
@@ -28,7 +28,7 @@
   var res: vec3<f32> = dpdy(vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdy_feb40f();
 }
diff --git a/test/tint/builtins/gen/literal/dpdy/feb40f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdy/feb40f.wgsl.expected.wgsl
index bdcb51d..9be2e1e 100644
--- a/test/tint/builtins/gen/literal/dpdy/feb40f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdy/feb40f.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec3<f32> = dpdy(vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdy_feb40f();
 }
diff --git a/test/tint/builtins/gen/literal/dpdyCoarse/3e1ab4.wgsl b/test/tint/builtins/gen/literal/dpdyCoarse/3e1ab4.wgsl
index 7e36fd0..75db504 100644
--- a/test/tint/builtins/gen/literal/dpdyCoarse/3e1ab4.wgsl
+++ b/test/tint/builtins/gen/literal/dpdyCoarse/3e1ab4.wgsl
@@ -28,7 +28,7 @@
   var res: vec2<f32> = dpdyCoarse(vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyCoarse_3e1ab4();
 }
diff --git a/test/tint/builtins/gen/literal/dpdyCoarse/3e1ab4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdyCoarse/3e1ab4.wgsl.expected.wgsl
index 347ad73..8ce4a08 100644
--- a/test/tint/builtins/gen/literal/dpdyCoarse/3e1ab4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdyCoarse/3e1ab4.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec2<f32> = dpdyCoarse(vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyCoarse_3e1ab4();
 }
diff --git a/test/tint/builtins/gen/literal/dpdyCoarse/445d24.wgsl b/test/tint/builtins/gen/literal/dpdyCoarse/445d24.wgsl
index 99ef18d4..ce185c1 100644
--- a/test/tint/builtins/gen/literal/dpdyCoarse/445d24.wgsl
+++ b/test/tint/builtins/gen/literal/dpdyCoarse/445d24.wgsl
@@ -28,7 +28,7 @@
   var res: vec4<f32> = dpdyCoarse(vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyCoarse_445d24();
 }
diff --git a/test/tint/builtins/gen/literal/dpdyCoarse/445d24.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdyCoarse/445d24.wgsl.expected.wgsl
index db347c4..05ff718 100644
--- a/test/tint/builtins/gen/literal/dpdyCoarse/445d24.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdyCoarse/445d24.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec4<f32> = dpdyCoarse(vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyCoarse_445d24();
 }
diff --git a/test/tint/builtins/gen/literal/dpdyCoarse/870a7e.wgsl b/test/tint/builtins/gen/literal/dpdyCoarse/870a7e.wgsl
index f7cff8d..ade83d5 100644
--- a/test/tint/builtins/gen/literal/dpdyCoarse/870a7e.wgsl
+++ b/test/tint/builtins/gen/literal/dpdyCoarse/870a7e.wgsl
@@ -28,7 +28,7 @@
   var res: f32 = dpdyCoarse(1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyCoarse_870a7e();
 }
diff --git a/test/tint/builtins/gen/literal/dpdyCoarse/870a7e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdyCoarse/870a7e.wgsl.expected.wgsl
index b3d7586..23e06ae 100644
--- a/test/tint/builtins/gen/literal/dpdyCoarse/870a7e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdyCoarse/870a7e.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : f32 = dpdyCoarse(1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyCoarse_870a7e();
 }
diff --git a/test/tint/builtins/gen/literal/dpdyCoarse/ae1873.wgsl b/test/tint/builtins/gen/literal/dpdyCoarse/ae1873.wgsl
index f5d5fdb..a6ea568 100644
--- a/test/tint/builtins/gen/literal/dpdyCoarse/ae1873.wgsl
+++ b/test/tint/builtins/gen/literal/dpdyCoarse/ae1873.wgsl
@@ -28,7 +28,7 @@
   var res: vec3<f32> = dpdyCoarse(vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyCoarse_ae1873();
 }
diff --git a/test/tint/builtins/gen/literal/dpdyCoarse/ae1873.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdyCoarse/ae1873.wgsl.expected.wgsl
index c116a9e1..d2e5abe 100644
--- a/test/tint/builtins/gen/literal/dpdyCoarse/ae1873.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdyCoarse/ae1873.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec3<f32> = dpdyCoarse(vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyCoarse_ae1873();
 }
diff --git a/test/tint/builtins/gen/literal/dpdyFine/1fb7ab.wgsl b/test/tint/builtins/gen/literal/dpdyFine/1fb7ab.wgsl
index ff40e48..1ee8928 100644
--- a/test/tint/builtins/gen/literal/dpdyFine/1fb7ab.wgsl
+++ b/test/tint/builtins/gen/literal/dpdyFine/1fb7ab.wgsl
@@ -28,7 +28,7 @@
   var res: vec3<f32> = dpdyFine(vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyFine_1fb7ab();
 }
diff --git a/test/tint/builtins/gen/literal/dpdyFine/1fb7ab.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdyFine/1fb7ab.wgsl.expected.wgsl
index 96fd518..c7ea17a 100644
--- a/test/tint/builtins/gen/literal/dpdyFine/1fb7ab.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdyFine/1fb7ab.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec3<f32> = dpdyFine(vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyFine_1fb7ab();
 }
diff --git a/test/tint/builtins/gen/literal/dpdyFine/6eb673.wgsl b/test/tint/builtins/gen/literal/dpdyFine/6eb673.wgsl
index 67acf71..3517daa 100644
--- a/test/tint/builtins/gen/literal/dpdyFine/6eb673.wgsl
+++ b/test/tint/builtins/gen/literal/dpdyFine/6eb673.wgsl
@@ -28,7 +28,7 @@
   var res: f32 = dpdyFine(1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyFine_6eb673();
 }
diff --git a/test/tint/builtins/gen/literal/dpdyFine/6eb673.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdyFine/6eb673.wgsl.expected.wgsl
index 8fbc820..7857cc1 100644
--- a/test/tint/builtins/gen/literal/dpdyFine/6eb673.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdyFine/6eb673.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : f32 = dpdyFine(1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyFine_6eb673();
 }
diff --git a/test/tint/builtins/gen/literal/dpdyFine/d0a648.wgsl b/test/tint/builtins/gen/literal/dpdyFine/d0a648.wgsl
index 9b0a079..004ce70 100644
--- a/test/tint/builtins/gen/literal/dpdyFine/d0a648.wgsl
+++ b/test/tint/builtins/gen/literal/dpdyFine/d0a648.wgsl
@@ -28,7 +28,7 @@
   var res: vec4<f32> = dpdyFine(vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyFine_d0a648();
 }
diff --git a/test/tint/builtins/gen/literal/dpdyFine/d0a648.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdyFine/d0a648.wgsl.expected.wgsl
index 5d4fc7d..f9d2a43 100644
--- a/test/tint/builtins/gen/literal/dpdyFine/d0a648.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdyFine/d0a648.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec4<f32> = dpdyFine(vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyFine_d0a648();
 }
diff --git a/test/tint/builtins/gen/literal/dpdyFine/df33aa.wgsl b/test/tint/builtins/gen/literal/dpdyFine/df33aa.wgsl
index 1686e0d..dcadf60 100644
--- a/test/tint/builtins/gen/literal/dpdyFine/df33aa.wgsl
+++ b/test/tint/builtins/gen/literal/dpdyFine/df33aa.wgsl
@@ -28,7 +28,7 @@
   var res: vec2<f32> = dpdyFine(vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyFine_df33aa();
 }
diff --git a/test/tint/builtins/gen/literal/dpdyFine/df33aa.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dpdyFine/df33aa.wgsl.expected.wgsl
index 876948a..2193751 100644
--- a/test/tint/builtins/gen/literal/dpdyFine/df33aa.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dpdyFine/df33aa.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec2<f32> = dpdyFine(vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyFine_df33aa();
 }
diff --git a/test/tint/builtins/gen/literal/exp/0f70eb.wgsl b/test/tint/builtins/gen/literal/exp/0f70eb.wgsl
index 7778d3f..9c82f47 100644
--- a/test/tint/builtins/gen/literal/exp/0f70eb.wgsl
+++ b/test/tint/builtins/gen/literal/exp/0f70eb.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = exp(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_0f70eb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp_0f70eb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp_0f70eb();
 }
diff --git a/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.wgsl
index bdcd32b..5bc410e 100644
--- a/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = exp(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_0f70eb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp_0f70eb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp_0f70eb();
 }
diff --git a/test/tint/builtins/gen/literal/exp/1951e7.wgsl b/test/tint/builtins/gen/literal/exp/1951e7.wgsl
index 3f525c0..00f36ed 100644
--- a/test/tint/builtins/gen/literal/exp/1951e7.wgsl
+++ b/test/tint/builtins/gen/literal/exp/1951e7.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = exp(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_1951e7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp_1951e7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp_1951e7();
 }
diff --git a/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.wgsl
index f3dd502..6fedb81 100644
--- a/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = exp(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_1951e7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp_1951e7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp_1951e7();
 }
diff --git a/test/tint/builtins/gen/literal/exp/771fd2.wgsl b/test/tint/builtins/gen/literal/exp/771fd2.wgsl
index f5cb802..2a12ef6 100644
--- a/test/tint/builtins/gen/literal/exp/771fd2.wgsl
+++ b/test/tint/builtins/gen/literal/exp/771fd2.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = exp(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_771fd2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp_771fd2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp_771fd2();
 }
diff --git a/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.wgsl
index 31bfd18..3c86827 100644
--- a/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = exp(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_771fd2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp_771fd2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp_771fd2();
 }
diff --git a/test/tint/builtins/gen/literal/exp/d98450.wgsl b/test/tint/builtins/gen/literal/exp/d98450.wgsl
index de9f545..7e10b92 100644
--- a/test/tint/builtins/gen/literal/exp/d98450.wgsl
+++ b/test/tint/builtins/gen/literal/exp/d98450.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = exp(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_d98450();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp_d98450();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp_d98450();
 }
diff --git a/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.wgsl
index 168c3c2..294c744 100644
--- a/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = exp(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_d98450();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp_d98450();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp_d98450();
 }
diff --git a/test/tint/builtins/gen/literal/exp2/1f8680.wgsl b/test/tint/builtins/gen/literal/exp2/1f8680.wgsl
index bd6cf52..d2205be 100644
--- a/test/tint/builtins/gen/literal/exp2/1f8680.wgsl
+++ b/test/tint/builtins/gen/literal/exp2/1f8680.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = exp2(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_1f8680();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp2_1f8680();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp2_1f8680();
 }
diff --git a/test/tint/builtins/gen/literal/exp2/1f8680.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/exp2/1f8680.wgsl.expected.wgsl
index a4cba82..a9c5717 100644
--- a/test/tint/builtins/gen/literal/exp2/1f8680.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/exp2/1f8680.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = exp2(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_1f8680();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp2_1f8680();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp2_1f8680();
 }
diff --git a/test/tint/builtins/gen/literal/exp2/a9d0a7.wgsl b/test/tint/builtins/gen/literal/exp2/a9d0a7.wgsl
index 6afd6df..0bc4437 100644
--- a/test/tint/builtins/gen/literal/exp2/a9d0a7.wgsl
+++ b/test/tint/builtins/gen/literal/exp2/a9d0a7.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = exp2(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_a9d0a7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp2_a9d0a7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp2_a9d0a7();
 }
diff --git a/test/tint/builtins/gen/literal/exp2/a9d0a7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/exp2/a9d0a7.wgsl.expected.wgsl
index 6a9160b..6b5cf92 100644
--- a/test/tint/builtins/gen/literal/exp2/a9d0a7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/exp2/a9d0a7.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = exp2(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_a9d0a7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp2_a9d0a7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp2_a9d0a7();
 }
diff --git a/test/tint/builtins/gen/literal/exp2/d6777c.wgsl b/test/tint/builtins/gen/literal/exp2/d6777c.wgsl
index f11932f..cf59359 100644
--- a/test/tint/builtins/gen/literal/exp2/d6777c.wgsl
+++ b/test/tint/builtins/gen/literal/exp2/d6777c.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = exp2(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_d6777c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp2_d6777c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp2_d6777c();
 }
diff --git a/test/tint/builtins/gen/literal/exp2/d6777c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/exp2/d6777c.wgsl.expected.wgsl
index 7c84e15..0364194 100644
--- a/test/tint/builtins/gen/literal/exp2/d6777c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/exp2/d6777c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = exp2(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_d6777c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp2_d6777c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp2_d6777c();
 }
diff --git a/test/tint/builtins/gen/literal/exp2/dea523.wgsl b/test/tint/builtins/gen/literal/exp2/dea523.wgsl
index 2930f50..ee1112c 100644
--- a/test/tint/builtins/gen/literal/exp2/dea523.wgsl
+++ b/test/tint/builtins/gen/literal/exp2/dea523.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = exp2(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_dea523();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp2_dea523();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp2_dea523();
 }
diff --git a/test/tint/builtins/gen/literal/exp2/dea523.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/exp2/dea523.wgsl.expected.wgsl
index 92ea06d..205a4b5 100644
--- a/test/tint/builtins/gen/literal/exp2/dea523.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/exp2/dea523.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = exp2(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_dea523();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp2_dea523();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp2_dea523();
 }
diff --git a/test/tint/builtins/gen/literal/extractBits/12b197.wgsl b/test/tint/builtins/gen/literal/extractBits/12b197.wgsl
index d67e896..3a8f402 100644
--- a/test/tint/builtins/gen/literal/extractBits/12b197.wgsl
+++ b/test/tint/builtins/gen/literal/extractBits/12b197.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = extractBits(vec3<u32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_12b197();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_12b197();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_12b197();
 }
diff --git a/test/tint/builtins/gen/literal/extractBits/12b197.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/extractBits/12b197.wgsl.expected.wgsl
index 26d1976..af852d4 100644
--- a/test/tint/builtins/gen/literal/extractBits/12b197.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/extractBits/12b197.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = extractBits(vec3<u32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_12b197();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_12b197();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_12b197();
 }
diff --git a/test/tint/builtins/gen/literal/extractBits/249874.wgsl b/test/tint/builtins/gen/literal/extractBits/249874.wgsl
index dc06fb7..785e0b8 100644
--- a/test/tint/builtins/gen/literal/extractBits/249874.wgsl
+++ b/test/tint/builtins/gen/literal/extractBits/249874.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = extractBits(1, 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_249874();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_249874();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_249874();
 }
diff --git a/test/tint/builtins/gen/literal/extractBits/249874.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/extractBits/249874.wgsl.expected.wgsl
index 6c80514..7abbd36 100644
--- a/test/tint/builtins/gen/literal/extractBits/249874.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/extractBits/249874.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = extractBits(1, 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_249874();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_249874();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_249874();
 }
diff --git a/test/tint/builtins/gen/literal/extractBits/631377.wgsl b/test/tint/builtins/gen/literal/extractBits/631377.wgsl
index ca0f97f..155472e 100644
--- a/test/tint/builtins/gen/literal/extractBits/631377.wgsl
+++ b/test/tint/builtins/gen/literal/extractBits/631377.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = extractBits(vec4<u32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_631377();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_631377();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_631377();
 }
diff --git a/test/tint/builtins/gen/literal/extractBits/631377.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/extractBits/631377.wgsl.expected.wgsl
index dca1682..1d78b80 100644
--- a/test/tint/builtins/gen/literal/extractBits/631377.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/extractBits/631377.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = extractBits(vec4<u32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_631377();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_631377();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_631377();
 }
diff --git a/test/tint/builtins/gen/literal/extractBits/a99a8d.wgsl b/test/tint/builtins/gen/literal/extractBits/a99a8d.wgsl
index 2e8fb05..3f9055c 100644
--- a/test/tint/builtins/gen/literal/extractBits/a99a8d.wgsl
+++ b/test/tint/builtins/gen/literal/extractBits/a99a8d.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = extractBits(vec2<i32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_a99a8d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_a99a8d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_a99a8d();
 }
diff --git a/test/tint/builtins/gen/literal/extractBits/a99a8d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/extractBits/a99a8d.wgsl.expected.wgsl
index 4f6879d..e73e25b 100644
--- a/test/tint/builtins/gen/literal/extractBits/a99a8d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/extractBits/a99a8d.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = extractBits(vec2<i32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_a99a8d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_a99a8d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_a99a8d();
 }
diff --git a/test/tint/builtins/gen/literal/extractBits/ce81f8.wgsl b/test/tint/builtins/gen/literal/extractBits/ce81f8.wgsl
index c99a7c5..89e07c9 100644
--- a/test/tint/builtins/gen/literal/extractBits/ce81f8.wgsl
+++ b/test/tint/builtins/gen/literal/extractBits/ce81f8.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = extractBits(1u, 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_ce81f8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_ce81f8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_ce81f8();
 }
diff --git a/test/tint/builtins/gen/literal/extractBits/ce81f8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/extractBits/ce81f8.wgsl.expected.wgsl
index 646fa96..69137f2 100644
--- a/test/tint/builtins/gen/literal/extractBits/ce81f8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/extractBits/ce81f8.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = extractBits(1u, 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_ce81f8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_ce81f8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_ce81f8();
 }
diff --git a/test/tint/builtins/gen/literal/extractBits/e04f5d.wgsl b/test/tint/builtins/gen/literal/extractBits/e04f5d.wgsl
index 8586101..3ce524e 100644
--- a/test/tint/builtins/gen/literal/extractBits/e04f5d.wgsl
+++ b/test/tint/builtins/gen/literal/extractBits/e04f5d.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = extractBits(vec3<i32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_e04f5d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_e04f5d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_e04f5d();
 }
diff --git a/test/tint/builtins/gen/literal/extractBits/e04f5d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/extractBits/e04f5d.wgsl.expected.wgsl
index 49ebb9c..1441d07 100644
--- a/test/tint/builtins/gen/literal/extractBits/e04f5d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/extractBits/e04f5d.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = extractBits(vec3<i32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_e04f5d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_e04f5d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_e04f5d();
 }
diff --git a/test/tint/builtins/gen/literal/extractBits/f28f69.wgsl b/test/tint/builtins/gen/literal/extractBits/f28f69.wgsl
index 9a358de..a77cf88 100644
--- a/test/tint/builtins/gen/literal/extractBits/f28f69.wgsl
+++ b/test/tint/builtins/gen/literal/extractBits/f28f69.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = extractBits(vec2<u32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_f28f69();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_f28f69();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_f28f69();
 }
diff --git a/test/tint/builtins/gen/literal/extractBits/f28f69.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/extractBits/f28f69.wgsl.expected.wgsl
index ad883f5..534ff14 100644
--- a/test/tint/builtins/gen/literal/extractBits/f28f69.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/extractBits/f28f69.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = extractBits(vec2<u32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_f28f69();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_f28f69();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_f28f69();
 }
diff --git a/test/tint/builtins/gen/literal/extractBits/fb850f.wgsl b/test/tint/builtins/gen/literal/extractBits/fb850f.wgsl
index aeb2fd7..99b1702 100644
--- a/test/tint/builtins/gen/literal/extractBits/fb850f.wgsl
+++ b/test/tint/builtins/gen/literal/extractBits/fb850f.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = extractBits(vec4<i32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_fb850f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_fb850f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_fb850f();
 }
diff --git a/test/tint/builtins/gen/literal/extractBits/fb850f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/extractBits/fb850f.wgsl.expected.wgsl
index 2e3e8d1..200817c 100644
--- a/test/tint/builtins/gen/literal/extractBits/fb850f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/extractBits/fb850f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = extractBits(vec4<i32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_fb850f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_fb850f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_fb850f();
 }
diff --git a/test/tint/builtins/gen/literal/faceForward/5afbd5.wgsl b/test/tint/builtins/gen/literal/faceForward/5afbd5.wgsl
index 99f293a..d69f29e 100644
--- a/test/tint/builtins/gen/literal/faceForward/5afbd5.wgsl
+++ b/test/tint/builtins/gen/literal/faceForward/5afbd5.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = faceForward(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   faceForward_5afbd5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   faceForward_5afbd5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   faceForward_5afbd5();
 }
diff --git a/test/tint/builtins/gen/literal/faceForward/5afbd5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/faceForward/5afbd5.wgsl.expected.wgsl
index 65e8800..735e6b9 100644
--- a/test/tint/builtins/gen/literal/faceForward/5afbd5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/faceForward/5afbd5.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = faceForward(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   faceForward_5afbd5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   faceForward_5afbd5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   faceForward_5afbd5();
 }
diff --git a/test/tint/builtins/gen/literal/faceForward/b316e5.wgsl b/test/tint/builtins/gen/literal/faceForward/b316e5.wgsl
index 4782cf6..6a56e12 100644
--- a/test/tint/builtins/gen/literal/faceForward/b316e5.wgsl
+++ b/test/tint/builtins/gen/literal/faceForward/b316e5.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = faceForward(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   faceForward_b316e5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   faceForward_b316e5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   faceForward_b316e5();
 }
diff --git a/test/tint/builtins/gen/literal/faceForward/b316e5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/faceForward/b316e5.wgsl.expected.wgsl
index e3cc002..3288e97 100644
--- a/test/tint/builtins/gen/literal/faceForward/b316e5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/faceForward/b316e5.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = faceForward(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   faceForward_b316e5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   faceForward_b316e5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   faceForward_b316e5();
 }
diff --git a/test/tint/builtins/gen/literal/faceForward/e6908b.wgsl b/test/tint/builtins/gen/literal/faceForward/e6908b.wgsl
index ee829ed..8052997 100644
--- a/test/tint/builtins/gen/literal/faceForward/e6908b.wgsl
+++ b/test/tint/builtins/gen/literal/faceForward/e6908b.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = faceForward(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   faceForward_e6908b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   faceForward_e6908b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   faceForward_e6908b();
 }
diff --git a/test/tint/builtins/gen/literal/faceForward/e6908b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/faceForward/e6908b.wgsl.expected.wgsl
index 96c2c87..0fb5877 100644
--- a/test/tint/builtins/gen/literal/faceForward/e6908b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/faceForward/e6908b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = faceForward(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   faceForward_e6908b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   faceForward_e6908b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   faceForward_e6908b();
 }
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/000ff3.wgsl b/test/tint/builtins/gen/literal/firstLeadingBit/000ff3.wgsl
index faa49e4..5d12d31 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/000ff3.wgsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/000ff3.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = firstLeadingBit(vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_000ff3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_000ff3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_000ff3();
 }
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/000ff3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/firstLeadingBit/000ff3.wgsl.expected.wgsl
index bf0529c..4a71621 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/000ff3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/000ff3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = firstLeadingBit(vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_000ff3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_000ff3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_000ff3();
 }
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/35053e.wgsl b/test/tint/builtins/gen/literal/firstLeadingBit/35053e.wgsl
index 5922e0d..83aff3f 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/35053e.wgsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/35053e.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = firstLeadingBit(vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_35053e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_35053e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_35053e();
 }
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/35053e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/firstLeadingBit/35053e.wgsl.expected.wgsl
index cbf0a6b..3656dfe 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/35053e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/35053e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = firstLeadingBit(vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_35053e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_35053e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_35053e();
 }
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/3fd7d0.wgsl b/test/tint/builtins/gen/literal/firstLeadingBit/3fd7d0.wgsl
index e799c27..48687ed 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/3fd7d0.wgsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/3fd7d0.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = firstLeadingBit(vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_3fd7d0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_3fd7d0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_3fd7d0();
 }
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/3fd7d0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/firstLeadingBit/3fd7d0.wgsl.expected.wgsl
index 4537a4a..b7e7985 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/3fd7d0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/3fd7d0.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = firstLeadingBit(vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_3fd7d0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_3fd7d0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_3fd7d0();
 }
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/57a1a3.wgsl b/test/tint/builtins/gen/literal/firstLeadingBit/57a1a3.wgsl
index c79d1dd..c44d2fa 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/57a1a3.wgsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/57a1a3.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = firstLeadingBit(1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_57a1a3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_57a1a3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_57a1a3();
 }
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/57a1a3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/firstLeadingBit/57a1a3.wgsl.expected.wgsl
index ff32238..e26678f 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/57a1a3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/57a1a3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = firstLeadingBit(1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_57a1a3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_57a1a3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_57a1a3();
 }
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/6fe804.wgsl b/test/tint/builtins/gen/literal/firstLeadingBit/6fe804.wgsl
index 87838a7..e5ffa78 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/6fe804.wgsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/6fe804.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = firstLeadingBit(vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_6fe804();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_6fe804();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_6fe804();
 }
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/6fe804.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/firstLeadingBit/6fe804.wgsl.expected.wgsl
index 8eefa88..9a507e8 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/6fe804.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/6fe804.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = firstLeadingBit(vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_6fe804();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_6fe804();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_6fe804();
 }
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/a622c2.wgsl b/test/tint/builtins/gen/literal/firstLeadingBit/a622c2.wgsl
index 64b2c7b..cd7ea4d 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/a622c2.wgsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/a622c2.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = firstLeadingBit(vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_a622c2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_a622c2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_a622c2();
 }
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/a622c2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/firstLeadingBit/a622c2.wgsl.expected.wgsl
index e7fb9d1..510239e 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/a622c2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/a622c2.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = firstLeadingBit(vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_a622c2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_a622c2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_a622c2();
 }
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/c1f940.wgsl b/test/tint/builtins/gen/literal/firstLeadingBit/c1f940.wgsl
index f09a593..aecb9df 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/c1f940.wgsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/c1f940.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = firstLeadingBit(vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_c1f940();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_c1f940();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_c1f940();
 }
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/c1f940.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/firstLeadingBit/c1f940.wgsl.expected.wgsl
index b79dbd7..d9bc46c 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/c1f940.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/c1f940.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = firstLeadingBit(vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_c1f940();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_c1f940();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_c1f940();
 }
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/f0779d.wgsl b/test/tint/builtins/gen/literal/firstLeadingBit/f0779d.wgsl
index a1a5a3d..ff51051 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/f0779d.wgsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/f0779d.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = firstLeadingBit(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_f0779d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_f0779d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_f0779d();
 }
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/f0779d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/firstLeadingBit/f0779d.wgsl.expected.wgsl
index 8f6430c..5a3d105 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/f0779d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/f0779d.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = firstLeadingBit(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_f0779d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_f0779d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_f0779d();
 }
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/110f2c.wgsl b/test/tint/builtins/gen/literal/firstTrailingBit/110f2c.wgsl
index 818e922..e241c81 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/110f2c.wgsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/110f2c.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = firstTrailingBit(vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_110f2c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_110f2c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_110f2c();
 }
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/110f2c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/firstTrailingBit/110f2c.wgsl.expected.wgsl
index d138779..1ae02d1 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/110f2c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/110f2c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = firstTrailingBit(vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_110f2c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_110f2c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_110f2c();
 }
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/3a2acc.wgsl b/test/tint/builtins/gen/literal/firstTrailingBit/3a2acc.wgsl
index 3842f4f..a4356e2 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/3a2acc.wgsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/3a2acc.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = firstTrailingBit(1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_3a2acc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_3a2acc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_3a2acc();
 }
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/3a2acc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/firstTrailingBit/3a2acc.wgsl.expected.wgsl
index 7d59d68..e6b7e95 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/3a2acc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/3a2acc.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = firstTrailingBit(1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_3a2acc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_3a2acc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_3a2acc();
 }
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/45eb10.wgsl b/test/tint/builtins/gen/literal/firstTrailingBit/45eb10.wgsl
index 396593e..a20ce53 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/45eb10.wgsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/45eb10.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = firstTrailingBit(vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_45eb10();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_45eb10();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_45eb10();
 }
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/45eb10.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/firstTrailingBit/45eb10.wgsl.expected.wgsl
index fc7dd14..cbe3457 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/45eb10.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/45eb10.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = firstTrailingBit(vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_45eb10();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_45eb10();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_45eb10();
 }
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/47d475.wgsl b/test/tint/builtins/gen/literal/firstTrailingBit/47d475.wgsl
index d0268af..b9bb17b 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/47d475.wgsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/47d475.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = firstTrailingBit(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_47d475();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_47d475();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_47d475();
 }
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/47d475.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/firstTrailingBit/47d475.wgsl.expected.wgsl
index 8373e03..1673bcd 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/47d475.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/47d475.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = firstTrailingBit(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_47d475();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_47d475();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_47d475();
 }
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/50c072.wgsl b/test/tint/builtins/gen/literal/firstTrailingBit/50c072.wgsl
index fa986e0..6004640 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/50c072.wgsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/50c072.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = firstTrailingBit(vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_50c072();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_50c072();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_50c072();
 }
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/50c072.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/firstTrailingBit/50c072.wgsl.expected.wgsl
index 550bd94..747c95c 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/50c072.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/50c072.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = firstTrailingBit(vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_50c072();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_50c072();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_50c072();
 }
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/7496d6.wgsl b/test/tint/builtins/gen/literal/firstTrailingBit/7496d6.wgsl
index c1dff0a..9d41559 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/7496d6.wgsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/7496d6.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = firstTrailingBit(vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_7496d6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_7496d6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_7496d6();
 }
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/7496d6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/firstTrailingBit/7496d6.wgsl.expected.wgsl
index 85120e3..6bd04dd 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/7496d6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/7496d6.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = firstTrailingBit(vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_7496d6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_7496d6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_7496d6();
 }
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/86551b.wgsl b/test/tint/builtins/gen/literal/firstTrailingBit/86551b.wgsl
index 97e389e..ddbbf70 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/86551b.wgsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/86551b.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = firstTrailingBit(vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_86551b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_86551b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_86551b();
 }
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/86551b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/firstTrailingBit/86551b.wgsl.expected.wgsl
index efa728b..273c4cd 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/86551b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/86551b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = firstTrailingBit(vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_86551b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_86551b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_86551b();
 }
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/cb51ce.wgsl b/test/tint/builtins/gen/literal/firstTrailingBit/cb51ce.wgsl
index 895e9bb..a476078 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/cb51ce.wgsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/cb51ce.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = firstTrailingBit(vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_cb51ce();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_cb51ce();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_cb51ce();
 }
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/cb51ce.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/firstTrailingBit/cb51ce.wgsl.expected.wgsl
index cee5c39..e8f2f99 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/cb51ce.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/cb51ce.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = firstTrailingBit(vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_cb51ce();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_cb51ce();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_cb51ce();
 }
diff --git a/test/tint/builtins/gen/literal/floor/3bccc4.wgsl b/test/tint/builtins/gen/literal/floor/3bccc4.wgsl
index 117cb5c..fee3492 100644
--- a/test/tint/builtins/gen/literal/floor/3bccc4.wgsl
+++ b/test/tint/builtins/gen/literal/floor/3bccc4.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = floor(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_3bccc4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   floor_3bccc4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   floor_3bccc4();
 }
diff --git a/test/tint/builtins/gen/literal/floor/3bccc4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/floor/3bccc4.wgsl.expected.wgsl
index 878e104..9e31c12 100644
--- a/test/tint/builtins/gen/literal/floor/3bccc4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/floor/3bccc4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = floor(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_3bccc4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   floor_3bccc4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   floor_3bccc4();
 }
diff --git a/test/tint/builtins/gen/literal/floor/5fc9ac.wgsl b/test/tint/builtins/gen/literal/floor/5fc9ac.wgsl
index daab170..5e2fa75 100644
--- a/test/tint/builtins/gen/literal/floor/5fc9ac.wgsl
+++ b/test/tint/builtins/gen/literal/floor/5fc9ac.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = floor(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_5fc9ac();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   floor_5fc9ac();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   floor_5fc9ac();
 }
diff --git a/test/tint/builtins/gen/literal/floor/5fc9ac.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/floor/5fc9ac.wgsl.expected.wgsl
index 1b6fadd..7ddc923 100644
--- a/test/tint/builtins/gen/literal/floor/5fc9ac.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/floor/5fc9ac.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = floor(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_5fc9ac();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   floor_5fc9ac();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   floor_5fc9ac();
 }
diff --git a/test/tint/builtins/gen/literal/floor/60d7ea.wgsl b/test/tint/builtins/gen/literal/floor/60d7ea.wgsl
index 0cbaf43..e44e946 100644
--- a/test/tint/builtins/gen/literal/floor/60d7ea.wgsl
+++ b/test/tint/builtins/gen/literal/floor/60d7ea.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = floor(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_60d7ea();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   floor_60d7ea();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   floor_60d7ea();
 }
diff --git a/test/tint/builtins/gen/literal/floor/60d7ea.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/floor/60d7ea.wgsl.expected.wgsl
index bfc5a83..8b6be7c 100644
--- a/test/tint/builtins/gen/literal/floor/60d7ea.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/floor/60d7ea.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = floor(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_60d7ea();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   floor_60d7ea();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   floor_60d7ea();
 }
diff --git a/test/tint/builtins/gen/literal/floor/66f154.wgsl b/test/tint/builtins/gen/literal/floor/66f154.wgsl
index ec55b67..44ed3c6 100644
--- a/test/tint/builtins/gen/literal/floor/66f154.wgsl
+++ b/test/tint/builtins/gen/literal/floor/66f154.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = floor(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_66f154();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   floor_66f154();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   floor_66f154();
 }
diff --git a/test/tint/builtins/gen/literal/floor/66f154.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/floor/66f154.wgsl.expected.wgsl
index 11de386..50c9513 100644
--- a/test/tint/builtins/gen/literal/floor/66f154.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/floor/66f154.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = floor(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_66f154();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   floor_66f154();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   floor_66f154();
 }
diff --git a/test/tint/builtins/gen/literal/fma/26a7a9.wgsl b/test/tint/builtins/gen/literal/fma/26a7a9.wgsl
index 834ed38..371cf35 100644
--- a/test/tint/builtins/gen/literal/fma/26a7a9.wgsl
+++ b/test/tint/builtins/gen/literal/fma/26a7a9.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = fma(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_26a7a9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fma_26a7a9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fma_26a7a9();
 }
diff --git a/test/tint/builtins/gen/literal/fma/26a7a9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fma/26a7a9.wgsl.expected.wgsl
index f1edf4e..86ac098 100644
--- a/test/tint/builtins/gen/literal/fma/26a7a9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fma/26a7a9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = fma(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_26a7a9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fma_26a7a9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fma_26a7a9();
 }
diff --git a/test/tint/builtins/gen/literal/fma/6a3283.wgsl b/test/tint/builtins/gen/literal/fma/6a3283.wgsl
index d5cf90f..7e9d471 100644
--- a/test/tint/builtins/gen/literal/fma/6a3283.wgsl
+++ b/test/tint/builtins/gen/literal/fma/6a3283.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = fma(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_6a3283();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fma_6a3283();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fma_6a3283();
 }
diff --git a/test/tint/builtins/gen/literal/fma/6a3283.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fma/6a3283.wgsl.expected.wgsl
index 267c2b1..97053b7c 100644
--- a/test/tint/builtins/gen/literal/fma/6a3283.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fma/6a3283.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = fma(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_6a3283();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fma_6a3283();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fma_6a3283();
 }
diff --git a/test/tint/builtins/gen/literal/fma/c10ba3.wgsl b/test/tint/builtins/gen/literal/fma/c10ba3.wgsl
index d26b504..fa1eb72 100644
--- a/test/tint/builtins/gen/literal/fma/c10ba3.wgsl
+++ b/test/tint/builtins/gen/literal/fma/c10ba3.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = fma(1.0, 1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_c10ba3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fma_c10ba3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fma_c10ba3();
 }
diff --git a/test/tint/builtins/gen/literal/fma/c10ba3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fma/c10ba3.wgsl.expected.wgsl
index baec69d..47d583d 100644
--- a/test/tint/builtins/gen/literal/fma/c10ba3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fma/c10ba3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = fma(1.0, 1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_c10ba3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fma_c10ba3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fma_c10ba3();
 }
diff --git a/test/tint/builtins/gen/literal/fma/e17c5c.wgsl b/test/tint/builtins/gen/literal/fma/e17c5c.wgsl
index afba1f1..efd1715 100644
--- a/test/tint/builtins/gen/literal/fma/e17c5c.wgsl
+++ b/test/tint/builtins/gen/literal/fma/e17c5c.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = fma(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_e17c5c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fma_e17c5c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fma_e17c5c();
 }
diff --git a/test/tint/builtins/gen/literal/fma/e17c5c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fma/e17c5c.wgsl.expected.wgsl
index adc6a88..7fcedaa 100644
--- a/test/tint/builtins/gen/literal/fma/e17c5c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fma/e17c5c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = fma(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_e17c5c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fma_e17c5c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fma_e17c5c();
 }
diff --git a/test/tint/builtins/gen/literal/fract/8bc1e9.wgsl b/test/tint/builtins/gen/literal/fract/8bc1e9.wgsl
index c816bce..d68b871 100644
--- a/test/tint/builtins/gen/literal/fract/8bc1e9.wgsl
+++ b/test/tint/builtins/gen/literal/fract/8bc1e9.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = fract(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_8bc1e9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fract_8bc1e9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fract_8bc1e9();
 }
diff --git a/test/tint/builtins/gen/literal/fract/8bc1e9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fract/8bc1e9.wgsl.expected.wgsl
index 6476408..627af4a 100644
--- a/test/tint/builtins/gen/literal/fract/8bc1e9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fract/8bc1e9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = fract(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_8bc1e9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fract_8bc1e9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fract_8bc1e9();
 }
diff --git a/test/tint/builtins/gen/literal/fract/943cb1.wgsl b/test/tint/builtins/gen/literal/fract/943cb1.wgsl
index a940bab..1efe2a0 100644
--- a/test/tint/builtins/gen/literal/fract/943cb1.wgsl
+++ b/test/tint/builtins/gen/literal/fract/943cb1.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = fract(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_943cb1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fract_943cb1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fract_943cb1();
 }
diff --git a/test/tint/builtins/gen/literal/fract/943cb1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fract/943cb1.wgsl.expected.wgsl
index 977e3f9..457b9cb 100644
--- a/test/tint/builtins/gen/literal/fract/943cb1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fract/943cb1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = fract(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_943cb1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fract_943cb1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fract_943cb1();
 }
diff --git a/test/tint/builtins/gen/literal/fract/a49758.wgsl b/test/tint/builtins/gen/literal/fract/a49758.wgsl
index 693a6e9..5d67222 100644
--- a/test/tint/builtins/gen/literal/fract/a49758.wgsl
+++ b/test/tint/builtins/gen/literal/fract/a49758.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = fract(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_a49758();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fract_a49758();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fract_a49758();
 }
diff --git a/test/tint/builtins/gen/literal/fract/a49758.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fract/a49758.wgsl.expected.wgsl
index 7ab47df..b973bdd 100644
--- a/test/tint/builtins/gen/literal/fract/a49758.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fract/a49758.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = fract(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_a49758();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fract_a49758();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fract_a49758();
 }
diff --git a/test/tint/builtins/gen/literal/fract/fa5c71.wgsl b/test/tint/builtins/gen/literal/fract/fa5c71.wgsl
index c2e96d2..352b67d 100644
--- a/test/tint/builtins/gen/literal/fract/fa5c71.wgsl
+++ b/test/tint/builtins/gen/literal/fract/fa5c71.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = fract(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_fa5c71();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fract_fa5c71();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fract_fa5c71();
 }
diff --git a/test/tint/builtins/gen/literal/fract/fa5c71.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fract/fa5c71.wgsl.expected.wgsl
index 3599c79..eedc8ae 100644
--- a/test/tint/builtins/gen/literal/fract/fa5c71.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fract/fa5c71.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = fract(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_fa5c71();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fract_fa5c71();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fract_fa5c71();
 }
diff --git a/test/tint/builtins/gen/literal/frexp/368997.wgsl b/test/tint/builtins/gen/literal/frexp/368997.wgsl
index 42095a8..8db1238 100644
--- a/test/tint/builtins/gen/literal/frexp/368997.wgsl
+++ b/test/tint/builtins/gen/literal/frexp/368997.wgsl
@@ -28,18 +28,18 @@
   var res = frexp(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_368997();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   frexp_368997();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   frexp_368997();
 }
diff --git a/test/tint/builtins/gen/literal/frexp/368997.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/frexp/368997.wgsl.expected.wgsl
index 914f1d5..19b9f7d 100644
--- a/test/tint/builtins/gen/literal/frexp/368997.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/frexp/368997.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res = frexp(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_368997();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   frexp_368997();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   frexp_368997();
 }
diff --git a/test/tint/builtins/gen/literal/frexp/3c4f48.wgsl b/test/tint/builtins/gen/literal/frexp/3c4f48.wgsl
index 13c6c1e..38375e3 100644
--- a/test/tint/builtins/gen/literal/frexp/3c4f48.wgsl
+++ b/test/tint/builtins/gen/literal/frexp/3c4f48.wgsl
@@ -28,18 +28,18 @@
   var res = frexp(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_3c4f48();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   frexp_3c4f48();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   frexp_3c4f48();
 }
diff --git a/test/tint/builtins/gen/literal/frexp/3c4f48.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/frexp/3c4f48.wgsl.expected.wgsl
index 2129fb6..2876d96 100644
--- a/test/tint/builtins/gen/literal/frexp/3c4f48.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/frexp/3c4f48.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res = frexp(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_3c4f48();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   frexp_3c4f48();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   frexp_3c4f48();
 }
diff --git a/test/tint/builtins/gen/literal/frexp/4bdfc7.wgsl b/test/tint/builtins/gen/literal/frexp/4bdfc7.wgsl
index 78428e3..fa8647a 100644
--- a/test/tint/builtins/gen/literal/frexp/4bdfc7.wgsl
+++ b/test/tint/builtins/gen/literal/frexp/4bdfc7.wgsl
@@ -28,18 +28,18 @@
   var res = frexp(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_4bdfc7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   frexp_4bdfc7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   frexp_4bdfc7();
 }
diff --git a/test/tint/builtins/gen/literal/frexp/4bdfc7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/frexp/4bdfc7.wgsl.expected.wgsl
index 8dfe70c..b4933f8 100644
--- a/test/tint/builtins/gen/literal/frexp/4bdfc7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/frexp/4bdfc7.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res = frexp(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_4bdfc7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   frexp_4bdfc7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   frexp_4bdfc7();
 }
diff --git a/test/tint/builtins/gen/literal/frexp/eabd40.wgsl b/test/tint/builtins/gen/literal/frexp/eabd40.wgsl
index a2feb4e..12bb0c3 100644
--- a/test/tint/builtins/gen/literal/frexp/eabd40.wgsl
+++ b/test/tint/builtins/gen/literal/frexp/eabd40.wgsl
@@ -28,18 +28,18 @@
   var res = frexp(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_eabd40();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   frexp_eabd40();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   frexp_eabd40();
 }
diff --git a/test/tint/builtins/gen/literal/frexp/eabd40.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/frexp/eabd40.wgsl.expected.wgsl
index 3bcd2b6..a6793c5 100644
--- a/test/tint/builtins/gen/literal/frexp/eabd40.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/frexp/eabd40.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res = frexp(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_eabd40();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   frexp_eabd40();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   frexp_eabd40();
 }
diff --git a/test/tint/builtins/gen/literal/fwidth/5d1b39.wgsl b/test/tint/builtins/gen/literal/fwidth/5d1b39.wgsl
index 08e2628..fae0efb 100644
--- a/test/tint/builtins/gen/literal/fwidth/5d1b39.wgsl
+++ b/test/tint/builtins/gen/literal/fwidth/5d1b39.wgsl
@@ -28,7 +28,7 @@
   var res: vec3<f32> = fwidth(vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidth_5d1b39();
 }
diff --git a/test/tint/builtins/gen/literal/fwidth/5d1b39.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fwidth/5d1b39.wgsl.expected.wgsl
index f3c53fa..2ccfef3 100644
--- a/test/tint/builtins/gen/literal/fwidth/5d1b39.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fwidth/5d1b39.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec3<f32> = fwidth(vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidth_5d1b39();
 }
diff --git a/test/tint/builtins/gen/literal/fwidth/b83ebb.wgsl b/test/tint/builtins/gen/literal/fwidth/b83ebb.wgsl
index a63be9c..541367b 100644
--- a/test/tint/builtins/gen/literal/fwidth/b83ebb.wgsl
+++ b/test/tint/builtins/gen/literal/fwidth/b83ebb.wgsl
@@ -28,7 +28,7 @@
   var res: vec2<f32> = fwidth(vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidth_b83ebb();
 }
diff --git a/test/tint/builtins/gen/literal/fwidth/b83ebb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fwidth/b83ebb.wgsl.expected.wgsl
index aa9e984..19e4330 100644
--- a/test/tint/builtins/gen/literal/fwidth/b83ebb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fwidth/b83ebb.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec2<f32> = fwidth(vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidth_b83ebb();
 }
diff --git a/test/tint/builtins/gen/literal/fwidth/d2ab9a.wgsl b/test/tint/builtins/gen/literal/fwidth/d2ab9a.wgsl
index 01a99c6..cb0806b 100644
--- a/test/tint/builtins/gen/literal/fwidth/d2ab9a.wgsl
+++ b/test/tint/builtins/gen/literal/fwidth/d2ab9a.wgsl
@@ -28,7 +28,7 @@
   var res: vec4<f32> = fwidth(vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidth_d2ab9a();
 }
diff --git a/test/tint/builtins/gen/literal/fwidth/d2ab9a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fwidth/d2ab9a.wgsl.expected.wgsl
index d5ba206..c3c4ff4 100644
--- a/test/tint/builtins/gen/literal/fwidth/d2ab9a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fwidth/d2ab9a.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec4<f32> = fwidth(vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidth_d2ab9a();
 }
diff --git a/test/tint/builtins/gen/literal/fwidth/df38ef.wgsl b/test/tint/builtins/gen/literal/fwidth/df38ef.wgsl
index 5733522..ae108cc 100644
--- a/test/tint/builtins/gen/literal/fwidth/df38ef.wgsl
+++ b/test/tint/builtins/gen/literal/fwidth/df38ef.wgsl
@@ -28,7 +28,7 @@
   var res: f32 = fwidth(1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidth_df38ef();
 }
diff --git a/test/tint/builtins/gen/literal/fwidth/df38ef.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fwidth/df38ef.wgsl.expected.wgsl
index b98137e..cf508ec 100644
--- a/test/tint/builtins/gen/literal/fwidth/df38ef.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fwidth/df38ef.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : f32 = fwidth(1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidth_df38ef();
 }
diff --git a/test/tint/builtins/gen/literal/fwidthCoarse/159c8a.wgsl b/test/tint/builtins/gen/literal/fwidthCoarse/159c8a.wgsl
index 6c82cb2..496a405 100644
--- a/test/tint/builtins/gen/literal/fwidthCoarse/159c8a.wgsl
+++ b/test/tint/builtins/gen/literal/fwidthCoarse/159c8a.wgsl
@@ -28,7 +28,7 @@
   var res: f32 = fwidthCoarse(1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthCoarse_159c8a();
 }
diff --git a/test/tint/builtins/gen/literal/fwidthCoarse/159c8a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fwidthCoarse/159c8a.wgsl.expected.wgsl
index 1e592ef..dda103b 100644
--- a/test/tint/builtins/gen/literal/fwidthCoarse/159c8a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fwidthCoarse/159c8a.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : f32 = fwidthCoarse(1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthCoarse_159c8a();
 }
diff --git a/test/tint/builtins/gen/literal/fwidthCoarse/1e59d9.wgsl b/test/tint/builtins/gen/literal/fwidthCoarse/1e59d9.wgsl
index 1973cd7..432dcad 100644
--- a/test/tint/builtins/gen/literal/fwidthCoarse/1e59d9.wgsl
+++ b/test/tint/builtins/gen/literal/fwidthCoarse/1e59d9.wgsl
@@ -28,7 +28,7 @@
   var res: vec3<f32> = fwidthCoarse(vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthCoarse_1e59d9();
 }
diff --git a/test/tint/builtins/gen/literal/fwidthCoarse/1e59d9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fwidthCoarse/1e59d9.wgsl.expected.wgsl
index 1352bf6..8a1e6b0 100644
--- a/test/tint/builtins/gen/literal/fwidthCoarse/1e59d9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fwidthCoarse/1e59d9.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec3<f32> = fwidthCoarse(vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthCoarse_1e59d9();
 }
diff --git a/test/tint/builtins/gen/literal/fwidthCoarse/4e4fc4.wgsl b/test/tint/builtins/gen/literal/fwidthCoarse/4e4fc4.wgsl
index 56243c3..a64acf7 100644
--- a/test/tint/builtins/gen/literal/fwidthCoarse/4e4fc4.wgsl
+++ b/test/tint/builtins/gen/literal/fwidthCoarse/4e4fc4.wgsl
@@ -28,7 +28,7 @@
   var res: vec4<f32> = fwidthCoarse(vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthCoarse_4e4fc4();
 }
diff --git a/test/tint/builtins/gen/literal/fwidthCoarse/4e4fc4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fwidthCoarse/4e4fc4.wgsl.expected.wgsl
index 3fea38a..06b78e8 100644
--- a/test/tint/builtins/gen/literal/fwidthCoarse/4e4fc4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fwidthCoarse/4e4fc4.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec4<f32> = fwidthCoarse(vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthCoarse_4e4fc4();
 }
diff --git a/test/tint/builtins/gen/literal/fwidthCoarse/e653f7.wgsl b/test/tint/builtins/gen/literal/fwidthCoarse/e653f7.wgsl
index 389e52d..dc216bf 100644
--- a/test/tint/builtins/gen/literal/fwidthCoarse/e653f7.wgsl
+++ b/test/tint/builtins/gen/literal/fwidthCoarse/e653f7.wgsl
@@ -28,7 +28,7 @@
   var res: vec2<f32> = fwidthCoarse(vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthCoarse_e653f7();
 }
diff --git a/test/tint/builtins/gen/literal/fwidthCoarse/e653f7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fwidthCoarse/e653f7.wgsl.expected.wgsl
index 9e5a1da..5ed3f4b 100644
--- a/test/tint/builtins/gen/literal/fwidthCoarse/e653f7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fwidthCoarse/e653f7.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec2<f32> = fwidthCoarse(vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthCoarse_e653f7();
 }
diff --git a/test/tint/builtins/gen/literal/fwidthFine/523fdc.wgsl b/test/tint/builtins/gen/literal/fwidthFine/523fdc.wgsl
index 93bc440..a445464 100644
--- a/test/tint/builtins/gen/literal/fwidthFine/523fdc.wgsl
+++ b/test/tint/builtins/gen/literal/fwidthFine/523fdc.wgsl
@@ -28,7 +28,7 @@
   var res: vec3<f32> = fwidthFine(vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthFine_523fdc();
 }
diff --git a/test/tint/builtins/gen/literal/fwidthFine/523fdc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fwidthFine/523fdc.wgsl.expected.wgsl
index 41cb66c..b3eb93b 100644
--- a/test/tint/builtins/gen/literal/fwidthFine/523fdc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fwidthFine/523fdc.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec3<f32> = fwidthFine(vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthFine_523fdc();
 }
diff --git a/test/tint/builtins/gen/literal/fwidthFine/68f4ef.wgsl b/test/tint/builtins/gen/literal/fwidthFine/68f4ef.wgsl
index 80005f1..55e8dbd 100644
--- a/test/tint/builtins/gen/literal/fwidthFine/68f4ef.wgsl
+++ b/test/tint/builtins/gen/literal/fwidthFine/68f4ef.wgsl
@@ -28,7 +28,7 @@
   var res: vec4<f32> = fwidthFine(vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthFine_68f4ef();
 }
diff --git a/test/tint/builtins/gen/literal/fwidthFine/68f4ef.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fwidthFine/68f4ef.wgsl.expected.wgsl
index 97f1033..01d3ea8 100644
--- a/test/tint/builtins/gen/literal/fwidthFine/68f4ef.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fwidthFine/68f4ef.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec4<f32> = fwidthFine(vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthFine_68f4ef();
 }
diff --git a/test/tint/builtins/gen/literal/fwidthFine/f1742d.wgsl b/test/tint/builtins/gen/literal/fwidthFine/f1742d.wgsl
index 4310d22..fca4bd1 100644
--- a/test/tint/builtins/gen/literal/fwidthFine/f1742d.wgsl
+++ b/test/tint/builtins/gen/literal/fwidthFine/f1742d.wgsl
@@ -28,7 +28,7 @@
   var res: f32 = fwidthFine(1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthFine_f1742d();
 }
diff --git a/test/tint/builtins/gen/literal/fwidthFine/f1742d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fwidthFine/f1742d.wgsl.expected.wgsl
index 4a764a5..13437b4 100644
--- a/test/tint/builtins/gen/literal/fwidthFine/f1742d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fwidthFine/f1742d.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : f32 = fwidthFine(1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthFine_f1742d();
 }
diff --git a/test/tint/builtins/gen/literal/fwidthFine/ff6aa0.wgsl b/test/tint/builtins/gen/literal/fwidthFine/ff6aa0.wgsl
index e8e4c08..fe1fbb5 100644
--- a/test/tint/builtins/gen/literal/fwidthFine/ff6aa0.wgsl
+++ b/test/tint/builtins/gen/literal/fwidthFine/ff6aa0.wgsl
@@ -28,7 +28,7 @@
   var res: vec2<f32> = fwidthFine(vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthFine_ff6aa0();
 }
diff --git a/test/tint/builtins/gen/literal/fwidthFine/ff6aa0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fwidthFine/ff6aa0.wgsl.expected.wgsl
index 7ca7637..ad816e4 100644
--- a/test/tint/builtins/gen/literal/fwidthFine/ff6aa0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fwidthFine/ff6aa0.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   var res : vec2<f32> = fwidthFine(vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthFine_ff6aa0();
 }
diff --git a/test/tint/builtins/gen/literal/insertBits/3c7ba5.wgsl b/test/tint/builtins/gen/literal/insertBits/3c7ba5.wgsl
index f5879a6..cdf4c75 100644
--- a/test/tint/builtins/gen/literal/insertBits/3c7ba5.wgsl
+++ b/test/tint/builtins/gen/literal/insertBits/3c7ba5.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = insertBits(vec2<u32>(), vec2<u32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_3c7ba5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_3c7ba5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_3c7ba5();
 }
diff --git a/test/tint/builtins/gen/literal/insertBits/3c7ba5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/insertBits/3c7ba5.wgsl.expected.wgsl
index eee06b5..37e6e67 100644
--- a/test/tint/builtins/gen/literal/insertBits/3c7ba5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/insertBits/3c7ba5.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = insertBits(vec2<u32>(), vec2<u32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_3c7ba5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_3c7ba5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_3c7ba5();
 }
diff --git a/test/tint/builtins/gen/literal/insertBits/428b0b.wgsl b/test/tint/builtins/gen/literal/insertBits/428b0b.wgsl
index 1dd773e..04e4af4 100644
--- a/test/tint/builtins/gen/literal/insertBits/428b0b.wgsl
+++ b/test/tint/builtins/gen/literal/insertBits/428b0b.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = insertBits(vec3<i32>(), vec3<i32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_428b0b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_428b0b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_428b0b();
 }
diff --git a/test/tint/builtins/gen/literal/insertBits/428b0b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/insertBits/428b0b.wgsl.expected.wgsl
index 58e0a5a..a91e908 100644
--- a/test/tint/builtins/gen/literal/insertBits/428b0b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/insertBits/428b0b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = insertBits(vec3<i32>(), vec3<i32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_428b0b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_428b0b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_428b0b();
 }
diff --git a/test/tint/builtins/gen/literal/insertBits/51ede1.wgsl b/test/tint/builtins/gen/literal/insertBits/51ede1.wgsl
index 0ba617a..23bdfa0 100644
--- a/test/tint/builtins/gen/literal/insertBits/51ede1.wgsl
+++ b/test/tint/builtins/gen/literal/insertBits/51ede1.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = insertBits(vec4<u32>(), vec4<u32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_51ede1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_51ede1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_51ede1();
 }
diff --git a/test/tint/builtins/gen/literal/insertBits/51ede1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/insertBits/51ede1.wgsl.expected.wgsl
index 0b7461b..678c6b2 100644
--- a/test/tint/builtins/gen/literal/insertBits/51ede1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/insertBits/51ede1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = insertBits(vec4<u32>(), vec4<u32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_51ede1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_51ede1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_51ede1();
 }
diff --git a/test/tint/builtins/gen/literal/insertBits/65468b.wgsl b/test/tint/builtins/gen/literal/insertBits/65468b.wgsl
index b426cf5..a24fcbe 100644
--- a/test/tint/builtins/gen/literal/insertBits/65468b.wgsl
+++ b/test/tint/builtins/gen/literal/insertBits/65468b.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = insertBits(1, 1, 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_65468b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_65468b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_65468b();
 }
diff --git a/test/tint/builtins/gen/literal/insertBits/65468b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/insertBits/65468b.wgsl.expected.wgsl
index 18c5ff8..ef26bed 100644
--- a/test/tint/builtins/gen/literal/insertBits/65468b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/insertBits/65468b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = insertBits(1, 1, 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_65468b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_65468b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_65468b();
 }
diff --git a/test/tint/builtins/gen/literal/insertBits/87826b.wgsl b/test/tint/builtins/gen/literal/insertBits/87826b.wgsl
index 6ca4dd0..d9fba64 100644
--- a/test/tint/builtins/gen/literal/insertBits/87826b.wgsl
+++ b/test/tint/builtins/gen/literal/insertBits/87826b.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = insertBits(vec3<u32>(), vec3<u32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_87826b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_87826b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_87826b();
 }
diff --git a/test/tint/builtins/gen/literal/insertBits/87826b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/insertBits/87826b.wgsl.expected.wgsl
index e71306f..242fe60 100644
--- a/test/tint/builtins/gen/literal/insertBits/87826b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/insertBits/87826b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = insertBits(vec3<u32>(), vec3<u32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_87826b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_87826b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_87826b();
 }
diff --git a/test/tint/builtins/gen/literal/insertBits/d86978.wgsl b/test/tint/builtins/gen/literal/insertBits/d86978.wgsl
index 421a875..11dd518 100644
--- a/test/tint/builtins/gen/literal/insertBits/d86978.wgsl
+++ b/test/tint/builtins/gen/literal/insertBits/d86978.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = insertBits(vec4<i32>(), vec4<i32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_d86978();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_d86978();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_d86978();
 }
diff --git a/test/tint/builtins/gen/literal/insertBits/d86978.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/insertBits/d86978.wgsl.expected.wgsl
index 531dc5f..77bbeec 100644
--- a/test/tint/builtins/gen/literal/insertBits/d86978.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/insertBits/d86978.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = insertBits(vec4<i32>(), vec4<i32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_d86978();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_d86978();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_d86978();
 }
diff --git a/test/tint/builtins/gen/literal/insertBits/e3e3a2.wgsl b/test/tint/builtins/gen/literal/insertBits/e3e3a2.wgsl
index 7e12f24..5bbe856 100644
--- a/test/tint/builtins/gen/literal/insertBits/e3e3a2.wgsl
+++ b/test/tint/builtins/gen/literal/insertBits/e3e3a2.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = insertBits(1u, 1u, 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_e3e3a2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_e3e3a2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_e3e3a2();
 }
diff --git a/test/tint/builtins/gen/literal/insertBits/e3e3a2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/insertBits/e3e3a2.wgsl.expected.wgsl
index b6abcbc..8ea1692 100644
--- a/test/tint/builtins/gen/literal/insertBits/e3e3a2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/insertBits/e3e3a2.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = insertBits(1u, 1u, 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_e3e3a2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_e3e3a2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_e3e3a2();
 }
diff --git a/test/tint/builtins/gen/literal/insertBits/fe6ba6.wgsl b/test/tint/builtins/gen/literal/insertBits/fe6ba6.wgsl
index 56c4b03..23866aa 100644
--- a/test/tint/builtins/gen/literal/insertBits/fe6ba6.wgsl
+++ b/test/tint/builtins/gen/literal/insertBits/fe6ba6.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = insertBits(vec2<i32>(), vec2<i32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_fe6ba6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_fe6ba6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_fe6ba6();
 }
diff --git a/test/tint/builtins/gen/literal/insertBits/fe6ba6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/insertBits/fe6ba6.wgsl.expected.wgsl
index 3e88486..aabea77 100644
--- a/test/tint/builtins/gen/literal/insertBits/fe6ba6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/insertBits/fe6ba6.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = insertBits(vec2<i32>(), vec2<i32>(), 1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_fe6ba6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_fe6ba6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_fe6ba6();
 }
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/84407e.wgsl b/test/tint/builtins/gen/literal/inverseSqrt/84407e.wgsl
index 3d97d0f..8dd98cc 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/84407e.wgsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/84407e.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = inverseSqrt(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_84407e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   inverseSqrt_84407e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_84407e();
 }
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/84407e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/inverseSqrt/84407e.wgsl.expected.wgsl
index 707e317..9c74b78 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/84407e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/84407e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = inverseSqrt(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_84407e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   inverseSqrt_84407e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_84407e();
 }
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/8f2bd2.wgsl b/test/tint/builtins/gen/literal/inverseSqrt/8f2bd2.wgsl
index d64ff26..b1774a9 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/8f2bd2.wgsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/8f2bd2.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = inverseSqrt(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_8f2bd2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   inverseSqrt_8f2bd2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_8f2bd2();
 }
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/8f2bd2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/inverseSqrt/8f2bd2.wgsl.expected.wgsl
index 5554030..05e3d1c 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/8f2bd2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/8f2bd2.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = inverseSqrt(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_8f2bd2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   inverseSqrt_8f2bd2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_8f2bd2();
 }
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/b197b1.wgsl b/test/tint/builtins/gen/literal/inverseSqrt/b197b1.wgsl
index 1fe63f9..d4bbc28 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/b197b1.wgsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/b197b1.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = inverseSqrt(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_b197b1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   inverseSqrt_b197b1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_b197b1();
 }
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/b197b1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/inverseSqrt/b197b1.wgsl.expected.wgsl
index dd8bd71..11777c2 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/b197b1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/b197b1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = inverseSqrt(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_b197b1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   inverseSqrt_b197b1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_b197b1();
 }
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/c22347.wgsl b/test/tint/builtins/gen/literal/inverseSqrt/c22347.wgsl
index 4536cb7..7b5baf6 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/c22347.wgsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/c22347.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = inverseSqrt(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_c22347();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   inverseSqrt_c22347();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_c22347();
 }
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/c22347.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/inverseSqrt/c22347.wgsl.expected.wgsl
index cc9c1a9..7d5465d 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/c22347.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/c22347.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = inverseSqrt(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_c22347();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   inverseSqrt_c22347();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_c22347();
 }
diff --git a/test/tint/builtins/gen/literal/ldexp/a31cdc.wgsl b/test/tint/builtins/gen/literal/ldexp/a31cdc.wgsl
index daede0b..1cdaca3 100644
--- a/test/tint/builtins/gen/literal/ldexp/a31cdc.wgsl
+++ b/test/tint/builtins/gen/literal/ldexp/a31cdc.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = ldexp(vec3<f32>(), vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_a31cdc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ldexp_a31cdc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ldexp_a31cdc();
 }
diff --git a/test/tint/builtins/gen/literal/ldexp/a31cdc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/ldexp/a31cdc.wgsl.expected.wgsl
index 357faa1..232e2a9 100644
--- a/test/tint/builtins/gen/literal/ldexp/a31cdc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/ldexp/a31cdc.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = ldexp(vec3<f32>(), vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_a31cdc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ldexp_a31cdc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ldexp_a31cdc();
 }
diff --git a/test/tint/builtins/gen/literal/ldexp/abd718.wgsl b/test/tint/builtins/gen/literal/ldexp/abd718.wgsl
index fb5d9b5..8e41255 100644
--- a/test/tint/builtins/gen/literal/ldexp/abd718.wgsl
+++ b/test/tint/builtins/gen/literal/ldexp/abd718.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = ldexp(vec2<f32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_abd718();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ldexp_abd718();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ldexp_abd718();
 }
diff --git a/test/tint/builtins/gen/literal/ldexp/abd718.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/ldexp/abd718.wgsl.expected.wgsl
index 87314bf..8c33747 100644
--- a/test/tint/builtins/gen/literal/ldexp/abd718.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/ldexp/abd718.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = ldexp(vec2<f32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_abd718();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ldexp_abd718();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ldexp_abd718();
 }
diff --git a/test/tint/builtins/gen/literal/ldexp/cc9cde.wgsl b/test/tint/builtins/gen/literal/ldexp/cc9cde.wgsl
index 6b14529..622c5b4 100644
--- a/test/tint/builtins/gen/literal/ldexp/cc9cde.wgsl
+++ b/test/tint/builtins/gen/literal/ldexp/cc9cde.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = ldexp(vec4<f32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_cc9cde();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ldexp_cc9cde();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ldexp_cc9cde();
 }
diff --git a/test/tint/builtins/gen/literal/ldexp/cc9cde.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/ldexp/cc9cde.wgsl.expected.wgsl
index c2fc1ae..913094d 100644
--- a/test/tint/builtins/gen/literal/ldexp/cc9cde.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/ldexp/cc9cde.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = ldexp(vec4<f32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_cc9cde();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ldexp_cc9cde();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ldexp_cc9cde();
 }
diff --git a/test/tint/builtins/gen/literal/ldexp/db8b49.wgsl b/test/tint/builtins/gen/literal/ldexp/db8b49.wgsl
index 7ed2b37..beb3c1d 100644
--- a/test/tint/builtins/gen/literal/ldexp/db8b49.wgsl
+++ b/test/tint/builtins/gen/literal/ldexp/db8b49.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = ldexp(1.0, 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_db8b49();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ldexp_db8b49();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ldexp_db8b49();
 }
diff --git a/test/tint/builtins/gen/literal/ldexp/db8b49.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/ldexp/db8b49.wgsl.expected.wgsl
index 41f84f9..d7c840f 100644
--- a/test/tint/builtins/gen/literal/ldexp/db8b49.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/ldexp/db8b49.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = ldexp(1.0, 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_db8b49();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ldexp_db8b49();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ldexp_db8b49();
 }
diff --git a/test/tint/builtins/gen/literal/length/056071.wgsl b/test/tint/builtins/gen/literal/length/056071.wgsl
index 159a0c1..25f90ce 100644
--- a/test/tint/builtins/gen/literal/length/056071.wgsl
+++ b/test/tint/builtins/gen/literal/length/056071.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = length(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   length_056071();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   length_056071();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   length_056071();
 }
diff --git a/test/tint/builtins/gen/literal/length/056071.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/length/056071.wgsl.expected.wgsl
index a7dddf9..4060039 100644
--- a/test/tint/builtins/gen/literal/length/056071.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/length/056071.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = length(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   length_056071();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   length_056071();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   length_056071();
 }
diff --git a/test/tint/builtins/gen/literal/length/602a17.wgsl b/test/tint/builtins/gen/literal/length/602a17.wgsl
index 4ad050b..50a668a 100644
--- a/test/tint/builtins/gen/literal/length/602a17.wgsl
+++ b/test/tint/builtins/gen/literal/length/602a17.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = length(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   length_602a17();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   length_602a17();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   length_602a17();
 }
diff --git a/test/tint/builtins/gen/literal/length/602a17.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/length/602a17.wgsl.expected.wgsl
index dbf073b..accc2ea 100644
--- a/test/tint/builtins/gen/literal/length/602a17.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/length/602a17.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = length(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   length_602a17();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   length_602a17();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   length_602a17();
 }
diff --git a/test/tint/builtins/gen/literal/length/afde8b.wgsl b/test/tint/builtins/gen/literal/length/afde8b.wgsl
index b936e5e..a5cbe4f 100644
--- a/test/tint/builtins/gen/literal/length/afde8b.wgsl
+++ b/test/tint/builtins/gen/literal/length/afde8b.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = length(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   length_afde8b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   length_afde8b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   length_afde8b();
 }
diff --git a/test/tint/builtins/gen/literal/length/afde8b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/length/afde8b.wgsl.expected.wgsl
index 04d7497..4c02a77 100644
--- a/test/tint/builtins/gen/literal/length/afde8b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/length/afde8b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = length(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   length_afde8b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   length_afde8b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   length_afde8b();
 }
diff --git a/test/tint/builtins/gen/literal/length/becebf.wgsl b/test/tint/builtins/gen/literal/length/becebf.wgsl
index 6a3481e..6e11747 100644
--- a/test/tint/builtins/gen/literal/length/becebf.wgsl
+++ b/test/tint/builtins/gen/literal/length/becebf.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = length(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   length_becebf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   length_becebf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   length_becebf();
 }
diff --git a/test/tint/builtins/gen/literal/length/becebf.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/length/becebf.wgsl.expected.wgsl
index 2a90f07..77f0909 100644
--- a/test/tint/builtins/gen/literal/length/becebf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/length/becebf.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = length(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   length_becebf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   length_becebf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   length_becebf();
 }
diff --git a/test/tint/builtins/gen/literal/log/3da25a.wgsl b/test/tint/builtins/gen/literal/log/3da25a.wgsl
index b10d7ce..593535c 100644
--- a/test/tint/builtins/gen/literal/log/3da25a.wgsl
+++ b/test/tint/builtins/gen/literal/log/3da25a.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = log(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log_3da25a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log_3da25a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log_3da25a();
 }
diff --git a/test/tint/builtins/gen/literal/log/3da25a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/log/3da25a.wgsl.expected.wgsl
index 2265445..a772327 100644
--- a/test/tint/builtins/gen/literal/log/3da25a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/log/3da25a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = log(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log_3da25a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log_3da25a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log_3da25a();
 }
diff --git a/test/tint/builtins/gen/literal/log/7114a6.wgsl b/test/tint/builtins/gen/literal/log/7114a6.wgsl
index 3bce023..9267ece 100644
--- a/test/tint/builtins/gen/literal/log/7114a6.wgsl
+++ b/test/tint/builtins/gen/literal/log/7114a6.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = log(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log_7114a6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log_7114a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log_7114a6();
 }
diff --git a/test/tint/builtins/gen/literal/log/7114a6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/log/7114a6.wgsl.expected.wgsl
index 6a688f0..040bf35 100644
--- a/test/tint/builtins/gen/literal/log/7114a6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/log/7114a6.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = log(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log_7114a6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log_7114a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log_7114a6();
 }
diff --git a/test/tint/builtins/gen/literal/log/b2ce28.wgsl b/test/tint/builtins/gen/literal/log/b2ce28.wgsl
index 842afe4..1854ce5 100644
--- a/test/tint/builtins/gen/literal/log/b2ce28.wgsl
+++ b/test/tint/builtins/gen/literal/log/b2ce28.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = log(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log_b2ce28();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log_b2ce28();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log_b2ce28();
 }
diff --git a/test/tint/builtins/gen/literal/log/b2ce28.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/log/b2ce28.wgsl.expected.wgsl
index 023eb1b..b504d96 100644
--- a/test/tint/builtins/gen/literal/log/b2ce28.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/log/b2ce28.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = log(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log_b2ce28();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log_b2ce28();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log_b2ce28();
 }
diff --git a/test/tint/builtins/gen/literal/log/f4c570.wgsl b/test/tint/builtins/gen/literal/log/f4c570.wgsl
index 544d880..93ae923 100644
--- a/test/tint/builtins/gen/literal/log/f4c570.wgsl
+++ b/test/tint/builtins/gen/literal/log/f4c570.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = log(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log_f4c570();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log_f4c570();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log_f4c570();
 }
diff --git a/test/tint/builtins/gen/literal/log/f4c570.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/log/f4c570.wgsl.expected.wgsl
index 9317aad..6bb8358 100644
--- a/test/tint/builtins/gen/literal/log/f4c570.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/log/f4c570.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = log(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log_f4c570();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log_f4c570();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log_f4c570();
 }
diff --git a/test/tint/builtins/gen/literal/log2/4036ed.wgsl b/test/tint/builtins/gen/literal/log2/4036ed.wgsl
index da8ae3e..d7604ea 100644
--- a/test/tint/builtins/gen/literal/log2/4036ed.wgsl
+++ b/test/tint/builtins/gen/literal/log2/4036ed.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = log2(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_4036ed();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log2_4036ed();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log2_4036ed();
 }
diff --git a/test/tint/builtins/gen/literal/log2/4036ed.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/log2/4036ed.wgsl.expected.wgsl
index e64775f..afaf861 100644
--- a/test/tint/builtins/gen/literal/log2/4036ed.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/log2/4036ed.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = log2(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_4036ed();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log2_4036ed();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log2_4036ed();
 }
diff --git a/test/tint/builtins/gen/literal/log2/902988.wgsl b/test/tint/builtins/gen/literal/log2/902988.wgsl
index c9af854..e8f4b07 100644
--- a/test/tint/builtins/gen/literal/log2/902988.wgsl
+++ b/test/tint/builtins/gen/literal/log2/902988.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = log2(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_902988();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log2_902988();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log2_902988();
 }
diff --git a/test/tint/builtins/gen/literal/log2/902988.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/log2/902988.wgsl.expected.wgsl
index 345da9e..f493458 100644
--- a/test/tint/builtins/gen/literal/log2/902988.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/log2/902988.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = log2(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_902988();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log2_902988();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log2_902988();
 }
diff --git a/test/tint/builtins/gen/literal/log2/adb233.wgsl b/test/tint/builtins/gen/literal/log2/adb233.wgsl
index f4d516f..17cbe44 100644
--- a/test/tint/builtins/gen/literal/log2/adb233.wgsl
+++ b/test/tint/builtins/gen/literal/log2/adb233.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = log2(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_adb233();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log2_adb233();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log2_adb233();
 }
diff --git a/test/tint/builtins/gen/literal/log2/adb233.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/log2/adb233.wgsl.expected.wgsl
index 89634c2..9a00f7f 100644
--- a/test/tint/builtins/gen/literal/log2/adb233.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/log2/adb233.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = log2(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_adb233();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log2_adb233();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log2_adb233();
 }
diff --git a/test/tint/builtins/gen/literal/log2/aea659.wgsl b/test/tint/builtins/gen/literal/log2/aea659.wgsl
index 46e3ef8..281ef83 100644
--- a/test/tint/builtins/gen/literal/log2/aea659.wgsl
+++ b/test/tint/builtins/gen/literal/log2/aea659.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = log2(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_aea659();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log2_aea659();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log2_aea659();
 }
diff --git a/test/tint/builtins/gen/literal/log2/aea659.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/log2/aea659.wgsl.expected.wgsl
index a77648e..562880d 100644
--- a/test/tint/builtins/gen/literal/log2/aea659.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/log2/aea659.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = log2(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_aea659();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log2_aea659();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log2_aea659();
 }
diff --git a/test/tint/builtins/gen/literal/max/0c0aae.wgsl b/test/tint/builtins/gen/literal/max/0c0aae.wgsl
index 31e3b8c..6dcc882 100644
--- a/test/tint/builtins/gen/literal/max/0c0aae.wgsl
+++ b/test/tint/builtins/gen/literal/max/0c0aae.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = max(1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_0c0aae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_0c0aae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_0c0aae();
 }
diff --git a/test/tint/builtins/gen/literal/max/0c0aae.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/max/0c0aae.wgsl.expected.wgsl
index a34b9ff..33e2de9 100644
--- a/test/tint/builtins/gen/literal/max/0c0aae.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/max/0c0aae.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = max(1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_0c0aae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_0c0aae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_0c0aae();
 }
diff --git a/test/tint/builtins/gen/literal/max/25eafe.wgsl b/test/tint/builtins/gen/literal/max/25eafe.wgsl
index 717de19..38b4c97 100644
--- a/test/tint/builtins/gen/literal/max/25eafe.wgsl
+++ b/test/tint/builtins/gen/literal/max/25eafe.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = max(vec3<i32>(), vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_25eafe();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_25eafe();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_25eafe();
 }
diff --git a/test/tint/builtins/gen/literal/max/25eafe.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/max/25eafe.wgsl.expected.wgsl
index 7b9f06a..0c64e24 100644
--- a/test/tint/builtins/gen/literal/max/25eafe.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/max/25eafe.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = max(vec3<i32>(), vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_25eafe();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_25eafe();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_25eafe();
 }
diff --git a/test/tint/builtins/gen/literal/max/320815.wgsl b/test/tint/builtins/gen/literal/max/320815.wgsl
index 4c70788..ef566a6 100644
--- a/test/tint/builtins/gen/literal/max/320815.wgsl
+++ b/test/tint/builtins/gen/literal/max/320815.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = max(vec2<u32>(), vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_320815();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_320815();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_320815();
 }
diff --git a/test/tint/builtins/gen/literal/max/320815.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/max/320815.wgsl.expected.wgsl
index 04e54a0..d3ac552 100644
--- a/test/tint/builtins/gen/literal/max/320815.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/max/320815.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = max(vec2<u32>(), vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_320815();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_320815();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_320815();
 }
diff --git a/test/tint/builtins/gen/literal/max/44a39d.wgsl b/test/tint/builtins/gen/literal/max/44a39d.wgsl
index 5c38a89..037045f 100644
--- a/test/tint/builtins/gen/literal/max/44a39d.wgsl
+++ b/test/tint/builtins/gen/literal/max/44a39d.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = max(1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_44a39d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_44a39d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_44a39d();
 }
diff --git a/test/tint/builtins/gen/literal/max/44a39d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/max/44a39d.wgsl.expected.wgsl
index 1913b8f..44ddd84 100644
--- a/test/tint/builtins/gen/literal/max/44a39d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/max/44a39d.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = max(1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_44a39d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_44a39d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_44a39d();
 }
diff --git a/test/tint/builtins/gen/literal/max/453e04.wgsl b/test/tint/builtins/gen/literal/max/453e04.wgsl
index df4f70b..f1fc2d0 100644
--- a/test/tint/builtins/gen/literal/max/453e04.wgsl
+++ b/test/tint/builtins/gen/literal/max/453e04.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = max(vec4<u32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_453e04();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_453e04();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_453e04();
 }
diff --git a/test/tint/builtins/gen/literal/max/453e04.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/max/453e04.wgsl.expected.wgsl
index 39e7e48..a5426dd 100644
--- a/test/tint/builtins/gen/literal/max/453e04.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/max/453e04.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = max(vec4<u32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_453e04();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_453e04();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_453e04();
 }
diff --git a/test/tint/builtins/gen/literal/max/462050.wgsl b/test/tint/builtins/gen/literal/max/462050.wgsl
index 7c37686..01afaf5 100644
--- a/test/tint/builtins/gen/literal/max/462050.wgsl
+++ b/test/tint/builtins/gen/literal/max/462050.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = max(vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_462050();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_462050();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_462050();
 }
diff --git a/test/tint/builtins/gen/literal/max/462050.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/max/462050.wgsl.expected.wgsl
index eec4107..608a251 100644
--- a/test/tint/builtins/gen/literal/max/462050.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/max/462050.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = max(vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_462050();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_462050();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_462050();
 }
diff --git a/test/tint/builtins/gen/literal/max/4883ac.wgsl b/test/tint/builtins/gen/literal/max/4883ac.wgsl
index f94ba6c..db981e2 100644
--- a/test/tint/builtins/gen/literal/max/4883ac.wgsl
+++ b/test/tint/builtins/gen/literal/max/4883ac.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = max(vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_4883ac();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_4883ac();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_4883ac();
 }
diff --git a/test/tint/builtins/gen/literal/max/4883ac.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/max/4883ac.wgsl.expected.wgsl
index cc37098..c546b80 100644
--- a/test/tint/builtins/gen/literal/max/4883ac.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/max/4883ac.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = max(vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_4883ac();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_4883ac();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_4883ac();
 }
diff --git a/test/tint/builtins/gen/literal/max/85e6bc.wgsl b/test/tint/builtins/gen/literal/max/85e6bc.wgsl
index e62f000..2c83e89 100644
--- a/test/tint/builtins/gen/literal/max/85e6bc.wgsl
+++ b/test/tint/builtins/gen/literal/max/85e6bc.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = max(vec4<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_85e6bc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_85e6bc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_85e6bc();
 }
diff --git a/test/tint/builtins/gen/literal/max/85e6bc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/max/85e6bc.wgsl.expected.wgsl
index 6f6b39f..4f22166 100644
--- a/test/tint/builtins/gen/literal/max/85e6bc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/max/85e6bc.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = max(vec4<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_85e6bc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_85e6bc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_85e6bc();
 }
diff --git a/test/tint/builtins/gen/literal/max/a93419.wgsl b/test/tint/builtins/gen/literal/max/a93419.wgsl
index 8105d25..6d51baa 100644
--- a/test/tint/builtins/gen/literal/max/a93419.wgsl
+++ b/test/tint/builtins/gen/literal/max/a93419.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = max(vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_a93419();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_a93419();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_a93419();
 }
diff --git a/test/tint/builtins/gen/literal/max/a93419.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/max/a93419.wgsl.expected.wgsl
index 8c1c938..8058515 100644
--- a/test/tint/builtins/gen/literal/max/a93419.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/max/a93419.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = max(vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_a93419();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_a93419();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_a93419();
 }
diff --git a/test/tint/builtins/gen/literal/max/b1b73a.wgsl b/test/tint/builtins/gen/literal/max/b1b73a.wgsl
index ae43e46e..4903288 100644
--- a/test/tint/builtins/gen/literal/max/b1b73a.wgsl
+++ b/test/tint/builtins/gen/literal/max/b1b73a.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = max(vec3<u32>(), vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_b1b73a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_b1b73a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_b1b73a();
 }
diff --git a/test/tint/builtins/gen/literal/max/b1b73a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/max/b1b73a.wgsl.expected.wgsl
index ffe0dc5..6a206ee 100644
--- a/test/tint/builtins/gen/literal/max/b1b73a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/max/b1b73a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = max(vec3<u32>(), vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_b1b73a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_b1b73a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_b1b73a();
 }
diff --git a/test/tint/builtins/gen/literal/max/ce7c30.wgsl b/test/tint/builtins/gen/literal/max/ce7c30.wgsl
index ce0ecbb..7e0abaf 100644
--- a/test/tint/builtins/gen/literal/max/ce7c30.wgsl
+++ b/test/tint/builtins/gen/literal/max/ce7c30.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = max(1, 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_ce7c30();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_ce7c30();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_ce7c30();
 }
diff --git a/test/tint/builtins/gen/literal/max/ce7c30.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/max/ce7c30.wgsl.expected.wgsl
index a9c3618..68d5a6e 100644
--- a/test/tint/builtins/gen/literal/max/ce7c30.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/max/ce7c30.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = max(1, 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_ce7c30();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_ce7c30();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_ce7c30();
 }
diff --git a/test/tint/builtins/gen/literal/max/e8192f.wgsl b/test/tint/builtins/gen/literal/max/e8192f.wgsl
index 61085c4..a48d704 100644
--- a/test/tint/builtins/gen/literal/max/e8192f.wgsl
+++ b/test/tint/builtins/gen/literal/max/e8192f.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = max(vec2<i32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_e8192f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_e8192f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_e8192f();
 }
diff --git a/test/tint/builtins/gen/literal/max/e8192f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/max/e8192f.wgsl.expected.wgsl
index 08d02f6..cd7cae1 100644
--- a/test/tint/builtins/gen/literal/max/e8192f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/max/e8192f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = max(vec2<i32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_e8192f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_e8192f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_e8192f();
 }
diff --git a/test/tint/builtins/gen/literal/min/03c7e3.wgsl b/test/tint/builtins/gen/literal/min/03c7e3.wgsl
index 8155b49..e07f5b1 100644
--- a/test/tint/builtins/gen/literal/min/03c7e3.wgsl
+++ b/test/tint/builtins/gen/literal/min/03c7e3.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = min(vec2<i32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_03c7e3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_03c7e3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_03c7e3();
 }
diff --git a/test/tint/builtins/gen/literal/min/03c7e3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/min/03c7e3.wgsl.expected.wgsl
index 8c0cc93..9814eb9 100644
--- a/test/tint/builtins/gen/literal/min/03c7e3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/min/03c7e3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = min(vec2<i32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_03c7e3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_03c7e3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_03c7e3();
 }
diff --git a/test/tint/builtins/gen/literal/min/0dc614.wgsl b/test/tint/builtins/gen/literal/min/0dc614.wgsl
index 41af73e..c803614 100644
--- a/test/tint/builtins/gen/literal/min/0dc614.wgsl
+++ b/test/tint/builtins/gen/literal/min/0dc614.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = min(vec4<u32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_0dc614();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_0dc614();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_0dc614();
 }
diff --git a/test/tint/builtins/gen/literal/min/0dc614.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/min/0dc614.wgsl.expected.wgsl
index 9833270..aef6335 100644
--- a/test/tint/builtins/gen/literal/min/0dc614.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/min/0dc614.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = min(vec4<u32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_0dc614();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_0dc614();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_0dc614();
 }
diff --git a/test/tint/builtins/gen/literal/min/3941e1.wgsl b/test/tint/builtins/gen/literal/min/3941e1.wgsl
index 3ae488a..4af9b45 100644
--- a/test/tint/builtins/gen/literal/min/3941e1.wgsl
+++ b/test/tint/builtins/gen/literal/min/3941e1.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = min(vec4<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_3941e1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_3941e1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_3941e1();
 }
diff --git a/test/tint/builtins/gen/literal/min/3941e1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/min/3941e1.wgsl.expected.wgsl
index 19dd5ee..f64d01b 100644
--- a/test/tint/builtins/gen/literal/min/3941e1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/min/3941e1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = min(vec4<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_3941e1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_3941e1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_3941e1();
 }
diff --git a/test/tint/builtins/gen/literal/min/46c5d3.wgsl b/test/tint/builtins/gen/literal/min/46c5d3.wgsl
index d81860d..f93291d 100644
--- a/test/tint/builtins/gen/literal/min/46c5d3.wgsl
+++ b/test/tint/builtins/gen/literal/min/46c5d3.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = min(1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_46c5d3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_46c5d3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_46c5d3();
 }
diff --git a/test/tint/builtins/gen/literal/min/46c5d3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/min/46c5d3.wgsl.expected.wgsl
index 2beab9a..c4d2300 100644
--- a/test/tint/builtins/gen/literal/min/46c5d3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/min/46c5d3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = min(1u, 1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_46c5d3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_46c5d3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_46c5d3();
 }
diff --git a/test/tint/builtins/gen/literal/min/82b28f.wgsl b/test/tint/builtins/gen/literal/min/82b28f.wgsl
index 7ddd2ed..3e152dc 100644
--- a/test/tint/builtins/gen/literal/min/82b28f.wgsl
+++ b/test/tint/builtins/gen/literal/min/82b28f.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = min(vec2<u32>(), vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_82b28f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_82b28f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_82b28f();
 }
diff --git a/test/tint/builtins/gen/literal/min/82b28f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/min/82b28f.wgsl.expected.wgsl
index a942532..13f7dde 100644
--- a/test/tint/builtins/gen/literal/min/82b28f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/min/82b28f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = min(vec2<u32>(), vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_82b28f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_82b28f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_82b28f();
 }
diff --git a/test/tint/builtins/gen/literal/min/93cfc4.wgsl b/test/tint/builtins/gen/literal/min/93cfc4.wgsl
index e550e19..84e45b5 100644
--- a/test/tint/builtins/gen/literal/min/93cfc4.wgsl
+++ b/test/tint/builtins/gen/literal/min/93cfc4.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = min(vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_93cfc4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_93cfc4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_93cfc4();
 }
diff --git a/test/tint/builtins/gen/literal/min/93cfc4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/min/93cfc4.wgsl.expected.wgsl
index c66aae0..bc1ce59 100644
--- a/test/tint/builtins/gen/literal/min/93cfc4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/min/93cfc4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = min(vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_93cfc4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_93cfc4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_93cfc4();
 }
diff --git a/test/tint/builtins/gen/literal/min/a45171.wgsl b/test/tint/builtins/gen/literal/min/a45171.wgsl
index 6d0bce1..ff064e6 100644
--- a/test/tint/builtins/gen/literal/min/a45171.wgsl
+++ b/test/tint/builtins/gen/literal/min/a45171.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = min(vec3<i32>(), vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_a45171();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_a45171();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_a45171();
 }
diff --git a/test/tint/builtins/gen/literal/min/a45171.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/min/a45171.wgsl.expected.wgsl
index ade6f57..21846d8 100644
--- a/test/tint/builtins/gen/literal/min/a45171.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/min/a45171.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = min(vec3<i32>(), vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_a45171();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_a45171();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_a45171();
 }
diff --git a/test/tint/builtins/gen/literal/min/aa28ad.wgsl b/test/tint/builtins/gen/literal/min/aa28ad.wgsl
index 4c1777f..06a3438 100644
--- a/test/tint/builtins/gen/literal/min/aa28ad.wgsl
+++ b/test/tint/builtins/gen/literal/min/aa28ad.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = min(vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_aa28ad();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_aa28ad();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_aa28ad();
 }
diff --git a/test/tint/builtins/gen/literal/min/aa28ad.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/min/aa28ad.wgsl.expected.wgsl
index 0830734..d7d6519 100644
--- a/test/tint/builtins/gen/literal/min/aa28ad.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/min/aa28ad.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = min(vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_aa28ad();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_aa28ad();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_aa28ad();
 }
diff --git a/test/tint/builtins/gen/literal/min/af326d.wgsl b/test/tint/builtins/gen/literal/min/af326d.wgsl
index d7b275d..fe607d5 100644
--- a/test/tint/builtins/gen/literal/min/af326d.wgsl
+++ b/test/tint/builtins/gen/literal/min/af326d.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = min(1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_af326d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_af326d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_af326d();
 }
diff --git a/test/tint/builtins/gen/literal/min/af326d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/min/af326d.wgsl.expected.wgsl
index c0500c3..3cf8c8b 100644
--- a/test/tint/builtins/gen/literal/min/af326d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/min/af326d.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = min(1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_af326d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_af326d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_af326d();
 }
diff --git a/test/tint/builtins/gen/literal/min/c70bb7.wgsl b/test/tint/builtins/gen/literal/min/c70bb7.wgsl
index cc382f7..bb2c99f 100644
--- a/test/tint/builtins/gen/literal/min/c70bb7.wgsl
+++ b/test/tint/builtins/gen/literal/min/c70bb7.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = min(vec3<u32>(), vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_c70bb7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_c70bb7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_c70bb7();
 }
diff --git a/test/tint/builtins/gen/literal/min/c70bb7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/min/c70bb7.wgsl.expected.wgsl
index d113cdb..f08a503 100644
--- a/test/tint/builtins/gen/literal/min/c70bb7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/min/c70bb7.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = min(vec3<u32>(), vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_c70bb7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_c70bb7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_c70bb7();
 }
diff --git a/test/tint/builtins/gen/literal/min/c73147.wgsl b/test/tint/builtins/gen/literal/min/c73147.wgsl
index f7c6d21..eff083a 100644
--- a/test/tint/builtins/gen/literal/min/c73147.wgsl
+++ b/test/tint/builtins/gen/literal/min/c73147.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = min(1, 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_c73147();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_c73147();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_c73147();
 }
diff --git a/test/tint/builtins/gen/literal/min/c73147.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/min/c73147.wgsl.expected.wgsl
index 3221e2e..fa6bec9 100644
--- a/test/tint/builtins/gen/literal/min/c73147.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/min/c73147.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = min(1, 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_c73147();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_c73147();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_c73147();
 }
diff --git a/test/tint/builtins/gen/literal/min/c76fa6.wgsl b/test/tint/builtins/gen/literal/min/c76fa6.wgsl
index a696f37..6c5794b 100644
--- a/test/tint/builtins/gen/literal/min/c76fa6.wgsl
+++ b/test/tint/builtins/gen/literal/min/c76fa6.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = min(vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_c76fa6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_c76fa6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_c76fa6();
 }
diff --git a/test/tint/builtins/gen/literal/min/c76fa6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/min/c76fa6.wgsl.expected.wgsl
index 3a01a88..6b486e3 100644
--- a/test/tint/builtins/gen/literal/min/c76fa6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/min/c76fa6.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = min(vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_c76fa6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_c76fa6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_c76fa6();
 }
diff --git a/test/tint/builtins/gen/literal/mix/0c8c33.wgsl b/test/tint/builtins/gen/literal/mix/0c8c33.wgsl
index b6c3b90..7d1a06f 100644
--- a/test/tint/builtins/gen/literal/mix/0c8c33.wgsl
+++ b/test/tint/builtins/gen/literal/mix/0c8c33.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = mix(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_0c8c33();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_0c8c33();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_0c8c33();
 }
diff --git a/test/tint/builtins/gen/literal/mix/0c8c33.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/mix/0c8c33.wgsl.expected.wgsl
index d76f3e3..4c2b6d1 100644
--- a/test/tint/builtins/gen/literal/mix/0c8c33.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/mix/0c8c33.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = mix(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_0c8c33();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_0c8c33();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_0c8c33();
 }
diff --git a/test/tint/builtins/gen/literal/mix/1faeb1.wgsl b/test/tint/builtins/gen/literal/mix/1faeb1.wgsl
index bf90b08..a5354fc 100644
--- a/test/tint/builtins/gen/literal/mix/1faeb1.wgsl
+++ b/test/tint/builtins/gen/literal/mix/1faeb1.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = mix(vec4<f32>(), vec4<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_1faeb1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_1faeb1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_1faeb1();
 }
diff --git a/test/tint/builtins/gen/literal/mix/1faeb1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/mix/1faeb1.wgsl.expected.wgsl
index ffeab6a..355a438 100644
--- a/test/tint/builtins/gen/literal/mix/1faeb1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/mix/1faeb1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = mix(vec4<f32>(), vec4<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_1faeb1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_1faeb1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_1faeb1();
 }
diff --git a/test/tint/builtins/gen/literal/mix/2fadab.wgsl b/test/tint/builtins/gen/literal/mix/2fadab.wgsl
index 175c4ed..ccfeb73 100644
--- a/test/tint/builtins/gen/literal/mix/2fadab.wgsl
+++ b/test/tint/builtins/gen/literal/mix/2fadab.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = mix(vec2<f32>(), vec2<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_2fadab();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_2fadab();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_2fadab();
 }
diff --git a/test/tint/builtins/gen/literal/mix/2fadab.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/mix/2fadab.wgsl.expected.wgsl
index d084ab6..43188af 100644
--- a/test/tint/builtins/gen/literal/mix/2fadab.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/mix/2fadab.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = mix(vec2<f32>(), vec2<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_2fadab();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_2fadab();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_2fadab();
 }
diff --git a/test/tint/builtins/gen/literal/mix/315264.wgsl b/test/tint/builtins/gen/literal/mix/315264.wgsl
index 0e8b9db..f7c7d0c 100644
--- a/test/tint/builtins/gen/literal/mix/315264.wgsl
+++ b/test/tint/builtins/gen/literal/mix/315264.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = mix(vec3<f32>(), vec3<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_315264();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_315264();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_315264();
 }
diff --git a/test/tint/builtins/gen/literal/mix/315264.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/mix/315264.wgsl.expected.wgsl
index 40fae02..2bed41c 100644
--- a/test/tint/builtins/gen/literal/mix/315264.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/mix/315264.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = mix(vec3<f32>(), vec3<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_315264();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_315264();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_315264();
 }
diff --git a/test/tint/builtins/gen/literal/mix/4f0b5e.wgsl b/test/tint/builtins/gen/literal/mix/4f0b5e.wgsl
index f959131..faf842b 100644
--- a/test/tint/builtins/gen/literal/mix/4f0b5e.wgsl
+++ b/test/tint/builtins/gen/literal/mix/4f0b5e.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = mix(1.0, 1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_4f0b5e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_4f0b5e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_4f0b5e();
 }
diff --git a/test/tint/builtins/gen/literal/mix/4f0b5e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/mix/4f0b5e.wgsl.expected.wgsl
index 67679c4..81859ea 100644
--- a/test/tint/builtins/gen/literal/mix/4f0b5e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/mix/4f0b5e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = mix(1.0, 1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_4f0b5e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_4f0b5e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_4f0b5e();
 }
diff --git a/test/tint/builtins/gen/literal/mix/6f8adc.wgsl b/test/tint/builtins/gen/literal/mix/6f8adc.wgsl
index d95c6dc..1dfe201 100644
--- a/test/tint/builtins/gen/literal/mix/6f8adc.wgsl
+++ b/test/tint/builtins/gen/literal/mix/6f8adc.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = mix(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_6f8adc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_6f8adc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_6f8adc();
 }
diff --git a/test/tint/builtins/gen/literal/mix/6f8adc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/mix/6f8adc.wgsl.expected.wgsl
index 2bd55cc..05aa3a2 100644
--- a/test/tint/builtins/gen/literal/mix/6f8adc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/mix/6f8adc.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = mix(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_6f8adc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_6f8adc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_6f8adc();
 }
diff --git a/test/tint/builtins/gen/literal/mix/c37ede.wgsl b/test/tint/builtins/gen/literal/mix/c37ede.wgsl
index 4c28c9b..95fd2b1 100644
--- a/test/tint/builtins/gen/literal/mix/c37ede.wgsl
+++ b/test/tint/builtins/gen/literal/mix/c37ede.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = mix(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_c37ede();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_c37ede();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_c37ede();
 }
diff --git a/test/tint/builtins/gen/literal/mix/c37ede.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/mix/c37ede.wgsl.expected.wgsl
index 4d3d087..f0a5da8 100644
--- a/test/tint/builtins/gen/literal/mix/c37ede.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/mix/c37ede.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = mix(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_c37ede();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_c37ede();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_c37ede();
 }
diff --git a/test/tint/builtins/gen/literal/modf/180fed.wgsl b/test/tint/builtins/gen/literal/modf/180fed.wgsl
index 64fb940..1084647 100644
--- a/test/tint/builtins/gen/literal/modf/180fed.wgsl
+++ b/test/tint/builtins/gen/literal/modf/180fed.wgsl
@@ -28,18 +28,18 @@
   var res = modf(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_180fed();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   modf_180fed();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   modf_180fed();
 }
diff --git a/test/tint/builtins/gen/literal/modf/180fed.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/modf/180fed.wgsl.expected.wgsl
index 3865c22..16690e4 100644
--- a/test/tint/builtins/gen/literal/modf/180fed.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/modf/180fed.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res = modf(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_180fed();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   modf_180fed();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   modf_180fed();
 }
diff --git a/test/tint/builtins/gen/literal/modf/9b75f7.wgsl b/test/tint/builtins/gen/literal/modf/9b75f7.wgsl
index 514c345..2821fb2 100644
--- a/test/tint/builtins/gen/literal/modf/9b75f7.wgsl
+++ b/test/tint/builtins/gen/literal/modf/9b75f7.wgsl
@@ -28,18 +28,18 @@
   var res = modf(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_9b75f7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   modf_9b75f7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   modf_9b75f7();
 }
diff --git a/test/tint/builtins/gen/literal/modf/9b75f7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/modf/9b75f7.wgsl.expected.wgsl
index 90eaf3a..24727c6 100644
--- a/test/tint/builtins/gen/literal/modf/9b75f7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/modf/9b75f7.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res = modf(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_9b75f7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   modf_9b75f7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   modf_9b75f7();
 }
diff --git a/test/tint/builtins/gen/literal/modf/ec2dbc.wgsl b/test/tint/builtins/gen/literal/modf/ec2dbc.wgsl
index 175dd84..705bf57 100644
--- a/test/tint/builtins/gen/literal/modf/ec2dbc.wgsl
+++ b/test/tint/builtins/gen/literal/modf/ec2dbc.wgsl
@@ -28,18 +28,18 @@
   var res = modf(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_ec2dbc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   modf_ec2dbc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   modf_ec2dbc();
 }
diff --git a/test/tint/builtins/gen/literal/modf/ec2dbc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/modf/ec2dbc.wgsl.expected.wgsl
index 6c3380d..29b1da6 100644
--- a/test/tint/builtins/gen/literal/modf/ec2dbc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/modf/ec2dbc.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res = modf(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_ec2dbc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   modf_ec2dbc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   modf_ec2dbc();
 }
diff --git a/test/tint/builtins/gen/literal/modf/f5f20d.wgsl b/test/tint/builtins/gen/literal/modf/f5f20d.wgsl
index e3b3bec..b59ff81 100644
--- a/test/tint/builtins/gen/literal/modf/f5f20d.wgsl
+++ b/test/tint/builtins/gen/literal/modf/f5f20d.wgsl
@@ -28,18 +28,18 @@
   var res = modf(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_f5f20d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   modf_f5f20d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   modf_f5f20d();
 }
diff --git a/test/tint/builtins/gen/literal/modf/f5f20d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/modf/f5f20d.wgsl.expected.wgsl
index 8dea55c..8e78a45 100644
--- a/test/tint/builtins/gen/literal/modf/f5f20d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/modf/f5f20d.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res = modf(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_f5f20d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   modf_f5f20d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   modf_f5f20d();
 }
diff --git a/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl b/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl
index 78db9df..e640191 100644
--- a/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl
+++ b/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = normalize(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   normalize_64d8c0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   normalize_64d8c0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   normalize_64d8c0();
 }
diff --git a/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.wgsl
index 57444c8..ac57ff1 100644
--- a/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = normalize(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   normalize_64d8c0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   normalize_64d8c0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   normalize_64d8c0();
 }
diff --git a/test/tint/builtins/gen/literal/normalize/9a0aab.wgsl b/test/tint/builtins/gen/literal/normalize/9a0aab.wgsl
index 8c041ad..0f92a96 100644
--- a/test/tint/builtins/gen/literal/normalize/9a0aab.wgsl
+++ b/test/tint/builtins/gen/literal/normalize/9a0aab.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = normalize(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   normalize_9a0aab();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   normalize_9a0aab();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   normalize_9a0aab();
 }
diff --git a/test/tint/builtins/gen/literal/normalize/9a0aab.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/normalize/9a0aab.wgsl.expected.wgsl
index 1b3e019..44226a5 100644
--- a/test/tint/builtins/gen/literal/normalize/9a0aab.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/normalize/9a0aab.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = normalize(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   normalize_9a0aab();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   normalize_9a0aab();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   normalize_9a0aab();
 }
diff --git a/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl b/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl
index 83c1605..e1b0275 100644
--- a/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl
+++ b/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = normalize(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   normalize_fc2ef1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   normalize_fc2ef1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   normalize_fc2ef1();
 }
diff --git a/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.wgsl
index b92ea5f..e434b58 100644
--- a/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = normalize(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   normalize_fc2ef1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   normalize_fc2ef1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   normalize_fc2ef1();
 }
diff --git a/test/tint/builtins/gen/literal/pack2x16float/0e97b3.wgsl b/test/tint/builtins/gen/literal/pack2x16float/0e97b3.wgsl
index 2f2d664..41d1812 100644
--- a/test/tint/builtins/gen/literal/pack2x16float/0e97b3.wgsl
+++ b/test/tint/builtins/gen/literal/pack2x16float/0e97b3.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = pack2x16float(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack2x16float_0e97b3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack2x16float_0e97b3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack2x16float_0e97b3();
 }
diff --git a/test/tint/builtins/gen/literal/pack2x16float/0e97b3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/pack2x16float/0e97b3.wgsl.expected.wgsl
index 714304f..fca0987 100644
--- a/test/tint/builtins/gen/literal/pack2x16float/0e97b3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/pack2x16float/0e97b3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = pack2x16float(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack2x16float_0e97b3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack2x16float_0e97b3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack2x16float_0e97b3();
 }
diff --git a/test/tint/builtins/gen/literal/pack2x16snorm/6c169b.wgsl b/test/tint/builtins/gen/literal/pack2x16snorm/6c169b.wgsl
index 980f6f3..4016aff 100644
--- a/test/tint/builtins/gen/literal/pack2x16snorm/6c169b.wgsl
+++ b/test/tint/builtins/gen/literal/pack2x16snorm/6c169b.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = pack2x16snorm(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack2x16snorm_6c169b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack2x16snorm_6c169b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack2x16snorm_6c169b();
 }
diff --git a/test/tint/builtins/gen/literal/pack2x16snorm/6c169b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/pack2x16snorm/6c169b.wgsl.expected.wgsl
index 9ccbc2f..0d9fafc 100644
--- a/test/tint/builtins/gen/literal/pack2x16snorm/6c169b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/pack2x16snorm/6c169b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = pack2x16snorm(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack2x16snorm_6c169b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack2x16snorm_6c169b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack2x16snorm_6c169b();
 }
diff --git a/test/tint/builtins/gen/literal/pack2x16unorm/0f08e4.wgsl b/test/tint/builtins/gen/literal/pack2x16unorm/0f08e4.wgsl
index 1e44323..9495e72 100644
--- a/test/tint/builtins/gen/literal/pack2x16unorm/0f08e4.wgsl
+++ b/test/tint/builtins/gen/literal/pack2x16unorm/0f08e4.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = pack2x16unorm(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack2x16unorm_0f08e4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack2x16unorm_0f08e4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack2x16unorm_0f08e4();
 }
diff --git a/test/tint/builtins/gen/literal/pack2x16unorm/0f08e4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/pack2x16unorm/0f08e4.wgsl.expected.wgsl
index d523070..0ddd089 100644
--- a/test/tint/builtins/gen/literal/pack2x16unorm/0f08e4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/pack2x16unorm/0f08e4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = pack2x16unorm(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack2x16unorm_0f08e4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack2x16unorm_0f08e4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack2x16unorm_0f08e4();
 }
diff --git a/test/tint/builtins/gen/literal/pack4x8snorm/4d22e7.wgsl b/test/tint/builtins/gen/literal/pack4x8snorm/4d22e7.wgsl
index 97c44f9..0fb26a6 100644
--- a/test/tint/builtins/gen/literal/pack4x8snorm/4d22e7.wgsl
+++ b/test/tint/builtins/gen/literal/pack4x8snorm/4d22e7.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = pack4x8snorm(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack4x8snorm_4d22e7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack4x8snorm_4d22e7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack4x8snorm_4d22e7();
 }
diff --git a/test/tint/builtins/gen/literal/pack4x8snorm/4d22e7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/pack4x8snorm/4d22e7.wgsl.expected.wgsl
index 53657e0..bb4d5a2 100644
--- a/test/tint/builtins/gen/literal/pack4x8snorm/4d22e7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/pack4x8snorm/4d22e7.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = pack4x8snorm(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack4x8snorm_4d22e7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack4x8snorm_4d22e7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack4x8snorm_4d22e7();
 }
diff --git a/test/tint/builtins/gen/literal/pack4x8unorm/95c456.wgsl b/test/tint/builtins/gen/literal/pack4x8unorm/95c456.wgsl
index 8f242ba..9481f50 100644
--- a/test/tint/builtins/gen/literal/pack4x8unorm/95c456.wgsl
+++ b/test/tint/builtins/gen/literal/pack4x8unorm/95c456.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = pack4x8unorm(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack4x8unorm_95c456();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack4x8unorm_95c456();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack4x8unorm_95c456();
 }
diff --git a/test/tint/builtins/gen/literal/pack4x8unorm/95c456.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/pack4x8unorm/95c456.wgsl.expected.wgsl
index 55aedf3..1aca6f3 100644
--- a/test/tint/builtins/gen/literal/pack4x8unorm/95c456.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/pack4x8unorm/95c456.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = pack4x8unorm(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack4x8unorm_95c456();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack4x8unorm_95c456();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack4x8unorm_95c456();
 }
diff --git a/test/tint/builtins/gen/literal/pow/04a908.wgsl b/test/tint/builtins/gen/literal/pow/04a908.wgsl
index 5371847..52effd6 100644
--- a/test/tint/builtins/gen/literal/pow/04a908.wgsl
+++ b/test/tint/builtins/gen/literal/pow/04a908.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = pow(vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_04a908();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pow_04a908();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pow_04a908();
 }
diff --git a/test/tint/builtins/gen/literal/pow/04a908.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/pow/04a908.wgsl.expected.wgsl
index 395fe26..315a4bc 100644
--- a/test/tint/builtins/gen/literal/pow/04a908.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/pow/04a908.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = pow(vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_04a908();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pow_04a908();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pow_04a908();
 }
diff --git a/test/tint/builtins/gen/literal/pow/46e029.wgsl b/test/tint/builtins/gen/literal/pow/46e029.wgsl
index 16241f6..533afb8 100644
--- a/test/tint/builtins/gen/literal/pow/46e029.wgsl
+++ b/test/tint/builtins/gen/literal/pow/46e029.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = pow(1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_46e029();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pow_46e029();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pow_46e029();
 }
diff --git a/test/tint/builtins/gen/literal/pow/46e029.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/pow/46e029.wgsl.expected.wgsl
index 1670720..646aec3 100644
--- a/test/tint/builtins/gen/literal/pow/46e029.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/pow/46e029.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = pow(1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_46e029();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pow_46e029();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pow_46e029();
 }
diff --git a/test/tint/builtins/gen/literal/pow/4a46c9.wgsl b/test/tint/builtins/gen/literal/pow/4a46c9.wgsl
index 58ceff0..6c8cccfe 100644
--- a/test/tint/builtins/gen/literal/pow/4a46c9.wgsl
+++ b/test/tint/builtins/gen/literal/pow/4a46c9.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = pow(vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_4a46c9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pow_4a46c9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pow_4a46c9();
 }
diff --git a/test/tint/builtins/gen/literal/pow/4a46c9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/pow/4a46c9.wgsl.expected.wgsl
index 4a6f3f9..1b7cf2d 100644
--- a/test/tint/builtins/gen/literal/pow/4a46c9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/pow/4a46c9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = pow(vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_4a46c9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pow_4a46c9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pow_4a46c9();
 }
diff --git a/test/tint/builtins/gen/literal/pow/e60ea5.wgsl b/test/tint/builtins/gen/literal/pow/e60ea5.wgsl
index 4939232..eea84ff 100644
--- a/test/tint/builtins/gen/literal/pow/e60ea5.wgsl
+++ b/test/tint/builtins/gen/literal/pow/e60ea5.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = pow(vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_e60ea5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pow_e60ea5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pow_e60ea5();
 }
diff --git a/test/tint/builtins/gen/literal/pow/e60ea5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/pow/e60ea5.wgsl.expected.wgsl
index 0c6432e..a7d9fcb 100644
--- a/test/tint/builtins/gen/literal/pow/e60ea5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/pow/e60ea5.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = pow(vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_e60ea5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pow_e60ea5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pow_e60ea5();
 }
diff --git a/test/tint/builtins/gen/literal/radians/09b7fc.wgsl b/test/tint/builtins/gen/literal/radians/09b7fc.wgsl
index 1bd0605..ef30a52 100644
--- a/test/tint/builtins/gen/literal/radians/09b7fc.wgsl
+++ b/test/tint/builtins/gen/literal/radians/09b7fc.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = radians(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_09b7fc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   radians_09b7fc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   radians_09b7fc();
 }
diff --git a/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.wgsl
index e8efa0e..6300fd6 100644
--- a/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = radians(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_09b7fc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   radians_09b7fc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   radians_09b7fc();
 }
diff --git a/test/tint/builtins/gen/literal/radians/61687a.wgsl b/test/tint/builtins/gen/literal/radians/61687a.wgsl
index 0b281ee..bd44d94 100644
--- a/test/tint/builtins/gen/literal/radians/61687a.wgsl
+++ b/test/tint/builtins/gen/literal/radians/61687a.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = radians(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_61687a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   radians_61687a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   radians_61687a();
 }
diff --git a/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.wgsl
index 310425f..5cef876 100644
--- a/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = radians(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_61687a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   radians_61687a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   radians_61687a();
 }
diff --git a/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl b/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl
index b4f4aa7..aa64cc9 100644
--- a/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl
+++ b/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = radians(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_6b0ff2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   radians_6b0ff2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   radians_6b0ff2();
 }
diff --git a/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.wgsl
index 05a6fb5..de4a51a5 100644
--- a/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = radians(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_6b0ff2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   radians_6b0ff2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   radians_6b0ff2();
 }
diff --git a/test/tint/builtins/gen/literal/radians/f96258.wgsl b/test/tint/builtins/gen/literal/radians/f96258.wgsl
index e078695..05785b0 100644
--- a/test/tint/builtins/gen/literal/radians/f96258.wgsl
+++ b/test/tint/builtins/gen/literal/radians/f96258.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = radians(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_f96258();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   radians_f96258();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   radians_f96258();
 }
diff --git a/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.wgsl
index c38fe31..5e43bb8 100644
--- a/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = radians(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_f96258();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   radians_f96258();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   radians_f96258();
 }
diff --git a/test/tint/builtins/gen/literal/reflect/05357e.wgsl b/test/tint/builtins/gen/literal/reflect/05357e.wgsl
index 7d26fdf..0fe5cba 100644
--- a/test/tint/builtins/gen/literal/reflect/05357e.wgsl
+++ b/test/tint/builtins/gen/literal/reflect/05357e.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = reflect(vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reflect_05357e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reflect_05357e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reflect_05357e();
 }
diff --git a/test/tint/builtins/gen/literal/reflect/05357e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/reflect/05357e.wgsl.expected.wgsl
index ba4f95a..23966df 100644
--- a/test/tint/builtins/gen/literal/reflect/05357e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/reflect/05357e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = reflect(vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reflect_05357e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reflect_05357e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reflect_05357e();
 }
diff --git a/test/tint/builtins/gen/literal/reflect/b61e10.wgsl b/test/tint/builtins/gen/literal/reflect/b61e10.wgsl
index fa6215b..aeeaed7 100644
--- a/test/tint/builtins/gen/literal/reflect/b61e10.wgsl
+++ b/test/tint/builtins/gen/literal/reflect/b61e10.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = reflect(vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reflect_b61e10();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reflect_b61e10();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reflect_b61e10();
 }
diff --git a/test/tint/builtins/gen/literal/reflect/b61e10.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/reflect/b61e10.wgsl.expected.wgsl
index 330eead..2ef48b1 100644
--- a/test/tint/builtins/gen/literal/reflect/b61e10.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/reflect/b61e10.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = reflect(vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reflect_b61e10();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reflect_b61e10();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reflect_b61e10();
 }
diff --git a/test/tint/builtins/gen/literal/reflect/f47fdb.wgsl b/test/tint/builtins/gen/literal/reflect/f47fdb.wgsl
index 7ce4d2a..3abf913 100644
--- a/test/tint/builtins/gen/literal/reflect/f47fdb.wgsl
+++ b/test/tint/builtins/gen/literal/reflect/f47fdb.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = reflect(vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reflect_f47fdb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reflect_f47fdb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reflect_f47fdb();
 }
diff --git a/test/tint/builtins/gen/literal/reflect/f47fdb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/reflect/f47fdb.wgsl.expected.wgsl
index d66212f..7e38677 100644
--- a/test/tint/builtins/gen/literal/reflect/f47fdb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/reflect/f47fdb.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = reflect(vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reflect_f47fdb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reflect_f47fdb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reflect_f47fdb();
 }
diff --git a/test/tint/builtins/gen/literal/refract/7e02e6.wgsl b/test/tint/builtins/gen/literal/refract/7e02e6.wgsl
index 24a7718..34bd4ee 100644
--- a/test/tint/builtins/gen/literal/refract/7e02e6.wgsl
+++ b/test/tint/builtins/gen/literal/refract/7e02e6.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = refract(vec4<f32>(), vec4<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   refract_7e02e6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   refract_7e02e6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   refract_7e02e6();
 }
diff --git a/test/tint/builtins/gen/literal/refract/7e02e6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/refract/7e02e6.wgsl.expected.wgsl
index 3950912..e1fb4d2 100644
--- a/test/tint/builtins/gen/literal/refract/7e02e6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/refract/7e02e6.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = refract(vec4<f32>(), vec4<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   refract_7e02e6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   refract_7e02e6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   refract_7e02e6();
 }
diff --git a/test/tint/builtins/gen/literal/refract/cbc1d2.wgsl b/test/tint/builtins/gen/literal/refract/cbc1d2.wgsl
index d30a12e..dec991f 100644
--- a/test/tint/builtins/gen/literal/refract/cbc1d2.wgsl
+++ b/test/tint/builtins/gen/literal/refract/cbc1d2.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = refract(vec3<f32>(), vec3<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   refract_cbc1d2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   refract_cbc1d2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   refract_cbc1d2();
 }
diff --git a/test/tint/builtins/gen/literal/refract/cbc1d2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/refract/cbc1d2.wgsl.expected.wgsl
index 535c279..900bf98 100644
--- a/test/tint/builtins/gen/literal/refract/cbc1d2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/refract/cbc1d2.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = refract(vec3<f32>(), vec3<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   refract_cbc1d2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   refract_cbc1d2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   refract_cbc1d2();
 }
diff --git a/test/tint/builtins/gen/literal/refract/cd905f.wgsl b/test/tint/builtins/gen/literal/refract/cd905f.wgsl
index 5d486b2..4e96eef 100644
--- a/test/tint/builtins/gen/literal/refract/cd905f.wgsl
+++ b/test/tint/builtins/gen/literal/refract/cd905f.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = refract(vec2<f32>(), vec2<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   refract_cd905f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   refract_cd905f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   refract_cd905f();
 }
diff --git a/test/tint/builtins/gen/literal/refract/cd905f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/refract/cd905f.wgsl.expected.wgsl
index 485ab60..e91bff9 100644
--- a/test/tint/builtins/gen/literal/refract/cd905f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/refract/cd905f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = refract(vec2<f32>(), vec2<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   refract_cd905f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   refract_cd905f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   refract_cd905f();
 }
diff --git a/test/tint/builtins/gen/literal/reverseBits/222177.wgsl b/test/tint/builtins/gen/literal/reverseBits/222177.wgsl
index 3fb14c1..f44b0a4 100644
--- a/test/tint/builtins/gen/literal/reverseBits/222177.wgsl
+++ b/test/tint/builtins/gen/literal/reverseBits/222177.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = reverseBits(vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_222177();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_222177();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_222177();
 }
diff --git a/test/tint/builtins/gen/literal/reverseBits/222177.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/reverseBits/222177.wgsl.expected.wgsl
index cd37769..13c75dd 100644
--- a/test/tint/builtins/gen/literal/reverseBits/222177.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/reverseBits/222177.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = reverseBits(vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_222177();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_222177();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_222177();
 }
diff --git a/test/tint/builtins/gen/literal/reverseBits/35fea9.wgsl b/test/tint/builtins/gen/literal/reverseBits/35fea9.wgsl
index 952fc11..4249225 100644
--- a/test/tint/builtins/gen/literal/reverseBits/35fea9.wgsl
+++ b/test/tint/builtins/gen/literal/reverseBits/35fea9.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = reverseBits(vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_35fea9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_35fea9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_35fea9();
 }
diff --git a/test/tint/builtins/gen/literal/reverseBits/35fea9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/reverseBits/35fea9.wgsl.expected.wgsl
index 6fea80d..8244ce3 100644
--- a/test/tint/builtins/gen/literal/reverseBits/35fea9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/reverseBits/35fea9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = reverseBits(vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_35fea9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_35fea9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_35fea9();
 }
diff --git a/test/tint/builtins/gen/literal/reverseBits/4dbd6f.wgsl b/test/tint/builtins/gen/literal/reverseBits/4dbd6f.wgsl
index 9aa9ef0..f04f8d9 100644
--- a/test/tint/builtins/gen/literal/reverseBits/4dbd6f.wgsl
+++ b/test/tint/builtins/gen/literal/reverseBits/4dbd6f.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = reverseBits(vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_4dbd6f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_4dbd6f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_4dbd6f();
 }
diff --git a/test/tint/builtins/gen/literal/reverseBits/4dbd6f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/reverseBits/4dbd6f.wgsl.expected.wgsl
index 2e6d0b2..fee3829 100644
--- a/test/tint/builtins/gen/literal/reverseBits/4dbd6f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/reverseBits/4dbd6f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = reverseBits(vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_4dbd6f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_4dbd6f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_4dbd6f();
 }
diff --git a/test/tint/builtins/gen/literal/reverseBits/7c4269.wgsl b/test/tint/builtins/gen/literal/reverseBits/7c4269.wgsl
index 0f2b62f..aaeb646 100644
--- a/test/tint/builtins/gen/literal/reverseBits/7c4269.wgsl
+++ b/test/tint/builtins/gen/literal/reverseBits/7c4269.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = reverseBits(1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_7c4269();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_7c4269();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_7c4269();
 }
diff --git a/test/tint/builtins/gen/literal/reverseBits/7c4269.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/reverseBits/7c4269.wgsl.expected.wgsl
index 17f9950..1ce5525 100644
--- a/test/tint/builtins/gen/literal/reverseBits/7c4269.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/reverseBits/7c4269.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = reverseBits(1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_7c4269();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_7c4269();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_7c4269();
 }
diff --git a/test/tint/builtins/gen/literal/reverseBits/a6ccd4.wgsl b/test/tint/builtins/gen/literal/reverseBits/a6ccd4.wgsl
index 9a312da..61a0605 100644
--- a/test/tint/builtins/gen/literal/reverseBits/a6ccd4.wgsl
+++ b/test/tint/builtins/gen/literal/reverseBits/a6ccd4.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = reverseBits(vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_a6ccd4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_a6ccd4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_a6ccd4();
 }
diff --git a/test/tint/builtins/gen/literal/reverseBits/a6ccd4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/reverseBits/a6ccd4.wgsl.expected.wgsl
index 713d9c7..8ac960a 100644
--- a/test/tint/builtins/gen/literal/reverseBits/a6ccd4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/reverseBits/a6ccd4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = reverseBits(vec3<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_a6ccd4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_a6ccd4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_a6ccd4();
 }
diff --git a/test/tint/builtins/gen/literal/reverseBits/c21bc1.wgsl b/test/tint/builtins/gen/literal/reverseBits/c21bc1.wgsl
index 53ec0da..79a1015 100644
--- a/test/tint/builtins/gen/literal/reverseBits/c21bc1.wgsl
+++ b/test/tint/builtins/gen/literal/reverseBits/c21bc1.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = reverseBits(vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_c21bc1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_c21bc1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_c21bc1();
 }
diff --git a/test/tint/builtins/gen/literal/reverseBits/c21bc1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/reverseBits/c21bc1.wgsl.expected.wgsl
index 6ad70ae..6c20e72 100644
--- a/test/tint/builtins/gen/literal/reverseBits/c21bc1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/reverseBits/c21bc1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = reverseBits(vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_c21bc1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_c21bc1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_c21bc1();
 }
diff --git a/test/tint/builtins/gen/literal/reverseBits/e1f4c1.wgsl b/test/tint/builtins/gen/literal/reverseBits/e1f4c1.wgsl
index d53c491..c51a94e 100644
--- a/test/tint/builtins/gen/literal/reverseBits/e1f4c1.wgsl
+++ b/test/tint/builtins/gen/literal/reverseBits/e1f4c1.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = reverseBits(vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_e1f4c1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_e1f4c1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_e1f4c1();
 }
diff --git a/test/tint/builtins/gen/literal/reverseBits/e1f4c1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/reverseBits/e1f4c1.wgsl.expected.wgsl
index dc01269..d7ffaa9 100644
--- a/test/tint/builtins/gen/literal/reverseBits/e1f4c1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/reverseBits/e1f4c1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = reverseBits(vec2<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_e1f4c1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_e1f4c1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_e1f4c1();
 }
diff --git a/test/tint/builtins/gen/literal/reverseBits/e31adf.wgsl b/test/tint/builtins/gen/literal/reverseBits/e31adf.wgsl
index 3f4635e..b18d253 100644
--- a/test/tint/builtins/gen/literal/reverseBits/e31adf.wgsl
+++ b/test/tint/builtins/gen/literal/reverseBits/e31adf.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = reverseBits(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_e31adf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_e31adf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_e31adf();
 }
diff --git a/test/tint/builtins/gen/literal/reverseBits/e31adf.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/reverseBits/e31adf.wgsl.expected.wgsl
index d99e7a5..fe271eb 100644
--- a/test/tint/builtins/gen/literal/reverseBits/e31adf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/reverseBits/e31adf.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = reverseBits(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_e31adf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_e31adf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_e31adf();
 }
diff --git a/test/tint/builtins/gen/literal/round/106c0b.wgsl b/test/tint/builtins/gen/literal/round/106c0b.wgsl
index 2bb4ab2..8523bd1 100644
--- a/test/tint/builtins/gen/literal/round/106c0b.wgsl
+++ b/test/tint/builtins/gen/literal/round/106c0b.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = round(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   round_106c0b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   round_106c0b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   round_106c0b();
 }
diff --git a/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.wgsl
index 338cddf..c846a03 100644
--- a/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = round(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   round_106c0b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   round_106c0b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   round_106c0b();
 }
diff --git a/test/tint/builtins/gen/literal/round/1c7897.wgsl b/test/tint/builtins/gen/literal/round/1c7897.wgsl
index 14c38ca..4403ce7 100644
--- a/test/tint/builtins/gen/literal/round/1c7897.wgsl
+++ b/test/tint/builtins/gen/literal/round/1c7897.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = round(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   round_1c7897();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   round_1c7897();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   round_1c7897();
 }
diff --git a/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.wgsl
index ac2350e..e55a2ee 100644
--- a/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = round(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   round_1c7897();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   round_1c7897();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   round_1c7897();
 }
diff --git a/test/tint/builtins/gen/literal/round/52c84d.wgsl b/test/tint/builtins/gen/literal/round/52c84d.wgsl
index e778028..9a454ad 100644
--- a/test/tint/builtins/gen/literal/round/52c84d.wgsl
+++ b/test/tint/builtins/gen/literal/round/52c84d.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = round(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   round_52c84d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   round_52c84d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   round_52c84d();
 }
diff --git a/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.wgsl
index 9877c2d..040946b 100644
--- a/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = round(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   round_52c84d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   round_52c84d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   round_52c84d();
 }
diff --git a/test/tint/builtins/gen/literal/round/9edc38.wgsl b/test/tint/builtins/gen/literal/round/9edc38.wgsl
index 85f6a27..b4f482a 100644
--- a/test/tint/builtins/gen/literal/round/9edc38.wgsl
+++ b/test/tint/builtins/gen/literal/round/9edc38.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = round(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   round_9edc38();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   round_9edc38();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   round_9edc38();
 }
diff --git a/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.wgsl
index 9753e04..dbe7d73 100644
--- a/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = round(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   round_9edc38();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   round_9edc38();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   round_9edc38();
 }
diff --git a/test/tint/builtins/gen/literal/select/00b848.wgsl b/test/tint/builtins/gen/literal/select/00b848.wgsl
index a22201b..7808557 100644
--- a/test/tint/builtins/gen/literal/select/00b848.wgsl
+++ b/test/tint/builtins/gen/literal/select/00b848.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = select(vec2<i32>(), vec2<i32>(), vec2<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_00b848();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_00b848();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_00b848();
 }
diff --git a/test/tint/builtins/gen/literal/select/00b848.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/00b848.wgsl.expected.wgsl
index bf45b90..91bc2ab 100644
--- a/test/tint/builtins/gen/literal/select/00b848.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/00b848.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = select(vec2<i32>(), vec2<i32>(), vec2<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_00b848();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_00b848();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_00b848();
 }
diff --git a/test/tint/builtins/gen/literal/select/01e2cd.wgsl b/test/tint/builtins/gen/literal/select/01e2cd.wgsl
index 6fba1df..dca4e96 100644
--- a/test/tint/builtins/gen/literal/select/01e2cd.wgsl
+++ b/test/tint/builtins/gen/literal/select/01e2cd.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = select(vec3<i32>(), vec3<i32>(), vec3<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_01e2cd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_01e2cd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_01e2cd();
 }
diff --git a/test/tint/builtins/gen/literal/select/01e2cd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/01e2cd.wgsl.expected.wgsl
index 7e9d06f..0abdc60 100644
--- a/test/tint/builtins/gen/literal/select/01e2cd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/01e2cd.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = select(vec3<i32>(), vec3<i32>(), vec3<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_01e2cd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_01e2cd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_01e2cd();
 }
diff --git a/test/tint/builtins/gen/literal/select/087ea4.wgsl b/test/tint/builtins/gen/literal/select/087ea4.wgsl
index 2bc9d0a..74ea93d 100644
--- a/test/tint/builtins/gen/literal/select/087ea4.wgsl
+++ b/test/tint/builtins/gen/literal/select/087ea4.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = select(vec4<u32>(), vec4<u32>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_087ea4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_087ea4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_087ea4();
 }
diff --git a/test/tint/builtins/gen/literal/select/087ea4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/087ea4.wgsl.expected.wgsl
index 6258a15..2d02c09 100644
--- a/test/tint/builtins/gen/literal/select/087ea4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/087ea4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = select(vec4<u32>(), vec4<u32>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_087ea4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_087ea4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_087ea4();
 }
diff --git a/test/tint/builtins/gen/literal/select/1e960b.wgsl b/test/tint/builtins/gen/literal/select/1e960b.wgsl
index 650b9e4..d98f9b7 100644
--- a/test/tint/builtins/gen/literal/select/1e960b.wgsl
+++ b/test/tint/builtins/gen/literal/select/1e960b.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = select(vec2<u32>(), vec2<u32>(), vec2<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_1e960b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_1e960b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_1e960b();
 }
diff --git a/test/tint/builtins/gen/literal/select/1e960b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/1e960b.wgsl.expected.wgsl
index 4f78e59..fbc5ff3 100644
--- a/test/tint/builtins/gen/literal/select/1e960b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/1e960b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = select(vec2<u32>(), vec2<u32>(), vec2<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_1e960b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_1e960b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_1e960b();
 }
diff --git a/test/tint/builtins/gen/literal/select/266aff.wgsl b/test/tint/builtins/gen/literal/select/266aff.wgsl
index 80d50b0..1c4c258 100644
--- a/test/tint/builtins/gen/literal/select/266aff.wgsl
+++ b/test/tint/builtins/gen/literal/select/266aff.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = select(vec2<f32>(), vec2<f32>(), vec2<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_266aff();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_266aff();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_266aff();
 }
diff --git a/test/tint/builtins/gen/literal/select/266aff.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/266aff.wgsl.expected.wgsl
index 522a10f..1390d5d 100644
--- a/test/tint/builtins/gen/literal/select/266aff.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/266aff.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = select(vec2<f32>(), vec2<f32>(), vec2<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_266aff();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_266aff();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_266aff();
 }
diff --git a/test/tint/builtins/gen/literal/select/28a27e.wgsl b/test/tint/builtins/gen/literal/select/28a27e.wgsl
index 0837ea7..611a0b2 100644
--- a/test/tint/builtins/gen/literal/select/28a27e.wgsl
+++ b/test/tint/builtins/gen/literal/select/28a27e.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = select(vec3<u32>(), vec3<u32>(), vec3<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_28a27e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_28a27e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_28a27e();
 }
diff --git a/test/tint/builtins/gen/literal/select/28a27e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/28a27e.wgsl.expected.wgsl
index cbc4bcf..47aa39f 100644
--- a/test/tint/builtins/gen/literal/select/28a27e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/28a27e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = select(vec3<u32>(), vec3<u32>(), vec3<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_28a27e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_28a27e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_28a27e();
 }
diff --git a/test/tint/builtins/gen/literal/select/3c25ce.wgsl b/test/tint/builtins/gen/literal/select/3c25ce.wgsl
index e76b138..12a3743 100644
--- a/test/tint/builtins/gen/literal/select/3c25ce.wgsl
+++ b/test/tint/builtins/gen/literal/select/3c25ce.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<bool> = select(vec3<bool>(), vec3<bool>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_3c25ce();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_3c25ce();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_3c25ce();
 }
diff --git a/test/tint/builtins/gen/literal/select/3c25ce.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/3c25ce.wgsl.expected.wgsl
index 48963b4..c73fe55 100644
--- a/test/tint/builtins/gen/literal/select/3c25ce.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/3c25ce.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<bool> = select(vec3<bool>(), vec3<bool>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_3c25ce();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_3c25ce();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_3c25ce();
 }
diff --git a/test/tint/builtins/gen/literal/select/416e14.wgsl b/test/tint/builtins/gen/literal/select/416e14.wgsl
index 32f3026..d98f504 100644
--- a/test/tint/builtins/gen/literal/select/416e14.wgsl
+++ b/test/tint/builtins/gen/literal/select/416e14.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = select(1.0, 1.0, bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_416e14();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_416e14();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_416e14();
 }
diff --git a/test/tint/builtins/gen/literal/select/416e14.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/416e14.wgsl.expected.wgsl
index bfa5d2e..06fe6cf 100644
--- a/test/tint/builtins/gen/literal/select/416e14.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/416e14.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = select(1.0, 1.0, bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_416e14();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_416e14();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_416e14();
 }
diff --git a/test/tint/builtins/gen/literal/select/51b047.wgsl b/test/tint/builtins/gen/literal/select/51b047.wgsl
index c30d299..eddc40e 100644
--- a/test/tint/builtins/gen/literal/select/51b047.wgsl
+++ b/test/tint/builtins/gen/literal/select/51b047.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<u32> = select(vec2<u32>(), vec2<u32>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_51b047();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_51b047();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_51b047();
 }
diff --git a/test/tint/builtins/gen/literal/select/51b047.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/51b047.wgsl.expected.wgsl
index 93097d9..aa9e7d2 100644
--- a/test/tint/builtins/gen/literal/select/51b047.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/51b047.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<u32> = select(vec2<u32>(), vec2<u32>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_51b047();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_51b047();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_51b047();
 }
diff --git a/test/tint/builtins/gen/literal/select/713567.wgsl b/test/tint/builtins/gen/literal/select/713567.wgsl
index 633b85b..1915518 100644
--- a/test/tint/builtins/gen/literal/select/713567.wgsl
+++ b/test/tint/builtins/gen/literal/select/713567.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = select(vec4<f32>(), vec4<f32>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_713567();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_713567();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_713567();
 }
diff --git a/test/tint/builtins/gen/literal/select/713567.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/713567.wgsl.expected.wgsl
index d885a74..74ce8af 100644
--- a/test/tint/builtins/gen/literal/select/713567.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/713567.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = select(vec4<f32>(), vec4<f32>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_713567();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_713567();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_713567();
 }
diff --git a/test/tint/builtins/gen/literal/select/78be5f.wgsl b/test/tint/builtins/gen/literal/select/78be5f.wgsl
index 08ffe22..3385a46 100644
--- a/test/tint/builtins/gen/literal/select/78be5f.wgsl
+++ b/test/tint/builtins/gen/literal/select/78be5f.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = select(vec3<f32>(), vec3<f32>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_78be5f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_78be5f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_78be5f();
 }
diff --git a/test/tint/builtins/gen/literal/select/78be5f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/78be5f.wgsl.expected.wgsl
index 7c77d66..8a6dd23 100644
--- a/test/tint/builtins/gen/literal/select/78be5f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/78be5f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = select(vec3<f32>(), vec3<f32>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_78be5f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_78be5f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_78be5f();
 }
diff --git a/test/tint/builtins/gen/literal/select/80a9a9.wgsl b/test/tint/builtins/gen/literal/select/80a9a9.wgsl
index ce846af..d29e19f 100644
--- a/test/tint/builtins/gen/literal/select/80a9a9.wgsl
+++ b/test/tint/builtins/gen/literal/select/80a9a9.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<bool> = select(vec3<bool>(), vec3<bool>(), vec3<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_80a9a9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_80a9a9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_80a9a9();
 }
diff --git a/test/tint/builtins/gen/literal/select/80a9a9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/80a9a9.wgsl.expected.wgsl
index 1f2b1fd..57b9aa8 100644
--- a/test/tint/builtins/gen/literal/select/80a9a9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/80a9a9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<bool> = select(vec3<bool>(), vec3<bool>(), vec3<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_80a9a9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_80a9a9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_80a9a9();
 }
diff --git a/test/tint/builtins/gen/literal/select/8fa62c.wgsl b/test/tint/builtins/gen/literal/select/8fa62c.wgsl
index 2033877..7d16232 100644
--- a/test/tint/builtins/gen/literal/select/8fa62c.wgsl
+++ b/test/tint/builtins/gen/literal/select/8fa62c.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<i32> = select(vec3<i32>(), vec3<i32>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_8fa62c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_8fa62c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_8fa62c();
 }
diff --git a/test/tint/builtins/gen/literal/select/8fa62c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/8fa62c.wgsl.expected.wgsl
index 431824e..b369a29 100644
--- a/test/tint/builtins/gen/literal/select/8fa62c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/8fa62c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<i32> = select(vec3<i32>(), vec3<i32>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_8fa62c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_8fa62c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_8fa62c();
 }
diff --git a/test/tint/builtins/gen/literal/select/99f883.wgsl b/test/tint/builtins/gen/literal/select/99f883.wgsl
index c501388..4cb49ac 100644
--- a/test/tint/builtins/gen/literal/select/99f883.wgsl
+++ b/test/tint/builtins/gen/literal/select/99f883.wgsl
@@ -28,18 +28,18 @@
   var res: u32 = select(1u, 1u, bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_99f883();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_99f883();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_99f883();
 }
diff --git a/test/tint/builtins/gen/literal/select/99f883.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/99f883.wgsl.expected.wgsl
index 0ceacc2..391c89b 100644
--- a/test/tint/builtins/gen/literal/select/99f883.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/99f883.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : u32 = select(1u, 1u, bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_99f883();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_99f883();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_99f883();
 }
diff --git a/test/tint/builtins/gen/literal/select/a2860e.wgsl b/test/tint/builtins/gen/literal/select/a2860e.wgsl
index 7d284e8..8dd8c6e 100644
--- a/test/tint/builtins/gen/literal/select/a2860e.wgsl
+++ b/test/tint/builtins/gen/literal/select/a2860e.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = select(vec4<i32>(), vec4<i32>(), vec4<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_a2860e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_a2860e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_a2860e();
 }
diff --git a/test/tint/builtins/gen/literal/select/a2860e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/a2860e.wgsl.expected.wgsl
index 0fd2eb4..bb3a6b3 100644
--- a/test/tint/builtins/gen/literal/select/a2860e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/a2860e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = select(vec4<i32>(), vec4<i32>(), vec4<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_a2860e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_a2860e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_a2860e();
 }
diff --git a/test/tint/builtins/gen/literal/select/ab069f.wgsl b/test/tint/builtins/gen/literal/select/ab069f.wgsl
index b806234..014c1b89 100644
--- a/test/tint/builtins/gen/literal/select/ab069f.wgsl
+++ b/test/tint/builtins/gen/literal/select/ab069f.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<i32> = select(vec4<i32>(), vec4<i32>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_ab069f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_ab069f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_ab069f();
 }
diff --git a/test/tint/builtins/gen/literal/select/ab069f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/ab069f.wgsl.expected.wgsl
index ea18846..0749b91 100644
--- a/test/tint/builtins/gen/literal/select/ab069f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/ab069f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<i32> = select(vec4<i32>(), vec4<i32>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_ab069f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_ab069f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_ab069f();
 }
diff --git a/test/tint/builtins/gen/literal/select/b04721.wgsl b/test/tint/builtins/gen/literal/select/b04721.wgsl
index d0b5455..78da8d1 100644
--- a/test/tint/builtins/gen/literal/select/b04721.wgsl
+++ b/test/tint/builtins/gen/literal/select/b04721.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<u32> = select(vec3<u32>(), vec3<u32>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_b04721();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_b04721();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_b04721();
 }
diff --git a/test/tint/builtins/gen/literal/select/b04721.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/b04721.wgsl.expected.wgsl
index 86befd9..6dcdc87 100644
--- a/test/tint/builtins/gen/literal/select/b04721.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/b04721.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<u32> = select(vec3<u32>(), vec3<u32>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_b04721();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_b04721();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_b04721();
 }
diff --git a/test/tint/builtins/gen/literal/select/bb447f.wgsl b/test/tint/builtins/gen/literal/select/bb447f.wgsl
index efaac74..1a98f64 100644
--- a/test/tint/builtins/gen/literal/select/bb447f.wgsl
+++ b/test/tint/builtins/gen/literal/select/bb447f.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<i32> = select(vec2<i32>(), vec2<i32>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_bb447f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_bb447f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_bb447f();
 }
diff --git a/test/tint/builtins/gen/literal/select/bb447f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/bb447f.wgsl.expected.wgsl
index 2ea72e7..ad447ce 100644
--- a/test/tint/builtins/gen/literal/select/bb447f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/bb447f.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<i32> = select(vec2<i32>(), vec2<i32>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_bb447f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_bb447f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_bb447f();
 }
diff --git a/test/tint/builtins/gen/literal/select/bb8aae.wgsl b/test/tint/builtins/gen/literal/select/bb8aae.wgsl
index f728370..412ee94 100644
--- a/test/tint/builtins/gen/literal/select/bb8aae.wgsl
+++ b/test/tint/builtins/gen/literal/select/bb8aae.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = select(vec4<f32>(), vec4<f32>(), vec4<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_bb8aae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_bb8aae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_bb8aae();
 }
diff --git a/test/tint/builtins/gen/literal/select/bb8aae.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/bb8aae.wgsl.expected.wgsl
index f64a61b..862c769 100644
--- a/test/tint/builtins/gen/literal/select/bb8aae.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/bb8aae.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = select(vec4<f32>(), vec4<f32>(), vec4<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_bb8aae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_bb8aae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_bb8aae();
 }
diff --git a/test/tint/builtins/gen/literal/select/bf3d29.wgsl b/test/tint/builtins/gen/literal/select/bf3d29.wgsl
index e841aa4..a1b233f 100644
--- a/test/tint/builtins/gen/literal/select/bf3d29.wgsl
+++ b/test/tint/builtins/gen/literal/select/bf3d29.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = select(vec2<f32>(), vec2<f32>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_bf3d29();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_bf3d29();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_bf3d29();
 }
diff --git a/test/tint/builtins/gen/literal/select/bf3d29.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/bf3d29.wgsl.expected.wgsl
index 87b2f80..7210a86 100644
--- a/test/tint/builtins/gen/literal/select/bf3d29.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/bf3d29.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = select(vec2<f32>(), vec2<f32>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_bf3d29();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_bf3d29();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_bf3d29();
 }
diff --git a/test/tint/builtins/gen/literal/select/c31f9e.wgsl b/test/tint/builtins/gen/literal/select/c31f9e.wgsl
index a4b50a2..6d2ece4 100644
--- a/test/tint/builtins/gen/literal/select/c31f9e.wgsl
+++ b/test/tint/builtins/gen/literal/select/c31f9e.wgsl
@@ -28,18 +28,18 @@
   var res: bool = select(bool(), bool(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_c31f9e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_c31f9e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_c31f9e();
 }
diff --git a/test/tint/builtins/gen/literal/select/c31f9e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/c31f9e.wgsl.expected.wgsl
index 21acae6..c2f9e89 100644
--- a/test/tint/builtins/gen/literal/select/c31f9e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/c31f9e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : bool = select(bool(), bool(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_c31f9e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_c31f9e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_c31f9e();
 }
diff --git a/test/tint/builtins/gen/literal/select/c41bd1.wgsl b/test/tint/builtins/gen/literal/select/c41bd1.wgsl
index 259ac4e..484aecd 100644
--- a/test/tint/builtins/gen/literal/select/c41bd1.wgsl
+++ b/test/tint/builtins/gen/literal/select/c41bd1.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<bool> = select(vec4<bool>(), vec4<bool>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_c41bd1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_c41bd1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_c41bd1();
 }
diff --git a/test/tint/builtins/gen/literal/select/c41bd1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/c41bd1.wgsl.expected.wgsl
index a314f0c..0527d9f 100644
--- a/test/tint/builtins/gen/literal/select/c41bd1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/c41bd1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<bool> = select(vec4<bool>(), vec4<bool>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_c41bd1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_c41bd1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_c41bd1();
 }
diff --git a/test/tint/builtins/gen/literal/select/c4a4ef.wgsl b/test/tint/builtins/gen/literal/select/c4a4ef.wgsl
index 09e1e82..8592125 100644
--- a/test/tint/builtins/gen/literal/select/c4a4ef.wgsl
+++ b/test/tint/builtins/gen/literal/select/c4a4ef.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<u32> = select(vec4<u32>(), vec4<u32>(), vec4<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_c4a4ef();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_c4a4ef();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_c4a4ef();
 }
diff --git a/test/tint/builtins/gen/literal/select/c4a4ef.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/c4a4ef.wgsl.expected.wgsl
index adbcc5d..d02111f 100644
--- a/test/tint/builtins/gen/literal/select/c4a4ef.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/c4a4ef.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<u32> = select(vec4<u32>(), vec4<u32>(), vec4<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_c4a4ef();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_c4a4ef();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_c4a4ef();
 }
diff --git a/test/tint/builtins/gen/literal/select/cb9301.wgsl b/test/tint/builtins/gen/literal/select/cb9301.wgsl
index 6a18667..0c26752 100644
--- a/test/tint/builtins/gen/literal/select/cb9301.wgsl
+++ b/test/tint/builtins/gen/literal/select/cb9301.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<bool> = select(vec2<bool>(), vec2<bool>(), vec2<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_cb9301();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_cb9301();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_cb9301();
 }
diff --git a/test/tint/builtins/gen/literal/select/cb9301.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/cb9301.wgsl.expected.wgsl
index 7c85dad..b925f9c 100644
--- a/test/tint/builtins/gen/literal/select/cb9301.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/cb9301.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<bool> = select(vec2<bool>(), vec2<bool>(), vec2<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_cb9301();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_cb9301();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_cb9301();
 }
diff --git a/test/tint/builtins/gen/literal/select/e3e028.wgsl b/test/tint/builtins/gen/literal/select/e3e028.wgsl
index 60b9de6..7051ad5 100644
--- a/test/tint/builtins/gen/literal/select/e3e028.wgsl
+++ b/test/tint/builtins/gen/literal/select/e3e028.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<bool> = select(vec4<bool>(), vec4<bool>(), vec4<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_e3e028();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_e3e028();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_e3e028();
 }
diff --git a/test/tint/builtins/gen/literal/select/e3e028.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/e3e028.wgsl.expected.wgsl
index 2794266..60bb7ed 100644
--- a/test/tint/builtins/gen/literal/select/e3e028.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/e3e028.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<bool> = select(vec4<bool>(), vec4<bool>(), vec4<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_e3e028();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_e3e028();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_e3e028();
 }
diff --git a/test/tint/builtins/gen/literal/select/ebfea2.wgsl b/test/tint/builtins/gen/literal/select/ebfea2.wgsl
index f67652e..804af39 100644
--- a/test/tint/builtins/gen/literal/select/ebfea2.wgsl
+++ b/test/tint/builtins/gen/literal/select/ebfea2.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = select(vec3<f32>(), vec3<f32>(), vec3<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_ebfea2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_ebfea2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_ebfea2();
 }
diff --git a/test/tint/builtins/gen/literal/select/ebfea2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/ebfea2.wgsl.expected.wgsl
index c181585..fd0315c 100644
--- a/test/tint/builtins/gen/literal/select/ebfea2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/ebfea2.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = select(vec3<f32>(), vec3<f32>(), vec3<bool>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_ebfea2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_ebfea2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_ebfea2();
 }
diff --git a/test/tint/builtins/gen/literal/select/ed8a15.wgsl b/test/tint/builtins/gen/literal/select/ed8a15.wgsl
index f51a5f5..6a33b8a 100644
--- a/test/tint/builtins/gen/literal/select/ed8a15.wgsl
+++ b/test/tint/builtins/gen/literal/select/ed8a15.wgsl
@@ -28,18 +28,18 @@
   var res: i32 = select(1, 1, bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_ed8a15();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_ed8a15();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_ed8a15();
 }
diff --git a/test/tint/builtins/gen/literal/select/ed8a15.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/ed8a15.wgsl.expected.wgsl
index ca4b96e..a097c1f 100644
--- a/test/tint/builtins/gen/literal/select/ed8a15.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/ed8a15.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : i32 = select(1, 1, bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_ed8a15();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_ed8a15();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_ed8a15();
 }
diff --git a/test/tint/builtins/gen/literal/select/fb7e53.wgsl b/test/tint/builtins/gen/literal/select/fb7e53.wgsl
index a0bffa8..18fcedc 100644
--- a/test/tint/builtins/gen/literal/select/fb7e53.wgsl
+++ b/test/tint/builtins/gen/literal/select/fb7e53.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<bool> = select(vec2<bool>(), vec2<bool>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_fb7e53();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_fb7e53();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_fb7e53();
 }
diff --git a/test/tint/builtins/gen/literal/select/fb7e53.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/fb7e53.wgsl.expected.wgsl
index 6c6a287..f39bf36 100644
--- a/test/tint/builtins/gen/literal/select/fb7e53.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/fb7e53.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<bool> = select(vec2<bool>(), vec2<bool>(), bool());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_fb7e53();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_fb7e53();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_fb7e53();
 }
diff --git a/test/tint/builtins/gen/literal/sign/159665.wgsl b/test/tint/builtins/gen/literal/sign/159665.wgsl
index 2c3bd1b..4fb808a 100644
--- a/test/tint/builtins/gen/literal/sign/159665.wgsl
+++ b/test/tint/builtins/gen/literal/sign/159665.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = sign(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_159665();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sign_159665();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sign_159665();
 }
diff --git a/test/tint/builtins/gen/literal/sign/159665.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sign/159665.wgsl.expected.wgsl
index b66072b..4f99fa9 100644
--- a/test/tint/builtins/gen/literal/sign/159665.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sign/159665.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = sign(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_159665();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sign_159665();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sign_159665();
 }
diff --git a/test/tint/builtins/gen/literal/sign/b8f634.wgsl b/test/tint/builtins/gen/literal/sign/b8f634.wgsl
index ae50e74..7a75abc 100644
--- a/test/tint/builtins/gen/literal/sign/b8f634.wgsl
+++ b/test/tint/builtins/gen/literal/sign/b8f634.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = sign(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_b8f634();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sign_b8f634();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sign_b8f634();
 }
diff --git a/test/tint/builtins/gen/literal/sign/b8f634.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sign/b8f634.wgsl.expected.wgsl
index c9238d2..690f072 100644
--- a/test/tint/builtins/gen/literal/sign/b8f634.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sign/b8f634.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = sign(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_b8f634();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sign_b8f634();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sign_b8f634();
 }
diff --git a/test/tint/builtins/gen/literal/sign/d065d8.wgsl b/test/tint/builtins/gen/literal/sign/d065d8.wgsl
index 954aa60..ed052e5 100644
--- a/test/tint/builtins/gen/literal/sign/d065d8.wgsl
+++ b/test/tint/builtins/gen/literal/sign/d065d8.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = sign(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_d065d8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sign_d065d8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sign_d065d8();
 }
diff --git a/test/tint/builtins/gen/literal/sign/d065d8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sign/d065d8.wgsl.expected.wgsl
index 870041f..a7d4c6d 100644
--- a/test/tint/builtins/gen/literal/sign/d065d8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sign/d065d8.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = sign(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_d065d8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sign_d065d8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sign_d065d8();
 }
diff --git a/test/tint/builtins/gen/literal/sign/dd790e.wgsl b/test/tint/builtins/gen/literal/sign/dd790e.wgsl
index 06c50c9..4b967a9 100644
--- a/test/tint/builtins/gen/literal/sign/dd790e.wgsl
+++ b/test/tint/builtins/gen/literal/sign/dd790e.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = sign(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_dd790e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sign_dd790e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sign_dd790e();
 }
diff --git a/test/tint/builtins/gen/literal/sign/dd790e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sign/dd790e.wgsl.expected.wgsl
index d987517..8733a59 100644
--- a/test/tint/builtins/gen/literal/sign/dd790e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sign/dd790e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = sign(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_dd790e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sign_dd790e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sign_dd790e();
 }
diff --git a/test/tint/builtins/gen/literal/sin/01f241.wgsl b/test/tint/builtins/gen/literal/sin/01f241.wgsl
index 967e7c0..17b5798 100644
--- a/test/tint/builtins/gen/literal/sin/01f241.wgsl
+++ b/test/tint/builtins/gen/literal/sin/01f241.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = sin(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_01f241();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sin_01f241();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sin_01f241();
 }
diff --git a/test/tint/builtins/gen/literal/sin/01f241.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sin/01f241.wgsl.expected.wgsl
index 8188006..4acc145 100644
--- a/test/tint/builtins/gen/literal/sin/01f241.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sin/01f241.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = sin(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_01f241();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sin_01f241();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sin_01f241();
 }
diff --git a/test/tint/builtins/gen/literal/sin/4e3979.wgsl b/test/tint/builtins/gen/literal/sin/4e3979.wgsl
index cde754f..25ad471 100644
--- a/test/tint/builtins/gen/literal/sin/4e3979.wgsl
+++ b/test/tint/builtins/gen/literal/sin/4e3979.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = sin(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_4e3979();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sin_4e3979();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sin_4e3979();
 }
diff --git a/test/tint/builtins/gen/literal/sin/4e3979.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sin/4e3979.wgsl.expected.wgsl
index 6d03778..a576da3 100644
--- a/test/tint/builtins/gen/literal/sin/4e3979.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sin/4e3979.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = sin(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_4e3979();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sin_4e3979();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sin_4e3979();
 }
diff --git a/test/tint/builtins/gen/literal/sin/b78c91.wgsl b/test/tint/builtins/gen/literal/sin/b78c91.wgsl
index 7a2120a..50406ea 100644
--- a/test/tint/builtins/gen/literal/sin/b78c91.wgsl
+++ b/test/tint/builtins/gen/literal/sin/b78c91.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = sin(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_b78c91();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sin_b78c91();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sin_b78c91();
 }
diff --git a/test/tint/builtins/gen/literal/sin/b78c91.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sin/b78c91.wgsl.expected.wgsl
index e4a2d42..da7ee81 100644
--- a/test/tint/builtins/gen/literal/sin/b78c91.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sin/b78c91.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = sin(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_b78c91();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sin_b78c91();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sin_b78c91();
 }
diff --git a/test/tint/builtins/gen/literal/sin/fc8bc4.wgsl b/test/tint/builtins/gen/literal/sin/fc8bc4.wgsl
index 0888f2e..1793e70 100644
--- a/test/tint/builtins/gen/literal/sin/fc8bc4.wgsl
+++ b/test/tint/builtins/gen/literal/sin/fc8bc4.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = sin(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_fc8bc4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sin_fc8bc4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sin_fc8bc4();
 }
diff --git a/test/tint/builtins/gen/literal/sin/fc8bc4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sin/fc8bc4.wgsl.expected.wgsl
index 30e0918..fb6ec72 100644
--- a/test/tint/builtins/gen/literal/sin/fc8bc4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sin/fc8bc4.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = sin(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_fc8bc4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sin_fc8bc4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sin_fc8bc4();
 }
diff --git a/test/tint/builtins/gen/literal/sinh/445e33.wgsl b/test/tint/builtins/gen/literal/sinh/445e33.wgsl
index 6ddbf4f..43e57de 100644
--- a/test/tint/builtins/gen/literal/sinh/445e33.wgsl
+++ b/test/tint/builtins/gen/literal/sinh/445e33.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = sinh(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_445e33();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sinh_445e33();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sinh_445e33();
 }
diff --git a/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.wgsl
index 4eac92e..f5ef008 100644
--- a/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = sinh(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_445e33();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sinh_445e33();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sinh_445e33();
 }
diff --git a/test/tint/builtins/gen/literal/sinh/7bb598.wgsl b/test/tint/builtins/gen/literal/sinh/7bb598.wgsl
index e45c7f0..05c502d 100644
--- a/test/tint/builtins/gen/literal/sinh/7bb598.wgsl
+++ b/test/tint/builtins/gen/literal/sinh/7bb598.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = sinh(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_7bb598();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sinh_7bb598();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sinh_7bb598();
 }
diff --git a/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.wgsl
index 8df3fa0..67cc8fd 100644
--- a/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = sinh(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_7bb598();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sinh_7bb598();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sinh_7bb598();
 }
diff --git a/test/tint/builtins/gen/literal/sinh/b9860e.wgsl b/test/tint/builtins/gen/literal/sinh/b9860e.wgsl
index e913cb91..21026cd 100644
--- a/test/tint/builtins/gen/literal/sinh/b9860e.wgsl
+++ b/test/tint/builtins/gen/literal/sinh/b9860e.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = sinh(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_b9860e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sinh_b9860e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sinh_b9860e();
 }
diff --git a/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.wgsl
index b0698d0..014cca3 100644
--- a/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = sinh(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_b9860e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sinh_b9860e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sinh_b9860e();
 }
diff --git a/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl b/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl
index 1ec2a5b..8935110 100644
--- a/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl
+++ b/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = sinh(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_c9a5eb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sinh_c9a5eb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sinh_c9a5eb();
 }
diff --git a/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.wgsl
index 642d72c..c3e1955 100644
--- a/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = sinh(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_c9a5eb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sinh_c9a5eb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sinh_c9a5eb();
 }
diff --git a/test/tint/builtins/gen/literal/smoothstep/392c19.wgsl b/test/tint/builtins/gen/literal/smoothstep/392c19.wgsl
index 9df76b3..e06dff7 100644
--- a/test/tint/builtins/gen/literal/smoothstep/392c19.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/392c19.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = smoothstep(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothstep_392c19();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothstep_392c19();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothstep_392c19();
 }
diff --git a/test/tint/builtins/gen/literal/smoothstep/392c19.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/smoothstep/392c19.wgsl.expected.wgsl
index 7d1d3ff..f941e24 100644
--- a/test/tint/builtins/gen/literal/smoothstep/392c19.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/392c19.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = smoothstep(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothstep_392c19();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothstep_392c19();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothstep_392c19();
 }
diff --git a/test/tint/builtins/gen/literal/smoothstep/40864c.wgsl b/test/tint/builtins/gen/literal/smoothstep/40864c.wgsl
index 2989f50..b080c20 100644
--- a/test/tint/builtins/gen/literal/smoothstep/40864c.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/40864c.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = smoothstep(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothstep_40864c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothstep_40864c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothstep_40864c();
 }
diff --git a/test/tint/builtins/gen/literal/smoothstep/40864c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/smoothstep/40864c.wgsl.expected.wgsl
index 0d4cd26..ddfe5c9 100644
--- a/test/tint/builtins/gen/literal/smoothstep/40864c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/40864c.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = smoothstep(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothstep_40864c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothstep_40864c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothstep_40864c();
 }
diff --git a/test/tint/builtins/gen/literal/smoothstep/5f615b.wgsl b/test/tint/builtins/gen/literal/smoothstep/5f615b.wgsl
index 565e625..1460c31 100644
--- a/test/tint/builtins/gen/literal/smoothstep/5f615b.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/5f615b.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = smoothStep(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothStep_5f615b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothStep_5f615b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothStep_5f615b();
 }
diff --git a/test/tint/builtins/gen/literal/smoothstep/5f615b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/smoothstep/5f615b.wgsl.expected.wgsl
index f87d953..a0aff9c 100644
--- a/test/tint/builtins/gen/literal/smoothstep/5f615b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/5f615b.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = smoothStep(vec4<f32>(), vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothStep_5f615b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothStep_5f615b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothStep_5f615b();
 }
diff --git a/test/tint/builtins/gen/literal/smoothstep/658be3.wgsl b/test/tint/builtins/gen/literal/smoothstep/658be3.wgsl
index bd29528..bda858c 100644
--- a/test/tint/builtins/gen/literal/smoothstep/658be3.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/658be3.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = smoothStep(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothStep_658be3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothStep_658be3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothStep_658be3();
 }
diff --git a/test/tint/builtins/gen/literal/smoothstep/658be3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/smoothstep/658be3.wgsl.expected.wgsl
index 62eb3cb..3f4c3cc 100644
--- a/test/tint/builtins/gen/literal/smoothstep/658be3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/658be3.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec3<f32> = smoothStep(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothStep_658be3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothStep_658be3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothStep_658be3();
 }
diff --git a/test/tint/builtins/gen/literal/smoothstep/6c4975.wgsl b/test/tint/builtins/gen/literal/smoothstep/6c4975.wgsl
index 83ae297..d1743e0 100644
--- a/test/tint/builtins/gen/literal/smoothstep/6c4975.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/6c4975.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = smoothstep(1.0, 1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothstep_6c4975();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothstep_6c4975();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothstep_6c4975();
 }
diff --git a/test/tint/builtins/gen/literal/smoothstep/6c4975.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/smoothstep/6c4975.wgsl.expected.wgsl
index 30982a3..dc4c629 100644
--- a/test/tint/builtins/gen/literal/smoothstep/6c4975.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/6c4975.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = smoothstep(1.0, 1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothstep_6c4975();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothstep_6c4975();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothstep_6c4975();
 }
diff --git a/test/tint/builtins/gen/literal/smoothstep/aad1db.wgsl b/test/tint/builtins/gen/literal/smoothstep/aad1db.wgsl
index 8be3f55..379eb14 100644
--- a/test/tint/builtins/gen/literal/smoothstep/aad1db.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/aad1db.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = smoothstep(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothstep_aad1db();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothstep_aad1db();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothstep_aad1db();
 }
diff --git a/test/tint/builtins/gen/literal/smoothstep/aad1db.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/smoothstep/aad1db.wgsl.expected.wgsl
index 0c83439..5ea76a8 100644
--- a/test/tint/builtins/gen/literal/smoothstep/aad1db.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/aad1db.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = smoothstep(vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothstep_aad1db();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothstep_aad1db();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothstep_aad1db();
 }
diff --git a/test/tint/builtins/gen/literal/smoothstep/c11eef.wgsl b/test/tint/builtins/gen/literal/smoothstep/c11eef.wgsl
index 518847a..08b4b69 100644
--- a/test/tint/builtins/gen/literal/smoothstep/c11eef.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/c11eef.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = smoothStep(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothStep_c11eef();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothStep_c11eef();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothStep_c11eef();
 }
diff --git a/test/tint/builtins/gen/literal/smoothstep/c11eef.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/smoothstep/c11eef.wgsl.expected.wgsl
index 0019310..2910009 100644
--- a/test/tint/builtins/gen/literal/smoothstep/c11eef.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/c11eef.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec2<f32> = smoothStep(vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothStep_c11eef();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothStep_c11eef();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothStep_c11eef();
 }
diff --git a/test/tint/builtins/gen/literal/smoothstep/cb0bfb.wgsl b/test/tint/builtins/gen/literal/smoothstep/cb0bfb.wgsl
index a30a304..73e9c74 100644
--- a/test/tint/builtins/gen/literal/smoothstep/cb0bfb.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/cb0bfb.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = smoothStep(1.0, 1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothStep_cb0bfb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothStep_cb0bfb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothStep_cb0bfb();
 }
diff --git a/test/tint/builtins/gen/literal/smoothstep/cb0bfb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/smoothstep/cb0bfb.wgsl.expected.wgsl
index cfa44d3..fa8636a 100644
--- a/test/tint/builtins/gen/literal/smoothstep/cb0bfb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/cb0bfb.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : f32 = smoothStep(1.0, 1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothStep_cb0bfb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothStep_cb0bfb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothStep_cb0bfb();
 }
diff --git a/test/tint/builtins/gen/literal/sqrt/20c74e.wgsl b/test/tint/builtins/gen/literal/sqrt/20c74e.wgsl
index b99db85..780618a 100644
--- a/test/tint/builtins/gen/literal/sqrt/20c74e.wgsl
+++ b/test/tint/builtins/gen/literal/sqrt/20c74e.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = sqrt(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_20c74e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sqrt_20c74e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sqrt_20c74e();
 }
diff --git a/test/tint/builtins/gen/literal/sqrt/20c74e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sqrt/20c74e.wgsl.expected.wgsl
index 3b9fe0a..9edd8a9 100644
--- a/test/tint/builtins/gen/literal/sqrt/20c74e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sqrt/20c74e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = sqrt(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_20c74e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sqrt_20c74e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sqrt_20c74e();
 }
diff --git a/test/tint/builtins/gen/literal/sqrt/8c7024.wgsl b/test/tint/builtins/gen/literal/sqrt/8c7024.wgsl
index 0062069..b89aefc 100644
--- a/test/tint/builtins/gen/literal/sqrt/8c7024.wgsl
+++ b/test/tint/builtins/gen/literal/sqrt/8c7024.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = sqrt(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_8c7024();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sqrt_8c7024();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sqrt_8c7024();
 }
diff --git a/test/tint/builtins/gen/literal/sqrt/8c7024.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sqrt/8c7024.wgsl.expected.wgsl
index 36b4a8b..626d52e 100644
--- a/test/tint/builtins/gen/literal/sqrt/8c7024.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sqrt/8c7024.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = sqrt(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_8c7024();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sqrt_8c7024();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sqrt_8c7024();
 }
diff --git a/test/tint/builtins/gen/literal/sqrt/aa0d7a.wgsl b/test/tint/builtins/gen/literal/sqrt/aa0d7a.wgsl
index d28e561..62dc712 100644
--- a/test/tint/builtins/gen/literal/sqrt/aa0d7a.wgsl
+++ b/test/tint/builtins/gen/literal/sqrt/aa0d7a.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = sqrt(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_aa0d7a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sqrt_aa0d7a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sqrt_aa0d7a();
 }
diff --git a/test/tint/builtins/gen/literal/sqrt/aa0d7a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sqrt/aa0d7a.wgsl.expected.wgsl
index 47ab81a..dfc5c27 100644
--- a/test/tint/builtins/gen/literal/sqrt/aa0d7a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sqrt/aa0d7a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = sqrt(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_aa0d7a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sqrt_aa0d7a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sqrt_aa0d7a();
 }
diff --git a/test/tint/builtins/gen/literal/sqrt/f8c59a.wgsl b/test/tint/builtins/gen/literal/sqrt/f8c59a.wgsl
index 11ea95c..d702a02 100644
--- a/test/tint/builtins/gen/literal/sqrt/f8c59a.wgsl
+++ b/test/tint/builtins/gen/literal/sqrt/f8c59a.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = sqrt(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_f8c59a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sqrt_f8c59a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sqrt_f8c59a();
 }
diff --git a/test/tint/builtins/gen/literal/sqrt/f8c59a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sqrt/f8c59a.wgsl.expected.wgsl
index e12b658..9986b38 100644
--- a/test/tint/builtins/gen/literal/sqrt/f8c59a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sqrt/f8c59a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = sqrt(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_f8c59a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sqrt_f8c59a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sqrt_f8c59a();
 }
diff --git a/test/tint/builtins/gen/literal/step/0b073b.wgsl b/test/tint/builtins/gen/literal/step/0b073b.wgsl
index c143dd8..e7c3bc2 100644
--- a/test/tint/builtins/gen/literal/step/0b073b.wgsl
+++ b/test/tint/builtins/gen/literal/step/0b073b.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = step(1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   step_0b073b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   step_0b073b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   step_0b073b();
 }
diff --git a/test/tint/builtins/gen/literal/step/0b073b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/step/0b073b.wgsl.expected.wgsl
index 36e47dd..bd78183 100644
--- a/test/tint/builtins/gen/literal/step/0b073b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/step/0b073b.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = step(1.0, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   step_0b073b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   step_0b073b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   step_0b073b();
 }
diff --git a/test/tint/builtins/gen/literal/step/19accd.wgsl b/test/tint/builtins/gen/literal/step/19accd.wgsl
index 10741be..c3d2d7b 100644
--- a/test/tint/builtins/gen/literal/step/19accd.wgsl
+++ b/test/tint/builtins/gen/literal/step/19accd.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = step(vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   step_19accd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   step_19accd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   step_19accd();
 }
diff --git a/test/tint/builtins/gen/literal/step/19accd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/step/19accd.wgsl.expected.wgsl
index ce2b50b..5c188e2 100644
--- a/test/tint/builtins/gen/literal/step/19accd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/step/19accd.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = step(vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   step_19accd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   step_19accd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   step_19accd();
 }
diff --git a/test/tint/builtins/gen/literal/step/334303.wgsl b/test/tint/builtins/gen/literal/step/334303.wgsl
index 4643f33..dfa5027 100644
--- a/test/tint/builtins/gen/literal/step/334303.wgsl
+++ b/test/tint/builtins/gen/literal/step/334303.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = step(vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   step_334303();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   step_334303();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   step_334303();
 }
diff --git a/test/tint/builtins/gen/literal/step/334303.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/step/334303.wgsl.expected.wgsl
index e1cb631..75aff10 100644
--- a/test/tint/builtins/gen/literal/step/334303.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/step/334303.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = step(vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   step_334303();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   step_334303();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   step_334303();
 }
diff --git a/test/tint/builtins/gen/literal/step/e2b337.wgsl b/test/tint/builtins/gen/literal/step/e2b337.wgsl
index 41cff04..5b0f2ab 100644
--- a/test/tint/builtins/gen/literal/step/e2b337.wgsl
+++ b/test/tint/builtins/gen/literal/step/e2b337.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = step(vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   step_e2b337();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   step_e2b337();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   step_e2b337();
 }
diff --git a/test/tint/builtins/gen/literal/step/e2b337.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/step/e2b337.wgsl.expected.wgsl
index a6efd86..bbc67ef 100644
--- a/test/tint/builtins/gen/literal/step/e2b337.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/step/e2b337.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = step(vec4<f32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   step_e2b337();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   step_e2b337();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   step_e2b337();
 }
diff --git a/test/tint/builtins/gen/literal/storageBarrier/d87211.wgsl b/test/tint/builtins/gen/literal/storageBarrier/d87211.wgsl
index 5306f6c..875d13f 100644
--- a/test/tint/builtins/gen/literal/storageBarrier/d87211.wgsl
+++ b/test/tint/builtins/gen/literal/storageBarrier/d87211.wgsl
@@ -28,7 +28,7 @@
   storageBarrier();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   storageBarrier_d87211();
 }
diff --git a/test/tint/builtins/gen/literal/storageBarrier/d87211.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/storageBarrier/d87211.wgsl.expected.wgsl
index 4c87708..b929681 100644
--- a/test/tint/builtins/gen/literal/storageBarrier/d87211.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/storageBarrier/d87211.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   storageBarrier();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   storageBarrier_d87211();
 }
diff --git a/test/tint/builtins/gen/literal/tan/244e2a.wgsl b/test/tint/builtins/gen/literal/tan/244e2a.wgsl
index f9920e7..cd9ae11 100644
--- a/test/tint/builtins/gen/literal/tan/244e2a.wgsl
+++ b/test/tint/builtins/gen/literal/tan/244e2a.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = tan(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_244e2a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tan_244e2a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tan_244e2a();
 }
diff --git a/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.wgsl
index 77ac6d8..b8dae28 100644
--- a/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = tan(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_244e2a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tan_244e2a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tan_244e2a();
 }
diff --git a/test/tint/builtins/gen/literal/tan/2f030e.wgsl b/test/tint/builtins/gen/literal/tan/2f030e.wgsl
index 39c06f5..f910b85 100644
--- a/test/tint/builtins/gen/literal/tan/2f030e.wgsl
+++ b/test/tint/builtins/gen/literal/tan/2f030e.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = tan(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_2f030e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tan_2f030e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tan_2f030e();
 }
diff --git a/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.wgsl
index 3c12969..cbca43b 100644
--- a/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = tan(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_2f030e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tan_2f030e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tan_2f030e();
 }
diff --git a/test/tint/builtins/gen/literal/tan/7ea104.wgsl b/test/tint/builtins/gen/literal/tan/7ea104.wgsl
index 4ed0b9b..9a6f1cc 100644
--- a/test/tint/builtins/gen/literal/tan/7ea104.wgsl
+++ b/test/tint/builtins/gen/literal/tan/7ea104.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = tan(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_7ea104();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tan_7ea104();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tan_7ea104();
 }
diff --git a/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.wgsl
index f859e50..a4d7e75 100644
--- a/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = tan(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_7ea104();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tan_7ea104();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tan_7ea104();
 }
diff --git a/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl b/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl
index 3c587aa..80f7f58 100644
--- a/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl
+++ b/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = tan(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_8ce3e9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tan_8ce3e9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tan_8ce3e9();
 }
diff --git a/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.wgsl
index a43d809..879d09b 100644
--- a/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = tan(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_8ce3e9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tan_8ce3e9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tan_8ce3e9();
 }
diff --git a/test/tint/builtins/gen/literal/tanh/5663c5.wgsl b/test/tint/builtins/gen/literal/tanh/5663c5.wgsl
index 3f88d44..3c18367 100644
--- a/test/tint/builtins/gen/literal/tanh/5663c5.wgsl
+++ b/test/tint/builtins/gen/literal/tanh/5663c5.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = tanh(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_5663c5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tanh_5663c5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tanh_5663c5();
 }
diff --git a/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.wgsl
index 717091b..006b94b 100644
--- a/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = tanh(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_5663c5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tanh_5663c5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tanh_5663c5();
 }
diff --git a/test/tint/builtins/gen/literal/tanh/5724b3.wgsl b/test/tint/builtins/gen/literal/tanh/5724b3.wgsl
index 8715b26..1c6f966 100644
--- a/test/tint/builtins/gen/literal/tanh/5724b3.wgsl
+++ b/test/tint/builtins/gen/literal/tanh/5724b3.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = tanh(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_5724b3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tanh_5724b3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tanh_5724b3();
 }
diff --git a/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.wgsl
index 7fbd481..bb8a266 100644
--- a/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = tanh(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_5724b3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tanh_5724b3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tanh_5724b3();
 }
diff --git a/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl b/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl
index 7602a18..8240464 100644
--- a/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl
+++ b/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = tanh(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_9f9fb9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tanh_9f9fb9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tanh_9f9fb9();
 }
diff --git a/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.wgsl
index 20184fd..2473807 100644
--- a/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = tanh(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_9f9fb9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tanh_9f9fb9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tanh_9f9fb9();
 }
diff --git a/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl b/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl
index f83b841..32f4fa3 100644
--- a/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl
+++ b/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = tanh(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_c15fdb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tanh_c15fdb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tanh_c15fdb();
 }
diff --git a/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.wgsl
index fb6e8e7..f6e9df7 100644
--- a/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = tanh(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_c15fdb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tanh_c15fdb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tanh_c15fdb();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/002b2a.wgsl b/test/tint/builtins/gen/literal/textureDimensions/002b2a.wgsl
index b93721f..7d535e3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/002b2a.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/002b2a.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_002b2a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_002b2a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_002b2a();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/002b2a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/002b2a.wgsl.expected.wgsl
index a21a8c0..5f09068 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/002b2a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/002b2a.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_002b2a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_002b2a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_002b2a();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/012b82.wgsl b/test/tint/builtins/gen/literal/textureDimensions/012b82.wgsl
index d011596..4ce156e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/012b82.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/012b82.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_012b82();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_012b82();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_012b82();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/012b82.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/012b82.wgsl.expected.wgsl
index 7ebcab6..216df4f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/012b82.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/012b82.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_012b82();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_012b82();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_012b82();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/08753d.wgsl b/test/tint/builtins/gen/literal/textureDimensions/08753d.wgsl
index 4e071a0..c60871d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/08753d.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/08753d.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_08753d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_08753d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_08753d();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/08753d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/08753d.wgsl.expected.wgsl
index 45dce4b..443a678 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/08753d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/08753d.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_08753d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_08753d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_08753d();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0c4772.wgsl b/test/tint/builtins/gen/literal/textureDimensions/0c4772.wgsl
index 3acce51..c23ca84 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0c4772.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0c4772.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0c4772();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0c4772();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0c4772();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0c4772.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/0c4772.wgsl.expected.wgsl
index dc5fc35..fc2907d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0c4772.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0c4772.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0c4772();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0c4772();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0c4772();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0cce40.wgsl b/test/tint/builtins/gen/literal/textureDimensions/0cce40.wgsl
index 410f924..3c1678b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0cce40.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0cce40.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0cce40();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0cce40();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0cce40();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0cce40.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/0cce40.wgsl.expected.wgsl
index 04b0e24..5193665 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0cce40.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0cce40.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0cce40();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0cce40();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0cce40();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0cf2ff.wgsl b/test/tint/builtins/gen/literal/textureDimensions/0cf2ff.wgsl
index 4ca0928..b19e1dd 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0cf2ff.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0cf2ff.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0cf2ff();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0cf2ff();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0cf2ff();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0cf2ff.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/0cf2ff.wgsl.expected.wgsl
index 36e3e61..a13b916 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0cf2ff.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0cf2ff.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0cf2ff();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0cf2ff();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0cf2ff();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0d8b7e.wgsl b/test/tint/builtins/gen/literal/textureDimensions/0d8b7e.wgsl
index 6927776..d522067 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0d8b7e.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0d8b7e.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0d8b7e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0d8b7e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0d8b7e();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0d8b7e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/0d8b7e.wgsl.expected.wgsl
index b4a1350..2ce14ea 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0d8b7e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0d8b7e.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0d8b7e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0d8b7e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0d8b7e();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0e32ee.wgsl b/test/tint/builtins/gen/literal/textureDimensions/0e32ee.wgsl
index 60d2aa3..f4e9278 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0e32ee.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0e32ee.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0e32ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0e32ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0e32ee();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0e32ee.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/0e32ee.wgsl.expected.wgsl
index 9f0e1d1..c037616 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0e32ee.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0e32ee.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0e32ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0e32ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0e32ee();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0f3c50.wgsl b/test/tint/builtins/gen/literal/textureDimensions/0f3c50.wgsl
index c8010cb..55b704e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0f3c50.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0f3c50.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0f3c50();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0f3c50();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0f3c50();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0f3c50.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/0f3c50.wgsl.expected.wgsl
index 553f57e..45eee36 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0f3c50.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0f3c50.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0f3c50();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0f3c50();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0f3c50();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1191a5.wgsl b/test/tint/builtins/gen/literal/textureDimensions/1191a5.wgsl
index 172d049..b917515 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1191a5.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1191a5.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1191a5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1191a5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1191a5();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1191a5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/1191a5.wgsl.expected.wgsl
index 2131304..c0e1745 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1191a5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1191a5.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1191a5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1191a5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1191a5();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/12c9bb.wgsl b/test/tint/builtins/gen/literal/textureDimensions/12c9bb.wgsl
index 582382e..deca082 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/12c9bb.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/12c9bb.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_12c9bb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_12c9bb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_12c9bb();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/12c9bb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/12c9bb.wgsl.expected.wgsl
index 14d7f89..857ce06 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/12c9bb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/12c9bb.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_12c9bb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_12c9bb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_12c9bb();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/147998.wgsl b/test/tint/builtins/gen/literal/textureDimensions/147998.wgsl
index 17e2e21..1917a88 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/147998.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/147998.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_147998();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_147998();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_147998();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/147998.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/147998.wgsl.expected.wgsl
index 3cd6855..8379507 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/147998.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/147998.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_147998();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_147998();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_147998();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/16036c.wgsl b/test/tint/builtins/gen/literal/textureDimensions/16036c.wgsl
index 84ce998..2107c74 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/16036c.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/16036c.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_16036c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_16036c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_16036c();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/16036c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/16036c.wgsl.expected.wgsl
index 072b71e..5a9c5f3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/16036c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/16036c.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_16036c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_16036c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_16036c();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1b71f0.wgsl b/test/tint/builtins/gen/literal/textureDimensions/1b71f0.wgsl
index 77f345d..4435f68 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1b71f0.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1b71f0.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1b71f0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1b71f0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1b71f0();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1b71f0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/1b71f0.wgsl.expected.wgsl
index 8fedb78..ee928e2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1b71f0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1b71f0.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1b71f0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1b71f0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1b71f0();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1d6c26.wgsl b/test/tint/builtins/gen/literal/textureDimensions/1d6c26.wgsl
index 0b5857d..6b576ba 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1d6c26.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1d6c26.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1d6c26();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1d6c26();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1d6c26();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1d6c26.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/1d6c26.wgsl.expected.wgsl
index 1ca754c..8bb5c22 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1d6c26.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1d6c26.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1d6c26();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1d6c26();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1d6c26();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1e9e39.wgsl b/test/tint/builtins/gen/literal/textureDimensions/1e9e39.wgsl
index c40f9c0..afd80e3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1e9e39.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1e9e39.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1e9e39();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1e9e39();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1e9e39();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1e9e39.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/1e9e39.wgsl.expected.wgsl
index 938b104..efd42ac 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1e9e39.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1e9e39.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1e9e39();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1e9e39();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1e9e39();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1f20c5.wgsl b/test/tint/builtins/gen/literal/textureDimensions/1f20c5.wgsl
index 8301b57..e509ecb 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1f20c5.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1f20c5.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1f20c5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1f20c5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1f20c5();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1f20c5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/1f20c5.wgsl.expected.wgsl
index 2cbde3e..4800bad 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1f20c5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1f20c5.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1f20c5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1f20c5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1f20c5();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/214dd4.wgsl b/test/tint/builtins/gen/literal/textureDimensions/214dd4.wgsl
index e3ac96c..edb3961 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/214dd4.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/214dd4.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_214dd4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_214dd4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_214dd4();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/214dd4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/214dd4.wgsl.expected.wgsl
index a6e1919..8fdb8a3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/214dd4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/214dd4.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_214dd4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_214dd4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_214dd4();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/221f22.wgsl b/test/tint/builtins/gen/literal/textureDimensions/221f22.wgsl
index b2c83dc..b4be074 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/221f22.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/221f22.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_221f22();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_221f22();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_221f22();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/221f22.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/221f22.wgsl.expected.wgsl
index e05c6f5..6956187 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/221f22.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/221f22.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_221f22();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_221f22();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_221f22();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/267788.wgsl b/test/tint/builtins/gen/literal/textureDimensions/267788.wgsl
index 47d7985..7fa7a50 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/267788.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/267788.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_267788();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_267788();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_267788();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/267788.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/267788.wgsl.expected.wgsl
index 99d3c54..c52fe14 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/267788.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/267788.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_267788();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_267788();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_267788();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/26bdfa.wgsl b/test/tint/builtins/gen/literal/textureDimensions/26bdfa.wgsl
index fa58009..3f04cd8 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/26bdfa.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/26bdfa.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_26bdfa();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_26bdfa();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_26bdfa();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/26bdfa.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/26bdfa.wgsl.expected.wgsl
index 5f9267e..29982f7 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/26bdfa.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/26bdfa.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_26bdfa();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_26bdfa();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_26bdfa();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/26ef6c.wgsl b/test/tint/builtins/gen/literal/textureDimensions/26ef6c.wgsl
index ccf3250..cc99396 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/26ef6c.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/26ef6c.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_26ef6c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_26ef6c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_26ef6c();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/26ef6c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/26ef6c.wgsl.expected.wgsl
index 960c66d..c0b495c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/26ef6c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/26ef6c.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_26ef6c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_26ef6c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_26ef6c();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2ad087.wgsl b/test/tint/builtins/gen/literal/textureDimensions/2ad087.wgsl
index 25a8b28..62d94f5 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2ad087.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2ad087.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2ad087();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_2ad087();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2ad087();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2ad087.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/2ad087.wgsl.expected.wgsl
index c2b8327..e965a18 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2ad087.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2ad087.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2ad087();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_2ad087();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2ad087();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2efa05.wgsl b/test/tint/builtins/gen/literal/textureDimensions/2efa05.wgsl
index 313b799..fdc02c4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2efa05.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2efa05.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2efa05();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_2efa05();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2efa05();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2efa05.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/2efa05.wgsl.expected.wgsl
index 0b9afd8..f68fe06 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2efa05.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2efa05.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2efa05();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_2efa05();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2efa05();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2f289f.wgsl b/test/tint/builtins/gen/literal/textureDimensions/2f289f.wgsl
index 63835a1..5fdde6f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2f289f.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2f289f.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2f289f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_2f289f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2f289f();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2f289f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/2f289f.wgsl.expected.wgsl
index 7ffc030..6895807 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2f289f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2f289f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2f289f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_2f289f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2f289f();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2fe1cc.wgsl b/test/tint/builtins/gen/literal/textureDimensions/2fe1cc.wgsl
index 3ac4832..ab17f7f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2fe1cc.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2fe1cc.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2fe1cc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_2fe1cc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2fe1cc();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2fe1cc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/2fe1cc.wgsl.expected.wgsl
index 4b03276..acc6e45 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2fe1cc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2fe1cc.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2fe1cc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_2fe1cc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2fe1cc();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/318ecc.wgsl b/test/tint/builtins/gen/literal/textureDimensions/318ecc.wgsl
index 4563fc8..52ead3c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/318ecc.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/318ecc.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_318ecc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_318ecc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_318ecc();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/318ecc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/318ecc.wgsl.expected.wgsl
index d1c53d4..9a7028c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/318ecc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/318ecc.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_318ecc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_318ecc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_318ecc();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/340d06.wgsl b/test/tint/builtins/gen/literal/textureDimensions/340d06.wgsl
index 801a81e..afb2e3d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/340d06.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/340d06.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_340d06();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_340d06();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_340d06();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/340d06.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/340d06.wgsl.expected.wgsl
index 7ae21b4..99bca2d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/340d06.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/340d06.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_340d06();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_340d06();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_340d06();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/398e30.wgsl b/test/tint/builtins/gen/literal/textureDimensions/398e30.wgsl
index d8a22e3..d5f67d6 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/398e30.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/398e30.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_398e30();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_398e30();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_398e30();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/398e30.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/398e30.wgsl.expected.wgsl
index 457ff70..5deab7d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/398e30.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/398e30.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_398e30();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_398e30();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_398e30();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3a94ea.wgsl b/test/tint/builtins/gen/literal/textureDimensions/3a94ea.wgsl
index d00adb2..9573c5c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3a94ea.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3a94ea.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_3a94ea();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_3a94ea();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_3a94ea();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3a94ea.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/3a94ea.wgsl.expected.wgsl
index 29d9579..c1cebaf 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3a94ea.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3a94ea.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_3a94ea();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_3a94ea();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_3a94ea();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3aca08.wgsl b/test/tint/builtins/gen/literal/textureDimensions/3aca08.wgsl
index 01a56a9..cca374a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3aca08.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3aca08.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_3aca08();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_3aca08();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_3aca08();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3aca08.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/3aca08.wgsl.expected.wgsl
index ba8e34f..1a72665 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3aca08.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3aca08.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_3aca08();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_3aca08();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_3aca08();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3c5ad8.wgsl b/test/tint/builtins/gen/literal/textureDimensions/3c5ad8.wgsl
index 9d72673..a135b33 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3c5ad8.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3c5ad8.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_3c5ad8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_3c5ad8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_3c5ad8();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3c5ad8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/3c5ad8.wgsl.expected.wgsl
index dc42b19..a73139d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3c5ad8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3c5ad8.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_3c5ad8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_3c5ad8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_3c5ad8();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4152a6.wgsl b/test/tint/builtins/gen/literal/textureDimensions/4152a6.wgsl
index 52a3a07..19e2dee 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4152a6.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4152a6.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_4152a6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_4152a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_4152a6();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4152a6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/4152a6.wgsl.expected.wgsl
index f9ec8d5..67521ab 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4152a6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4152a6.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_4152a6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_4152a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_4152a6();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/423f99.wgsl b/test/tint/builtins/gen/literal/textureDimensions/423f99.wgsl
index 3fd9d7b..8183ccf 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/423f99.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/423f99.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_423f99();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_423f99();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_423f99();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/423f99.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/423f99.wgsl.expected.wgsl
index b84b033..0ef4f77 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/423f99.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/423f99.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_423f99();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_423f99();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_423f99();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4267ee.wgsl b/test/tint/builtins/gen/literal/textureDimensions/4267ee.wgsl
index 1c849b8..1e230b6 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4267ee.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4267ee.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_4267ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_4267ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_4267ee();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4267ee.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/4267ee.wgsl.expected.wgsl
index 909269f..a634268 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4267ee.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4267ee.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_4267ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_4267ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_4267ee();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/42d4e6.wgsl b/test/tint/builtins/gen/literal/textureDimensions/42d4e6.wgsl
index ac087c5..7c00b9e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/42d4e6.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/42d4e6.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_42d4e6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_42d4e6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_42d4e6();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/42d4e6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/42d4e6.wgsl.expected.wgsl
index bc98490..ab0376b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/42d4e6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/42d4e6.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_42d4e6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_42d4e6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_42d4e6();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/48cb89.wgsl b/test/tint/builtins/gen/literal/textureDimensions/48cb89.wgsl
index c278ed8..5ec1e8c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/48cb89.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/48cb89.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_48cb89();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_48cb89();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_48cb89();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/48cb89.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/48cb89.wgsl.expected.wgsl
index cdc0578..2e4ee35 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/48cb89.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/48cb89.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_48cb89();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_48cb89();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_48cb89();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/49d274.wgsl b/test/tint/builtins/gen/literal/textureDimensions/49d274.wgsl
index dd85926..e93d693 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/49d274.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/49d274.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_49d274();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_49d274();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_49d274();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/49d274.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/49d274.wgsl.expected.wgsl
index 00ebf36..060af23 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/49d274.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/49d274.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_49d274();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_49d274();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_49d274();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4df9a8.wgsl b/test/tint/builtins/gen/literal/textureDimensions/4df9a8.wgsl
index c95dd96..59e4637 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4df9a8.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4df9a8.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_4df9a8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_4df9a8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_4df9a8();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4df9a8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/4df9a8.wgsl.expected.wgsl
index 4078aa2..b771310 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4df9a8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4df9a8.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_4df9a8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_4df9a8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_4df9a8();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/50a9ee.wgsl b/test/tint/builtins/gen/literal/textureDimensions/50a9ee.wgsl
index 92c35ab..339a943 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/50a9ee.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/50a9ee.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_50a9ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_50a9ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_50a9ee();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/50a9ee.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/50a9ee.wgsl.expected.wgsl
index f6e1440..271c378 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/50a9ee.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/50a9ee.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_50a9ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_50a9ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_50a9ee();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/52045c.wgsl b/test/tint/builtins/gen/literal/textureDimensions/52045c.wgsl
index 5a7c5ff..7d087c4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/52045c.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/52045c.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_52045c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_52045c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_52045c();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/52045c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/52045c.wgsl.expected.wgsl
index 9df7fc2..9966536 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/52045c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/52045c.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_52045c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_52045c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_52045c();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/55b23e.wgsl b/test/tint/builtins/gen/literal/textureDimensions/55b23e.wgsl
index 06255e8..886c1e9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/55b23e.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/55b23e.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_55b23e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_55b23e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_55b23e();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/55b23e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/55b23e.wgsl.expected.wgsl
index 32b929c..430da3c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/55b23e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/55b23e.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_55b23e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_55b23e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_55b23e();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/579629.wgsl b/test/tint/builtins/gen/literal/textureDimensions/579629.wgsl
index 963d480..af4fd85 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/579629.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/579629.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_579629();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_579629();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_579629();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/579629.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/579629.wgsl.expected.wgsl
index e157439..1e1d6d7 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/579629.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/579629.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_579629();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_579629();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_579629();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/57da0b.wgsl b/test/tint/builtins/gen/literal/textureDimensions/57da0b.wgsl
index 5b7a168..fe79b2a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/57da0b.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/57da0b.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_57da0b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_57da0b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_57da0b();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/57da0b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/57da0b.wgsl.expected.wgsl
index f05ee1c..b599184 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/57da0b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/57da0b.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_57da0b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_57da0b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_57da0b();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/57e28f.wgsl b/test/tint/builtins/gen/literal/textureDimensions/57e28f.wgsl
index 0b9d680..fc88a27 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/57e28f.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/57e28f.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_57e28f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_57e28f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_57e28f();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/57e28f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/57e28f.wgsl.expected.wgsl
index 3d25747..e0b854e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/57e28f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/57e28f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_57e28f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_57e28f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_57e28f();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/58a515.wgsl b/test/tint/builtins/gen/literal/textureDimensions/58a515.wgsl
index df0e9cd..979cefb 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/58a515.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/58a515.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_58a515();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_58a515();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_58a515();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/58a515.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/58a515.wgsl.expected.wgsl
index c395b92..21bad72 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/58a515.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/58a515.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_58a515();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_58a515();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_58a515();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/5985f3.wgsl b/test/tint/builtins/gen/literal/textureDimensions/5985f3.wgsl
index dffa849..77a0707 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/5985f3.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/5985f3.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_5985f3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_5985f3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_5985f3();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/5985f3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/5985f3.wgsl.expected.wgsl
index cc73d08..8449517 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/5985f3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/5985f3.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_5985f3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_5985f3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_5985f3();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/5caa5e.wgsl b/test/tint/builtins/gen/literal/textureDimensions/5caa5e.wgsl
index 5582c6e..abe7868 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/5caa5e.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/5caa5e.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_5caa5e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_5caa5e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_5caa5e();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/5caa5e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/5caa5e.wgsl.expected.wgsl
index 3f83443..ac87720 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/5caa5e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/5caa5e.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_5caa5e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_5caa5e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_5caa5e();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/5e295d.wgsl b/test/tint/builtins/gen/literal/textureDimensions/5e295d.wgsl
index b855d3c..8397006 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/5e295d.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/5e295d.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_5e295d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_5e295d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_5e295d();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/5e295d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/5e295d.wgsl.expected.wgsl
index d8bceb6..ae8f763 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/5e295d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/5e295d.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_5e295d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_5e295d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_5e295d();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/60bf54.wgsl b/test/tint/builtins/gen/literal/textureDimensions/60bf54.wgsl
index df274c5..9c5ff16 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/60bf54.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/60bf54.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_60bf54();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_60bf54();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_60bf54();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/60bf54.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/60bf54.wgsl.expected.wgsl
index f9347de..fbc7cd7 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/60bf54.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/60bf54.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_60bf54();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_60bf54();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_60bf54();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/63f3cf.wgsl b/test/tint/builtins/gen/literal/textureDimensions/63f3cf.wgsl
index ae013ed..77eff3f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/63f3cf.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/63f3cf.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_63f3cf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_63f3cf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_63f3cf();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/63f3cf.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/63f3cf.wgsl.expected.wgsl
index 43e5f15..3e0ebfd 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/63f3cf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/63f3cf.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_63f3cf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_63f3cf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_63f3cf();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/68105c.wgsl b/test/tint/builtins/gen/literal/textureDimensions/68105c.wgsl
index ddac6b6..2c5f5dc 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/68105c.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/68105c.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_68105c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_68105c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_68105c();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/68105c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/68105c.wgsl.expected.wgsl
index 853c631..19c4929 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/68105c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/68105c.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_68105c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_68105c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_68105c();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/686ef2.wgsl b/test/tint/builtins/gen/literal/textureDimensions/686ef2.wgsl
index c85334c..29e8d58 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/686ef2.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/686ef2.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_686ef2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_686ef2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_686ef2();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/686ef2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/686ef2.wgsl.expected.wgsl
index ba69786..0ae5065 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/686ef2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/686ef2.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_686ef2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_686ef2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_686ef2();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/6adac6.wgsl b/test/tint/builtins/gen/literal/textureDimensions/6adac6.wgsl
index d079cf9..c63ff5f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/6adac6.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/6adac6.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_6adac6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_6adac6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_6adac6();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/6adac6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/6adac6.wgsl.expected.wgsl
index c48c479..8ab67f0 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/6adac6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/6adac6.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_6adac6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_6adac6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_6adac6();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/6ec1b4.wgsl b/test/tint/builtins/gen/literal/textureDimensions/6ec1b4.wgsl
index eaab191..5038764 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/6ec1b4.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/6ec1b4.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_6ec1b4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_6ec1b4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_6ec1b4();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/6ec1b4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/6ec1b4.wgsl.expected.wgsl
index 6cc7cc1..7573c55 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/6ec1b4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/6ec1b4.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_6ec1b4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_6ec1b4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_6ec1b4();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/6f0d79.wgsl b/test/tint/builtins/gen/literal/textureDimensions/6f0d79.wgsl
index 05ff750..4b03051 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/6f0d79.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/6f0d79.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_6f0d79();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_6f0d79();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_6f0d79();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/6f0d79.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/6f0d79.wgsl.expected.wgsl
index 7b1f32c..b055eea 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/6f0d79.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/6f0d79.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_6f0d79();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_6f0d79();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_6f0d79();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/702c53.wgsl b/test/tint/builtins/gen/literal/textureDimensions/702c53.wgsl
index 0673cb4..b445950 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/702c53.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/702c53.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_702c53();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_702c53();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_702c53();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/702c53.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/702c53.wgsl.expected.wgsl
index 27d3074..093625d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/702c53.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/702c53.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_702c53();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_702c53();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_702c53();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/72e5d6.wgsl b/test/tint/builtins/gen/literal/textureDimensions/72e5d6.wgsl
index 997406c..e5e7bf4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/72e5d6.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/72e5d6.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_72e5d6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_72e5d6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_72e5d6();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/72e5d6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/72e5d6.wgsl.expected.wgsl
index b00bd04..fd4b217 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/72e5d6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/72e5d6.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_72e5d6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_72e5d6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_72e5d6();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/79df87.wgsl b/test/tint/builtins/gen/literal/textureDimensions/79df87.wgsl
index 1b70f6a..8da7f10 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/79df87.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/79df87.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_79df87();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_79df87();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_79df87();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/79df87.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/79df87.wgsl.expected.wgsl
index 63b16bf..e45225d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/79df87.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/79df87.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_79df87();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_79df87();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_79df87();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/7bf826.wgsl b/test/tint/builtins/gen/literal/textureDimensions/7bf826.wgsl
index 6297e5a..172a553 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/7bf826.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/7bf826.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_7bf826();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_7bf826();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_7bf826();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/7bf826.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/7bf826.wgsl.expected.wgsl
index 50ddae7..4953ba3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/7bf826.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/7bf826.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_7bf826();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_7bf826();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_7bf826();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/7f5c2e.wgsl b/test/tint/builtins/gen/literal/textureDimensions/7f5c2e.wgsl
index 97ce4dd..d754ab7 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/7f5c2e.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/7f5c2e.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_7f5c2e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_7f5c2e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_7f5c2e();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/7f5c2e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/7f5c2e.wgsl.expected.wgsl
index 0eecf68..85bbc4b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/7f5c2e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/7f5c2e.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_7f5c2e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_7f5c2e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_7f5c2e();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8028f3.wgsl b/test/tint/builtins/gen/literal/textureDimensions/8028f3.wgsl
index b478fa2..1e26bcc 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8028f3.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8028f3.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8028f3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8028f3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8028f3();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8028f3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/8028f3.wgsl.expected.wgsl
index 7ad5727..fbc1979 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8028f3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8028f3.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8028f3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8028f3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8028f3();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/811679.wgsl b/test/tint/builtins/gen/literal/textureDimensions/811679.wgsl
index 7d7722d..da8d8cb 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/811679.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/811679.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_811679();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_811679();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_811679();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/811679.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/811679.wgsl.expected.wgsl
index 154cdde..494c1da 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/811679.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/811679.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_811679();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_811679();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_811679();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/820596.wgsl b/test/tint/builtins/gen/literal/textureDimensions/820596.wgsl
index 8ec3269..c4803cf 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/820596.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/820596.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_820596();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_820596();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_820596();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/820596.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/820596.wgsl.expected.wgsl
index 93106d5..dc1379f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/820596.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/820596.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_820596();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_820596();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_820596();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/83ee5a.wgsl b/test/tint/builtins/gen/literal/textureDimensions/83ee5a.wgsl
index bdd0b53..162289b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/83ee5a.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/83ee5a.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_83ee5a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_83ee5a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_83ee5a();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/83ee5a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/83ee5a.wgsl.expected.wgsl
index 3481e3c..0d0d5ea 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/83ee5a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/83ee5a.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_83ee5a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_83ee5a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_83ee5a();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/85d556.wgsl b/test/tint/builtins/gen/literal/textureDimensions/85d556.wgsl
index 18cf513..0266b91 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/85d556.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/85d556.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_85d556();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_85d556();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_85d556();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/85d556.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/85d556.wgsl.expected.wgsl
index 5045441..6364772 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/85d556.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/85d556.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_85d556();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_85d556();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_85d556();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/88ad17.wgsl b/test/tint/builtins/gen/literal/textureDimensions/88ad17.wgsl
index 88f43f8..d359da5 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/88ad17.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/88ad17.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_88ad17();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_88ad17();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_88ad17();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/88ad17.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/88ad17.wgsl.expected.wgsl
index 85f6381..d2873d7 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/88ad17.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/88ad17.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_88ad17();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_88ad17();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_88ad17();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8aa4c4.wgsl b/test/tint/builtins/gen/literal/textureDimensions/8aa4c4.wgsl
index 4468f26..fde91a0 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8aa4c4.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8aa4c4.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8aa4c4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8aa4c4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8aa4c4();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8aa4c4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/8aa4c4.wgsl.expected.wgsl
index 3a59eb6..840105b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8aa4c4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8aa4c4.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8aa4c4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8aa4c4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8aa4c4();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8deb5e.wgsl b/test/tint/builtins/gen/literal/textureDimensions/8deb5e.wgsl
index de87126..a31d313 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8deb5e.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8deb5e.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8deb5e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8deb5e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8deb5e();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8deb5e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/8deb5e.wgsl.expected.wgsl
index 1f088c3..c3e10c7 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8deb5e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8deb5e.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8deb5e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8deb5e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8deb5e();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8f20bf.wgsl b/test/tint/builtins/gen/literal/textureDimensions/8f20bf.wgsl
index ba50596..d4b6347 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8f20bf.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8f20bf.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8f20bf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8f20bf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8f20bf();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8f20bf.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/8f20bf.wgsl.expected.wgsl
index e299daf..2d3dcb0 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8f20bf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8f20bf.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8f20bf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8f20bf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8f20bf();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8fca0f.wgsl b/test/tint/builtins/gen/literal/textureDimensions/8fca0f.wgsl
index ca949de..feea2a4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8fca0f.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8fca0f.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8fca0f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8fca0f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8fca0f();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8fca0f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/8fca0f.wgsl.expected.wgsl
index 4599b2e..6ef7d1b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8fca0f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8fca0f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8fca0f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8fca0f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8fca0f();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/90340b.wgsl b/test/tint/builtins/gen/literal/textureDimensions/90340b.wgsl
index 4acb1f6..d169f40 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/90340b.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/90340b.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_90340b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_90340b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_90340b();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/90340b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/90340b.wgsl.expected.wgsl
index 2addbf1..c70e0d3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/90340b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/90340b.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_90340b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_90340b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_90340b();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9042ab.wgsl b/test/tint/builtins/gen/literal/textureDimensions/9042ab.wgsl
index 6365cba..c148d88 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9042ab.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9042ab.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9042ab();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9042ab();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9042ab();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9042ab.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/9042ab.wgsl.expected.wgsl
index a2d8666..1602fd8 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9042ab.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9042ab.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9042ab();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9042ab();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9042ab();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9393b0.wgsl b/test/tint/builtins/gen/literal/textureDimensions/9393b0.wgsl
index 3247df5..0cb51cd 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9393b0.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9393b0.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9393b0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9393b0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9393b0();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9393b0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/9393b0.wgsl.expected.wgsl
index caacfdc..fd3f78e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9393b0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9393b0.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9393b0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9393b0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9393b0();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/939fdb.wgsl b/test/tint/builtins/gen/literal/textureDimensions/939fdb.wgsl
index 9852d37..eb7dc6a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/939fdb.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/939fdb.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_939fdb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_939fdb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_939fdb();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/939fdb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/939fdb.wgsl.expected.wgsl
index 12cc535..eda2bcb 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/939fdb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/939fdb.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_939fdb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_939fdb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_939fdb();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/962dcd.wgsl b/test/tint/builtins/gen/literal/textureDimensions/962dcd.wgsl
index fddb828..14738c7 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/962dcd.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/962dcd.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_962dcd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_962dcd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_962dcd();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/962dcd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/962dcd.wgsl.expected.wgsl
index 8c1d256..bd3ca7a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/962dcd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/962dcd.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_962dcd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_962dcd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_962dcd();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9abfe5.wgsl b/test/tint/builtins/gen/literal/textureDimensions/9abfe5.wgsl
index 4fea70c..20c87c3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9abfe5.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9abfe5.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9abfe5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9abfe5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9abfe5();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9abfe5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/9abfe5.wgsl.expected.wgsl
index fd97994..5845daa 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9abfe5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9abfe5.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9abfe5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9abfe5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9abfe5();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9c9c57.wgsl b/test/tint/builtins/gen/literal/textureDimensions/9c9c57.wgsl
index 93cee59..4e3f36c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9c9c57.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9c9c57.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9c9c57();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9c9c57();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9c9c57();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9c9c57.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/9c9c57.wgsl.expected.wgsl
index ff8d321..89d6463 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9c9c57.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9c9c57.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9c9c57();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9c9c57();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9c9c57();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9da9e2.wgsl b/test/tint/builtins/gen/literal/textureDimensions/9da9e2.wgsl
index 05e9f02..66a2234 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9da9e2.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9da9e2.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9da9e2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9da9e2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9da9e2();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9da9e2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/9da9e2.wgsl.expected.wgsl
index 3e1f941..73cfaf1 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9da9e2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9da9e2.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9da9e2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9da9e2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9da9e2();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9eb8d8.wgsl b/test/tint/builtins/gen/literal/textureDimensions/9eb8d8.wgsl
index 8a3f461..8ab8840 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9eb8d8.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9eb8d8.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9eb8d8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9eb8d8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9eb8d8();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9eb8d8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/9eb8d8.wgsl.expected.wgsl
index 58bc54f..fc40eab 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9eb8d8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9eb8d8.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9eb8d8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9eb8d8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9eb8d8();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9f8e46.wgsl b/test/tint/builtins/gen/literal/textureDimensions/9f8e46.wgsl
index c2caccf..4de2592 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9f8e46.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9f8e46.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9f8e46();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9f8e46();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9f8e46();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9f8e46.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/9f8e46.wgsl.expected.wgsl
index df7b1a7..3d3ef83 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9f8e46.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9f8e46.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9f8e46();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9f8e46();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9f8e46();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a01845.wgsl b/test/tint/builtins/gen/literal/textureDimensions/a01845.wgsl
index 96e2e3e..c4f8bfe 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a01845.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a01845.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a01845();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_a01845();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a01845();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a01845.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/a01845.wgsl.expected.wgsl
index 9f7a0da..bf501d9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a01845.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a01845.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a01845();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_a01845();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a01845();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a7d565.wgsl b/test/tint/builtins/gen/literal/textureDimensions/a7d565.wgsl
index 2559f77..4629e87 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a7d565.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a7d565.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a7d565();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_a7d565();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a7d565();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a7d565.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/a7d565.wgsl.expected.wgsl
index 4cd2c97..76183ec 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a7d565.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a7d565.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a7d565();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_a7d565();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a7d565();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a863f2.wgsl b/test/tint/builtins/gen/literal/textureDimensions/a863f2.wgsl
index d88716e..7d1329f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a863f2.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a863f2.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a863f2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_a863f2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a863f2();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a863f2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/a863f2.wgsl.expected.wgsl
index 257be4e..d3e7e38 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a863f2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a863f2.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a863f2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_a863f2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a863f2();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a9c9c1.wgsl b/test/tint/builtins/gen/literal/textureDimensions/a9c9c1.wgsl
index dfc5978..a709d07 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a9c9c1.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a9c9c1.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a9c9c1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_a9c9c1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a9c9c1();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a9c9c1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/a9c9c1.wgsl.expected.wgsl
index e4125c9..376cdbd 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a9c9c1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a9c9c1.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a9c9c1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_a9c9c1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a9c9c1();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b0e16d.wgsl b/test/tint/builtins/gen/literal/textureDimensions/b0e16d.wgsl
index 98b443a..e8fd837 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b0e16d.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b0e16d.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b0e16d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_b0e16d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b0e16d();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b0e16d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/b0e16d.wgsl.expected.wgsl
index 1bd9327..5808c31 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b0e16d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b0e16d.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b0e16d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_b0e16d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b0e16d();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b3c954.wgsl b/test/tint/builtins/gen/literal/textureDimensions/b3c954.wgsl
index 2fb0e3d..5486e5a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b3c954.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b3c954.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b3c954();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_b3c954();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b3c954();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b3c954.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/b3c954.wgsl.expected.wgsl
index de3b872..8c36407 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b3c954.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b3c954.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b3c954();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_b3c954();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b3c954();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b3e407.wgsl b/test/tint/builtins/gen/literal/textureDimensions/b3e407.wgsl
index 47ae776..c74572b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b3e407.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b3e407.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b3e407();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_b3e407();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b3e407();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b3e407.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/b3e407.wgsl.expected.wgsl
index 8ebb58e..19da447 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b3e407.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b3e407.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b3e407();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_b3e407();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b3e407();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b91240.wgsl b/test/tint/builtins/gen/literal/textureDimensions/b91240.wgsl
index df6cccb..984437e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b91240.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b91240.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b91240();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_b91240();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b91240();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b91240.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/b91240.wgsl.expected.wgsl
index 105338f..7c88173 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b91240.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b91240.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b91240();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_b91240();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b91240();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/ba1481.wgsl b/test/tint/builtins/gen/literal/textureDimensions/ba1481.wgsl
index 1cb0abe..0469176 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/ba1481.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/ba1481.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_ba1481();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_ba1481();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_ba1481();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/ba1481.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/ba1481.wgsl.expected.wgsl
index 0bcf4af..cbc8837 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/ba1481.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/ba1481.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_ba1481();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_ba1481();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_ba1481();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/bb3dde.wgsl b/test/tint/builtins/gen/literal/textureDimensions/bb3dde.wgsl
index fec2488..0e971f8 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/bb3dde.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/bb3dde.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_bb3dde();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_bb3dde();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_bb3dde();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/bb3dde.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/bb3dde.wgsl.expected.wgsl
index 005cae6..bd224fb 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/bb3dde.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/bb3dde.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_bb3dde();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_bb3dde();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_bb3dde();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c30e75.wgsl b/test/tint/builtins/gen/literal/textureDimensions/c30e75.wgsl
index c5afaf3..582a405 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c30e75.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c30e75.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_c30e75();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_c30e75();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_c30e75();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c30e75.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/c30e75.wgsl.expected.wgsl
index ecf60b5..121b2c3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c30e75.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c30e75.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_c30e75();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_c30e75();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_c30e75();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c7943d.wgsl b/test/tint/builtins/gen/literal/textureDimensions/c7943d.wgsl
index 892ea87..240e244 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c7943d.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c7943d.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_c7943d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_c7943d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_c7943d();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c7943d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/c7943d.wgsl.expected.wgsl
index d664f33..0d589b5 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c7943d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c7943d.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_c7943d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_c7943d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_c7943d();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cc968c.wgsl b/test/tint/builtins/gen/literal/textureDimensions/cc968c.wgsl
index 42f777f..7745787 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cc968c.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cc968c.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cc968c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cc968c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cc968c();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cc968c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/cc968c.wgsl.expected.wgsl
index 8198585..8caceed 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cc968c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cc968c.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cc968c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cc968c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cc968c();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cccc8f.wgsl b/test/tint/builtins/gen/literal/textureDimensions/cccc8f.wgsl
index b320e91..5b21d75 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cccc8f.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cccc8f.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cccc8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cccc8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cccc8f();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cccc8f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/cccc8f.wgsl.expected.wgsl
index a4d44f0..19570ad 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cccc8f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cccc8f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cccc8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cccc8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cccc8f();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cd76a7.wgsl b/test/tint/builtins/gen/literal/textureDimensions/cd76a7.wgsl
index 8959a17..3044d70 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cd76a7.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cd76a7.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cd76a7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cd76a7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cd76a7();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cd76a7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/cd76a7.wgsl.expected.wgsl
index 139070f..fa3b1a9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cd76a7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cd76a7.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cd76a7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cd76a7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cd76a7();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cdf473.wgsl b/test/tint/builtins/gen/literal/textureDimensions/cdf473.wgsl
index 3eb0f09..f7f5485 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cdf473.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cdf473.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cdf473();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cdf473();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cdf473();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cdf473.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/cdf473.wgsl.expected.wgsl
index 31373c0..a675dad 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cdf473.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cdf473.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cdf473();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cdf473();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cdf473();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cec841.wgsl b/test/tint/builtins/gen/literal/textureDimensions/cec841.wgsl
index abd76b1..471ec9c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cec841.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cec841.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cec841();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cec841();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cec841();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cec841.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/cec841.wgsl.expected.wgsl
index d1667a0..7a92b37 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cec841.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cec841.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cec841();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cec841();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cec841();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cf7e43.wgsl b/test/tint/builtins/gen/literal/textureDimensions/cf7e43.wgsl
index 8faa148..31ebad2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cf7e43.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cf7e43.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cf7e43();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cf7e43();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cf7e43();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cf7e43.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/cf7e43.wgsl.expected.wgsl
index fd5550b..38c9845 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cf7e43.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cf7e43.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cf7e43();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cf7e43();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cf7e43();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d125bc.wgsl b/test/tint/builtins/gen/literal/textureDimensions/d125bc.wgsl
index 62a607f..38cc6f9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d125bc.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d125bc.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_d125bc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_d125bc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_d125bc();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d125bc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/d125bc.wgsl.expected.wgsl
index e8b2c56..21f8b05 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d125bc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d125bc.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_d125bc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_d125bc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_d125bc();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d83c45.wgsl b/test/tint/builtins/gen/literal/textureDimensions/d83c45.wgsl
index e9bf089..10aa43d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d83c45.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d83c45.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_d83c45();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_d83c45();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_d83c45();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d83c45.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/d83c45.wgsl.expected.wgsl
index 4134f65..2de7e46 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d83c45.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d83c45.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_d83c45();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_d83c45();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_d83c45();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/daf7c0.wgsl b/test/tint/builtins/gen/literal/textureDimensions/daf7c0.wgsl
index 9d66ada..c1f3feb 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/daf7c0.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/daf7c0.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_daf7c0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_daf7c0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_daf7c0();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/daf7c0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/daf7c0.wgsl.expected.wgsl
index 6d2fbeb..cf81583 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/daf7c0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/daf7c0.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_daf7c0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_daf7c0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_daf7c0();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/dc2dd0.wgsl b/test/tint/builtins/gen/literal/textureDimensions/dc2dd0.wgsl
index dd28eb4..f560a93 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/dc2dd0.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/dc2dd0.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_dc2dd0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_dc2dd0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_dc2dd0();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/dc2dd0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/dc2dd0.wgsl.expected.wgsl
index 5151ae9..53eaf8f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/dc2dd0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/dc2dd0.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_dc2dd0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_dc2dd0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_dc2dd0();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e927be.wgsl b/test/tint/builtins/gen/literal/textureDimensions/e927be.wgsl
index e711cdd..532ab9b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e927be.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e927be.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_e927be();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_e927be();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_e927be();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e927be.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/e927be.wgsl.expected.wgsl
index 637bad6..1c420a1 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e927be.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e927be.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_e927be();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_e927be();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_e927be();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e9e96c.wgsl b/test/tint/builtins/gen/literal/textureDimensions/e9e96c.wgsl
index 41b9f1e..27ba50a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e9e96c.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e9e96c.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_e9e96c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_e9e96c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_e9e96c();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e9e96c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/e9e96c.wgsl.expected.wgsl
index 0f84fac..4c37479 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e9e96c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e9e96c.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_e9e96c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_e9e96c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_e9e96c();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/ef5b89.wgsl b/test/tint/builtins/gen/literal/textureDimensions/ef5b89.wgsl
index b533d38..f7625ec 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/ef5b89.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/ef5b89.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_ef5b89();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_ef5b89();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_ef5b89();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/ef5b89.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/ef5b89.wgsl.expected.wgsl
index f758962..32a0325 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/ef5b89.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/ef5b89.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_ef5b89();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_ef5b89();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_ef5b89();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/efc8a4.wgsl b/test/tint/builtins/gen/literal/textureDimensions/efc8a4.wgsl
index f93caa2..9590107 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/efc8a4.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/efc8a4.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_efc8a4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_efc8a4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_efc8a4();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/efc8a4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/efc8a4.wgsl.expected.wgsl
index ba6f1db..c19268b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/efc8a4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/efc8a4.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_efc8a4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_efc8a4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_efc8a4();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f60bdb.wgsl b/test/tint/builtins/gen/literal/textureDimensions/f60bdb.wgsl
index 167f39a..21d5f90 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f60bdb.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f60bdb.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_f60bdb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_f60bdb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_f60bdb();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f60bdb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/f60bdb.wgsl.expected.wgsl
index 04d2455..f22008d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f60bdb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f60bdb.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_f60bdb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_f60bdb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_f60bdb();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f7145b.wgsl b/test/tint/builtins/gen/literal/textureDimensions/f7145b.wgsl
index 55ed1c7..5c06059 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f7145b.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f7145b.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_f7145b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_f7145b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_f7145b();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f7145b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/f7145b.wgsl.expected.wgsl
index dd3335d..8066448 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f7145b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f7145b.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_f7145b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_f7145b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_f7145b();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f931c7.wgsl b/test/tint/builtins/gen/literal/textureDimensions/f931c7.wgsl
index 85c0fab..a10010e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f931c7.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f931c7.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_f931c7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_f931c7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_f931c7();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f931c7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/f931c7.wgsl.expected.wgsl
index 14de15a..041ed4c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f931c7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f931c7.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_f931c7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_f931c7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_f931c7();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/fa9859.wgsl b/test/tint/builtins/gen/literal/textureDimensions/fa9859.wgsl
index 206c54e..2992b65 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/fa9859.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/fa9859.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_fa9859();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_fa9859();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_fa9859();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/fa9859.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/fa9859.wgsl.expected.wgsl
index 58b2bd0..3acbf7d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/fa9859.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/fa9859.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_fa9859();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_fa9859();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_fa9859();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/fb5670.wgsl b/test/tint/builtins/gen/literal/textureDimensions/fb5670.wgsl
index fcfb9cf..fd06d1e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/fb5670.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/fb5670.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_fb5670();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_fb5670();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_fb5670();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/fb5670.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/fb5670.wgsl.expected.wgsl
index 79fcdb8..199f355 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/fb5670.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/fb5670.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_fb5670();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_fb5670();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_fb5670();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/fcac78.wgsl b/test/tint/builtins/gen/literal/textureDimensions/fcac78.wgsl
index 7e7c4d8..e7b1dbb 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/fcac78.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/fcac78.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_fcac78();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_fcac78();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_fcac78();
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/fcac78.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureDimensions/fcac78.wgsl.expected.wgsl
index bd243ab..3e13671 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/fcac78.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/fcac78.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_fcac78();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_fcac78();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_fcac78();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/10c554.wgsl b/test/tint/builtins/gen/literal/textureGather/10c554.wgsl
index 4f52509..44209ec 100644
--- a/test/tint/builtins/gen/literal/textureGather/10c554.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/10c554.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureGather(arg_0, arg_1, vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_10c554();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_10c554();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_10c554();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/10c554.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/10c554.wgsl.expected.wgsl
index 71d449e..a4a17cb 100644
--- a/test/tint/builtins/gen/literal/textureGather/10c554.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/10c554.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureGather(arg_0, arg_1, vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_10c554();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_10c554();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_10c554();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/1f7f6b.wgsl b/test/tint/builtins/gen/literal/textureGather/1f7f6b.wgsl
index fe62634..d8f9429 100644
--- a/test/tint/builtins/gen/literal/textureGather/1f7f6b.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/1f7f6b.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_1f7f6b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_1f7f6b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_1f7f6b();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/1f7f6b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/1f7f6b.wgsl.expected.wgsl
index 23089f4..0c466e9 100644
--- a/test/tint/builtins/gen/literal/textureGather/1f7f6b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/1f7f6b.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_1f7f6b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_1f7f6b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_1f7f6b();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/22e930.wgsl b/test/tint/builtins/gen/literal/textureGather/22e930.wgsl
index 55b623f..f6f0e5c 100644
--- a/test/tint/builtins/gen/literal/textureGather/22e930.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/22e930.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_22e930();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_22e930();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_22e930();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/22e930.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/22e930.wgsl.expected.wgsl
index 59aa3dd..c06ac61 100644
--- a/test/tint/builtins/gen/literal/textureGather/22e930.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/22e930.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_22e930();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_22e930();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_22e930();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/2cc066.wgsl b/test/tint/builtins/gen/literal/textureGather/2cc066.wgsl
index 0e87293..2d30eb0 100644
--- a/test/tint/builtins/gen/literal/textureGather/2cc066.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/2cc066.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_2cc066();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_2cc066();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_2cc066();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/2cc066.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/2cc066.wgsl.expected.wgsl
index 777505a..277e487 100644
--- a/test/tint/builtins/gen/literal/textureGather/2cc066.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/2cc066.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_2cc066();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_2cc066();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_2cc066();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/2e0ed5.wgsl b/test/tint/builtins/gen/literal/textureGather/2e0ed5.wgsl
index 93786c4..42c28f2 100644
--- a/test/tint/builtins/gen/literal/textureGather/2e0ed5.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/2e0ed5.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_2e0ed5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_2e0ed5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_2e0ed5();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/2e0ed5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/2e0ed5.wgsl.expected.wgsl
index f3b60b8..4b2a82c 100644
--- a/test/tint/builtins/gen/literal/textureGather/2e0ed5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/2e0ed5.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_2e0ed5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_2e0ed5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_2e0ed5();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/32c4e8.wgsl b/test/tint/builtins/gen/literal/textureGather/32c4e8.wgsl
index 8abb587..e3117ee 100644
--- a/test/tint/builtins/gen/literal/textureGather/32c4e8.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/32c4e8.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureGather(1, arg_1, arg_2, vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_32c4e8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_32c4e8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_32c4e8();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/32c4e8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/32c4e8.wgsl.expected.wgsl
index 8c6ed67..5ad9ed8 100644
--- a/test/tint/builtins/gen/literal/textureGather/32c4e8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/32c4e8.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureGather(1, arg_1, arg_2, vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_32c4e8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_32c4e8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_32c4e8();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/3b32cc.wgsl b/test/tint/builtins/gen/literal/textureGather/3b32cc.wgsl
index 34d7c30..d840ac0 100644
--- a/test/tint/builtins/gen/literal/textureGather/3b32cc.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/3b32cc.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<u32> = textureGather(1, arg_1, arg_2, vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_3b32cc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_3b32cc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_3b32cc();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/3b32cc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/3b32cc.wgsl.expected.wgsl
index f10092e..fd49b2b 100644
--- a/test/tint/builtins/gen/literal/textureGather/3b32cc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/3b32cc.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<u32> = textureGather(1, arg_1, arg_2, vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_3b32cc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_3b32cc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_3b32cc();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/43025d.wgsl b/test/tint/builtins/gen/literal/textureGather/43025d.wgsl
index ec5a0b0..dbf29c0 100644
--- a/test/tint/builtins/gen/literal/textureGather/43025d.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/43025d.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureGather(arg_0, arg_1, vec3<f32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_43025d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_43025d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_43025d();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/43025d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/43025d.wgsl.expected.wgsl
index f94fa45..d5ef2d4 100644
--- a/test/tint/builtins/gen/literal/textureGather/43025d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/43025d.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureGather(arg_0, arg_1, vec3<f32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_43025d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_43025d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_43025d();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/49b07f.wgsl b/test/tint/builtins/gen/literal/textureGather/49b07f.wgsl
index c223294..53b2c9e 100644
--- a/test/tint/builtins/gen/literal/textureGather/49b07f.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/49b07f.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_49b07f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_49b07f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_49b07f();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/49b07f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/49b07f.wgsl.expected.wgsl
index c6cb144..5d5523f 100644
--- a/test/tint/builtins/gen/literal/textureGather/49b07f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/49b07f.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_49b07f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_49b07f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_49b07f();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/4b8103.wgsl b/test/tint/builtins/gen/literal/textureGather/4b8103.wgsl
index 055e196..2586ffa 100644
--- a/test/tint/builtins/gen/literal/textureGather/4b8103.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/4b8103.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_4b8103();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_4b8103();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_4b8103();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/4b8103.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/4b8103.wgsl.expected.wgsl
index 94d2c7e..4081701 100644
--- a/test/tint/builtins/gen/literal/textureGather/4b8103.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/4b8103.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_4b8103();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_4b8103();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_4b8103();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/5266da.wgsl b/test/tint/builtins/gen/literal/textureGather/5266da.wgsl
index e05113f..2b2f398 100644
--- a/test/tint/builtins/gen/literal/textureGather/5266da.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/5266da.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_5266da();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_5266da();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_5266da();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/5266da.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/5266da.wgsl.expected.wgsl
index 246b047..d065736 100644
--- a/test/tint/builtins/gen/literal/textureGather/5266da.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/5266da.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_5266da();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_5266da();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_5266da();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/5ba85f.wgsl b/test/tint/builtins/gen/literal/textureGather/5ba85f.wgsl
index 8ee08a1..7c78dab 100644
--- a/test/tint/builtins/gen/literal/textureGather/5ba85f.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/5ba85f.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<i32> = textureGather(1, arg_1, arg_2, vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_5ba85f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_5ba85f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_5ba85f();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/5ba85f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/5ba85f.wgsl.expected.wgsl
index 02ad6aa..97174e6 100644
--- a/test/tint/builtins/gen/literal/textureGather/5ba85f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/5ba85f.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<i32> = textureGather(1, arg_1, arg_2, vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_5ba85f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_5ba85f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_5ba85f();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/5bd491.wgsl b/test/tint/builtins/gen/literal/textureGather/5bd491.wgsl
index 10038d6..7ee9eaf 100644
--- a/test/tint/builtins/gen/literal/textureGather/5bd491.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/5bd491.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_5bd491();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_5bd491();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_5bd491();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/5bd491.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/5bd491.wgsl.expected.wgsl
index a9cc884..b1c71cd 100644
--- a/test/tint/builtins/gen/literal/textureGather/5bd491.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/5bd491.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_5bd491();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_5bd491();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_5bd491();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl b/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl
index 5ebea88..da37f5e 100644
--- a/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureGather(1, arg_1, arg_2, vec3<f32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_751f8a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_751f8a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_751f8a();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl.expected.wgsl
index f59c76c..cd5081f 100644
--- a/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureGather(1, arg_1, arg_2, vec3<f32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_751f8a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_751f8a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_751f8a();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/7c3828.wgsl b/test/tint/builtins/gen/literal/textureGather/7c3828.wgsl
index 0eb843a..4793ded 100644
--- a/test/tint/builtins/gen/literal/textureGather/7c3828.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/7c3828.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_7c3828();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_7c3828();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_7c3828();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/7c3828.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/7c3828.wgsl.expected.wgsl
index 14e3334..2d624d2 100644
--- a/test/tint/builtins/gen/literal/textureGather/7c3828.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/7c3828.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_7c3828();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_7c3828();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_7c3828();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/8b754c.wgsl b/test/tint/builtins/gen/literal/textureGather/8b754c.wgsl
index 6a6f2d6..6351c95 100644
--- a/test/tint/builtins/gen/literal/textureGather/8b754c.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/8b754c.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_8b754c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_8b754c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_8b754c();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/8b754c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/8b754c.wgsl.expected.wgsl
index 4b10cfb..a2e4ee3 100644
--- a/test/tint/builtins/gen/literal/textureGather/8b754c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/8b754c.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_8b754c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_8b754c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_8b754c();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/9a6358.wgsl b/test/tint/builtins/gen/literal/textureGather/9a6358.wgsl
index d8d2bc5..f3285cf 100644
--- a/test/tint/builtins/gen/literal/textureGather/9a6358.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/9a6358.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_9a6358();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_9a6358();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_9a6358();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/9a6358.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/9a6358.wgsl.expected.wgsl
index 984ff98..415aa2c 100644
--- a/test/tint/builtins/gen/literal/textureGather/9a6358.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/9a6358.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_9a6358();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_9a6358();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_9a6358();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/af55b3.wgsl b/test/tint/builtins/gen/literal/textureGather/af55b3.wgsl
index 6d8f007..efd1e9d 100644
--- a/test/tint/builtins/gen/literal/textureGather/af55b3.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/af55b3.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_af55b3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_af55b3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_af55b3();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/af55b3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/af55b3.wgsl.expected.wgsl
index fb4d43f..c45f294 100644
--- a/test/tint/builtins/gen/literal/textureGather/af55b3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/af55b3.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureGather(1, arg_1, arg_2, vec2<f32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_af55b3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_af55b3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_af55b3();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/bb3ac5.wgsl b/test/tint/builtins/gen/literal/textureGather/bb3ac5.wgsl
index 0217549..22e61f4 100644
--- a/test/tint/builtins/gen/literal/textureGather/bb3ac5.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/bb3ac5.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_bb3ac5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_bb3ac5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_bb3ac5();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/bb3ac5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/bb3ac5.wgsl.expected.wgsl
index b7b8732..d0ad843 100644
--- a/test/tint/builtins/gen/literal/textureGather/bb3ac5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/bb3ac5.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_bb3ac5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_bb3ac5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_bb3ac5();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl b/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl
index 6908c00..d8124ac 100644
--- a/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<i32> = textureGather(1, arg_1, arg_2, vec3<f32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_c0640c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_c0640c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_c0640c();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl.expected.wgsl
index 7ec8f4e..df93f13 100644
--- a/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<i32> = textureGather(1, arg_1, arg_2, vec3<f32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_c0640c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_c0640c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_c0640c();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/d1f187.wgsl b/test/tint/builtins/gen/literal/textureGather/d1f187.wgsl
index eb50d20..f3de993 100644
--- a/test/tint/builtins/gen/literal/textureGather/d1f187.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/d1f187.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_d1f187();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_d1f187();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_d1f187();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/d1f187.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/d1f187.wgsl.expected.wgsl
index e7dcb99..0c906a6 100644
--- a/test/tint/builtins/gen/literal/textureGather/d1f187.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/d1f187.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<u32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_d1f187();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_d1f187();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_d1f187();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/d90605.wgsl b/test/tint/builtins/gen/literal/textureGather/d90605.wgsl
index 337a626..80c196c 100644
--- a/test/tint/builtins/gen/literal/textureGather/d90605.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/d90605.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>(), 1, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_d90605();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_d90605();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_d90605();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/d90605.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/d90605.wgsl.expected.wgsl
index c88f42c..f61c0dc 100644
--- a/test/tint/builtins/gen/literal/textureGather/d90605.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/d90605.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureGather(arg_0, arg_1, vec2<f32>(), 1, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_d90605();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_d90605();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_d90605();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/e9d390.wgsl b/test/tint/builtins/gen/literal/textureGather/e9d390.wgsl
index d01ae42..f7333ec 100644
--- a/test/tint/builtins/gen/literal/textureGather/e9d390.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/e9d390.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_e9d390();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_e9d390();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_e9d390();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/e9d390.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/e9d390.wgsl.expected.wgsl
index bbfe7c5..72ada2e 100644
--- a/test/tint/builtins/gen/literal/textureGather/e9d390.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/e9d390.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<i32> = textureGather(1, arg_1, arg_2, vec2<f32>(), 1, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_e9d390();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_e9d390();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_e9d390();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl b/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl
index 170ca51..0c60629 100644
--- a/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<u32> = textureGather(1, arg_1, arg_2, vec3<f32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_f2c6e3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_f2c6e3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_f2c6e3();
 }
diff --git a/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl.expected.wgsl
index 2f4a223..5b13511 100644
--- a/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<u32> = textureGather(1, arg_1, arg_2, vec3<f32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_f2c6e3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_f2c6e3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_f2c6e3();
 }
diff --git a/test/tint/builtins/gen/literal/textureGatherCompare/182fd4.wgsl b/test/tint/builtins/gen/literal/textureGatherCompare/182fd4.wgsl
index 306361a..412c0b2 100644
--- a/test/tint/builtins/gen/literal/textureGatherCompare/182fd4.wgsl
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/182fd4.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_182fd4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_182fd4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_182fd4();
 }
diff --git a/test/tint/builtins/gen/literal/textureGatherCompare/182fd4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGatherCompare/182fd4.wgsl.expected.wgsl
index 3a4d029..8388126 100644
--- a/test/tint/builtins/gen/literal/textureGatherCompare/182fd4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/182fd4.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_182fd4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_182fd4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_182fd4();
 }
diff --git a/test/tint/builtins/gen/literal/textureGatherCompare/313add.wgsl b/test/tint/builtins/gen/literal/textureGatherCompare/313add.wgsl
index bbe2710..a322c95 100644
--- a/test/tint/builtins/gen/literal/textureGatherCompare/313add.wgsl
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/313add.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_313add();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_313add();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_313add();
 }
diff --git a/test/tint/builtins/gen/literal/textureGatherCompare/313add.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGatherCompare/313add.wgsl.expected.wgsl
index 9260823..f3e2ed6 100644
--- a/test/tint/builtins/gen/literal/textureGatherCompare/313add.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/313add.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_313add();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_313add();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_313add();
 }
diff --git a/test/tint/builtins/gen/literal/textureGatherCompare/60d2d1.wgsl b/test/tint/builtins/gen/literal/textureGatherCompare/60d2d1.wgsl
index 55833fd..610c16b 100644
--- a/test/tint/builtins/gen/literal/textureGatherCompare/60d2d1.wgsl
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/60d2d1.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_60d2d1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_60d2d1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_60d2d1();
 }
diff --git a/test/tint/builtins/gen/literal/textureGatherCompare/60d2d1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGatherCompare/60d2d1.wgsl.expected.wgsl
index e22b1fc..820c611 100644
--- a/test/tint/builtins/gen/literal/textureGatherCompare/60d2d1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/60d2d1.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_60d2d1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_60d2d1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_60d2d1();
 }
diff --git a/test/tint/builtins/gen/literal/textureGatherCompare/6d9352.wgsl b/test/tint/builtins/gen/literal/textureGatherCompare/6d9352.wgsl
index 56b963b..328834c 100644
--- a/test/tint/builtins/gen/literal/textureGatherCompare/6d9352.wgsl
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/6d9352.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_6d9352();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_6d9352();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_6d9352();
 }
diff --git a/test/tint/builtins/gen/literal/textureGatherCompare/6d9352.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGatherCompare/6d9352.wgsl.expected.wgsl
index 6fc40ce..790e1a8 100644
--- a/test/tint/builtins/gen/literal/textureGatherCompare/6d9352.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/6d9352.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_6d9352();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_6d9352();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_6d9352();
 }
diff --git a/test/tint/builtins/gen/literal/textureGatherCompare/783e65.wgsl b/test/tint/builtins/gen/literal/textureGatherCompare/783e65.wgsl
index c78b794..0e2dd62 100644
--- a/test/tint/builtins/gen/literal/textureGatherCompare/783e65.wgsl
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/783e65.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_783e65();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_783e65();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_783e65();
 }
diff --git a/test/tint/builtins/gen/literal/textureGatherCompare/783e65.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGatherCompare/783e65.wgsl.expected.wgsl
index 9800261..bcb1a7f 100644
--- a/test/tint/builtins/gen/literal/textureGatherCompare/783e65.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/783e65.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_783e65();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_783e65();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_783e65();
 }
diff --git a/test/tint/builtins/gen/literal/textureGatherCompare/f585cc.wgsl b/test/tint/builtins/gen/literal/textureGatherCompare/f585cc.wgsl
index 65b554a..137d813 100644
--- a/test/tint/builtins/gen/literal/textureGatherCompare/f585cc.wgsl
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/f585cc.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_f585cc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_f585cc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_f585cc();
 }
diff --git a/test/tint/builtins/gen/literal/textureGatherCompare/f585cc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureGatherCompare/f585cc.wgsl.expected.wgsl
index 699022a..44ba827 100644
--- a/test/tint/builtins/gen/literal/textureGatherCompare/f585cc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/f585cc.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_f585cc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_f585cc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_f585cc();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/19cf87.wgsl b/test/tint/builtins/gen/literal/textureLoad/19cf87.wgsl
index ed06a24..64e0379 100644
--- a/test/tint/builtins/gen/literal/textureLoad/19cf87.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/19cf87.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_19cf87();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_19cf87();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_19cf87();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/19cf87.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureLoad/19cf87.wgsl.expected.wgsl
index 886136a2..06ee45e 100644
--- a/test/tint/builtins/gen/literal/textureLoad/19cf87.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/19cf87.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : f32 = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_19cf87();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_19cf87();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_19cf87();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/1b8588.wgsl b/test/tint/builtins/gen/literal/textureLoad/1b8588.wgsl
index 0118959..5968cab 100644
--- a/test/tint/builtins/gen/literal/textureLoad/1b8588.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/1b8588.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<u32> = textureLoad(arg_0, 1, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_1b8588();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_1b8588();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_1b8588();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/1b8588.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureLoad/1b8588.wgsl.expected.wgsl
index 07481f8..3201267 100644
--- a/test/tint/builtins/gen/literal/textureLoad/1b8588.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/1b8588.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<u32> = textureLoad(arg_0, 1, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_1b8588();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_1b8588();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_1b8588();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/1f2016.wgsl b/test/tint/builtins/gen/literal/textureLoad/1f2016.wgsl
index edf3989..321e5c2 100644
--- a/test/tint/builtins/gen/literal/textureLoad/1f2016.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/1f2016.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = textureLoad(arg_0, vec3<i32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_1f2016();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_1f2016();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_1f2016();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/1f2016.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureLoad/1f2016.wgsl.expected.wgsl
index 910f641..f0f6e74 100644
--- a/test/tint/builtins/gen/literal/textureLoad/1f2016.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/1f2016.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<f32> = textureLoad(arg_0, vec3<i32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_1f2016();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_1f2016();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_1f2016();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/484344.wgsl b/test/tint/builtins/gen/literal/textureLoad/484344.wgsl
index 08234e1..7a8d3aa 100644
--- a/test/tint/builtins/gen/literal/textureLoad/484344.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/484344.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_484344();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_484344();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_484344();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/484344.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureLoad/484344.wgsl.expected.wgsl
index e87d195..af40141 100644
--- a/test/tint/builtins/gen/literal/textureLoad/484344.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/484344.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<f32> = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_484344();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_484344();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_484344();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/4fd803.wgsl b/test/tint/builtins/gen/literal/textureLoad/4fd803.wgsl
index 3aebc0e..1b62df9 100644
--- a/test/tint/builtins/gen/literal/textureLoad/4fd803.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/4fd803.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<i32> = textureLoad(arg_0, vec3<i32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_4fd803();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_4fd803();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_4fd803();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/4fd803.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureLoad/4fd803.wgsl.expected.wgsl
index c4f10d6..36d495a 100644
--- a/test/tint/builtins/gen/literal/textureLoad/4fd803.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/4fd803.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<i32> = textureLoad(arg_0, vec3<i32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_4fd803();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_4fd803();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_4fd803();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/5a2f9d.wgsl b/test/tint/builtins/gen/literal/textureLoad/5a2f9d.wgsl
index c30b067..50d0a61 100644
--- a/test/tint/builtins/gen/literal/textureLoad/5a2f9d.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/5a2f9d.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<i32> = textureLoad(arg_0, 1, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_5a2f9d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_5a2f9d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_5a2f9d();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/5a2f9d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureLoad/5a2f9d.wgsl.expected.wgsl
index 3e02059..13f88e8 100644
--- a/test/tint/builtins/gen/literal/textureLoad/5a2f9d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/5a2f9d.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<i32> = textureLoad(arg_0, 1, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_5a2f9d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_5a2f9d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_5a2f9d();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/6154d4.wgsl b/test/tint/builtins/gen/literal/textureLoad/6154d4.wgsl
index 7a5acec..446390c 100644
--- a/test/tint/builtins/gen/literal/textureLoad/6154d4.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/6154d4.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<u32> = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_6154d4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_6154d4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_6154d4();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/6154d4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureLoad/6154d4.wgsl.expected.wgsl
index 811bfc6..9119dcb 100644
--- a/test/tint/builtins/gen/literal/textureLoad/6154d4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/6154d4.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<u32> = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_6154d4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_6154d4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_6154d4();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/6273b1.wgsl b/test/tint/builtins/gen/literal/textureLoad/6273b1.wgsl
index 28389f1..6aa657a 100644
--- a/test/tint/builtins/gen/literal/textureLoad/6273b1.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/6273b1.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = textureLoad(arg_0, vec2<i32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_6273b1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_6273b1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_6273b1();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/6273b1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureLoad/6273b1.wgsl.expected.wgsl
index ec3f25b..349248b 100644
--- a/test/tint/builtins/gen/literal/textureLoad/6273b1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/6273b1.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : f32 = textureLoad(arg_0, vec2<i32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_6273b1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_6273b1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_6273b1();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/79e697.wgsl b/test/tint/builtins/gen/literal/textureLoad/79e697.wgsl
index a6340f6..59d7f37 100644
--- a/test/tint/builtins/gen/literal/textureLoad/79e697.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/79e697.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<i32> = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_79e697();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_79e697();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_79e697();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/79e697.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureLoad/79e697.wgsl.expected.wgsl
index 3e26917..6274eda 100644
--- a/test/tint/builtins/gen/literal/textureLoad/79e697.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/79e697.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<i32> = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_79e697();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_79e697();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_79e697();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/7c90e5.wgsl b/test/tint/builtins/gen/literal/textureLoad/7c90e5.wgsl
index 5399bc0..beff360 100644
--- a/test/tint/builtins/gen/literal/textureLoad/7c90e5.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/7c90e5.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<u32> = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_7c90e5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_7c90e5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_7c90e5();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/7c90e5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureLoad/7c90e5.wgsl.expected.wgsl
index 3308f0f..e400b6f 100644
--- a/test/tint/builtins/gen/literal/textureLoad/7c90e5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/7c90e5.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<u32> = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_7c90e5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_7c90e5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_7c90e5();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/81c381.wgsl b/test/tint/builtins/gen/literal/textureLoad/81c381.wgsl
index 14e9fce..63a2123 100644
--- a/test/tint/builtins/gen/literal/textureLoad/81c381.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/81c381.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = textureLoad(arg_0, 1, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_81c381();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_81c381();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_81c381();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/81c381.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureLoad/81c381.wgsl.expected.wgsl
index 7671a38..34d306b 100644
--- a/test/tint/builtins/gen/literal/textureLoad/81c381.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/81c381.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<f32> = textureLoad(arg_0, 1, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_81c381();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_81c381();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_81c381();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/87be85.wgsl b/test/tint/builtins/gen/literal/textureLoad/87be85.wgsl
index 576da29..00558cc 100644
--- a/test/tint/builtins/gen/literal/textureLoad/87be85.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/87be85.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_87be85();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_87be85();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_87be85();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/87be85.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureLoad/87be85.wgsl.expected.wgsl
index febe014..a5a1096 100644
--- a/test/tint/builtins/gen/literal/textureLoad/87be85.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/87be85.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<f32> = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_87be85();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_87be85();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_87be85();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl
index f1b9767..fb29892 100644
--- a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = textureLoad(arg_0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_8acf41();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_8acf41();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_8acf41();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.wgsl
index a25ef5f..9539b70 100644
--- a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<f32> = textureLoad(arg_0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_8acf41();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_8acf41();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_8acf41();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/9b2667.wgsl b/test/tint/builtins/gen/literal/textureLoad/9b2667.wgsl
index decb783..7e002b8 100644
--- a/test/tint/builtins/gen/literal/textureLoad/9b2667.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/9b2667.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_9b2667();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_9b2667();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_9b2667();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/9b2667.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureLoad/9b2667.wgsl.expected.wgsl
index 5d857d0..3cf30ad 100644
--- a/test/tint/builtins/gen/literal/textureLoad/9b2667.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/9b2667.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : f32 = textureLoad(arg_0, vec2<i32>(), 1, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_9b2667();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_9b2667();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_9b2667();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/a583c9.wgsl b/test/tint/builtins/gen/literal/textureLoad/a583c9.wgsl
index 951d9f3..9d1c761 100644
--- a/test/tint/builtins/gen/literal/textureLoad/a583c9.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/a583c9.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = textureLoad(arg_0, vec2<i32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_a583c9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_a583c9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_a583c9();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/a583c9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureLoad/a583c9.wgsl.expected.wgsl
index 1b4fb0f..d0a3f71 100644
--- a/test/tint/builtins/gen/literal/textureLoad/a583c9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/a583c9.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<f32> = textureLoad(arg_0, vec2<i32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_a583c9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_a583c9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_a583c9();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/a9a9f5.wgsl b/test/tint/builtins/gen/literal/textureLoad/a9a9f5.wgsl
index 5def05c..e2410ea 100644
--- a/test/tint/builtins/gen/literal/textureLoad/a9a9f5.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/a9a9f5.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<u32> = textureLoad(arg_0, vec3<i32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_a9a9f5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_a9a9f5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_a9a9f5();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/a9a9f5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureLoad/a9a9f5.wgsl.expected.wgsl
index ac36fdc..4fd66d1 100644
--- a/test/tint/builtins/gen/literal/textureLoad/a9a9f5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/a9a9f5.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<u32> = textureLoad(arg_0, vec3<i32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_a9a9f5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_a9a9f5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_a9a9f5();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/c2a480.wgsl b/test/tint/builtins/gen/literal/textureLoad/c2a480.wgsl
index 2155704..b5ec652 100644
--- a/test/tint/builtins/gen/literal/textureLoad/c2a480.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/c2a480.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<i32> = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_c2a480();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_c2a480();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_c2a480();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/c2a480.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureLoad/c2a480.wgsl.expected.wgsl
index ce9e2c7..21cd367 100644
--- a/test/tint/builtins/gen/literal/textureLoad/c2a480.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/c2a480.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<i32> = textureLoad(arg_0, vec2<i32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_c2a480();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_c2a480();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_c2a480();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/c378ee.wgsl b/test/tint/builtins/gen/literal/textureLoad/c378ee.wgsl
index 39b5713..565b7cb 100644
--- a/test/tint/builtins/gen/literal/textureLoad/c378ee.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/c378ee.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<u32> = textureLoad(arg_0, vec2<i32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_c378ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_c378ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_c378ee();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/c378ee.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureLoad/c378ee.wgsl.expected.wgsl
index d47f756..1620def 100644
--- a/test/tint/builtins/gen/literal/textureLoad/c378ee.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/c378ee.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<u32> = textureLoad(arg_0, vec2<i32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_c378ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_c378ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_c378ee();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/e3d2cc.wgsl b/test/tint/builtins/gen/literal/textureLoad/e3d2cc.wgsl
index 219a31a..4486cf8 100644
--- a/test/tint/builtins/gen/literal/textureLoad/e3d2cc.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/e3d2cc.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<i32> = textureLoad(arg_0, vec2<i32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_e3d2cc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_e3d2cc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_e3d2cc();
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/e3d2cc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureLoad/e3d2cc.wgsl.expected.wgsl
index f8a1af7..8355ef2 100644
--- a/test/tint/builtins/gen/literal/textureLoad/e3d2cc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureLoad/e3d2cc.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<i32> = textureLoad(arg_0, vec2<i32>(), 1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_e3d2cc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_e3d2cc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_e3d2cc();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/024820.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/024820.wgsl
index ee39dbb..e6ab7d4 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/024820.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/024820.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_024820();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_024820();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_024820();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/024820.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/024820.wgsl.expected.wgsl
index f58c93c..eaa9cc7 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/024820.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/024820.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_024820();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_024820();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_024820();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/053df7.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/053df7.wgsl
index f906fef..77d7dba 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/053df7.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/053df7.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_053df7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_053df7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_053df7();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/053df7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/053df7.wgsl.expected.wgsl
index fae44b9..06592ac 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/053df7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/053df7.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_053df7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_053df7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_053df7();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/058cc3.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/058cc3.wgsl
index 55e7ee0..c030a71 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/058cc3.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/058cc3.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_058cc3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_058cc3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_058cc3();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/058cc3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/058cc3.wgsl.expected.wgsl
index ee5d2e0..a39583b 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/058cc3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/058cc3.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_058cc3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_058cc3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_058cc3();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/09d05d.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/09d05d.wgsl
index baf9538..ca4cb54 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/09d05d.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/09d05d.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_09d05d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_09d05d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_09d05d();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/09d05d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/09d05d.wgsl.expected.wgsl
index 2034fa4..cede280 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/09d05d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/09d05d.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_09d05d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_09d05d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_09d05d();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/13b4ce.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/13b4ce.wgsl
index e21134d..c69857a 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/13b4ce.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/13b4ce.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_13b4ce();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_13b4ce();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_13b4ce();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/13b4ce.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/13b4ce.wgsl.expected.wgsl
index 5061e7e..15c0d55 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/13b4ce.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/13b4ce.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_13b4ce();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_13b4ce();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_13b4ce();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/22e53b.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/22e53b.wgsl
index a74f529..f67f703 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/22e53b.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/22e53b.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_22e53b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_22e53b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_22e53b();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/22e53b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/22e53b.wgsl.expected.wgsl
index 6d9957b..2ac3057 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/22e53b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/22e53b.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_22e53b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_22e53b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_22e53b();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/562013.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/562013.wgsl
index b6f1c48..e7d5963 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/562013.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/562013.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_562013();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_562013();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_562013();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/562013.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/562013.wgsl.expected.wgsl
index 7223170..c82f593 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/562013.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/562013.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_562013();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_562013();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_562013();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/5d59cd.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/5d59cd.wgsl
index d808df9..ab50237 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/5d59cd.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/5d59cd.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_5d59cd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_5d59cd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_5d59cd();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/5d59cd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/5d59cd.wgsl.expected.wgsl
index 170c763..28bcd65 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/5d59cd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/5d59cd.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_5d59cd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_5d59cd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_5d59cd();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/68a65b.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/68a65b.wgsl
index 680221f..56b97cc 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/68a65b.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/68a65b.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_68a65b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_68a65b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_68a65b();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/68a65b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/68a65b.wgsl.expected.wgsl
index f358993..f7cfa50 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/68a65b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/68a65b.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_68a65b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_68a65b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_68a65b();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/778bd1.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/778bd1.wgsl
index 814bad1..81ba149 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/778bd1.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/778bd1.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_778bd1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_778bd1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_778bd1();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/778bd1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/778bd1.wgsl.expected.wgsl
index c13e994..8274e1e 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/778bd1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/778bd1.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_778bd1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_778bd1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_778bd1();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/7f1937.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/7f1937.wgsl
index 7e843bd..613436c 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/7f1937.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/7f1937.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_7f1937();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_7f1937();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_7f1937();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/7f1937.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/7f1937.wgsl.expected.wgsl
index 4450ceb..27ba412 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/7f1937.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/7f1937.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_7f1937();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_7f1937();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_7f1937();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/85f980.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/85f980.wgsl
index dc95da7..b5ccfa1 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/85f980.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/85f980.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_85f980();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_85f980();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_85f980();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/85f980.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/85f980.wgsl.expected.wgsl
index 4dc70c7..5206f51 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/85f980.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/85f980.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_85f980();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_85f980();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_85f980();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/87953e.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/87953e.wgsl
index 09bb3e8..47a8056 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/87953e.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/87953e.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_87953e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_87953e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_87953e();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/87953e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/87953e.wgsl.expected.wgsl
index 26f73ea..55d0f9d 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/87953e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/87953e.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_87953e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_87953e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_87953e();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/893e7c.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/893e7c.wgsl
index 3431985..d0931f8 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/893e7c.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/893e7c.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_893e7c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_893e7c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_893e7c();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/893e7c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/893e7c.wgsl.expected.wgsl
index 3cda546..1ef4610 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/893e7c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/893e7c.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_893e7c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_893e7c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_893e7c();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/9700fb.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/9700fb.wgsl
index 096b3e8..4966eb9 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/9700fb.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/9700fb.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_9700fb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_9700fb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_9700fb();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/9700fb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/9700fb.wgsl.expected.wgsl
index ce6acab..d260e36 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/9700fb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/9700fb.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_9700fb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_9700fb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_9700fb();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/a216d2.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/a216d2.wgsl
index 176205a..ec1a5b4 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/a216d2.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/a216d2.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_a216d2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_a216d2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_a216d2();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/a216d2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/a216d2.wgsl.expected.wgsl
index 38fbc89..ef09e0b 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/a216d2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/a216d2.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_a216d2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_a216d2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_a216d2();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/cd5dc8.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/cd5dc8.wgsl
index f99e118..3b24ead 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/cd5dc8.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/cd5dc8.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_cd5dc8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_cd5dc8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_cd5dc8();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/cd5dc8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/cd5dc8.wgsl.expected.wgsl
index 870778b..7fa1228 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/cd5dc8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/cd5dc8.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_cd5dc8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_cd5dc8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_cd5dc8();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/d5b228.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/d5b228.wgsl
index ba8d85e..f9b9e41 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/d5b228.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/d5b228.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_d5b228();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_d5b228();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_d5b228();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/d5b228.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/d5b228.wgsl.expected.wgsl
index 798b0a8..9cf3683 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/d5b228.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/d5b228.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_d5b228();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_d5b228();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_d5b228();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/e31be1.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/e31be1.wgsl
index fa0eed7..dffc12e 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/e31be1.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/e31be1.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_e31be1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_e31be1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_e31be1();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/e31be1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/e31be1.wgsl.expected.wgsl
index e47d202..c930384 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/e31be1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/e31be1.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_e31be1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_e31be1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_e31be1();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/e653c0.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/e653c0.wgsl
index 4ee178c..83f7e9d 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/e653c0.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/e653c0.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_e653c0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_e653c0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_e653c0();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/e653c0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/e653c0.wgsl.expected.wgsl
index 4adddfb..601ce1f 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/e653c0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/e653c0.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_e653c0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_e653c0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_e653c0();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/ee942f.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/ee942f.wgsl
index ea1d4a8..fbc2880 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/ee942f.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/ee942f.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_ee942f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_ee942f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_ee942f();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/ee942f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/ee942f.wgsl.expected.wgsl
index 4d48fac..c6d26dd 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/ee942f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/ee942f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_ee942f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_ee942f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_ee942f();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/f33005.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/f33005.wgsl
index 6445227..7deef09 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/f33005.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/f33005.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_f33005();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_f33005();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_f33005();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/f33005.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/f33005.wgsl.expected.wgsl
index 35bd8ca..8d7eee4 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/f33005.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/f33005.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_f33005();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_f33005();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_f33005();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/fcec98.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/fcec98.wgsl
index 0fef907..62b4745 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/fcec98.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/fcec98.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_fcec98();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_fcec98();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_fcec98();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/fcec98.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/fcec98.wgsl.expected.wgsl
index 6a1723e..1c1e179 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/fcec98.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/fcec98.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_fcec98();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_fcec98();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_fcec98();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/ff5e89.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/ff5e89.wgsl
index f12ea65..7b340b2 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/ff5e89.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/ff5e89.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_ff5e89();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_ff5e89();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_ff5e89();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/ff5e89.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLayers/ff5e89.wgsl.expected.wgsl
index cd8cb2d..e7b51b4 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/ff5e89.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/ff5e89.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_ff5e89();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_ff5e89();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_ff5e89();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/076cb5.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/076cb5.wgsl
index 96b8e96..ba8ebfb 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/076cb5.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/076cb5.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_076cb5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_076cb5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_076cb5();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/076cb5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/076cb5.wgsl.expected.wgsl
index c04d6e6..0470c75 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/076cb5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/076cb5.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_076cb5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_076cb5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_076cb5();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/080d95.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/080d95.wgsl
index 172e090..4d73c90 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/080d95.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/080d95.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_080d95();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_080d95();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_080d95();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/080d95.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/080d95.wgsl.expected.wgsl
index 686c908..f6f058f 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/080d95.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/080d95.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_080d95();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_080d95();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_080d95();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/09ddd0.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/09ddd0.wgsl
index dea8f54..c452b95 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/09ddd0.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/09ddd0.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_09ddd0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_09ddd0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_09ddd0();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/09ddd0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/09ddd0.wgsl.expected.wgsl
index 7a4d344..4cebcab 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/09ddd0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/09ddd0.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_09ddd0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_09ddd0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_09ddd0();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/105988.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/105988.wgsl
index 67775fb..16c41a5 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/105988.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/105988.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_105988();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_105988();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_105988();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/105988.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/105988.wgsl.expected.wgsl
index 1466976..8eb140d 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/105988.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/105988.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_105988();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_105988();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_105988();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/1e6f3b.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/1e6f3b.wgsl
index a921b0c..59fc1e8 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/1e6f3b.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/1e6f3b.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_1e6f3b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_1e6f3b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_1e6f3b();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/1e6f3b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/1e6f3b.wgsl.expected.wgsl
index 3643d3e..58a28d7 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/1e6f3b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/1e6f3b.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_1e6f3b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_1e6f3b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_1e6f3b();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/23f750.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/23f750.wgsl
index c44baad..d66e8ad 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/23f750.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/23f750.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_23f750();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_23f750();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_23f750();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/23f750.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/23f750.wgsl.expected.wgsl
index 86bf588..1ce13f7 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/23f750.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/23f750.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_23f750();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_23f750();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_23f750();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/2c3575.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/2c3575.wgsl
index e94cb62..3a4bea5 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/2c3575.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/2c3575.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_2c3575();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_2c3575();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_2c3575();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/2c3575.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/2c3575.wgsl.expected.wgsl
index 6f2f54d..8e01960 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/2c3575.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/2c3575.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_2c3575();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_2c3575();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_2c3575();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/32a0ae.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/32a0ae.wgsl
index d7c7297..afa2c84 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/32a0ae.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/32a0ae.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_32a0ae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_32a0ae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_32a0ae();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/32a0ae.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/32a0ae.wgsl.expected.wgsl
index e5016eb..13377ce 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/32a0ae.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/32a0ae.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_32a0ae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_32a0ae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_32a0ae();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/5101cf.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/5101cf.wgsl
index 371315a..8264674 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/5101cf.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/5101cf.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_5101cf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_5101cf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_5101cf();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/5101cf.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/5101cf.wgsl.expected.wgsl
index 694397b..3425bb2 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/5101cf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/5101cf.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_5101cf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_5101cf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_5101cf();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/51b5bb.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/51b5bb.wgsl
index de1c30b..2193999 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/51b5bb.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/51b5bb.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_51b5bb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_51b5bb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_51b5bb();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/51b5bb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/51b5bb.wgsl.expected.wgsl
index 2ee7aa9..71883b0 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/51b5bb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/51b5bb.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_51b5bb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_51b5bb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_51b5bb();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/897aaf.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/897aaf.wgsl
index b4559d8..e81c991 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/897aaf.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/897aaf.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_897aaf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_897aaf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_897aaf();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/897aaf.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/897aaf.wgsl.expected.wgsl
index 97e9275..473da66 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/897aaf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/897aaf.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_897aaf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_897aaf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_897aaf();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/9da7a5.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/9da7a5.wgsl
index 75623c2..e8bad43 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/9da7a5.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/9da7a5.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_9da7a5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_9da7a5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_9da7a5();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/9da7a5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/9da7a5.wgsl.expected.wgsl
index 5980b48..13135d5 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/9da7a5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/9da7a5.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_9da7a5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_9da7a5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_9da7a5();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/a91c03.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/a91c03.wgsl
index 1f9d9ae..fad9082 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/a91c03.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/a91c03.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_a91c03();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_a91c03();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_a91c03();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/a91c03.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/a91c03.wgsl.expected.wgsl
index 7212853..69e569b 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/a91c03.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/a91c03.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_a91c03();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_a91c03();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_a91c03();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/aee7c8.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/aee7c8.wgsl
index f28913a..c156037 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/aee7c8.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/aee7c8.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_aee7c8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_aee7c8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_aee7c8();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/aee7c8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/aee7c8.wgsl.expected.wgsl
index 32c8b5a..a9336a0 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/aee7c8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/aee7c8.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_aee7c8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_aee7c8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_aee7c8();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/b1b12b.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/b1b12b.wgsl
index a03922c..591d66b 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/b1b12b.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/b1b12b.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_b1b12b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_b1b12b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_b1b12b();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/b1b12b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/b1b12b.wgsl.expected.wgsl
index 97fd9a2..cfb7e4b 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/b1b12b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/b1b12b.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_b1b12b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_b1b12b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_b1b12b();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/b4f5ea.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/b4f5ea.wgsl
index 4d81449..fe9bf4f 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/b4f5ea.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/b4f5ea.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_b4f5ea();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_b4f5ea();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_b4f5ea();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/b4f5ea.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/b4f5ea.wgsl.expected.wgsl
index ff1823d..d1f829a 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/b4f5ea.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/b4f5ea.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_b4f5ea();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_b4f5ea();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_b4f5ea();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/d004a9.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/d004a9.wgsl
index e191da8..3a20c84 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/d004a9.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/d004a9.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_d004a9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_d004a9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_d004a9();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/d004a9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/d004a9.wgsl.expected.wgsl
index e6efa4a..ce8d24d 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/d004a9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/d004a9.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_d004a9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_d004a9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_d004a9();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/dca09e.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/dca09e.wgsl
index a058700..a4af4a8 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/dca09e.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/dca09e.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_dca09e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_dca09e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_dca09e();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/dca09e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/dca09e.wgsl.expected.wgsl
index 81c2ed1..d5e1e54 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/dca09e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/dca09e.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_dca09e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_dca09e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_dca09e();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/e67231.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/e67231.wgsl
index 782d93a..84299e9 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/e67231.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/e67231.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_e67231();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_e67231();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_e67231();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/e67231.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/e67231.wgsl.expected.wgsl
index b9b5a95..a42349d 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/e67231.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/e67231.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_e67231();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_e67231();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_e67231();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/ed078b.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/ed078b.wgsl
index d3620a2..de4a0b2 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/ed078b.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/ed078b.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_ed078b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_ed078b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_ed078b();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/ed078b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/ed078b.wgsl.expected.wgsl
index 1eb3d87..3a95130 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/ed078b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/ed078b.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_ed078b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_ed078b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_ed078b();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/f46ec6.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/f46ec6.wgsl
index 665436b..be5a946 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/f46ec6.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/f46ec6.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_f46ec6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_f46ec6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_f46ec6();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/f46ec6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/f46ec6.wgsl.expected.wgsl
index d380d9b..b162138 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/f46ec6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/f46ec6.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_f46ec6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_f46ec6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_f46ec6();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/f5828d.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/f5828d.wgsl
index 0c000af..69e15ed 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/f5828d.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/f5828d.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_f5828d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_f5828d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_f5828d();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/f5828d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumLevels/f5828d.wgsl.expected.wgsl
index 501fe61..02fdd80 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/f5828d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/f5828d.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_f5828d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_f5828d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_f5828d();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/2c6f14.wgsl b/test/tint/builtins/gen/literal/textureNumSamples/2c6f14.wgsl
index 749d887..f99d30f 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/2c6f14.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/2c6f14.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumSamples(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_2c6f14();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumSamples_2c6f14();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_2c6f14();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/2c6f14.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumSamples/2c6f14.wgsl.expected.wgsl
index be49934..460b4e2 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/2c6f14.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/2c6f14.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumSamples(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_2c6f14();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumSamples_2c6f14();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_2c6f14();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/42f8bb.wgsl b/test/tint/builtins/gen/literal/textureNumSamples/42f8bb.wgsl
index 429e2eb..b78edc4 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/42f8bb.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/42f8bb.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumSamples(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_42f8bb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumSamples_42f8bb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_42f8bb();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/42f8bb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumSamples/42f8bb.wgsl.expected.wgsl
index ef11b63..e62f047 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/42f8bb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/42f8bb.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumSamples(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_42f8bb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumSamples_42f8bb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_42f8bb();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/449d23.wgsl b/test/tint/builtins/gen/literal/textureNumSamples/449d23.wgsl
index e5e5baf..e685ba6 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/449d23.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/449d23.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumSamples(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_449d23();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumSamples_449d23();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_449d23();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/449d23.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumSamples/449d23.wgsl.expected.wgsl
index 9cab69e..0c9fd1f 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/449d23.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/449d23.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumSamples(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_449d23();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumSamples_449d23();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_449d23();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/a3c8a0.wgsl b/test/tint/builtins/gen/literal/textureNumSamples/a3c8a0.wgsl
index 11df4fb..1c4626c 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/a3c8a0.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/a3c8a0.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumSamples(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_a3c8a0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumSamples_a3c8a0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_a3c8a0();
 }
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/a3c8a0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureNumSamples/a3c8a0.wgsl.expected.wgsl
index 29a914a..c78e101 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/a3c8a0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/a3c8a0.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumSamples(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_a3c8a0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumSamples_a3c8a0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_a3c8a0();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl b/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl
index f074717..b64ad27 100644
--- a/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl
@@ -30,7 +30,7 @@
   var res: f32 = textureSample(arg_0, arg_1, vec2<f32>(), vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_0dff6c();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl.expected.wgsl
index a6ffe5c..5dff612 100644
--- a/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : f32 = textureSample(arg_0, arg_1, vec2<f32>(), vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_0dff6c();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/17e988.wgsl b/test/tint/builtins/gen/literal/textureSample/17e988.wgsl
index 8f06bd8..64b2da9 100644
--- a/test/tint/builtins/gen/literal/textureSample/17e988.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/17e988.wgsl
@@ -30,7 +30,7 @@
   var res: vec4<f32> = textureSample(arg_0, arg_1, vec2<f32>(), 1, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_17e988();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/17e988.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSample/17e988.wgsl.expected.wgsl
index abdb55d..3bb1fd7 100644
--- a/test/tint/builtins/gen/literal/textureSample/17e988.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/17e988.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : vec4<f32> = textureSample(arg_0, arg_1, vec2<f32>(), 1, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_17e988();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/2149ec.wgsl b/test/tint/builtins/gen/literal/textureSample/2149ec.wgsl
index 82e82e2..58954a8 100644
--- a/test/tint/builtins/gen/literal/textureSample/2149ec.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/2149ec.wgsl
@@ -30,7 +30,7 @@
   var res: vec4<f32> = textureSample(arg_0, arg_1, vec3<f32>(), vec3<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_2149ec();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/2149ec.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSample/2149ec.wgsl.expected.wgsl
index 27218fc..0b47e89 100644
--- a/test/tint/builtins/gen/literal/textureSample/2149ec.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/2149ec.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : vec4<f32> = textureSample(arg_0, arg_1, vec3<f32>(), vec3<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_2149ec();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/38bbb9.wgsl b/test/tint/builtins/gen/literal/textureSample/38bbb9.wgsl
index 5c5d84b..f72f0b0 100644
--- a/test/tint/builtins/gen/literal/textureSample/38bbb9.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/38bbb9.wgsl
@@ -30,7 +30,7 @@
   var res: f32 = textureSample(arg_0, arg_1, vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_38bbb9();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/38bbb9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSample/38bbb9.wgsl.expected.wgsl
index 438d008..6edb215 100644
--- a/test/tint/builtins/gen/literal/textureSample/38bbb9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/38bbb9.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : f32 = textureSample(arg_0, arg_1, vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_38bbb9();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/3b50bd.wgsl b/test/tint/builtins/gen/literal/textureSample/3b50bd.wgsl
index 5daa22a..3196088 100644
--- a/test/tint/builtins/gen/literal/textureSample/3b50bd.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/3b50bd.wgsl
@@ -30,7 +30,7 @@
   var res: vec4<f32> = textureSample(arg_0, arg_1, vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_3b50bd();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/3b50bd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSample/3b50bd.wgsl.expected.wgsl
index 03ccde3..43bc582 100644
--- a/test/tint/builtins/gen/literal/textureSample/3b50bd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/3b50bd.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : vec4<f32> = textureSample(arg_0, arg_1, vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_3b50bd();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/4dd1bf.wgsl b/test/tint/builtins/gen/literal/textureSample/4dd1bf.wgsl
index 6cced5c..704810b 100644
--- a/test/tint/builtins/gen/literal/textureSample/4dd1bf.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/4dd1bf.wgsl
@@ -30,7 +30,7 @@
   var res: vec4<f32> = textureSample(arg_0, arg_1, vec3<f32>(), 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_4dd1bf();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/4dd1bf.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSample/4dd1bf.wgsl.expected.wgsl
index 77ad88a..5c29b5a 100644
--- a/test/tint/builtins/gen/literal/textureSample/4dd1bf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/4dd1bf.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : vec4<f32> = textureSample(arg_0, arg_1, vec3<f32>(), 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_4dd1bf();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/51b514.wgsl b/test/tint/builtins/gen/literal/textureSample/51b514.wgsl
index eb3715e..9c87903 100644
--- a/test/tint/builtins/gen/literal/textureSample/51b514.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/51b514.wgsl
@@ -30,7 +30,7 @@
   var res: vec4<f32> = textureSample(arg_0, arg_1, vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_51b514();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/51b514.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSample/51b514.wgsl.expected.wgsl
index f866a59..7a5e264 100644
--- a/test/tint/builtins/gen/literal/textureSample/51b514.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/51b514.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : vec4<f32> = textureSample(arg_0, arg_1, vec2<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_51b514();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl b/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl
index 8aec7bf..da1831a 100644
--- a/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl
@@ -30,7 +30,7 @@
   var res: f32 = textureSample(arg_0, arg_1, vec2<f32>(), 1, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_60bf45();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.wgsl
index 9ed1c97..01301b3 100644
--- a/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : f32 = textureSample(arg_0, arg_1, vec2<f32>(), 1, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_60bf45();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/6717ca.wgsl b/test/tint/builtins/gen/literal/textureSample/6717ca.wgsl
index 1cd285f..a0569d6 100644
--- a/test/tint/builtins/gen/literal/textureSample/6717ca.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/6717ca.wgsl
@@ -30,7 +30,7 @@
   var res: vec4<f32> = textureSample(arg_0, arg_1, vec2<f32>(), 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_6717ca();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/6717ca.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSample/6717ca.wgsl.expected.wgsl
index b767d29..4f6d048 100644
--- a/test/tint/builtins/gen/literal/textureSample/6717ca.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/6717ca.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : vec4<f32> = textureSample(arg_0, arg_1, vec2<f32>(), 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_6717ca();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/6e64fb.wgsl b/test/tint/builtins/gen/literal/textureSample/6e64fb.wgsl
index 92c97bc..1820157 100644
--- a/test/tint/builtins/gen/literal/textureSample/6e64fb.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/6e64fb.wgsl
@@ -30,7 +30,7 @@
   var res: vec4<f32> = textureSample(arg_0, arg_1, 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_6e64fb();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/6e64fb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSample/6e64fb.wgsl.expected.wgsl
index 4d7b6ce..b99b303 100644
--- a/test/tint/builtins/gen/literal/textureSample/6e64fb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/6e64fb.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : vec4<f32> = textureSample(arg_0, arg_1, 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_6e64fb();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/7e9ffd.wgsl b/test/tint/builtins/gen/literal/textureSample/7e9ffd.wgsl
index 7864e21..3f72bb9 100644
--- a/test/tint/builtins/gen/literal/textureSample/7e9ffd.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/7e9ffd.wgsl
@@ -30,7 +30,7 @@
   var res: f32 = textureSample(arg_0, arg_1, vec2<f32>(), 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_7e9ffd();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/7e9ffd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSample/7e9ffd.wgsl.expected.wgsl
index ba76347..0381c1a 100644
--- a/test/tint/builtins/gen/literal/textureSample/7e9ffd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/7e9ffd.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : f32 = textureSample(arg_0, arg_1, vec2<f32>(), 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_7e9ffd();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/85c4ba.wgsl b/test/tint/builtins/gen/literal/textureSample/85c4ba.wgsl
index 42d5c40..df51bd8 100644
--- a/test/tint/builtins/gen/literal/textureSample/85c4ba.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/85c4ba.wgsl
@@ -30,7 +30,7 @@
   var res: vec4<f32> = textureSample(arg_0, arg_1, vec2<f32>(), vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_85c4ba();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/85c4ba.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSample/85c4ba.wgsl.expected.wgsl
index 976bb58..8d23c15 100644
--- a/test/tint/builtins/gen/literal/textureSample/85c4ba.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/85c4ba.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : vec4<f32> = textureSample(arg_0, arg_1, vec2<f32>(), vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_85c4ba();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl b/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl
index cad8d4e..b369cf9 100644
--- a/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl
@@ -30,7 +30,7 @@
   var res: f32 = textureSample(arg_0, arg_1, vec3<f32>(), 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_c2f4e8();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.wgsl
index 0a6f332..5e1f087 100644
--- a/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : f32 = textureSample(arg_0, arg_1, vec3<f32>(), 1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_c2f4e8();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/e53267.wgsl b/test/tint/builtins/gen/literal/textureSample/e53267.wgsl
index cacb3e4..668a5f3 100644
--- a/test/tint/builtins/gen/literal/textureSample/e53267.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/e53267.wgsl
@@ -30,7 +30,7 @@
   var res: vec4<f32> = textureSample(arg_0, arg_1, vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_e53267();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/e53267.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSample/e53267.wgsl.expected.wgsl
index b1d17e7..d4d1c10 100644
--- a/test/tint/builtins/gen/literal/textureSample/e53267.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/e53267.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : vec4<f32> = textureSample(arg_0, arg_1, vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_e53267();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/ea7030.wgsl b/test/tint/builtins/gen/literal/textureSample/ea7030.wgsl
index e57ddde..113c753 100644
--- a/test/tint/builtins/gen/literal/textureSample/ea7030.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/ea7030.wgsl
@@ -30,7 +30,7 @@
   var res: f32 = textureSample(arg_0, arg_1, vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_ea7030();
 }
diff --git a/test/tint/builtins/gen/literal/textureSample/ea7030.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSample/ea7030.wgsl.expected.wgsl
index 4fffe53..de2934b 100644
--- a/test/tint/builtins/gen/literal/textureSample/ea7030.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSample/ea7030.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : f32 = textureSample(arg_0, arg_1, vec3<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_ea7030();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/53b9f7.wgsl b/test/tint/builtins/gen/literal/textureSampleBias/53b9f7.wgsl
index a3699e6..2dd96ff 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/53b9f7.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/53b9f7.wgsl
@@ -30,7 +30,7 @@
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_53b9f7();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/53b9f7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleBias/53b9f7.wgsl.expected.wgsl
index 58e2030..4e65527 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/53b9f7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/53b9f7.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_53b9f7();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/594824.wgsl b/test/tint/builtins/gen/literal/textureSampleBias/594824.wgsl
index b7d25eb..cf1c80c 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/594824.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/594824.wgsl
@@ -30,7 +30,7 @@
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, vec3<f32>(), 1.0, vec3<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_594824();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/594824.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleBias/594824.wgsl.expected.wgsl
index 491105c..9a41e5d 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/594824.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/594824.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, vec3<f32>(), 1.0, vec3<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_594824();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/6a9113.wgsl b/test/tint/builtins/gen/literal/textureSampleBias/6a9113.wgsl
index 298ece3..007e578 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/6a9113.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/6a9113.wgsl
@@ -30,7 +30,7 @@
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_6a9113();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/6a9113.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleBias/6a9113.wgsl.expected.wgsl
index a5ff76e..7633115 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/6a9113.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/6a9113.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_6a9113();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/80e579.wgsl b/test/tint/builtins/gen/literal/textureSampleBias/80e579.wgsl
index 4282899..fd264c8 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/80e579.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/80e579.wgsl
@@ -30,7 +30,7 @@
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_80e579();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/80e579.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleBias/80e579.wgsl.expected.wgsl
index 164c81e..d97ed33 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/80e579.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/80e579.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_80e579();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/9dbb51.wgsl b/test/tint/builtins/gen/literal/textureSampleBias/9dbb51.wgsl
index 15bc1ca..37869ce 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/9dbb51.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/9dbb51.wgsl
@@ -30,7 +30,7 @@
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_9dbb51();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/9dbb51.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleBias/9dbb51.wgsl.expected.wgsl
index aa1d407..7c11922 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/9dbb51.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/9dbb51.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_9dbb51();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/a161cf.wgsl b/test/tint/builtins/gen/literal/textureSampleBias/a161cf.wgsl
index ae96a5a..d1fa2e4 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/a161cf.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/a161cf.wgsl
@@ -30,7 +30,7 @@
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_a161cf();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/a161cf.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleBias/a161cf.wgsl.expected.wgsl
index 158537e..0454162 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/a161cf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/a161cf.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_a161cf();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/d3fa1b.wgsl b/test/tint/builtins/gen/literal/textureSampleBias/d3fa1b.wgsl
index 1b17a6d..2aa132a 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/d3fa1b.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/d3fa1b.wgsl
@@ -30,7 +30,7 @@
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_d3fa1b();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/d3fa1b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleBias/d3fa1b.wgsl.expected.wgsl
index 7a07c30..c29f89c 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/d3fa1b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/d3fa1b.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_d3fa1b();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/eed7c4.wgsl b/test/tint/builtins/gen/literal/textureSampleBias/eed7c4.wgsl
index 01eeffa..6a9b356 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/eed7c4.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/eed7c4.wgsl
@@ -30,7 +30,7 @@
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_eed7c4();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/eed7c4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleBias/eed7c4.wgsl.expected.wgsl
index e2c3aa7..2ec4626 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/eed7c4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/eed7c4.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_eed7c4();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/3a5923.wgsl b/test/tint/builtins/gen/literal/textureSampleCompare/3a5923.wgsl
index 799f5b0..d71177c 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/3a5923.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/3a5923.wgsl
@@ -30,7 +30,7 @@
   var res: f32 = textureSampleCompare(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_3a5923();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/3a5923.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleCompare/3a5923.wgsl.expected.wgsl
index eb88140..d323888 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/3a5923.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/3a5923.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : f32 = textureSampleCompare(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_3a5923();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/63fb83.wgsl b/test/tint/builtins/gen/literal/textureSampleCompare/63fb83.wgsl
index dda3efb..6c469b9 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/63fb83.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/63fb83.wgsl
@@ -30,7 +30,7 @@
   var res: f32 = textureSampleCompare(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_63fb83();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/63fb83.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleCompare/63fb83.wgsl.expected.wgsl
index 38e555e..d70d066 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/63fb83.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/63fb83.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : f32 = textureSampleCompare(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_63fb83();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/a3ca7e.wgsl b/test/tint/builtins/gen/literal/textureSampleCompare/a3ca7e.wgsl
index 1b9c595..6c5555b 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/a3ca7e.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/a3ca7e.wgsl
@@ -30,7 +30,7 @@
   var res: f32 = textureSampleCompare(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_a3ca7e();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/a3ca7e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleCompare/a3ca7e.wgsl.expected.wgsl
index 5dc12e5..33ea04e 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/a3ca7e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/a3ca7e.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : f32 = textureSampleCompare(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_a3ca7e();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl b/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl
index ef76e35..122c74d 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl
@@ -30,7 +30,7 @@
   var res: f32 = textureSampleCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_af1051();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl.expected.wgsl
index 3d8740f..fe4d2ba 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : f32 = textureSampleCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_af1051();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/dd431d.wgsl b/test/tint/builtins/gen/literal/textureSampleCompare/dd431d.wgsl
index 1733917..4ea72b9 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/dd431d.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/dd431d.wgsl
@@ -30,7 +30,7 @@
   var res: f32 = textureSampleCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_dd431d();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/dd431d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleCompare/dd431d.wgsl.expected.wgsl
index f36d443..2aa2a1a 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/dd431d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/dd431d.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : f32 = textureSampleCompare(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_dd431d();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/dec064.wgsl b/test/tint/builtins/gen/literal/textureSampleCompare/dec064.wgsl
index 5a5a990..c5625e9 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/dec064.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/dec064.wgsl
@@ -30,7 +30,7 @@
   var res: f32 = textureSampleCompare(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_dec064();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/dec064.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleCompare/dec064.wgsl.expected.wgsl
index 30f4183..ded6000 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/dec064.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/dec064.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res : f32 = textureSampleCompare(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_dec064();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/1116ed.wgsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/1116ed.wgsl
index 4473d1e..602997d 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/1116ed.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/1116ed.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = textureSampleCompareLevel(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_1116ed();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_1116ed();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_1116ed();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/1116ed.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/1116ed.wgsl.expected.wgsl
index 97ee867..788644a 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/1116ed.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/1116ed.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : f32 = textureSampleCompareLevel(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_1116ed();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_1116ed();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_1116ed();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/1568e3.wgsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/1568e3.wgsl
index fe74fc9..ce8b2b8 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/1568e3.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/1568e3.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = textureSampleCompareLevel(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_1568e3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_1568e3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_1568e3();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/1568e3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/1568e3.wgsl.expected.wgsl
index ff5e88d..801af47 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/1568e3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/1568e3.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : f32 = textureSampleCompareLevel(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_1568e3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_1568e3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_1568e3();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/2ad2b1.wgsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/2ad2b1.wgsl
index 24c283c..faac094 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/2ad2b1.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/2ad2b1.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = textureSampleCompareLevel(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_2ad2b1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_2ad2b1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_2ad2b1();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/2ad2b1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/2ad2b1.wgsl.expected.wgsl
index 76fe2cb..0a6e583 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/2ad2b1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/2ad2b1.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : f32 = textureSampleCompareLevel(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_2ad2b1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_2ad2b1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_2ad2b1();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/4cf3a2.wgsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/4cf3a2.wgsl
index cb237dc..6f9c29e 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/4cf3a2.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/4cf3a2.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = textureSampleCompareLevel(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_4cf3a2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_4cf3a2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_4cf3a2();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/4cf3a2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/4cf3a2.wgsl.expected.wgsl
index 1fb3470..278793a 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/4cf3a2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/4cf3a2.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : f32 = textureSampleCompareLevel(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_4cf3a2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_4cf3a2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_4cf3a2();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/7f2b9a.wgsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/7f2b9a.wgsl
index c343fdf..346810c 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/7f2b9a.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/7f2b9a.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = textureSampleCompareLevel(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_7f2b9a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_7f2b9a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_7f2b9a();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/7f2b9a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/7f2b9a.wgsl.expected.wgsl
index e057037..7239fc1 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/7f2b9a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/7f2b9a.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : f32 = textureSampleCompareLevel(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_7f2b9a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_7f2b9a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_7f2b9a();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl
index 9a6d351..5eb2d54 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = textureSampleCompareLevel(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_b6e47c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_b6e47c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_b6e47c();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl.expected.wgsl
index 8819ad2..3a8365a 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : f32 = textureSampleCompareLevel(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_b6e47c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_b6e47c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_b6e47c();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/21402b.wgsl b/test/tint/builtins/gen/literal/textureSampleGrad/21402b.wgsl
index 339576d..b400f5e 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/21402b.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/21402b.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_21402b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_21402b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_21402b();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/21402b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleGrad/21402b.wgsl.expected.wgsl
index c5e185c..d51d095 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/21402b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/21402b.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_21402b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_21402b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_21402b();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/2ecd8f.wgsl b/test/tint/builtins/gen/literal/textureSampleGrad/2ecd8f.wgsl
index d4250b1..f7ec46d 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/2ecd8f.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/2ecd8f.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, vec2<f32>(), 1, vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_2ecd8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_2ecd8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_2ecd8f();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/2ecd8f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleGrad/2ecd8f.wgsl.expected.wgsl
index 233ce18..1319a44 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/2ecd8f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/2ecd8f.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, vec2<f32>(), 1, vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_2ecd8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_2ecd8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_2ecd8f();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/521263.wgsl b/test/tint/builtins/gen/literal/textureSampleGrad/521263.wgsl
index 31754e8..f7d4f91 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/521263.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/521263.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_521263();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_521263();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_521263();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/521263.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleGrad/521263.wgsl.expected.wgsl
index f440117..d8ade17 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/521263.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/521263.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, vec2<f32>(), vec2<f32>(), vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_521263();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_521263();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_521263();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/5312f4.wgsl b/test/tint/builtins/gen/literal/textureSampleGrad/5312f4.wgsl
index 91e8a82..24599c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/5312f4.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/5312f4.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_5312f4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_5312f4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_5312f4();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/5312f4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleGrad/5312f4.wgsl.expected.wgsl
index 22507b7..53ed7cc 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/5312f4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/5312f4.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, vec3<f32>(), vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_5312f4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_5312f4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_5312f4();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/5884dd.wgsl b/test/tint/builtins/gen/literal/textureSampleGrad/5884dd.wgsl
index d3565f3..30d54d1 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/5884dd.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/5884dd.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, vec3<f32>(), vec3<f32>(), vec3<f32>(), vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_5884dd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_5884dd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_5884dd();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/5884dd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleGrad/5884dd.wgsl.expected.wgsl
index 3fdb4d5..8831596 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/5884dd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/5884dd.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, vec3<f32>(), vec3<f32>(), vec3<f32>(), vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_5884dd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_5884dd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_5884dd();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/d4e3c5.wgsl b/test/tint/builtins/gen/literal/textureSampleGrad/d4e3c5.wgsl
index c82a14f..edf274b 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/d4e3c5.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/d4e3c5.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, vec2<f32>(), vec2<f32>(), vec2<f32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_d4e3c5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_d4e3c5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_d4e3c5();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/d4e3c5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleGrad/d4e3c5.wgsl.expected.wgsl
index d36cb59..af2f0c4 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/d4e3c5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/d4e3c5.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, vec2<f32>(), vec2<f32>(), vec2<f32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_d4e3c5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_d4e3c5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_d4e3c5();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/d65515.wgsl b/test/tint/builtins/gen/literal/textureSampleGrad/d65515.wgsl
index 3614908..aac21fc 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/d65515.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/d65515.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, vec2<f32>(), 1, vec2<f32>(), vec2<f32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_d65515();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_d65515();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_d65515();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/d65515.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleGrad/d65515.wgsl.expected.wgsl
index ee0bf52..e62ecef 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/d65515.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/d65515.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, vec2<f32>(), 1, vec2<f32>(), vec2<f32>(), vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_d65515();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_d65515();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_d65515();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/e383db.wgsl b/test/tint/builtins/gen/literal/textureSampleGrad/e383db.wgsl
index 9f92c41..fae0304 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/e383db.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/e383db.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, vec3<f32>(), 1, vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_e383db();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_e383db();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_e383db();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/e383db.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleGrad/e383db.wgsl.expected.wgsl
index dad5f7f..bb41462 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/e383db.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/e383db.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, vec3<f32>(), 1, vec3<f32>(), vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_e383db();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_e383db();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_e383db();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/02be59.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/02be59.wgsl
index 06116a9..3b62a89 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/02be59.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/02be59.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_02be59();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_02be59();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_02be59();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/02be59.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/02be59.wgsl.expected.wgsl
index e5eb1c6..14b220a 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/02be59.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/02be59.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_02be59();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_02be59();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_02be59();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/0b0a1b.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/0b0a1b.wgsl
index 77fd0c9..06b1e5c 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/0b0a1b.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/0b0a1b.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_0b0a1b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_0b0a1b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_0b0a1b();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/0b0a1b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/0b0a1b.wgsl.expected.wgsl
index 2520fdb..4d318da 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/0b0a1b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/0b0a1b.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1.0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_0b0a1b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_0b0a1b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_0b0a1b();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/0bdd9a.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/0bdd9a.wgsl
index 3065b6e..20fa806 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/0bdd9a.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/0bdd9a.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_0bdd9a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_0bdd9a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_0bdd9a();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/0bdd9a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/0bdd9a.wgsl.expected.wgsl
index 432273c..a9feb7c 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/0bdd9a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/0bdd9a.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_0bdd9a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_0bdd9a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_0bdd9a();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl
index 583634c..4b93afa 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_1b0291();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_1b0291();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_1b0291();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.wgsl
index 8ce844e..52151bc 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : f32 = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_1b0291();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_1b0291();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_1b0291();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl
index e998859..f829077 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_1bf73e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_1bf73e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_1bf73e();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.wgsl
index ff739ce..8771b3a 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_1bf73e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_1bf73e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_1bf73e();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/302be4.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/302be4.wgsl
index a1eec71..c1492eb 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/302be4.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/302be4.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_302be4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_302be4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_302be4();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/302be4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/302be4.wgsl.expected.wgsl
index 15af8c6..ee37a81 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/302be4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/302be4.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_302be4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_302be4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_302be4();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl
index c44741a..57a1e3e 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_36780e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_36780e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_36780e();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.wgsl
index 01d1245..caff931 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_36780e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_36780e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_36780e();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl
index d043c1b..8c4be39 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_749baf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_749baf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_749baf();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl.expected.wgsl
index 01d93a0..73109bb 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : f32 = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_749baf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_749baf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_749baf();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl
index 432061a..4607c28 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_979816();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_979816();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_979816();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.wgsl
index 3d1980f..2583d0f 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_979816();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_979816();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_979816();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/abfcc0.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/abfcc0.wgsl
index 733ef7b..761da2a 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/abfcc0.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/abfcc0.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_abfcc0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_abfcc0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_abfcc0();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/abfcc0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/abfcc0.wgsl.expected.wgsl
index f8f6faf..1ff8adb 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/abfcc0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/abfcc0.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_abfcc0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_abfcc0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_abfcc0();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl
index ec0c39b..7467e01 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_ae5e39();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_ae5e39();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_ae5e39();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.wgsl
index 4fc5ac8..707f48a 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : f32 = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1, 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_ae5e39();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_ae5e39();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_ae5e39();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/b7c55c.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/b7c55c.wgsl
index 2a2cf1f..9f57d73 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/b7c55c.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/b7c55c.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_b7c55c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_b7c55c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_b7c55c();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/b7c55c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/b7c55c.wgsl.expected.wgsl
index 5f310cb..2590995 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/b7c55c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/b7c55c.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1, 1.0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_b7c55c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_b7c55c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_b7c55c();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/c32df7.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/c32df7.wgsl
index 4b0a19e..4ac74137 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/c32df7.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/c32df7.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_c32df7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_c32df7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_c32df7();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/c32df7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/c32df7.wgsl.expected.wgsl
index 2f2df13..b263c66 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/c32df7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/c32df7.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_c32df7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_c32df7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_c32df7();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/c6aca6.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/c6aca6.wgsl
index c4cdb2d..3b5ea68 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/c6aca6.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/c6aca6.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_c6aca6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_c6aca6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_c6aca6();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/c6aca6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/c6aca6.wgsl.expected.wgsl
index 35dc735..455f4d6 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/c6aca6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/c6aca6.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, vec2<f32>(), 1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_c6aca6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_c6aca6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_c6aca6();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/dcbecb.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/dcbecb.wgsl
index 53846b4..5a20c5a 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/dcbecb.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/dcbecb.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1.0, vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_dcbecb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_dcbecb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_dcbecb();
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/dcbecb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureSampleLevel/dcbecb.wgsl.expected.wgsl
index e49b2b0..74dca43 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/dcbecb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/dcbecb.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, vec3<f32>(), 1.0, vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_dcbecb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_dcbecb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_dcbecb();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/05ce15.wgsl b/test/tint/builtins/gen/literal/textureStore/05ce15.wgsl
index 4677d18..a512d50 100644
--- a/test/tint/builtins/gen/literal/textureStore/05ce15.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/05ce15.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_05ce15();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_05ce15();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_05ce15();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/05ce15.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/05ce15.wgsl.expected.wgsl
index 2627d0e..caefa60 100644
--- a/test/tint/builtins/gen/literal/textureStore/05ce15.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/05ce15.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_05ce15();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_05ce15();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_05ce15();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/064c7f.wgsl b/test/tint/builtins/gen/literal/textureStore/064c7f.wgsl
index e959086..3843b42 100644
--- a/test/tint/builtins/gen/literal/textureStore/064c7f.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/064c7f.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_064c7f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_064c7f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_064c7f();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/064c7f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/064c7f.wgsl.expected.wgsl
index 042b3af..9d55259 100644
--- a/test/tint/builtins/gen/literal/textureStore/064c7f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/064c7f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_064c7f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_064c7f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_064c7f();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/068641.wgsl b/test/tint/builtins/gen/literal/textureStore/068641.wgsl
index 86edaac..0bad849 100644
--- a/test/tint/builtins/gen/literal/textureStore/068641.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/068641.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_068641();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_068641();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_068641();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/068641.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/068641.wgsl.expected.wgsl
index 5b3279a..1e3ae92 100644
--- a/test/tint/builtins/gen/literal/textureStore/068641.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/068641.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_068641();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_068641();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_068641();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/0af6b5.wgsl b/test/tint/builtins/gen/literal/textureStore/0af6b5.wgsl
index 53f97f4..1ffa433 100644
--- a/test/tint/builtins/gen/literal/textureStore/0af6b5.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/0af6b5.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_0af6b5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_0af6b5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_0af6b5();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/0af6b5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/0af6b5.wgsl.expected.wgsl
index 1e67b08..d6371ca 100644
--- a/test/tint/builtins/gen/literal/textureStore/0af6b5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/0af6b5.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_0af6b5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_0af6b5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_0af6b5();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/0c3dff.wgsl b/test/tint/builtins/gen/literal/textureStore/0c3dff.wgsl
index f0100ff..1034365 100644
--- a/test/tint/builtins/gen/literal/textureStore/0c3dff.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/0c3dff.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_0c3dff();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_0c3dff();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_0c3dff();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/0c3dff.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/0c3dff.wgsl.expected.wgsl
index b115e07..14d2872 100644
--- a/test/tint/builtins/gen/literal/textureStore/0c3dff.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/0c3dff.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_0c3dff();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_0c3dff();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_0c3dff();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/102722.wgsl b/test/tint/builtins/gen/literal/textureStore/102722.wgsl
index 4c9a7dc..6470bd7 100644
--- a/test/tint/builtins/gen/literal/textureStore/102722.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/102722.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_102722();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_102722();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_102722();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/102722.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/102722.wgsl.expected.wgsl
index 593c342..2d6fc38 100644
--- a/test/tint/builtins/gen/literal/textureStore/102722.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/102722.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_102722();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_102722();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_102722();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/1bbd08.wgsl b/test/tint/builtins/gen/literal/textureStore/1bbd08.wgsl
index b52633a..9609af7 100644
--- a/test/tint/builtins/gen/literal/textureStore/1bbd08.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/1bbd08.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_1bbd08();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_1bbd08();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_1bbd08();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/1bbd08.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/1bbd08.wgsl.expected.wgsl
index a775be7..b6aa3ff 100644
--- a/test/tint/builtins/gen/literal/textureStore/1bbd08.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/1bbd08.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_1bbd08();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_1bbd08();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_1bbd08();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/1c02e7.wgsl b/test/tint/builtins/gen/literal/textureStore/1c02e7.wgsl
index a91041c..aebd170 100644
--- a/test/tint/builtins/gen/literal/textureStore/1c02e7.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/1c02e7.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_1c02e7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_1c02e7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_1c02e7();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/1c02e7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/1c02e7.wgsl.expected.wgsl
index 732759f..556621d 100644
--- a/test/tint/builtins/gen/literal/textureStore/1c02e7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/1c02e7.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_1c02e7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_1c02e7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_1c02e7();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/22d955.wgsl b/test/tint/builtins/gen/literal/textureStore/22d955.wgsl
index 5e6f372..f9ce1a3 100644
--- a/test/tint/builtins/gen/literal/textureStore/22d955.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/22d955.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_22d955();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_22d955();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_22d955();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/22d955.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/22d955.wgsl.expected.wgsl
index b9fe255..cfb291c 100644
--- a/test/tint/builtins/gen/literal/textureStore/22d955.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/22d955.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_22d955();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_22d955();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_22d955();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/26bf70.wgsl b/test/tint/builtins/gen/literal/textureStore/26bf70.wgsl
index 8cb6f1e..b253a23 100644
--- a/test/tint/builtins/gen/literal/textureStore/26bf70.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/26bf70.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_26bf70();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_26bf70();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_26bf70();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/26bf70.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/26bf70.wgsl.expected.wgsl
index 896b4f7..10aa757 100644
--- a/test/tint/builtins/gen/literal/textureStore/26bf70.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/26bf70.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_26bf70();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_26bf70();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_26bf70();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/2796b4.wgsl b/test/tint/builtins/gen/literal/textureStore/2796b4.wgsl
index 82ce365..2afae6f 100644
--- a/test/tint/builtins/gen/literal/textureStore/2796b4.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/2796b4.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2796b4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_2796b4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_2796b4();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/2796b4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/2796b4.wgsl.expected.wgsl
index 3fcb394..60ac36f 100644
--- a/test/tint/builtins/gen/literal/textureStore/2796b4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/2796b4.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2796b4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_2796b4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_2796b4();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/2ac6c7.wgsl b/test/tint/builtins/gen/literal/textureStore/2ac6c7.wgsl
index 39eebf3..7fb5d9f 100644
--- a/test/tint/builtins/gen/literal/textureStore/2ac6c7.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/2ac6c7.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2ac6c7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_2ac6c7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_2ac6c7();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/2ac6c7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/2ac6c7.wgsl.expected.wgsl
index 2786ca4..ca7cc4f 100644
--- a/test/tint/builtins/gen/literal/textureStore/2ac6c7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/2ac6c7.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2ac6c7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_2ac6c7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_2ac6c7();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/2eb2a4.wgsl b/test/tint/builtins/gen/literal/textureStore/2eb2a4.wgsl
index 05df4c8..dbbc9a0 100644
--- a/test/tint/builtins/gen/literal/textureStore/2eb2a4.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/2eb2a4.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2eb2a4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_2eb2a4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_2eb2a4();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/2eb2a4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/2eb2a4.wgsl.expected.wgsl
index 51c5cd9..5399668 100644
--- a/test/tint/builtins/gen/literal/textureStore/2eb2a4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/2eb2a4.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2eb2a4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_2eb2a4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_2eb2a4();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/2ed2a3.wgsl b/test/tint/builtins/gen/literal/textureStore/2ed2a3.wgsl
index 9520984..b37f8e4 100644
--- a/test/tint/builtins/gen/literal/textureStore/2ed2a3.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/2ed2a3.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2ed2a3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_2ed2a3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_2ed2a3();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/2ed2a3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/2ed2a3.wgsl.expected.wgsl
index c415d58..daad961 100644
--- a/test/tint/builtins/gen/literal/textureStore/2ed2a3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/2ed2a3.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2ed2a3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_2ed2a3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_2ed2a3();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/31745b.wgsl b/test/tint/builtins/gen/literal/textureStore/31745b.wgsl
index f26b550..115890b 100644
--- a/test/tint/builtins/gen/literal/textureStore/31745b.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/31745b.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_31745b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_31745b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_31745b();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/31745b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/31745b.wgsl.expected.wgsl
index 4288434..0280681 100644
--- a/test/tint/builtins/gen/literal/textureStore/31745b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/31745b.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_31745b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_31745b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_31745b();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/32f368.wgsl b/test/tint/builtins/gen/literal/textureStore/32f368.wgsl
index 33b9e04..83cfdbc 100644
--- a/test/tint/builtins/gen/literal/textureStore/32f368.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/32f368.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_32f368();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_32f368();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_32f368();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/32f368.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/32f368.wgsl.expected.wgsl
index a747822..d0d3f8b 100644
--- a/test/tint/builtins/gen/literal/textureStore/32f368.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/32f368.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_32f368();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_32f368();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_32f368();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/331aee.wgsl b/test/tint/builtins/gen/literal/textureStore/331aee.wgsl
index 1099995..9fc7d04 100644
--- a/test/tint/builtins/gen/literal/textureStore/331aee.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/331aee.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_331aee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_331aee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_331aee();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/331aee.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/331aee.wgsl.expected.wgsl
index 0363260..c56aa25 100644
--- a/test/tint/builtins/gen/literal/textureStore/331aee.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/331aee.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_331aee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_331aee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_331aee();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/38e8d7.wgsl b/test/tint/builtins/gen/literal/textureStore/38e8d7.wgsl
index 68b8504..a70f91a 100644
--- a/test/tint/builtins/gen/literal/textureStore/38e8d7.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/38e8d7.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_38e8d7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_38e8d7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_38e8d7();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/38e8d7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/38e8d7.wgsl.expected.wgsl
index 28d1791..e586ff1 100644
--- a/test/tint/builtins/gen/literal/textureStore/38e8d7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/38e8d7.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_38e8d7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_38e8d7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_38e8d7();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/3a52ac.wgsl b/test/tint/builtins/gen/literal/textureStore/3a52ac.wgsl
index bce15d4..f8a91fc 100644
--- a/test/tint/builtins/gen/literal/textureStore/3a52ac.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/3a52ac.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_3a52ac();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_3a52ac();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_3a52ac();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/3a52ac.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/3a52ac.wgsl.expected.wgsl
index 6fbbab0..a3aa110 100644
--- a/test/tint/builtins/gen/literal/textureStore/3a52ac.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/3a52ac.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_3a52ac();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_3a52ac();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_3a52ac();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/3bb7a1.wgsl b/test/tint/builtins/gen/literal/textureStore/3bb7a1.wgsl
index 973de1b..d1a8819 100644
--- a/test/tint/builtins/gen/literal/textureStore/3bb7a1.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/3bb7a1.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_3bb7a1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_3bb7a1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_3bb7a1();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/3bb7a1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/3bb7a1.wgsl.expected.wgsl
index ccb304d..b1b1b8d 100644
--- a/test/tint/builtins/gen/literal/textureStore/3bb7a1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/3bb7a1.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_3bb7a1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_3bb7a1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_3bb7a1();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/3bec15.wgsl b/test/tint/builtins/gen/literal/textureStore/3bec15.wgsl
index 1c7fe6a..687108a 100644
--- a/test/tint/builtins/gen/literal/textureStore/3bec15.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/3bec15.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_3bec15();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_3bec15();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_3bec15();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/3bec15.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/3bec15.wgsl.expected.wgsl
index c594be0..96e2996 100644
--- a/test/tint/builtins/gen/literal/textureStore/3bec15.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/3bec15.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_3bec15();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_3bec15();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_3bec15();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/441ba8.wgsl b/test/tint/builtins/gen/literal/textureStore/441ba8.wgsl
index 9669e51..ff6c199 100644
--- a/test/tint/builtins/gen/literal/textureStore/441ba8.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/441ba8.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_441ba8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_441ba8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_441ba8();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/441ba8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/441ba8.wgsl.expected.wgsl
index b59255a..6014c40 100644
--- a/test/tint/builtins/gen/literal/textureStore/441ba8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/441ba8.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_441ba8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_441ba8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_441ba8();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/4fc057.wgsl b/test/tint/builtins/gen/literal/textureStore/4fc057.wgsl
index 23c5849..32988ef 100644
--- a/test/tint/builtins/gen/literal/textureStore/4fc057.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/4fc057.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_4fc057();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_4fc057();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_4fc057();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/4fc057.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/4fc057.wgsl.expected.wgsl
index 26a0018..a599ff7 100644
--- a/test/tint/builtins/gen/literal/textureStore/4fc057.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/4fc057.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_4fc057();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_4fc057();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_4fc057();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/5a2f8f.wgsl b/test/tint/builtins/gen/literal/textureStore/5a2f8f.wgsl
index f0ceb8f..2f1873f 100644
--- a/test/tint/builtins/gen/literal/textureStore/5a2f8f.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/5a2f8f.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_5a2f8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_5a2f8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_5a2f8f();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/5a2f8f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/5a2f8f.wgsl.expected.wgsl
index 13d97f4..9e4b11f 100644
--- a/test/tint/builtins/gen/literal/textureStore/5a2f8f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/5a2f8f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_5a2f8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_5a2f8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_5a2f8f();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/60975f.wgsl b/test/tint/builtins/gen/literal/textureStore/60975f.wgsl
index 8ad1e46..879c1f4 100644
--- a/test/tint/builtins/gen/literal/textureStore/60975f.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/60975f.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_60975f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_60975f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_60975f();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/60975f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/60975f.wgsl.expected.wgsl
index 47cdd34..c723d57 100644
--- a/test/tint/builtins/gen/literal/textureStore/60975f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/60975f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_60975f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_60975f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_60975f();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/682fd6.wgsl b/test/tint/builtins/gen/literal/textureStore/682fd6.wgsl
index fefa207..551f5d7 100644
--- a/test/tint/builtins/gen/literal/textureStore/682fd6.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/682fd6.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_682fd6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_682fd6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_682fd6();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/682fd6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/682fd6.wgsl.expected.wgsl
index 20603cc..15cae1d 100644
--- a/test/tint/builtins/gen/literal/textureStore/682fd6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/682fd6.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_682fd6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_682fd6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_682fd6();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/6b75c3.wgsl b/test/tint/builtins/gen/literal/textureStore/6b75c3.wgsl
index ebceb55..3d991ae 100644
--- a/test/tint/builtins/gen/literal/textureStore/6b75c3.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/6b75c3.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6b75c3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_6b75c3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_6b75c3();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/6b75c3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/6b75c3.wgsl.expected.wgsl
index cd827a3..da091c3 100644
--- a/test/tint/builtins/gen/literal/textureStore/6b75c3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/6b75c3.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6b75c3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_6b75c3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_6b75c3();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/6b80d2.wgsl b/test/tint/builtins/gen/literal/textureStore/6b80d2.wgsl
index ab22858..ca34d14 100644
--- a/test/tint/builtins/gen/literal/textureStore/6b80d2.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/6b80d2.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6b80d2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_6b80d2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_6b80d2();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/6b80d2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/6b80d2.wgsl.expected.wgsl
index e7efff2..85e0231 100644
--- a/test/tint/builtins/gen/literal/textureStore/6b80d2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/6b80d2.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6b80d2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_6b80d2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_6b80d2();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/6cff2e.wgsl b/test/tint/builtins/gen/literal/textureStore/6cff2e.wgsl
index f00cc00..3f6d4ad 100644
--- a/test/tint/builtins/gen/literal/textureStore/6cff2e.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/6cff2e.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6cff2e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_6cff2e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_6cff2e();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/6cff2e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/6cff2e.wgsl.expected.wgsl
index 4f43b98..bc09df8 100644
--- a/test/tint/builtins/gen/literal/textureStore/6cff2e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/6cff2e.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6cff2e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_6cff2e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_6cff2e();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/6da692.wgsl b/test/tint/builtins/gen/literal/textureStore/6da692.wgsl
index ca7410c..d1561ce 100644
--- a/test/tint/builtins/gen/literal/textureStore/6da692.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/6da692.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6da692();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_6da692();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_6da692();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/6da692.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/6da692.wgsl.expected.wgsl
index 2497a69..ba262d3 100644
--- a/test/tint/builtins/gen/literal/textureStore/6da692.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/6da692.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6da692();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_6da692();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_6da692();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/731349.wgsl b/test/tint/builtins/gen/literal/textureStore/731349.wgsl
index c8f81d6..b8cda8e 100644
--- a/test/tint/builtins/gen/literal/textureStore/731349.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/731349.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_731349();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_731349();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_731349();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/731349.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/731349.wgsl.expected.wgsl
index d5466d8..b659a87 100644
--- a/test/tint/builtins/gen/literal/textureStore/731349.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/731349.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_731349();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_731349();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_731349();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/752da6.wgsl b/test/tint/builtins/gen/literal/textureStore/752da6.wgsl
index e2b0734..65b7216 100644
--- a/test/tint/builtins/gen/literal/textureStore/752da6.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/752da6.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_752da6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_752da6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_752da6();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/752da6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/752da6.wgsl.expected.wgsl
index e029549a8..9f4e06d 100644
--- a/test/tint/builtins/gen/literal/textureStore/752da6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/752da6.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_752da6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_752da6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_752da6();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/77c0ae.wgsl b/test/tint/builtins/gen/literal/textureStore/77c0ae.wgsl
index a5b9a55..bf17f8d 100644
--- a/test/tint/builtins/gen/literal/textureStore/77c0ae.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/77c0ae.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_77c0ae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_77c0ae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_77c0ae();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/77c0ae.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/77c0ae.wgsl.expected.wgsl
index 56cf079..ddc73be 100644
--- a/test/tint/builtins/gen/literal/textureStore/77c0ae.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/77c0ae.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_77c0ae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_77c0ae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_77c0ae();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/7cec8d.wgsl b/test/tint/builtins/gen/literal/textureStore/7cec8d.wgsl
index 282ed90..368bfcd 100644
--- a/test/tint/builtins/gen/literal/textureStore/7cec8d.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/7cec8d.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_7cec8d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_7cec8d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_7cec8d();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/7cec8d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/7cec8d.wgsl.expected.wgsl
index 89ed161..5218558 100644
--- a/test/tint/builtins/gen/literal/textureStore/7cec8d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/7cec8d.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_7cec8d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_7cec8d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_7cec8d();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/7f7fae.wgsl b/test/tint/builtins/gen/literal/textureStore/7f7fae.wgsl
index 8b5d0dd..6a205dd 100644
--- a/test/tint/builtins/gen/literal/textureStore/7f7fae.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/7f7fae.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_7f7fae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_7f7fae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_7f7fae();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/7f7fae.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/7f7fae.wgsl.expected.wgsl
index 438123c..eba8d52 100644
--- a/test/tint/builtins/gen/literal/textureStore/7f7fae.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/7f7fae.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_7f7fae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_7f7fae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_7f7fae();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/804942.wgsl b/test/tint/builtins/gen/literal/textureStore/804942.wgsl
index 4024631..cc50e1b 100644
--- a/test/tint/builtins/gen/literal/textureStore/804942.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/804942.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_804942();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_804942();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_804942();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/804942.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/804942.wgsl.expected.wgsl
index f4a325c..06f7057 100644
--- a/test/tint/builtins/gen/literal/textureStore/804942.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/804942.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_804942();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_804942();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_804942();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/805dae.wgsl b/test/tint/builtins/gen/literal/textureStore/805dae.wgsl
index 65e4420..3ea3e2d 100644
--- a/test/tint/builtins/gen/literal/textureStore/805dae.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/805dae.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_805dae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_805dae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_805dae();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/805dae.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/805dae.wgsl.expected.wgsl
index 667452d..7bc5067 100644
--- a/test/tint/builtins/gen/literal/textureStore/805dae.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/805dae.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_805dae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_805dae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_805dae();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl b/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl
index 55d29c6..fd88fc1 100644
--- a/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_83bcc1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_83bcc1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_83bcc1();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl.expected.wgsl
index f0ee863..e7e464e 100644
--- a/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_83bcc1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_83bcc1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_83bcc1();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/872747.wgsl b/test/tint/builtins/gen/literal/textureStore/872747.wgsl
index 98ccead..15b1772 100644
--- a/test/tint/builtins/gen/literal/textureStore/872747.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/872747.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_872747();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_872747();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_872747();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/872747.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/872747.wgsl.expected.wgsl
index b5c2914..50b7106 100644
--- a/test/tint/builtins/gen/literal/textureStore/872747.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/872747.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_872747();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_872747();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_872747();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/8e0479.wgsl b/test/tint/builtins/gen/literal/textureStore/8e0479.wgsl
index 271ed67..6f8b386 100644
--- a/test/tint/builtins/gen/literal/textureStore/8e0479.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/8e0479.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_8e0479();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_8e0479();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_8e0479();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/8e0479.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/8e0479.wgsl.expected.wgsl
index 07408ae..c831783 100644
--- a/test/tint/builtins/gen/literal/textureStore/8e0479.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/8e0479.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_8e0479();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_8e0479();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_8e0479();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/8f71a1.wgsl b/test/tint/builtins/gen/literal/textureStore/8f71a1.wgsl
index 4d840ce..5f53a96 100644
--- a/test/tint/builtins/gen/literal/textureStore/8f71a1.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/8f71a1.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_8f71a1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_8f71a1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_8f71a1();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/8f71a1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/8f71a1.wgsl.expected.wgsl
index 9bacd31..5ce5918 100644
--- a/test/tint/builtins/gen/literal/textureStore/8f71a1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/8f71a1.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_8f71a1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_8f71a1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_8f71a1();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/969534.wgsl b/test/tint/builtins/gen/literal/textureStore/969534.wgsl
index d73a34d..809d51e 100644
--- a/test/tint/builtins/gen/literal/textureStore/969534.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/969534.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_969534();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_969534();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_969534();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/969534.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/969534.wgsl.expected.wgsl
index 467cbda..41ae906 100644
--- a/test/tint/builtins/gen/literal/textureStore/969534.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/969534.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_969534();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_969534();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_969534();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/9a3ecc.wgsl b/test/tint/builtins/gen/literal/textureStore/9a3ecc.wgsl
index 72656e1..513ef4e 100644
--- a/test/tint/builtins/gen/literal/textureStore/9a3ecc.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/9a3ecc.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_9a3ecc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_9a3ecc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_9a3ecc();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/9a3ecc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/9a3ecc.wgsl.expected.wgsl
index 6fe66cb..072ae70 100644
--- a/test/tint/builtins/gen/literal/textureStore/9a3ecc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/9a3ecc.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_9a3ecc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_9a3ecc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_9a3ecc();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/9d9cd5.wgsl b/test/tint/builtins/gen/literal/textureStore/9d9cd5.wgsl
index 484a3cd..ee264b2 100644
--- a/test/tint/builtins/gen/literal/textureStore/9d9cd5.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/9d9cd5.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_9d9cd5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_9d9cd5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_9d9cd5();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/9d9cd5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/9d9cd5.wgsl.expected.wgsl
index 346f010..f321044 100644
--- a/test/tint/builtins/gen/literal/textureStore/9d9cd5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/9d9cd5.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_9d9cd5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_9d9cd5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_9d9cd5();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/9e3ec5.wgsl b/test/tint/builtins/gen/literal/textureStore/9e3ec5.wgsl
index da9282e..1f6eefc 100644
--- a/test/tint/builtins/gen/literal/textureStore/9e3ec5.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/9e3ec5.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_9e3ec5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_9e3ec5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_9e3ec5();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/9e3ec5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/9e3ec5.wgsl.expected.wgsl
index aaa8bf6..b2822b3 100644
--- a/test/tint/builtins/gen/literal/textureStore/9e3ec5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/9e3ec5.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_9e3ec5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_9e3ec5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_9e3ec5();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/ac67aa.wgsl b/test/tint/builtins/gen/literal/textureStore/ac67aa.wgsl
index 42d2b30..24023d5 100644
--- a/test/tint/builtins/gen/literal/textureStore/ac67aa.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/ac67aa.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_ac67aa();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_ac67aa();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_ac67aa();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/ac67aa.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/ac67aa.wgsl.expected.wgsl
index 21d0d22..c3095f6 100644
--- a/test/tint/builtins/gen/literal/textureStore/ac67aa.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/ac67aa.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_ac67aa();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_ac67aa();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_ac67aa();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/b706b1.wgsl b/test/tint/builtins/gen/literal/textureStore/b706b1.wgsl
index 949c932..bcc47da 100644
--- a/test/tint/builtins/gen/literal/textureStore/b706b1.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/b706b1.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_b706b1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_b706b1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_b706b1();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/b706b1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/b706b1.wgsl.expected.wgsl
index 7b77dc8..3c379e9 100644
--- a/test/tint/builtins/gen/literal/textureStore/b706b1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/b706b1.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_b706b1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_b706b1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_b706b1();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/bbcb7f.wgsl b/test/tint/builtins/gen/literal/textureStore/bbcb7f.wgsl
index ee04924..f53663a 100644
--- a/test/tint/builtins/gen/literal/textureStore/bbcb7f.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/bbcb7f.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_bbcb7f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_bbcb7f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_bbcb7f();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/bbcb7f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/bbcb7f.wgsl.expected.wgsl
index 8c4bb4d..3f24147 100644
--- a/test/tint/builtins/gen/literal/textureStore/bbcb7f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/bbcb7f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_bbcb7f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_bbcb7f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_bbcb7f();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/be6e30.wgsl b/test/tint/builtins/gen/literal/textureStore/be6e30.wgsl
index c192581..6546e46 100644
--- a/test/tint/builtins/gen/literal/textureStore/be6e30.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/be6e30.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_be6e30();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_be6e30();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_be6e30();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/be6e30.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/be6e30.wgsl.expected.wgsl
index 3a4c747..cf77394 100644
--- a/test/tint/builtins/gen/literal/textureStore/be6e30.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/be6e30.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_be6e30();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_be6e30();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_be6e30();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/bf775c.wgsl b/test/tint/builtins/gen/literal/textureStore/bf775c.wgsl
index e8a7f14..bdb2d08 100644
--- a/test/tint/builtins/gen/literal/textureStore/bf775c.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/bf775c.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_bf775c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_bf775c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_bf775c();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/bf775c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/bf775c.wgsl.expected.wgsl
index db5d80e..47b4f23 100644
--- a/test/tint/builtins/gen/literal/textureStore/bf775c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/bf775c.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_bf775c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_bf775c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_bf775c();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/c5af1e.wgsl b/test/tint/builtins/gen/literal/textureStore/c5af1e.wgsl
index 716f491..4c10f22 100644
--- a/test/tint/builtins/gen/literal/textureStore/c5af1e.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/c5af1e.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_c5af1e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_c5af1e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_c5af1e();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/c5af1e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/c5af1e.wgsl.expected.wgsl
index 02c2ef8..003aee2 100644
--- a/test/tint/builtins/gen/literal/textureStore/c5af1e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/c5af1e.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_c5af1e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_c5af1e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_c5af1e();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/c863be.wgsl b/test/tint/builtins/gen/literal/textureStore/c863be.wgsl
index abb287f..b927835 100644
--- a/test/tint/builtins/gen/literal/textureStore/c863be.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/c863be.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_c863be();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_c863be();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_c863be();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/c863be.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/c863be.wgsl.expected.wgsl
index 46b5a69..7c6f8ac 100644
--- a/test/tint/builtins/gen/literal/textureStore/c863be.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/c863be.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_c863be();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_c863be();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_c863be();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl b/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl
index 44468a8..5b73aef 100644
--- a/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_d73b5c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_d73b5c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_d73b5c();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl.expected.wgsl
index 2b09cbc..bed8187 100644
--- a/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_d73b5c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_d73b5c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_d73b5c();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/dd7d81.wgsl b/test/tint/builtins/gen/literal/textureStore/dd7d81.wgsl
index 8ea8125..b1cd4fa 100644
--- a/test/tint/builtins/gen/literal/textureStore/dd7d81.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/dd7d81.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_dd7d81();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_dd7d81();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_dd7d81();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/dd7d81.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/dd7d81.wgsl.expected.wgsl
index f7f4bc1..4c1f529 100644
--- a/test/tint/builtins/gen/literal/textureStore/dd7d81.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/dd7d81.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_dd7d81();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_dd7d81();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_dd7d81();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/dde364.wgsl b/test/tint/builtins/gen/literal/textureStore/dde364.wgsl
index e09a8e5..93f5a32 100644
--- a/test/tint/builtins/gen/literal/textureStore/dde364.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/dde364.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_dde364();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_dde364();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_dde364();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/dde364.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/dde364.wgsl.expected.wgsl
index 044b09d..f7dc0c1 100644
--- a/test/tint/builtins/gen/literal/textureStore/dde364.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/dde364.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_dde364();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_dde364();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_dde364();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/e885e8.wgsl b/test/tint/builtins/gen/literal/textureStore/e885e8.wgsl
index a6706d5..2689758 100644
--- a/test/tint/builtins/gen/literal/textureStore/e885e8.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/e885e8.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_e885e8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_e885e8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_e885e8();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/e885e8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/e885e8.wgsl.expected.wgsl
index eac4ea6..f7b3caa 100644
--- a/test/tint/builtins/gen/literal/textureStore/e885e8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/e885e8.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, 1, vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_e885e8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_e885e8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_e885e8();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/eb702f.wgsl b/test/tint/builtins/gen/literal/textureStore/eb702f.wgsl
index 916fc32..5e80ec5 100644
--- a/test/tint/builtins/gen/literal/textureStore/eb702f.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/eb702f.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_eb702f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_eb702f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_eb702f();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/eb702f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/eb702f.wgsl.expected.wgsl
index c2b8653..0e86ad2 100644
--- a/test/tint/builtins/gen/literal/textureStore/eb702f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/eb702f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_eb702f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_eb702f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_eb702f();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/eb78b9.wgsl b/test/tint/builtins/gen/literal/textureStore/eb78b9.wgsl
index 6d0e377..4888ed2 100644
--- a/test/tint/builtins/gen/literal/textureStore/eb78b9.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/eb78b9.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_eb78b9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_eb78b9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_eb78b9();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/eb78b9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/eb78b9.wgsl.expected.wgsl
index 09472ae..c200bb2 100644
--- a/test/tint/builtins/gen/literal/textureStore/eb78b9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/eb78b9.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_eb78b9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_eb78b9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_eb78b9();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/ee6acc.wgsl b/test/tint/builtins/gen/literal/textureStore/ee6acc.wgsl
index a5b15c1..5be75a6 100644
--- a/test/tint/builtins/gen/literal/textureStore/ee6acc.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/ee6acc.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_ee6acc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_ee6acc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_ee6acc();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/ee6acc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/ee6acc.wgsl.expected.wgsl
index 8b5b0ab..377310e 100644
--- a/test/tint/builtins/gen/literal/textureStore/ee6acc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/ee6acc.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_ee6acc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_ee6acc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_ee6acc();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/ef9f2f.wgsl b/test/tint/builtins/gen/literal/textureStore/ef9f2f.wgsl
index b3effb6..d2a3935 100644
--- a/test/tint/builtins/gen/literal/textureStore/ef9f2f.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/ef9f2f.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_ef9f2f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_ef9f2f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_ef9f2f();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/ef9f2f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/ef9f2f.wgsl.expected.wgsl
index 72cb6d0..9a0b5cb 100644
--- a/test/tint/builtins/gen/literal/textureStore/ef9f2f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/ef9f2f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_ef9f2f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_ef9f2f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_ef9f2f();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/f8dead.wgsl b/test/tint/builtins/gen/literal/textureStore/f8dead.wgsl
index b49ebc3..f3054ef 100644
--- a/test/tint/builtins/gen/literal/textureStore/f8dead.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/f8dead.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_f8dead();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_f8dead();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_f8dead();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/f8dead.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/f8dead.wgsl.expected.wgsl
index eabfbca..450fd25 100644
--- a/test/tint/builtins/gen/literal/textureStore/f8dead.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/f8dead.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec3<i32>(), vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_f8dead();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_f8dead();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_f8dead();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/f9be83.wgsl b/test/tint/builtins/gen/literal/textureStore/f9be83.wgsl
index cb34f7a..5677404 100644
--- a/test/tint/builtins/gen/literal/textureStore/f9be83.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/f9be83.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_f9be83();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_f9be83();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_f9be83();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/f9be83.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/f9be83.wgsl.expected.wgsl
index c6bb3c4..0b0ece1 100644
--- a/test/tint/builtins/gen/literal/textureStore/f9be83.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/f9be83.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_f9be83();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_f9be83();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_f9be83();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/fb9a8f.wgsl b/test/tint/builtins/gen/literal/textureStore/fb9a8f.wgsl
index fa69110..3186385 100644
--- a/test/tint/builtins/gen/literal/textureStore/fb9a8f.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/fb9a8f.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_fb9a8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_fb9a8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_fb9a8f();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/fb9a8f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/fb9a8f.wgsl.expected.wgsl
index 27aa300..e1b6643 100644
--- a/test/tint/builtins/gen/literal/textureStore/fb9a8f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/fb9a8f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, 1, vec4<u32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_fb9a8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_fb9a8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_fb9a8f();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/fbf53f.wgsl b/test/tint/builtins/gen/literal/textureStore/fbf53f.wgsl
index 541f45c..b65045b 100644
--- a/test/tint/builtins/gen/literal/textureStore/fbf53f.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/fbf53f.wgsl
@@ -29,18 +29,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_fbf53f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_fbf53f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_fbf53f();
 }
diff --git a/test/tint/builtins/gen/literal/textureStore/fbf53f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/textureStore/fbf53f.wgsl.expected.wgsl
index 8ee5316..dd790f2 100644
--- a/test/tint/builtins/gen/literal/textureStore/fbf53f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/textureStore/fbf53f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   textureStore(arg_0, vec2<i32>(), 1, vec4<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_fbf53f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_fbf53f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_fbf53f();
 }
diff --git a/test/tint/builtins/gen/literal/transpose/2585cd.wgsl b/test/tint/builtins/gen/literal/transpose/2585cd.wgsl
index c5684bb..c8f4f21 100644
--- a/test/tint/builtins/gen/literal/transpose/2585cd.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/2585cd.wgsl
@@ -28,18 +28,18 @@
   var res: mat3x4<f32> = transpose(mat4x3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_2585cd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_2585cd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_2585cd();
 }
diff --git a/test/tint/builtins/gen/literal/transpose/2585cd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/transpose/2585cd.wgsl.expected.wgsl
index e2bcbee..56ecea9 100644
--- a/test/tint/builtins/gen/literal/transpose/2585cd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/2585cd.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : mat3x4<f32> = transpose(mat4x3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_2585cd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_2585cd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_2585cd();
 }
diff --git a/test/tint/builtins/gen/literal/transpose/31d679.wgsl b/test/tint/builtins/gen/literal/transpose/31d679.wgsl
index 389fd14..5e9a241 100644
--- a/test/tint/builtins/gen/literal/transpose/31d679.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/31d679.wgsl
@@ -28,18 +28,18 @@
   var res: mat2x2<f32> = transpose(mat2x2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_31d679();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_31d679();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_31d679();
 }
diff --git a/test/tint/builtins/gen/literal/transpose/31d679.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/transpose/31d679.wgsl.expected.wgsl
index f588cba..20089bd 100644
--- a/test/tint/builtins/gen/literal/transpose/31d679.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/31d679.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : mat2x2<f32> = transpose(mat2x2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_31d679();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_31d679();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_31d679();
 }
diff --git a/test/tint/builtins/gen/literal/transpose/31e37e.wgsl b/test/tint/builtins/gen/literal/transpose/31e37e.wgsl
index bbce3e9..354e1ac 100644
--- a/test/tint/builtins/gen/literal/transpose/31e37e.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/31e37e.wgsl
@@ -28,18 +28,18 @@
   var res: mat2x4<f32> = transpose(mat4x2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_31e37e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_31e37e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_31e37e();
 }
diff --git a/test/tint/builtins/gen/literal/transpose/31e37e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/transpose/31e37e.wgsl.expected.wgsl
index 3462f91..b363af9 100644
--- a/test/tint/builtins/gen/literal/transpose/31e37e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/31e37e.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : mat2x4<f32> = transpose(mat4x2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_31e37e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_31e37e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_31e37e();
 }
diff --git a/test/tint/builtins/gen/literal/transpose/4ce359.wgsl b/test/tint/builtins/gen/literal/transpose/4ce359.wgsl
index 40aa959..0ce9023 100644
--- a/test/tint/builtins/gen/literal/transpose/4ce359.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/4ce359.wgsl
@@ -28,18 +28,18 @@
   var res: mat4x2<f32> = transpose(mat2x4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_4ce359();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_4ce359();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_4ce359();
 }
diff --git a/test/tint/builtins/gen/literal/transpose/4ce359.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/transpose/4ce359.wgsl.expected.wgsl
index a4123d5..9a3d630 100644
--- a/test/tint/builtins/gen/literal/transpose/4ce359.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/4ce359.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : mat4x2<f32> = transpose(mat2x4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_4ce359();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_4ce359();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_4ce359();
 }
diff --git a/test/tint/builtins/gen/literal/transpose/4dc9a1.wgsl b/test/tint/builtins/gen/literal/transpose/4dc9a1.wgsl
index 8ff6bb9..9cf6f13 100644
--- a/test/tint/builtins/gen/literal/transpose/4dc9a1.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/4dc9a1.wgsl
@@ -28,18 +28,18 @@
   var res: mat3x2<f32> = transpose(mat2x3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_4dc9a1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_4dc9a1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_4dc9a1();
 }
diff --git a/test/tint/builtins/gen/literal/transpose/4dc9a1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/transpose/4dc9a1.wgsl.expected.wgsl
index 9a579e0..7d1b36f7 100644
--- a/test/tint/builtins/gen/literal/transpose/4dc9a1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/4dc9a1.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : mat3x2<f32> = transpose(mat2x3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_4dc9a1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_4dc9a1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_4dc9a1();
 }
diff --git a/test/tint/builtins/gen/literal/transpose/854336.wgsl b/test/tint/builtins/gen/literal/transpose/854336.wgsl
index 46949b2..d552afa 100644
--- a/test/tint/builtins/gen/literal/transpose/854336.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/854336.wgsl
@@ -28,18 +28,18 @@
   var res: mat3x3<f32> = transpose(mat3x3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_854336();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_854336();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_854336();
 }
diff --git a/test/tint/builtins/gen/literal/transpose/854336.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/transpose/854336.wgsl.expected.wgsl
index 9eac4c0..e5c13cd 100644
--- a/test/tint/builtins/gen/literal/transpose/854336.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/854336.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : mat3x3<f32> = transpose(mat3x3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_854336();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_854336();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_854336();
 }
diff --git a/test/tint/builtins/gen/literal/transpose/c1b600.wgsl b/test/tint/builtins/gen/literal/transpose/c1b600.wgsl
index 4030074..3179333 100644
--- a/test/tint/builtins/gen/literal/transpose/c1b600.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/c1b600.wgsl
@@ -28,18 +28,18 @@
   var res: mat4x4<f32> = transpose(mat4x4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_c1b600();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_c1b600();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_c1b600();
 }
diff --git a/test/tint/builtins/gen/literal/transpose/c1b600.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/transpose/c1b600.wgsl.expected.wgsl
index f391f5c..a360f2a 100644
--- a/test/tint/builtins/gen/literal/transpose/c1b600.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/c1b600.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : mat4x4<f32> = transpose(mat4x4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_c1b600();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_c1b600();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_c1b600();
 }
diff --git a/test/tint/builtins/gen/literal/transpose/d8f8ba.wgsl b/test/tint/builtins/gen/literal/transpose/d8f8ba.wgsl
index 8c75b91..31884e2 100644
--- a/test/tint/builtins/gen/literal/transpose/d8f8ba.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/d8f8ba.wgsl
@@ -28,18 +28,18 @@
   var res: mat4x3<f32> = transpose(mat3x4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_d8f8ba();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_d8f8ba();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_d8f8ba();
 }
diff --git a/test/tint/builtins/gen/literal/transpose/d8f8ba.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/transpose/d8f8ba.wgsl.expected.wgsl
index e5af1d4..89b49c4 100644
--- a/test/tint/builtins/gen/literal/transpose/d8f8ba.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/d8f8ba.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : mat4x3<f32> = transpose(mat3x4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_d8f8ba();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_d8f8ba();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_d8f8ba();
 }
diff --git a/test/tint/builtins/gen/literal/transpose/ed4bdc.wgsl b/test/tint/builtins/gen/literal/transpose/ed4bdc.wgsl
index 7274022..e726399 100644
--- a/test/tint/builtins/gen/literal/transpose/ed4bdc.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/ed4bdc.wgsl
@@ -28,18 +28,18 @@
   var res: mat2x3<f32> = transpose(mat3x2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_ed4bdc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_ed4bdc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_ed4bdc();
 }
diff --git a/test/tint/builtins/gen/literal/transpose/ed4bdc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/transpose/ed4bdc.wgsl.expected.wgsl
index 462a2cf..e1ce0ce 100644
--- a/test/tint/builtins/gen/literal/transpose/ed4bdc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/ed4bdc.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : mat2x3<f32> = transpose(mat3x2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_ed4bdc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_ed4bdc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_ed4bdc();
 }
diff --git a/test/tint/builtins/gen/literal/trunc/562d05.wgsl b/test/tint/builtins/gen/literal/trunc/562d05.wgsl
index 1ee6499..e90c537c 100644
--- a/test/tint/builtins/gen/literal/trunc/562d05.wgsl
+++ b/test/tint/builtins/gen/literal/trunc/562d05.wgsl
@@ -28,18 +28,18 @@
   var res: vec3<f32> = trunc(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_562d05();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   trunc_562d05();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   trunc_562d05();
 }
diff --git a/test/tint/builtins/gen/literal/trunc/562d05.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/trunc/562d05.wgsl.expected.wgsl
index cef9697..590a63d 100644
--- a/test/tint/builtins/gen/literal/trunc/562d05.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/trunc/562d05.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec3<f32> = trunc(vec3<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_562d05();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   trunc_562d05();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   trunc_562d05();
 }
diff --git a/test/tint/builtins/gen/literal/trunc/e183aa.wgsl b/test/tint/builtins/gen/literal/trunc/e183aa.wgsl
index a29a53e..20cfe8a 100644
--- a/test/tint/builtins/gen/literal/trunc/e183aa.wgsl
+++ b/test/tint/builtins/gen/literal/trunc/e183aa.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = trunc(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_e183aa();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   trunc_e183aa();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   trunc_e183aa();
 }
diff --git a/test/tint/builtins/gen/literal/trunc/e183aa.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/trunc/e183aa.wgsl.expected.wgsl
index 94e505f..ed1ba37 100644
--- a/test/tint/builtins/gen/literal/trunc/e183aa.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/trunc/e183aa.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = trunc(vec4<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_e183aa();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   trunc_e183aa();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   trunc_e183aa();
 }
diff --git a/test/tint/builtins/gen/literal/trunc/eb83df.wgsl b/test/tint/builtins/gen/literal/trunc/eb83df.wgsl
index 8297d29..fba8f0d 100644
--- a/test/tint/builtins/gen/literal/trunc/eb83df.wgsl
+++ b/test/tint/builtins/gen/literal/trunc/eb83df.wgsl
@@ -28,18 +28,18 @@
   var res: f32 = trunc(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_eb83df();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   trunc_eb83df();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   trunc_eb83df();
 }
diff --git a/test/tint/builtins/gen/literal/trunc/eb83df.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/trunc/eb83df.wgsl.expected.wgsl
index 7392b6c..edede67 100644
--- a/test/tint/builtins/gen/literal/trunc/eb83df.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/trunc/eb83df.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : f32 = trunc(1.0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_eb83df();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   trunc_eb83df();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   trunc_eb83df();
 }
diff --git a/test/tint/builtins/gen/literal/trunc/f370d3.wgsl b/test/tint/builtins/gen/literal/trunc/f370d3.wgsl
index 9521b39..89cd3fc 100644
--- a/test/tint/builtins/gen/literal/trunc/f370d3.wgsl
+++ b/test/tint/builtins/gen/literal/trunc/f370d3.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = trunc(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_f370d3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   trunc_f370d3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   trunc_f370d3();
 }
diff --git a/test/tint/builtins/gen/literal/trunc/f370d3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/trunc/f370d3.wgsl.expected.wgsl
index 8393d97..9cd166a 100644
--- a/test/tint/builtins/gen/literal/trunc/f370d3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/trunc/f370d3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = trunc(vec2<f32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_f370d3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   trunc_f370d3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   trunc_f370d3();
 }
diff --git a/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl b/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl
index dd78296..a9fa742 100644
--- a/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl
+++ b/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = unpack2x16float(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack2x16float_32a5cf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack2x16float_32a5cf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack2x16float_32a5cf();
 }
diff --git a/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.wgsl
index fac9058..76d821a 100644
--- a/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = unpack2x16float(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack2x16float_32a5cf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack2x16float_32a5cf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack2x16float_32a5cf();
 }
diff --git a/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl b/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl
index a832d27..3cfec46 100644
--- a/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl
+++ b/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = unpack2x16snorm(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack2x16snorm_b4aea6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack2x16snorm_b4aea6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack2x16snorm_b4aea6();
 }
diff --git a/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.wgsl
index a97f875..24d8b1d 100644
--- a/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = unpack2x16snorm(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack2x16snorm_b4aea6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack2x16snorm_b4aea6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack2x16snorm_b4aea6();
 }
diff --git a/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl b/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl
index 73a124e..e69c74c 100644
--- a/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl
+++ b/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl
@@ -28,18 +28,18 @@
   var res: vec2<f32> = unpack2x16unorm(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack2x16unorm_7699c0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack2x16unorm_7699c0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack2x16unorm_7699c0();
 }
diff --git a/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.wgsl
index 784f95a..46b5d02 100644
--- a/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec2<f32> = unpack2x16unorm(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack2x16unorm_7699c0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack2x16unorm_7699c0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack2x16unorm_7699c0();
 }
diff --git a/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl b/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl
index a6c458e..1800da3 100644
--- a/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl
+++ b/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = unpack4x8snorm(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack4x8snorm_523fb3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack4x8snorm_523fb3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack4x8snorm_523fb3();
 }
diff --git a/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.wgsl
index d3baad3..fc1452d 100644
--- a/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = unpack4x8snorm(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack4x8snorm_523fb3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack4x8snorm_523fb3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack4x8snorm_523fb3();
 }
diff --git a/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl b/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl
index 6b3c5e7..5bf0c3a 100644
--- a/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl
+++ b/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl
@@ -28,18 +28,18 @@
   var res: vec4<f32> = unpack4x8unorm(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack4x8unorm_750c74();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack4x8unorm_750c74();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack4x8unorm_750c74();
 }
diff --git a/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.wgsl
index bfedafb..eeb5aa8 100644
--- a/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.wgsl
@@ -2,18 +2,18 @@
   var res : vec4<f32> = unpack4x8unorm(1u);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack4x8unorm_750c74();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack4x8unorm_750c74();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack4x8unorm_750c74();
 }
diff --git a/test/tint/builtins/gen/literal/workgroupBarrier/a17f7f.wgsl b/test/tint/builtins/gen/literal/workgroupBarrier/a17f7f.wgsl
index 3b3f327..c19b983 100644
--- a/test/tint/builtins/gen/literal/workgroupBarrier/a17f7f.wgsl
+++ b/test/tint/builtins/gen/literal/workgroupBarrier/a17f7f.wgsl
@@ -28,7 +28,7 @@
   workgroupBarrier();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   workgroupBarrier_a17f7f();
 }
diff --git a/test/tint/builtins/gen/literal/workgroupBarrier/a17f7f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/workgroupBarrier/a17f7f.wgsl.expected.wgsl
index 34db6c8..377a35e 100644
--- a/test/tint/builtins/gen/literal/workgroupBarrier/a17f7f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/workgroupBarrier/a17f7f.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   workgroupBarrier();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   workgroupBarrier_a17f7f();
 }
diff --git a/test/tint/builtins/gen/var/abs/002533.wgsl b/test/tint/builtins/gen/var/abs/002533.wgsl
index edf0d3e..2c4ce23 100644
--- a/test/tint/builtins/gen/var/abs/002533.wgsl
+++ b/test/tint/builtins/gen/var/abs/002533.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_002533();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_002533();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_002533();
 }
diff --git a/test/tint/builtins/gen/var/abs/002533.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/002533.wgsl.expected.wgsl
index d62346e..53257d2 100644
--- a/test/tint/builtins/gen/var/abs/002533.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/002533.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_002533();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_002533();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_002533();
 }
diff --git a/test/tint/builtins/gen/var/abs/005174.wgsl b/test/tint/builtins/gen/var/abs/005174.wgsl
index 88d62cf..ad4d4eb 100644
--- a/test/tint/builtins/gen/var/abs/005174.wgsl
+++ b/test/tint/builtins/gen/var/abs/005174.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_005174();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_005174();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_005174();
 }
diff --git a/test/tint/builtins/gen/var/abs/005174.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/005174.wgsl.expected.wgsl
index 43910f8..4df9a60 100644
--- a/test/tint/builtins/gen/var/abs/005174.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/005174.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_005174();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_005174();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_005174();
 }
diff --git a/test/tint/builtins/gen/var/abs/1ce782.wgsl b/test/tint/builtins/gen/var/abs/1ce782.wgsl
index d1a59e8..7193449 100644
--- a/test/tint/builtins/gen/var/abs/1ce782.wgsl
+++ b/test/tint/builtins/gen/var/abs/1ce782.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<u32> = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_1ce782();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_1ce782();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_1ce782();
 }
diff --git a/test/tint/builtins/gen/var/abs/1ce782.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/1ce782.wgsl.expected.wgsl
index 74c2441..ad8ad33 100644
--- a/test/tint/builtins/gen/var/abs/1ce782.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/1ce782.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<u32> = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_1ce782();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_1ce782();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_1ce782();
 }
diff --git a/test/tint/builtins/gen/var/abs/1e9d53.wgsl b/test/tint/builtins/gen/var/abs/1e9d53.wgsl
index b8c68d4..9e58c8a 100644
--- a/test/tint/builtins/gen/var/abs/1e9d53.wgsl
+++ b/test/tint/builtins/gen/var/abs/1e9d53.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_1e9d53();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_1e9d53();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_1e9d53();
 }
diff --git a/test/tint/builtins/gen/var/abs/1e9d53.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/1e9d53.wgsl.expected.wgsl
index c2ff64d..40fca86 100644
--- a/test/tint/builtins/gen/var/abs/1e9d53.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/1e9d53.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_1e9d53();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_1e9d53();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_1e9d53();
 }
diff --git a/test/tint/builtins/gen/var/abs/467cd1.wgsl b/test/tint/builtins/gen/var/abs/467cd1.wgsl
index cbc465a..d6c10a1 100644
--- a/test/tint/builtins/gen/var/abs/467cd1.wgsl
+++ b/test/tint/builtins/gen/var/abs/467cd1.wgsl
@@ -29,18 +29,18 @@
   var res: u32 = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_467cd1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_467cd1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_467cd1();
 }
diff --git a/test/tint/builtins/gen/var/abs/467cd1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/467cd1.wgsl.expected.wgsl
index 47ad192..1384688 100644
--- a/test/tint/builtins/gen/var/abs/467cd1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/467cd1.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : u32 = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_467cd1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_467cd1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_467cd1();
 }
diff --git a/test/tint/builtins/gen/var/abs/4ad288.wgsl b/test/tint/builtins/gen/var/abs/4ad288.wgsl
index 46aeeef..04efcf8 100644
--- a/test/tint/builtins/gen/var/abs/4ad288.wgsl
+++ b/test/tint/builtins/gen/var/abs/4ad288.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_4ad288();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_4ad288();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_4ad288();
 }
diff --git a/test/tint/builtins/gen/var/abs/4ad288.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/4ad288.wgsl.expected.wgsl
index 261ea6d..1a9cb02 100644
--- a/test/tint/builtins/gen/var/abs/4ad288.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/4ad288.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : i32 = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_4ad288();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_4ad288();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_4ad288();
 }
diff --git a/test/tint/builtins/gen/var/abs/5ad50a.wgsl b/test/tint/builtins/gen/var/abs/5ad50a.wgsl
index 0d0385e..3ffc963 100644
--- a/test/tint/builtins/gen/var/abs/5ad50a.wgsl
+++ b/test/tint/builtins/gen/var/abs/5ad50a.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_5ad50a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_5ad50a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_5ad50a();
 }
diff --git a/test/tint/builtins/gen/var/abs/5ad50a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/5ad50a.wgsl.expected.wgsl
index c26a8c0..ce94d61 100644
--- a/test/tint/builtins/gen/var/abs/5ad50a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/5ad50a.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<i32> = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_5ad50a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_5ad50a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_5ad50a();
 }
diff --git a/test/tint/builtins/gen/var/abs/7326de.wgsl b/test/tint/builtins/gen/var/abs/7326de.wgsl
index 3bbe715..67b7afa 100644
--- a/test/tint/builtins/gen/var/abs/7326de.wgsl
+++ b/test/tint/builtins/gen/var/abs/7326de.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<u32> = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_7326de();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_7326de();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_7326de();
 }
diff --git a/test/tint/builtins/gen/var/abs/7326de.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/7326de.wgsl.expected.wgsl
index 312eaa1..c697f35 100644
--- a/test/tint/builtins/gen/var/abs/7326de.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/7326de.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<u32> = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_7326de();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_7326de();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_7326de();
 }
diff --git a/test/tint/builtins/gen/var/abs/7f28e6.wgsl b/test/tint/builtins/gen/var/abs/7f28e6.wgsl
index 1768ce9..50ae79f 100644
--- a/test/tint/builtins/gen/var/abs/7f28e6.wgsl
+++ b/test/tint/builtins/gen/var/abs/7f28e6.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<u32> = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_7f28e6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_7f28e6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_7f28e6();
 }
diff --git a/test/tint/builtins/gen/var/abs/7f28e6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/7f28e6.wgsl.expected.wgsl
index 3d20295..108abf3 100644
--- a/test/tint/builtins/gen/var/abs/7f28e6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/7f28e6.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<u32> = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_7f28e6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_7f28e6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_7f28e6();
 }
diff --git a/test/tint/builtins/gen/var/abs/7faa9e.wgsl b/test/tint/builtins/gen/var/abs/7faa9e.wgsl
index 49c451c..e9f14dd 100644
--- a/test/tint/builtins/gen/var/abs/7faa9e.wgsl
+++ b/test/tint/builtins/gen/var/abs/7faa9e.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_7faa9e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_7faa9e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_7faa9e();
 }
diff --git a/test/tint/builtins/gen/var/abs/7faa9e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/7faa9e.wgsl.expected.wgsl
index 95ebb29..e20ea39 100644
--- a/test/tint/builtins/gen/var/abs/7faa9e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/7faa9e.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<i32> = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_7faa9e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_7faa9e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_7faa9e();
 }
diff --git a/test/tint/builtins/gen/var/abs/9c80a6.wgsl b/test/tint/builtins/gen/var/abs/9c80a6.wgsl
index ec9f3e2..8ebf2c4 100644
--- a/test/tint/builtins/gen/var/abs/9c80a6.wgsl
+++ b/test/tint/builtins/gen/var/abs/9c80a6.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<i32> = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_9c80a6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_9c80a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_9c80a6();
 }
diff --git a/test/tint/builtins/gen/var/abs/9c80a6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/9c80a6.wgsl.expected.wgsl
index 9fb60c8..5086683 100644
--- a/test/tint/builtins/gen/var/abs/9c80a6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/9c80a6.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<i32> = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_9c80a6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_9c80a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_9c80a6();
 }
diff --git a/test/tint/builtins/gen/var/abs/b96037.wgsl b/test/tint/builtins/gen/var/abs/b96037.wgsl
index 7d4df57..6ce40d8 100644
--- a/test/tint/builtins/gen/var/abs/b96037.wgsl
+++ b/test/tint/builtins/gen/var/abs/b96037.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_b96037();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_b96037();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_b96037();
 }
diff --git a/test/tint/builtins/gen/var/abs/b96037.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/b96037.wgsl.expected.wgsl
index e77b0cb..8886335 100644
--- a/test/tint/builtins/gen/var/abs/b96037.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/b96037.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = abs(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   abs_b96037();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   abs_b96037();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   abs_b96037();
 }
diff --git a/test/tint/builtins/gen/var/acos/489247.wgsl b/test/tint/builtins/gen/var/acos/489247.wgsl
index 3fe1481..65f0811 100644
--- a/test/tint/builtins/gen/var/acos/489247.wgsl
+++ b/test/tint/builtins/gen/var/acos/489247.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = acos(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_489247();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   acos_489247();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   acos_489247();
 }
diff --git a/test/tint/builtins/gen/var/acos/489247.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acos/489247.wgsl.expected.wgsl
index c1cf170..80b99f6 100644
--- a/test/tint/builtins/gen/var/acos/489247.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acos/489247.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = acos(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_489247();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   acos_489247();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   acos_489247();
 }
diff --git a/test/tint/builtins/gen/var/acos/8e2acf.wgsl b/test/tint/builtins/gen/var/acos/8e2acf.wgsl
index d706cf1..b28cae5 100644
--- a/test/tint/builtins/gen/var/acos/8e2acf.wgsl
+++ b/test/tint/builtins/gen/var/acos/8e2acf.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = acos(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_8e2acf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   acos_8e2acf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   acos_8e2acf();
 }
diff --git a/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.wgsl
index b284e35..9327316 100644
--- a/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = acos(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_8e2acf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   acos_8e2acf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   acos_8e2acf();
 }
diff --git a/test/tint/builtins/gen/var/acos/a610c4.wgsl b/test/tint/builtins/gen/var/acos/a610c4.wgsl
index f8c535b..cd6969b 100644
--- a/test/tint/builtins/gen/var/acos/a610c4.wgsl
+++ b/test/tint/builtins/gen/var/acos/a610c4.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = acos(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_a610c4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   acos_a610c4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   acos_a610c4();
 }
diff --git a/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.wgsl
index fed3a9e..9085b26 100644
--- a/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = acos(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_a610c4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   acos_a610c4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   acos_a610c4();
 }
diff --git a/test/tint/builtins/gen/var/acos/dfc915.wgsl b/test/tint/builtins/gen/var/acos/dfc915.wgsl
index e517978..0fd72f2 100644
--- a/test/tint/builtins/gen/var/acos/dfc915.wgsl
+++ b/test/tint/builtins/gen/var/acos/dfc915.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = acos(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_dfc915();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   acos_dfc915();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   acos_dfc915();
 }
diff --git a/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.wgsl
index f1044c3..54bdaa4 100644
--- a/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = acos(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   acos_dfc915();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   acos_dfc915();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   acos_dfc915();
 }
diff --git a/test/tint/builtins/gen/var/all/353d6a.wgsl b/test/tint/builtins/gen/var/all/353d6a.wgsl
index e443991..59787d6 100644
--- a/test/tint/builtins/gen/var/all/353d6a.wgsl
+++ b/test/tint/builtins/gen/var/all/353d6a.wgsl
@@ -29,18 +29,18 @@
   var res: bool = all(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   all_353d6a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   all_353d6a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   all_353d6a();
 }
diff --git a/test/tint/builtins/gen/var/all/353d6a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/all/353d6a.wgsl.expected.wgsl
index d9993da..ae1199f 100644
--- a/test/tint/builtins/gen/var/all/353d6a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/all/353d6a.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : bool = all(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   all_353d6a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   all_353d6a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   all_353d6a();
 }
diff --git a/test/tint/builtins/gen/var/all/986c7b.wgsl b/test/tint/builtins/gen/var/all/986c7b.wgsl
index 5248372..4fbd4dc 100644
--- a/test/tint/builtins/gen/var/all/986c7b.wgsl
+++ b/test/tint/builtins/gen/var/all/986c7b.wgsl
@@ -29,18 +29,18 @@
   var res: bool = all(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   all_986c7b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   all_986c7b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   all_986c7b();
 }
diff --git a/test/tint/builtins/gen/var/all/986c7b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/all/986c7b.wgsl.expected.wgsl
index 6aab44d..eeef0ea 100644
--- a/test/tint/builtins/gen/var/all/986c7b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/all/986c7b.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : bool = all(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   all_986c7b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   all_986c7b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   all_986c7b();
 }
diff --git a/test/tint/builtins/gen/var/all/bd2dba.wgsl b/test/tint/builtins/gen/var/all/bd2dba.wgsl
index 2383e0d..52684ef 100644
--- a/test/tint/builtins/gen/var/all/bd2dba.wgsl
+++ b/test/tint/builtins/gen/var/all/bd2dba.wgsl
@@ -29,18 +29,18 @@
   var res: bool = all(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   all_bd2dba();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   all_bd2dba();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   all_bd2dba();
 }
diff --git a/test/tint/builtins/gen/var/all/bd2dba.wgsl.expected.wgsl b/test/tint/builtins/gen/var/all/bd2dba.wgsl.expected.wgsl
index 4bfafa1..94f5c4e 100644
--- a/test/tint/builtins/gen/var/all/bd2dba.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/all/bd2dba.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : bool = all(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   all_bd2dba();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   all_bd2dba();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   all_bd2dba();
 }
diff --git a/test/tint/builtins/gen/var/all/f46790.wgsl b/test/tint/builtins/gen/var/all/f46790.wgsl
index b8217b9..1d97c25 100644
--- a/test/tint/builtins/gen/var/all/f46790.wgsl
+++ b/test/tint/builtins/gen/var/all/f46790.wgsl
@@ -29,18 +29,18 @@
   var res: bool = all(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   all_f46790();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   all_f46790();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   all_f46790();
 }
diff --git a/test/tint/builtins/gen/var/all/f46790.wgsl.expected.wgsl b/test/tint/builtins/gen/var/all/f46790.wgsl.expected.wgsl
index 6921680..da95275 100644
--- a/test/tint/builtins/gen/var/all/f46790.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/all/f46790.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : bool = all(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   all_f46790();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   all_f46790();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   all_f46790();
 }
diff --git a/test/tint/builtins/gen/var/any/083428.wgsl b/test/tint/builtins/gen/var/any/083428.wgsl
index 3a7a69a..b164c4e 100644
--- a/test/tint/builtins/gen/var/any/083428.wgsl
+++ b/test/tint/builtins/gen/var/any/083428.wgsl
@@ -29,18 +29,18 @@
   var res: bool = any(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   any_083428();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   any_083428();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   any_083428();
 }
diff --git a/test/tint/builtins/gen/var/any/083428.wgsl.expected.wgsl b/test/tint/builtins/gen/var/any/083428.wgsl.expected.wgsl
index 6db2c9a..3df99c6 100644
--- a/test/tint/builtins/gen/var/any/083428.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/any/083428.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : bool = any(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   any_083428();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   any_083428();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   any_083428();
 }
diff --git a/test/tint/builtins/gen/var/any/0e3e58.wgsl b/test/tint/builtins/gen/var/any/0e3e58.wgsl
index 270012c..557b4a9 100644
--- a/test/tint/builtins/gen/var/any/0e3e58.wgsl
+++ b/test/tint/builtins/gen/var/any/0e3e58.wgsl
@@ -29,18 +29,18 @@
   var res: bool = any(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   any_0e3e58();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   any_0e3e58();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   any_0e3e58();
 }
diff --git a/test/tint/builtins/gen/var/any/0e3e58.wgsl.expected.wgsl b/test/tint/builtins/gen/var/any/0e3e58.wgsl.expected.wgsl
index c21cd01..8399867 100644
--- a/test/tint/builtins/gen/var/any/0e3e58.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/any/0e3e58.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : bool = any(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   any_0e3e58();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   any_0e3e58();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   any_0e3e58();
 }
diff --git a/test/tint/builtins/gen/var/any/2ab91a.wgsl b/test/tint/builtins/gen/var/any/2ab91a.wgsl
index c234642..a4764b9 100644
--- a/test/tint/builtins/gen/var/any/2ab91a.wgsl
+++ b/test/tint/builtins/gen/var/any/2ab91a.wgsl
@@ -29,18 +29,18 @@
   var res: bool = any(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   any_2ab91a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   any_2ab91a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   any_2ab91a();
 }
diff --git a/test/tint/builtins/gen/var/any/2ab91a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/any/2ab91a.wgsl.expected.wgsl
index 74315cf..d1bde99 100644
--- a/test/tint/builtins/gen/var/any/2ab91a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/any/2ab91a.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : bool = any(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   any_2ab91a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   any_2ab91a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   any_2ab91a();
 }
diff --git a/test/tint/builtins/gen/var/any/e755c1.wgsl b/test/tint/builtins/gen/var/any/e755c1.wgsl
index 983e8cf..78ba288 100644
--- a/test/tint/builtins/gen/var/any/e755c1.wgsl
+++ b/test/tint/builtins/gen/var/any/e755c1.wgsl
@@ -29,18 +29,18 @@
   var res: bool = any(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   any_e755c1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   any_e755c1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   any_e755c1();
 }
diff --git a/test/tint/builtins/gen/var/any/e755c1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/any/e755c1.wgsl.expected.wgsl
index 5c5c750..fe5fc2e 100644
--- a/test/tint/builtins/gen/var/any/e755c1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/any/e755c1.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : bool = any(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   any_e755c1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   any_e755c1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   any_e755c1();
 }
diff --git a/test/tint/builtins/gen/var/arrayLength/1588cd.wgsl b/test/tint/builtins/gen/var/arrayLength/1588cd.wgsl
index c4dec13..5af41cc 100644
--- a/test/tint/builtins/gen/var/arrayLength/1588cd.wgsl
+++ b/test/tint/builtins/gen/var/arrayLength/1588cd.wgsl
@@ -32,18 +32,18 @@
   var res: u32 = arrayLength(&sb_ro.arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_1588cd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_1588cd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_1588cd();
 }
diff --git a/test/tint/builtins/gen/var/arrayLength/1588cd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/arrayLength/1588cd.wgsl.expected.wgsl
index 2a2648d..8b3b166 100644
--- a/test/tint/builtins/gen/var/arrayLength/1588cd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/arrayLength/1588cd.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : u32 = arrayLength(&(sb_ro.arg_0));
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_1588cd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_1588cd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_1588cd();
 }
diff --git a/test/tint/builtins/gen/var/arrayLength/61b1c7.wgsl b/test/tint/builtins/gen/var/arrayLength/61b1c7.wgsl
index a7adcc1..6e5afea 100644
--- a/test/tint/builtins/gen/var/arrayLength/61b1c7.wgsl
+++ b/test/tint/builtins/gen/var/arrayLength/61b1c7.wgsl
@@ -32,18 +32,18 @@
   var res: u32 = arrayLength(&sb_rw.arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_61b1c7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_61b1c7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_61b1c7();
 }
diff --git a/test/tint/builtins/gen/var/arrayLength/61b1c7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/arrayLength/61b1c7.wgsl.expected.wgsl
index 73dbbb7..b9b63ee 100644
--- a/test/tint/builtins/gen/var/arrayLength/61b1c7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/arrayLength/61b1c7.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : u32 = arrayLength(&(sb_rw.arg_0));
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_61b1c7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_61b1c7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_61b1c7();
 }
diff --git a/test/tint/builtins/gen/var/arrayLength/a0f5ca.wgsl b/test/tint/builtins/gen/var/arrayLength/a0f5ca.wgsl
index 3f83858..547dc4e 100644
--- a/test/tint/builtins/gen/var/arrayLength/a0f5ca.wgsl
+++ b/test/tint/builtins/gen/var/arrayLength/a0f5ca.wgsl
@@ -32,18 +32,18 @@
   var res: u32 = arrayLength(&sb_ro.arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_a0f5ca();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_a0f5ca();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_a0f5ca();
 }
diff --git a/test/tint/builtins/gen/var/arrayLength/a0f5ca.wgsl.expected.wgsl b/test/tint/builtins/gen/var/arrayLength/a0f5ca.wgsl.expected.wgsl
index a1eb324..fa60a15 100644
--- a/test/tint/builtins/gen/var/arrayLength/a0f5ca.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/arrayLength/a0f5ca.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : u32 = arrayLength(&(sb_ro.arg_0));
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_a0f5ca();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_a0f5ca();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_a0f5ca();
 }
diff --git a/test/tint/builtins/gen/var/arrayLength/cdd123.wgsl b/test/tint/builtins/gen/var/arrayLength/cdd123.wgsl
index 3b38e51..1a1fe99 100644
--- a/test/tint/builtins/gen/var/arrayLength/cdd123.wgsl
+++ b/test/tint/builtins/gen/var/arrayLength/cdd123.wgsl
@@ -32,18 +32,18 @@
   var res: u32 = arrayLength(&sb_rw.arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_cdd123();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_cdd123();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_cdd123();
 }
diff --git a/test/tint/builtins/gen/var/arrayLength/cdd123.wgsl.expected.wgsl b/test/tint/builtins/gen/var/arrayLength/cdd123.wgsl.expected.wgsl
index 1f2d17c..d792619 100644
--- a/test/tint/builtins/gen/var/arrayLength/cdd123.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/arrayLength/cdd123.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : u32 = arrayLength(&(sb_rw.arg_0));
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_cdd123();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_cdd123();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_cdd123();
 }
diff --git a/test/tint/builtins/gen/var/arrayLength/cfca0a.wgsl b/test/tint/builtins/gen/var/arrayLength/cfca0a.wgsl
index 99d788d..0951ce4 100644
--- a/test/tint/builtins/gen/var/arrayLength/cfca0a.wgsl
+++ b/test/tint/builtins/gen/var/arrayLength/cfca0a.wgsl
@@ -32,18 +32,18 @@
   var res: u32 = arrayLength(&sb_ro.arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_cfca0a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_cfca0a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_cfca0a();
 }
diff --git a/test/tint/builtins/gen/var/arrayLength/cfca0a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/arrayLength/cfca0a.wgsl.expected.wgsl
index 5778963..d741ef0 100644
--- a/test/tint/builtins/gen/var/arrayLength/cfca0a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/arrayLength/cfca0a.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : u32 = arrayLength(&(sb_ro.arg_0));
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_cfca0a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_cfca0a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_cfca0a();
 }
diff --git a/test/tint/builtins/gen/var/arrayLength/eb510f.wgsl b/test/tint/builtins/gen/var/arrayLength/eb510f.wgsl
index cc2627b..2308569 100644
--- a/test/tint/builtins/gen/var/arrayLength/eb510f.wgsl
+++ b/test/tint/builtins/gen/var/arrayLength/eb510f.wgsl
@@ -32,18 +32,18 @@
   var res: u32 = arrayLength(&sb_rw.arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_eb510f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_eb510f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_eb510f();
 }
diff --git a/test/tint/builtins/gen/var/arrayLength/eb510f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/arrayLength/eb510f.wgsl.expected.wgsl
index 805917c..a048944 100644
--- a/test/tint/builtins/gen/var/arrayLength/eb510f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/arrayLength/eb510f.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : u32 = arrayLength(&(sb_rw.arg_0));
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   arrayLength_eb510f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   arrayLength_eb510f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   arrayLength_eb510f();
 }
diff --git a/test/tint/builtins/gen/var/asin/064953.wgsl b/test/tint/builtins/gen/var/asin/064953.wgsl
index 5e2ba51..d7dcf36 100644
--- a/test/tint/builtins/gen/var/asin/064953.wgsl
+++ b/test/tint/builtins/gen/var/asin/064953.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = asin(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_064953();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   asin_064953();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   asin_064953();
 }
diff --git a/test/tint/builtins/gen/var/asin/064953.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asin/064953.wgsl.expected.wgsl
index 3753e5a..4113462 100644
--- a/test/tint/builtins/gen/var/asin/064953.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asin/064953.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = asin(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_064953();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   asin_064953();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   asin_064953();
 }
diff --git a/test/tint/builtins/gen/var/asin/7b6a44.wgsl b/test/tint/builtins/gen/var/asin/7b6a44.wgsl
index a52ec14..6102dab 100644
--- a/test/tint/builtins/gen/var/asin/7b6a44.wgsl
+++ b/test/tint/builtins/gen/var/asin/7b6a44.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = asin(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_7b6a44();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   asin_7b6a44();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   asin_7b6a44();
 }
diff --git a/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.wgsl
index ec5ec15..6e08cad 100644
--- a/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = asin(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_7b6a44();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   asin_7b6a44();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   asin_7b6a44();
 }
diff --git a/test/tint/builtins/gen/var/asin/8cd9c9.wgsl b/test/tint/builtins/gen/var/asin/8cd9c9.wgsl
index e568908..18bd04f 100644
--- a/test/tint/builtins/gen/var/asin/8cd9c9.wgsl
+++ b/test/tint/builtins/gen/var/asin/8cd9c9.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = asin(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_8cd9c9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   asin_8cd9c9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   asin_8cd9c9();
 }
diff --git a/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.wgsl
index be247dd..598fd67 100644
--- a/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = asin(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_8cd9c9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   asin_8cd9c9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   asin_8cd9c9();
 }
diff --git a/test/tint/builtins/gen/var/asin/c0c272.wgsl b/test/tint/builtins/gen/var/asin/c0c272.wgsl
index f7c1933..0dc0a86 100644
--- a/test/tint/builtins/gen/var/asin/c0c272.wgsl
+++ b/test/tint/builtins/gen/var/asin/c0c272.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = asin(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_c0c272();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   asin_c0c272();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   asin_c0c272();
 }
diff --git a/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.wgsl
index 1593185..242fe40 100644
--- a/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = asin(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   asin_c0c272();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   asin_c0c272();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   asin_c0c272();
 }
diff --git a/test/tint/builtins/gen/var/atan/02979a.wgsl b/test/tint/builtins/gen/var/atan/02979a.wgsl
index b78ade5..29d6910 100644
--- a/test/tint/builtins/gen/var/atan/02979a.wgsl
+++ b/test/tint/builtins/gen/var/atan/02979a.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = atan(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_02979a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan_02979a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan_02979a();
 }
diff --git a/test/tint/builtins/gen/var/atan/02979a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan/02979a.wgsl.expected.wgsl
index 398e043..74ef402 100644
--- a/test/tint/builtins/gen/var/atan/02979a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atan/02979a.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = atan(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_02979a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan_02979a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan_02979a();
 }
diff --git a/test/tint/builtins/gen/var/atan/331e6d.wgsl b/test/tint/builtins/gen/var/atan/331e6d.wgsl
index 672efcb..4cd7a1a 100644
--- a/test/tint/builtins/gen/var/atan/331e6d.wgsl
+++ b/test/tint/builtins/gen/var/atan/331e6d.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = atan(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_331e6d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan_331e6d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan_331e6d();
 }
diff --git a/test/tint/builtins/gen/var/atan/331e6d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan/331e6d.wgsl.expected.wgsl
index 22be443..09a051f 100644
--- a/test/tint/builtins/gen/var/atan/331e6d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atan/331e6d.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = atan(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_331e6d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan_331e6d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan_331e6d();
 }
diff --git a/test/tint/builtins/gen/var/atan/a8b696.wgsl b/test/tint/builtins/gen/var/atan/a8b696.wgsl
index edab37d..760bfb5 100644
--- a/test/tint/builtins/gen/var/atan/a8b696.wgsl
+++ b/test/tint/builtins/gen/var/atan/a8b696.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = atan(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_a8b696();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan_a8b696();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan_a8b696();
 }
diff --git a/test/tint/builtins/gen/var/atan/a8b696.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan/a8b696.wgsl.expected.wgsl
index 88209b1..be3ee44 100644
--- a/test/tint/builtins/gen/var/atan/a8b696.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atan/a8b696.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = atan(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_a8b696();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan_a8b696();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan_a8b696();
 }
diff --git a/test/tint/builtins/gen/var/atan/ad96e4.wgsl b/test/tint/builtins/gen/var/atan/ad96e4.wgsl
index 0d33269..a4885e5 100644
--- a/test/tint/builtins/gen/var/atan/ad96e4.wgsl
+++ b/test/tint/builtins/gen/var/atan/ad96e4.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = atan(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_ad96e4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan_ad96e4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan_ad96e4();
 }
diff --git a/test/tint/builtins/gen/var/atan/ad96e4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan/ad96e4.wgsl.expected.wgsl
index 7fa376b..f226ebe 100644
--- a/test/tint/builtins/gen/var/atan/ad96e4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atan/ad96e4.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = atan(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan_ad96e4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan_ad96e4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan_ad96e4();
 }
diff --git a/test/tint/builtins/gen/var/atan2/57fb13.wgsl b/test/tint/builtins/gen/var/atan2/57fb13.wgsl
index 768cf69..b411fde 100644
--- a/test/tint/builtins/gen/var/atan2/57fb13.wgsl
+++ b/test/tint/builtins/gen/var/atan2/57fb13.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<f32> = atan2(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_57fb13();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan2_57fb13();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan2_57fb13();
 }
diff --git a/test/tint/builtins/gen/var/atan2/57fb13.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan2/57fb13.wgsl.expected.wgsl
index d53cd33..37d8508 100644
--- a/test/tint/builtins/gen/var/atan2/57fb13.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atan2/57fb13.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<f32> = atan2(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_57fb13();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan2_57fb13();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan2_57fb13();
 }
diff --git a/test/tint/builtins/gen/var/atan2/96057c.wgsl b/test/tint/builtins/gen/var/atan2/96057c.wgsl
index 789461b..a452d55 100644
--- a/test/tint/builtins/gen/var/atan2/96057c.wgsl
+++ b/test/tint/builtins/gen/var/atan2/96057c.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = atan2(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_96057c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan2_96057c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan2_96057c();
 }
diff --git a/test/tint/builtins/gen/var/atan2/96057c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan2/96057c.wgsl.expected.wgsl
index 7931ce2..d30026b 100644
--- a/test/tint/builtins/gen/var/atan2/96057c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atan2/96057c.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : f32 = atan2(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_96057c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan2_96057c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan2_96057c();
 }
diff --git a/test/tint/builtins/gen/var/atan2/a70d0d.wgsl b/test/tint/builtins/gen/var/atan2/a70d0d.wgsl
index 1a5599b..79229ab 100644
--- a/test/tint/builtins/gen/var/atan2/a70d0d.wgsl
+++ b/test/tint/builtins/gen/var/atan2/a70d0d.wgsl
@@ -30,18 +30,18 @@
   var res: vec3<f32> = atan2(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_a70d0d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan2_a70d0d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan2_a70d0d();
 }
diff --git a/test/tint/builtins/gen/var/atan2/a70d0d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan2/a70d0d.wgsl.expected.wgsl
index 3cc0e0f..111155b 100644
--- a/test/tint/builtins/gen/var/atan2/a70d0d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atan2/a70d0d.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<f32> = atan2(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_a70d0d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan2_a70d0d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan2_a70d0d();
 }
diff --git a/test/tint/builtins/gen/var/atan2/ae713e.wgsl b/test/tint/builtins/gen/var/atan2/ae713e.wgsl
index 1045aea..b816537 100644
--- a/test/tint/builtins/gen/var/atan2/ae713e.wgsl
+++ b/test/tint/builtins/gen/var/atan2/ae713e.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = atan2(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_ae713e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan2_ae713e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan2_ae713e();
 }
diff --git a/test/tint/builtins/gen/var/atan2/ae713e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan2/ae713e.wgsl.expected.wgsl
index cfdb8ca..2421b3e 100644
--- a/test/tint/builtins/gen/var/atan2/ae713e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atan2/ae713e.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<f32> = atan2(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   atan2_ae713e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atan2_ae713e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atan2_ae713e();
 }
diff --git a/test/tint/builtins/gen/var/atomicAdd/794055.wgsl b/test/tint/builtins/gen/var/atomicAdd/794055.wgsl
index 7c911e2..c8cc8fc 100644
--- a/test/tint/builtins/gen/var/atomicAdd/794055.wgsl
+++ b/test/tint/builtins/gen/var/atomicAdd/794055.wgsl
@@ -30,7 +30,7 @@
   var res: i32 = atomicAdd(&arg_0, arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAdd_794055();
 }
diff --git a/test/tint/builtins/gen/var/atomicAdd/794055.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicAdd/794055.wgsl.expected.wgsl
index 113cf03..969958e 100644
--- a/test/tint/builtins/gen/var/atomicAdd/794055.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicAdd/794055.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   var res : i32 = atomicAdd(&(arg_0), arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAdd_794055();
 }
diff --git a/test/tint/builtins/gen/var/atomicAdd/8a199a.wgsl b/test/tint/builtins/gen/var/atomicAdd/8a199a.wgsl
index d84abb2..591914b1 100644
--- a/test/tint/builtins/gen/var/atomicAdd/8a199a.wgsl
+++ b/test/tint/builtins/gen/var/atomicAdd/8a199a.wgsl
@@ -33,12 +33,12 @@
   var res: u32 = atomicAdd(&sb_rw.arg_0, arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicAdd_8a199a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAdd_8a199a();
 }
diff --git a/test/tint/builtins/gen/var/atomicAdd/8a199a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicAdd/8a199a.wgsl.expected.wgsl
index 63cef4f..60690f0 100644
--- a/test/tint/builtins/gen/var/atomicAdd/8a199a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicAdd/8a199a.wgsl.expected.wgsl
@@ -9,12 +9,12 @@
   var res : u32 = atomicAdd(&(sb_rw.arg_0), arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicAdd_8a199a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAdd_8a199a();
 }
diff --git a/test/tint/builtins/gen/var/atomicAdd/d32fe4.wgsl b/test/tint/builtins/gen/var/atomicAdd/d32fe4.wgsl
index 38cca7f..d04fef7 100644
--- a/test/tint/builtins/gen/var/atomicAdd/d32fe4.wgsl
+++ b/test/tint/builtins/gen/var/atomicAdd/d32fe4.wgsl
@@ -33,12 +33,12 @@
   var res: i32 = atomicAdd(&sb_rw.arg_0, arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicAdd_d32fe4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAdd_d32fe4();
 }
diff --git a/test/tint/builtins/gen/var/atomicAdd/d32fe4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicAdd/d32fe4.wgsl.expected.wgsl
index bc1c383..9b4b44b 100644
--- a/test/tint/builtins/gen/var/atomicAdd/d32fe4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicAdd/d32fe4.wgsl.expected.wgsl
@@ -9,12 +9,12 @@
   var res : i32 = atomicAdd(&(sb_rw.arg_0), arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicAdd_d32fe4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAdd_d32fe4();
 }
diff --git a/test/tint/builtins/gen/var/atomicAdd/d5db1d.wgsl b/test/tint/builtins/gen/var/atomicAdd/d5db1d.wgsl
index 528d4aa..9f96778 100644
--- a/test/tint/builtins/gen/var/atomicAdd/d5db1d.wgsl
+++ b/test/tint/builtins/gen/var/atomicAdd/d5db1d.wgsl
@@ -30,7 +30,7 @@
   var res: u32 = atomicAdd(&arg_0, arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAdd_d5db1d();
 }
diff --git a/test/tint/builtins/gen/var/atomicAdd/d5db1d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicAdd/d5db1d.wgsl.expected.wgsl
index eaafde0..e7ca6d0 100644
--- a/test/tint/builtins/gen/var/atomicAdd/d5db1d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicAdd/d5db1d.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   var res : u32 = atomicAdd(&(arg_0), arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAdd_d5db1d();
 }
diff --git a/test/tint/builtins/gen/var/atomicAnd/152966.wgsl b/test/tint/builtins/gen/var/atomicAnd/152966.wgsl
index 62d12c1..95bf7ab 100644
--- a/test/tint/builtins/gen/var/atomicAnd/152966.wgsl
+++ b/test/tint/builtins/gen/var/atomicAnd/152966.wgsl
@@ -33,12 +33,12 @@
   var res: i32 = atomicAnd(&sb_rw.arg_0, arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicAnd_152966();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAnd_152966();
 }
diff --git a/test/tint/builtins/gen/var/atomicAnd/152966.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicAnd/152966.wgsl.expected.wgsl
index 52984c7..3fd9d1c 100644
--- a/test/tint/builtins/gen/var/atomicAnd/152966.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicAnd/152966.wgsl.expected.wgsl
@@ -9,12 +9,12 @@
   var res : i32 = atomicAnd(&(sb_rw.arg_0), arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicAnd_152966();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAnd_152966();
 }
diff --git a/test/tint/builtins/gen/var/atomicAnd/34edd3.wgsl b/test/tint/builtins/gen/var/atomicAnd/34edd3.wgsl
index ffb20d8..0fb5b84 100644
--- a/test/tint/builtins/gen/var/atomicAnd/34edd3.wgsl
+++ b/test/tint/builtins/gen/var/atomicAnd/34edd3.wgsl
@@ -30,7 +30,7 @@
   var res: u32 = atomicAnd(&arg_0, arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAnd_34edd3();
 }
diff --git a/test/tint/builtins/gen/var/atomicAnd/34edd3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicAnd/34edd3.wgsl.expected.wgsl
index a7070c3..9515293 100644
--- a/test/tint/builtins/gen/var/atomicAnd/34edd3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicAnd/34edd3.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   var res : u32 = atomicAnd(&(arg_0), arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAnd_34edd3();
 }
diff --git a/test/tint/builtins/gen/var/atomicAnd/45a819.wgsl b/test/tint/builtins/gen/var/atomicAnd/45a819.wgsl
index dfd0ca1..89f8055 100644
--- a/test/tint/builtins/gen/var/atomicAnd/45a819.wgsl
+++ b/test/tint/builtins/gen/var/atomicAnd/45a819.wgsl
@@ -30,7 +30,7 @@
   var res: i32 = atomicAnd(&arg_0, arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAnd_45a819();
 }
diff --git a/test/tint/builtins/gen/var/atomicAnd/45a819.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicAnd/45a819.wgsl.expected.wgsl
index 1d8af20..317fe39 100644
--- a/test/tint/builtins/gen/var/atomicAnd/45a819.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicAnd/45a819.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   var res : i32 = atomicAnd(&(arg_0), arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAnd_45a819();
 }
diff --git a/test/tint/builtins/gen/var/atomicAnd/85a8d9.wgsl b/test/tint/builtins/gen/var/atomicAnd/85a8d9.wgsl
index 726d4ad..bddb454 100644
--- a/test/tint/builtins/gen/var/atomicAnd/85a8d9.wgsl
+++ b/test/tint/builtins/gen/var/atomicAnd/85a8d9.wgsl
@@ -33,12 +33,12 @@
   var res: u32 = atomicAnd(&sb_rw.arg_0, arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicAnd_85a8d9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAnd_85a8d9();
 }
diff --git a/test/tint/builtins/gen/var/atomicAnd/85a8d9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicAnd/85a8d9.wgsl.expected.wgsl
index f93a934..b0eb8ca 100644
--- a/test/tint/builtins/gen/var/atomicAnd/85a8d9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicAnd/85a8d9.wgsl.expected.wgsl
@@ -9,12 +9,12 @@
   var res : u32 = atomicAnd(&(sb_rw.arg_0), arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicAnd_85a8d9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicAnd_85a8d9();
 }
diff --git a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/1bd40a.wgsl b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/1bd40a.wgsl
index 10dfb91..a583af7 100644
--- a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/1bd40a.wgsl
+++ b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/1bd40a.wgsl
@@ -34,12 +34,12 @@
   var res = atomicCompareExchangeWeak(&sb_rw.arg_0, arg_1, arg_2);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicCompareExchangeWeak_1bd40a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_1bd40a();
 }
diff --git a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/1bd40a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/1bd40a.wgsl.expected.wgsl
index 5db36c6..a97dff5 100644
--- a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/1bd40a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/1bd40a.wgsl.expected.wgsl
@@ -10,12 +10,12 @@
   var res = atomicCompareExchangeWeak(&(sb_rw.arg_0), arg_1, arg_2);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicCompareExchangeWeak_1bd40a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_1bd40a();
 }
diff --git a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/63d8e6.wgsl b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/63d8e6.wgsl
index 591914b0..be49c3f 100644
--- a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/63d8e6.wgsl
+++ b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/63d8e6.wgsl
@@ -34,12 +34,12 @@
   var res = atomicCompareExchangeWeak(&sb_rw.arg_0, arg_1, arg_2);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicCompareExchangeWeak_63d8e6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_63d8e6();
 }
diff --git a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/63d8e6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/63d8e6.wgsl.expected.wgsl
index 6be230e..6c674d5 100644
--- a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/63d8e6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/63d8e6.wgsl.expected.wgsl
@@ -10,12 +10,12 @@
   var res = atomicCompareExchangeWeak(&(sb_rw.arg_0), arg_1, arg_2);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicCompareExchangeWeak_63d8e6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_63d8e6();
 }
diff --git a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/83580d.wgsl b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/83580d.wgsl
index b13a4e4..ef712f3 100644
--- a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/83580d.wgsl
+++ b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/83580d.wgsl
@@ -31,7 +31,7 @@
   var res = atomicCompareExchangeWeak(&arg_0, arg_1, arg_2);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_83580d();
 }
diff --git a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/83580d.wgsl.expected.hlsl b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/83580d.wgsl.expected.hlsl
index 57e527d..854c568 100644
--- a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/83580d.wgsl.expected.hlsl
+++ b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/83580d.wgsl.expected.hlsl
@@ -9,7 +9,7 @@
   var res = atomicCompareExchangeWeak(&(arg_0), arg_1, arg_2);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_83580d();
 }
diff --git a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/83580d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/83580d.wgsl.expected.wgsl
index 385448d..3cfbe69 100644
--- a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/83580d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/83580d.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res = atomicCompareExchangeWeak(&(arg_0), arg_1, arg_2);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_83580d();
 }
diff --git a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/e88938.wgsl b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/e88938.wgsl
index c31c39d..eeacb2e 100644
--- a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/e88938.wgsl
+++ b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/e88938.wgsl
@@ -31,7 +31,7 @@
   var res = atomicCompareExchangeWeak(&arg_0, arg_1, arg_2);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_e88938();
 }
diff --git a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/e88938.wgsl.expected.hlsl b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/e88938.wgsl.expected.hlsl
index d74ead1..ca63be9 100644
--- a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/e88938.wgsl.expected.hlsl
+++ b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/e88938.wgsl.expected.hlsl
@@ -9,7 +9,7 @@
   var res = atomicCompareExchangeWeak(&(arg_0), arg_1, arg_2);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_e88938();
 }
diff --git a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/e88938.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/e88938.wgsl.expected.wgsl
index ce2d4c9..3eb4780 100644
--- a/test/tint/builtins/gen/var/atomicCompareExchangeWeak/e88938.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicCompareExchangeWeak/e88938.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   var res = atomicCompareExchangeWeak(&(arg_0), arg_1, arg_2);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicCompareExchangeWeak_e88938();
 }
diff --git a/test/tint/builtins/gen/var/atomicExchange/0a5dca.wgsl b/test/tint/builtins/gen/var/atomicExchange/0a5dca.wgsl
index 1f089d2..62dbdec 100644
--- a/test/tint/builtins/gen/var/atomicExchange/0a5dca.wgsl
+++ b/test/tint/builtins/gen/var/atomicExchange/0a5dca.wgsl
@@ -30,7 +30,7 @@
   var res: u32 = atomicExchange(&arg_0, arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicExchange_0a5dca();
 }
diff --git a/test/tint/builtins/gen/var/atomicExchange/0a5dca.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicExchange/0a5dca.wgsl.expected.wgsl
index 97df00c..0d58d70 100644
--- a/test/tint/builtins/gen/var/atomicExchange/0a5dca.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicExchange/0a5dca.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   var res : u32 = atomicExchange(&(arg_0), arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicExchange_0a5dca();
 }
diff --git a/test/tint/builtins/gen/var/atomicExchange/d59712.wgsl b/test/tint/builtins/gen/var/atomicExchange/d59712.wgsl
index da57ab2..6e03743 100644
--- a/test/tint/builtins/gen/var/atomicExchange/d59712.wgsl
+++ b/test/tint/builtins/gen/var/atomicExchange/d59712.wgsl
@@ -33,12 +33,12 @@
   var res: u32 = atomicExchange(&sb_rw.arg_0, arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicExchange_d59712();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicExchange_d59712();
 }
diff --git a/test/tint/builtins/gen/var/atomicExchange/d59712.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicExchange/d59712.wgsl.expected.wgsl
index e2f39b7..5f0d591 100644
--- a/test/tint/builtins/gen/var/atomicExchange/d59712.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicExchange/d59712.wgsl.expected.wgsl
@@ -9,12 +9,12 @@
   var res : u32 = atomicExchange(&(sb_rw.arg_0), arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicExchange_d59712();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicExchange_d59712();
 }
diff --git a/test/tint/builtins/gen/var/atomicExchange/e114ba.wgsl b/test/tint/builtins/gen/var/atomicExchange/e114ba.wgsl
index 5d88b53..565c942 100644
--- a/test/tint/builtins/gen/var/atomicExchange/e114ba.wgsl
+++ b/test/tint/builtins/gen/var/atomicExchange/e114ba.wgsl
@@ -30,7 +30,7 @@
   var res: i32 = atomicExchange(&arg_0, arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicExchange_e114ba();
 }
diff --git a/test/tint/builtins/gen/var/atomicExchange/e114ba.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicExchange/e114ba.wgsl.expected.wgsl
index 4002898..e9b7027 100644
--- a/test/tint/builtins/gen/var/atomicExchange/e114ba.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicExchange/e114ba.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   var res : i32 = atomicExchange(&(arg_0), arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicExchange_e114ba();
 }
diff --git a/test/tint/builtins/gen/var/atomicExchange/f2e22f.wgsl b/test/tint/builtins/gen/var/atomicExchange/f2e22f.wgsl
index 29390d0..03764cd 100644
--- a/test/tint/builtins/gen/var/atomicExchange/f2e22f.wgsl
+++ b/test/tint/builtins/gen/var/atomicExchange/f2e22f.wgsl
@@ -33,12 +33,12 @@
   var res: i32 = atomicExchange(&sb_rw.arg_0, arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicExchange_f2e22f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicExchange_f2e22f();
 }
diff --git a/test/tint/builtins/gen/var/atomicExchange/f2e22f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicExchange/f2e22f.wgsl.expected.wgsl
index 9cb7731..2e87472 100644
--- a/test/tint/builtins/gen/var/atomicExchange/f2e22f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicExchange/f2e22f.wgsl.expected.wgsl
@@ -9,12 +9,12 @@
   var res : i32 = atomicExchange(&(sb_rw.arg_0), arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicExchange_f2e22f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicExchange_f2e22f();
 }
diff --git a/test/tint/builtins/gen/var/atomicLoad/0806ad.wgsl b/test/tint/builtins/gen/var/atomicLoad/0806ad.wgsl
index e20d830..e2cee71 100644
--- a/test/tint/builtins/gen/var/atomicLoad/0806ad.wgsl
+++ b/test/tint/builtins/gen/var/atomicLoad/0806ad.wgsl
@@ -32,12 +32,12 @@
   var res: i32 = atomicLoad(&sb_rw.arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicLoad_0806ad();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicLoad_0806ad();
 }
diff --git a/test/tint/builtins/gen/var/atomicLoad/0806ad.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicLoad/0806ad.wgsl.expected.wgsl
index e761dd9..06c2703 100644
--- a/test/tint/builtins/gen/var/atomicLoad/0806ad.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicLoad/0806ad.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : i32 = atomicLoad(&(sb_rw.arg_0));
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicLoad_0806ad();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicLoad_0806ad();
 }
diff --git a/test/tint/builtins/gen/var/atomicLoad/361bf1.wgsl b/test/tint/builtins/gen/var/atomicLoad/361bf1.wgsl
index e0cc43f..3ebeea9 100644
--- a/test/tint/builtins/gen/var/atomicLoad/361bf1.wgsl
+++ b/test/tint/builtins/gen/var/atomicLoad/361bf1.wgsl
@@ -29,7 +29,7 @@
   var res: u32 = atomicLoad(&arg_0);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicLoad_361bf1();
 }
diff --git a/test/tint/builtins/gen/var/atomicLoad/361bf1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicLoad/361bf1.wgsl.expected.wgsl
index 1040bf2..2fb4caa 100644
--- a/test/tint/builtins/gen/var/atomicLoad/361bf1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicLoad/361bf1.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : u32 = atomicLoad(&(arg_0));
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicLoad_361bf1();
 }
diff --git a/test/tint/builtins/gen/var/atomicLoad/afcc03.wgsl b/test/tint/builtins/gen/var/atomicLoad/afcc03.wgsl
index 025384f..bc946af 100644
--- a/test/tint/builtins/gen/var/atomicLoad/afcc03.wgsl
+++ b/test/tint/builtins/gen/var/atomicLoad/afcc03.wgsl
@@ -29,7 +29,7 @@
   var res: i32 = atomicLoad(&arg_0);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicLoad_afcc03();
 }
diff --git a/test/tint/builtins/gen/var/atomicLoad/afcc03.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicLoad/afcc03.wgsl.expected.wgsl
index e39317d..37509ca 100644
--- a/test/tint/builtins/gen/var/atomicLoad/afcc03.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicLoad/afcc03.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   var res : i32 = atomicLoad(&(arg_0));
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicLoad_afcc03();
 }
diff --git a/test/tint/builtins/gen/var/atomicLoad/fe6cc3.wgsl b/test/tint/builtins/gen/var/atomicLoad/fe6cc3.wgsl
index 63b1594..6c29700 100644
--- a/test/tint/builtins/gen/var/atomicLoad/fe6cc3.wgsl
+++ b/test/tint/builtins/gen/var/atomicLoad/fe6cc3.wgsl
@@ -32,12 +32,12 @@
   var res: u32 = atomicLoad(&sb_rw.arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicLoad_fe6cc3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicLoad_fe6cc3();
 }
diff --git a/test/tint/builtins/gen/var/atomicLoad/fe6cc3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicLoad/fe6cc3.wgsl.expected.wgsl
index f811ee3..8691467 100644
--- a/test/tint/builtins/gen/var/atomicLoad/fe6cc3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicLoad/fe6cc3.wgsl.expected.wgsl
@@ -8,12 +8,12 @@
   var res : u32 = atomicLoad(&(sb_rw.arg_0));
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicLoad_fe6cc3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicLoad_fe6cc3();
 }
diff --git a/test/tint/builtins/gen/var/atomicMax/51b9be.wgsl b/test/tint/builtins/gen/var/atomicMax/51b9be.wgsl
index 44209ff..103f86e 100644
--- a/test/tint/builtins/gen/var/atomicMax/51b9be.wgsl
+++ b/test/tint/builtins/gen/var/atomicMax/51b9be.wgsl
@@ -33,12 +33,12 @@
   var res: u32 = atomicMax(&sb_rw.arg_0, arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicMax_51b9be();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMax_51b9be();
 }
diff --git a/test/tint/builtins/gen/var/atomicMax/51b9be.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicMax/51b9be.wgsl.expected.wgsl
index 758c041..a786881 100644
--- a/test/tint/builtins/gen/var/atomicMax/51b9be.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicMax/51b9be.wgsl.expected.wgsl
@@ -9,12 +9,12 @@
   var res : u32 = atomicMax(&(sb_rw.arg_0), arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicMax_51b9be();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMax_51b9be();
 }
diff --git a/test/tint/builtins/gen/var/atomicMax/92aa72.wgsl b/test/tint/builtins/gen/var/atomicMax/92aa72.wgsl
index 3caa15d..af8fa3d 100644
--- a/test/tint/builtins/gen/var/atomicMax/92aa72.wgsl
+++ b/test/tint/builtins/gen/var/atomicMax/92aa72.wgsl
@@ -33,12 +33,12 @@
   var res: i32 = atomicMax(&sb_rw.arg_0, arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicMax_92aa72();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMax_92aa72();
 }
diff --git a/test/tint/builtins/gen/var/atomicMax/92aa72.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicMax/92aa72.wgsl.expected.wgsl
index 488bf5a..c5039e5 100644
--- a/test/tint/builtins/gen/var/atomicMax/92aa72.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicMax/92aa72.wgsl.expected.wgsl
@@ -9,12 +9,12 @@
   var res : i32 = atomicMax(&(sb_rw.arg_0), arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicMax_92aa72();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMax_92aa72();
 }
diff --git a/test/tint/builtins/gen/var/atomicMax/a89cc3.wgsl b/test/tint/builtins/gen/var/atomicMax/a89cc3.wgsl
index 8d3a680..142de60 100644
--- a/test/tint/builtins/gen/var/atomicMax/a89cc3.wgsl
+++ b/test/tint/builtins/gen/var/atomicMax/a89cc3.wgsl
@@ -30,7 +30,7 @@
   var res: i32 = atomicMax(&arg_0, arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMax_a89cc3();
 }
diff --git a/test/tint/builtins/gen/var/atomicMax/a89cc3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicMax/a89cc3.wgsl.expected.wgsl
index 73ba0ba..10ed82e 100644
--- a/test/tint/builtins/gen/var/atomicMax/a89cc3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicMax/a89cc3.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   var res : i32 = atomicMax(&(arg_0), arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMax_a89cc3();
 }
diff --git a/test/tint/builtins/gen/var/atomicMax/beccfc.wgsl b/test/tint/builtins/gen/var/atomicMax/beccfc.wgsl
index 8550e0e..739fbc3 100644
--- a/test/tint/builtins/gen/var/atomicMax/beccfc.wgsl
+++ b/test/tint/builtins/gen/var/atomicMax/beccfc.wgsl
@@ -30,7 +30,7 @@
   var res: u32 = atomicMax(&arg_0, arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMax_beccfc();
 }
diff --git a/test/tint/builtins/gen/var/atomicMax/beccfc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicMax/beccfc.wgsl.expected.wgsl
index 8faab2f..22cf4aa 100644
--- a/test/tint/builtins/gen/var/atomicMax/beccfc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicMax/beccfc.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   var res : u32 = atomicMax(&(arg_0), arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMax_beccfc();
 }
diff --git a/test/tint/builtins/gen/var/atomicMin/278235.wgsl b/test/tint/builtins/gen/var/atomicMin/278235.wgsl
index b3f15cb..4b0d96f 100644
--- a/test/tint/builtins/gen/var/atomicMin/278235.wgsl
+++ b/test/tint/builtins/gen/var/atomicMin/278235.wgsl
@@ -30,7 +30,7 @@
   var res: i32 = atomicMin(&arg_0, arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMin_278235();
 }
diff --git a/test/tint/builtins/gen/var/atomicMin/278235.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicMin/278235.wgsl.expected.wgsl
index b0a24df..7995563 100644
--- a/test/tint/builtins/gen/var/atomicMin/278235.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicMin/278235.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   var res : i32 = atomicMin(&(arg_0), arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMin_278235();
 }
diff --git a/test/tint/builtins/gen/var/atomicMin/69d383.wgsl b/test/tint/builtins/gen/var/atomicMin/69d383.wgsl
index c225e44..5869c28 100644
--- a/test/tint/builtins/gen/var/atomicMin/69d383.wgsl
+++ b/test/tint/builtins/gen/var/atomicMin/69d383.wgsl
@@ -30,7 +30,7 @@
   var res: u32 = atomicMin(&arg_0, arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMin_69d383();
 }
diff --git a/test/tint/builtins/gen/var/atomicMin/69d383.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicMin/69d383.wgsl.expected.wgsl
index 319c9cd..e0fd2ad 100644
--- a/test/tint/builtins/gen/var/atomicMin/69d383.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicMin/69d383.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   var res : u32 = atomicMin(&(arg_0), arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMin_69d383();
 }
diff --git a/test/tint/builtins/gen/var/atomicMin/8e38dc.wgsl b/test/tint/builtins/gen/var/atomicMin/8e38dc.wgsl
index 283645a..ec16a23 100644
--- a/test/tint/builtins/gen/var/atomicMin/8e38dc.wgsl
+++ b/test/tint/builtins/gen/var/atomicMin/8e38dc.wgsl
@@ -33,12 +33,12 @@
   var res: i32 = atomicMin(&sb_rw.arg_0, arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicMin_8e38dc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMin_8e38dc();
 }
diff --git a/test/tint/builtins/gen/var/atomicMin/8e38dc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicMin/8e38dc.wgsl.expected.wgsl
index 20955bd..61d4a1e 100644
--- a/test/tint/builtins/gen/var/atomicMin/8e38dc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicMin/8e38dc.wgsl.expected.wgsl
@@ -9,12 +9,12 @@
   var res : i32 = atomicMin(&(sb_rw.arg_0), arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicMin_8e38dc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMin_8e38dc();
 }
diff --git a/test/tint/builtins/gen/var/atomicMin/c67a74.wgsl b/test/tint/builtins/gen/var/atomicMin/c67a74.wgsl
index 6975d3d..fdeb3fd 100644
--- a/test/tint/builtins/gen/var/atomicMin/c67a74.wgsl
+++ b/test/tint/builtins/gen/var/atomicMin/c67a74.wgsl
@@ -33,12 +33,12 @@
   var res: u32 = atomicMin(&sb_rw.arg_0, arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicMin_c67a74();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMin_c67a74();
 }
diff --git a/test/tint/builtins/gen/var/atomicMin/c67a74.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicMin/c67a74.wgsl.expected.wgsl
index eeb2d0e..880c6a6 100644
--- a/test/tint/builtins/gen/var/atomicMin/c67a74.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicMin/c67a74.wgsl.expected.wgsl
@@ -9,12 +9,12 @@
   var res : u32 = atomicMin(&(sb_rw.arg_0), arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicMin_c67a74();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicMin_c67a74();
 }
diff --git a/test/tint/builtins/gen/var/atomicOr/5e3d61.wgsl b/test/tint/builtins/gen/var/atomicOr/5e3d61.wgsl
index e6ca7e8..ea40557 100644
--- a/test/tint/builtins/gen/var/atomicOr/5e3d61.wgsl
+++ b/test/tint/builtins/gen/var/atomicOr/5e3d61.wgsl
@@ -30,7 +30,7 @@
   var res: u32 = atomicOr(&arg_0, arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicOr_5e3d61();
 }
diff --git a/test/tint/builtins/gen/var/atomicOr/5e3d61.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicOr/5e3d61.wgsl.expected.wgsl
index e1b1d1c..c88c5a9 100644
--- a/test/tint/builtins/gen/var/atomicOr/5e3d61.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicOr/5e3d61.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   var res : u32 = atomicOr(&(arg_0), arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicOr_5e3d61();
 }
diff --git a/test/tint/builtins/gen/var/atomicOr/5e95d4.wgsl b/test/tint/builtins/gen/var/atomicOr/5e95d4.wgsl
index 874d94a..153c6cd 100644
--- a/test/tint/builtins/gen/var/atomicOr/5e95d4.wgsl
+++ b/test/tint/builtins/gen/var/atomicOr/5e95d4.wgsl
@@ -33,12 +33,12 @@
   var res: u32 = atomicOr(&sb_rw.arg_0, arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicOr_5e95d4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicOr_5e95d4();
 }
diff --git a/test/tint/builtins/gen/var/atomicOr/5e95d4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicOr/5e95d4.wgsl.expected.wgsl
index c4407a3..c9d86b6 100644
--- a/test/tint/builtins/gen/var/atomicOr/5e95d4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicOr/5e95d4.wgsl.expected.wgsl
@@ -9,12 +9,12 @@
   var res : u32 = atomicOr(&(sb_rw.arg_0), arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicOr_5e95d4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicOr_5e95d4();
 }
diff --git a/test/tint/builtins/gen/var/atomicOr/8d96a0.wgsl b/test/tint/builtins/gen/var/atomicOr/8d96a0.wgsl
index 80c6328..f1bb27e 100644
--- a/test/tint/builtins/gen/var/atomicOr/8d96a0.wgsl
+++ b/test/tint/builtins/gen/var/atomicOr/8d96a0.wgsl
@@ -33,12 +33,12 @@
   var res: i32 = atomicOr(&sb_rw.arg_0, arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicOr_8d96a0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicOr_8d96a0();
 }
diff --git a/test/tint/builtins/gen/var/atomicOr/8d96a0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicOr/8d96a0.wgsl.expected.wgsl
index 44a5caa..dd51380 100644
--- a/test/tint/builtins/gen/var/atomicOr/8d96a0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicOr/8d96a0.wgsl.expected.wgsl
@@ -9,12 +9,12 @@
   var res : i32 = atomicOr(&(sb_rw.arg_0), arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicOr_8d96a0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicOr_8d96a0();
 }
diff --git a/test/tint/builtins/gen/var/atomicOr/d09248.wgsl b/test/tint/builtins/gen/var/atomicOr/d09248.wgsl
index 08cbf89..28624c9 100644
--- a/test/tint/builtins/gen/var/atomicOr/d09248.wgsl
+++ b/test/tint/builtins/gen/var/atomicOr/d09248.wgsl
@@ -30,7 +30,7 @@
   var res: i32 = atomicOr(&arg_0, arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicOr_d09248();
 }
diff --git a/test/tint/builtins/gen/var/atomicOr/d09248.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicOr/d09248.wgsl.expected.wgsl
index e5d8f51..c8ae9e1 100644
--- a/test/tint/builtins/gen/var/atomicOr/d09248.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicOr/d09248.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   var res : i32 = atomicOr(&(arg_0), arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicOr_d09248();
 }
diff --git a/test/tint/builtins/gen/var/atomicStore/726882.wgsl b/test/tint/builtins/gen/var/atomicStore/726882.wgsl
index 64735cb..7425dbe 100644
--- a/test/tint/builtins/gen/var/atomicStore/726882.wgsl
+++ b/test/tint/builtins/gen/var/atomicStore/726882.wgsl
@@ -30,7 +30,7 @@
   atomicStore(&arg_0, arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicStore_726882();
 }
diff --git a/test/tint/builtins/gen/var/atomicStore/726882.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicStore/726882.wgsl.expected.wgsl
index 178d798..a49ac81 100644
--- a/test/tint/builtins/gen/var/atomicStore/726882.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicStore/726882.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   atomicStore(&(arg_0), arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicStore_726882();
 }
diff --git a/test/tint/builtins/gen/var/atomicStore/8bea94.wgsl b/test/tint/builtins/gen/var/atomicStore/8bea94.wgsl
index 38caf4f..e1d76bd 100644
--- a/test/tint/builtins/gen/var/atomicStore/8bea94.wgsl
+++ b/test/tint/builtins/gen/var/atomicStore/8bea94.wgsl
@@ -30,7 +30,7 @@
   atomicStore(&arg_0, arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicStore_8bea94();
 }
diff --git a/test/tint/builtins/gen/var/atomicStore/8bea94.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicStore/8bea94.wgsl.expected.wgsl
index d68247e..637085b 100644
--- a/test/tint/builtins/gen/var/atomicStore/8bea94.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicStore/8bea94.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   atomicStore(&(arg_0), arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicStore_8bea94();
 }
diff --git a/test/tint/builtins/gen/var/atomicStore/cdc29e.wgsl b/test/tint/builtins/gen/var/atomicStore/cdc29e.wgsl
index 51e7e1c..d62be5e 100644
--- a/test/tint/builtins/gen/var/atomicStore/cdc29e.wgsl
+++ b/test/tint/builtins/gen/var/atomicStore/cdc29e.wgsl
@@ -33,12 +33,12 @@
   atomicStore(&sb_rw.arg_0, arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicStore_cdc29e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicStore_cdc29e();
 }
diff --git a/test/tint/builtins/gen/var/atomicStore/cdc29e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicStore/cdc29e.wgsl.expected.wgsl
index 32a546b..437c69e 100644
--- a/test/tint/builtins/gen/var/atomicStore/cdc29e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicStore/cdc29e.wgsl.expected.wgsl
@@ -9,12 +9,12 @@
   atomicStore(&(sb_rw.arg_0), arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicStore_cdc29e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicStore_cdc29e();
 }
diff --git a/test/tint/builtins/gen/var/atomicStore/d1e9a6.wgsl b/test/tint/builtins/gen/var/atomicStore/d1e9a6.wgsl
index 80db896..faa4527 100644
--- a/test/tint/builtins/gen/var/atomicStore/d1e9a6.wgsl
+++ b/test/tint/builtins/gen/var/atomicStore/d1e9a6.wgsl
@@ -33,12 +33,12 @@
   atomicStore(&sb_rw.arg_0, arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicStore_d1e9a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicStore_d1e9a6();
 }
diff --git a/test/tint/builtins/gen/var/atomicStore/d1e9a6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicStore/d1e9a6.wgsl.expected.wgsl
index cd1a3a7..6548753 100644
--- a/test/tint/builtins/gen/var/atomicStore/d1e9a6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicStore/d1e9a6.wgsl.expected.wgsl
@@ -9,12 +9,12 @@
   atomicStore(&(sb_rw.arg_0), arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicStore_d1e9a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicStore_d1e9a6();
 }
diff --git a/test/tint/builtins/gen/var/atomicSub/051100.wgsl b/test/tint/builtins/gen/var/atomicSub/051100.wgsl
index 71c5560..f430b8e 100644
--- a/test/tint/builtins/gen/var/atomicSub/051100.wgsl
+++ b/test/tint/builtins/gen/var/atomicSub/051100.wgsl
@@ -33,12 +33,12 @@
   var res: i32 = atomicSub(&sb_rw.arg_0, arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicSub_051100();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicSub_051100();
 }
diff --git a/test/tint/builtins/gen/var/atomicSub/051100.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicSub/051100.wgsl.expected.wgsl
index eb49648..6eecb4f 100644
--- a/test/tint/builtins/gen/var/atomicSub/051100.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicSub/051100.wgsl.expected.wgsl
@@ -9,12 +9,12 @@
   var res : i32 = atomicSub(&(sb_rw.arg_0), arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicSub_051100();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicSub_051100();
 }
diff --git a/test/tint/builtins/gen/var/atomicSub/0d26c2.wgsl b/test/tint/builtins/gen/var/atomicSub/0d26c2.wgsl
index 09c7895..f2031d5 100644
--- a/test/tint/builtins/gen/var/atomicSub/0d26c2.wgsl
+++ b/test/tint/builtins/gen/var/atomicSub/0d26c2.wgsl
@@ -30,7 +30,7 @@
   var res: u32 = atomicSub(&arg_0, arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicSub_0d26c2();
 }
diff --git a/test/tint/builtins/gen/var/atomicSub/0d26c2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicSub/0d26c2.wgsl.expected.wgsl
index d907bfb..1f5446e 100644
--- a/test/tint/builtins/gen/var/atomicSub/0d26c2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicSub/0d26c2.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   var res : u32 = atomicSub(&(arg_0), arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicSub_0d26c2();
 }
diff --git a/test/tint/builtins/gen/var/atomicSub/15bfc9.wgsl b/test/tint/builtins/gen/var/atomicSub/15bfc9.wgsl
index 9caf71e..b74494c 100644
--- a/test/tint/builtins/gen/var/atomicSub/15bfc9.wgsl
+++ b/test/tint/builtins/gen/var/atomicSub/15bfc9.wgsl
@@ -33,12 +33,12 @@
   var res: u32 = atomicSub(&sb_rw.arg_0, arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicSub_15bfc9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicSub_15bfc9();
 }
diff --git a/test/tint/builtins/gen/var/atomicSub/15bfc9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicSub/15bfc9.wgsl.expected.wgsl
index a48de07..ea7a046 100644
--- a/test/tint/builtins/gen/var/atomicSub/15bfc9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicSub/15bfc9.wgsl.expected.wgsl
@@ -9,12 +9,12 @@
   var res : u32 = atomicSub(&(sb_rw.arg_0), arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicSub_15bfc9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicSub_15bfc9();
 }
diff --git a/test/tint/builtins/gen/var/atomicSub/77883a.wgsl b/test/tint/builtins/gen/var/atomicSub/77883a.wgsl
index 685ed0a..b369107 100644
--- a/test/tint/builtins/gen/var/atomicSub/77883a.wgsl
+++ b/test/tint/builtins/gen/var/atomicSub/77883a.wgsl
@@ -30,7 +30,7 @@
   var res: i32 = atomicSub(&arg_0, arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicSub_77883a();
 }
diff --git a/test/tint/builtins/gen/var/atomicSub/77883a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicSub/77883a.wgsl.expected.wgsl
index 8603aab..2c35436 100644
--- a/test/tint/builtins/gen/var/atomicSub/77883a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicSub/77883a.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   var res : i32 = atomicSub(&(arg_0), arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicSub_77883a();
 }
diff --git a/test/tint/builtins/gen/var/atomicXor/54510e.wgsl b/test/tint/builtins/gen/var/atomicXor/54510e.wgsl
index e2285df..11a4163 100644
--- a/test/tint/builtins/gen/var/atomicXor/54510e.wgsl
+++ b/test/tint/builtins/gen/var/atomicXor/54510e.wgsl
@@ -33,12 +33,12 @@
   var res: u32 = atomicXor(&sb_rw.arg_0, arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicXor_54510e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicXor_54510e();
 }
diff --git a/test/tint/builtins/gen/var/atomicXor/54510e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicXor/54510e.wgsl.expected.wgsl
index fa8ead8..873a863 100644
--- a/test/tint/builtins/gen/var/atomicXor/54510e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicXor/54510e.wgsl.expected.wgsl
@@ -9,12 +9,12 @@
   var res : u32 = atomicXor(&(sb_rw.arg_0), arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicXor_54510e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicXor_54510e();
 }
diff --git a/test/tint/builtins/gen/var/atomicXor/75dc95.wgsl b/test/tint/builtins/gen/var/atomicXor/75dc95.wgsl
index 55a28e5..ed43cfb 100644
--- a/test/tint/builtins/gen/var/atomicXor/75dc95.wgsl
+++ b/test/tint/builtins/gen/var/atomicXor/75dc95.wgsl
@@ -30,7 +30,7 @@
   var res: i32 = atomicXor(&arg_0, arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicXor_75dc95();
 }
diff --git a/test/tint/builtins/gen/var/atomicXor/75dc95.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicXor/75dc95.wgsl.expected.wgsl
index cdba5ab..bf05686 100644
--- a/test/tint/builtins/gen/var/atomicXor/75dc95.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicXor/75dc95.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   var res : i32 = atomicXor(&(arg_0), arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicXor_75dc95();
 }
diff --git a/test/tint/builtins/gen/var/atomicXor/c1b78c.wgsl b/test/tint/builtins/gen/var/atomicXor/c1b78c.wgsl
index 05bd6f2..a5e74ac 100644
--- a/test/tint/builtins/gen/var/atomicXor/c1b78c.wgsl
+++ b/test/tint/builtins/gen/var/atomicXor/c1b78c.wgsl
@@ -33,12 +33,12 @@
   var res: i32 = atomicXor(&sb_rw.arg_0, arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicXor_c1b78c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicXor_c1b78c();
 }
diff --git a/test/tint/builtins/gen/var/atomicXor/c1b78c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicXor/c1b78c.wgsl.expected.wgsl
index af253ca..f26d9de 100644
--- a/test/tint/builtins/gen/var/atomicXor/c1b78c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicXor/c1b78c.wgsl.expected.wgsl
@@ -9,12 +9,12 @@
   var res : i32 = atomicXor(&(sb_rw.arg_0), arg_1);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   atomicXor_c1b78c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicXor_c1b78c();
 }
diff --git a/test/tint/builtins/gen/var/atomicXor/c8e6be.wgsl b/test/tint/builtins/gen/var/atomicXor/c8e6be.wgsl
index 14a7921..5d6de90 100644
--- a/test/tint/builtins/gen/var/atomicXor/c8e6be.wgsl
+++ b/test/tint/builtins/gen/var/atomicXor/c8e6be.wgsl
@@ -30,7 +30,7 @@
   var res: u32 = atomicXor(&arg_0, arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicXor_c8e6be();
 }
diff --git a/test/tint/builtins/gen/var/atomicXor/c8e6be.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atomicXor/c8e6be.wgsl.expected.wgsl
index 7474f6a..3cf4fef 100644
--- a/test/tint/builtins/gen/var/atomicXor/c8e6be.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atomicXor/c8e6be.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   var res : u32 = atomicXor(&(arg_0), arg_1);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   atomicXor_c8e6be();
 }
diff --git a/test/tint/builtins/gen/var/ceil/34064b.wgsl b/test/tint/builtins/gen/var/ceil/34064b.wgsl
index 3c62e98..cbc875d 100644
--- a/test/tint/builtins/gen/var/ceil/34064b.wgsl
+++ b/test/tint/builtins/gen/var/ceil/34064b.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = ceil(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_34064b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ceil_34064b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ceil_34064b();
 }
diff --git a/test/tint/builtins/gen/var/ceil/34064b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/ceil/34064b.wgsl.expected.wgsl
index 39d0fee..2d02fec 100644
--- a/test/tint/builtins/gen/var/ceil/34064b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/ceil/34064b.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = ceil(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_34064b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ceil_34064b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ceil_34064b();
 }
diff --git a/test/tint/builtins/gen/var/ceil/678655.wgsl b/test/tint/builtins/gen/var/ceil/678655.wgsl
index 33d78f2..ddb1072 100644
--- a/test/tint/builtins/gen/var/ceil/678655.wgsl
+++ b/test/tint/builtins/gen/var/ceil/678655.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = ceil(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_678655();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ceil_678655();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ceil_678655();
 }
diff --git a/test/tint/builtins/gen/var/ceil/678655.wgsl.expected.wgsl b/test/tint/builtins/gen/var/ceil/678655.wgsl.expected.wgsl
index 5a86a32..459d76b 100644
--- a/test/tint/builtins/gen/var/ceil/678655.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/ceil/678655.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = ceil(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_678655();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ceil_678655();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ceil_678655();
 }
diff --git a/test/tint/builtins/gen/var/ceil/96f597.wgsl b/test/tint/builtins/gen/var/ceil/96f597.wgsl
index 71d5cab..c9b10f5 100644
--- a/test/tint/builtins/gen/var/ceil/96f597.wgsl
+++ b/test/tint/builtins/gen/var/ceil/96f597.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = ceil(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_96f597();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ceil_96f597();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ceil_96f597();
 }
diff --git a/test/tint/builtins/gen/var/ceil/96f597.wgsl.expected.wgsl b/test/tint/builtins/gen/var/ceil/96f597.wgsl.expected.wgsl
index a7a79c2..03c02ba 100644
--- a/test/tint/builtins/gen/var/ceil/96f597.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/ceil/96f597.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = ceil(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_96f597();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ceil_96f597();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ceil_96f597();
 }
diff --git a/test/tint/builtins/gen/var/ceil/b74c16.wgsl b/test/tint/builtins/gen/var/ceil/b74c16.wgsl
index 7b74614..23a03bb 100644
--- a/test/tint/builtins/gen/var/ceil/b74c16.wgsl
+++ b/test/tint/builtins/gen/var/ceil/b74c16.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = ceil(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_b74c16();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ceil_b74c16();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ceil_b74c16();
 }
diff --git a/test/tint/builtins/gen/var/ceil/b74c16.wgsl.expected.wgsl b/test/tint/builtins/gen/var/ceil/b74c16.wgsl.expected.wgsl
index 2b573f8..ebc8d63 100644
--- a/test/tint/builtins/gen/var/ceil/b74c16.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/ceil/b74c16.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = ceil(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ceil_b74c16();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ceil_b74c16();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ceil_b74c16();
 }
diff --git a/test/tint/builtins/gen/var/clamp/0acf8f.wgsl b/test/tint/builtins/gen/var/clamp/0acf8f.wgsl
index 314ca1a..7cf569c 100644
--- a/test/tint/builtins/gen/var/clamp/0acf8f.wgsl
+++ b/test/tint/builtins/gen/var/clamp/0acf8f.wgsl
@@ -31,18 +31,18 @@
   var res: vec2<f32> = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_0acf8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_0acf8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_0acf8f();
 }
diff --git a/test/tint/builtins/gen/var/clamp/0acf8f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/0acf8f.wgsl.expected.wgsl
index 9f954b4..ab94dd3 100644
--- a/test/tint/builtins/gen/var/clamp/0acf8f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/0acf8f.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<f32> = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_0acf8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_0acf8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_0acf8f();
 }
diff --git a/test/tint/builtins/gen/var/clamp/1a32e3.wgsl b/test/tint/builtins/gen/var/clamp/1a32e3.wgsl
index 52ae09c..72820a9 100644
--- a/test/tint/builtins/gen/var/clamp/1a32e3.wgsl
+++ b/test/tint/builtins/gen/var/clamp/1a32e3.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<i32> = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_1a32e3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_1a32e3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_1a32e3();
 }
diff --git a/test/tint/builtins/gen/var/clamp/1a32e3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/1a32e3.wgsl.expected.wgsl
index 6c2345e..71ff9a6 100644
--- a/test/tint/builtins/gen/var/clamp/1a32e3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/1a32e3.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<i32> = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_1a32e3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_1a32e3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_1a32e3();
 }
diff --git a/test/tint/builtins/gen/var/clamp/2bd567.wgsl b/test/tint/builtins/gen/var/clamp/2bd567.wgsl
index 8c1abc8..9e94cc2 100644
--- a/test/tint/builtins/gen/var/clamp/2bd567.wgsl
+++ b/test/tint/builtins/gen/var/clamp/2bd567.wgsl
@@ -31,18 +31,18 @@
   var res: f32 = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_2bd567();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_2bd567();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_2bd567();
 }
diff --git a/test/tint/builtins/gen/var/clamp/2bd567.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/2bd567.wgsl.expected.wgsl
index 44a3ecd..e5148b5 100644
--- a/test/tint/builtins/gen/var/clamp/2bd567.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/2bd567.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : f32 = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_2bd567();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_2bd567();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_2bd567();
 }
diff --git a/test/tint/builtins/gen/var/clamp/2bde41.wgsl b/test/tint/builtins/gen/var/clamp/2bde41.wgsl
index f542172..4cc18ea 100644
--- a/test/tint/builtins/gen/var/clamp/2bde41.wgsl
+++ b/test/tint/builtins/gen/var/clamp/2bde41.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_2bde41();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_2bde41();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_2bde41();
 }
diff --git a/test/tint/builtins/gen/var/clamp/2bde41.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/2bde41.wgsl.expected.wgsl
index 2a3dcf5..dc20a1c 100644
--- a/test/tint/builtins/gen/var/clamp/2bde41.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/2bde41.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<f32> = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_2bde41();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_2bde41();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_2bde41();
 }
diff --git a/test/tint/builtins/gen/var/clamp/548fc7.wgsl b/test/tint/builtins/gen/var/clamp/548fc7.wgsl
index 9ea35b0..3b65837 100644
--- a/test/tint/builtins/gen/var/clamp/548fc7.wgsl
+++ b/test/tint/builtins/gen/var/clamp/548fc7.wgsl
@@ -31,18 +31,18 @@
   var res: vec3<u32> = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_548fc7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_548fc7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_548fc7();
 }
diff --git a/test/tint/builtins/gen/var/clamp/548fc7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/548fc7.wgsl.expected.wgsl
index bf9f086..379f026 100644
--- a/test/tint/builtins/gen/var/clamp/548fc7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/548fc7.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<u32> = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_548fc7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_548fc7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_548fc7();
 }
diff --git a/test/tint/builtins/gen/var/clamp/5f0819.wgsl b/test/tint/builtins/gen/var/clamp/5f0819.wgsl
index 96b23a5..7f51c24 100644
--- a/test/tint/builtins/gen/var/clamp/5f0819.wgsl
+++ b/test/tint/builtins/gen/var/clamp/5f0819.wgsl
@@ -31,18 +31,18 @@
   var res: vec3<i32> = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_5f0819();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_5f0819();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_5f0819();
 }
diff --git a/test/tint/builtins/gen/var/clamp/5f0819.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/5f0819.wgsl.expected.wgsl
index 8a70766..dcc0a15 100644
--- a/test/tint/builtins/gen/var/clamp/5f0819.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/5f0819.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<i32> = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_5f0819();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_5f0819();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_5f0819();
 }
diff --git a/test/tint/builtins/gen/var/clamp/6c1749.wgsl b/test/tint/builtins/gen/var/clamp/6c1749.wgsl
index fdb16e6..35f2866 100644
--- a/test/tint/builtins/gen/var/clamp/6c1749.wgsl
+++ b/test/tint/builtins/gen/var/clamp/6c1749.wgsl
@@ -31,18 +31,18 @@
   var res: vec2<i32> = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_6c1749();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_6c1749();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_6c1749();
 }
diff --git a/test/tint/builtins/gen/var/clamp/6c1749.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/6c1749.wgsl.expected.wgsl
index f2882ec..6f0e8a3 100644
--- a/test/tint/builtins/gen/var/clamp/6c1749.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/6c1749.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_6c1749();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_6c1749();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_6c1749();
 }
diff --git a/test/tint/builtins/gen/var/clamp/7706d7.wgsl b/test/tint/builtins/gen/var/clamp/7706d7.wgsl
index c708aeb..8833b83 100644
--- a/test/tint/builtins/gen/var/clamp/7706d7.wgsl
+++ b/test/tint/builtins/gen/var/clamp/7706d7.wgsl
@@ -31,18 +31,18 @@
   var res: vec2<u32> = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_7706d7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_7706d7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_7706d7();
 }
diff --git a/test/tint/builtins/gen/var/clamp/7706d7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/7706d7.wgsl.expected.wgsl
index cde513d..44b7096 100644
--- a/test/tint/builtins/gen/var/clamp/7706d7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/7706d7.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<u32> = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_7706d7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_7706d7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_7706d7();
 }
diff --git a/test/tint/builtins/gen/var/clamp/867397.wgsl b/test/tint/builtins/gen/var/clamp/867397.wgsl
index 8b545a0..1ecea11 100644
--- a/test/tint/builtins/gen/var/clamp/867397.wgsl
+++ b/test/tint/builtins/gen/var/clamp/867397.wgsl
@@ -31,18 +31,18 @@
   var res: vec3<f32> = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_867397();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_867397();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_867397();
 }
diff --git a/test/tint/builtins/gen/var/clamp/867397.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/867397.wgsl.expected.wgsl
index a175b66..48f43ad 100644
--- a/test/tint/builtins/gen/var/clamp/867397.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/867397.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<f32> = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_867397();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_867397();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_867397();
 }
diff --git a/test/tint/builtins/gen/var/clamp/a2de25.wgsl b/test/tint/builtins/gen/var/clamp/a2de25.wgsl
index 76d9689..49f3a32 100644
--- a/test/tint/builtins/gen/var/clamp/a2de25.wgsl
+++ b/test/tint/builtins/gen/var/clamp/a2de25.wgsl
@@ -31,18 +31,18 @@
   var res: u32 = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_a2de25();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_a2de25();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_a2de25();
 }
diff --git a/test/tint/builtins/gen/var/clamp/a2de25.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/a2de25.wgsl.expected.wgsl
index 33b39e6..a2e55fe 100644
--- a/test/tint/builtins/gen/var/clamp/a2de25.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/a2de25.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : u32 = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_a2de25();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_a2de25();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_a2de25();
 }
diff --git a/test/tint/builtins/gen/var/clamp/b07c65.wgsl b/test/tint/builtins/gen/var/clamp/b07c65.wgsl
index be73d24..914713f 100644
--- a/test/tint/builtins/gen/var/clamp/b07c65.wgsl
+++ b/test/tint/builtins/gen/var/clamp/b07c65.wgsl
@@ -31,18 +31,18 @@
   var res: i32 = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_b07c65();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_b07c65();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_b07c65();
 }
diff --git a/test/tint/builtins/gen/var/clamp/b07c65.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/b07c65.wgsl.expected.wgsl
index 7e9b627..ea26e11 100644
--- a/test/tint/builtins/gen/var/clamp/b07c65.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/b07c65.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : i32 = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_b07c65();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_b07c65();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_b07c65();
 }
diff --git a/test/tint/builtins/gen/var/clamp/bd43ce.wgsl b/test/tint/builtins/gen/var/clamp/bd43ce.wgsl
index 1c3d300..64f80bb 100644
--- a/test/tint/builtins/gen/var/clamp/bd43ce.wgsl
+++ b/test/tint/builtins/gen/var/clamp/bd43ce.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<u32> = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_bd43ce();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_bd43ce();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_bd43ce();
 }
diff --git a/test/tint/builtins/gen/var/clamp/bd43ce.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/bd43ce.wgsl.expected.wgsl
index e3cd79c..fddc51d 100644
--- a/test/tint/builtins/gen/var/clamp/bd43ce.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/bd43ce.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<u32> = clamp(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   clamp_bd43ce();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   clamp_bd43ce();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   clamp_bd43ce();
 }
diff --git a/test/tint/builtins/gen/var/cos/16dc15.wgsl b/test/tint/builtins/gen/var/cos/16dc15.wgsl
index 05cfa56..af1d95b 100644
--- a/test/tint/builtins/gen/var/cos/16dc15.wgsl
+++ b/test/tint/builtins/gen/var/cos/16dc15.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = cos(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_16dc15();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cos_16dc15();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cos_16dc15();
 }
diff --git a/test/tint/builtins/gen/var/cos/16dc15.wgsl.expected.wgsl b/test/tint/builtins/gen/var/cos/16dc15.wgsl.expected.wgsl
index 9c71b86..0e3ad8b 100644
--- a/test/tint/builtins/gen/var/cos/16dc15.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/cos/16dc15.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = cos(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_16dc15();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cos_16dc15();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cos_16dc15();
 }
diff --git a/test/tint/builtins/gen/var/cos/29d66d.wgsl b/test/tint/builtins/gen/var/cos/29d66d.wgsl
index 9490acc..bc78623 100644
--- a/test/tint/builtins/gen/var/cos/29d66d.wgsl
+++ b/test/tint/builtins/gen/var/cos/29d66d.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = cos(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_29d66d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cos_29d66d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cos_29d66d();
 }
diff --git a/test/tint/builtins/gen/var/cos/29d66d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/cos/29d66d.wgsl.expected.wgsl
index 7d9b60e..bc19b1f 100644
--- a/test/tint/builtins/gen/var/cos/29d66d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/cos/29d66d.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = cos(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_29d66d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cos_29d66d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cos_29d66d();
 }
diff --git a/test/tint/builtins/gen/var/cos/c3b486.wgsl b/test/tint/builtins/gen/var/cos/c3b486.wgsl
index 263bdec..979475c 100644
--- a/test/tint/builtins/gen/var/cos/c3b486.wgsl
+++ b/test/tint/builtins/gen/var/cos/c3b486.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = cos(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_c3b486();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cos_c3b486();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cos_c3b486();
 }
diff --git a/test/tint/builtins/gen/var/cos/c3b486.wgsl.expected.wgsl b/test/tint/builtins/gen/var/cos/c3b486.wgsl.expected.wgsl
index fab94da..3fa3a8a 100644
--- a/test/tint/builtins/gen/var/cos/c3b486.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/cos/c3b486.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = cos(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_c3b486();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cos_c3b486();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cos_c3b486();
 }
diff --git a/test/tint/builtins/gen/var/cos/c5c28e.wgsl b/test/tint/builtins/gen/var/cos/c5c28e.wgsl
index b94af03..d680525 100644
--- a/test/tint/builtins/gen/var/cos/c5c28e.wgsl
+++ b/test/tint/builtins/gen/var/cos/c5c28e.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = cos(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_c5c28e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cos_c5c28e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cos_c5c28e();
 }
diff --git a/test/tint/builtins/gen/var/cos/c5c28e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/cos/c5c28e.wgsl.expected.wgsl
index c6854ff..f4a3496 100644
--- a/test/tint/builtins/gen/var/cos/c5c28e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/cos/c5c28e.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = cos(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cos_c5c28e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cos_c5c28e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cos_c5c28e();
 }
diff --git a/test/tint/builtins/gen/var/cosh/377652.wgsl b/test/tint/builtins/gen/var/cosh/377652.wgsl
index b6fdb2e..4be9623 100644
--- a/test/tint/builtins/gen/var/cosh/377652.wgsl
+++ b/test/tint/builtins/gen/var/cosh/377652.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = cosh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_377652();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cosh_377652();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cosh_377652();
 }
diff --git a/test/tint/builtins/gen/var/cosh/377652.wgsl.expected.wgsl b/test/tint/builtins/gen/var/cosh/377652.wgsl.expected.wgsl
index 308581e..1fbd605 100644
--- a/test/tint/builtins/gen/var/cosh/377652.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/cosh/377652.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = cosh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_377652();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cosh_377652();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cosh_377652();
 }
diff --git a/test/tint/builtins/gen/var/cosh/c13756.wgsl b/test/tint/builtins/gen/var/cosh/c13756.wgsl
index 898d074..64cf4ca 100644
--- a/test/tint/builtins/gen/var/cosh/c13756.wgsl
+++ b/test/tint/builtins/gen/var/cosh/c13756.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = cosh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_c13756();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cosh_c13756();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cosh_c13756();
 }
diff --git a/test/tint/builtins/gen/var/cosh/c13756.wgsl.expected.wgsl b/test/tint/builtins/gen/var/cosh/c13756.wgsl.expected.wgsl
index 41a6061..174271b 100644
--- a/test/tint/builtins/gen/var/cosh/c13756.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/cosh/c13756.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = cosh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_c13756();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cosh_c13756();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cosh_c13756();
 }
diff --git a/test/tint/builtins/gen/var/cosh/da92dd.wgsl b/test/tint/builtins/gen/var/cosh/da92dd.wgsl
index fc2f3a6..4614931 100644
--- a/test/tint/builtins/gen/var/cosh/da92dd.wgsl
+++ b/test/tint/builtins/gen/var/cosh/da92dd.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = cosh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_da92dd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cosh_da92dd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cosh_da92dd();
 }
diff --git a/test/tint/builtins/gen/var/cosh/da92dd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/cosh/da92dd.wgsl.expected.wgsl
index 5a09829..aa89982 100644
--- a/test/tint/builtins/gen/var/cosh/da92dd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/cosh/da92dd.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = cosh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_da92dd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cosh_da92dd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cosh_da92dd();
 }
diff --git a/test/tint/builtins/gen/var/cosh/e0c1de.wgsl b/test/tint/builtins/gen/var/cosh/e0c1de.wgsl
index 926fd67..20b68e2 100644
--- a/test/tint/builtins/gen/var/cosh/e0c1de.wgsl
+++ b/test/tint/builtins/gen/var/cosh/e0c1de.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = cosh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_e0c1de();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cosh_e0c1de();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cosh_e0c1de();
 }
diff --git a/test/tint/builtins/gen/var/cosh/e0c1de.wgsl.expected.wgsl b/test/tint/builtins/gen/var/cosh/e0c1de.wgsl.expected.wgsl
index 51b4fd5..5464947 100644
--- a/test/tint/builtins/gen/var/cosh/e0c1de.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/cosh/e0c1de.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = cosh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cosh_e0c1de();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cosh_e0c1de();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cosh_e0c1de();
 }
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/208d46.wgsl b/test/tint/builtins/gen/var/countLeadingZeros/208d46.wgsl
index 40b1848..adcbb5e 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/208d46.wgsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/208d46.wgsl
@@ -29,18 +29,18 @@
   var res: u32 = countLeadingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_208d46();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_208d46();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_208d46();
 }
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/208d46.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countLeadingZeros/208d46.wgsl.expected.wgsl
index 052dd97..fe43b71e 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/208d46.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/208d46.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : u32 = countLeadingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_208d46();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_208d46();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_208d46();
 }
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/6d4656.wgsl b/test/tint/builtins/gen/var/countLeadingZeros/6d4656.wgsl
index db877ab..dba9c83 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/6d4656.wgsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/6d4656.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = countLeadingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_6d4656();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_6d4656();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_6d4656();
 }
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/6d4656.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countLeadingZeros/6d4656.wgsl.expected.wgsl
index 8e14227..2b8a272 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/6d4656.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/6d4656.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : i32 = countLeadingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_6d4656();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_6d4656();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_6d4656();
 }
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/70783f.wgsl b/test/tint/builtins/gen/var/countLeadingZeros/70783f.wgsl
index 0c22c57..708e39e 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/70783f.wgsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/70783f.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<u32> = countLeadingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_70783f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_70783f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_70783f();
 }
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/70783f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countLeadingZeros/70783f.wgsl.expected.wgsl
index f005d35..1be223d 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/70783f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/70783f.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<u32> = countLeadingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_70783f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_70783f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_70783f();
 }
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/7c38a6.wgsl b/test/tint/builtins/gen/var/countLeadingZeros/7c38a6.wgsl
index 597fb8c..e85aae2 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/7c38a6.wgsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/7c38a6.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = countLeadingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_7c38a6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_7c38a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_7c38a6();
 }
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/7c38a6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countLeadingZeros/7c38a6.wgsl.expected.wgsl
index b4f5e0a..8134473 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/7c38a6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/7c38a6.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<i32> = countLeadingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_7c38a6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_7c38a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_7c38a6();
 }
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/858d40.wgsl b/test/tint/builtins/gen/var/countLeadingZeros/858d40.wgsl
index cdc1846..bbc1b6c 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/858d40.wgsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/858d40.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = countLeadingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_858d40();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_858d40();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_858d40();
 }
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/858d40.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countLeadingZeros/858d40.wgsl.expected.wgsl
index 7636a6b..41f4ded 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/858d40.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/858d40.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<i32> = countLeadingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_858d40();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_858d40();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_858d40();
 }
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/ab6345.wgsl b/test/tint/builtins/gen/var/countLeadingZeros/ab6345.wgsl
index f27d250..e907360 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/ab6345.wgsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/ab6345.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<u32> = countLeadingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_ab6345();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_ab6345();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_ab6345();
 }
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/ab6345.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countLeadingZeros/ab6345.wgsl.expected.wgsl
index a9936e0..70c66e2 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/ab6345.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/ab6345.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<u32> = countLeadingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_ab6345();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_ab6345();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_ab6345();
 }
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/eab32b.wgsl b/test/tint/builtins/gen/var/countLeadingZeros/eab32b.wgsl
index c3a1e88..25d15db 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/eab32b.wgsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/eab32b.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<i32> = countLeadingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_eab32b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_eab32b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_eab32b();
 }
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/eab32b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countLeadingZeros/eab32b.wgsl.expected.wgsl
index 2cfb1ae..148e8dd 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/eab32b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/eab32b.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<i32> = countLeadingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_eab32b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_eab32b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_eab32b();
 }
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/f70103.wgsl b/test/tint/builtins/gen/var/countLeadingZeros/f70103.wgsl
index ca3af73..5d7ba1e 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/f70103.wgsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/f70103.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<u32> = countLeadingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_f70103();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_f70103();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_f70103();
 }
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/f70103.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countLeadingZeros/f70103.wgsl.expected.wgsl
index 62fbfc6..335e6b5 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/f70103.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/f70103.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<u32> = countLeadingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countLeadingZeros_f70103();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countLeadingZeros_f70103();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countLeadingZeros_f70103();
 }
diff --git a/test/tint/builtins/gen/var/countOneBits/0d0e46.wgsl b/test/tint/builtins/gen/var/countOneBits/0d0e46.wgsl
index 61a57d3..ae4744b 100644
--- a/test/tint/builtins/gen/var/countOneBits/0d0e46.wgsl
+++ b/test/tint/builtins/gen/var/countOneBits/0d0e46.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<u32> = countOneBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_0d0e46();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_0d0e46();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_0d0e46();
 }
diff --git a/test/tint/builtins/gen/var/countOneBits/0d0e46.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countOneBits/0d0e46.wgsl.expected.wgsl
index fd7c556..a637065 100644
--- a/test/tint/builtins/gen/var/countOneBits/0d0e46.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countOneBits/0d0e46.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<u32> = countOneBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_0d0e46();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_0d0e46();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_0d0e46();
 }
diff --git a/test/tint/builtins/gen/var/countOneBits/0f7980.wgsl b/test/tint/builtins/gen/var/countOneBits/0f7980.wgsl
index 0e27caa..e838c5f 100644
--- a/test/tint/builtins/gen/var/countOneBits/0f7980.wgsl
+++ b/test/tint/builtins/gen/var/countOneBits/0f7980.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<i32> = countOneBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_0f7980();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_0f7980();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_0f7980();
 }
diff --git a/test/tint/builtins/gen/var/countOneBits/0f7980.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countOneBits/0f7980.wgsl.expected.wgsl
index 200c35e..d96bd55 100644
--- a/test/tint/builtins/gen/var/countOneBits/0f7980.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countOneBits/0f7980.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<i32> = countOneBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_0f7980();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_0f7980();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_0f7980();
 }
diff --git a/test/tint/builtins/gen/var/countOneBits/65d2ae.wgsl b/test/tint/builtins/gen/var/countOneBits/65d2ae.wgsl
index 5b4d0a2..6fff458 100644
--- a/test/tint/builtins/gen/var/countOneBits/65d2ae.wgsl
+++ b/test/tint/builtins/gen/var/countOneBits/65d2ae.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = countOneBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_65d2ae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_65d2ae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_65d2ae();
 }
diff --git a/test/tint/builtins/gen/var/countOneBits/65d2ae.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countOneBits/65d2ae.wgsl.expected.wgsl
index f5a9823..7822ad9 100644
--- a/test/tint/builtins/gen/var/countOneBits/65d2ae.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countOneBits/65d2ae.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<i32> = countOneBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_65d2ae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_65d2ae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_65d2ae();
 }
diff --git a/test/tint/builtins/gen/var/countOneBits/690cfc.wgsl b/test/tint/builtins/gen/var/countOneBits/690cfc.wgsl
index 737f276..ce01495 100644
--- a/test/tint/builtins/gen/var/countOneBits/690cfc.wgsl
+++ b/test/tint/builtins/gen/var/countOneBits/690cfc.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<u32> = countOneBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_690cfc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_690cfc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_690cfc();
 }
diff --git a/test/tint/builtins/gen/var/countOneBits/690cfc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countOneBits/690cfc.wgsl.expected.wgsl
index 4c33e51..15f3f7f 100644
--- a/test/tint/builtins/gen/var/countOneBits/690cfc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countOneBits/690cfc.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<u32> = countOneBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_690cfc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_690cfc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_690cfc();
 }
diff --git a/test/tint/builtins/gen/var/countOneBits/94fd81.wgsl b/test/tint/builtins/gen/var/countOneBits/94fd81.wgsl
index 6832818..829ed10 100644
--- a/test/tint/builtins/gen/var/countOneBits/94fd81.wgsl
+++ b/test/tint/builtins/gen/var/countOneBits/94fd81.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<u32> = countOneBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_94fd81();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_94fd81();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_94fd81();
 }
diff --git a/test/tint/builtins/gen/var/countOneBits/94fd81.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countOneBits/94fd81.wgsl.expected.wgsl
index 5048e6c..6925afb 100644
--- a/test/tint/builtins/gen/var/countOneBits/94fd81.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countOneBits/94fd81.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<u32> = countOneBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_94fd81();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_94fd81();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_94fd81();
 }
diff --git a/test/tint/builtins/gen/var/countOneBits/ae44f9.wgsl b/test/tint/builtins/gen/var/countOneBits/ae44f9.wgsl
index 3e6f59a..0272238 100644
--- a/test/tint/builtins/gen/var/countOneBits/ae44f9.wgsl
+++ b/test/tint/builtins/gen/var/countOneBits/ae44f9.wgsl
@@ -29,18 +29,18 @@
   var res: u32 = countOneBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_ae44f9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_ae44f9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_ae44f9();
 }
diff --git a/test/tint/builtins/gen/var/countOneBits/ae44f9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countOneBits/ae44f9.wgsl.expected.wgsl
index 3c536e6..7d63e7b 100644
--- a/test/tint/builtins/gen/var/countOneBits/ae44f9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countOneBits/ae44f9.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : u32 = countOneBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_ae44f9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_ae44f9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_ae44f9();
 }
diff --git a/test/tint/builtins/gen/var/countOneBits/af90e2.wgsl b/test/tint/builtins/gen/var/countOneBits/af90e2.wgsl
index c9d9775..5d14ec5 100644
--- a/test/tint/builtins/gen/var/countOneBits/af90e2.wgsl
+++ b/test/tint/builtins/gen/var/countOneBits/af90e2.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = countOneBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_af90e2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_af90e2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_af90e2();
 }
diff --git a/test/tint/builtins/gen/var/countOneBits/af90e2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countOneBits/af90e2.wgsl.expected.wgsl
index 259a107..d64deda 100644
--- a/test/tint/builtins/gen/var/countOneBits/af90e2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countOneBits/af90e2.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<i32> = countOneBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_af90e2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_af90e2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_af90e2();
 }
diff --git a/test/tint/builtins/gen/var/countOneBits/fd88b2.wgsl b/test/tint/builtins/gen/var/countOneBits/fd88b2.wgsl
index e96dd99..02a4fc9 100644
--- a/test/tint/builtins/gen/var/countOneBits/fd88b2.wgsl
+++ b/test/tint/builtins/gen/var/countOneBits/fd88b2.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = countOneBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_fd88b2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_fd88b2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_fd88b2();
 }
diff --git a/test/tint/builtins/gen/var/countOneBits/fd88b2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countOneBits/fd88b2.wgsl.expected.wgsl
index b3e1453..3712925 100644
--- a/test/tint/builtins/gen/var/countOneBits/fd88b2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countOneBits/fd88b2.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : i32 = countOneBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countOneBits_fd88b2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countOneBits_fd88b2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countOneBits_fd88b2();
 }
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/1ad138.wgsl b/test/tint/builtins/gen/var/countTrailingZeros/1ad138.wgsl
index 70140f1..5f68b88 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/1ad138.wgsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/1ad138.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<u32> = countTrailingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_1ad138();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_1ad138();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_1ad138();
 }
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/1ad138.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countTrailingZeros/1ad138.wgsl.expected.wgsl
index a4169f7..b11da61 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/1ad138.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/1ad138.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<u32> = countTrailingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_1ad138();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_1ad138();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_1ad138();
 }
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/1dc84a.wgsl b/test/tint/builtins/gen/var/countTrailingZeros/1dc84a.wgsl
index 0834908..61c6cc2 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/1dc84a.wgsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/1dc84a.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<i32> = countTrailingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_1dc84a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_1dc84a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_1dc84a();
 }
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/1dc84a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countTrailingZeros/1dc84a.wgsl.expected.wgsl
index e3d95b5..ea85d0f 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/1dc84a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/1dc84a.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<i32> = countTrailingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_1dc84a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_1dc84a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_1dc84a();
 }
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/21e394.wgsl b/test/tint/builtins/gen/var/countTrailingZeros/21e394.wgsl
index 9259500..4689751 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/21e394.wgsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/21e394.wgsl
@@ -29,18 +29,18 @@
   var res: u32 = countTrailingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_21e394();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_21e394();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_21e394();
 }
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/21e394.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countTrailingZeros/21e394.wgsl.expected.wgsl
index 3756bcf..cafc47e 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/21e394.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/21e394.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : u32 = countTrailingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_21e394();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_21e394();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_21e394();
 }
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/327c37.wgsl b/test/tint/builtins/gen/var/countTrailingZeros/327c37.wgsl
index f4a72e6..bace43d 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/327c37.wgsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/327c37.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = countTrailingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_327c37();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_327c37();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_327c37();
 }
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/327c37.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countTrailingZeros/327c37.wgsl.expected.wgsl
index f235ce1..292b0a7 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/327c37.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/327c37.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<i32> = countTrailingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_327c37();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_327c37();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_327c37();
 }
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/42fed6.wgsl b/test/tint/builtins/gen/var/countTrailingZeros/42fed6.wgsl
index 9d3a884..0d97f6f 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/42fed6.wgsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/42fed6.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = countTrailingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_42fed6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_42fed6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_42fed6();
 }
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/42fed6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countTrailingZeros/42fed6.wgsl.expected.wgsl
index 536a7c0..3007518 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/42fed6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/42fed6.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : i32 = countTrailingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_42fed6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_42fed6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_42fed6();
 }
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/8ed26f.wgsl b/test/tint/builtins/gen/var/countTrailingZeros/8ed26f.wgsl
index e64b6a8..134ed84 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/8ed26f.wgsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/8ed26f.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<u32> = countTrailingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_8ed26f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_8ed26f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_8ed26f();
 }
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/8ed26f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countTrailingZeros/8ed26f.wgsl.expected.wgsl
index 61986c1..8fa99cc 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/8ed26f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/8ed26f.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<u32> = countTrailingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_8ed26f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_8ed26f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_8ed26f();
 }
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/acfacb.wgsl b/test/tint/builtins/gen/var/countTrailingZeros/acfacb.wgsl
index 0da23de..91531cc 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/acfacb.wgsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/acfacb.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = countTrailingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_acfacb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_acfacb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_acfacb();
 }
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/acfacb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countTrailingZeros/acfacb.wgsl.expected.wgsl
index e93b279..395641c 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/acfacb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/acfacb.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<i32> = countTrailingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_acfacb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_acfacb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_acfacb();
 }
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/d2b4a0.wgsl b/test/tint/builtins/gen/var/countTrailingZeros/d2b4a0.wgsl
index b94c3b6..b9fb257 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/d2b4a0.wgsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/d2b4a0.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<u32> = countTrailingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_d2b4a0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_d2b4a0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_d2b4a0();
 }
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/d2b4a0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/countTrailingZeros/d2b4a0.wgsl.expected.wgsl
index 8f10ca0..a43d884 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/d2b4a0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/d2b4a0.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<u32> = countTrailingZeros(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   countTrailingZeros_d2b4a0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   countTrailingZeros_d2b4a0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   countTrailingZeros_d2b4a0();
 }
diff --git a/test/tint/builtins/gen/var/cross/041cb0.wgsl b/test/tint/builtins/gen/var/cross/041cb0.wgsl
index 6bcfcba..0c13b08 100644
--- a/test/tint/builtins/gen/var/cross/041cb0.wgsl
+++ b/test/tint/builtins/gen/var/cross/041cb0.wgsl
@@ -30,18 +30,18 @@
   var res: vec3<f32> = cross(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cross_041cb0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cross_041cb0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cross_041cb0();
 }
diff --git a/test/tint/builtins/gen/var/cross/041cb0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/cross/041cb0.wgsl.expected.wgsl
index 9789b37..019e81b 100644
--- a/test/tint/builtins/gen/var/cross/041cb0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/cross/041cb0.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<f32> = cross(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   cross_041cb0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   cross_041cb0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   cross_041cb0();
 }
diff --git a/test/tint/builtins/gen/var/degrees/0d170c.wgsl b/test/tint/builtins/gen/var/degrees/0d170c.wgsl
index ca3ab63..53dfc0f 100644
--- a/test/tint/builtins/gen/var/degrees/0d170c.wgsl
+++ b/test/tint/builtins/gen/var/degrees/0d170c.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = degrees(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_0d170c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   degrees_0d170c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   degrees_0d170c();
 }
diff --git a/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.wgsl
index 921b7ef..1fd7099 100644
--- a/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = degrees(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_0d170c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   degrees_0d170c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   degrees_0d170c();
 }
diff --git a/test/tint/builtins/gen/var/degrees/1ad5df.wgsl b/test/tint/builtins/gen/var/degrees/1ad5df.wgsl
index 7b72b45..9fc75c1 100644
--- a/test/tint/builtins/gen/var/degrees/1ad5df.wgsl
+++ b/test/tint/builtins/gen/var/degrees/1ad5df.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = degrees(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_1ad5df();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   degrees_1ad5df();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   degrees_1ad5df();
 }
diff --git a/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.wgsl b/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.wgsl
index bcec4b0..1509710 100644
--- a/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = degrees(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_1ad5df();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   degrees_1ad5df();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   degrees_1ad5df();
 }
diff --git a/test/tint/builtins/gen/var/degrees/2af623.wgsl b/test/tint/builtins/gen/var/degrees/2af623.wgsl
index 2aa8c72..22f9b49 100644
--- a/test/tint/builtins/gen/var/degrees/2af623.wgsl
+++ b/test/tint/builtins/gen/var/degrees/2af623.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = degrees(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_2af623();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   degrees_2af623();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   degrees_2af623();
 }
diff --git a/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.wgsl b/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.wgsl
index 1406f32..eb2f038 100644
--- a/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = degrees(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_2af623();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   degrees_2af623();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   degrees_2af623();
 }
diff --git a/test/tint/builtins/gen/var/degrees/51f705.wgsl b/test/tint/builtins/gen/var/degrees/51f705.wgsl
index 35c111d..2e70d6c 100644
--- a/test/tint/builtins/gen/var/degrees/51f705.wgsl
+++ b/test/tint/builtins/gen/var/degrees/51f705.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = degrees(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_51f705();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   degrees_51f705();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   degrees_51f705();
 }
diff --git a/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.wgsl b/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.wgsl
index de2a96d..80f8724 100644
--- a/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = degrees(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   degrees_51f705();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   degrees_51f705();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   degrees_51f705();
 }
diff --git a/test/tint/builtins/gen/var/determinant/2b62ba.wgsl b/test/tint/builtins/gen/var/determinant/2b62ba.wgsl
index 0a0a423..a1d55c2 100644
--- a/test/tint/builtins/gen/var/determinant/2b62ba.wgsl
+++ b/test/tint/builtins/gen/var/determinant/2b62ba.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = determinant(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   determinant_2b62ba();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   determinant_2b62ba();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   determinant_2b62ba();
 }
diff --git a/test/tint/builtins/gen/var/determinant/2b62ba.wgsl.expected.wgsl b/test/tint/builtins/gen/var/determinant/2b62ba.wgsl.expected.wgsl
index 8ac8f81..cbd87c5 100644
--- a/test/tint/builtins/gen/var/determinant/2b62ba.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/determinant/2b62ba.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = determinant(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   determinant_2b62ba();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   determinant_2b62ba();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   determinant_2b62ba();
 }
diff --git a/test/tint/builtins/gen/var/determinant/a0a87c.wgsl b/test/tint/builtins/gen/var/determinant/a0a87c.wgsl
index ff3c067..b3beba9 100644
--- a/test/tint/builtins/gen/var/determinant/a0a87c.wgsl
+++ b/test/tint/builtins/gen/var/determinant/a0a87c.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = determinant(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   determinant_a0a87c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   determinant_a0a87c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   determinant_a0a87c();
 }
diff --git a/test/tint/builtins/gen/var/determinant/a0a87c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/determinant/a0a87c.wgsl.expected.wgsl
index bd9f32c..a49da48 100644
--- a/test/tint/builtins/gen/var/determinant/a0a87c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/determinant/a0a87c.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = determinant(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   determinant_a0a87c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   determinant_a0a87c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   determinant_a0a87c();
 }
diff --git a/test/tint/builtins/gen/var/determinant/e19305.wgsl b/test/tint/builtins/gen/var/determinant/e19305.wgsl
index 807b446..46af1ce 100644
--- a/test/tint/builtins/gen/var/determinant/e19305.wgsl
+++ b/test/tint/builtins/gen/var/determinant/e19305.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = determinant(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   determinant_e19305();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   determinant_e19305();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   determinant_e19305();
 }
diff --git a/test/tint/builtins/gen/var/determinant/e19305.wgsl.expected.wgsl b/test/tint/builtins/gen/var/determinant/e19305.wgsl.expected.wgsl
index f01365f..cba3183 100644
--- a/test/tint/builtins/gen/var/determinant/e19305.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/determinant/e19305.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = determinant(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   determinant_e19305();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   determinant_e19305();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   determinant_e19305();
 }
diff --git a/test/tint/builtins/gen/var/distance/0657d4.wgsl b/test/tint/builtins/gen/var/distance/0657d4.wgsl
index 8569c29..e7db5e3 100644
--- a/test/tint/builtins/gen/var/distance/0657d4.wgsl
+++ b/test/tint/builtins/gen/var/distance/0657d4.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = distance(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_0657d4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   distance_0657d4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   distance_0657d4();
 }
diff --git a/test/tint/builtins/gen/var/distance/0657d4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/distance/0657d4.wgsl.expected.wgsl
index 37716a7..ebbcdd4 100644
--- a/test/tint/builtins/gen/var/distance/0657d4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/distance/0657d4.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : f32 = distance(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_0657d4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   distance_0657d4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   distance_0657d4();
 }
diff --git a/test/tint/builtins/gen/var/distance/9646ea.wgsl b/test/tint/builtins/gen/var/distance/9646ea.wgsl
index fdd8827..7727a18 100644
--- a/test/tint/builtins/gen/var/distance/9646ea.wgsl
+++ b/test/tint/builtins/gen/var/distance/9646ea.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = distance(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_9646ea();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   distance_9646ea();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   distance_9646ea();
 }
diff --git a/test/tint/builtins/gen/var/distance/9646ea.wgsl.expected.wgsl b/test/tint/builtins/gen/var/distance/9646ea.wgsl.expected.wgsl
index e2023ef..b1d5775 100644
--- a/test/tint/builtins/gen/var/distance/9646ea.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/distance/9646ea.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : f32 = distance(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_9646ea();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   distance_9646ea();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   distance_9646ea();
 }
diff --git a/test/tint/builtins/gen/var/distance/aa4055.wgsl b/test/tint/builtins/gen/var/distance/aa4055.wgsl
index 192d092..549b29f 100644
--- a/test/tint/builtins/gen/var/distance/aa4055.wgsl
+++ b/test/tint/builtins/gen/var/distance/aa4055.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = distance(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_aa4055();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   distance_aa4055();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   distance_aa4055();
 }
diff --git a/test/tint/builtins/gen/var/distance/aa4055.wgsl.expected.wgsl b/test/tint/builtins/gen/var/distance/aa4055.wgsl.expected.wgsl
index ed6a4db..9ed4bda 100644
--- a/test/tint/builtins/gen/var/distance/aa4055.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/distance/aa4055.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : f32 = distance(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_aa4055();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   distance_aa4055();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   distance_aa4055();
 }
diff --git a/test/tint/builtins/gen/var/distance/cfed73.wgsl b/test/tint/builtins/gen/var/distance/cfed73.wgsl
index 497731a..24ddffd 100644
--- a/test/tint/builtins/gen/var/distance/cfed73.wgsl
+++ b/test/tint/builtins/gen/var/distance/cfed73.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = distance(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_cfed73();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   distance_cfed73();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   distance_cfed73();
 }
diff --git a/test/tint/builtins/gen/var/distance/cfed73.wgsl.expected.wgsl b/test/tint/builtins/gen/var/distance/cfed73.wgsl.expected.wgsl
index 6464628..1237f46 100644
--- a/test/tint/builtins/gen/var/distance/cfed73.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/distance/cfed73.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : f32 = distance(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   distance_cfed73();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   distance_cfed73();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   distance_cfed73();
 }
diff --git a/test/tint/builtins/gen/var/dot/0c577b.wgsl b/test/tint/builtins/gen/var/dot/0c577b.wgsl
index 2742164..7d967e9 100644
--- a/test/tint/builtins/gen/var/dot/0c577b.wgsl
+++ b/test/tint/builtins/gen/var/dot/0c577b.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = dot(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_0c577b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_0c577b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_0c577b();
 }
diff --git a/test/tint/builtins/gen/var/dot/0c577b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dot/0c577b.wgsl.expected.wgsl
index d098148..01269fb 100644
--- a/test/tint/builtins/gen/var/dot/0c577b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dot/0c577b.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : f32 = dot(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_0c577b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_0c577b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_0c577b();
 }
diff --git a/test/tint/builtins/gen/var/dot/7548a0.wgsl b/test/tint/builtins/gen/var/dot/7548a0.wgsl
index c4f4a8f..c0fbe30 100644
--- a/test/tint/builtins/gen/var/dot/7548a0.wgsl
+++ b/test/tint/builtins/gen/var/dot/7548a0.wgsl
@@ -30,18 +30,18 @@
   var res: u32 = dot(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_7548a0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_7548a0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_7548a0();
 }
diff --git a/test/tint/builtins/gen/var/dot/7548a0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dot/7548a0.wgsl.expected.wgsl
index 867b126..c9f97f7 100644
--- a/test/tint/builtins/gen/var/dot/7548a0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dot/7548a0.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : u32 = dot(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_7548a0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_7548a0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_7548a0();
 }
diff --git a/test/tint/builtins/gen/var/dot/883f0e.wgsl b/test/tint/builtins/gen/var/dot/883f0e.wgsl
index 699bce7..3e8cf03 100644
--- a/test/tint/builtins/gen/var/dot/883f0e.wgsl
+++ b/test/tint/builtins/gen/var/dot/883f0e.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = dot(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_883f0e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_883f0e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_883f0e();
 }
diff --git a/test/tint/builtins/gen/var/dot/883f0e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dot/883f0e.wgsl.expected.wgsl
index 57a9b6e..daca8ae 100644
--- a/test/tint/builtins/gen/var/dot/883f0e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dot/883f0e.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : f32 = dot(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_883f0e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_883f0e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_883f0e();
 }
diff --git a/test/tint/builtins/gen/var/dot/97c7ee.wgsl b/test/tint/builtins/gen/var/dot/97c7ee.wgsl
index cc042d0..db27a08 100644
--- a/test/tint/builtins/gen/var/dot/97c7ee.wgsl
+++ b/test/tint/builtins/gen/var/dot/97c7ee.wgsl
@@ -30,18 +30,18 @@
   var res: u32 = dot(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_97c7ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_97c7ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_97c7ee();
 }
diff --git a/test/tint/builtins/gen/var/dot/97c7ee.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dot/97c7ee.wgsl.expected.wgsl
index 6a750d1..c0b83f7 100644
--- a/test/tint/builtins/gen/var/dot/97c7ee.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dot/97c7ee.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : u32 = dot(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_97c7ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_97c7ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_97c7ee();
 }
diff --git a/test/tint/builtins/gen/var/dot/ba4246.wgsl b/test/tint/builtins/gen/var/dot/ba4246.wgsl
index f5cedcd..3cc417b 100644
--- a/test/tint/builtins/gen/var/dot/ba4246.wgsl
+++ b/test/tint/builtins/gen/var/dot/ba4246.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = dot(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_ba4246();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_ba4246();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_ba4246();
 }
diff --git a/test/tint/builtins/gen/var/dot/ba4246.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dot/ba4246.wgsl.expected.wgsl
index 77cdb59..ceff01c 100644
--- a/test/tint/builtins/gen/var/dot/ba4246.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dot/ba4246.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : f32 = dot(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_ba4246();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_ba4246();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_ba4246();
 }
diff --git a/test/tint/builtins/gen/var/dot/e994c7.wgsl b/test/tint/builtins/gen/var/dot/e994c7.wgsl
index 302f0f9..729088e 100644
--- a/test/tint/builtins/gen/var/dot/e994c7.wgsl
+++ b/test/tint/builtins/gen/var/dot/e994c7.wgsl
@@ -30,18 +30,18 @@
   var res: u32 = dot(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_e994c7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_e994c7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_e994c7();
 }
diff --git a/test/tint/builtins/gen/var/dot/e994c7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dot/e994c7.wgsl.expected.wgsl
index 67fff9b..bc7a4ad 100644
--- a/test/tint/builtins/gen/var/dot/e994c7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dot/e994c7.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : u32 = dot(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_e994c7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_e994c7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_e994c7();
 }
diff --git a/test/tint/builtins/gen/var/dot/ef6b1d.wgsl b/test/tint/builtins/gen/var/dot/ef6b1d.wgsl
index 0aa8cf5..8403d48 100644
--- a/test/tint/builtins/gen/var/dot/ef6b1d.wgsl
+++ b/test/tint/builtins/gen/var/dot/ef6b1d.wgsl
@@ -30,18 +30,18 @@
   var res: i32 = dot(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_ef6b1d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_ef6b1d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_ef6b1d();
 }
diff --git a/test/tint/builtins/gen/var/dot/ef6b1d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dot/ef6b1d.wgsl.expected.wgsl
index aae5da9..0711b1b 100644
--- a/test/tint/builtins/gen/var/dot/ef6b1d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dot/ef6b1d.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = dot(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_ef6b1d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_ef6b1d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_ef6b1d();
 }
diff --git a/test/tint/builtins/gen/var/dot/f1312c.wgsl b/test/tint/builtins/gen/var/dot/f1312c.wgsl
index a8ed93f..fbd1d52 100644
--- a/test/tint/builtins/gen/var/dot/f1312c.wgsl
+++ b/test/tint/builtins/gen/var/dot/f1312c.wgsl
@@ -30,18 +30,18 @@
   var res: i32 = dot(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_f1312c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_f1312c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_f1312c();
 }
diff --git a/test/tint/builtins/gen/var/dot/f1312c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dot/f1312c.wgsl.expected.wgsl
index 7b402b4..96f1ceb 100644
--- a/test/tint/builtins/gen/var/dot/f1312c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dot/f1312c.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = dot(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_f1312c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_f1312c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_f1312c();
 }
diff --git a/test/tint/builtins/gen/var/dot/fc5f7c.wgsl b/test/tint/builtins/gen/var/dot/fc5f7c.wgsl
index db70801..ff1f457 100644
--- a/test/tint/builtins/gen/var/dot/fc5f7c.wgsl
+++ b/test/tint/builtins/gen/var/dot/fc5f7c.wgsl
@@ -30,18 +30,18 @@
   var res: i32 = dot(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_fc5f7c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_fc5f7c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_fc5f7c();
 }
diff --git a/test/tint/builtins/gen/var/dot/fc5f7c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dot/fc5f7c.wgsl.expected.wgsl
index f2d3f67..677e29d 100644
--- a/test/tint/builtins/gen/var/dot/fc5f7c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dot/fc5f7c.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = dot(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot_fc5f7c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dot_fc5f7c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   dot_fc5f7c();
 }
diff --git a/test/tint/builtins/gen/var/dpdx/0763f7.wgsl b/test/tint/builtins/gen/var/dpdx/0763f7.wgsl
index 6a7314b..7bb5ccd 100644
--- a/test/tint/builtins/gen/var/dpdx/0763f7.wgsl
+++ b/test/tint/builtins/gen/var/dpdx/0763f7.wgsl
@@ -29,7 +29,7 @@
   var res: vec3<f32> = dpdx(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdx_0763f7();
 }
diff --git a/test/tint/builtins/gen/var/dpdx/0763f7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdx/0763f7.wgsl.expected.wgsl
index 83b7c77..9b99c5a0 100644
--- a/test/tint/builtins/gen/var/dpdx/0763f7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdx/0763f7.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec3<f32> = dpdx(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdx_0763f7();
 }
diff --git a/test/tint/builtins/gen/var/dpdx/99edb1.wgsl b/test/tint/builtins/gen/var/dpdx/99edb1.wgsl
index cc540ea..3775ea1 100644
--- a/test/tint/builtins/gen/var/dpdx/99edb1.wgsl
+++ b/test/tint/builtins/gen/var/dpdx/99edb1.wgsl
@@ -29,7 +29,7 @@
   var res: vec2<f32> = dpdx(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdx_99edb1();
 }
diff --git a/test/tint/builtins/gen/var/dpdx/99edb1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdx/99edb1.wgsl.expected.wgsl
index 7fa9efe..bc0b07b 100644
--- a/test/tint/builtins/gen/var/dpdx/99edb1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdx/99edb1.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec2<f32> = dpdx(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdx_99edb1();
 }
diff --git a/test/tint/builtins/gen/var/dpdx/c487fa.wgsl b/test/tint/builtins/gen/var/dpdx/c487fa.wgsl
index ff04efb..a284be1 100644
--- a/test/tint/builtins/gen/var/dpdx/c487fa.wgsl
+++ b/test/tint/builtins/gen/var/dpdx/c487fa.wgsl
@@ -29,7 +29,7 @@
   var res: vec4<f32> = dpdx(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdx_c487fa();
 }
diff --git a/test/tint/builtins/gen/var/dpdx/c487fa.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdx/c487fa.wgsl.expected.wgsl
index f7aa222..93d12c1 100644
--- a/test/tint/builtins/gen/var/dpdx/c487fa.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdx/c487fa.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec4<f32> = dpdx(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdx_c487fa();
 }
diff --git a/test/tint/builtins/gen/var/dpdx/e263de.wgsl b/test/tint/builtins/gen/var/dpdx/e263de.wgsl
index 7247c64..d5c076a 100644
--- a/test/tint/builtins/gen/var/dpdx/e263de.wgsl
+++ b/test/tint/builtins/gen/var/dpdx/e263de.wgsl
@@ -29,7 +29,7 @@
   var res: f32 = dpdx(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdx_e263de();
 }
diff --git a/test/tint/builtins/gen/var/dpdx/e263de.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdx/e263de.wgsl.expected.wgsl
index aff2cf1..ff07c04 100644
--- a/test/tint/builtins/gen/var/dpdx/e263de.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdx/e263de.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : f32 = dpdx(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdx_e263de();
 }
diff --git a/test/tint/builtins/gen/var/dpdxCoarse/029152.wgsl b/test/tint/builtins/gen/var/dpdxCoarse/029152.wgsl
index a565a80..c43ba0a 100644
--- a/test/tint/builtins/gen/var/dpdxCoarse/029152.wgsl
+++ b/test/tint/builtins/gen/var/dpdxCoarse/029152.wgsl
@@ -29,7 +29,7 @@
   var res: f32 = dpdxCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxCoarse_029152();
 }
diff --git a/test/tint/builtins/gen/var/dpdxCoarse/029152.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdxCoarse/029152.wgsl.expected.wgsl
index d243b10..88ed8cf 100644
--- a/test/tint/builtins/gen/var/dpdxCoarse/029152.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdxCoarse/029152.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : f32 = dpdxCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxCoarse_029152();
 }
diff --git a/test/tint/builtins/gen/var/dpdxCoarse/9581cf.wgsl b/test/tint/builtins/gen/var/dpdxCoarse/9581cf.wgsl
index 4f30edf..e280333 100644
--- a/test/tint/builtins/gen/var/dpdxCoarse/9581cf.wgsl
+++ b/test/tint/builtins/gen/var/dpdxCoarse/9581cf.wgsl
@@ -29,7 +29,7 @@
   var res: vec2<f32> = dpdxCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxCoarse_9581cf();
 }
diff --git a/test/tint/builtins/gen/var/dpdxCoarse/9581cf.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdxCoarse/9581cf.wgsl.expected.wgsl
index e2ff427..e45226f 100644
--- a/test/tint/builtins/gen/var/dpdxCoarse/9581cf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdxCoarse/9581cf.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec2<f32> = dpdxCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxCoarse_9581cf();
 }
diff --git a/test/tint/builtins/gen/var/dpdxCoarse/c28641.wgsl b/test/tint/builtins/gen/var/dpdxCoarse/c28641.wgsl
index 1805285..897369a 100644
--- a/test/tint/builtins/gen/var/dpdxCoarse/c28641.wgsl
+++ b/test/tint/builtins/gen/var/dpdxCoarse/c28641.wgsl
@@ -29,7 +29,7 @@
   var res: vec4<f32> = dpdxCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxCoarse_c28641();
 }
diff --git a/test/tint/builtins/gen/var/dpdxCoarse/c28641.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdxCoarse/c28641.wgsl.expected.wgsl
index 50ffb65..5e662b1 100644
--- a/test/tint/builtins/gen/var/dpdxCoarse/c28641.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdxCoarse/c28641.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec4<f32> = dpdxCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxCoarse_c28641();
 }
diff --git a/test/tint/builtins/gen/var/dpdxCoarse/f64d7b.wgsl b/test/tint/builtins/gen/var/dpdxCoarse/f64d7b.wgsl
index fa36014..1bca5ec 100644
--- a/test/tint/builtins/gen/var/dpdxCoarse/f64d7b.wgsl
+++ b/test/tint/builtins/gen/var/dpdxCoarse/f64d7b.wgsl
@@ -29,7 +29,7 @@
   var res: vec3<f32> = dpdxCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxCoarse_f64d7b();
 }
diff --git a/test/tint/builtins/gen/var/dpdxCoarse/f64d7b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdxCoarse/f64d7b.wgsl.expected.wgsl
index 82763b8..941ebfb 100644
--- a/test/tint/builtins/gen/var/dpdxCoarse/f64d7b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdxCoarse/f64d7b.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec3<f32> = dpdxCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxCoarse_f64d7b();
 }
diff --git a/test/tint/builtins/gen/var/dpdxFine/8c5069.wgsl b/test/tint/builtins/gen/var/dpdxFine/8c5069.wgsl
index 3d78fc8..ef27450 100644
--- a/test/tint/builtins/gen/var/dpdxFine/8c5069.wgsl
+++ b/test/tint/builtins/gen/var/dpdxFine/8c5069.wgsl
@@ -29,7 +29,7 @@
   var res: vec4<f32> = dpdxFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxFine_8c5069();
 }
diff --git a/test/tint/builtins/gen/var/dpdxFine/8c5069.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdxFine/8c5069.wgsl.expected.wgsl
index d19330b..f7069f5 100644
--- a/test/tint/builtins/gen/var/dpdxFine/8c5069.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdxFine/8c5069.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec4<f32> = dpdxFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxFine_8c5069();
 }
diff --git a/test/tint/builtins/gen/var/dpdxFine/9631de.wgsl b/test/tint/builtins/gen/var/dpdxFine/9631de.wgsl
index 2d80b50..48a03c4 100644
--- a/test/tint/builtins/gen/var/dpdxFine/9631de.wgsl
+++ b/test/tint/builtins/gen/var/dpdxFine/9631de.wgsl
@@ -29,7 +29,7 @@
   var res: vec2<f32> = dpdxFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxFine_9631de();
 }
diff --git a/test/tint/builtins/gen/var/dpdxFine/9631de.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdxFine/9631de.wgsl.expected.wgsl
index 179b071..d2ffa27 100644
--- a/test/tint/builtins/gen/var/dpdxFine/9631de.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdxFine/9631de.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec2<f32> = dpdxFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxFine_9631de();
 }
diff --git a/test/tint/builtins/gen/var/dpdxFine/f401a2.wgsl b/test/tint/builtins/gen/var/dpdxFine/f401a2.wgsl
index 1dfeb73..4ae18c0 100644
--- a/test/tint/builtins/gen/var/dpdxFine/f401a2.wgsl
+++ b/test/tint/builtins/gen/var/dpdxFine/f401a2.wgsl
@@ -29,7 +29,7 @@
   var res: f32 = dpdxFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxFine_f401a2();
 }
diff --git a/test/tint/builtins/gen/var/dpdxFine/f401a2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdxFine/f401a2.wgsl.expected.wgsl
index 9b9d022..a045b08 100644
--- a/test/tint/builtins/gen/var/dpdxFine/f401a2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdxFine/f401a2.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : f32 = dpdxFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxFine_f401a2();
 }
diff --git a/test/tint/builtins/gen/var/dpdxFine/f92fb6.wgsl b/test/tint/builtins/gen/var/dpdxFine/f92fb6.wgsl
index 4849001..dbeece3 100644
--- a/test/tint/builtins/gen/var/dpdxFine/f92fb6.wgsl
+++ b/test/tint/builtins/gen/var/dpdxFine/f92fb6.wgsl
@@ -29,7 +29,7 @@
   var res: vec3<f32> = dpdxFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxFine_f92fb6();
 }
diff --git a/test/tint/builtins/gen/var/dpdxFine/f92fb6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdxFine/f92fb6.wgsl.expected.wgsl
index 8a68011..35478f0 100644
--- a/test/tint/builtins/gen/var/dpdxFine/f92fb6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdxFine/f92fb6.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec3<f32> = dpdxFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdxFine_f92fb6();
 }
diff --git a/test/tint/builtins/gen/var/dpdy/699a05.wgsl b/test/tint/builtins/gen/var/dpdy/699a05.wgsl
index 2300266..d94a0c5 100644
--- a/test/tint/builtins/gen/var/dpdy/699a05.wgsl
+++ b/test/tint/builtins/gen/var/dpdy/699a05.wgsl
@@ -29,7 +29,7 @@
   var res: vec4<f32> = dpdy(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdy_699a05();
 }
diff --git a/test/tint/builtins/gen/var/dpdy/699a05.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdy/699a05.wgsl.expected.wgsl
index afd333d..f77aa14 100644
--- a/test/tint/builtins/gen/var/dpdy/699a05.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdy/699a05.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec4<f32> = dpdy(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdy_699a05();
 }
diff --git a/test/tint/builtins/gen/var/dpdy/7f8d84.wgsl b/test/tint/builtins/gen/var/dpdy/7f8d84.wgsl
index 9c39cb8..daa8e82 100644
--- a/test/tint/builtins/gen/var/dpdy/7f8d84.wgsl
+++ b/test/tint/builtins/gen/var/dpdy/7f8d84.wgsl
@@ -29,7 +29,7 @@
   var res: f32 = dpdy(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdy_7f8d84();
 }
diff --git a/test/tint/builtins/gen/var/dpdy/7f8d84.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdy/7f8d84.wgsl.expected.wgsl
index aa3d3e8..d724ec0 100644
--- a/test/tint/builtins/gen/var/dpdy/7f8d84.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdy/7f8d84.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : f32 = dpdy(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdy_7f8d84();
 }
diff --git a/test/tint/builtins/gen/var/dpdy/a8b56e.wgsl b/test/tint/builtins/gen/var/dpdy/a8b56e.wgsl
index 9774ec2..be609cd 100644
--- a/test/tint/builtins/gen/var/dpdy/a8b56e.wgsl
+++ b/test/tint/builtins/gen/var/dpdy/a8b56e.wgsl
@@ -29,7 +29,7 @@
   var res: vec2<f32> = dpdy(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdy_a8b56e();
 }
diff --git a/test/tint/builtins/gen/var/dpdy/a8b56e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdy/a8b56e.wgsl.expected.wgsl
index 3c525a1..6b1dca8 100644
--- a/test/tint/builtins/gen/var/dpdy/a8b56e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdy/a8b56e.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec2<f32> = dpdy(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdy_a8b56e();
 }
diff --git a/test/tint/builtins/gen/var/dpdy/feb40f.wgsl b/test/tint/builtins/gen/var/dpdy/feb40f.wgsl
index 927411e..0e526f4 100644
--- a/test/tint/builtins/gen/var/dpdy/feb40f.wgsl
+++ b/test/tint/builtins/gen/var/dpdy/feb40f.wgsl
@@ -29,7 +29,7 @@
   var res: vec3<f32> = dpdy(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdy_feb40f();
 }
diff --git a/test/tint/builtins/gen/var/dpdy/feb40f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdy/feb40f.wgsl.expected.wgsl
index e5cf66b..b0d794e 100644
--- a/test/tint/builtins/gen/var/dpdy/feb40f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdy/feb40f.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec3<f32> = dpdy(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdy_feb40f();
 }
diff --git a/test/tint/builtins/gen/var/dpdyCoarse/3e1ab4.wgsl b/test/tint/builtins/gen/var/dpdyCoarse/3e1ab4.wgsl
index 5ff70f2..90de753 100644
--- a/test/tint/builtins/gen/var/dpdyCoarse/3e1ab4.wgsl
+++ b/test/tint/builtins/gen/var/dpdyCoarse/3e1ab4.wgsl
@@ -29,7 +29,7 @@
   var res: vec2<f32> = dpdyCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyCoarse_3e1ab4();
 }
diff --git a/test/tint/builtins/gen/var/dpdyCoarse/3e1ab4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdyCoarse/3e1ab4.wgsl.expected.wgsl
index 0a46975..9a1f514 100644
--- a/test/tint/builtins/gen/var/dpdyCoarse/3e1ab4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdyCoarse/3e1ab4.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec2<f32> = dpdyCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyCoarse_3e1ab4();
 }
diff --git a/test/tint/builtins/gen/var/dpdyCoarse/445d24.wgsl b/test/tint/builtins/gen/var/dpdyCoarse/445d24.wgsl
index 3e72e2f..6766327 100644
--- a/test/tint/builtins/gen/var/dpdyCoarse/445d24.wgsl
+++ b/test/tint/builtins/gen/var/dpdyCoarse/445d24.wgsl
@@ -29,7 +29,7 @@
   var res: vec4<f32> = dpdyCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyCoarse_445d24();
 }
diff --git a/test/tint/builtins/gen/var/dpdyCoarse/445d24.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdyCoarse/445d24.wgsl.expected.wgsl
index e1e9f85..66f4b20 100644
--- a/test/tint/builtins/gen/var/dpdyCoarse/445d24.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdyCoarse/445d24.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec4<f32> = dpdyCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyCoarse_445d24();
 }
diff --git a/test/tint/builtins/gen/var/dpdyCoarse/870a7e.wgsl b/test/tint/builtins/gen/var/dpdyCoarse/870a7e.wgsl
index c06358b..3c7d7b8 100644
--- a/test/tint/builtins/gen/var/dpdyCoarse/870a7e.wgsl
+++ b/test/tint/builtins/gen/var/dpdyCoarse/870a7e.wgsl
@@ -29,7 +29,7 @@
   var res: f32 = dpdyCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyCoarse_870a7e();
 }
diff --git a/test/tint/builtins/gen/var/dpdyCoarse/870a7e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdyCoarse/870a7e.wgsl.expected.wgsl
index a5fbe19..0cfff79 100644
--- a/test/tint/builtins/gen/var/dpdyCoarse/870a7e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdyCoarse/870a7e.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : f32 = dpdyCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyCoarse_870a7e();
 }
diff --git a/test/tint/builtins/gen/var/dpdyCoarse/ae1873.wgsl b/test/tint/builtins/gen/var/dpdyCoarse/ae1873.wgsl
index 120e799..2d3b754 100644
--- a/test/tint/builtins/gen/var/dpdyCoarse/ae1873.wgsl
+++ b/test/tint/builtins/gen/var/dpdyCoarse/ae1873.wgsl
@@ -29,7 +29,7 @@
   var res: vec3<f32> = dpdyCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyCoarse_ae1873();
 }
diff --git a/test/tint/builtins/gen/var/dpdyCoarse/ae1873.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdyCoarse/ae1873.wgsl.expected.wgsl
index 7cb6ef6..0725af0 100644
--- a/test/tint/builtins/gen/var/dpdyCoarse/ae1873.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdyCoarse/ae1873.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec3<f32> = dpdyCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyCoarse_ae1873();
 }
diff --git a/test/tint/builtins/gen/var/dpdyFine/1fb7ab.wgsl b/test/tint/builtins/gen/var/dpdyFine/1fb7ab.wgsl
index 14de687..75b8cd3 100644
--- a/test/tint/builtins/gen/var/dpdyFine/1fb7ab.wgsl
+++ b/test/tint/builtins/gen/var/dpdyFine/1fb7ab.wgsl
@@ -29,7 +29,7 @@
   var res: vec3<f32> = dpdyFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyFine_1fb7ab();
 }
diff --git a/test/tint/builtins/gen/var/dpdyFine/1fb7ab.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdyFine/1fb7ab.wgsl.expected.wgsl
index a8b3457..a9ef384 100644
--- a/test/tint/builtins/gen/var/dpdyFine/1fb7ab.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdyFine/1fb7ab.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec3<f32> = dpdyFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyFine_1fb7ab();
 }
diff --git a/test/tint/builtins/gen/var/dpdyFine/6eb673.wgsl b/test/tint/builtins/gen/var/dpdyFine/6eb673.wgsl
index 7513329..932f702 100644
--- a/test/tint/builtins/gen/var/dpdyFine/6eb673.wgsl
+++ b/test/tint/builtins/gen/var/dpdyFine/6eb673.wgsl
@@ -29,7 +29,7 @@
   var res: f32 = dpdyFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyFine_6eb673();
 }
diff --git a/test/tint/builtins/gen/var/dpdyFine/6eb673.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdyFine/6eb673.wgsl.expected.wgsl
index b6a2e54..016163d 100644
--- a/test/tint/builtins/gen/var/dpdyFine/6eb673.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdyFine/6eb673.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : f32 = dpdyFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyFine_6eb673();
 }
diff --git a/test/tint/builtins/gen/var/dpdyFine/d0a648.wgsl b/test/tint/builtins/gen/var/dpdyFine/d0a648.wgsl
index ab2f873..31a1a94 100644
--- a/test/tint/builtins/gen/var/dpdyFine/d0a648.wgsl
+++ b/test/tint/builtins/gen/var/dpdyFine/d0a648.wgsl
@@ -29,7 +29,7 @@
   var res: vec4<f32> = dpdyFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyFine_d0a648();
 }
diff --git a/test/tint/builtins/gen/var/dpdyFine/d0a648.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdyFine/d0a648.wgsl.expected.wgsl
index 5a1f817..4e3ad88 100644
--- a/test/tint/builtins/gen/var/dpdyFine/d0a648.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdyFine/d0a648.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec4<f32> = dpdyFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyFine_d0a648();
 }
diff --git a/test/tint/builtins/gen/var/dpdyFine/df33aa.wgsl b/test/tint/builtins/gen/var/dpdyFine/df33aa.wgsl
index 819c688..8946eab 100644
--- a/test/tint/builtins/gen/var/dpdyFine/df33aa.wgsl
+++ b/test/tint/builtins/gen/var/dpdyFine/df33aa.wgsl
@@ -29,7 +29,7 @@
   var res: vec2<f32> = dpdyFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyFine_df33aa();
 }
diff --git a/test/tint/builtins/gen/var/dpdyFine/df33aa.wgsl.expected.wgsl b/test/tint/builtins/gen/var/dpdyFine/df33aa.wgsl.expected.wgsl
index 46d0d1b..557d473 100644
--- a/test/tint/builtins/gen/var/dpdyFine/df33aa.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/dpdyFine/df33aa.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec2<f32> = dpdyFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   dpdyFine_df33aa();
 }
diff --git a/test/tint/builtins/gen/var/exp/0f70eb.wgsl b/test/tint/builtins/gen/var/exp/0f70eb.wgsl
index dbcfeab..10c64bd 100644
--- a/test/tint/builtins/gen/var/exp/0f70eb.wgsl
+++ b/test/tint/builtins/gen/var/exp/0f70eb.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = exp(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_0f70eb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp_0f70eb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp_0f70eb();
 }
diff --git a/test/tint/builtins/gen/var/exp/0f70eb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/exp/0f70eb.wgsl.expected.wgsl
index 9c62eea..33a815c 100644
--- a/test/tint/builtins/gen/var/exp/0f70eb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/exp/0f70eb.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = exp(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_0f70eb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp_0f70eb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp_0f70eb();
 }
diff --git a/test/tint/builtins/gen/var/exp/1951e7.wgsl b/test/tint/builtins/gen/var/exp/1951e7.wgsl
index 9517b84..f916d7e 100644
--- a/test/tint/builtins/gen/var/exp/1951e7.wgsl
+++ b/test/tint/builtins/gen/var/exp/1951e7.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = exp(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_1951e7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp_1951e7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp_1951e7();
 }
diff --git a/test/tint/builtins/gen/var/exp/1951e7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/exp/1951e7.wgsl.expected.wgsl
index 22c08d9..ff1e940 100644
--- a/test/tint/builtins/gen/var/exp/1951e7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/exp/1951e7.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = exp(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_1951e7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp_1951e7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp_1951e7();
 }
diff --git a/test/tint/builtins/gen/var/exp/771fd2.wgsl b/test/tint/builtins/gen/var/exp/771fd2.wgsl
index 8ee0c82..5d7d206c 100644
--- a/test/tint/builtins/gen/var/exp/771fd2.wgsl
+++ b/test/tint/builtins/gen/var/exp/771fd2.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = exp(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_771fd2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp_771fd2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp_771fd2();
 }
diff --git a/test/tint/builtins/gen/var/exp/771fd2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/exp/771fd2.wgsl.expected.wgsl
index 892fa97..fd24d08 100644
--- a/test/tint/builtins/gen/var/exp/771fd2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/exp/771fd2.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = exp(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_771fd2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp_771fd2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp_771fd2();
 }
diff --git a/test/tint/builtins/gen/var/exp/d98450.wgsl b/test/tint/builtins/gen/var/exp/d98450.wgsl
index fae8a40..291d149 100644
--- a/test/tint/builtins/gen/var/exp/d98450.wgsl
+++ b/test/tint/builtins/gen/var/exp/d98450.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = exp(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_d98450();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp_d98450();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp_d98450();
 }
diff --git a/test/tint/builtins/gen/var/exp/d98450.wgsl.expected.wgsl b/test/tint/builtins/gen/var/exp/d98450.wgsl.expected.wgsl
index 9cb0d52..067d9e6 100644
--- a/test/tint/builtins/gen/var/exp/d98450.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/exp/d98450.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = exp(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp_d98450();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp_d98450();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp_d98450();
 }
diff --git a/test/tint/builtins/gen/var/exp2/1f8680.wgsl b/test/tint/builtins/gen/var/exp2/1f8680.wgsl
index 60cc0e7..336979f 100644
--- a/test/tint/builtins/gen/var/exp2/1f8680.wgsl
+++ b/test/tint/builtins/gen/var/exp2/1f8680.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = exp2(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_1f8680();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp2_1f8680();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp2_1f8680();
 }
diff --git a/test/tint/builtins/gen/var/exp2/1f8680.wgsl.expected.wgsl b/test/tint/builtins/gen/var/exp2/1f8680.wgsl.expected.wgsl
index 1311b3f..cb888ca 100644
--- a/test/tint/builtins/gen/var/exp2/1f8680.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/exp2/1f8680.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = exp2(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_1f8680();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp2_1f8680();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp2_1f8680();
 }
diff --git a/test/tint/builtins/gen/var/exp2/a9d0a7.wgsl b/test/tint/builtins/gen/var/exp2/a9d0a7.wgsl
index 918930b..2be13c8 100644
--- a/test/tint/builtins/gen/var/exp2/a9d0a7.wgsl
+++ b/test/tint/builtins/gen/var/exp2/a9d0a7.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = exp2(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_a9d0a7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp2_a9d0a7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp2_a9d0a7();
 }
diff --git a/test/tint/builtins/gen/var/exp2/a9d0a7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/exp2/a9d0a7.wgsl.expected.wgsl
index db5f690..61b61ce 100644
--- a/test/tint/builtins/gen/var/exp2/a9d0a7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/exp2/a9d0a7.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = exp2(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_a9d0a7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp2_a9d0a7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp2_a9d0a7();
 }
diff --git a/test/tint/builtins/gen/var/exp2/d6777c.wgsl b/test/tint/builtins/gen/var/exp2/d6777c.wgsl
index 6f77edc..4f64ee2 100644
--- a/test/tint/builtins/gen/var/exp2/d6777c.wgsl
+++ b/test/tint/builtins/gen/var/exp2/d6777c.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = exp2(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_d6777c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp2_d6777c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp2_d6777c();
 }
diff --git a/test/tint/builtins/gen/var/exp2/d6777c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/exp2/d6777c.wgsl.expected.wgsl
index e78ca2e..33a244f 100644
--- a/test/tint/builtins/gen/var/exp2/d6777c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/exp2/d6777c.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = exp2(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_d6777c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp2_d6777c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp2_d6777c();
 }
diff --git a/test/tint/builtins/gen/var/exp2/dea523.wgsl b/test/tint/builtins/gen/var/exp2/dea523.wgsl
index 434d0f6..ed1a4e6 100644
--- a/test/tint/builtins/gen/var/exp2/dea523.wgsl
+++ b/test/tint/builtins/gen/var/exp2/dea523.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = exp2(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_dea523();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp2_dea523();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp2_dea523();
 }
diff --git a/test/tint/builtins/gen/var/exp2/dea523.wgsl.expected.wgsl b/test/tint/builtins/gen/var/exp2/dea523.wgsl.expected.wgsl
index f47e367..eff3354 100644
--- a/test/tint/builtins/gen/var/exp2/dea523.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/exp2/dea523.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = exp2(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   exp2_dea523();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   exp2_dea523();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   exp2_dea523();
 }
diff --git a/test/tint/builtins/gen/var/extractBits/12b197.wgsl b/test/tint/builtins/gen/var/extractBits/12b197.wgsl
index 75d988b..e19468b 100644
--- a/test/tint/builtins/gen/var/extractBits/12b197.wgsl
+++ b/test/tint/builtins/gen/var/extractBits/12b197.wgsl
@@ -31,18 +31,18 @@
   var res: vec3<u32> = extractBits(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_12b197();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_12b197();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_12b197();
 }
diff --git a/test/tint/builtins/gen/var/extractBits/12b197.wgsl.expected.wgsl b/test/tint/builtins/gen/var/extractBits/12b197.wgsl.expected.wgsl
index 8aa910c..926eb6b 100644
--- a/test/tint/builtins/gen/var/extractBits/12b197.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/extractBits/12b197.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<u32> = extractBits(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_12b197();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_12b197();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_12b197();
 }
diff --git a/test/tint/builtins/gen/var/extractBits/249874.wgsl b/test/tint/builtins/gen/var/extractBits/249874.wgsl
index 58d0877..823529d 100644
--- a/test/tint/builtins/gen/var/extractBits/249874.wgsl
+++ b/test/tint/builtins/gen/var/extractBits/249874.wgsl
@@ -31,18 +31,18 @@
   var res: i32 = extractBits(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_249874();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_249874();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_249874();
 }
diff --git a/test/tint/builtins/gen/var/extractBits/249874.wgsl.expected.wgsl b/test/tint/builtins/gen/var/extractBits/249874.wgsl.expected.wgsl
index a7a2804..1291156 100644
--- a/test/tint/builtins/gen/var/extractBits/249874.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/extractBits/249874.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : i32 = extractBits(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_249874();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_249874();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_249874();
 }
diff --git a/test/tint/builtins/gen/var/extractBits/631377.wgsl b/test/tint/builtins/gen/var/extractBits/631377.wgsl
index 3785159..fa2c000 100644
--- a/test/tint/builtins/gen/var/extractBits/631377.wgsl
+++ b/test/tint/builtins/gen/var/extractBits/631377.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<u32> = extractBits(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_631377();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_631377();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_631377();
 }
diff --git a/test/tint/builtins/gen/var/extractBits/631377.wgsl.expected.wgsl b/test/tint/builtins/gen/var/extractBits/631377.wgsl.expected.wgsl
index 23e45d2..0ea85f9 100644
--- a/test/tint/builtins/gen/var/extractBits/631377.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/extractBits/631377.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<u32> = extractBits(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_631377();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_631377();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_631377();
 }
diff --git a/test/tint/builtins/gen/var/extractBits/a99a8d.wgsl b/test/tint/builtins/gen/var/extractBits/a99a8d.wgsl
index 0086a4b..c4d869c 100644
--- a/test/tint/builtins/gen/var/extractBits/a99a8d.wgsl
+++ b/test/tint/builtins/gen/var/extractBits/a99a8d.wgsl
@@ -31,18 +31,18 @@
   var res: vec2<i32> = extractBits(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_a99a8d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_a99a8d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_a99a8d();
 }
diff --git a/test/tint/builtins/gen/var/extractBits/a99a8d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/extractBits/a99a8d.wgsl.expected.wgsl
index de8bc4b..480f46a 100644
--- a/test/tint/builtins/gen/var/extractBits/a99a8d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/extractBits/a99a8d.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = extractBits(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_a99a8d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_a99a8d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_a99a8d();
 }
diff --git a/test/tint/builtins/gen/var/extractBits/ce81f8.wgsl b/test/tint/builtins/gen/var/extractBits/ce81f8.wgsl
index 1e1e5fe..0832b12 100644
--- a/test/tint/builtins/gen/var/extractBits/ce81f8.wgsl
+++ b/test/tint/builtins/gen/var/extractBits/ce81f8.wgsl
@@ -31,18 +31,18 @@
   var res: u32 = extractBits(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_ce81f8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_ce81f8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_ce81f8();
 }
diff --git a/test/tint/builtins/gen/var/extractBits/ce81f8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/extractBits/ce81f8.wgsl.expected.wgsl
index 0a4a29b..c99ed1a 100644
--- a/test/tint/builtins/gen/var/extractBits/ce81f8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/extractBits/ce81f8.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : u32 = extractBits(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_ce81f8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_ce81f8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_ce81f8();
 }
diff --git a/test/tint/builtins/gen/var/extractBits/e04f5d.wgsl b/test/tint/builtins/gen/var/extractBits/e04f5d.wgsl
index 940eb332..4bc5ff0 100644
--- a/test/tint/builtins/gen/var/extractBits/e04f5d.wgsl
+++ b/test/tint/builtins/gen/var/extractBits/e04f5d.wgsl
@@ -31,18 +31,18 @@
   var res: vec3<i32> = extractBits(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_e04f5d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_e04f5d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_e04f5d();
 }
diff --git a/test/tint/builtins/gen/var/extractBits/e04f5d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/extractBits/e04f5d.wgsl.expected.wgsl
index a866a10..7bad596 100644
--- a/test/tint/builtins/gen/var/extractBits/e04f5d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/extractBits/e04f5d.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<i32> = extractBits(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_e04f5d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_e04f5d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_e04f5d();
 }
diff --git a/test/tint/builtins/gen/var/extractBits/f28f69.wgsl b/test/tint/builtins/gen/var/extractBits/f28f69.wgsl
index 4c40da4..882b274 100644
--- a/test/tint/builtins/gen/var/extractBits/f28f69.wgsl
+++ b/test/tint/builtins/gen/var/extractBits/f28f69.wgsl
@@ -31,18 +31,18 @@
   var res: vec2<u32> = extractBits(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_f28f69();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_f28f69();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_f28f69();
 }
diff --git a/test/tint/builtins/gen/var/extractBits/f28f69.wgsl.expected.wgsl b/test/tint/builtins/gen/var/extractBits/f28f69.wgsl.expected.wgsl
index f70d9c7..69d9578 100644
--- a/test/tint/builtins/gen/var/extractBits/f28f69.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/extractBits/f28f69.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<u32> = extractBits(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_f28f69();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_f28f69();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_f28f69();
 }
diff --git a/test/tint/builtins/gen/var/extractBits/fb850f.wgsl b/test/tint/builtins/gen/var/extractBits/fb850f.wgsl
index f31e60e..bfb55a3 100644
--- a/test/tint/builtins/gen/var/extractBits/fb850f.wgsl
+++ b/test/tint/builtins/gen/var/extractBits/fb850f.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<i32> = extractBits(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_fb850f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_fb850f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_fb850f();
 }
diff --git a/test/tint/builtins/gen/var/extractBits/fb850f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/extractBits/fb850f.wgsl.expected.wgsl
index 1b0afd5..2df9fbd 100644
--- a/test/tint/builtins/gen/var/extractBits/fb850f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/extractBits/fb850f.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<i32> = extractBits(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   extractBits_fb850f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   extractBits_fb850f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   extractBits_fb850f();
 }
diff --git a/test/tint/builtins/gen/var/faceForward/5afbd5.wgsl b/test/tint/builtins/gen/var/faceForward/5afbd5.wgsl
index 25d1a73..8d29491 100644
--- a/test/tint/builtins/gen/var/faceForward/5afbd5.wgsl
+++ b/test/tint/builtins/gen/var/faceForward/5afbd5.wgsl
@@ -31,18 +31,18 @@
   var res: vec3<f32> = faceForward(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   faceForward_5afbd5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   faceForward_5afbd5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   faceForward_5afbd5();
 }
diff --git a/test/tint/builtins/gen/var/faceForward/5afbd5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/faceForward/5afbd5.wgsl.expected.wgsl
index 56bed23..8b5bbee 100644
--- a/test/tint/builtins/gen/var/faceForward/5afbd5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/faceForward/5afbd5.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<f32> = faceForward(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   faceForward_5afbd5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   faceForward_5afbd5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   faceForward_5afbd5();
 }
diff --git a/test/tint/builtins/gen/var/faceForward/b316e5.wgsl b/test/tint/builtins/gen/var/faceForward/b316e5.wgsl
index 4d4e57c..85d4fac 100644
--- a/test/tint/builtins/gen/var/faceForward/b316e5.wgsl
+++ b/test/tint/builtins/gen/var/faceForward/b316e5.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = faceForward(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   faceForward_b316e5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   faceForward_b316e5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   faceForward_b316e5();
 }
diff --git a/test/tint/builtins/gen/var/faceForward/b316e5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/faceForward/b316e5.wgsl.expected.wgsl
index 50154f3..c8a389f 100644
--- a/test/tint/builtins/gen/var/faceForward/b316e5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/faceForward/b316e5.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<f32> = faceForward(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   faceForward_b316e5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   faceForward_b316e5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   faceForward_b316e5();
 }
diff --git a/test/tint/builtins/gen/var/faceForward/e6908b.wgsl b/test/tint/builtins/gen/var/faceForward/e6908b.wgsl
index 5cb18c4..065fa6d8 100644
--- a/test/tint/builtins/gen/var/faceForward/e6908b.wgsl
+++ b/test/tint/builtins/gen/var/faceForward/e6908b.wgsl
@@ -31,18 +31,18 @@
   var res: vec2<f32> = faceForward(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   faceForward_e6908b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   faceForward_e6908b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   faceForward_e6908b();
 }
diff --git a/test/tint/builtins/gen/var/faceForward/e6908b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/faceForward/e6908b.wgsl.expected.wgsl
index 7e8df96..5dba944 100644
--- a/test/tint/builtins/gen/var/faceForward/e6908b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/faceForward/e6908b.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<f32> = faceForward(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   faceForward_e6908b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   faceForward_e6908b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   faceForward_e6908b();
 }
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/000ff3.wgsl b/test/tint/builtins/gen/var/firstLeadingBit/000ff3.wgsl
index 6ce9b05..650a35a 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/000ff3.wgsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/000ff3.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<u32> = firstLeadingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_000ff3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_000ff3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_000ff3();
 }
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/000ff3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/firstLeadingBit/000ff3.wgsl.expected.wgsl
index d0c3dfc..ce5a31b 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/000ff3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/000ff3.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<u32> = firstLeadingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_000ff3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_000ff3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_000ff3();
 }
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/35053e.wgsl b/test/tint/builtins/gen/var/firstLeadingBit/35053e.wgsl
index 9ff1c99..f2e1c45 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/35053e.wgsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/35053e.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = firstLeadingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_35053e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_35053e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_35053e();
 }
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/35053e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/firstLeadingBit/35053e.wgsl.expected.wgsl
index c191cc0..d3dec73 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/35053e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/35053e.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<i32> = firstLeadingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_35053e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_35053e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_35053e();
 }
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/3fd7d0.wgsl b/test/tint/builtins/gen/var/firstLeadingBit/3fd7d0.wgsl
index 15595a1..e586d8d 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/3fd7d0.wgsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/3fd7d0.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<u32> = firstLeadingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_3fd7d0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_3fd7d0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_3fd7d0();
 }
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/3fd7d0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/firstLeadingBit/3fd7d0.wgsl.expected.wgsl
index 3f079f9..d64dfc65 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/3fd7d0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/3fd7d0.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<u32> = firstLeadingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_3fd7d0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_3fd7d0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_3fd7d0();
 }
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/57a1a3.wgsl b/test/tint/builtins/gen/var/firstLeadingBit/57a1a3.wgsl
index c6e63f5..b0b1d96 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/57a1a3.wgsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/57a1a3.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = firstLeadingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_57a1a3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_57a1a3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_57a1a3();
 }
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/57a1a3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/firstLeadingBit/57a1a3.wgsl.expected.wgsl
index 00fe1f2..fa87265 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/57a1a3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/57a1a3.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : i32 = firstLeadingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_57a1a3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_57a1a3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_57a1a3();
 }
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/6fe804.wgsl b/test/tint/builtins/gen/var/firstLeadingBit/6fe804.wgsl
index 483f618..dcbb406 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/6fe804.wgsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/6fe804.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<u32> = firstLeadingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_6fe804();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_6fe804();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_6fe804();
 }
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/6fe804.wgsl.expected.wgsl b/test/tint/builtins/gen/var/firstLeadingBit/6fe804.wgsl.expected.wgsl
index 1d6c27b..84ab995 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/6fe804.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/6fe804.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<u32> = firstLeadingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_6fe804();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_6fe804();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_6fe804();
 }
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/a622c2.wgsl b/test/tint/builtins/gen/var/firstLeadingBit/a622c2.wgsl
index e482e72..115596e 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/a622c2.wgsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/a622c2.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = firstLeadingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_a622c2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_a622c2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_a622c2();
 }
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/a622c2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/firstLeadingBit/a622c2.wgsl.expected.wgsl
index 73c7797..e089f78 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/a622c2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/a622c2.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<i32> = firstLeadingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_a622c2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_a622c2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_a622c2();
 }
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/c1f940.wgsl b/test/tint/builtins/gen/var/firstLeadingBit/c1f940.wgsl
index be7d46c..2997ff4 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/c1f940.wgsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/c1f940.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<i32> = firstLeadingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_c1f940();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_c1f940();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_c1f940();
 }
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/c1f940.wgsl.expected.wgsl b/test/tint/builtins/gen/var/firstLeadingBit/c1f940.wgsl.expected.wgsl
index dd852d4..de02acf 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/c1f940.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/c1f940.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<i32> = firstLeadingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_c1f940();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_c1f940();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_c1f940();
 }
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/f0779d.wgsl b/test/tint/builtins/gen/var/firstLeadingBit/f0779d.wgsl
index 4ccf983..a4d6861 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/f0779d.wgsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/f0779d.wgsl
@@ -29,18 +29,18 @@
   var res: u32 = firstLeadingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_f0779d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_f0779d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_f0779d();
 }
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/f0779d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/firstLeadingBit/f0779d.wgsl.expected.wgsl
index 072135a..b47e829 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/f0779d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/f0779d.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : u32 = firstLeadingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstLeadingBit_f0779d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstLeadingBit_f0779d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstLeadingBit_f0779d();
 }
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/110f2c.wgsl b/test/tint/builtins/gen/var/firstTrailingBit/110f2c.wgsl
index a3cdb6f..fcc2127 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/110f2c.wgsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/110f2c.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<u32> = firstTrailingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_110f2c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_110f2c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_110f2c();
 }
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/110f2c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/firstTrailingBit/110f2c.wgsl.expected.wgsl
index 6edd9d2..e35d085 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/110f2c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/110f2c.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<u32> = firstTrailingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_110f2c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_110f2c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_110f2c();
 }
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/3a2acc.wgsl b/test/tint/builtins/gen/var/firstTrailingBit/3a2acc.wgsl
index ed95803..fd485e1 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/3a2acc.wgsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/3a2acc.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = firstTrailingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_3a2acc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_3a2acc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_3a2acc();
 }
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/3a2acc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/firstTrailingBit/3a2acc.wgsl.expected.wgsl
index 414f2ff..b3e2dfb 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/3a2acc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/3a2acc.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : i32 = firstTrailingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_3a2acc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_3a2acc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_3a2acc();
 }
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/45eb10.wgsl b/test/tint/builtins/gen/var/firstTrailingBit/45eb10.wgsl
index a76c9b5..1d39c64 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/45eb10.wgsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/45eb10.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<u32> = firstTrailingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_45eb10();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_45eb10();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_45eb10();
 }
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/45eb10.wgsl.expected.wgsl b/test/tint/builtins/gen/var/firstTrailingBit/45eb10.wgsl.expected.wgsl
index f462942..7585a47 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/45eb10.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/45eb10.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<u32> = firstTrailingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_45eb10();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_45eb10();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_45eb10();
 }
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/47d475.wgsl b/test/tint/builtins/gen/var/firstTrailingBit/47d475.wgsl
index 1bb0de9..f648309 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/47d475.wgsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/47d475.wgsl
@@ -29,18 +29,18 @@
   var res: u32 = firstTrailingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_47d475();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_47d475();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_47d475();
 }
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/47d475.wgsl.expected.wgsl b/test/tint/builtins/gen/var/firstTrailingBit/47d475.wgsl.expected.wgsl
index b93d114..4653891 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/47d475.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/47d475.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : u32 = firstTrailingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_47d475();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_47d475();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_47d475();
 }
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/50c072.wgsl b/test/tint/builtins/gen/var/firstTrailingBit/50c072.wgsl
index 41501df..6d7cd0e 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/50c072.wgsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/50c072.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = firstTrailingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_50c072();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_50c072();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_50c072();
 }
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/50c072.wgsl.expected.wgsl b/test/tint/builtins/gen/var/firstTrailingBit/50c072.wgsl.expected.wgsl
index e3f4f6e..8e35398 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/50c072.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/50c072.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<i32> = firstTrailingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_50c072();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_50c072();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_50c072();
 }
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/7496d6.wgsl b/test/tint/builtins/gen/var/firstTrailingBit/7496d6.wgsl
index b38a416..83185f3 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/7496d6.wgsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/7496d6.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = firstTrailingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_7496d6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_7496d6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_7496d6();
 }
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/7496d6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/firstTrailingBit/7496d6.wgsl.expected.wgsl
index bf926d8..97e2046 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/7496d6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/7496d6.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<i32> = firstTrailingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_7496d6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_7496d6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_7496d6();
 }
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/86551b.wgsl b/test/tint/builtins/gen/var/firstTrailingBit/86551b.wgsl
index 7d87a43..9bf0b28 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/86551b.wgsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/86551b.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<i32> = firstTrailingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_86551b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_86551b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_86551b();
 }
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/86551b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/firstTrailingBit/86551b.wgsl.expected.wgsl
index f12d022..dcbc82e 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/86551b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/86551b.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<i32> = firstTrailingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_86551b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_86551b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_86551b();
 }
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/cb51ce.wgsl b/test/tint/builtins/gen/var/firstTrailingBit/cb51ce.wgsl
index f32a9b8..a251b04 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/cb51ce.wgsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/cb51ce.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<u32> = firstTrailingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_cb51ce();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_cb51ce();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_cb51ce();
 }
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/cb51ce.wgsl.expected.wgsl b/test/tint/builtins/gen/var/firstTrailingBit/cb51ce.wgsl.expected.wgsl
index f167e27..908b5b8 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/cb51ce.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/cb51ce.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<u32> = firstTrailingBit(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   firstTrailingBit_cb51ce();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   firstTrailingBit_cb51ce();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   firstTrailingBit_cb51ce();
 }
diff --git a/test/tint/builtins/gen/var/floor/3bccc4.wgsl b/test/tint/builtins/gen/var/floor/3bccc4.wgsl
index 8ff9d8f..47be64f 100644
--- a/test/tint/builtins/gen/var/floor/3bccc4.wgsl
+++ b/test/tint/builtins/gen/var/floor/3bccc4.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = floor(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_3bccc4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   floor_3bccc4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   floor_3bccc4();
 }
diff --git a/test/tint/builtins/gen/var/floor/3bccc4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/floor/3bccc4.wgsl.expected.wgsl
index 119d8fe..a5c860d 100644
--- a/test/tint/builtins/gen/var/floor/3bccc4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/floor/3bccc4.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = floor(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_3bccc4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   floor_3bccc4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   floor_3bccc4();
 }
diff --git a/test/tint/builtins/gen/var/floor/5fc9ac.wgsl b/test/tint/builtins/gen/var/floor/5fc9ac.wgsl
index 0f70182..9670f23 100644
--- a/test/tint/builtins/gen/var/floor/5fc9ac.wgsl
+++ b/test/tint/builtins/gen/var/floor/5fc9ac.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = floor(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_5fc9ac();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   floor_5fc9ac();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   floor_5fc9ac();
 }
diff --git a/test/tint/builtins/gen/var/floor/5fc9ac.wgsl.expected.wgsl b/test/tint/builtins/gen/var/floor/5fc9ac.wgsl.expected.wgsl
index 6ebabfc..3d5dbb3 100644
--- a/test/tint/builtins/gen/var/floor/5fc9ac.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/floor/5fc9ac.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = floor(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_5fc9ac();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   floor_5fc9ac();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   floor_5fc9ac();
 }
diff --git a/test/tint/builtins/gen/var/floor/60d7ea.wgsl b/test/tint/builtins/gen/var/floor/60d7ea.wgsl
index fe6a56e..06603e5 100644
--- a/test/tint/builtins/gen/var/floor/60d7ea.wgsl
+++ b/test/tint/builtins/gen/var/floor/60d7ea.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = floor(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_60d7ea();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   floor_60d7ea();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   floor_60d7ea();
 }
diff --git a/test/tint/builtins/gen/var/floor/60d7ea.wgsl.expected.wgsl b/test/tint/builtins/gen/var/floor/60d7ea.wgsl.expected.wgsl
index efb4036..798ced8 100644
--- a/test/tint/builtins/gen/var/floor/60d7ea.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/floor/60d7ea.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = floor(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_60d7ea();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   floor_60d7ea();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   floor_60d7ea();
 }
diff --git a/test/tint/builtins/gen/var/floor/66f154.wgsl b/test/tint/builtins/gen/var/floor/66f154.wgsl
index 20f91b6..4ef7142 100644
--- a/test/tint/builtins/gen/var/floor/66f154.wgsl
+++ b/test/tint/builtins/gen/var/floor/66f154.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = floor(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_66f154();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   floor_66f154();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   floor_66f154();
 }
diff --git a/test/tint/builtins/gen/var/floor/66f154.wgsl.expected.wgsl b/test/tint/builtins/gen/var/floor/66f154.wgsl.expected.wgsl
index a368ec4..40b95be 100644
--- a/test/tint/builtins/gen/var/floor/66f154.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/floor/66f154.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = floor(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   floor_66f154();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   floor_66f154();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   floor_66f154();
 }
diff --git a/test/tint/builtins/gen/var/fma/26a7a9.wgsl b/test/tint/builtins/gen/var/fma/26a7a9.wgsl
index 77a07d6..6f74018 100644
--- a/test/tint/builtins/gen/var/fma/26a7a9.wgsl
+++ b/test/tint/builtins/gen/var/fma/26a7a9.wgsl
@@ -31,18 +31,18 @@
   var res: vec2<f32> = fma(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_26a7a9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fma_26a7a9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fma_26a7a9();
 }
diff --git a/test/tint/builtins/gen/var/fma/26a7a9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fma/26a7a9.wgsl.expected.wgsl
index ee68974..f1c4a77 100644
--- a/test/tint/builtins/gen/var/fma/26a7a9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fma/26a7a9.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<f32> = fma(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_26a7a9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fma_26a7a9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fma_26a7a9();
 }
diff --git a/test/tint/builtins/gen/var/fma/6a3283.wgsl b/test/tint/builtins/gen/var/fma/6a3283.wgsl
index 4cfaff2..87668f7 100644
--- a/test/tint/builtins/gen/var/fma/6a3283.wgsl
+++ b/test/tint/builtins/gen/var/fma/6a3283.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = fma(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_6a3283();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fma_6a3283();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fma_6a3283();
 }
diff --git a/test/tint/builtins/gen/var/fma/6a3283.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fma/6a3283.wgsl.expected.wgsl
index 4cf1dde..85c3990 100644
--- a/test/tint/builtins/gen/var/fma/6a3283.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fma/6a3283.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<f32> = fma(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_6a3283();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fma_6a3283();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fma_6a3283();
 }
diff --git a/test/tint/builtins/gen/var/fma/c10ba3.wgsl b/test/tint/builtins/gen/var/fma/c10ba3.wgsl
index 8f7bb65..383b243 100644
--- a/test/tint/builtins/gen/var/fma/c10ba3.wgsl
+++ b/test/tint/builtins/gen/var/fma/c10ba3.wgsl
@@ -31,18 +31,18 @@
   var res: f32 = fma(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_c10ba3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fma_c10ba3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fma_c10ba3();
 }
diff --git a/test/tint/builtins/gen/var/fma/c10ba3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fma/c10ba3.wgsl.expected.wgsl
index 4b4da43..43693c4 100644
--- a/test/tint/builtins/gen/var/fma/c10ba3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fma/c10ba3.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : f32 = fma(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_c10ba3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fma_c10ba3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fma_c10ba3();
 }
diff --git a/test/tint/builtins/gen/var/fma/e17c5c.wgsl b/test/tint/builtins/gen/var/fma/e17c5c.wgsl
index d2b71c4..40128a4 100644
--- a/test/tint/builtins/gen/var/fma/e17c5c.wgsl
+++ b/test/tint/builtins/gen/var/fma/e17c5c.wgsl
@@ -31,18 +31,18 @@
   var res: vec3<f32> = fma(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_e17c5c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fma_e17c5c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fma_e17c5c();
 }
diff --git a/test/tint/builtins/gen/var/fma/e17c5c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fma/e17c5c.wgsl.expected.wgsl
index e47a18e..ce1be54 100644
--- a/test/tint/builtins/gen/var/fma/e17c5c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fma/e17c5c.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<f32> = fma(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fma_e17c5c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fma_e17c5c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fma_e17c5c();
 }
diff --git a/test/tint/builtins/gen/var/fract/8bc1e9.wgsl b/test/tint/builtins/gen/var/fract/8bc1e9.wgsl
index eb6d1de..afbd094 100644
--- a/test/tint/builtins/gen/var/fract/8bc1e9.wgsl
+++ b/test/tint/builtins/gen/var/fract/8bc1e9.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = fract(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_8bc1e9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fract_8bc1e9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fract_8bc1e9();
 }
diff --git a/test/tint/builtins/gen/var/fract/8bc1e9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fract/8bc1e9.wgsl.expected.wgsl
index 9447b8d..6143b13 100644
--- a/test/tint/builtins/gen/var/fract/8bc1e9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fract/8bc1e9.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = fract(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_8bc1e9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fract_8bc1e9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fract_8bc1e9();
 }
diff --git a/test/tint/builtins/gen/var/fract/943cb1.wgsl b/test/tint/builtins/gen/var/fract/943cb1.wgsl
index f82334e..3773846 100644
--- a/test/tint/builtins/gen/var/fract/943cb1.wgsl
+++ b/test/tint/builtins/gen/var/fract/943cb1.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = fract(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_943cb1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fract_943cb1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fract_943cb1();
 }
diff --git a/test/tint/builtins/gen/var/fract/943cb1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fract/943cb1.wgsl.expected.wgsl
index 089b08d..60d5d65 100644
--- a/test/tint/builtins/gen/var/fract/943cb1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fract/943cb1.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = fract(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_943cb1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fract_943cb1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fract_943cb1();
 }
diff --git a/test/tint/builtins/gen/var/fract/a49758.wgsl b/test/tint/builtins/gen/var/fract/a49758.wgsl
index 51ebe9b..2312f38 100644
--- a/test/tint/builtins/gen/var/fract/a49758.wgsl
+++ b/test/tint/builtins/gen/var/fract/a49758.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = fract(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_a49758();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fract_a49758();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fract_a49758();
 }
diff --git a/test/tint/builtins/gen/var/fract/a49758.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fract/a49758.wgsl.expected.wgsl
index 0aef8a8..a173b02 100644
--- a/test/tint/builtins/gen/var/fract/a49758.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fract/a49758.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = fract(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_a49758();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fract_a49758();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fract_a49758();
 }
diff --git a/test/tint/builtins/gen/var/fract/fa5c71.wgsl b/test/tint/builtins/gen/var/fract/fa5c71.wgsl
index 22bff95..90beba6 100644
--- a/test/tint/builtins/gen/var/fract/fa5c71.wgsl
+++ b/test/tint/builtins/gen/var/fract/fa5c71.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = fract(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_fa5c71();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fract_fa5c71();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fract_fa5c71();
 }
diff --git a/test/tint/builtins/gen/var/fract/fa5c71.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fract/fa5c71.wgsl.expected.wgsl
index b41cb8b..7b98594 100644
--- a/test/tint/builtins/gen/var/fract/fa5c71.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fract/fa5c71.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = fract(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   fract_fa5c71();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fract_fa5c71();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   fract_fa5c71();
 }
diff --git a/test/tint/builtins/gen/var/frexp/368997.wgsl b/test/tint/builtins/gen/var/frexp/368997.wgsl
index b71eb10..7f26bb3 100644
--- a/test/tint/builtins/gen/var/frexp/368997.wgsl
+++ b/test/tint/builtins/gen/var/frexp/368997.wgsl
@@ -29,18 +29,18 @@
   var res = frexp(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_368997();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   frexp_368997();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   frexp_368997();
 }
diff --git a/test/tint/builtins/gen/var/frexp/368997.wgsl.expected.wgsl b/test/tint/builtins/gen/var/frexp/368997.wgsl.expected.wgsl
index 41b485e..f8f40dc 100644
--- a/test/tint/builtins/gen/var/frexp/368997.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/frexp/368997.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res = frexp(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_368997();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   frexp_368997();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   frexp_368997();
 }
diff --git a/test/tint/builtins/gen/var/frexp/3c4f48.wgsl b/test/tint/builtins/gen/var/frexp/3c4f48.wgsl
index 8dc6373..e1f79e2 100644
--- a/test/tint/builtins/gen/var/frexp/3c4f48.wgsl
+++ b/test/tint/builtins/gen/var/frexp/3c4f48.wgsl
@@ -29,18 +29,18 @@
   var res = frexp(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_3c4f48();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   frexp_3c4f48();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   frexp_3c4f48();
 }
diff --git a/test/tint/builtins/gen/var/frexp/3c4f48.wgsl.expected.wgsl b/test/tint/builtins/gen/var/frexp/3c4f48.wgsl.expected.wgsl
index 3123659..d0cd5f9 100644
--- a/test/tint/builtins/gen/var/frexp/3c4f48.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/frexp/3c4f48.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res = frexp(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_3c4f48();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   frexp_3c4f48();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   frexp_3c4f48();
 }
diff --git a/test/tint/builtins/gen/var/frexp/4bdfc7.wgsl b/test/tint/builtins/gen/var/frexp/4bdfc7.wgsl
index 8ea6107..af86233 100644
--- a/test/tint/builtins/gen/var/frexp/4bdfc7.wgsl
+++ b/test/tint/builtins/gen/var/frexp/4bdfc7.wgsl
@@ -29,18 +29,18 @@
   var res = frexp(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_4bdfc7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   frexp_4bdfc7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   frexp_4bdfc7();
 }
diff --git a/test/tint/builtins/gen/var/frexp/4bdfc7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/frexp/4bdfc7.wgsl.expected.wgsl
index 757df25b..07cd661 100644
--- a/test/tint/builtins/gen/var/frexp/4bdfc7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/frexp/4bdfc7.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res = frexp(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_4bdfc7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   frexp_4bdfc7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   frexp_4bdfc7();
 }
diff --git a/test/tint/builtins/gen/var/frexp/eabd40.wgsl b/test/tint/builtins/gen/var/frexp/eabd40.wgsl
index a3b1aa4..b8463dc 100644
--- a/test/tint/builtins/gen/var/frexp/eabd40.wgsl
+++ b/test/tint/builtins/gen/var/frexp/eabd40.wgsl
@@ -29,18 +29,18 @@
   var res = frexp(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_eabd40();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   frexp_eabd40();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   frexp_eabd40();
 }
diff --git a/test/tint/builtins/gen/var/frexp/eabd40.wgsl.expected.wgsl b/test/tint/builtins/gen/var/frexp/eabd40.wgsl.expected.wgsl
index 746e9bb..f21c0f6 100644
--- a/test/tint/builtins/gen/var/frexp/eabd40.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/frexp/eabd40.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res = frexp(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   frexp_eabd40();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   frexp_eabd40();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   frexp_eabd40();
 }
diff --git a/test/tint/builtins/gen/var/fwidth/5d1b39.wgsl b/test/tint/builtins/gen/var/fwidth/5d1b39.wgsl
index 8446a7d..7cd2722 100644
--- a/test/tint/builtins/gen/var/fwidth/5d1b39.wgsl
+++ b/test/tint/builtins/gen/var/fwidth/5d1b39.wgsl
@@ -29,7 +29,7 @@
   var res: vec3<f32> = fwidth(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidth_5d1b39();
 }
diff --git a/test/tint/builtins/gen/var/fwidth/5d1b39.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fwidth/5d1b39.wgsl.expected.wgsl
index eed9270..52743fc 100644
--- a/test/tint/builtins/gen/var/fwidth/5d1b39.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fwidth/5d1b39.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec3<f32> = fwidth(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidth_5d1b39();
 }
diff --git a/test/tint/builtins/gen/var/fwidth/b83ebb.wgsl b/test/tint/builtins/gen/var/fwidth/b83ebb.wgsl
index abd769d..3f82513 100644
--- a/test/tint/builtins/gen/var/fwidth/b83ebb.wgsl
+++ b/test/tint/builtins/gen/var/fwidth/b83ebb.wgsl
@@ -29,7 +29,7 @@
   var res: vec2<f32> = fwidth(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidth_b83ebb();
 }
diff --git a/test/tint/builtins/gen/var/fwidth/b83ebb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fwidth/b83ebb.wgsl.expected.wgsl
index 091f627..307420a 100644
--- a/test/tint/builtins/gen/var/fwidth/b83ebb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fwidth/b83ebb.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec2<f32> = fwidth(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidth_b83ebb();
 }
diff --git a/test/tint/builtins/gen/var/fwidth/d2ab9a.wgsl b/test/tint/builtins/gen/var/fwidth/d2ab9a.wgsl
index 0f90763..27a4d2d 100644
--- a/test/tint/builtins/gen/var/fwidth/d2ab9a.wgsl
+++ b/test/tint/builtins/gen/var/fwidth/d2ab9a.wgsl
@@ -29,7 +29,7 @@
   var res: vec4<f32> = fwidth(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidth_d2ab9a();
 }
diff --git a/test/tint/builtins/gen/var/fwidth/d2ab9a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fwidth/d2ab9a.wgsl.expected.wgsl
index 25547c0..82fda09 100644
--- a/test/tint/builtins/gen/var/fwidth/d2ab9a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fwidth/d2ab9a.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec4<f32> = fwidth(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidth_d2ab9a();
 }
diff --git a/test/tint/builtins/gen/var/fwidth/df38ef.wgsl b/test/tint/builtins/gen/var/fwidth/df38ef.wgsl
index f1c3ab8..b9a38cf 100644
--- a/test/tint/builtins/gen/var/fwidth/df38ef.wgsl
+++ b/test/tint/builtins/gen/var/fwidth/df38ef.wgsl
@@ -29,7 +29,7 @@
   var res: f32 = fwidth(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidth_df38ef();
 }
diff --git a/test/tint/builtins/gen/var/fwidth/df38ef.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fwidth/df38ef.wgsl.expected.wgsl
index 616fc52..e13a01e 100644
--- a/test/tint/builtins/gen/var/fwidth/df38ef.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fwidth/df38ef.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : f32 = fwidth(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidth_df38ef();
 }
diff --git a/test/tint/builtins/gen/var/fwidthCoarse/159c8a.wgsl b/test/tint/builtins/gen/var/fwidthCoarse/159c8a.wgsl
index 408d3eb..f549f76 100644
--- a/test/tint/builtins/gen/var/fwidthCoarse/159c8a.wgsl
+++ b/test/tint/builtins/gen/var/fwidthCoarse/159c8a.wgsl
@@ -29,7 +29,7 @@
   var res: f32 = fwidthCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthCoarse_159c8a();
 }
diff --git a/test/tint/builtins/gen/var/fwidthCoarse/159c8a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fwidthCoarse/159c8a.wgsl.expected.wgsl
index a5bb1db..1cea210 100644
--- a/test/tint/builtins/gen/var/fwidthCoarse/159c8a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fwidthCoarse/159c8a.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : f32 = fwidthCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthCoarse_159c8a();
 }
diff --git a/test/tint/builtins/gen/var/fwidthCoarse/1e59d9.wgsl b/test/tint/builtins/gen/var/fwidthCoarse/1e59d9.wgsl
index 6561279..1e2c902 100644
--- a/test/tint/builtins/gen/var/fwidthCoarse/1e59d9.wgsl
+++ b/test/tint/builtins/gen/var/fwidthCoarse/1e59d9.wgsl
@@ -29,7 +29,7 @@
   var res: vec3<f32> = fwidthCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthCoarse_1e59d9();
 }
diff --git a/test/tint/builtins/gen/var/fwidthCoarse/1e59d9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fwidthCoarse/1e59d9.wgsl.expected.wgsl
index 2bc3f68..c218f89 100644
--- a/test/tint/builtins/gen/var/fwidthCoarse/1e59d9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fwidthCoarse/1e59d9.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec3<f32> = fwidthCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthCoarse_1e59d9();
 }
diff --git a/test/tint/builtins/gen/var/fwidthCoarse/4e4fc4.wgsl b/test/tint/builtins/gen/var/fwidthCoarse/4e4fc4.wgsl
index ce9b1a5..84b6d02 100644
--- a/test/tint/builtins/gen/var/fwidthCoarse/4e4fc4.wgsl
+++ b/test/tint/builtins/gen/var/fwidthCoarse/4e4fc4.wgsl
@@ -29,7 +29,7 @@
   var res: vec4<f32> = fwidthCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthCoarse_4e4fc4();
 }
diff --git a/test/tint/builtins/gen/var/fwidthCoarse/4e4fc4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fwidthCoarse/4e4fc4.wgsl.expected.wgsl
index 2ea994e..ba992a4 100644
--- a/test/tint/builtins/gen/var/fwidthCoarse/4e4fc4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fwidthCoarse/4e4fc4.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec4<f32> = fwidthCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthCoarse_4e4fc4();
 }
diff --git a/test/tint/builtins/gen/var/fwidthCoarse/e653f7.wgsl b/test/tint/builtins/gen/var/fwidthCoarse/e653f7.wgsl
index 2b51955..a98230c 100644
--- a/test/tint/builtins/gen/var/fwidthCoarse/e653f7.wgsl
+++ b/test/tint/builtins/gen/var/fwidthCoarse/e653f7.wgsl
@@ -29,7 +29,7 @@
   var res: vec2<f32> = fwidthCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthCoarse_e653f7();
 }
diff --git a/test/tint/builtins/gen/var/fwidthCoarse/e653f7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fwidthCoarse/e653f7.wgsl.expected.wgsl
index a628383..df4db7b 100644
--- a/test/tint/builtins/gen/var/fwidthCoarse/e653f7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fwidthCoarse/e653f7.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec2<f32> = fwidthCoarse(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthCoarse_e653f7();
 }
diff --git a/test/tint/builtins/gen/var/fwidthFine/523fdc.wgsl b/test/tint/builtins/gen/var/fwidthFine/523fdc.wgsl
index 156d47f..0f60071 100644
--- a/test/tint/builtins/gen/var/fwidthFine/523fdc.wgsl
+++ b/test/tint/builtins/gen/var/fwidthFine/523fdc.wgsl
@@ -29,7 +29,7 @@
   var res: vec3<f32> = fwidthFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthFine_523fdc();
 }
diff --git a/test/tint/builtins/gen/var/fwidthFine/523fdc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fwidthFine/523fdc.wgsl.expected.wgsl
index 31f63e1..4424030 100644
--- a/test/tint/builtins/gen/var/fwidthFine/523fdc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fwidthFine/523fdc.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec3<f32> = fwidthFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthFine_523fdc();
 }
diff --git a/test/tint/builtins/gen/var/fwidthFine/68f4ef.wgsl b/test/tint/builtins/gen/var/fwidthFine/68f4ef.wgsl
index e9044b2..dc8020e 100644
--- a/test/tint/builtins/gen/var/fwidthFine/68f4ef.wgsl
+++ b/test/tint/builtins/gen/var/fwidthFine/68f4ef.wgsl
@@ -29,7 +29,7 @@
   var res: vec4<f32> = fwidthFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthFine_68f4ef();
 }
diff --git a/test/tint/builtins/gen/var/fwidthFine/68f4ef.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fwidthFine/68f4ef.wgsl.expected.wgsl
index 226acfb..9061e30 100644
--- a/test/tint/builtins/gen/var/fwidthFine/68f4ef.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fwidthFine/68f4ef.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec4<f32> = fwidthFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthFine_68f4ef();
 }
diff --git a/test/tint/builtins/gen/var/fwidthFine/f1742d.wgsl b/test/tint/builtins/gen/var/fwidthFine/f1742d.wgsl
index c614dbe..53641a6 100644
--- a/test/tint/builtins/gen/var/fwidthFine/f1742d.wgsl
+++ b/test/tint/builtins/gen/var/fwidthFine/f1742d.wgsl
@@ -29,7 +29,7 @@
   var res: f32 = fwidthFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthFine_f1742d();
 }
diff --git a/test/tint/builtins/gen/var/fwidthFine/f1742d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fwidthFine/f1742d.wgsl.expected.wgsl
index 0f475d4..e6f9daa 100644
--- a/test/tint/builtins/gen/var/fwidthFine/f1742d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fwidthFine/f1742d.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : f32 = fwidthFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthFine_f1742d();
 }
diff --git a/test/tint/builtins/gen/var/fwidthFine/ff6aa0.wgsl b/test/tint/builtins/gen/var/fwidthFine/ff6aa0.wgsl
index e5166ed..910332a 100644
--- a/test/tint/builtins/gen/var/fwidthFine/ff6aa0.wgsl
+++ b/test/tint/builtins/gen/var/fwidthFine/ff6aa0.wgsl
@@ -29,7 +29,7 @@
   var res: vec2<f32> = fwidthFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthFine_ff6aa0();
 }
diff --git a/test/tint/builtins/gen/var/fwidthFine/ff6aa0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/fwidthFine/ff6aa0.wgsl.expected.wgsl
index db8da89..51f08e1 100644
--- a/test/tint/builtins/gen/var/fwidthFine/ff6aa0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/fwidthFine/ff6aa0.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var res : vec2<f32> = fwidthFine(arg_0);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fwidthFine_ff6aa0();
 }
diff --git a/test/tint/builtins/gen/var/insertBits/3c7ba5.wgsl b/test/tint/builtins/gen/var/insertBits/3c7ba5.wgsl
index d6ce9d9..1c765ea 100644
--- a/test/tint/builtins/gen/var/insertBits/3c7ba5.wgsl
+++ b/test/tint/builtins/gen/var/insertBits/3c7ba5.wgsl
@@ -32,18 +32,18 @@
   var res: vec2<u32> = insertBits(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_3c7ba5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_3c7ba5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_3c7ba5();
 }
diff --git a/test/tint/builtins/gen/var/insertBits/3c7ba5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/insertBits/3c7ba5.wgsl.expected.wgsl
index d8fb021..31cfb26 100644
--- a/test/tint/builtins/gen/var/insertBits/3c7ba5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/insertBits/3c7ba5.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec2<u32> = insertBits(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_3c7ba5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_3c7ba5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_3c7ba5();
 }
diff --git a/test/tint/builtins/gen/var/insertBits/428b0b.wgsl b/test/tint/builtins/gen/var/insertBits/428b0b.wgsl
index 4e97da1..8eae288 100644
--- a/test/tint/builtins/gen/var/insertBits/428b0b.wgsl
+++ b/test/tint/builtins/gen/var/insertBits/428b0b.wgsl
@@ -32,18 +32,18 @@
   var res: vec3<i32> = insertBits(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_428b0b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_428b0b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_428b0b();
 }
diff --git a/test/tint/builtins/gen/var/insertBits/428b0b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/insertBits/428b0b.wgsl.expected.wgsl
index 2dbf357..bea28a0 100644
--- a/test/tint/builtins/gen/var/insertBits/428b0b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/insertBits/428b0b.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec3<i32> = insertBits(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_428b0b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_428b0b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_428b0b();
 }
diff --git a/test/tint/builtins/gen/var/insertBits/51ede1.wgsl b/test/tint/builtins/gen/var/insertBits/51ede1.wgsl
index 0d1a93d..05d9e82 100644
--- a/test/tint/builtins/gen/var/insertBits/51ede1.wgsl
+++ b/test/tint/builtins/gen/var/insertBits/51ede1.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<u32> = insertBits(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_51ede1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_51ede1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_51ede1();
 }
diff --git a/test/tint/builtins/gen/var/insertBits/51ede1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/insertBits/51ede1.wgsl.expected.wgsl
index 169d426..0293f8f 100644
--- a/test/tint/builtins/gen/var/insertBits/51ede1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/insertBits/51ede1.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<u32> = insertBits(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_51ede1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_51ede1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_51ede1();
 }
diff --git a/test/tint/builtins/gen/var/insertBits/65468b.wgsl b/test/tint/builtins/gen/var/insertBits/65468b.wgsl
index 1d9618f..0989f81 100644
--- a/test/tint/builtins/gen/var/insertBits/65468b.wgsl
+++ b/test/tint/builtins/gen/var/insertBits/65468b.wgsl
@@ -32,18 +32,18 @@
   var res: i32 = insertBits(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_65468b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_65468b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_65468b();
 }
diff --git a/test/tint/builtins/gen/var/insertBits/65468b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/insertBits/65468b.wgsl.expected.wgsl
index cee6ffe..c138857 100644
--- a/test/tint/builtins/gen/var/insertBits/65468b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/insertBits/65468b.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : i32 = insertBits(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_65468b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_65468b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_65468b();
 }
diff --git a/test/tint/builtins/gen/var/insertBits/87826b.wgsl b/test/tint/builtins/gen/var/insertBits/87826b.wgsl
index 6f1fca8..42d41aa 100644
--- a/test/tint/builtins/gen/var/insertBits/87826b.wgsl
+++ b/test/tint/builtins/gen/var/insertBits/87826b.wgsl
@@ -32,18 +32,18 @@
   var res: vec3<u32> = insertBits(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_87826b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_87826b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_87826b();
 }
diff --git a/test/tint/builtins/gen/var/insertBits/87826b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/insertBits/87826b.wgsl.expected.wgsl
index 48253d4..48d6d38 100644
--- a/test/tint/builtins/gen/var/insertBits/87826b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/insertBits/87826b.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec3<u32> = insertBits(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_87826b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_87826b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_87826b();
 }
diff --git a/test/tint/builtins/gen/var/insertBits/d86978.wgsl b/test/tint/builtins/gen/var/insertBits/d86978.wgsl
index db30069..73da46a 100644
--- a/test/tint/builtins/gen/var/insertBits/d86978.wgsl
+++ b/test/tint/builtins/gen/var/insertBits/d86978.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<i32> = insertBits(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_d86978();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_d86978();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_d86978();
 }
diff --git a/test/tint/builtins/gen/var/insertBits/d86978.wgsl.expected.wgsl b/test/tint/builtins/gen/var/insertBits/d86978.wgsl.expected.wgsl
index 0678533..94ec9b8 100644
--- a/test/tint/builtins/gen/var/insertBits/d86978.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/insertBits/d86978.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<i32> = insertBits(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_d86978();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_d86978();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_d86978();
 }
diff --git a/test/tint/builtins/gen/var/insertBits/e3e3a2.wgsl b/test/tint/builtins/gen/var/insertBits/e3e3a2.wgsl
index 82178dc..d2624f2 100644
--- a/test/tint/builtins/gen/var/insertBits/e3e3a2.wgsl
+++ b/test/tint/builtins/gen/var/insertBits/e3e3a2.wgsl
@@ -32,18 +32,18 @@
   var res: u32 = insertBits(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_e3e3a2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_e3e3a2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_e3e3a2();
 }
diff --git a/test/tint/builtins/gen/var/insertBits/e3e3a2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/insertBits/e3e3a2.wgsl.expected.wgsl
index a11ca1e..4541379 100644
--- a/test/tint/builtins/gen/var/insertBits/e3e3a2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/insertBits/e3e3a2.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : u32 = insertBits(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_e3e3a2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_e3e3a2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_e3e3a2();
 }
diff --git a/test/tint/builtins/gen/var/insertBits/fe6ba6.wgsl b/test/tint/builtins/gen/var/insertBits/fe6ba6.wgsl
index 1d1b8b1..9935070 100644
--- a/test/tint/builtins/gen/var/insertBits/fe6ba6.wgsl
+++ b/test/tint/builtins/gen/var/insertBits/fe6ba6.wgsl
@@ -32,18 +32,18 @@
   var res: vec2<i32> = insertBits(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_fe6ba6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_fe6ba6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_fe6ba6();
 }
diff --git a/test/tint/builtins/gen/var/insertBits/fe6ba6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/insertBits/fe6ba6.wgsl.expected.wgsl
index 13f8c15..9cdbb2e 100644
--- a/test/tint/builtins/gen/var/insertBits/fe6ba6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/insertBits/fe6ba6.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec2<i32> = insertBits(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   insertBits_fe6ba6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   insertBits_fe6ba6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   insertBits_fe6ba6();
 }
diff --git a/test/tint/builtins/gen/var/inverseSqrt/84407e.wgsl b/test/tint/builtins/gen/var/inverseSqrt/84407e.wgsl
index a5dabf6..9a4210f 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/84407e.wgsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/84407e.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = inverseSqrt(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_84407e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   inverseSqrt_84407e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_84407e();
 }
diff --git a/test/tint/builtins/gen/var/inverseSqrt/84407e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/inverseSqrt/84407e.wgsl.expected.wgsl
index f86db02..1ceb9d7 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/84407e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/84407e.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = inverseSqrt(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_84407e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   inverseSqrt_84407e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_84407e();
 }
diff --git a/test/tint/builtins/gen/var/inverseSqrt/8f2bd2.wgsl b/test/tint/builtins/gen/var/inverseSqrt/8f2bd2.wgsl
index 2f093e92d..75a8336 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/8f2bd2.wgsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/8f2bd2.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = inverseSqrt(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_8f2bd2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   inverseSqrt_8f2bd2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_8f2bd2();
 }
diff --git a/test/tint/builtins/gen/var/inverseSqrt/8f2bd2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/inverseSqrt/8f2bd2.wgsl.expected.wgsl
index 74b8db5..0f364d3 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/8f2bd2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/8f2bd2.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = inverseSqrt(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_8f2bd2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   inverseSqrt_8f2bd2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_8f2bd2();
 }
diff --git a/test/tint/builtins/gen/var/inverseSqrt/b197b1.wgsl b/test/tint/builtins/gen/var/inverseSqrt/b197b1.wgsl
index c4b0947..191c6ff 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/b197b1.wgsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/b197b1.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = inverseSqrt(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_b197b1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   inverseSqrt_b197b1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_b197b1();
 }
diff --git a/test/tint/builtins/gen/var/inverseSqrt/b197b1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/inverseSqrt/b197b1.wgsl.expected.wgsl
index 092b101..3dc7542 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/b197b1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/b197b1.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = inverseSqrt(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_b197b1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   inverseSqrt_b197b1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_b197b1();
 }
diff --git a/test/tint/builtins/gen/var/inverseSqrt/c22347.wgsl b/test/tint/builtins/gen/var/inverseSqrt/c22347.wgsl
index 9fa254c..30b6828 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/c22347.wgsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/c22347.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = inverseSqrt(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_c22347();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   inverseSqrt_c22347();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_c22347();
 }
diff --git a/test/tint/builtins/gen/var/inverseSqrt/c22347.wgsl.expected.wgsl b/test/tint/builtins/gen/var/inverseSqrt/c22347.wgsl.expected.wgsl
index fb2b23a..5a025bc 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/c22347.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/c22347.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = inverseSqrt(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   inverseSqrt_c22347();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   inverseSqrt_c22347();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   inverseSqrt_c22347();
 }
diff --git a/test/tint/builtins/gen/var/ldexp/a31cdc.wgsl b/test/tint/builtins/gen/var/ldexp/a31cdc.wgsl
index 0b2123a..e5ba76a 100644
--- a/test/tint/builtins/gen/var/ldexp/a31cdc.wgsl
+++ b/test/tint/builtins/gen/var/ldexp/a31cdc.wgsl
@@ -30,18 +30,18 @@
   var res: vec3<f32> = ldexp(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_a31cdc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ldexp_a31cdc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ldexp_a31cdc();
 }
diff --git a/test/tint/builtins/gen/var/ldexp/a31cdc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/ldexp/a31cdc.wgsl.expected.wgsl
index ff1f93b..e6303b2 100644
--- a/test/tint/builtins/gen/var/ldexp/a31cdc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/ldexp/a31cdc.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<f32> = ldexp(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_a31cdc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ldexp_a31cdc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ldexp_a31cdc();
 }
diff --git a/test/tint/builtins/gen/var/ldexp/abd718.wgsl b/test/tint/builtins/gen/var/ldexp/abd718.wgsl
index fa363d3..a966f03 100644
--- a/test/tint/builtins/gen/var/ldexp/abd718.wgsl
+++ b/test/tint/builtins/gen/var/ldexp/abd718.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<f32> = ldexp(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_abd718();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ldexp_abd718();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ldexp_abd718();
 }
diff --git a/test/tint/builtins/gen/var/ldexp/abd718.wgsl.expected.wgsl b/test/tint/builtins/gen/var/ldexp/abd718.wgsl.expected.wgsl
index 436192c..c42b1e9 100644
--- a/test/tint/builtins/gen/var/ldexp/abd718.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/ldexp/abd718.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<f32> = ldexp(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_abd718();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ldexp_abd718();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ldexp_abd718();
 }
diff --git a/test/tint/builtins/gen/var/ldexp/cc9cde.wgsl b/test/tint/builtins/gen/var/ldexp/cc9cde.wgsl
index 2f89342..9ab6203 100644
--- a/test/tint/builtins/gen/var/ldexp/cc9cde.wgsl
+++ b/test/tint/builtins/gen/var/ldexp/cc9cde.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = ldexp(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_cc9cde();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ldexp_cc9cde();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ldexp_cc9cde();
 }
diff --git a/test/tint/builtins/gen/var/ldexp/cc9cde.wgsl.expected.wgsl b/test/tint/builtins/gen/var/ldexp/cc9cde.wgsl.expected.wgsl
index f24c970..29249e6 100644
--- a/test/tint/builtins/gen/var/ldexp/cc9cde.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/ldexp/cc9cde.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<f32> = ldexp(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_cc9cde();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ldexp_cc9cde();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ldexp_cc9cde();
 }
diff --git a/test/tint/builtins/gen/var/ldexp/db8b49.wgsl b/test/tint/builtins/gen/var/ldexp/db8b49.wgsl
index 140cef6..96ff02f 100644
--- a/test/tint/builtins/gen/var/ldexp/db8b49.wgsl
+++ b/test/tint/builtins/gen/var/ldexp/db8b49.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = ldexp(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_db8b49();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ldexp_db8b49();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ldexp_db8b49();
 }
diff --git a/test/tint/builtins/gen/var/ldexp/db8b49.wgsl.expected.wgsl b/test/tint/builtins/gen/var/ldexp/db8b49.wgsl.expected.wgsl
index 764a162..79e7515 100644
--- a/test/tint/builtins/gen/var/ldexp/db8b49.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/ldexp/db8b49.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : f32 = ldexp(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   ldexp_db8b49();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   ldexp_db8b49();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   ldexp_db8b49();
 }
diff --git a/test/tint/builtins/gen/var/length/056071.wgsl b/test/tint/builtins/gen/var/length/056071.wgsl
index 683f511..b89744f 100644
--- a/test/tint/builtins/gen/var/length/056071.wgsl
+++ b/test/tint/builtins/gen/var/length/056071.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = length(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   length_056071();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   length_056071();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   length_056071();
 }
diff --git a/test/tint/builtins/gen/var/length/056071.wgsl.expected.wgsl b/test/tint/builtins/gen/var/length/056071.wgsl.expected.wgsl
index 162ff85..436d3d7 100644
--- a/test/tint/builtins/gen/var/length/056071.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/length/056071.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = length(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   length_056071();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   length_056071();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   length_056071();
 }
diff --git a/test/tint/builtins/gen/var/length/602a17.wgsl b/test/tint/builtins/gen/var/length/602a17.wgsl
index 6460b7c..56b2c90 100644
--- a/test/tint/builtins/gen/var/length/602a17.wgsl
+++ b/test/tint/builtins/gen/var/length/602a17.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = length(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   length_602a17();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   length_602a17();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   length_602a17();
 }
diff --git a/test/tint/builtins/gen/var/length/602a17.wgsl.expected.wgsl b/test/tint/builtins/gen/var/length/602a17.wgsl.expected.wgsl
index ad41798..c8c1ffe 100644
--- a/test/tint/builtins/gen/var/length/602a17.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/length/602a17.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = length(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   length_602a17();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   length_602a17();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   length_602a17();
 }
diff --git a/test/tint/builtins/gen/var/length/afde8b.wgsl b/test/tint/builtins/gen/var/length/afde8b.wgsl
index ec97606..bb299fa 100644
--- a/test/tint/builtins/gen/var/length/afde8b.wgsl
+++ b/test/tint/builtins/gen/var/length/afde8b.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = length(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   length_afde8b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   length_afde8b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   length_afde8b();
 }
diff --git a/test/tint/builtins/gen/var/length/afde8b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/length/afde8b.wgsl.expected.wgsl
index 64f028d..602f3c9 100644
--- a/test/tint/builtins/gen/var/length/afde8b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/length/afde8b.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = length(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   length_afde8b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   length_afde8b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   length_afde8b();
 }
diff --git a/test/tint/builtins/gen/var/length/becebf.wgsl b/test/tint/builtins/gen/var/length/becebf.wgsl
index 0eb0b9d..701ba49 100644
--- a/test/tint/builtins/gen/var/length/becebf.wgsl
+++ b/test/tint/builtins/gen/var/length/becebf.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = length(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   length_becebf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   length_becebf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   length_becebf();
 }
diff --git a/test/tint/builtins/gen/var/length/becebf.wgsl.expected.wgsl b/test/tint/builtins/gen/var/length/becebf.wgsl.expected.wgsl
index c2b2472..d2a1258 100644
--- a/test/tint/builtins/gen/var/length/becebf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/length/becebf.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = length(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   length_becebf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   length_becebf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   length_becebf();
 }
diff --git a/test/tint/builtins/gen/var/log/3da25a.wgsl b/test/tint/builtins/gen/var/log/3da25a.wgsl
index 46e2e0e..4aea68e 100644
--- a/test/tint/builtins/gen/var/log/3da25a.wgsl
+++ b/test/tint/builtins/gen/var/log/3da25a.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = log(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log_3da25a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log_3da25a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log_3da25a();
 }
diff --git a/test/tint/builtins/gen/var/log/3da25a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/log/3da25a.wgsl.expected.wgsl
index c4e07fb..e20a653 100644
--- a/test/tint/builtins/gen/var/log/3da25a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/log/3da25a.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = log(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log_3da25a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log_3da25a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log_3da25a();
 }
diff --git a/test/tint/builtins/gen/var/log/7114a6.wgsl b/test/tint/builtins/gen/var/log/7114a6.wgsl
index 6acd3f4..2395ada 100644
--- a/test/tint/builtins/gen/var/log/7114a6.wgsl
+++ b/test/tint/builtins/gen/var/log/7114a6.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = log(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log_7114a6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log_7114a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log_7114a6();
 }
diff --git a/test/tint/builtins/gen/var/log/7114a6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/log/7114a6.wgsl.expected.wgsl
index 1c4a1c0..7ec2232 100644
--- a/test/tint/builtins/gen/var/log/7114a6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/log/7114a6.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = log(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log_7114a6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log_7114a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log_7114a6();
 }
diff --git a/test/tint/builtins/gen/var/log/b2ce28.wgsl b/test/tint/builtins/gen/var/log/b2ce28.wgsl
index 429c198..b3f7e86 100644
--- a/test/tint/builtins/gen/var/log/b2ce28.wgsl
+++ b/test/tint/builtins/gen/var/log/b2ce28.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = log(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log_b2ce28();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log_b2ce28();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log_b2ce28();
 }
diff --git a/test/tint/builtins/gen/var/log/b2ce28.wgsl.expected.wgsl b/test/tint/builtins/gen/var/log/b2ce28.wgsl.expected.wgsl
index 9a3b8f7..503c090 100644
--- a/test/tint/builtins/gen/var/log/b2ce28.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/log/b2ce28.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = log(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log_b2ce28();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log_b2ce28();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log_b2ce28();
 }
diff --git a/test/tint/builtins/gen/var/log/f4c570.wgsl b/test/tint/builtins/gen/var/log/f4c570.wgsl
index 825c833..137aadb 100644
--- a/test/tint/builtins/gen/var/log/f4c570.wgsl
+++ b/test/tint/builtins/gen/var/log/f4c570.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = log(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log_f4c570();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log_f4c570();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log_f4c570();
 }
diff --git a/test/tint/builtins/gen/var/log/f4c570.wgsl.expected.wgsl b/test/tint/builtins/gen/var/log/f4c570.wgsl.expected.wgsl
index a7b9513..cec4706 100644
--- a/test/tint/builtins/gen/var/log/f4c570.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/log/f4c570.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = log(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log_f4c570();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log_f4c570();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log_f4c570();
 }
diff --git a/test/tint/builtins/gen/var/log2/4036ed.wgsl b/test/tint/builtins/gen/var/log2/4036ed.wgsl
index b002ff5..de71973 100644
--- a/test/tint/builtins/gen/var/log2/4036ed.wgsl
+++ b/test/tint/builtins/gen/var/log2/4036ed.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = log2(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_4036ed();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log2_4036ed();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log2_4036ed();
 }
diff --git a/test/tint/builtins/gen/var/log2/4036ed.wgsl.expected.wgsl b/test/tint/builtins/gen/var/log2/4036ed.wgsl.expected.wgsl
index 5baca8b..d194b09 100644
--- a/test/tint/builtins/gen/var/log2/4036ed.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/log2/4036ed.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = log2(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_4036ed();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log2_4036ed();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log2_4036ed();
 }
diff --git a/test/tint/builtins/gen/var/log2/902988.wgsl b/test/tint/builtins/gen/var/log2/902988.wgsl
index a0a4f8e..791b793 100644
--- a/test/tint/builtins/gen/var/log2/902988.wgsl
+++ b/test/tint/builtins/gen/var/log2/902988.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = log2(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_902988();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log2_902988();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log2_902988();
 }
diff --git a/test/tint/builtins/gen/var/log2/902988.wgsl.expected.wgsl b/test/tint/builtins/gen/var/log2/902988.wgsl.expected.wgsl
index cdc40ad..ea2f1c5 100644
--- a/test/tint/builtins/gen/var/log2/902988.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/log2/902988.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = log2(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_902988();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log2_902988();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log2_902988();
 }
diff --git a/test/tint/builtins/gen/var/log2/adb233.wgsl b/test/tint/builtins/gen/var/log2/adb233.wgsl
index bbf9c83..7f2cf69 100644
--- a/test/tint/builtins/gen/var/log2/adb233.wgsl
+++ b/test/tint/builtins/gen/var/log2/adb233.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = log2(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_adb233();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log2_adb233();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log2_adb233();
 }
diff --git a/test/tint/builtins/gen/var/log2/adb233.wgsl.expected.wgsl b/test/tint/builtins/gen/var/log2/adb233.wgsl.expected.wgsl
index 23a4b3f..7ff8f04 100644
--- a/test/tint/builtins/gen/var/log2/adb233.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/log2/adb233.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = log2(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_adb233();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log2_adb233();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log2_adb233();
 }
diff --git a/test/tint/builtins/gen/var/log2/aea659.wgsl b/test/tint/builtins/gen/var/log2/aea659.wgsl
index 88d7d76..79b4b65 100644
--- a/test/tint/builtins/gen/var/log2/aea659.wgsl
+++ b/test/tint/builtins/gen/var/log2/aea659.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = log2(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_aea659();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log2_aea659();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log2_aea659();
 }
diff --git a/test/tint/builtins/gen/var/log2/aea659.wgsl.expected.wgsl b/test/tint/builtins/gen/var/log2/aea659.wgsl.expected.wgsl
index 86a10f1..c6d64d2 100644
--- a/test/tint/builtins/gen/var/log2/aea659.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/log2/aea659.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = log2(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   log2_aea659();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   log2_aea659();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   log2_aea659();
 }
diff --git a/test/tint/builtins/gen/var/max/0c0aae.wgsl b/test/tint/builtins/gen/var/max/0c0aae.wgsl
index 67391ec..ceb180f 100644
--- a/test/tint/builtins/gen/var/max/0c0aae.wgsl
+++ b/test/tint/builtins/gen/var/max/0c0aae.wgsl
@@ -30,18 +30,18 @@
   var res: u32 = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_0c0aae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_0c0aae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_0c0aae();
 }
diff --git a/test/tint/builtins/gen/var/max/0c0aae.wgsl.expected.wgsl b/test/tint/builtins/gen/var/max/0c0aae.wgsl.expected.wgsl
index 562bf67..2f1e9c2 100644
--- a/test/tint/builtins/gen/var/max/0c0aae.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/max/0c0aae.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : u32 = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_0c0aae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_0c0aae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_0c0aae();
 }
diff --git a/test/tint/builtins/gen/var/max/25eafe.wgsl b/test/tint/builtins/gen/var/max/25eafe.wgsl
index 4d028de..e438394 100644
--- a/test/tint/builtins/gen/var/max/25eafe.wgsl
+++ b/test/tint/builtins/gen/var/max/25eafe.wgsl
@@ -30,18 +30,18 @@
   var res: vec3<i32> = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_25eafe();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_25eafe();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_25eafe();
 }
diff --git a/test/tint/builtins/gen/var/max/25eafe.wgsl.expected.wgsl b/test/tint/builtins/gen/var/max/25eafe.wgsl.expected.wgsl
index 70adbd5..df36b3b 100644
--- a/test/tint/builtins/gen/var/max/25eafe.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/max/25eafe.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_25eafe();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_25eafe();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_25eafe();
 }
diff --git a/test/tint/builtins/gen/var/max/320815.wgsl b/test/tint/builtins/gen/var/max/320815.wgsl
index 1b27db6..a678a56 100644
--- a/test/tint/builtins/gen/var/max/320815.wgsl
+++ b/test/tint/builtins/gen/var/max/320815.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<u32> = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_320815();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_320815();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_320815();
 }
diff --git a/test/tint/builtins/gen/var/max/320815.wgsl.expected.wgsl b/test/tint/builtins/gen/var/max/320815.wgsl.expected.wgsl
index 9d47a9e..1f5cf86 100644
--- a/test/tint/builtins/gen/var/max/320815.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/max/320815.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<u32> = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_320815();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_320815();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_320815();
 }
diff --git a/test/tint/builtins/gen/var/max/44a39d.wgsl b/test/tint/builtins/gen/var/max/44a39d.wgsl
index 280f40db..244f400 100644
--- a/test/tint/builtins/gen/var/max/44a39d.wgsl
+++ b/test/tint/builtins/gen/var/max/44a39d.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_44a39d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_44a39d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_44a39d();
 }
diff --git a/test/tint/builtins/gen/var/max/44a39d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/max/44a39d.wgsl.expected.wgsl
index d7107af..b7e9109 100644
--- a/test/tint/builtins/gen/var/max/44a39d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/max/44a39d.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : f32 = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_44a39d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_44a39d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_44a39d();
 }
diff --git a/test/tint/builtins/gen/var/max/453e04.wgsl b/test/tint/builtins/gen/var/max/453e04.wgsl
index b8b6630..0afa68b 100644
--- a/test/tint/builtins/gen/var/max/453e04.wgsl
+++ b/test/tint/builtins/gen/var/max/453e04.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<u32> = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_453e04();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_453e04();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_453e04();
 }
diff --git a/test/tint/builtins/gen/var/max/453e04.wgsl.expected.wgsl b/test/tint/builtins/gen/var/max/453e04.wgsl.expected.wgsl
index 2fd058d..a47fca6 100644
--- a/test/tint/builtins/gen/var/max/453e04.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/max/453e04.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<u32> = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_453e04();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_453e04();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_453e04();
 }
diff --git a/test/tint/builtins/gen/var/max/462050.wgsl b/test/tint/builtins/gen/var/max/462050.wgsl
index 56bfaa9..53ca66e 100644
--- a/test/tint/builtins/gen/var/max/462050.wgsl
+++ b/test/tint/builtins/gen/var/max/462050.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<f32> = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_462050();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_462050();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_462050();
 }
diff --git a/test/tint/builtins/gen/var/max/462050.wgsl.expected.wgsl b/test/tint/builtins/gen/var/max/462050.wgsl.expected.wgsl
index 1a7c608..ac7bb60 100644
--- a/test/tint/builtins/gen/var/max/462050.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/max/462050.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<f32> = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_462050();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_462050();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_462050();
 }
diff --git a/test/tint/builtins/gen/var/max/4883ac.wgsl b/test/tint/builtins/gen/var/max/4883ac.wgsl
index 2ba5c05..8add3f4 100644
--- a/test/tint/builtins/gen/var/max/4883ac.wgsl
+++ b/test/tint/builtins/gen/var/max/4883ac.wgsl
@@ -30,18 +30,18 @@
   var res: vec3<f32> = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_4883ac();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_4883ac();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_4883ac();
 }
diff --git a/test/tint/builtins/gen/var/max/4883ac.wgsl.expected.wgsl b/test/tint/builtins/gen/var/max/4883ac.wgsl.expected.wgsl
index 2e15544..d0216f5 100644
--- a/test/tint/builtins/gen/var/max/4883ac.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/max/4883ac.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<f32> = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_4883ac();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_4883ac();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_4883ac();
 }
diff --git a/test/tint/builtins/gen/var/max/85e6bc.wgsl b/test/tint/builtins/gen/var/max/85e6bc.wgsl
index 0692e99..d46960f 100644
--- a/test/tint/builtins/gen/var/max/85e6bc.wgsl
+++ b/test/tint/builtins/gen/var/max/85e6bc.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<i32> = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_85e6bc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_85e6bc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_85e6bc();
 }
diff --git a/test/tint/builtins/gen/var/max/85e6bc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/max/85e6bc.wgsl.expected.wgsl
index 8d76787..33565fd 100644
--- a/test/tint/builtins/gen/var/max/85e6bc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/max/85e6bc.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<i32> = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_85e6bc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_85e6bc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_85e6bc();
 }
diff --git a/test/tint/builtins/gen/var/max/a93419.wgsl b/test/tint/builtins/gen/var/max/a93419.wgsl
index 3a08c18..c4ca54f 100644
--- a/test/tint/builtins/gen/var/max/a93419.wgsl
+++ b/test/tint/builtins/gen/var/max/a93419.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_a93419();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_a93419();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_a93419();
 }
diff --git a/test/tint/builtins/gen/var/max/a93419.wgsl.expected.wgsl b/test/tint/builtins/gen/var/max/a93419.wgsl.expected.wgsl
index 0e3d12d..22d8ba8 100644
--- a/test/tint/builtins/gen/var/max/a93419.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/max/a93419.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<f32> = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_a93419();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_a93419();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_a93419();
 }
diff --git a/test/tint/builtins/gen/var/max/b1b73a.wgsl b/test/tint/builtins/gen/var/max/b1b73a.wgsl
index b60e810..f4e625b 100644
--- a/test/tint/builtins/gen/var/max/b1b73a.wgsl
+++ b/test/tint/builtins/gen/var/max/b1b73a.wgsl
@@ -30,18 +30,18 @@
   var res: vec3<u32> = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_b1b73a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_b1b73a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_b1b73a();
 }
diff --git a/test/tint/builtins/gen/var/max/b1b73a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/max/b1b73a.wgsl.expected.wgsl
index affed5f..f47436c 100644
--- a/test/tint/builtins/gen/var/max/b1b73a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/max/b1b73a.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<u32> = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_b1b73a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_b1b73a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_b1b73a();
 }
diff --git a/test/tint/builtins/gen/var/max/ce7c30.wgsl b/test/tint/builtins/gen/var/max/ce7c30.wgsl
index 3bfa94b..82ce772 100644
--- a/test/tint/builtins/gen/var/max/ce7c30.wgsl
+++ b/test/tint/builtins/gen/var/max/ce7c30.wgsl
@@ -30,18 +30,18 @@
   var res: i32 = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_ce7c30();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_ce7c30();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_ce7c30();
 }
diff --git a/test/tint/builtins/gen/var/max/ce7c30.wgsl.expected.wgsl b/test/tint/builtins/gen/var/max/ce7c30.wgsl.expected.wgsl
index 389f57c..8304326 100644
--- a/test/tint/builtins/gen/var/max/ce7c30.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/max/ce7c30.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_ce7c30();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_ce7c30();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_ce7c30();
 }
diff --git a/test/tint/builtins/gen/var/max/e8192f.wgsl b/test/tint/builtins/gen/var/max/e8192f.wgsl
index e492084..f090e94 100644
--- a/test/tint/builtins/gen/var/max/e8192f.wgsl
+++ b/test/tint/builtins/gen/var/max/e8192f.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<i32> = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_e8192f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_e8192f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_e8192f();
 }
diff --git a/test/tint/builtins/gen/var/max/e8192f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/max/e8192f.wgsl.expected.wgsl
index d7e94bb..d3b546b 100644
--- a/test/tint/builtins/gen/var/max/e8192f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/max/e8192f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = max(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   max_e8192f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   max_e8192f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   max_e8192f();
 }
diff --git a/test/tint/builtins/gen/var/min/03c7e3.wgsl b/test/tint/builtins/gen/var/min/03c7e3.wgsl
index c6584bd..82feb88 100644
--- a/test/tint/builtins/gen/var/min/03c7e3.wgsl
+++ b/test/tint/builtins/gen/var/min/03c7e3.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<i32> = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_03c7e3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_03c7e3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_03c7e3();
 }
diff --git a/test/tint/builtins/gen/var/min/03c7e3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/min/03c7e3.wgsl.expected.wgsl
index c266d21..9f91712 100644
--- a/test/tint/builtins/gen/var/min/03c7e3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/min/03c7e3.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_03c7e3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_03c7e3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_03c7e3();
 }
diff --git a/test/tint/builtins/gen/var/min/0dc614.wgsl b/test/tint/builtins/gen/var/min/0dc614.wgsl
index 15bd521..f2ed84a 100644
--- a/test/tint/builtins/gen/var/min/0dc614.wgsl
+++ b/test/tint/builtins/gen/var/min/0dc614.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<u32> = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_0dc614();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_0dc614();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_0dc614();
 }
diff --git a/test/tint/builtins/gen/var/min/0dc614.wgsl.expected.wgsl b/test/tint/builtins/gen/var/min/0dc614.wgsl.expected.wgsl
index 6468740..139b053 100644
--- a/test/tint/builtins/gen/var/min/0dc614.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/min/0dc614.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<u32> = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_0dc614();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_0dc614();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_0dc614();
 }
diff --git a/test/tint/builtins/gen/var/min/3941e1.wgsl b/test/tint/builtins/gen/var/min/3941e1.wgsl
index 6ffcdef..f3da3ea 100644
--- a/test/tint/builtins/gen/var/min/3941e1.wgsl
+++ b/test/tint/builtins/gen/var/min/3941e1.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<i32> = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_3941e1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_3941e1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_3941e1();
 }
diff --git a/test/tint/builtins/gen/var/min/3941e1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/min/3941e1.wgsl.expected.wgsl
index e4f18a3..9836662 100644
--- a/test/tint/builtins/gen/var/min/3941e1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/min/3941e1.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<i32> = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_3941e1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_3941e1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_3941e1();
 }
diff --git a/test/tint/builtins/gen/var/min/46c5d3.wgsl b/test/tint/builtins/gen/var/min/46c5d3.wgsl
index 391138e..eeb50bb 100644
--- a/test/tint/builtins/gen/var/min/46c5d3.wgsl
+++ b/test/tint/builtins/gen/var/min/46c5d3.wgsl
@@ -30,18 +30,18 @@
   var res: u32 = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_46c5d3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_46c5d3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_46c5d3();
 }
diff --git a/test/tint/builtins/gen/var/min/46c5d3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/min/46c5d3.wgsl.expected.wgsl
index 82edb4b..8c3630f 100644
--- a/test/tint/builtins/gen/var/min/46c5d3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/min/46c5d3.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : u32 = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_46c5d3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_46c5d3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_46c5d3();
 }
diff --git a/test/tint/builtins/gen/var/min/82b28f.wgsl b/test/tint/builtins/gen/var/min/82b28f.wgsl
index 6ccb4e1..aa5e1b8 100644
--- a/test/tint/builtins/gen/var/min/82b28f.wgsl
+++ b/test/tint/builtins/gen/var/min/82b28f.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<u32> = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_82b28f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_82b28f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_82b28f();
 }
diff --git a/test/tint/builtins/gen/var/min/82b28f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/min/82b28f.wgsl.expected.wgsl
index 934bd52..3d04b29 100644
--- a/test/tint/builtins/gen/var/min/82b28f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/min/82b28f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<u32> = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_82b28f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_82b28f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_82b28f();
 }
diff --git a/test/tint/builtins/gen/var/min/93cfc4.wgsl b/test/tint/builtins/gen/var/min/93cfc4.wgsl
index 1fe53e8..d56b8f0 100644
--- a/test/tint/builtins/gen/var/min/93cfc4.wgsl
+++ b/test/tint/builtins/gen/var/min/93cfc4.wgsl
@@ -30,18 +30,18 @@
   var res: vec3<f32> = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_93cfc4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_93cfc4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_93cfc4();
 }
diff --git a/test/tint/builtins/gen/var/min/93cfc4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/min/93cfc4.wgsl.expected.wgsl
index db17519..54a6987 100644
--- a/test/tint/builtins/gen/var/min/93cfc4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/min/93cfc4.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<f32> = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_93cfc4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_93cfc4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_93cfc4();
 }
diff --git a/test/tint/builtins/gen/var/min/a45171.wgsl b/test/tint/builtins/gen/var/min/a45171.wgsl
index 8992507..c98426e 100644
--- a/test/tint/builtins/gen/var/min/a45171.wgsl
+++ b/test/tint/builtins/gen/var/min/a45171.wgsl
@@ -30,18 +30,18 @@
   var res: vec3<i32> = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_a45171();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_a45171();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_a45171();
 }
diff --git a/test/tint/builtins/gen/var/min/a45171.wgsl.expected.wgsl b/test/tint/builtins/gen/var/min/a45171.wgsl.expected.wgsl
index 80051cb..25c07ac 100644
--- a/test/tint/builtins/gen/var/min/a45171.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/min/a45171.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_a45171();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_a45171();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_a45171();
 }
diff --git a/test/tint/builtins/gen/var/min/aa28ad.wgsl b/test/tint/builtins/gen/var/min/aa28ad.wgsl
index 2b56279..7eadaf1 100644
--- a/test/tint/builtins/gen/var/min/aa28ad.wgsl
+++ b/test/tint/builtins/gen/var/min/aa28ad.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<f32> = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_aa28ad();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_aa28ad();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_aa28ad();
 }
diff --git a/test/tint/builtins/gen/var/min/aa28ad.wgsl.expected.wgsl b/test/tint/builtins/gen/var/min/aa28ad.wgsl.expected.wgsl
index f14fb39..4118b9c 100644
--- a/test/tint/builtins/gen/var/min/aa28ad.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/min/aa28ad.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<f32> = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_aa28ad();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_aa28ad();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_aa28ad();
 }
diff --git a/test/tint/builtins/gen/var/min/af326d.wgsl b/test/tint/builtins/gen/var/min/af326d.wgsl
index f1bab38..cb64bc1 100644
--- a/test/tint/builtins/gen/var/min/af326d.wgsl
+++ b/test/tint/builtins/gen/var/min/af326d.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_af326d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_af326d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_af326d();
 }
diff --git a/test/tint/builtins/gen/var/min/af326d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/min/af326d.wgsl.expected.wgsl
index dfc7c47..cad0ec0 100644
--- a/test/tint/builtins/gen/var/min/af326d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/min/af326d.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : f32 = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_af326d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_af326d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_af326d();
 }
diff --git a/test/tint/builtins/gen/var/min/c70bb7.wgsl b/test/tint/builtins/gen/var/min/c70bb7.wgsl
index 55582fc..1582ed0 100644
--- a/test/tint/builtins/gen/var/min/c70bb7.wgsl
+++ b/test/tint/builtins/gen/var/min/c70bb7.wgsl
@@ -30,18 +30,18 @@
   var res: vec3<u32> = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_c70bb7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_c70bb7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_c70bb7();
 }
diff --git a/test/tint/builtins/gen/var/min/c70bb7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/min/c70bb7.wgsl.expected.wgsl
index 485ba0c..8ac77f7 100644
--- a/test/tint/builtins/gen/var/min/c70bb7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/min/c70bb7.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<u32> = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_c70bb7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_c70bb7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_c70bb7();
 }
diff --git a/test/tint/builtins/gen/var/min/c73147.wgsl b/test/tint/builtins/gen/var/min/c73147.wgsl
index cf7c0fb..401f6a0 100644
--- a/test/tint/builtins/gen/var/min/c73147.wgsl
+++ b/test/tint/builtins/gen/var/min/c73147.wgsl
@@ -30,18 +30,18 @@
   var res: i32 = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_c73147();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_c73147();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_c73147();
 }
diff --git a/test/tint/builtins/gen/var/min/c73147.wgsl.expected.wgsl b/test/tint/builtins/gen/var/min/c73147.wgsl.expected.wgsl
index 8653636..035e666 100644
--- a/test/tint/builtins/gen/var/min/c73147.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/min/c73147.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_c73147();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_c73147();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_c73147();
 }
diff --git a/test/tint/builtins/gen/var/min/c76fa6.wgsl b/test/tint/builtins/gen/var/min/c76fa6.wgsl
index 0665ca9..433b133 100644
--- a/test/tint/builtins/gen/var/min/c76fa6.wgsl
+++ b/test/tint/builtins/gen/var/min/c76fa6.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_c76fa6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_c76fa6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_c76fa6();
 }
diff --git a/test/tint/builtins/gen/var/min/c76fa6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/min/c76fa6.wgsl.expected.wgsl
index 2ef79b4..0de54de 100644
--- a/test/tint/builtins/gen/var/min/c76fa6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/min/c76fa6.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<f32> = min(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   min_c76fa6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   min_c76fa6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   min_c76fa6();
 }
diff --git a/test/tint/builtins/gen/var/mix/0c8c33.wgsl b/test/tint/builtins/gen/var/mix/0c8c33.wgsl
index 173a2df..debeaf2 100644
--- a/test/tint/builtins/gen/var/mix/0c8c33.wgsl
+++ b/test/tint/builtins/gen/var/mix/0c8c33.wgsl
@@ -31,18 +31,18 @@
   var res: vec3<f32> = mix(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_0c8c33();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_0c8c33();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_0c8c33();
 }
diff --git a/test/tint/builtins/gen/var/mix/0c8c33.wgsl.expected.wgsl b/test/tint/builtins/gen/var/mix/0c8c33.wgsl.expected.wgsl
index feae76a..09f0497 100644
--- a/test/tint/builtins/gen/var/mix/0c8c33.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/mix/0c8c33.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<f32> = mix(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_0c8c33();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_0c8c33();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_0c8c33();
 }
diff --git a/test/tint/builtins/gen/var/mix/1faeb1.wgsl b/test/tint/builtins/gen/var/mix/1faeb1.wgsl
index 65b8108..111a571 100644
--- a/test/tint/builtins/gen/var/mix/1faeb1.wgsl
+++ b/test/tint/builtins/gen/var/mix/1faeb1.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = mix(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_1faeb1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_1faeb1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_1faeb1();
 }
diff --git a/test/tint/builtins/gen/var/mix/1faeb1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/mix/1faeb1.wgsl.expected.wgsl
index 3d73596..4253d4a 100644
--- a/test/tint/builtins/gen/var/mix/1faeb1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/mix/1faeb1.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<f32> = mix(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_1faeb1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_1faeb1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_1faeb1();
 }
diff --git a/test/tint/builtins/gen/var/mix/2fadab.wgsl b/test/tint/builtins/gen/var/mix/2fadab.wgsl
index e7ace41..e8c3593 100644
--- a/test/tint/builtins/gen/var/mix/2fadab.wgsl
+++ b/test/tint/builtins/gen/var/mix/2fadab.wgsl
@@ -31,18 +31,18 @@
   var res: vec2<f32> = mix(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_2fadab();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_2fadab();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_2fadab();
 }
diff --git a/test/tint/builtins/gen/var/mix/2fadab.wgsl.expected.wgsl b/test/tint/builtins/gen/var/mix/2fadab.wgsl.expected.wgsl
index 8f1d4f2..615c3eb 100644
--- a/test/tint/builtins/gen/var/mix/2fadab.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/mix/2fadab.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<f32> = mix(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_2fadab();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_2fadab();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_2fadab();
 }
diff --git a/test/tint/builtins/gen/var/mix/315264.wgsl b/test/tint/builtins/gen/var/mix/315264.wgsl
index c396c01..90865bb 100644
--- a/test/tint/builtins/gen/var/mix/315264.wgsl
+++ b/test/tint/builtins/gen/var/mix/315264.wgsl
@@ -31,18 +31,18 @@
   var res: vec3<f32> = mix(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_315264();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_315264();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_315264();
 }
diff --git a/test/tint/builtins/gen/var/mix/315264.wgsl.expected.wgsl b/test/tint/builtins/gen/var/mix/315264.wgsl.expected.wgsl
index e4f8430..ee53b30 100644
--- a/test/tint/builtins/gen/var/mix/315264.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/mix/315264.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<f32> = mix(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_315264();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_315264();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_315264();
 }
diff --git a/test/tint/builtins/gen/var/mix/4f0b5e.wgsl b/test/tint/builtins/gen/var/mix/4f0b5e.wgsl
index 4e823a1..f308892 100644
--- a/test/tint/builtins/gen/var/mix/4f0b5e.wgsl
+++ b/test/tint/builtins/gen/var/mix/4f0b5e.wgsl
@@ -31,18 +31,18 @@
   var res: f32 = mix(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_4f0b5e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_4f0b5e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_4f0b5e();
 }
diff --git a/test/tint/builtins/gen/var/mix/4f0b5e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/mix/4f0b5e.wgsl.expected.wgsl
index 295f6efc..e597146 100644
--- a/test/tint/builtins/gen/var/mix/4f0b5e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/mix/4f0b5e.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : f32 = mix(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_4f0b5e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_4f0b5e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_4f0b5e();
 }
diff --git a/test/tint/builtins/gen/var/mix/6f8adc.wgsl b/test/tint/builtins/gen/var/mix/6f8adc.wgsl
index e730990..c1efe6b 100644
--- a/test/tint/builtins/gen/var/mix/6f8adc.wgsl
+++ b/test/tint/builtins/gen/var/mix/6f8adc.wgsl
@@ -31,18 +31,18 @@
   var res: vec2<f32> = mix(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_6f8adc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_6f8adc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_6f8adc();
 }
diff --git a/test/tint/builtins/gen/var/mix/6f8adc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/mix/6f8adc.wgsl.expected.wgsl
index f29095a..fad88d5 100644
--- a/test/tint/builtins/gen/var/mix/6f8adc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/mix/6f8adc.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<f32> = mix(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_6f8adc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_6f8adc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_6f8adc();
 }
diff --git a/test/tint/builtins/gen/var/mix/c37ede.wgsl b/test/tint/builtins/gen/var/mix/c37ede.wgsl
index 2f02593..3463524 100644
--- a/test/tint/builtins/gen/var/mix/c37ede.wgsl
+++ b/test/tint/builtins/gen/var/mix/c37ede.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = mix(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_c37ede();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_c37ede();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_c37ede();
 }
diff --git a/test/tint/builtins/gen/var/mix/c37ede.wgsl.expected.wgsl b/test/tint/builtins/gen/var/mix/c37ede.wgsl.expected.wgsl
index ed1e7a3..7a073a3d 100644
--- a/test/tint/builtins/gen/var/mix/c37ede.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/mix/c37ede.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<f32> = mix(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   mix_c37ede();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   mix_c37ede();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   mix_c37ede();
 }
diff --git a/test/tint/builtins/gen/var/modf/180fed.wgsl b/test/tint/builtins/gen/var/modf/180fed.wgsl
index aaf3f55..225f1ab 100644
--- a/test/tint/builtins/gen/var/modf/180fed.wgsl
+++ b/test/tint/builtins/gen/var/modf/180fed.wgsl
@@ -29,18 +29,18 @@
   var res = modf(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_180fed();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   modf_180fed();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   modf_180fed();
 }
diff --git a/test/tint/builtins/gen/var/modf/180fed.wgsl.expected.wgsl b/test/tint/builtins/gen/var/modf/180fed.wgsl.expected.wgsl
index e62aa59..b9189cb 100644
--- a/test/tint/builtins/gen/var/modf/180fed.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/modf/180fed.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res = modf(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_180fed();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   modf_180fed();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   modf_180fed();
 }
diff --git a/test/tint/builtins/gen/var/modf/9b75f7.wgsl b/test/tint/builtins/gen/var/modf/9b75f7.wgsl
index 335331a..8f45d43 100644
--- a/test/tint/builtins/gen/var/modf/9b75f7.wgsl
+++ b/test/tint/builtins/gen/var/modf/9b75f7.wgsl
@@ -29,18 +29,18 @@
   var res = modf(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_9b75f7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   modf_9b75f7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   modf_9b75f7();
 }
diff --git a/test/tint/builtins/gen/var/modf/9b75f7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/modf/9b75f7.wgsl.expected.wgsl
index ce3b3d9..57c7dd3 100644
--- a/test/tint/builtins/gen/var/modf/9b75f7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/modf/9b75f7.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res = modf(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_9b75f7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   modf_9b75f7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   modf_9b75f7();
 }
diff --git a/test/tint/builtins/gen/var/modf/ec2dbc.wgsl b/test/tint/builtins/gen/var/modf/ec2dbc.wgsl
index bd2a298..f677d91 100644
--- a/test/tint/builtins/gen/var/modf/ec2dbc.wgsl
+++ b/test/tint/builtins/gen/var/modf/ec2dbc.wgsl
@@ -29,18 +29,18 @@
   var res = modf(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_ec2dbc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   modf_ec2dbc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   modf_ec2dbc();
 }
diff --git a/test/tint/builtins/gen/var/modf/ec2dbc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/modf/ec2dbc.wgsl.expected.wgsl
index 47cd800..3e6ab82 100644
--- a/test/tint/builtins/gen/var/modf/ec2dbc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/modf/ec2dbc.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res = modf(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_ec2dbc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   modf_ec2dbc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   modf_ec2dbc();
 }
diff --git a/test/tint/builtins/gen/var/modf/f5f20d.wgsl b/test/tint/builtins/gen/var/modf/f5f20d.wgsl
index 7111dba..2890b35 100644
--- a/test/tint/builtins/gen/var/modf/f5f20d.wgsl
+++ b/test/tint/builtins/gen/var/modf/f5f20d.wgsl
@@ -29,18 +29,18 @@
   var res = modf(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_f5f20d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   modf_f5f20d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   modf_f5f20d();
 }
diff --git a/test/tint/builtins/gen/var/modf/f5f20d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/modf/f5f20d.wgsl.expected.wgsl
index b31bbf2..9866f5b 100644
--- a/test/tint/builtins/gen/var/modf/f5f20d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/modf/f5f20d.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res = modf(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   modf_f5f20d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   modf_f5f20d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   modf_f5f20d();
 }
diff --git a/test/tint/builtins/gen/var/normalize/64d8c0.wgsl b/test/tint/builtins/gen/var/normalize/64d8c0.wgsl
index a4b5e1d..c550bde 100644
--- a/test/tint/builtins/gen/var/normalize/64d8c0.wgsl
+++ b/test/tint/builtins/gen/var/normalize/64d8c0.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = normalize(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   normalize_64d8c0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   normalize_64d8c0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   normalize_64d8c0();
 }
diff --git a/test/tint/builtins/gen/var/normalize/64d8c0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/normalize/64d8c0.wgsl.expected.wgsl
index 189ccda..c5241b5 100644
--- a/test/tint/builtins/gen/var/normalize/64d8c0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/normalize/64d8c0.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = normalize(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   normalize_64d8c0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   normalize_64d8c0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   normalize_64d8c0();
 }
diff --git a/test/tint/builtins/gen/var/normalize/9a0aab.wgsl b/test/tint/builtins/gen/var/normalize/9a0aab.wgsl
index af29580..5ded0d4 100644
--- a/test/tint/builtins/gen/var/normalize/9a0aab.wgsl
+++ b/test/tint/builtins/gen/var/normalize/9a0aab.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = normalize(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   normalize_9a0aab();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   normalize_9a0aab();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   normalize_9a0aab();
 }
diff --git a/test/tint/builtins/gen/var/normalize/9a0aab.wgsl.expected.wgsl b/test/tint/builtins/gen/var/normalize/9a0aab.wgsl.expected.wgsl
index 3e8d2c5..ad629d0 100644
--- a/test/tint/builtins/gen/var/normalize/9a0aab.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/normalize/9a0aab.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = normalize(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   normalize_9a0aab();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   normalize_9a0aab();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   normalize_9a0aab();
 }
diff --git a/test/tint/builtins/gen/var/normalize/fc2ef1.wgsl b/test/tint/builtins/gen/var/normalize/fc2ef1.wgsl
index 018f437..91c311b 100644
--- a/test/tint/builtins/gen/var/normalize/fc2ef1.wgsl
+++ b/test/tint/builtins/gen/var/normalize/fc2ef1.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = normalize(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   normalize_fc2ef1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   normalize_fc2ef1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   normalize_fc2ef1();
 }
diff --git a/test/tint/builtins/gen/var/normalize/fc2ef1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/normalize/fc2ef1.wgsl.expected.wgsl
index ccaf220..badf34d 100644
--- a/test/tint/builtins/gen/var/normalize/fc2ef1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/normalize/fc2ef1.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = normalize(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   normalize_fc2ef1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   normalize_fc2ef1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   normalize_fc2ef1();
 }
diff --git a/test/tint/builtins/gen/var/pack2x16float/0e97b3.wgsl b/test/tint/builtins/gen/var/pack2x16float/0e97b3.wgsl
index 7d379ed..55d6bdf 100644
--- a/test/tint/builtins/gen/var/pack2x16float/0e97b3.wgsl
+++ b/test/tint/builtins/gen/var/pack2x16float/0e97b3.wgsl
@@ -29,18 +29,18 @@
   var res: u32 = pack2x16float(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack2x16float_0e97b3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack2x16float_0e97b3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack2x16float_0e97b3();
 }
diff --git a/test/tint/builtins/gen/var/pack2x16float/0e97b3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/pack2x16float/0e97b3.wgsl.expected.wgsl
index faab29a..27bed46 100644
--- a/test/tint/builtins/gen/var/pack2x16float/0e97b3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/pack2x16float/0e97b3.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : u32 = pack2x16float(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack2x16float_0e97b3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack2x16float_0e97b3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack2x16float_0e97b3();
 }
diff --git a/test/tint/builtins/gen/var/pack2x16snorm/6c169b.wgsl b/test/tint/builtins/gen/var/pack2x16snorm/6c169b.wgsl
index 4bba23e..603d87e 100644
--- a/test/tint/builtins/gen/var/pack2x16snorm/6c169b.wgsl
+++ b/test/tint/builtins/gen/var/pack2x16snorm/6c169b.wgsl
@@ -29,18 +29,18 @@
   var res: u32 = pack2x16snorm(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack2x16snorm_6c169b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack2x16snorm_6c169b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack2x16snorm_6c169b();
 }
diff --git a/test/tint/builtins/gen/var/pack2x16snorm/6c169b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/pack2x16snorm/6c169b.wgsl.expected.wgsl
index c3e4cd4..406794b 100644
--- a/test/tint/builtins/gen/var/pack2x16snorm/6c169b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/pack2x16snorm/6c169b.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : u32 = pack2x16snorm(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack2x16snorm_6c169b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack2x16snorm_6c169b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack2x16snorm_6c169b();
 }
diff --git a/test/tint/builtins/gen/var/pack2x16unorm/0f08e4.wgsl b/test/tint/builtins/gen/var/pack2x16unorm/0f08e4.wgsl
index e00776c..1bfdf14 100644
--- a/test/tint/builtins/gen/var/pack2x16unorm/0f08e4.wgsl
+++ b/test/tint/builtins/gen/var/pack2x16unorm/0f08e4.wgsl
@@ -29,18 +29,18 @@
   var res: u32 = pack2x16unorm(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack2x16unorm_0f08e4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack2x16unorm_0f08e4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack2x16unorm_0f08e4();
 }
diff --git a/test/tint/builtins/gen/var/pack2x16unorm/0f08e4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/pack2x16unorm/0f08e4.wgsl.expected.wgsl
index eb131fc..db3a331 100644
--- a/test/tint/builtins/gen/var/pack2x16unorm/0f08e4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/pack2x16unorm/0f08e4.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : u32 = pack2x16unorm(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack2x16unorm_0f08e4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack2x16unorm_0f08e4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack2x16unorm_0f08e4();
 }
diff --git a/test/tint/builtins/gen/var/pack4x8snorm/4d22e7.wgsl b/test/tint/builtins/gen/var/pack4x8snorm/4d22e7.wgsl
index f027dfd..ed66aa8 100644
--- a/test/tint/builtins/gen/var/pack4x8snorm/4d22e7.wgsl
+++ b/test/tint/builtins/gen/var/pack4x8snorm/4d22e7.wgsl
@@ -29,18 +29,18 @@
   var res: u32 = pack4x8snorm(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack4x8snorm_4d22e7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack4x8snorm_4d22e7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack4x8snorm_4d22e7();
 }
diff --git a/test/tint/builtins/gen/var/pack4x8snorm/4d22e7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/pack4x8snorm/4d22e7.wgsl.expected.wgsl
index 18df3db..b83a2e3 100644
--- a/test/tint/builtins/gen/var/pack4x8snorm/4d22e7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/pack4x8snorm/4d22e7.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : u32 = pack4x8snorm(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack4x8snorm_4d22e7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack4x8snorm_4d22e7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack4x8snorm_4d22e7();
 }
diff --git a/test/tint/builtins/gen/var/pack4x8unorm/95c456.wgsl b/test/tint/builtins/gen/var/pack4x8unorm/95c456.wgsl
index 96dd055..e32ced3 100644
--- a/test/tint/builtins/gen/var/pack4x8unorm/95c456.wgsl
+++ b/test/tint/builtins/gen/var/pack4x8unorm/95c456.wgsl
@@ -29,18 +29,18 @@
   var res: u32 = pack4x8unorm(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack4x8unorm_95c456();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack4x8unorm_95c456();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack4x8unorm_95c456();
 }
diff --git a/test/tint/builtins/gen/var/pack4x8unorm/95c456.wgsl.expected.wgsl b/test/tint/builtins/gen/var/pack4x8unorm/95c456.wgsl.expected.wgsl
index fab95be..195c952 100644
--- a/test/tint/builtins/gen/var/pack4x8unorm/95c456.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/pack4x8unorm/95c456.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : u32 = pack4x8unorm(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pack4x8unorm_95c456();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pack4x8unorm_95c456();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pack4x8unorm_95c456();
 }
diff --git a/test/tint/builtins/gen/var/pow/04a908.wgsl b/test/tint/builtins/gen/var/pow/04a908.wgsl
index 884e6f4..11ed426 100644
--- a/test/tint/builtins/gen/var/pow/04a908.wgsl
+++ b/test/tint/builtins/gen/var/pow/04a908.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = pow(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_04a908();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pow_04a908();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pow_04a908();
 }
diff --git a/test/tint/builtins/gen/var/pow/04a908.wgsl.expected.wgsl b/test/tint/builtins/gen/var/pow/04a908.wgsl.expected.wgsl
index 1409845..77389a3 100644
--- a/test/tint/builtins/gen/var/pow/04a908.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/pow/04a908.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<f32> = pow(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_04a908();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pow_04a908();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pow_04a908();
 }
diff --git a/test/tint/builtins/gen/var/pow/46e029.wgsl b/test/tint/builtins/gen/var/pow/46e029.wgsl
index c2bee4a..6f67b51 100644
--- a/test/tint/builtins/gen/var/pow/46e029.wgsl
+++ b/test/tint/builtins/gen/var/pow/46e029.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = pow(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_46e029();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pow_46e029();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pow_46e029();
 }
diff --git a/test/tint/builtins/gen/var/pow/46e029.wgsl.expected.wgsl b/test/tint/builtins/gen/var/pow/46e029.wgsl.expected.wgsl
index 85ddd37..1a23381 100644
--- a/test/tint/builtins/gen/var/pow/46e029.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/pow/46e029.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : f32 = pow(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_46e029();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pow_46e029();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pow_46e029();
 }
diff --git a/test/tint/builtins/gen/var/pow/4a46c9.wgsl b/test/tint/builtins/gen/var/pow/4a46c9.wgsl
index 5d991fe..077b87e 100644
--- a/test/tint/builtins/gen/var/pow/4a46c9.wgsl
+++ b/test/tint/builtins/gen/var/pow/4a46c9.wgsl
@@ -30,18 +30,18 @@
   var res: vec3<f32> = pow(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_4a46c9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pow_4a46c9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pow_4a46c9();
 }
diff --git a/test/tint/builtins/gen/var/pow/4a46c9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/pow/4a46c9.wgsl.expected.wgsl
index 71bc724..8e2b88c 100644
--- a/test/tint/builtins/gen/var/pow/4a46c9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/pow/4a46c9.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<f32> = pow(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_4a46c9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pow_4a46c9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pow_4a46c9();
 }
diff --git a/test/tint/builtins/gen/var/pow/e60ea5.wgsl b/test/tint/builtins/gen/var/pow/e60ea5.wgsl
index 2070ec8..6cf11da 100644
--- a/test/tint/builtins/gen/var/pow/e60ea5.wgsl
+++ b/test/tint/builtins/gen/var/pow/e60ea5.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<f32> = pow(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_e60ea5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pow_e60ea5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pow_e60ea5();
 }
diff --git a/test/tint/builtins/gen/var/pow/e60ea5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/pow/e60ea5.wgsl.expected.wgsl
index 65321f8..c04fdb6 100644
--- a/test/tint/builtins/gen/var/pow/e60ea5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/pow/e60ea5.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<f32> = pow(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   pow_e60ea5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   pow_e60ea5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   pow_e60ea5();
 }
diff --git a/test/tint/builtins/gen/var/radians/09b7fc.wgsl b/test/tint/builtins/gen/var/radians/09b7fc.wgsl
index 597c22d..dab4820 100644
--- a/test/tint/builtins/gen/var/radians/09b7fc.wgsl
+++ b/test/tint/builtins/gen/var/radians/09b7fc.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = radians(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_09b7fc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   radians_09b7fc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   radians_09b7fc();
 }
diff --git a/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.wgsl
index 534b5a7..d07f72c 100644
--- a/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = radians(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_09b7fc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   radians_09b7fc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   radians_09b7fc();
 }
diff --git a/test/tint/builtins/gen/var/radians/61687a.wgsl b/test/tint/builtins/gen/var/radians/61687a.wgsl
index d757077b..27093cb 100644
--- a/test/tint/builtins/gen/var/radians/61687a.wgsl
+++ b/test/tint/builtins/gen/var/radians/61687a.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = radians(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_61687a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   radians_61687a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   radians_61687a();
 }
diff --git a/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.wgsl
index 6591863..8b8146e 100644
--- a/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = radians(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_61687a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   radians_61687a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   radians_61687a();
 }
diff --git a/test/tint/builtins/gen/var/radians/6b0ff2.wgsl b/test/tint/builtins/gen/var/radians/6b0ff2.wgsl
index 58d83ef..23cd903 100644
--- a/test/tint/builtins/gen/var/radians/6b0ff2.wgsl
+++ b/test/tint/builtins/gen/var/radians/6b0ff2.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = radians(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_6b0ff2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   radians_6b0ff2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   radians_6b0ff2();
 }
diff --git a/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.wgsl
index ab1a387..e1de333 100644
--- a/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = radians(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_6b0ff2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   radians_6b0ff2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   radians_6b0ff2();
 }
diff --git a/test/tint/builtins/gen/var/radians/f96258.wgsl b/test/tint/builtins/gen/var/radians/f96258.wgsl
index 77c37c6..6da5110 100644
--- a/test/tint/builtins/gen/var/radians/f96258.wgsl
+++ b/test/tint/builtins/gen/var/radians/f96258.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = radians(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_f96258();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   radians_f96258();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   radians_f96258();
 }
diff --git a/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.wgsl b/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.wgsl
index eaf3040..962df3e 100644
--- a/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = radians(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   radians_f96258();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   radians_f96258();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   radians_f96258();
 }
diff --git a/test/tint/builtins/gen/var/reflect/05357e.wgsl b/test/tint/builtins/gen/var/reflect/05357e.wgsl
index 4eca0e9..1dbb9ec 100644
--- a/test/tint/builtins/gen/var/reflect/05357e.wgsl
+++ b/test/tint/builtins/gen/var/reflect/05357e.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = reflect(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reflect_05357e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reflect_05357e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reflect_05357e();
 }
diff --git a/test/tint/builtins/gen/var/reflect/05357e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/reflect/05357e.wgsl.expected.wgsl
index 2172c63..8ce561c 100644
--- a/test/tint/builtins/gen/var/reflect/05357e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/reflect/05357e.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<f32> = reflect(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reflect_05357e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reflect_05357e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reflect_05357e();
 }
diff --git a/test/tint/builtins/gen/var/reflect/b61e10.wgsl b/test/tint/builtins/gen/var/reflect/b61e10.wgsl
index e522b9e..0bf2128 100644
--- a/test/tint/builtins/gen/var/reflect/b61e10.wgsl
+++ b/test/tint/builtins/gen/var/reflect/b61e10.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<f32> = reflect(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reflect_b61e10();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reflect_b61e10();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reflect_b61e10();
 }
diff --git a/test/tint/builtins/gen/var/reflect/b61e10.wgsl.expected.wgsl b/test/tint/builtins/gen/var/reflect/b61e10.wgsl.expected.wgsl
index 3fca9bb..ec8317c 100644
--- a/test/tint/builtins/gen/var/reflect/b61e10.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/reflect/b61e10.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<f32> = reflect(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reflect_b61e10();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reflect_b61e10();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reflect_b61e10();
 }
diff --git a/test/tint/builtins/gen/var/reflect/f47fdb.wgsl b/test/tint/builtins/gen/var/reflect/f47fdb.wgsl
index 2bc5f6c..5aabef0 100644
--- a/test/tint/builtins/gen/var/reflect/f47fdb.wgsl
+++ b/test/tint/builtins/gen/var/reflect/f47fdb.wgsl
@@ -30,18 +30,18 @@
   var res: vec3<f32> = reflect(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reflect_f47fdb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reflect_f47fdb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reflect_f47fdb();
 }
diff --git a/test/tint/builtins/gen/var/reflect/f47fdb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/reflect/f47fdb.wgsl.expected.wgsl
index 57b54ed..e1ae8d1 100644
--- a/test/tint/builtins/gen/var/reflect/f47fdb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/reflect/f47fdb.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<f32> = reflect(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reflect_f47fdb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reflect_f47fdb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reflect_f47fdb();
 }
diff --git a/test/tint/builtins/gen/var/refract/7e02e6.wgsl b/test/tint/builtins/gen/var/refract/7e02e6.wgsl
index 0779089..9a44084 100644
--- a/test/tint/builtins/gen/var/refract/7e02e6.wgsl
+++ b/test/tint/builtins/gen/var/refract/7e02e6.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = refract(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   refract_7e02e6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   refract_7e02e6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   refract_7e02e6();
 }
diff --git a/test/tint/builtins/gen/var/refract/7e02e6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/refract/7e02e6.wgsl.expected.wgsl
index 747e992..178acc7 100644
--- a/test/tint/builtins/gen/var/refract/7e02e6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/refract/7e02e6.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<f32> = refract(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   refract_7e02e6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   refract_7e02e6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   refract_7e02e6();
 }
diff --git a/test/tint/builtins/gen/var/refract/cbc1d2.wgsl b/test/tint/builtins/gen/var/refract/cbc1d2.wgsl
index e84c072..e21cde5 100644
--- a/test/tint/builtins/gen/var/refract/cbc1d2.wgsl
+++ b/test/tint/builtins/gen/var/refract/cbc1d2.wgsl
@@ -31,18 +31,18 @@
   var res: vec3<f32> = refract(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   refract_cbc1d2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   refract_cbc1d2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   refract_cbc1d2();
 }
diff --git a/test/tint/builtins/gen/var/refract/cbc1d2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/refract/cbc1d2.wgsl.expected.wgsl
index d71d172..00ad761 100644
--- a/test/tint/builtins/gen/var/refract/cbc1d2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/refract/cbc1d2.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<f32> = refract(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   refract_cbc1d2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   refract_cbc1d2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   refract_cbc1d2();
 }
diff --git a/test/tint/builtins/gen/var/refract/cd905f.wgsl b/test/tint/builtins/gen/var/refract/cd905f.wgsl
index 50675c7..a70ed45 100644
--- a/test/tint/builtins/gen/var/refract/cd905f.wgsl
+++ b/test/tint/builtins/gen/var/refract/cd905f.wgsl
@@ -31,18 +31,18 @@
   var res: vec2<f32> = refract(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   refract_cd905f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   refract_cd905f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   refract_cd905f();
 }
diff --git a/test/tint/builtins/gen/var/refract/cd905f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/refract/cd905f.wgsl.expected.wgsl
index 34cfbce..3bd2166 100644
--- a/test/tint/builtins/gen/var/refract/cd905f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/refract/cd905f.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<f32> = refract(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   refract_cd905f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   refract_cd905f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   refract_cd905f();
 }
diff --git a/test/tint/builtins/gen/var/reverseBits/222177.wgsl b/test/tint/builtins/gen/var/reverseBits/222177.wgsl
index 7d2ca95..c0614a5 100644
--- a/test/tint/builtins/gen/var/reverseBits/222177.wgsl
+++ b/test/tint/builtins/gen/var/reverseBits/222177.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = reverseBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_222177();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_222177();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_222177();
 }
diff --git a/test/tint/builtins/gen/var/reverseBits/222177.wgsl.expected.wgsl b/test/tint/builtins/gen/var/reverseBits/222177.wgsl.expected.wgsl
index 40ebf3c..b48e837 100644
--- a/test/tint/builtins/gen/var/reverseBits/222177.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/reverseBits/222177.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<i32> = reverseBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_222177();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_222177();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_222177();
 }
diff --git a/test/tint/builtins/gen/var/reverseBits/35fea9.wgsl b/test/tint/builtins/gen/var/reverseBits/35fea9.wgsl
index 93b2e48..52f0ecd 100644
--- a/test/tint/builtins/gen/var/reverseBits/35fea9.wgsl
+++ b/test/tint/builtins/gen/var/reverseBits/35fea9.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<u32> = reverseBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_35fea9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_35fea9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_35fea9();
 }
diff --git a/test/tint/builtins/gen/var/reverseBits/35fea9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/reverseBits/35fea9.wgsl.expected.wgsl
index b158c68..001c341 100644
--- a/test/tint/builtins/gen/var/reverseBits/35fea9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/reverseBits/35fea9.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<u32> = reverseBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_35fea9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_35fea9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_35fea9();
 }
diff --git a/test/tint/builtins/gen/var/reverseBits/4dbd6f.wgsl b/test/tint/builtins/gen/var/reverseBits/4dbd6f.wgsl
index 5ab35ad..180c3cb 100644
--- a/test/tint/builtins/gen/var/reverseBits/4dbd6f.wgsl
+++ b/test/tint/builtins/gen/var/reverseBits/4dbd6f.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<i32> = reverseBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_4dbd6f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_4dbd6f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_4dbd6f();
 }
diff --git a/test/tint/builtins/gen/var/reverseBits/4dbd6f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/reverseBits/4dbd6f.wgsl.expected.wgsl
index fa97ef8..3c0f6d8 100644
--- a/test/tint/builtins/gen/var/reverseBits/4dbd6f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/reverseBits/4dbd6f.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<i32> = reverseBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_4dbd6f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_4dbd6f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_4dbd6f();
 }
diff --git a/test/tint/builtins/gen/var/reverseBits/7c4269.wgsl b/test/tint/builtins/gen/var/reverseBits/7c4269.wgsl
index 9ea20f0..dbadffb 100644
--- a/test/tint/builtins/gen/var/reverseBits/7c4269.wgsl
+++ b/test/tint/builtins/gen/var/reverseBits/7c4269.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = reverseBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_7c4269();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_7c4269();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_7c4269();
 }
diff --git a/test/tint/builtins/gen/var/reverseBits/7c4269.wgsl.expected.wgsl b/test/tint/builtins/gen/var/reverseBits/7c4269.wgsl.expected.wgsl
index fdaa264..d5c8ac1 100644
--- a/test/tint/builtins/gen/var/reverseBits/7c4269.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/reverseBits/7c4269.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : i32 = reverseBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_7c4269();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_7c4269();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_7c4269();
 }
diff --git a/test/tint/builtins/gen/var/reverseBits/a6ccd4.wgsl b/test/tint/builtins/gen/var/reverseBits/a6ccd4.wgsl
index 507b520..6f3d2cb 100644
--- a/test/tint/builtins/gen/var/reverseBits/a6ccd4.wgsl
+++ b/test/tint/builtins/gen/var/reverseBits/a6ccd4.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<u32> = reverseBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_a6ccd4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_a6ccd4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_a6ccd4();
 }
diff --git a/test/tint/builtins/gen/var/reverseBits/a6ccd4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/reverseBits/a6ccd4.wgsl.expected.wgsl
index 97f5879..9dc94d0 100644
--- a/test/tint/builtins/gen/var/reverseBits/a6ccd4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/reverseBits/a6ccd4.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<u32> = reverseBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_a6ccd4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_a6ccd4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_a6ccd4();
 }
diff --git a/test/tint/builtins/gen/var/reverseBits/c21bc1.wgsl b/test/tint/builtins/gen/var/reverseBits/c21bc1.wgsl
index 8f348e7..13569e6 100644
--- a/test/tint/builtins/gen/var/reverseBits/c21bc1.wgsl
+++ b/test/tint/builtins/gen/var/reverseBits/c21bc1.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = reverseBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_c21bc1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_c21bc1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_c21bc1();
 }
diff --git a/test/tint/builtins/gen/var/reverseBits/c21bc1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/reverseBits/c21bc1.wgsl.expected.wgsl
index fe4a6c3..7f102d6 100644
--- a/test/tint/builtins/gen/var/reverseBits/c21bc1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/reverseBits/c21bc1.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<i32> = reverseBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_c21bc1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_c21bc1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_c21bc1();
 }
diff --git a/test/tint/builtins/gen/var/reverseBits/e1f4c1.wgsl b/test/tint/builtins/gen/var/reverseBits/e1f4c1.wgsl
index 5390408..52ad2b8 100644
--- a/test/tint/builtins/gen/var/reverseBits/e1f4c1.wgsl
+++ b/test/tint/builtins/gen/var/reverseBits/e1f4c1.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<u32> = reverseBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_e1f4c1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_e1f4c1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_e1f4c1();
 }
diff --git a/test/tint/builtins/gen/var/reverseBits/e1f4c1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/reverseBits/e1f4c1.wgsl.expected.wgsl
index c04788b..e0e0fc2 100644
--- a/test/tint/builtins/gen/var/reverseBits/e1f4c1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/reverseBits/e1f4c1.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<u32> = reverseBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_e1f4c1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_e1f4c1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_e1f4c1();
 }
diff --git a/test/tint/builtins/gen/var/reverseBits/e31adf.wgsl b/test/tint/builtins/gen/var/reverseBits/e31adf.wgsl
index e72facb..f799199 100644
--- a/test/tint/builtins/gen/var/reverseBits/e31adf.wgsl
+++ b/test/tint/builtins/gen/var/reverseBits/e31adf.wgsl
@@ -29,18 +29,18 @@
   var res: u32 = reverseBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_e31adf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_e31adf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_e31adf();
 }
diff --git a/test/tint/builtins/gen/var/reverseBits/e31adf.wgsl.expected.wgsl b/test/tint/builtins/gen/var/reverseBits/e31adf.wgsl.expected.wgsl
index 9d10536..7489031 100644
--- a/test/tint/builtins/gen/var/reverseBits/e31adf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/reverseBits/e31adf.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : u32 = reverseBits(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   reverseBits_e31adf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   reverseBits_e31adf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   reverseBits_e31adf();
 }
diff --git a/test/tint/builtins/gen/var/round/106c0b.wgsl b/test/tint/builtins/gen/var/round/106c0b.wgsl
index 7be10c2..cbc3c57 100644
--- a/test/tint/builtins/gen/var/round/106c0b.wgsl
+++ b/test/tint/builtins/gen/var/round/106c0b.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = round(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   round_106c0b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   round_106c0b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   round_106c0b();
 }
diff --git a/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.wgsl
index a211720..8aa4fc6 100644
--- a/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = round(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   round_106c0b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   round_106c0b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   round_106c0b();
 }
diff --git a/test/tint/builtins/gen/var/round/1c7897.wgsl b/test/tint/builtins/gen/var/round/1c7897.wgsl
index 02bb2d6..1edba98 100644
--- a/test/tint/builtins/gen/var/round/1c7897.wgsl
+++ b/test/tint/builtins/gen/var/round/1c7897.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = round(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   round_1c7897();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   round_1c7897();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   round_1c7897();
 }
diff --git a/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.wgsl b/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.wgsl
index 07ae079..154e42c 100644
--- a/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = round(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   round_1c7897();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   round_1c7897();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   round_1c7897();
 }
diff --git a/test/tint/builtins/gen/var/round/52c84d.wgsl b/test/tint/builtins/gen/var/round/52c84d.wgsl
index 49ecbee..e71edec 100644
--- a/test/tint/builtins/gen/var/round/52c84d.wgsl
+++ b/test/tint/builtins/gen/var/round/52c84d.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = round(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   round_52c84d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   round_52c84d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   round_52c84d();
 }
diff --git a/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.wgsl
index b92ade6..ce72ed6 100644
--- a/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = round(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   round_52c84d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   round_52c84d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   round_52c84d();
 }
diff --git a/test/tint/builtins/gen/var/round/9edc38.wgsl b/test/tint/builtins/gen/var/round/9edc38.wgsl
index 1c7f2e0..ac5e283 100644
--- a/test/tint/builtins/gen/var/round/9edc38.wgsl
+++ b/test/tint/builtins/gen/var/round/9edc38.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = round(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   round_9edc38();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   round_9edc38();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   round_9edc38();
 }
diff --git a/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.wgsl b/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.wgsl
index b4d0e01..a34918b 100644
--- a/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = round(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   round_9edc38();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   round_9edc38();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   round_9edc38();
 }
diff --git a/test/tint/builtins/gen/var/select/00b848.wgsl b/test/tint/builtins/gen/var/select/00b848.wgsl
index a6fbecb..3343d2d 100644
--- a/test/tint/builtins/gen/var/select/00b848.wgsl
+++ b/test/tint/builtins/gen/var/select/00b848.wgsl
@@ -31,18 +31,18 @@
   var res: vec2<i32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_00b848();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_00b848();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_00b848();
 }
diff --git a/test/tint/builtins/gen/var/select/00b848.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/00b848.wgsl.expected.wgsl
index f23e500..b2996a3 100644
--- a/test/tint/builtins/gen/var/select/00b848.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/00b848.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_00b848();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_00b848();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_00b848();
 }
diff --git a/test/tint/builtins/gen/var/select/01e2cd.wgsl b/test/tint/builtins/gen/var/select/01e2cd.wgsl
index e33b451..1a63dcf 100644
--- a/test/tint/builtins/gen/var/select/01e2cd.wgsl
+++ b/test/tint/builtins/gen/var/select/01e2cd.wgsl
@@ -31,18 +31,18 @@
   var res: vec3<i32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_01e2cd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_01e2cd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_01e2cd();
 }
diff --git a/test/tint/builtins/gen/var/select/01e2cd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/01e2cd.wgsl.expected.wgsl
index 9e110da..b12ad1b 100644
--- a/test/tint/builtins/gen/var/select/01e2cd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/01e2cd.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<i32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_01e2cd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_01e2cd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_01e2cd();
 }
diff --git a/test/tint/builtins/gen/var/select/087ea4.wgsl b/test/tint/builtins/gen/var/select/087ea4.wgsl
index a3c3dd7..77ce636 100644
--- a/test/tint/builtins/gen/var/select/087ea4.wgsl
+++ b/test/tint/builtins/gen/var/select/087ea4.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<u32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_087ea4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_087ea4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_087ea4();
 }
diff --git a/test/tint/builtins/gen/var/select/087ea4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/087ea4.wgsl.expected.wgsl
index c868bbf..6ebe328 100644
--- a/test/tint/builtins/gen/var/select/087ea4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/087ea4.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<u32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_087ea4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_087ea4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_087ea4();
 }
diff --git a/test/tint/builtins/gen/var/select/1e960b.wgsl b/test/tint/builtins/gen/var/select/1e960b.wgsl
index 9f66b85..d03d66b 100644
--- a/test/tint/builtins/gen/var/select/1e960b.wgsl
+++ b/test/tint/builtins/gen/var/select/1e960b.wgsl
@@ -31,18 +31,18 @@
   var res: vec2<u32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_1e960b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_1e960b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_1e960b();
 }
diff --git a/test/tint/builtins/gen/var/select/1e960b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/1e960b.wgsl.expected.wgsl
index 74b9532..965431e 100644
--- a/test/tint/builtins/gen/var/select/1e960b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/1e960b.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<u32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_1e960b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_1e960b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_1e960b();
 }
diff --git a/test/tint/builtins/gen/var/select/266aff.wgsl b/test/tint/builtins/gen/var/select/266aff.wgsl
index 7630dfb..586e332 100644
--- a/test/tint/builtins/gen/var/select/266aff.wgsl
+++ b/test/tint/builtins/gen/var/select/266aff.wgsl
@@ -31,18 +31,18 @@
   var res: vec2<f32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_266aff();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_266aff();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_266aff();
 }
diff --git a/test/tint/builtins/gen/var/select/266aff.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/266aff.wgsl.expected.wgsl
index 0236878..41aedd4 100644
--- a/test/tint/builtins/gen/var/select/266aff.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/266aff.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<f32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_266aff();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_266aff();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_266aff();
 }
diff --git a/test/tint/builtins/gen/var/select/28a27e.wgsl b/test/tint/builtins/gen/var/select/28a27e.wgsl
index f9ae32b..96d116d 100644
--- a/test/tint/builtins/gen/var/select/28a27e.wgsl
+++ b/test/tint/builtins/gen/var/select/28a27e.wgsl
@@ -31,18 +31,18 @@
   var res: vec3<u32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_28a27e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_28a27e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_28a27e();
 }
diff --git a/test/tint/builtins/gen/var/select/28a27e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/28a27e.wgsl.expected.wgsl
index 2aa730b..be10bf8 100644
--- a/test/tint/builtins/gen/var/select/28a27e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/28a27e.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<u32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_28a27e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_28a27e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_28a27e();
 }
diff --git a/test/tint/builtins/gen/var/select/3c25ce.wgsl b/test/tint/builtins/gen/var/select/3c25ce.wgsl
index 913cb41..dba9560 100644
--- a/test/tint/builtins/gen/var/select/3c25ce.wgsl
+++ b/test/tint/builtins/gen/var/select/3c25ce.wgsl
@@ -31,18 +31,18 @@
   var res: vec3<bool> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_3c25ce();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_3c25ce();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_3c25ce();
 }
diff --git a/test/tint/builtins/gen/var/select/3c25ce.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/3c25ce.wgsl.expected.wgsl
index 396fac0..826c33c 100644
--- a/test/tint/builtins/gen/var/select/3c25ce.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/3c25ce.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<bool> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_3c25ce();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_3c25ce();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_3c25ce();
 }
diff --git a/test/tint/builtins/gen/var/select/416e14.wgsl b/test/tint/builtins/gen/var/select/416e14.wgsl
index 9e9c759..8c31750 100644
--- a/test/tint/builtins/gen/var/select/416e14.wgsl
+++ b/test/tint/builtins/gen/var/select/416e14.wgsl
@@ -31,18 +31,18 @@
   var res: f32 = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_416e14();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_416e14();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_416e14();
 }
diff --git a/test/tint/builtins/gen/var/select/416e14.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/416e14.wgsl.expected.wgsl
index d35a4c2..52fda76 100644
--- a/test/tint/builtins/gen/var/select/416e14.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/416e14.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : f32 = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_416e14();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_416e14();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_416e14();
 }
diff --git a/test/tint/builtins/gen/var/select/51b047.wgsl b/test/tint/builtins/gen/var/select/51b047.wgsl
index aca2728..f04a251 100644
--- a/test/tint/builtins/gen/var/select/51b047.wgsl
+++ b/test/tint/builtins/gen/var/select/51b047.wgsl
@@ -31,18 +31,18 @@
   var res: vec2<u32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_51b047();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_51b047();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_51b047();
 }
diff --git a/test/tint/builtins/gen/var/select/51b047.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/51b047.wgsl.expected.wgsl
index dd440a8..54400b4 100644
--- a/test/tint/builtins/gen/var/select/51b047.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/51b047.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<u32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_51b047();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_51b047();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_51b047();
 }
diff --git a/test/tint/builtins/gen/var/select/713567.wgsl b/test/tint/builtins/gen/var/select/713567.wgsl
index f638664..4f8d50f 100644
--- a/test/tint/builtins/gen/var/select/713567.wgsl
+++ b/test/tint/builtins/gen/var/select/713567.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_713567();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_713567();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_713567();
 }
diff --git a/test/tint/builtins/gen/var/select/713567.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/713567.wgsl.expected.wgsl
index 1bc9fb6..e201d4c 100644
--- a/test/tint/builtins/gen/var/select/713567.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/713567.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<f32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_713567();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_713567();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_713567();
 }
diff --git a/test/tint/builtins/gen/var/select/78be5f.wgsl b/test/tint/builtins/gen/var/select/78be5f.wgsl
index 427d23e..a45c8dd 100644
--- a/test/tint/builtins/gen/var/select/78be5f.wgsl
+++ b/test/tint/builtins/gen/var/select/78be5f.wgsl
@@ -31,18 +31,18 @@
   var res: vec3<f32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_78be5f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_78be5f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_78be5f();
 }
diff --git a/test/tint/builtins/gen/var/select/78be5f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/78be5f.wgsl.expected.wgsl
index 71f76b0..e7f0a3b 100644
--- a/test/tint/builtins/gen/var/select/78be5f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/78be5f.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<f32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_78be5f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_78be5f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_78be5f();
 }
diff --git a/test/tint/builtins/gen/var/select/80a9a9.wgsl b/test/tint/builtins/gen/var/select/80a9a9.wgsl
index cffeddc..b2d1345 100644
--- a/test/tint/builtins/gen/var/select/80a9a9.wgsl
+++ b/test/tint/builtins/gen/var/select/80a9a9.wgsl
@@ -31,18 +31,18 @@
   var res: vec3<bool> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_80a9a9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_80a9a9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_80a9a9();
 }
diff --git a/test/tint/builtins/gen/var/select/80a9a9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/80a9a9.wgsl.expected.wgsl
index a49c335..d11594c 100644
--- a/test/tint/builtins/gen/var/select/80a9a9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/80a9a9.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<bool> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_80a9a9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_80a9a9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_80a9a9();
 }
diff --git a/test/tint/builtins/gen/var/select/8fa62c.wgsl b/test/tint/builtins/gen/var/select/8fa62c.wgsl
index c222014..963d422 100644
--- a/test/tint/builtins/gen/var/select/8fa62c.wgsl
+++ b/test/tint/builtins/gen/var/select/8fa62c.wgsl
@@ -31,18 +31,18 @@
   var res: vec3<i32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_8fa62c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_8fa62c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_8fa62c();
 }
diff --git a/test/tint/builtins/gen/var/select/8fa62c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/8fa62c.wgsl.expected.wgsl
index 3cd2a56..fbd6f2e 100644
--- a/test/tint/builtins/gen/var/select/8fa62c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/8fa62c.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<i32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_8fa62c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_8fa62c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_8fa62c();
 }
diff --git a/test/tint/builtins/gen/var/select/99f883.wgsl b/test/tint/builtins/gen/var/select/99f883.wgsl
index 8b8549d..a1f0a38 100644
--- a/test/tint/builtins/gen/var/select/99f883.wgsl
+++ b/test/tint/builtins/gen/var/select/99f883.wgsl
@@ -31,18 +31,18 @@
   var res: u32 = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_99f883();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_99f883();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_99f883();
 }
diff --git a/test/tint/builtins/gen/var/select/99f883.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/99f883.wgsl.expected.wgsl
index c92d6c3..4f6a8a1 100644
--- a/test/tint/builtins/gen/var/select/99f883.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/99f883.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : u32 = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_99f883();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_99f883();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_99f883();
 }
diff --git a/test/tint/builtins/gen/var/select/a2860e.wgsl b/test/tint/builtins/gen/var/select/a2860e.wgsl
index 18b2545..525e772 100644
--- a/test/tint/builtins/gen/var/select/a2860e.wgsl
+++ b/test/tint/builtins/gen/var/select/a2860e.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<i32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_a2860e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_a2860e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_a2860e();
 }
diff --git a/test/tint/builtins/gen/var/select/a2860e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/a2860e.wgsl.expected.wgsl
index c665d80..45ee0c2 100644
--- a/test/tint/builtins/gen/var/select/a2860e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/a2860e.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<i32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_a2860e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_a2860e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_a2860e();
 }
diff --git a/test/tint/builtins/gen/var/select/ab069f.wgsl b/test/tint/builtins/gen/var/select/ab069f.wgsl
index 0defb64..8749b67 100644
--- a/test/tint/builtins/gen/var/select/ab069f.wgsl
+++ b/test/tint/builtins/gen/var/select/ab069f.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<i32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_ab069f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_ab069f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_ab069f();
 }
diff --git a/test/tint/builtins/gen/var/select/ab069f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/ab069f.wgsl.expected.wgsl
index c3c395f..39cc2ef 100644
--- a/test/tint/builtins/gen/var/select/ab069f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/ab069f.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<i32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_ab069f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_ab069f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_ab069f();
 }
diff --git a/test/tint/builtins/gen/var/select/b04721.wgsl b/test/tint/builtins/gen/var/select/b04721.wgsl
index 21b2378..8acf598 100644
--- a/test/tint/builtins/gen/var/select/b04721.wgsl
+++ b/test/tint/builtins/gen/var/select/b04721.wgsl
@@ -31,18 +31,18 @@
   var res: vec3<u32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_b04721();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_b04721();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_b04721();
 }
diff --git a/test/tint/builtins/gen/var/select/b04721.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/b04721.wgsl.expected.wgsl
index 5f57eca..a7779ac 100644
--- a/test/tint/builtins/gen/var/select/b04721.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/b04721.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<u32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_b04721();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_b04721();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_b04721();
 }
diff --git a/test/tint/builtins/gen/var/select/bb447f.wgsl b/test/tint/builtins/gen/var/select/bb447f.wgsl
index 0a966ab..5e36c81 100644
--- a/test/tint/builtins/gen/var/select/bb447f.wgsl
+++ b/test/tint/builtins/gen/var/select/bb447f.wgsl
@@ -31,18 +31,18 @@
   var res: vec2<i32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_bb447f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_bb447f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_bb447f();
 }
diff --git a/test/tint/builtins/gen/var/select/bb447f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/bb447f.wgsl.expected.wgsl
index 78571c1..4bb3be7 100644
--- a/test/tint/builtins/gen/var/select/bb447f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/bb447f.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_bb447f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_bb447f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_bb447f();
 }
diff --git a/test/tint/builtins/gen/var/select/bb8aae.wgsl b/test/tint/builtins/gen/var/select/bb8aae.wgsl
index ca9c182..c18509c 100644
--- a/test/tint/builtins/gen/var/select/bb8aae.wgsl
+++ b/test/tint/builtins/gen/var/select/bb8aae.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_bb8aae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_bb8aae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_bb8aae();
 }
diff --git a/test/tint/builtins/gen/var/select/bb8aae.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/bb8aae.wgsl.expected.wgsl
index 0ee6a28..17d904d 100644
--- a/test/tint/builtins/gen/var/select/bb8aae.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/bb8aae.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<f32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_bb8aae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_bb8aae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_bb8aae();
 }
diff --git a/test/tint/builtins/gen/var/select/bf3d29.wgsl b/test/tint/builtins/gen/var/select/bf3d29.wgsl
index d778c46..fd33a8e 100644
--- a/test/tint/builtins/gen/var/select/bf3d29.wgsl
+++ b/test/tint/builtins/gen/var/select/bf3d29.wgsl
@@ -31,18 +31,18 @@
   var res: vec2<f32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_bf3d29();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_bf3d29();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_bf3d29();
 }
diff --git a/test/tint/builtins/gen/var/select/bf3d29.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/bf3d29.wgsl.expected.wgsl
index e058445..5cbeae7 100644
--- a/test/tint/builtins/gen/var/select/bf3d29.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/bf3d29.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<f32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_bf3d29();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_bf3d29();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_bf3d29();
 }
diff --git a/test/tint/builtins/gen/var/select/c31f9e.wgsl b/test/tint/builtins/gen/var/select/c31f9e.wgsl
index 555869b..999888e 100644
--- a/test/tint/builtins/gen/var/select/c31f9e.wgsl
+++ b/test/tint/builtins/gen/var/select/c31f9e.wgsl
@@ -31,18 +31,18 @@
   var res: bool = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_c31f9e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_c31f9e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_c31f9e();
 }
diff --git a/test/tint/builtins/gen/var/select/c31f9e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/c31f9e.wgsl.expected.wgsl
index 1e57746..785cf8d 100644
--- a/test/tint/builtins/gen/var/select/c31f9e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/c31f9e.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : bool = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_c31f9e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_c31f9e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_c31f9e();
 }
diff --git a/test/tint/builtins/gen/var/select/c41bd1.wgsl b/test/tint/builtins/gen/var/select/c41bd1.wgsl
index 64817eb..42550cb 100644
--- a/test/tint/builtins/gen/var/select/c41bd1.wgsl
+++ b/test/tint/builtins/gen/var/select/c41bd1.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<bool> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_c41bd1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_c41bd1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_c41bd1();
 }
diff --git a/test/tint/builtins/gen/var/select/c41bd1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/c41bd1.wgsl.expected.wgsl
index 68857ad..bdf0644 100644
--- a/test/tint/builtins/gen/var/select/c41bd1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/c41bd1.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<bool> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_c41bd1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_c41bd1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_c41bd1();
 }
diff --git a/test/tint/builtins/gen/var/select/c4a4ef.wgsl b/test/tint/builtins/gen/var/select/c4a4ef.wgsl
index a81e6df..f21d6ca 100644
--- a/test/tint/builtins/gen/var/select/c4a4ef.wgsl
+++ b/test/tint/builtins/gen/var/select/c4a4ef.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<u32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_c4a4ef();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_c4a4ef();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_c4a4ef();
 }
diff --git a/test/tint/builtins/gen/var/select/c4a4ef.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/c4a4ef.wgsl.expected.wgsl
index 843cfc4..73011bc 100644
--- a/test/tint/builtins/gen/var/select/c4a4ef.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/c4a4ef.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<u32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_c4a4ef();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_c4a4ef();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_c4a4ef();
 }
diff --git a/test/tint/builtins/gen/var/select/cb9301.wgsl b/test/tint/builtins/gen/var/select/cb9301.wgsl
index 0adf8d7..c7bfb54 100644
--- a/test/tint/builtins/gen/var/select/cb9301.wgsl
+++ b/test/tint/builtins/gen/var/select/cb9301.wgsl
@@ -31,18 +31,18 @@
   var res: vec2<bool> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_cb9301();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_cb9301();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_cb9301();
 }
diff --git a/test/tint/builtins/gen/var/select/cb9301.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/cb9301.wgsl.expected.wgsl
index aa7f2a3..ea47bdf 100644
--- a/test/tint/builtins/gen/var/select/cb9301.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/cb9301.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<bool> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_cb9301();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_cb9301();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_cb9301();
 }
diff --git a/test/tint/builtins/gen/var/select/e3e028.wgsl b/test/tint/builtins/gen/var/select/e3e028.wgsl
index f0ed31a..49f534e 100644
--- a/test/tint/builtins/gen/var/select/e3e028.wgsl
+++ b/test/tint/builtins/gen/var/select/e3e028.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<bool> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_e3e028();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_e3e028();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_e3e028();
 }
diff --git a/test/tint/builtins/gen/var/select/e3e028.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/e3e028.wgsl.expected.wgsl
index fa2243a..f7aa278 100644
--- a/test/tint/builtins/gen/var/select/e3e028.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/e3e028.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<bool> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_e3e028();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_e3e028();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_e3e028();
 }
diff --git a/test/tint/builtins/gen/var/select/ebfea2.wgsl b/test/tint/builtins/gen/var/select/ebfea2.wgsl
index 8ca2585..5af3aa5 100644
--- a/test/tint/builtins/gen/var/select/ebfea2.wgsl
+++ b/test/tint/builtins/gen/var/select/ebfea2.wgsl
@@ -31,18 +31,18 @@
   var res: vec3<f32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_ebfea2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_ebfea2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_ebfea2();
 }
diff --git a/test/tint/builtins/gen/var/select/ebfea2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/ebfea2.wgsl.expected.wgsl
index e6ab17b..5c5fef5 100644
--- a/test/tint/builtins/gen/var/select/ebfea2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/ebfea2.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<f32> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_ebfea2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_ebfea2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_ebfea2();
 }
diff --git a/test/tint/builtins/gen/var/select/ed8a15.wgsl b/test/tint/builtins/gen/var/select/ed8a15.wgsl
index 450eac3..49aae0a 100644
--- a/test/tint/builtins/gen/var/select/ed8a15.wgsl
+++ b/test/tint/builtins/gen/var/select/ed8a15.wgsl
@@ -31,18 +31,18 @@
   var res: i32 = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_ed8a15();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_ed8a15();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_ed8a15();
 }
diff --git a/test/tint/builtins/gen/var/select/ed8a15.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/ed8a15.wgsl.expected.wgsl
index 7f1c4d1..65bbb98 100644
--- a/test/tint/builtins/gen/var/select/ed8a15.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/ed8a15.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : i32 = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_ed8a15();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_ed8a15();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_ed8a15();
 }
diff --git a/test/tint/builtins/gen/var/select/fb7e53.wgsl b/test/tint/builtins/gen/var/select/fb7e53.wgsl
index 14fc5b3..ee4dd96 100644
--- a/test/tint/builtins/gen/var/select/fb7e53.wgsl
+++ b/test/tint/builtins/gen/var/select/fb7e53.wgsl
@@ -31,18 +31,18 @@
   var res: vec2<bool> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_fb7e53();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_fb7e53();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_fb7e53();
 }
diff --git a/test/tint/builtins/gen/var/select/fb7e53.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/fb7e53.wgsl.expected.wgsl
index 125fabf..f7f0b18 100644
--- a/test/tint/builtins/gen/var/select/fb7e53.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/fb7e53.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<bool> = select(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   select_fb7e53();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   select_fb7e53();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   select_fb7e53();
 }
diff --git a/test/tint/builtins/gen/var/sign/159665.wgsl b/test/tint/builtins/gen/var/sign/159665.wgsl
index 9b02104..ab8e3d8 100644
--- a/test/tint/builtins/gen/var/sign/159665.wgsl
+++ b/test/tint/builtins/gen/var/sign/159665.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = sign(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_159665();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sign_159665();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sign_159665();
 }
diff --git a/test/tint/builtins/gen/var/sign/159665.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sign/159665.wgsl.expected.wgsl
index 139cee0..60bd474 100644
--- a/test/tint/builtins/gen/var/sign/159665.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sign/159665.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = sign(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_159665();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sign_159665();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sign_159665();
 }
diff --git a/test/tint/builtins/gen/var/sign/b8f634.wgsl b/test/tint/builtins/gen/var/sign/b8f634.wgsl
index f4473c6..c9d7756 100644
--- a/test/tint/builtins/gen/var/sign/b8f634.wgsl
+++ b/test/tint/builtins/gen/var/sign/b8f634.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = sign(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_b8f634();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sign_b8f634();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sign_b8f634();
 }
diff --git a/test/tint/builtins/gen/var/sign/b8f634.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sign/b8f634.wgsl.expected.wgsl
index cd37c6c..5450849 100644
--- a/test/tint/builtins/gen/var/sign/b8f634.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sign/b8f634.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = sign(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_b8f634();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sign_b8f634();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sign_b8f634();
 }
diff --git a/test/tint/builtins/gen/var/sign/d065d8.wgsl b/test/tint/builtins/gen/var/sign/d065d8.wgsl
index ad538d3..d38af2f 100644
--- a/test/tint/builtins/gen/var/sign/d065d8.wgsl
+++ b/test/tint/builtins/gen/var/sign/d065d8.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = sign(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_d065d8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sign_d065d8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sign_d065d8();
 }
diff --git a/test/tint/builtins/gen/var/sign/d065d8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sign/d065d8.wgsl.expected.wgsl
index 9b3d127..685db1e 100644
--- a/test/tint/builtins/gen/var/sign/d065d8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sign/d065d8.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = sign(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_d065d8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sign_d065d8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sign_d065d8();
 }
diff --git a/test/tint/builtins/gen/var/sign/dd790e.wgsl b/test/tint/builtins/gen/var/sign/dd790e.wgsl
index f381540..bb2c9cf 100644
--- a/test/tint/builtins/gen/var/sign/dd790e.wgsl
+++ b/test/tint/builtins/gen/var/sign/dd790e.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = sign(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_dd790e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sign_dd790e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sign_dd790e();
 }
diff --git a/test/tint/builtins/gen/var/sign/dd790e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sign/dd790e.wgsl.expected.wgsl
index b6b8bb2..ab2beee 100644
--- a/test/tint/builtins/gen/var/sign/dd790e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sign/dd790e.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = sign(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sign_dd790e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sign_dd790e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sign_dd790e();
 }
diff --git a/test/tint/builtins/gen/var/sin/01f241.wgsl b/test/tint/builtins/gen/var/sin/01f241.wgsl
index 533a83a..807d5ba 100644
--- a/test/tint/builtins/gen/var/sin/01f241.wgsl
+++ b/test/tint/builtins/gen/var/sin/01f241.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = sin(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_01f241();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sin_01f241();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sin_01f241();
 }
diff --git a/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.wgsl
index dac1cf6..e75c9e4 100644
--- a/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = sin(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_01f241();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sin_01f241();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sin_01f241();
 }
diff --git a/test/tint/builtins/gen/var/sin/4e3979.wgsl b/test/tint/builtins/gen/var/sin/4e3979.wgsl
index 5ae4b3d..6622071 100644
--- a/test/tint/builtins/gen/var/sin/4e3979.wgsl
+++ b/test/tint/builtins/gen/var/sin/4e3979.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = sin(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_4e3979();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sin_4e3979();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sin_4e3979();
 }
diff --git a/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.wgsl
index b588d0e..829c920 100644
--- a/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = sin(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_4e3979();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sin_4e3979();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sin_4e3979();
 }
diff --git a/test/tint/builtins/gen/var/sin/b78c91.wgsl b/test/tint/builtins/gen/var/sin/b78c91.wgsl
index 23a08d5..318b7e6 100644
--- a/test/tint/builtins/gen/var/sin/b78c91.wgsl
+++ b/test/tint/builtins/gen/var/sin/b78c91.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = sin(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_b78c91();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sin_b78c91();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sin_b78c91();
 }
diff --git a/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.wgsl
index b736ea8..9c031bc 100644
--- a/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = sin(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_b78c91();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sin_b78c91();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sin_b78c91();
 }
diff --git a/test/tint/builtins/gen/var/sin/fc8bc4.wgsl b/test/tint/builtins/gen/var/sin/fc8bc4.wgsl
index 66ad20a..139591c 100644
--- a/test/tint/builtins/gen/var/sin/fc8bc4.wgsl
+++ b/test/tint/builtins/gen/var/sin/fc8bc4.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = sin(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_fc8bc4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sin_fc8bc4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sin_fc8bc4();
 }
diff --git a/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.wgsl
index 0168f26..a032801 100644
--- a/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = sin(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sin_fc8bc4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sin_fc8bc4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sin_fc8bc4();
 }
diff --git a/test/tint/builtins/gen/var/sinh/445e33.wgsl b/test/tint/builtins/gen/var/sinh/445e33.wgsl
index aedfe3b..479f81d 100644
--- a/test/tint/builtins/gen/var/sinh/445e33.wgsl
+++ b/test/tint/builtins/gen/var/sinh/445e33.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = sinh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_445e33();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sinh_445e33();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sinh_445e33();
 }
diff --git a/test/tint/builtins/gen/var/sinh/445e33.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sinh/445e33.wgsl.expected.wgsl
index 5b1e2a6..2d59ce5 100644
--- a/test/tint/builtins/gen/var/sinh/445e33.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sinh/445e33.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = sinh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_445e33();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sinh_445e33();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sinh_445e33();
 }
diff --git a/test/tint/builtins/gen/var/sinh/7bb598.wgsl b/test/tint/builtins/gen/var/sinh/7bb598.wgsl
index 0075c04..9061496 100644
--- a/test/tint/builtins/gen/var/sinh/7bb598.wgsl
+++ b/test/tint/builtins/gen/var/sinh/7bb598.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = sinh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_7bb598();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sinh_7bb598();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sinh_7bb598();
 }
diff --git a/test/tint/builtins/gen/var/sinh/7bb598.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sinh/7bb598.wgsl.expected.wgsl
index 1d5be8c1..45a656c 100644
--- a/test/tint/builtins/gen/var/sinh/7bb598.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sinh/7bb598.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = sinh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_7bb598();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sinh_7bb598();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sinh_7bb598();
 }
diff --git a/test/tint/builtins/gen/var/sinh/b9860e.wgsl b/test/tint/builtins/gen/var/sinh/b9860e.wgsl
index 530c423..d01d522 100644
--- a/test/tint/builtins/gen/var/sinh/b9860e.wgsl
+++ b/test/tint/builtins/gen/var/sinh/b9860e.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = sinh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_b9860e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sinh_b9860e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sinh_b9860e();
 }
diff --git a/test/tint/builtins/gen/var/sinh/b9860e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sinh/b9860e.wgsl.expected.wgsl
index d1153b7..d7b13b8 100644
--- a/test/tint/builtins/gen/var/sinh/b9860e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sinh/b9860e.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = sinh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_b9860e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sinh_b9860e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sinh_b9860e();
 }
diff --git a/test/tint/builtins/gen/var/sinh/c9a5eb.wgsl b/test/tint/builtins/gen/var/sinh/c9a5eb.wgsl
index 94f38dd..d6dcd50 100644
--- a/test/tint/builtins/gen/var/sinh/c9a5eb.wgsl
+++ b/test/tint/builtins/gen/var/sinh/c9a5eb.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = sinh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_c9a5eb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sinh_c9a5eb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sinh_c9a5eb();
 }
diff --git a/test/tint/builtins/gen/var/sinh/c9a5eb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sinh/c9a5eb.wgsl.expected.wgsl
index bd5b007..b17650c 100644
--- a/test/tint/builtins/gen/var/sinh/c9a5eb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sinh/c9a5eb.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = sinh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sinh_c9a5eb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sinh_c9a5eb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sinh_c9a5eb();
 }
diff --git a/test/tint/builtins/gen/var/smoothstep/392c19.wgsl b/test/tint/builtins/gen/var/smoothstep/392c19.wgsl
index 3b00111..a197c30 100644
--- a/test/tint/builtins/gen/var/smoothstep/392c19.wgsl
+++ b/test/tint/builtins/gen/var/smoothstep/392c19.wgsl
@@ -31,18 +31,18 @@
   var res: vec2<f32> = smoothstep(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothstep_392c19();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothstep_392c19();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothstep_392c19();
 }
diff --git a/test/tint/builtins/gen/var/smoothstep/392c19.wgsl.expected.wgsl b/test/tint/builtins/gen/var/smoothstep/392c19.wgsl.expected.wgsl
index 06beb1c..4c013fa 100644
--- a/test/tint/builtins/gen/var/smoothstep/392c19.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/smoothstep/392c19.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<f32> = smoothstep(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothstep_392c19();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothstep_392c19();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothstep_392c19();
 }
diff --git a/test/tint/builtins/gen/var/smoothstep/40864c.wgsl b/test/tint/builtins/gen/var/smoothstep/40864c.wgsl
index 898791a..63fc2ee 100644
--- a/test/tint/builtins/gen/var/smoothstep/40864c.wgsl
+++ b/test/tint/builtins/gen/var/smoothstep/40864c.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = smoothstep(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothstep_40864c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothstep_40864c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothstep_40864c();
 }
diff --git a/test/tint/builtins/gen/var/smoothstep/40864c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/smoothstep/40864c.wgsl.expected.wgsl
index 6fbfc2a..6d517e6 100644
--- a/test/tint/builtins/gen/var/smoothstep/40864c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/smoothstep/40864c.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<f32> = smoothstep(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothstep_40864c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothstep_40864c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothstep_40864c();
 }
diff --git a/test/tint/builtins/gen/var/smoothstep/6c4975.wgsl b/test/tint/builtins/gen/var/smoothstep/6c4975.wgsl
index c8483cc4..07efb9f 100644
--- a/test/tint/builtins/gen/var/smoothstep/6c4975.wgsl
+++ b/test/tint/builtins/gen/var/smoothstep/6c4975.wgsl
@@ -31,18 +31,18 @@
   var res: f32 = smoothstep(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothstep_6c4975();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothstep_6c4975();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothstep_6c4975();
 }
diff --git a/test/tint/builtins/gen/var/smoothstep/6c4975.wgsl.expected.wgsl b/test/tint/builtins/gen/var/smoothstep/6c4975.wgsl.expected.wgsl
index ce4b2bc..26820f3 100644
--- a/test/tint/builtins/gen/var/smoothstep/6c4975.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/smoothstep/6c4975.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : f32 = smoothstep(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothstep_6c4975();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothstep_6c4975();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothstep_6c4975();
 }
diff --git a/test/tint/builtins/gen/var/smoothstep/aad1db.wgsl b/test/tint/builtins/gen/var/smoothstep/aad1db.wgsl
index 1efd98f..1aa6a12 100644
--- a/test/tint/builtins/gen/var/smoothstep/aad1db.wgsl
+++ b/test/tint/builtins/gen/var/smoothstep/aad1db.wgsl
@@ -31,18 +31,18 @@
   var res: vec3<f32> = smoothstep(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothstep_aad1db();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothstep_aad1db();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothstep_aad1db();
 }
diff --git a/test/tint/builtins/gen/var/smoothstep/aad1db.wgsl.expected.wgsl b/test/tint/builtins/gen/var/smoothstep/aad1db.wgsl.expected.wgsl
index 6b730b6..5da4d55 100644
--- a/test/tint/builtins/gen/var/smoothstep/aad1db.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/smoothstep/aad1db.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<f32> = smoothstep(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   smoothstep_aad1db();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   smoothstep_aad1db();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   smoothstep_aad1db();
 }
diff --git a/test/tint/builtins/gen/var/sqrt/20c74e.wgsl b/test/tint/builtins/gen/var/sqrt/20c74e.wgsl
index 86b17d6..8d81a83 100644
--- a/test/tint/builtins/gen/var/sqrt/20c74e.wgsl
+++ b/test/tint/builtins/gen/var/sqrt/20c74e.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = sqrt(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_20c74e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sqrt_20c74e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sqrt_20c74e();
 }
diff --git a/test/tint/builtins/gen/var/sqrt/20c74e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sqrt/20c74e.wgsl.expected.wgsl
index 84e54f4..719553f 100644
--- a/test/tint/builtins/gen/var/sqrt/20c74e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sqrt/20c74e.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = sqrt(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_20c74e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sqrt_20c74e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sqrt_20c74e();
 }
diff --git a/test/tint/builtins/gen/var/sqrt/8c7024.wgsl b/test/tint/builtins/gen/var/sqrt/8c7024.wgsl
index db384b7..34815b4 100644
--- a/test/tint/builtins/gen/var/sqrt/8c7024.wgsl
+++ b/test/tint/builtins/gen/var/sqrt/8c7024.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = sqrt(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_8c7024();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sqrt_8c7024();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sqrt_8c7024();
 }
diff --git a/test/tint/builtins/gen/var/sqrt/8c7024.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sqrt/8c7024.wgsl.expected.wgsl
index 4e6fba0..c77283a 100644
--- a/test/tint/builtins/gen/var/sqrt/8c7024.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sqrt/8c7024.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = sqrt(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_8c7024();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sqrt_8c7024();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sqrt_8c7024();
 }
diff --git a/test/tint/builtins/gen/var/sqrt/aa0d7a.wgsl b/test/tint/builtins/gen/var/sqrt/aa0d7a.wgsl
index 84a347d..442bbfa 100644
--- a/test/tint/builtins/gen/var/sqrt/aa0d7a.wgsl
+++ b/test/tint/builtins/gen/var/sqrt/aa0d7a.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = sqrt(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_aa0d7a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sqrt_aa0d7a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sqrt_aa0d7a();
 }
diff --git a/test/tint/builtins/gen/var/sqrt/aa0d7a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sqrt/aa0d7a.wgsl.expected.wgsl
index 7d32a51..66ed523 100644
--- a/test/tint/builtins/gen/var/sqrt/aa0d7a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sqrt/aa0d7a.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = sqrt(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_aa0d7a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sqrt_aa0d7a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sqrt_aa0d7a();
 }
diff --git a/test/tint/builtins/gen/var/sqrt/f8c59a.wgsl b/test/tint/builtins/gen/var/sqrt/f8c59a.wgsl
index 16827fb..09d5bf1 100644
--- a/test/tint/builtins/gen/var/sqrt/f8c59a.wgsl
+++ b/test/tint/builtins/gen/var/sqrt/f8c59a.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = sqrt(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_f8c59a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sqrt_f8c59a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sqrt_f8c59a();
 }
diff --git a/test/tint/builtins/gen/var/sqrt/f8c59a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sqrt/f8c59a.wgsl.expected.wgsl
index ff31cee..69ed096 100644
--- a/test/tint/builtins/gen/var/sqrt/f8c59a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sqrt/f8c59a.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = sqrt(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   sqrt_f8c59a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   sqrt_f8c59a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   sqrt_f8c59a();
 }
diff --git a/test/tint/builtins/gen/var/step/0b073b.wgsl b/test/tint/builtins/gen/var/step/0b073b.wgsl
index 815380d..cb16a17 100644
--- a/test/tint/builtins/gen/var/step/0b073b.wgsl
+++ b/test/tint/builtins/gen/var/step/0b073b.wgsl
@@ -30,18 +30,18 @@
   var res: f32 = step(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   step_0b073b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   step_0b073b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   step_0b073b();
 }
diff --git a/test/tint/builtins/gen/var/step/0b073b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/step/0b073b.wgsl.expected.wgsl
index 1c7f7e6..d40153b 100644
--- a/test/tint/builtins/gen/var/step/0b073b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/step/0b073b.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : f32 = step(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   step_0b073b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   step_0b073b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   step_0b073b();
 }
diff --git a/test/tint/builtins/gen/var/step/19accd.wgsl b/test/tint/builtins/gen/var/step/19accd.wgsl
index 57a56e2..e6a61d1 100644
--- a/test/tint/builtins/gen/var/step/19accd.wgsl
+++ b/test/tint/builtins/gen/var/step/19accd.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<f32> = step(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   step_19accd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   step_19accd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   step_19accd();
 }
diff --git a/test/tint/builtins/gen/var/step/19accd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/step/19accd.wgsl.expected.wgsl
index bd11983..a6cac46 100644
--- a/test/tint/builtins/gen/var/step/19accd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/step/19accd.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<f32> = step(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   step_19accd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   step_19accd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   step_19accd();
 }
diff --git a/test/tint/builtins/gen/var/step/334303.wgsl b/test/tint/builtins/gen/var/step/334303.wgsl
index 5bddc72..051309d 100644
--- a/test/tint/builtins/gen/var/step/334303.wgsl
+++ b/test/tint/builtins/gen/var/step/334303.wgsl
@@ -30,18 +30,18 @@
   var res: vec3<f32> = step(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   step_334303();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   step_334303();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   step_334303();
 }
diff --git a/test/tint/builtins/gen/var/step/334303.wgsl.expected.wgsl b/test/tint/builtins/gen/var/step/334303.wgsl.expected.wgsl
index 71667c3..f02a0fb 100644
--- a/test/tint/builtins/gen/var/step/334303.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/step/334303.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<f32> = step(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   step_334303();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   step_334303();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   step_334303();
 }
diff --git a/test/tint/builtins/gen/var/step/e2b337.wgsl b/test/tint/builtins/gen/var/step/e2b337.wgsl
index 1aa6b52..d53d426 100644
--- a/test/tint/builtins/gen/var/step/e2b337.wgsl
+++ b/test/tint/builtins/gen/var/step/e2b337.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = step(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   step_e2b337();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   step_e2b337();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   step_e2b337();
 }
diff --git a/test/tint/builtins/gen/var/step/e2b337.wgsl.expected.wgsl b/test/tint/builtins/gen/var/step/e2b337.wgsl.expected.wgsl
index 370bb45..7c051c2 100644
--- a/test/tint/builtins/gen/var/step/e2b337.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/step/e2b337.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec4<f32> = step(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   step_e2b337();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   step_e2b337();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   step_e2b337();
 }
diff --git a/test/tint/builtins/gen/var/storageBarrier/d87211.wgsl b/test/tint/builtins/gen/var/storageBarrier/d87211.wgsl
index 5306f6c..875d13f 100644
--- a/test/tint/builtins/gen/var/storageBarrier/d87211.wgsl
+++ b/test/tint/builtins/gen/var/storageBarrier/d87211.wgsl
@@ -28,7 +28,7 @@
   storageBarrier();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   storageBarrier_d87211();
 }
diff --git a/test/tint/builtins/gen/var/storageBarrier/d87211.wgsl.expected.wgsl b/test/tint/builtins/gen/var/storageBarrier/d87211.wgsl.expected.wgsl
index 4c87708..b929681 100644
--- a/test/tint/builtins/gen/var/storageBarrier/d87211.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/storageBarrier/d87211.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   storageBarrier();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   storageBarrier_d87211();
 }
diff --git a/test/tint/builtins/gen/var/tan/244e2a.wgsl b/test/tint/builtins/gen/var/tan/244e2a.wgsl
index a124869..b5c6427 100644
--- a/test/tint/builtins/gen/var/tan/244e2a.wgsl
+++ b/test/tint/builtins/gen/var/tan/244e2a.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = tan(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_244e2a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tan_244e2a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tan_244e2a();
 }
diff --git a/test/tint/builtins/gen/var/tan/244e2a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/tan/244e2a.wgsl.expected.wgsl
index 35bfc66..3db4284 100644
--- a/test/tint/builtins/gen/var/tan/244e2a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/tan/244e2a.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = tan(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_244e2a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tan_244e2a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tan_244e2a();
 }
diff --git a/test/tint/builtins/gen/var/tan/2f030e.wgsl b/test/tint/builtins/gen/var/tan/2f030e.wgsl
index 2cdb41f..a9b303b 100644
--- a/test/tint/builtins/gen/var/tan/2f030e.wgsl
+++ b/test/tint/builtins/gen/var/tan/2f030e.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = tan(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_2f030e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tan_2f030e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tan_2f030e();
 }
diff --git a/test/tint/builtins/gen/var/tan/2f030e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/tan/2f030e.wgsl.expected.wgsl
index fac4849..96993de 100644
--- a/test/tint/builtins/gen/var/tan/2f030e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/tan/2f030e.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = tan(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_2f030e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tan_2f030e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tan_2f030e();
 }
diff --git a/test/tint/builtins/gen/var/tan/7ea104.wgsl b/test/tint/builtins/gen/var/tan/7ea104.wgsl
index 220629c..b2afe5c 100644
--- a/test/tint/builtins/gen/var/tan/7ea104.wgsl
+++ b/test/tint/builtins/gen/var/tan/7ea104.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = tan(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_7ea104();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tan_7ea104();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tan_7ea104();
 }
diff --git a/test/tint/builtins/gen/var/tan/7ea104.wgsl.expected.wgsl b/test/tint/builtins/gen/var/tan/7ea104.wgsl.expected.wgsl
index dc85409..5e33833 100644
--- a/test/tint/builtins/gen/var/tan/7ea104.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/tan/7ea104.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = tan(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_7ea104();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tan_7ea104();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tan_7ea104();
 }
diff --git a/test/tint/builtins/gen/var/tan/8ce3e9.wgsl b/test/tint/builtins/gen/var/tan/8ce3e9.wgsl
index 8a415d1..e34a693 100644
--- a/test/tint/builtins/gen/var/tan/8ce3e9.wgsl
+++ b/test/tint/builtins/gen/var/tan/8ce3e9.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = tan(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_8ce3e9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tan_8ce3e9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tan_8ce3e9();
 }
diff --git a/test/tint/builtins/gen/var/tan/8ce3e9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/tan/8ce3e9.wgsl.expected.wgsl
index 4fef31c..2fe6fda 100644
--- a/test/tint/builtins/gen/var/tan/8ce3e9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/tan/8ce3e9.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = tan(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tan_8ce3e9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tan_8ce3e9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tan_8ce3e9();
 }
diff --git a/test/tint/builtins/gen/var/tanh/5663c5.wgsl b/test/tint/builtins/gen/var/tanh/5663c5.wgsl
index f136742..d061b31 100644
--- a/test/tint/builtins/gen/var/tanh/5663c5.wgsl
+++ b/test/tint/builtins/gen/var/tanh/5663c5.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = tanh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_5663c5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tanh_5663c5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tanh_5663c5();
 }
diff --git a/test/tint/builtins/gen/var/tanh/5663c5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/tanh/5663c5.wgsl.expected.wgsl
index 68b3e22..5e8ad97 100644
--- a/test/tint/builtins/gen/var/tanh/5663c5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/tanh/5663c5.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = tanh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_5663c5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tanh_5663c5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tanh_5663c5();
 }
diff --git a/test/tint/builtins/gen/var/tanh/5724b3.wgsl b/test/tint/builtins/gen/var/tanh/5724b3.wgsl
index a09c5dc..baacbd5 100644
--- a/test/tint/builtins/gen/var/tanh/5724b3.wgsl
+++ b/test/tint/builtins/gen/var/tanh/5724b3.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = tanh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_5724b3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tanh_5724b3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tanh_5724b3();
 }
diff --git a/test/tint/builtins/gen/var/tanh/5724b3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/tanh/5724b3.wgsl.expected.wgsl
index 4ba6039..2c6b8ac 100644
--- a/test/tint/builtins/gen/var/tanh/5724b3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/tanh/5724b3.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = tanh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_5724b3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tanh_5724b3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tanh_5724b3();
 }
diff --git a/test/tint/builtins/gen/var/tanh/9f9fb9.wgsl b/test/tint/builtins/gen/var/tanh/9f9fb9.wgsl
index 3ef2e2f..8ef2ace 100644
--- a/test/tint/builtins/gen/var/tanh/9f9fb9.wgsl
+++ b/test/tint/builtins/gen/var/tanh/9f9fb9.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = tanh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_9f9fb9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tanh_9f9fb9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tanh_9f9fb9();
 }
diff --git a/test/tint/builtins/gen/var/tanh/9f9fb9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/tanh/9f9fb9.wgsl.expected.wgsl
index 2cf169f..78a8aef 100644
--- a/test/tint/builtins/gen/var/tanh/9f9fb9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/tanh/9f9fb9.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = tanh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_9f9fb9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tanh_9f9fb9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tanh_9f9fb9();
 }
diff --git a/test/tint/builtins/gen/var/tanh/c15fdb.wgsl b/test/tint/builtins/gen/var/tanh/c15fdb.wgsl
index a0e4a5b..642ee64 100644
--- a/test/tint/builtins/gen/var/tanh/c15fdb.wgsl
+++ b/test/tint/builtins/gen/var/tanh/c15fdb.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = tanh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_c15fdb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tanh_c15fdb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tanh_c15fdb();
 }
diff --git a/test/tint/builtins/gen/var/tanh/c15fdb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/tanh/c15fdb.wgsl.expected.wgsl
index 0831fee..14b0c57 100644
--- a/test/tint/builtins/gen/var/tanh/c15fdb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/tanh/c15fdb.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = tanh(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   tanh_c15fdb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   tanh_c15fdb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   tanh_c15fdb();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/002b2a.wgsl b/test/tint/builtins/gen/var/textureDimensions/002b2a.wgsl
index b93721f..7d535e3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/002b2a.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/002b2a.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_002b2a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_002b2a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_002b2a();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/002b2a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/002b2a.wgsl.expected.wgsl
index a21a8c0..5f09068 100644
--- a/test/tint/builtins/gen/var/textureDimensions/002b2a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/002b2a.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_002b2a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_002b2a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_002b2a();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/012b82.wgsl b/test/tint/builtins/gen/var/textureDimensions/012b82.wgsl
index d011596..4ce156e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/012b82.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/012b82.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_012b82();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_012b82();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_012b82();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/012b82.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/012b82.wgsl.expected.wgsl
index 7ebcab6..216df4f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/012b82.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/012b82.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_012b82();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_012b82();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_012b82();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/08753d.wgsl b/test/tint/builtins/gen/var/textureDimensions/08753d.wgsl
index 4e071a0..c60871d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/08753d.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/08753d.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_08753d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_08753d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_08753d();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/08753d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/08753d.wgsl.expected.wgsl
index 45dce4b..443a678 100644
--- a/test/tint/builtins/gen/var/textureDimensions/08753d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/08753d.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_08753d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_08753d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_08753d();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0c4772.wgsl b/test/tint/builtins/gen/var/textureDimensions/0c4772.wgsl
index 3acce51..c23ca84 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0c4772.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0c4772.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0c4772();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0c4772();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0c4772();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0c4772.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/0c4772.wgsl.expected.wgsl
index dc5fc35..fc2907d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0c4772.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0c4772.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0c4772();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0c4772();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0c4772();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0cce40.wgsl b/test/tint/builtins/gen/var/textureDimensions/0cce40.wgsl
index 410f924..3c1678b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0cce40.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0cce40.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0cce40();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0cce40();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0cce40();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0cce40.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/0cce40.wgsl.expected.wgsl
index 04b0e24..5193665 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0cce40.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0cce40.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0cce40();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0cce40();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0cce40();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0cf2ff.wgsl b/test/tint/builtins/gen/var/textureDimensions/0cf2ff.wgsl
index 4ca0928..b19e1dd 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0cf2ff.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0cf2ff.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0cf2ff();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0cf2ff();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0cf2ff();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0cf2ff.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/0cf2ff.wgsl.expected.wgsl
index 36e3e61..a13b916 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0cf2ff.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0cf2ff.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0cf2ff();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0cf2ff();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0cf2ff();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0d8b7e.wgsl b/test/tint/builtins/gen/var/textureDimensions/0d8b7e.wgsl
index 6927776..d522067 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0d8b7e.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0d8b7e.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0d8b7e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0d8b7e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0d8b7e();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0d8b7e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/0d8b7e.wgsl.expected.wgsl
index b4a1350..2ce14ea 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0d8b7e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0d8b7e.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0d8b7e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0d8b7e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0d8b7e();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0e32ee.wgsl b/test/tint/builtins/gen/var/textureDimensions/0e32ee.wgsl
index 60d2aa3..f4e9278 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0e32ee.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0e32ee.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0e32ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0e32ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0e32ee();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0e32ee.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/0e32ee.wgsl.expected.wgsl
index 9f0e1d1..c037616 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0e32ee.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0e32ee.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0e32ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0e32ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0e32ee();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0f3c50.wgsl b/test/tint/builtins/gen/var/textureDimensions/0f3c50.wgsl
index c8010cb..55b704e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0f3c50.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0f3c50.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0f3c50();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0f3c50();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0f3c50();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0f3c50.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/0f3c50.wgsl.expected.wgsl
index 553f57e..45eee36 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0f3c50.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0f3c50.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_0f3c50();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_0f3c50();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_0f3c50();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1191a5.wgsl b/test/tint/builtins/gen/var/textureDimensions/1191a5.wgsl
index 172d049..b917515 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1191a5.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1191a5.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1191a5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1191a5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1191a5();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1191a5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/1191a5.wgsl.expected.wgsl
index 2131304..c0e1745 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1191a5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1191a5.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1191a5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1191a5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1191a5();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/12c9bb.wgsl b/test/tint/builtins/gen/var/textureDimensions/12c9bb.wgsl
index f235441..75c167a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/12c9bb.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/12c9bb.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_12c9bb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_12c9bb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_12c9bb();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/12c9bb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/12c9bb.wgsl.expected.wgsl
index d61d602..bbeb242 100644
--- a/test/tint/builtins/gen/var/textureDimensions/12c9bb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/12c9bb.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_12c9bb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_12c9bb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_12c9bb();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/147998.wgsl b/test/tint/builtins/gen/var/textureDimensions/147998.wgsl
index 17e2e21..1917a88 100644
--- a/test/tint/builtins/gen/var/textureDimensions/147998.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/147998.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_147998();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_147998();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_147998();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/147998.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/147998.wgsl.expected.wgsl
index 3cd6855..8379507 100644
--- a/test/tint/builtins/gen/var/textureDimensions/147998.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/147998.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_147998();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_147998();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_147998();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/16036c.wgsl b/test/tint/builtins/gen/var/textureDimensions/16036c.wgsl
index 84ce998..2107c74 100644
--- a/test/tint/builtins/gen/var/textureDimensions/16036c.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/16036c.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_16036c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_16036c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_16036c();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/16036c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/16036c.wgsl.expected.wgsl
index 072b71e..5a9c5f3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/16036c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/16036c.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_16036c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_16036c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_16036c();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1b71f0.wgsl b/test/tint/builtins/gen/var/textureDimensions/1b71f0.wgsl
index 77f345d..4435f68 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1b71f0.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1b71f0.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1b71f0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1b71f0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1b71f0();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1b71f0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/1b71f0.wgsl.expected.wgsl
index 8fedb78..ee928e2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1b71f0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1b71f0.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1b71f0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1b71f0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1b71f0();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1d6c26.wgsl b/test/tint/builtins/gen/var/textureDimensions/1d6c26.wgsl
index 0b5857d..6b576ba 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1d6c26.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1d6c26.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1d6c26();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1d6c26();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1d6c26();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1d6c26.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/1d6c26.wgsl.expected.wgsl
index 1ca754c..8bb5c22 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1d6c26.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1d6c26.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1d6c26();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1d6c26();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1d6c26();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1e9e39.wgsl b/test/tint/builtins/gen/var/textureDimensions/1e9e39.wgsl
index c40f9c0..afd80e3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1e9e39.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1e9e39.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1e9e39();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1e9e39();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1e9e39();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1e9e39.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/1e9e39.wgsl.expected.wgsl
index 938b104..efd42ac 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1e9e39.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1e9e39.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1e9e39();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1e9e39();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1e9e39();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1f20c5.wgsl b/test/tint/builtins/gen/var/textureDimensions/1f20c5.wgsl
index 8301b57..e509ecb 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1f20c5.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1f20c5.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1f20c5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1f20c5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1f20c5();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1f20c5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/1f20c5.wgsl.expected.wgsl
index 2cbde3e..4800bad 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1f20c5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1f20c5.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_1f20c5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_1f20c5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_1f20c5();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/214dd4.wgsl b/test/tint/builtins/gen/var/textureDimensions/214dd4.wgsl
index e3ac96c..edb3961 100644
--- a/test/tint/builtins/gen/var/textureDimensions/214dd4.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/214dd4.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_214dd4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_214dd4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_214dd4();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/214dd4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/214dd4.wgsl.expected.wgsl
index a6e1919..8fdb8a3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/214dd4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/214dd4.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_214dd4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_214dd4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_214dd4();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/221f22.wgsl b/test/tint/builtins/gen/var/textureDimensions/221f22.wgsl
index 4af29a2..9cace32 100644
--- a/test/tint/builtins/gen/var/textureDimensions/221f22.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/221f22.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_221f22();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_221f22();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_221f22();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/221f22.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/221f22.wgsl.expected.wgsl
index b7afc40..3d87245 100644
--- a/test/tint/builtins/gen/var/textureDimensions/221f22.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/221f22.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_221f22();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_221f22();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_221f22();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/267788.wgsl b/test/tint/builtins/gen/var/textureDimensions/267788.wgsl
index 1fca259..1778524 100644
--- a/test/tint/builtins/gen/var/textureDimensions/267788.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/267788.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_267788();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_267788();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_267788();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/267788.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/267788.wgsl.expected.wgsl
index b3c7d0e..75e5f841 100644
--- a/test/tint/builtins/gen/var/textureDimensions/267788.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/267788.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_267788();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_267788();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_267788();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/26bdfa.wgsl b/test/tint/builtins/gen/var/textureDimensions/26bdfa.wgsl
index 46faf75..8187e83 100644
--- a/test/tint/builtins/gen/var/textureDimensions/26bdfa.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/26bdfa.wgsl
@@ -30,18 +30,18 @@
   var res: vec3<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_26bdfa();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_26bdfa();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_26bdfa();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/26bdfa.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/26bdfa.wgsl.expected.wgsl
index 99aeee2..6641599 100644
--- a/test/tint/builtins/gen/var/textureDimensions/26bdfa.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/26bdfa.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_26bdfa();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_26bdfa();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_26bdfa();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/26ef6c.wgsl b/test/tint/builtins/gen/var/textureDimensions/26ef6c.wgsl
index ccf3250..cc99396 100644
--- a/test/tint/builtins/gen/var/textureDimensions/26ef6c.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/26ef6c.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_26ef6c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_26ef6c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_26ef6c();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/26ef6c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/26ef6c.wgsl.expected.wgsl
index 960c66d..c0b495c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/26ef6c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/26ef6c.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_26ef6c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_26ef6c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_26ef6c();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/2ad087.wgsl b/test/tint/builtins/gen/var/textureDimensions/2ad087.wgsl
index 25a8b28..62d94f5 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2ad087.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2ad087.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2ad087();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_2ad087();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2ad087();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/2ad087.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/2ad087.wgsl.expected.wgsl
index c2b8327..e965a18 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2ad087.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2ad087.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2ad087();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_2ad087();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2ad087();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/2efa05.wgsl b/test/tint/builtins/gen/var/textureDimensions/2efa05.wgsl
index 9d16f96..375e2bd 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2efa05.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2efa05.wgsl
@@ -30,18 +30,18 @@
   var res: vec3<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2efa05();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_2efa05();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2efa05();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/2efa05.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/2efa05.wgsl.expected.wgsl
index ac7a3e2..f2a2fd3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2efa05.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2efa05.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2efa05();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_2efa05();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2efa05();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/2f289f.wgsl b/test/tint/builtins/gen/var/textureDimensions/2f289f.wgsl
index 63835a1..5fdde6f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2f289f.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2f289f.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2f289f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_2f289f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2f289f();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/2f289f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/2f289f.wgsl.expected.wgsl
index 7ffc030..6895807 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2f289f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2f289f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2f289f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_2f289f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2f289f();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/2fe1cc.wgsl b/test/tint/builtins/gen/var/textureDimensions/2fe1cc.wgsl
index 1d4350b..bff531fd 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2fe1cc.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2fe1cc.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2fe1cc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_2fe1cc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2fe1cc();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/2fe1cc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/2fe1cc.wgsl.expected.wgsl
index 148b199..9b45aa5 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2fe1cc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2fe1cc.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_2fe1cc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_2fe1cc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_2fe1cc();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/318ecc.wgsl b/test/tint/builtins/gen/var/textureDimensions/318ecc.wgsl
index 4563fc8..52ead3c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/318ecc.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/318ecc.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_318ecc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_318ecc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_318ecc();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/318ecc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/318ecc.wgsl.expected.wgsl
index d1c53d4..9a7028c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/318ecc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/318ecc.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_318ecc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_318ecc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_318ecc();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/340d06.wgsl b/test/tint/builtins/gen/var/textureDimensions/340d06.wgsl
index 801a81e..afb2e3d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/340d06.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/340d06.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_340d06();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_340d06();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_340d06();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/340d06.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/340d06.wgsl.expected.wgsl
index 7ae21b4..99bca2d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/340d06.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/340d06.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_340d06();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_340d06();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_340d06();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/398e30.wgsl b/test/tint/builtins/gen/var/textureDimensions/398e30.wgsl
index d8a22e3..d5f67d6 100644
--- a/test/tint/builtins/gen/var/textureDimensions/398e30.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/398e30.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_398e30();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_398e30();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_398e30();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/398e30.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/398e30.wgsl.expected.wgsl
index 457ff70..5deab7d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/398e30.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/398e30.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_398e30();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_398e30();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_398e30();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3a94ea.wgsl b/test/tint/builtins/gen/var/textureDimensions/3a94ea.wgsl
index d00adb2..9573c5c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3a94ea.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3a94ea.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_3a94ea();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_3a94ea();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_3a94ea();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3a94ea.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/3a94ea.wgsl.expected.wgsl
index 29d9579..c1cebaf 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3a94ea.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3a94ea.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_3a94ea();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_3a94ea();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_3a94ea();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3aca08.wgsl b/test/tint/builtins/gen/var/textureDimensions/3aca08.wgsl
index 01a56a9..cca374a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3aca08.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3aca08.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_3aca08();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_3aca08();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_3aca08();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3aca08.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/3aca08.wgsl.expected.wgsl
index ba8e34f..1a72665 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3aca08.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3aca08.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_3aca08();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_3aca08();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_3aca08();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3c5ad8.wgsl b/test/tint/builtins/gen/var/textureDimensions/3c5ad8.wgsl
index 9d72673..a135b33 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3c5ad8.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3c5ad8.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_3c5ad8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_3c5ad8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_3c5ad8();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3c5ad8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/3c5ad8.wgsl.expected.wgsl
index dc42b19..a73139d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3c5ad8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3c5ad8.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_3c5ad8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_3c5ad8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_3c5ad8();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4152a6.wgsl b/test/tint/builtins/gen/var/textureDimensions/4152a6.wgsl
index 52a3a07..19e2dee 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4152a6.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4152a6.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_4152a6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_4152a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_4152a6();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4152a6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/4152a6.wgsl.expected.wgsl
index f9ec8d5..67521ab 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4152a6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4152a6.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_4152a6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_4152a6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_4152a6();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/423f99.wgsl b/test/tint/builtins/gen/var/textureDimensions/423f99.wgsl
index 3fd9d7b..8183ccf 100644
--- a/test/tint/builtins/gen/var/textureDimensions/423f99.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/423f99.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_423f99();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_423f99();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_423f99();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/423f99.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/423f99.wgsl.expected.wgsl
index b84b033..0ef4f77 100644
--- a/test/tint/builtins/gen/var/textureDimensions/423f99.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/423f99.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_423f99();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_423f99();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_423f99();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4267ee.wgsl b/test/tint/builtins/gen/var/textureDimensions/4267ee.wgsl
index 1c849b8..1e230b6 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4267ee.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4267ee.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_4267ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_4267ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_4267ee();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4267ee.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/4267ee.wgsl.expected.wgsl
index 909269f..a634268 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4267ee.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4267ee.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_4267ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_4267ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_4267ee();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/42d4e6.wgsl b/test/tint/builtins/gen/var/textureDimensions/42d4e6.wgsl
index ac087c5..7c00b9e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/42d4e6.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/42d4e6.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_42d4e6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_42d4e6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_42d4e6();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/42d4e6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/42d4e6.wgsl.expected.wgsl
index bc98490..ab0376b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/42d4e6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/42d4e6.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_42d4e6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_42d4e6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_42d4e6();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/48cb89.wgsl b/test/tint/builtins/gen/var/textureDimensions/48cb89.wgsl
index c278ed8..5ec1e8c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/48cb89.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/48cb89.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_48cb89();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_48cb89();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_48cb89();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/48cb89.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/48cb89.wgsl.expected.wgsl
index cdc0578..2e4ee35 100644
--- a/test/tint/builtins/gen/var/textureDimensions/48cb89.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/48cb89.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_48cb89();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_48cb89();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_48cb89();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/49d274.wgsl b/test/tint/builtins/gen/var/textureDimensions/49d274.wgsl
index dd85926..e93d693 100644
--- a/test/tint/builtins/gen/var/textureDimensions/49d274.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/49d274.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_49d274();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_49d274();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_49d274();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/49d274.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/49d274.wgsl.expected.wgsl
index 00ebf36..060af23 100644
--- a/test/tint/builtins/gen/var/textureDimensions/49d274.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/49d274.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_49d274();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_49d274();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_49d274();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4df9a8.wgsl b/test/tint/builtins/gen/var/textureDimensions/4df9a8.wgsl
index c95dd96..59e4637 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4df9a8.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4df9a8.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_4df9a8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_4df9a8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_4df9a8();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4df9a8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/4df9a8.wgsl.expected.wgsl
index 4078aa2..b771310 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4df9a8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4df9a8.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_4df9a8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_4df9a8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_4df9a8();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/50a9ee.wgsl b/test/tint/builtins/gen/var/textureDimensions/50a9ee.wgsl
index 1a5c087..b63788a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/50a9ee.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/50a9ee.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_50a9ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_50a9ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_50a9ee();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/50a9ee.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/50a9ee.wgsl.expected.wgsl
index 664cf63..137aadf 100644
--- a/test/tint/builtins/gen/var/textureDimensions/50a9ee.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/50a9ee.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_50a9ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_50a9ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_50a9ee();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/52045c.wgsl b/test/tint/builtins/gen/var/textureDimensions/52045c.wgsl
index 08d9c90..ac3f2ae 100644
--- a/test/tint/builtins/gen/var/textureDimensions/52045c.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/52045c.wgsl
@@ -30,18 +30,18 @@
   var res: i32 = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_52045c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_52045c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_52045c();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/52045c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/52045c.wgsl.expected.wgsl
index a03ae63..ea3568c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/52045c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/52045c.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : i32 = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_52045c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_52045c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_52045c();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/55b23e.wgsl b/test/tint/builtins/gen/var/textureDimensions/55b23e.wgsl
index 06255e8..886c1e9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/55b23e.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/55b23e.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_55b23e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_55b23e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_55b23e();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/55b23e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/55b23e.wgsl.expected.wgsl
index 32b929c..430da3c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/55b23e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/55b23e.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_55b23e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_55b23e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_55b23e();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/579629.wgsl b/test/tint/builtins/gen/var/textureDimensions/579629.wgsl
index 963d480..af4fd85 100644
--- a/test/tint/builtins/gen/var/textureDimensions/579629.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/579629.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_579629();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_579629();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_579629();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/579629.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/579629.wgsl.expected.wgsl
index e157439..1e1d6d7 100644
--- a/test/tint/builtins/gen/var/textureDimensions/579629.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/579629.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_579629();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_579629();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_579629();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/57da0b.wgsl b/test/tint/builtins/gen/var/textureDimensions/57da0b.wgsl
index 5b7a168..fe79b2a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/57da0b.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/57da0b.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_57da0b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_57da0b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_57da0b();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/57da0b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/57da0b.wgsl.expected.wgsl
index f05ee1c..b599184 100644
--- a/test/tint/builtins/gen/var/textureDimensions/57da0b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/57da0b.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_57da0b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_57da0b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_57da0b();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/57e28f.wgsl b/test/tint/builtins/gen/var/textureDimensions/57e28f.wgsl
index 0b9d680..fc88a27 100644
--- a/test/tint/builtins/gen/var/textureDimensions/57e28f.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/57e28f.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_57e28f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_57e28f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_57e28f();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/57e28f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/57e28f.wgsl.expected.wgsl
index 3d25747..e0b854e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/57e28f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/57e28f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_57e28f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_57e28f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_57e28f();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/58a515.wgsl b/test/tint/builtins/gen/var/textureDimensions/58a515.wgsl
index df0e9cd..979cefb 100644
--- a/test/tint/builtins/gen/var/textureDimensions/58a515.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/58a515.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_58a515();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_58a515();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_58a515();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/58a515.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/58a515.wgsl.expected.wgsl
index c395b92..21bad72 100644
--- a/test/tint/builtins/gen/var/textureDimensions/58a515.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/58a515.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_58a515();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_58a515();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_58a515();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/5985f3.wgsl b/test/tint/builtins/gen/var/textureDimensions/5985f3.wgsl
index dffa849..77a0707 100644
--- a/test/tint/builtins/gen/var/textureDimensions/5985f3.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/5985f3.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_5985f3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_5985f3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_5985f3();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/5985f3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/5985f3.wgsl.expected.wgsl
index cc73d08..8449517 100644
--- a/test/tint/builtins/gen/var/textureDimensions/5985f3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/5985f3.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_5985f3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_5985f3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_5985f3();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/5caa5e.wgsl b/test/tint/builtins/gen/var/textureDimensions/5caa5e.wgsl
index 5582c6e..abe7868 100644
--- a/test/tint/builtins/gen/var/textureDimensions/5caa5e.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/5caa5e.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_5caa5e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_5caa5e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_5caa5e();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/5caa5e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/5caa5e.wgsl.expected.wgsl
index 3f83443..ac87720 100644
--- a/test/tint/builtins/gen/var/textureDimensions/5caa5e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/5caa5e.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_5caa5e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_5caa5e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_5caa5e();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/5e295d.wgsl b/test/tint/builtins/gen/var/textureDimensions/5e295d.wgsl
index b855d3c..8397006 100644
--- a/test/tint/builtins/gen/var/textureDimensions/5e295d.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/5e295d.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_5e295d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_5e295d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_5e295d();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/5e295d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/5e295d.wgsl.expected.wgsl
index d8bceb6..ae8f763 100644
--- a/test/tint/builtins/gen/var/textureDimensions/5e295d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/5e295d.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_5e295d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_5e295d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_5e295d();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/60bf54.wgsl b/test/tint/builtins/gen/var/textureDimensions/60bf54.wgsl
index df274c5..9c5ff16 100644
--- a/test/tint/builtins/gen/var/textureDimensions/60bf54.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/60bf54.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_60bf54();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_60bf54();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_60bf54();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/60bf54.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/60bf54.wgsl.expected.wgsl
index f9347de..fbc7cd7 100644
--- a/test/tint/builtins/gen/var/textureDimensions/60bf54.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/60bf54.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_60bf54();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_60bf54();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_60bf54();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/63f3cf.wgsl b/test/tint/builtins/gen/var/textureDimensions/63f3cf.wgsl
index ae013ed..77eff3f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/63f3cf.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/63f3cf.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_63f3cf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_63f3cf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_63f3cf();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/63f3cf.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/63f3cf.wgsl.expected.wgsl
index 43e5f15..3e0ebfd 100644
--- a/test/tint/builtins/gen/var/textureDimensions/63f3cf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/63f3cf.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_63f3cf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_63f3cf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_63f3cf();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/68105c.wgsl b/test/tint/builtins/gen/var/textureDimensions/68105c.wgsl
index ddac6b6..2c5f5dc 100644
--- a/test/tint/builtins/gen/var/textureDimensions/68105c.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/68105c.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_68105c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_68105c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_68105c();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/68105c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/68105c.wgsl.expected.wgsl
index 853c631..19c4929 100644
--- a/test/tint/builtins/gen/var/textureDimensions/68105c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/68105c.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_68105c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_68105c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_68105c();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/686ef2.wgsl b/test/tint/builtins/gen/var/textureDimensions/686ef2.wgsl
index 8a24797..afcbf8c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/686ef2.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/686ef2.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_686ef2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_686ef2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_686ef2();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/686ef2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/686ef2.wgsl.expected.wgsl
index 19de8f0..df409b7 100644
--- a/test/tint/builtins/gen/var/textureDimensions/686ef2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/686ef2.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_686ef2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_686ef2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_686ef2();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/6adac6.wgsl b/test/tint/builtins/gen/var/textureDimensions/6adac6.wgsl
index d079cf9..c63ff5f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/6adac6.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/6adac6.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_6adac6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_6adac6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_6adac6();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/6adac6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/6adac6.wgsl.expected.wgsl
index c48c479..8ab67f0 100644
--- a/test/tint/builtins/gen/var/textureDimensions/6adac6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/6adac6.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_6adac6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_6adac6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_6adac6();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/6ec1b4.wgsl b/test/tint/builtins/gen/var/textureDimensions/6ec1b4.wgsl
index eaab191..5038764 100644
--- a/test/tint/builtins/gen/var/textureDimensions/6ec1b4.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/6ec1b4.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_6ec1b4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_6ec1b4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_6ec1b4();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/6ec1b4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/6ec1b4.wgsl.expected.wgsl
index 6cc7cc1..7573c55 100644
--- a/test/tint/builtins/gen/var/textureDimensions/6ec1b4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/6ec1b4.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_6ec1b4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_6ec1b4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_6ec1b4();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/6f0d79.wgsl b/test/tint/builtins/gen/var/textureDimensions/6f0d79.wgsl
index 05ff750..4b03051 100644
--- a/test/tint/builtins/gen/var/textureDimensions/6f0d79.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/6f0d79.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_6f0d79();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_6f0d79();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_6f0d79();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/6f0d79.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/6f0d79.wgsl.expected.wgsl
index 7b1f32c..b055eea 100644
--- a/test/tint/builtins/gen/var/textureDimensions/6f0d79.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/6f0d79.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_6f0d79();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_6f0d79();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_6f0d79();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/702c53.wgsl b/test/tint/builtins/gen/var/textureDimensions/702c53.wgsl
index 0673cb4..b445950 100644
--- a/test/tint/builtins/gen/var/textureDimensions/702c53.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/702c53.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_702c53();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_702c53();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_702c53();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/702c53.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/702c53.wgsl.expected.wgsl
index 27d3074..093625d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/702c53.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/702c53.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_702c53();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_702c53();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_702c53();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/72e5d6.wgsl b/test/tint/builtins/gen/var/textureDimensions/72e5d6.wgsl
index 92e43ae..8f8c942 100644
--- a/test/tint/builtins/gen/var/textureDimensions/72e5d6.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/72e5d6.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_72e5d6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_72e5d6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_72e5d6();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/72e5d6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/72e5d6.wgsl.expected.wgsl
index 7789fbc..a6f1b85 100644
--- a/test/tint/builtins/gen/var/textureDimensions/72e5d6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/72e5d6.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_72e5d6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_72e5d6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_72e5d6();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/79df87.wgsl b/test/tint/builtins/gen/var/textureDimensions/79df87.wgsl
index 868f9d9..b9174bb 100644
--- a/test/tint/builtins/gen/var/textureDimensions/79df87.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/79df87.wgsl
@@ -30,18 +30,18 @@
   var res: i32 = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_79df87();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_79df87();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_79df87();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/79df87.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/79df87.wgsl.expected.wgsl
index 3029f41..23db8dc 100644
--- a/test/tint/builtins/gen/var/textureDimensions/79df87.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/79df87.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : i32 = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_79df87();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_79df87();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_79df87();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/7bf826.wgsl b/test/tint/builtins/gen/var/textureDimensions/7bf826.wgsl
index 6297e5a..172a553 100644
--- a/test/tint/builtins/gen/var/textureDimensions/7bf826.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/7bf826.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_7bf826();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_7bf826();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_7bf826();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/7bf826.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/7bf826.wgsl.expected.wgsl
index 50ddae7..4953ba3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/7bf826.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/7bf826.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_7bf826();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_7bf826();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_7bf826();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/7f5c2e.wgsl b/test/tint/builtins/gen/var/textureDimensions/7f5c2e.wgsl
index 97ce4dd..d754ab7 100644
--- a/test/tint/builtins/gen/var/textureDimensions/7f5c2e.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/7f5c2e.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_7f5c2e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_7f5c2e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_7f5c2e();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/7f5c2e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/7f5c2e.wgsl.expected.wgsl
index 0eecf68..85bbc4b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/7f5c2e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/7f5c2e.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_7f5c2e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_7f5c2e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_7f5c2e();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8028f3.wgsl b/test/tint/builtins/gen/var/textureDimensions/8028f3.wgsl
index b478fa2..1e26bcc 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8028f3.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8028f3.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8028f3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8028f3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8028f3();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8028f3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/8028f3.wgsl.expected.wgsl
index 7ad5727..fbc1979 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8028f3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8028f3.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8028f3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8028f3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8028f3();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/811679.wgsl b/test/tint/builtins/gen/var/textureDimensions/811679.wgsl
index 7d7722d..da8d8cb 100644
--- a/test/tint/builtins/gen/var/textureDimensions/811679.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/811679.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_811679();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_811679();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_811679();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/811679.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/811679.wgsl.expected.wgsl
index 154cdde..494c1da 100644
--- a/test/tint/builtins/gen/var/textureDimensions/811679.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/811679.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_811679();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_811679();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_811679();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/820596.wgsl b/test/tint/builtins/gen/var/textureDimensions/820596.wgsl
index 8ec3269..c4803cf 100644
--- a/test/tint/builtins/gen/var/textureDimensions/820596.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/820596.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_820596();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_820596();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_820596();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/820596.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/820596.wgsl.expected.wgsl
index 93106d5..dc1379f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/820596.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/820596.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_820596();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_820596();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_820596();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/83ee5a.wgsl b/test/tint/builtins/gen/var/textureDimensions/83ee5a.wgsl
index bdd0b53..162289b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/83ee5a.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/83ee5a.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_83ee5a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_83ee5a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_83ee5a();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/83ee5a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/83ee5a.wgsl.expected.wgsl
index 3481e3c..0d0d5ea 100644
--- a/test/tint/builtins/gen/var/textureDimensions/83ee5a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/83ee5a.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_83ee5a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_83ee5a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_83ee5a();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/85d556.wgsl b/test/tint/builtins/gen/var/textureDimensions/85d556.wgsl
index 10a4318..e7a2ff3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/85d556.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/85d556.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_85d556();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_85d556();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_85d556();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/85d556.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/85d556.wgsl.expected.wgsl
index 55c3e24..4297cfb 100644
--- a/test/tint/builtins/gen/var/textureDimensions/85d556.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/85d556.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_85d556();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_85d556();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_85d556();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/88ad17.wgsl b/test/tint/builtins/gen/var/textureDimensions/88ad17.wgsl
index f64186a..9f4b2e9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/88ad17.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/88ad17.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_88ad17();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_88ad17();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_88ad17();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/88ad17.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/88ad17.wgsl.expected.wgsl
index 8a2f64b..c7755b86 100644
--- a/test/tint/builtins/gen/var/textureDimensions/88ad17.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/88ad17.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_88ad17();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_88ad17();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_88ad17();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8aa4c4.wgsl b/test/tint/builtins/gen/var/textureDimensions/8aa4c4.wgsl
index 4468f26..fde91a0 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8aa4c4.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8aa4c4.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8aa4c4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8aa4c4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8aa4c4();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8aa4c4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/8aa4c4.wgsl.expected.wgsl
index 3a59eb6..840105b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8aa4c4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8aa4c4.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8aa4c4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8aa4c4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8aa4c4();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8deb5e.wgsl b/test/tint/builtins/gen/var/textureDimensions/8deb5e.wgsl
index de87126..a31d313 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8deb5e.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8deb5e.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8deb5e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8deb5e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8deb5e();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8deb5e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/8deb5e.wgsl.expected.wgsl
index 1f088c3..c3e10c7 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8deb5e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8deb5e.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8deb5e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8deb5e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8deb5e();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8f20bf.wgsl b/test/tint/builtins/gen/var/textureDimensions/8f20bf.wgsl
index ba50596..d4b6347 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8f20bf.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8f20bf.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8f20bf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8f20bf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8f20bf();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8f20bf.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/8f20bf.wgsl.expected.wgsl
index e299daf..2d3dcb0 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8f20bf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8f20bf.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8f20bf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8f20bf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8f20bf();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8fca0f.wgsl b/test/tint/builtins/gen/var/textureDimensions/8fca0f.wgsl
index ca949de..feea2a4 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8fca0f.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8fca0f.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8fca0f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8fca0f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8fca0f();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8fca0f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/8fca0f.wgsl.expected.wgsl
index 4599b2e..6ef7d1b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8fca0f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8fca0f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_8fca0f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_8fca0f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_8fca0f();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/90340b.wgsl b/test/tint/builtins/gen/var/textureDimensions/90340b.wgsl
index 4acb1f6..d169f40 100644
--- a/test/tint/builtins/gen/var/textureDimensions/90340b.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/90340b.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_90340b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_90340b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_90340b();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/90340b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/90340b.wgsl.expected.wgsl
index 2addbf1..c70e0d3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/90340b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/90340b.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_90340b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_90340b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_90340b();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9042ab.wgsl b/test/tint/builtins/gen/var/textureDimensions/9042ab.wgsl
index 6365cba..c148d88 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9042ab.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9042ab.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9042ab();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9042ab();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9042ab();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9042ab.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/9042ab.wgsl.expected.wgsl
index a2d8666..1602fd8 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9042ab.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9042ab.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9042ab();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9042ab();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9042ab();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9393b0.wgsl b/test/tint/builtins/gen/var/textureDimensions/9393b0.wgsl
index 2872414..102ad8f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9393b0.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9393b0.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9393b0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9393b0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9393b0();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9393b0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/9393b0.wgsl.expected.wgsl
index 6243a7f..f46b018 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9393b0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9393b0.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9393b0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9393b0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9393b0();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/939fdb.wgsl b/test/tint/builtins/gen/var/textureDimensions/939fdb.wgsl
index 9852d37..eb7dc6a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/939fdb.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/939fdb.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_939fdb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_939fdb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_939fdb();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/939fdb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/939fdb.wgsl.expected.wgsl
index 12cc535..eda2bcb 100644
--- a/test/tint/builtins/gen/var/textureDimensions/939fdb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/939fdb.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_939fdb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_939fdb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_939fdb();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/962dcd.wgsl b/test/tint/builtins/gen/var/textureDimensions/962dcd.wgsl
index fddb828..14738c7 100644
--- a/test/tint/builtins/gen/var/textureDimensions/962dcd.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/962dcd.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_962dcd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_962dcd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_962dcd();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/962dcd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/962dcd.wgsl.expected.wgsl
index 8c1d256..bd3ca7a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/962dcd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/962dcd.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_962dcd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_962dcd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_962dcd();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9abfe5.wgsl b/test/tint/builtins/gen/var/textureDimensions/9abfe5.wgsl
index 4fea70c..20c87c3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9abfe5.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9abfe5.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9abfe5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9abfe5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9abfe5();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9abfe5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/9abfe5.wgsl.expected.wgsl
index fd97994..5845daa 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9abfe5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9abfe5.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9abfe5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9abfe5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9abfe5();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9c9c57.wgsl b/test/tint/builtins/gen/var/textureDimensions/9c9c57.wgsl
index d04579d..d4f0c70 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9c9c57.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9c9c57.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9c9c57();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9c9c57();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9c9c57();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9c9c57.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/9c9c57.wgsl.expected.wgsl
index dd5cf5b..cffe4b1 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9c9c57.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9c9c57.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9c9c57();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9c9c57();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9c9c57();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9da9e2.wgsl b/test/tint/builtins/gen/var/textureDimensions/9da9e2.wgsl
index 05e9f02..66a2234 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9da9e2.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9da9e2.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9da9e2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9da9e2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9da9e2();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9da9e2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/9da9e2.wgsl.expected.wgsl
index 3e1f941..73cfaf1 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9da9e2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9da9e2.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9da9e2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9da9e2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9da9e2();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9eb8d8.wgsl b/test/tint/builtins/gen/var/textureDimensions/9eb8d8.wgsl
index 8a3f461..8ab8840 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9eb8d8.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9eb8d8.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9eb8d8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9eb8d8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9eb8d8();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9eb8d8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/9eb8d8.wgsl.expected.wgsl
index 58bc54f..fc40eab 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9eb8d8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9eb8d8.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9eb8d8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9eb8d8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9eb8d8();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9f8e46.wgsl b/test/tint/builtins/gen/var/textureDimensions/9f8e46.wgsl
index c2caccf..4de2592 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9f8e46.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9f8e46.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9f8e46();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9f8e46();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9f8e46();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9f8e46.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/9f8e46.wgsl.expected.wgsl
index df7b1a7..3d3ef83 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9f8e46.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9f8e46.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_9f8e46();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_9f8e46();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_9f8e46();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a01845.wgsl b/test/tint/builtins/gen/var/textureDimensions/a01845.wgsl
index 00aa1e5..9261aac 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a01845.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a01845.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a01845();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_a01845();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a01845();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a01845.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/a01845.wgsl.expected.wgsl
index 70d0b72..8d39505 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a01845.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a01845.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a01845();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_a01845();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a01845();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a7d565.wgsl b/test/tint/builtins/gen/var/textureDimensions/a7d565.wgsl
index 2559f77..4629e87 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a7d565.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a7d565.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a7d565();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_a7d565();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a7d565();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a7d565.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/a7d565.wgsl.expected.wgsl
index 4cd2c97..76183ec 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a7d565.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a7d565.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a7d565();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_a7d565();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a7d565();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a863f2.wgsl b/test/tint/builtins/gen/var/textureDimensions/a863f2.wgsl
index d88716e..7d1329f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a863f2.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a863f2.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a863f2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_a863f2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a863f2();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a863f2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/a863f2.wgsl.expected.wgsl
index 257be4e..d3e7e38 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a863f2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a863f2.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a863f2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_a863f2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a863f2();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a9c9c1.wgsl b/test/tint/builtins/gen/var/textureDimensions/a9c9c1.wgsl
index 7dac118..5111e6a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a9c9c1.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a9c9c1.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a9c9c1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_a9c9c1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a9c9c1();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a9c9c1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/a9c9c1.wgsl.expected.wgsl
index 4532c17..a878fe0 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a9c9c1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a9c9c1.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_a9c9c1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_a9c9c1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_a9c9c1();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b0e16d.wgsl b/test/tint/builtins/gen/var/textureDimensions/b0e16d.wgsl
index ff16fe8..ad3cb17 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b0e16d.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b0e16d.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b0e16d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_b0e16d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b0e16d();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b0e16d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/b0e16d.wgsl.expected.wgsl
index fd73808..06f39cf 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b0e16d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b0e16d.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b0e16d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_b0e16d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b0e16d();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b3c954.wgsl b/test/tint/builtins/gen/var/textureDimensions/b3c954.wgsl
index 2fb0e3d..5486e5a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b3c954.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b3c954.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b3c954();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_b3c954();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b3c954();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b3c954.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/b3c954.wgsl.expected.wgsl
index de3b872..8c36407 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b3c954.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b3c954.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b3c954();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_b3c954();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b3c954();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b3e407.wgsl b/test/tint/builtins/gen/var/textureDimensions/b3e407.wgsl
index 5b88cd2..7a6dd9b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b3e407.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b3e407.wgsl
@@ -30,18 +30,18 @@
   var res: i32 = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b3e407();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_b3e407();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b3e407();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b3e407.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/b3e407.wgsl.expected.wgsl
index 6e09c13..95f3a26 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b3e407.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b3e407.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : i32 = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b3e407();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_b3e407();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b3e407();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b91240.wgsl b/test/tint/builtins/gen/var/textureDimensions/b91240.wgsl
index df6cccb..984437e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b91240.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b91240.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b91240();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_b91240();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b91240();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b91240.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/b91240.wgsl.expected.wgsl
index 105338f..7c88173 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b91240.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b91240.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_b91240();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_b91240();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_b91240();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/ba1481.wgsl b/test/tint/builtins/gen/var/textureDimensions/ba1481.wgsl
index 1cb0abe..0469176 100644
--- a/test/tint/builtins/gen/var/textureDimensions/ba1481.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/ba1481.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_ba1481();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_ba1481();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_ba1481();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/ba1481.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/ba1481.wgsl.expected.wgsl
index 0bcf4af..cbc8837 100644
--- a/test/tint/builtins/gen/var/textureDimensions/ba1481.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/ba1481.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_ba1481();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_ba1481();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_ba1481();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/bb3dde.wgsl b/test/tint/builtins/gen/var/textureDimensions/bb3dde.wgsl
index fec2488..0e971f8 100644
--- a/test/tint/builtins/gen/var/textureDimensions/bb3dde.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/bb3dde.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_bb3dde();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_bb3dde();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_bb3dde();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/bb3dde.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/bb3dde.wgsl.expected.wgsl
index 005cae6..bd224fb 100644
--- a/test/tint/builtins/gen/var/textureDimensions/bb3dde.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/bb3dde.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_bb3dde();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_bb3dde();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_bb3dde();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c30e75.wgsl b/test/tint/builtins/gen/var/textureDimensions/c30e75.wgsl
index c5afaf3..582a405 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c30e75.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c30e75.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_c30e75();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_c30e75();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_c30e75();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c30e75.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/c30e75.wgsl.expected.wgsl
index ecf60b5..121b2c3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c30e75.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c30e75.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_c30e75();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_c30e75();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_c30e75();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c7943d.wgsl b/test/tint/builtins/gen/var/textureDimensions/c7943d.wgsl
index 892ea87..240e244 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c7943d.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c7943d.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_c7943d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_c7943d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_c7943d();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c7943d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/c7943d.wgsl.expected.wgsl
index d664f33..0d589b5 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c7943d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c7943d.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_c7943d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_c7943d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_c7943d();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cc968c.wgsl b/test/tint/builtins/gen/var/textureDimensions/cc968c.wgsl
index 42f777f..7745787 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cc968c.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cc968c.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cc968c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cc968c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cc968c();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cc968c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/cc968c.wgsl.expected.wgsl
index 8198585..8caceed 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cc968c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cc968c.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cc968c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cc968c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cc968c();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cccc8f.wgsl b/test/tint/builtins/gen/var/textureDimensions/cccc8f.wgsl
index b320e91..5b21d75 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cccc8f.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cccc8f.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cccc8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cccc8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cccc8f();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cccc8f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/cccc8f.wgsl.expected.wgsl
index a4d44f0..19570ad 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cccc8f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cccc8f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cccc8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cccc8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cccc8f();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cd76a7.wgsl b/test/tint/builtins/gen/var/textureDimensions/cd76a7.wgsl
index 8959a17..3044d70 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cd76a7.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cd76a7.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cd76a7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cd76a7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cd76a7();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cd76a7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/cd76a7.wgsl.expected.wgsl
index 139070f..fa3b1a9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cd76a7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cd76a7.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cd76a7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cd76a7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cd76a7();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cdf473.wgsl b/test/tint/builtins/gen/var/textureDimensions/cdf473.wgsl
index 3eb0f09..f7f5485 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cdf473.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cdf473.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cdf473();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cdf473();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cdf473();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cdf473.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/cdf473.wgsl.expected.wgsl
index 31373c0..a675dad 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cdf473.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cdf473.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cdf473();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cdf473();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cdf473();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cec841.wgsl b/test/tint/builtins/gen/var/textureDimensions/cec841.wgsl
index abd76b1..471ec9c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cec841.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cec841.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cec841();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cec841();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cec841();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cec841.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/cec841.wgsl.expected.wgsl
index d1667a0..7a92b37 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cec841.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cec841.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cec841();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cec841();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cec841();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cf7e43.wgsl b/test/tint/builtins/gen/var/textureDimensions/cf7e43.wgsl
index 8faa148..31ebad2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cf7e43.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cf7e43.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cf7e43();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cf7e43();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cf7e43();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cf7e43.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/cf7e43.wgsl.expected.wgsl
index fd5550b..38c9845 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cf7e43.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cf7e43.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_cf7e43();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_cf7e43();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_cf7e43();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d125bc.wgsl b/test/tint/builtins/gen/var/textureDimensions/d125bc.wgsl
index 62a607f..38cc6f9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d125bc.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d125bc.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_d125bc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_d125bc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_d125bc();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d125bc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/d125bc.wgsl.expected.wgsl
index e8b2c56..21f8b05 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d125bc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d125bc.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_d125bc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_d125bc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_d125bc();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d83c45.wgsl b/test/tint/builtins/gen/var/textureDimensions/d83c45.wgsl
index 4626578..ea461be 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d83c45.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d83c45.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_d83c45();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_d83c45();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_d83c45();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d83c45.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/d83c45.wgsl.expected.wgsl
index a0186f6..13f8d6b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d83c45.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d83c45.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_d83c45();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_d83c45();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_d83c45();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/daf7c0.wgsl b/test/tint/builtins/gen/var/textureDimensions/daf7c0.wgsl
index 9d66ada..c1f3feb 100644
--- a/test/tint/builtins/gen/var/textureDimensions/daf7c0.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/daf7c0.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_daf7c0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_daf7c0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_daf7c0();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/daf7c0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/daf7c0.wgsl.expected.wgsl
index 6d2fbeb..cf81583 100644
--- a/test/tint/builtins/gen/var/textureDimensions/daf7c0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/daf7c0.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_daf7c0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_daf7c0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_daf7c0();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/dc2dd0.wgsl b/test/tint/builtins/gen/var/textureDimensions/dc2dd0.wgsl
index dd28eb4..f560a93 100644
--- a/test/tint/builtins/gen/var/textureDimensions/dc2dd0.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/dc2dd0.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_dc2dd0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_dc2dd0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_dc2dd0();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/dc2dd0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/dc2dd0.wgsl.expected.wgsl
index 5151ae9..53eaf8f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/dc2dd0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/dc2dd0.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_dc2dd0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_dc2dd0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_dc2dd0();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e927be.wgsl b/test/tint/builtins/gen/var/textureDimensions/e927be.wgsl
index e711cdd..532ab9b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e927be.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e927be.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_e927be();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_e927be();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_e927be();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e927be.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/e927be.wgsl.expected.wgsl
index 637bad6..1c420a1 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e927be.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e927be.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_e927be();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_e927be();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_e927be();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e9e96c.wgsl b/test/tint/builtins/gen/var/textureDimensions/e9e96c.wgsl
index 41b9f1e..27ba50a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e9e96c.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e9e96c.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_e9e96c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_e9e96c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_e9e96c();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e9e96c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/e9e96c.wgsl.expected.wgsl
index 0f84fac..4c37479 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e9e96c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e9e96c.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_e9e96c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_e9e96c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_e9e96c();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/ef5b89.wgsl b/test/tint/builtins/gen/var/textureDimensions/ef5b89.wgsl
index b533d38..f7625ec 100644
--- a/test/tint/builtins/gen/var/textureDimensions/ef5b89.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/ef5b89.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_ef5b89();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_ef5b89();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_ef5b89();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/ef5b89.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/ef5b89.wgsl.expected.wgsl
index f758962..32a0325 100644
--- a/test/tint/builtins/gen/var/textureDimensions/ef5b89.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/ef5b89.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_ef5b89();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_ef5b89();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_ef5b89();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/efc8a4.wgsl b/test/tint/builtins/gen/var/textureDimensions/efc8a4.wgsl
index 3c65b12..43360e0 100644
--- a/test/tint/builtins/gen/var/textureDimensions/efc8a4.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/efc8a4.wgsl
@@ -30,18 +30,18 @@
   var res: vec3<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_efc8a4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_efc8a4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_efc8a4();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/efc8a4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/efc8a4.wgsl.expected.wgsl
index 0bec181..f65550d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/efc8a4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/efc8a4.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec3<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_efc8a4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_efc8a4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_efc8a4();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f60bdb.wgsl b/test/tint/builtins/gen/var/textureDimensions/f60bdb.wgsl
index 167f39a..21d5f90 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f60bdb.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f60bdb.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_f60bdb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_f60bdb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_f60bdb();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f60bdb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/f60bdb.wgsl.expected.wgsl
index 04d2455..f22008d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f60bdb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f60bdb.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_f60bdb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_f60bdb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_f60bdb();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f7145b.wgsl b/test/tint/builtins/gen/var/textureDimensions/f7145b.wgsl
index b2c2685..cf66fa6 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f7145b.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f7145b.wgsl
@@ -30,18 +30,18 @@
   var res: vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_f7145b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_f7145b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_f7145b();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f7145b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/f7145b.wgsl.expected.wgsl
index 0bbfb0e..a04f27d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f7145b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f7145b.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec2<i32> = textureDimensions(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_f7145b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_f7145b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_f7145b();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f931c7.wgsl b/test/tint/builtins/gen/var/textureDimensions/f931c7.wgsl
index 85c0fab..a10010e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f931c7.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f931c7.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_f931c7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_f931c7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_f931c7();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f931c7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/f931c7.wgsl.expected.wgsl
index 14de15a..041ed4c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f931c7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f931c7.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_f931c7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_f931c7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_f931c7();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/fa9859.wgsl b/test/tint/builtins/gen/var/textureDimensions/fa9859.wgsl
index 206c54e..2992b65 100644
--- a/test/tint/builtins/gen/var/textureDimensions/fa9859.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/fa9859.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_fa9859();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_fa9859();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_fa9859();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/fa9859.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/fa9859.wgsl.expected.wgsl
index 58b2bd0..3acbf7d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/fa9859.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/fa9859.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_fa9859();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_fa9859();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_fa9859();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/fb5670.wgsl b/test/tint/builtins/gen/var/textureDimensions/fb5670.wgsl
index fcfb9cf..fd06d1e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/fb5670.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/fb5670.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_fb5670();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_fb5670();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_fb5670();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/fb5670.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/fb5670.wgsl.expected.wgsl
index 79fcdb8..199f355 100644
--- a/test/tint/builtins/gen/var/textureDimensions/fb5670.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/fb5670.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec2<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_fb5670();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_fb5670();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_fb5670();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/fcac78.wgsl b/test/tint/builtins/gen/var/textureDimensions/fcac78.wgsl
index 7e7c4d8..e7b1dbb 100644
--- a/test/tint/builtins/gen/var/textureDimensions/fcac78.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/fcac78.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_fcac78();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_fcac78();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_fcac78();
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/fcac78.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureDimensions/fcac78.wgsl.expected.wgsl
index bd243ab..3e13671 100644
--- a/test/tint/builtins/gen/var/textureDimensions/fcac78.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureDimensions/fcac78.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : vec3<i32> = textureDimensions(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureDimensions_fcac78();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureDimensions_fcac78();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureDimensions_fcac78();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/10c554.wgsl b/test/tint/builtins/gen/var/textureGather/10c554.wgsl
index 3f1f968..4e211a5 100644
--- a/test/tint/builtins/gen/var/textureGather/10c554.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/10c554.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = textureGather(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_10c554();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_10c554();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_10c554();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/10c554.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/10c554.wgsl.expected.wgsl
index 2e22217..4df84e8 100644
--- a/test/tint/builtins/gen/var/textureGather/10c554.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/10c554.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   var res : vec4<f32> = textureGather(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_10c554();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_10c554();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_10c554();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/1f7f6b.wgsl b/test/tint/builtins/gen/var/textureGather/1f7f6b.wgsl
index e22c989..c349ad7 100644
--- a/test/tint/builtins/gen/var/textureGather/1f7f6b.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/1f7f6b.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = textureGather(arg_0, arg_1, arg_2, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_1f7f6b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_1f7f6b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_1f7f6b();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/1f7f6b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/1f7f6b.wgsl.expected.wgsl
index b5b5663..33aec6e 100644
--- a/test/tint/builtins/gen/var/textureGather/1f7f6b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/1f7f6b.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   var res : vec4<f32> = textureGather(arg_0, arg_1, arg_2, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_1f7f6b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_1f7f6b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_1f7f6b();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/22e930.wgsl b/test/tint/builtins/gen/var/textureGather/22e930.wgsl
index ba57f22..cc9aa07 100644
--- a/test/tint/builtins/gen/var/textureGather/22e930.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/22e930.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<f32> = textureGather(1, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_22e930();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_22e930();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_22e930();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/22e930.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/22e930.wgsl.expected.wgsl
index 2642e65..e804200 100644
--- a/test/tint/builtins/gen/var/textureGather/22e930.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/22e930.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<f32> = textureGather(1, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_22e930();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_22e930();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_22e930();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/2cc066.wgsl b/test/tint/builtins/gen/var/textureGather/2cc066.wgsl
index 436aa74..c36b4ed 100644
--- a/test/tint/builtins/gen/var/textureGather/2cc066.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/2cc066.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<u32> = textureGather(1, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_2cc066();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_2cc066();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_2cc066();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/2cc066.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/2cc066.wgsl.expected.wgsl
index a7766aa..d6358a9 100644
--- a/test/tint/builtins/gen/var/textureGather/2cc066.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/2cc066.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<u32> = textureGather(1, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_2cc066();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_2cc066();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_2cc066();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/2e0ed5.wgsl b/test/tint/builtins/gen/var/textureGather/2e0ed5.wgsl
index f678c1d..8d9bd80 100644
--- a/test/tint/builtins/gen/var/textureGather/2e0ed5.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/2e0ed5.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = textureGather(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_2e0ed5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_2e0ed5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_2e0ed5();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/2e0ed5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/2e0ed5.wgsl.expected.wgsl
index b2617bb..b5d2415 100644
--- a/test/tint/builtins/gen/var/textureGather/2e0ed5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/2e0ed5.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   var res : vec4<f32> = textureGather(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_2e0ed5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_2e0ed5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_2e0ed5();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/32c4e8.wgsl b/test/tint/builtins/gen/var/textureGather/32c4e8.wgsl
index 981274f..de3cd4b 100644
--- a/test/tint/builtins/gen/var/textureGather/32c4e8.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/32c4e8.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = textureGather(1, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_32c4e8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_32c4e8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_32c4e8();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/32c4e8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/32c4e8.wgsl.expected.wgsl
index 2578384..d748a7b 100644
--- a/test/tint/builtins/gen/var/textureGather/32c4e8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/32c4e8.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   var res : vec4<f32> = textureGather(1, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_32c4e8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_32c4e8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_32c4e8();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/3b32cc.wgsl b/test/tint/builtins/gen/var/textureGather/3b32cc.wgsl
index 361b66f..ef9e7de 100644
--- a/test/tint/builtins/gen/var/textureGather/3b32cc.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/3b32cc.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<u32> = textureGather(1, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_3b32cc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_3b32cc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_3b32cc();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/3b32cc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/3b32cc.wgsl.expected.wgsl
index 769f417..3d33dcb 100644
--- a/test/tint/builtins/gen/var/textureGather/3b32cc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/3b32cc.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   var res : vec4<u32> = textureGather(1, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_3b32cc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_3b32cc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_3b32cc();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/43025d.wgsl b/test/tint/builtins/gen/var/textureGather/43025d.wgsl
index f17e275..11de541 100644
--- a/test/tint/builtins/gen/var/textureGather/43025d.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/43025d.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<f32> = textureGather(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_43025d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_43025d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_43025d();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/43025d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/43025d.wgsl.expected.wgsl
index 4abc4a1..8624141 100644
--- a/test/tint/builtins/gen/var/textureGather/43025d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/43025d.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<f32> = textureGather(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_43025d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_43025d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_43025d();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/49b07f.wgsl b/test/tint/builtins/gen/var/textureGather/49b07f.wgsl
index b72043a..b20b677 100644
--- a/test/tint/builtins/gen/var/textureGather/49b07f.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/49b07f.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<u32> = textureGather(1, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_49b07f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_49b07f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_49b07f();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/49b07f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/49b07f.wgsl.expected.wgsl
index 7153c61..78eb732 100644
--- a/test/tint/builtins/gen/var/textureGather/49b07f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/49b07f.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   var res : vec4<u32> = textureGather(1, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_49b07f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_49b07f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_49b07f();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/4b8103.wgsl b/test/tint/builtins/gen/var/textureGather/4b8103.wgsl
index 8cd2108..d88ce60 100644
--- a/test/tint/builtins/gen/var/textureGather/4b8103.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/4b8103.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<f32> = textureGather(1, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_4b8103();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_4b8103();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_4b8103();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/4b8103.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/4b8103.wgsl.expected.wgsl
index 1fa629e..05fe137 100644
--- a/test/tint/builtins/gen/var/textureGather/4b8103.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/4b8103.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<f32> = textureGather(1, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_4b8103();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_4b8103();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_4b8103();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/5266da.wgsl b/test/tint/builtins/gen/var/textureGather/5266da.wgsl
index 3514a73..44b22c9 100644
--- a/test/tint/builtins/gen/var/textureGather/5266da.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/5266da.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = textureGather(1, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_5266da();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_5266da();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_5266da();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/5266da.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/5266da.wgsl.expected.wgsl
index cca1739..9bf8e14 100644
--- a/test/tint/builtins/gen/var/textureGather/5266da.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/5266da.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   var res : vec4<f32> = textureGather(1, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_5266da();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_5266da();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_5266da();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/5ba85f.wgsl b/test/tint/builtins/gen/var/textureGather/5ba85f.wgsl
index bbf18dd..00d205f 100644
--- a/test/tint/builtins/gen/var/textureGather/5ba85f.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/5ba85f.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<i32> = textureGather(1, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_5ba85f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_5ba85f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_5ba85f();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/5ba85f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/5ba85f.wgsl.expected.wgsl
index bc8269a..3f97184 100644
--- a/test/tint/builtins/gen/var/textureGather/5ba85f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/5ba85f.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   var res : vec4<i32> = textureGather(1, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_5ba85f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_5ba85f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_5ba85f();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/5bd491.wgsl b/test/tint/builtins/gen/var/textureGather/5bd491.wgsl
index 13d3c92..a057d46 100644
--- a/test/tint/builtins/gen/var/textureGather/5bd491.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/5bd491.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<u32> = textureGather(1, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_5bd491();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_5bd491();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_5bd491();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/5bd491.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/5bd491.wgsl.expected.wgsl
index 7e8077e..e39e4cf 100644
--- a/test/tint/builtins/gen/var/textureGather/5bd491.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/5bd491.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   var res : vec4<u32> = textureGather(1, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_5bd491();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_5bd491();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_5bd491();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/751f8a.wgsl b/test/tint/builtins/gen/var/textureGather/751f8a.wgsl
index 4103e55..d767ad3 100644
--- a/test/tint/builtins/gen/var/textureGather/751f8a.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/751f8a.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<f32> = textureGather(1, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_751f8a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_751f8a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_751f8a();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/751f8a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/751f8a.wgsl.expected.wgsl
index 81f901d..26429ac 100644
--- a/test/tint/builtins/gen/var/textureGather/751f8a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/751f8a.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<f32> = textureGather(1, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_751f8a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_751f8a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_751f8a();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/7c3828.wgsl b/test/tint/builtins/gen/var/textureGather/7c3828.wgsl
index 3ae2518..1c1e0e0 100644
--- a/test/tint/builtins/gen/var/textureGather/7c3828.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/7c3828.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<i32> = textureGather(1, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_7c3828();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_7c3828();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_7c3828();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/7c3828.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/7c3828.wgsl.expected.wgsl
index 701c035..326c0a7 100644
--- a/test/tint/builtins/gen/var/textureGather/7c3828.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/7c3828.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   var res : vec4<i32> = textureGather(1, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_7c3828();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_7c3828();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_7c3828();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/8b754c.wgsl b/test/tint/builtins/gen/var/textureGather/8b754c.wgsl
index 155ef01..96db5bd 100644
--- a/test/tint/builtins/gen/var/textureGather/8b754c.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/8b754c.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<i32> = textureGather(1, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_8b754c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_8b754c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_8b754c();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/8b754c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/8b754c.wgsl.expected.wgsl
index 7bcabc24..11a8062 100644
--- a/test/tint/builtins/gen/var/textureGather/8b754c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/8b754c.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<i32> = textureGather(1, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_8b754c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_8b754c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_8b754c();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/9a6358.wgsl b/test/tint/builtins/gen/var/textureGather/9a6358.wgsl
index 8d662be..be2317e 100644
--- a/test/tint/builtins/gen/var/textureGather/9a6358.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/9a6358.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<f32> = textureGather(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_9a6358();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_9a6358();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_9a6358();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/9a6358.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/9a6358.wgsl.expected.wgsl
index 91e2ccd..4c3a7ec 100644
--- a/test/tint/builtins/gen/var/textureGather/9a6358.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/9a6358.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<f32> = textureGather(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_9a6358();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_9a6358();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_9a6358();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/af55b3.wgsl b/test/tint/builtins/gen/var/textureGather/af55b3.wgsl
index 754bffc..9898662 100644
--- a/test/tint/builtins/gen/var/textureGather/af55b3.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/af55b3.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = textureGather(1, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_af55b3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_af55b3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_af55b3();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/af55b3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/af55b3.wgsl.expected.wgsl
index e0e56db..bc63ad8 100644
--- a/test/tint/builtins/gen/var/textureGather/af55b3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/af55b3.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   var res : vec4<f32> = textureGather(1, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_af55b3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_af55b3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_af55b3();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/bb3ac5.wgsl b/test/tint/builtins/gen/var/textureGather/bb3ac5.wgsl
index a0a33cb..6b06f4e 100644
--- a/test/tint/builtins/gen/var/textureGather/bb3ac5.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/bb3ac5.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<i32> = textureGather(1, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_bb3ac5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_bb3ac5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_bb3ac5();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/bb3ac5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/bb3ac5.wgsl.expected.wgsl
index e7eb3e8..62af63a 100644
--- a/test/tint/builtins/gen/var/textureGather/bb3ac5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/bb3ac5.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   var res : vec4<i32> = textureGather(1, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_bb3ac5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_bb3ac5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_bb3ac5();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/c0640c.wgsl b/test/tint/builtins/gen/var/textureGather/c0640c.wgsl
index 6c23eb0..f6e672a 100644
--- a/test/tint/builtins/gen/var/textureGather/c0640c.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/c0640c.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<i32> = textureGather(1, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_c0640c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_c0640c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_c0640c();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/c0640c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/c0640c.wgsl.expected.wgsl
index da3cf25..ecea543 100644
--- a/test/tint/builtins/gen/var/textureGather/c0640c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/c0640c.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<i32> = textureGather(1, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_c0640c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_c0640c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_c0640c();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/d1f187.wgsl b/test/tint/builtins/gen/var/textureGather/d1f187.wgsl
index f6546db..7bd9571 100644
--- a/test/tint/builtins/gen/var/textureGather/d1f187.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/d1f187.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<u32> = textureGather(1, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_d1f187();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_d1f187();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_d1f187();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/d1f187.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/d1f187.wgsl.expected.wgsl
index 93aa44d..6c81729 100644
--- a/test/tint/builtins/gen/var/textureGather/d1f187.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/d1f187.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<u32> = textureGather(1, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_d1f187();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_d1f187();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_d1f187();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/d90605.wgsl b/test/tint/builtins/gen/var/textureGather/d90605.wgsl
index c813243..b932cdb 100644
--- a/test/tint/builtins/gen/var/textureGather/d90605.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/d90605.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<f32> = textureGather(arg_0, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_d90605();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_d90605();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_d90605();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/d90605.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/d90605.wgsl.expected.wgsl
index be99bc5..e27b9c7 100644
--- a/test/tint/builtins/gen/var/textureGather/d90605.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/d90605.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<f32> = textureGather(arg_0, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_d90605();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_d90605();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_d90605();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/e9d390.wgsl b/test/tint/builtins/gen/var/textureGather/e9d390.wgsl
index afee045..556de0f 100644
--- a/test/tint/builtins/gen/var/textureGather/e9d390.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/e9d390.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<i32> = textureGather(1, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_e9d390();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_e9d390();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_e9d390();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/e9d390.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/e9d390.wgsl.expected.wgsl
index 5b73c9d..b4ffcf0 100644
--- a/test/tint/builtins/gen/var/textureGather/e9d390.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/e9d390.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<i32> = textureGather(1, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_e9d390();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_e9d390();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_e9d390();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl b/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl
index e68bee7..2652fa4 100644
--- a/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<u32> = textureGather(1, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_f2c6e3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_f2c6e3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_f2c6e3();
 }
diff --git a/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl.expected.wgsl
index a12cb2e..725af08 100644
--- a/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<u32> = textureGather(1, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGather_f2c6e3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGather_f2c6e3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGather_f2c6e3();
 }
diff --git a/test/tint/builtins/gen/var/textureGatherCompare/182fd4.wgsl b/test/tint/builtins/gen/var/textureGatherCompare/182fd4.wgsl
index c4cd7b2..dbd06b9 100644
--- a/test/tint/builtins/gen/var/textureGatherCompare/182fd4.wgsl
+++ b/test/tint/builtins/gen/var/textureGatherCompare/182fd4.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_182fd4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_182fd4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_182fd4();
 }
diff --git a/test/tint/builtins/gen/var/textureGatherCompare/182fd4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGatherCompare/182fd4.wgsl.expected.wgsl
index 14cdd2b..f990920 100644
--- a/test/tint/builtins/gen/var/textureGatherCompare/182fd4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGatherCompare/182fd4.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_182fd4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_182fd4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_182fd4();
 }
diff --git a/test/tint/builtins/gen/var/textureGatherCompare/313add.wgsl b/test/tint/builtins/gen/var/textureGatherCompare/313add.wgsl
index e7dcda6..f2519ce 100644
--- a/test/tint/builtins/gen/var/textureGatherCompare/313add.wgsl
+++ b/test/tint/builtins/gen/var/textureGatherCompare/313add.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_313add();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_313add();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_313add();
 }
diff --git a/test/tint/builtins/gen/var/textureGatherCompare/313add.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGatherCompare/313add.wgsl.expected.wgsl
index 280870d..6d6db3d 100644
--- a/test/tint/builtins/gen/var/textureGatherCompare/313add.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGatherCompare/313add.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_313add();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_313add();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_313add();
 }
diff --git a/test/tint/builtins/gen/var/textureGatherCompare/60d2d1.wgsl b/test/tint/builtins/gen/var/textureGatherCompare/60d2d1.wgsl
index 279f1cc..cd30ef2 100644
--- a/test/tint/builtins/gen/var/textureGatherCompare/60d2d1.wgsl
+++ b/test/tint/builtins/gen/var/textureGatherCompare/60d2d1.wgsl
@@ -33,18 +33,18 @@
   var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_60d2d1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_60d2d1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_60d2d1();
 }
diff --git a/test/tint/builtins/gen/var/textureGatherCompare/60d2d1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGatherCompare/60d2d1.wgsl.expected.wgsl
index 630a5af..d786d88 100644
--- a/test/tint/builtins/gen/var/textureGatherCompare/60d2d1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGatherCompare/60d2d1.wgsl.expected.wgsl
@@ -9,18 +9,18 @@
   var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_60d2d1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_60d2d1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_60d2d1();
 }
diff --git a/test/tint/builtins/gen/var/textureGatherCompare/6d9352.wgsl b/test/tint/builtins/gen/var/textureGatherCompare/6d9352.wgsl
index 4f8562b..0c0dd06 100644
--- a/test/tint/builtins/gen/var/textureGatherCompare/6d9352.wgsl
+++ b/test/tint/builtins/gen/var/textureGatherCompare/6d9352.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_6d9352();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_6d9352();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_6d9352();
 }
diff --git a/test/tint/builtins/gen/var/textureGatherCompare/6d9352.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGatherCompare/6d9352.wgsl.expected.wgsl
index b45c6fd..2a39d9e 100644
--- a/test/tint/builtins/gen/var/textureGatherCompare/6d9352.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGatherCompare/6d9352.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_6d9352();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_6d9352();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_6d9352();
 }
diff --git a/test/tint/builtins/gen/var/textureGatherCompare/783e65.wgsl b/test/tint/builtins/gen/var/textureGatherCompare/783e65.wgsl
index 5215238..ca16ba1 100644
--- a/test/tint/builtins/gen/var/textureGatherCompare/783e65.wgsl
+++ b/test/tint/builtins/gen/var/textureGatherCompare/783e65.wgsl
@@ -33,18 +33,18 @@
   var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_783e65();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_783e65();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_783e65();
 }
diff --git a/test/tint/builtins/gen/var/textureGatherCompare/783e65.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGatherCompare/783e65.wgsl.expected.wgsl
index 9ce6640..a9edd26 100644
--- a/test/tint/builtins/gen/var/textureGatherCompare/783e65.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGatherCompare/783e65.wgsl.expected.wgsl
@@ -9,18 +9,18 @@
   var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_783e65();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_783e65();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_783e65();
 }
diff --git a/test/tint/builtins/gen/var/textureGatherCompare/f585cc.wgsl b/test/tint/builtins/gen/var/textureGatherCompare/f585cc.wgsl
index 17d15e2..3ff1218 100644
--- a/test/tint/builtins/gen/var/textureGatherCompare/f585cc.wgsl
+++ b/test/tint/builtins/gen/var/textureGatherCompare/f585cc.wgsl
@@ -33,18 +33,18 @@
   var res: vec4<f32> = textureGatherCompare(arg_0, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_f585cc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_f585cc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_f585cc();
 }
diff --git a/test/tint/builtins/gen/var/textureGatherCompare/f585cc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureGatherCompare/f585cc.wgsl.expected.wgsl
index 6281ea0..0bcc5a3 100644
--- a/test/tint/builtins/gen/var/textureGatherCompare/f585cc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureGatherCompare/f585cc.wgsl.expected.wgsl
@@ -9,18 +9,18 @@
   var res : vec4<f32> = textureGatherCompare(arg_0, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureGatherCompare_f585cc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureGatherCompare_f585cc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureGatherCompare_f585cc();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/19cf87.wgsl b/test/tint/builtins/gen/var/textureLoad/19cf87.wgsl
index 1f8fe73..4cd90bc 100644
--- a/test/tint/builtins/gen/var/textureLoad/19cf87.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/19cf87.wgsl
@@ -31,18 +31,18 @@
   var res: f32 = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_19cf87();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_19cf87();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_19cf87();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/19cf87.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureLoad/19cf87.wgsl.expected.wgsl
index 86140df..af6d6de 100644
--- a/test/tint/builtins/gen/var/textureLoad/19cf87.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/19cf87.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : f32 = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_19cf87();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_19cf87();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_19cf87();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/1b8588.wgsl b/test/tint/builtins/gen/var/textureLoad/1b8588.wgsl
index de34cc8..a1085cd 100644
--- a/test/tint/builtins/gen/var/textureLoad/1b8588.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/1b8588.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<u32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_1b8588();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_1b8588();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_1b8588();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/1b8588.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureLoad/1b8588.wgsl.expected.wgsl
index 5d581f2..41cc6cb 100644
--- a/test/tint/builtins/gen/var/textureLoad/1b8588.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/1b8588.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<u32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_1b8588();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_1b8588();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_1b8588();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/1f2016.wgsl b/test/tint/builtins/gen/var/textureLoad/1f2016.wgsl
index 26e385b..e561eba 100644
--- a/test/tint/builtins/gen/var/textureLoad/1f2016.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/1f2016.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_1f2016();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_1f2016();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_1f2016();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/1f2016.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureLoad/1f2016.wgsl.expected.wgsl
index 75576c8..f03bb4f 100644
--- a/test/tint/builtins/gen/var/textureLoad/1f2016.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/1f2016.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_1f2016();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_1f2016();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_1f2016();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/484344.wgsl b/test/tint/builtins/gen/var/textureLoad/484344.wgsl
index 3d76228..a9584df 100644
--- a/test/tint/builtins/gen/var/textureLoad/484344.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/484344.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_484344();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_484344();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_484344();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/484344.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureLoad/484344.wgsl.expected.wgsl
index e8b9067..c4f3174 100644
--- a/test/tint/builtins/gen/var/textureLoad/484344.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/484344.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_484344();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_484344();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_484344();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/4fd803.wgsl b/test/tint/builtins/gen/var/textureLoad/4fd803.wgsl
index feb2dd2..a77c9a8 100644
--- a/test/tint/builtins/gen/var/textureLoad/4fd803.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/4fd803.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<i32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_4fd803();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_4fd803();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_4fd803();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/4fd803.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureLoad/4fd803.wgsl.expected.wgsl
index b6c2086..300acfd 100644
--- a/test/tint/builtins/gen/var/textureLoad/4fd803.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/4fd803.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<i32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_4fd803();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_4fd803();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_4fd803();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/5a2f9d.wgsl b/test/tint/builtins/gen/var/textureLoad/5a2f9d.wgsl
index 70e70e4..f4d4f75 100644
--- a/test/tint/builtins/gen/var/textureLoad/5a2f9d.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/5a2f9d.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<i32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_5a2f9d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_5a2f9d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_5a2f9d();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/5a2f9d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureLoad/5a2f9d.wgsl.expected.wgsl
index c78620e..ea4cf91 100644
--- a/test/tint/builtins/gen/var/textureLoad/5a2f9d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/5a2f9d.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<i32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_5a2f9d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_5a2f9d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_5a2f9d();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/6154d4.wgsl b/test/tint/builtins/gen/var/textureLoad/6154d4.wgsl
index a165d74..6969ab4 100644
--- a/test/tint/builtins/gen/var/textureLoad/6154d4.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/6154d4.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<u32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_6154d4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_6154d4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_6154d4();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/6154d4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureLoad/6154d4.wgsl.expected.wgsl
index f58a9da..def8ddb 100644
--- a/test/tint/builtins/gen/var/textureLoad/6154d4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/6154d4.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<u32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_6154d4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_6154d4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_6154d4();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/6273b1.wgsl b/test/tint/builtins/gen/var/textureLoad/6273b1.wgsl
index 5d6029c..1604622 100644
--- a/test/tint/builtins/gen/var/textureLoad/6273b1.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/6273b1.wgsl
@@ -31,18 +31,18 @@
   var res: f32 = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_6273b1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_6273b1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_6273b1();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/6273b1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureLoad/6273b1.wgsl.expected.wgsl
index 98a60a0..f62b81f 100644
--- a/test/tint/builtins/gen/var/textureLoad/6273b1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/6273b1.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : f32 = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_6273b1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_6273b1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_6273b1();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/79e697.wgsl b/test/tint/builtins/gen/var/textureLoad/79e697.wgsl
index 555abca..1195992 100644
--- a/test/tint/builtins/gen/var/textureLoad/79e697.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/79e697.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<i32> = textureLoad(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_79e697();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_79e697();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_79e697();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/79e697.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureLoad/79e697.wgsl.expected.wgsl
index 4ab97b8..e792f8b 100644
--- a/test/tint/builtins/gen/var/textureLoad/79e697.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/79e697.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   var res : vec4<i32> = textureLoad(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_79e697();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_79e697();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_79e697();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/7c90e5.wgsl b/test/tint/builtins/gen/var/textureLoad/7c90e5.wgsl
index e6ae433..53b28e9 100644
--- a/test/tint/builtins/gen/var/textureLoad/7c90e5.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/7c90e5.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<u32> = textureLoad(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_7c90e5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_7c90e5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_7c90e5();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/7c90e5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureLoad/7c90e5.wgsl.expected.wgsl
index f6852e1..5c79550 100644
--- a/test/tint/builtins/gen/var/textureLoad/7c90e5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/7c90e5.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   var res : vec4<u32> = textureLoad(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_7c90e5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_7c90e5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_7c90e5();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/81c381.wgsl b/test/tint/builtins/gen/var/textureLoad/81c381.wgsl
index 45d48d4..563f872 100644
--- a/test/tint/builtins/gen/var/textureLoad/81c381.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/81c381.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_81c381();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_81c381();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_81c381();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/81c381.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureLoad/81c381.wgsl.expected.wgsl
index 3ada1ac..65bb5f5 100644
--- a/test/tint/builtins/gen/var/textureLoad/81c381.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/81c381.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_81c381();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_81c381();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_81c381();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/87be85.wgsl b/test/tint/builtins/gen/var/textureLoad/87be85.wgsl
index a32ef39..c1ba770 100644
--- a/test/tint/builtins/gen/var/textureLoad/87be85.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/87be85.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<f32> = textureLoad(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_87be85();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_87be85();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_87be85();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/87be85.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureLoad/87be85.wgsl.expected.wgsl
index a033a61..277a603 100644
--- a/test/tint/builtins/gen/var/textureLoad/87be85.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/87be85.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   var res : vec4<f32> = textureLoad(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_87be85();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_87be85();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_87be85();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl
index 1f98b4d..0def2aa 100644
--- a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl
@@ -30,18 +30,18 @@
   var res: vec4<f32> = textureLoad(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_8acf41();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_8acf41();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_8acf41();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.wgsl
index bcabc7d..09bc012 100644
--- a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.wgsl
@@ -5,18 +5,18 @@
   var res : vec4<f32> = textureLoad(arg_0, arg_1);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_8acf41();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_8acf41();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_8acf41();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/9b2667.wgsl b/test/tint/builtins/gen/var/textureLoad/9b2667.wgsl
index 437dd0a..9394a43 100644
--- a/test/tint/builtins/gen/var/textureLoad/9b2667.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/9b2667.wgsl
@@ -32,18 +32,18 @@
   var res: f32 = textureLoad(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_9b2667();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_9b2667();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_9b2667();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/9b2667.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureLoad/9b2667.wgsl.expected.wgsl
index 157799e..3b7f129 100644
--- a/test/tint/builtins/gen/var/textureLoad/9b2667.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/9b2667.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   var res : f32 = textureLoad(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_9b2667();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_9b2667();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_9b2667();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/a583c9.wgsl b/test/tint/builtins/gen/var/textureLoad/a583c9.wgsl
index da8572a..99ef514 100644
--- a/test/tint/builtins/gen/var/textureLoad/a583c9.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/a583c9.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_a583c9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_a583c9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_a583c9();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/a583c9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureLoad/a583c9.wgsl.expected.wgsl
index 2e45ae4..5a92faa 100644
--- a/test/tint/builtins/gen/var/textureLoad/a583c9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/a583c9.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<f32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_a583c9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_a583c9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_a583c9();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/a9a9f5.wgsl b/test/tint/builtins/gen/var/textureLoad/a9a9f5.wgsl
index 2b35241..54483a9 100644
--- a/test/tint/builtins/gen/var/textureLoad/a9a9f5.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/a9a9f5.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<u32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_a9a9f5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_a9a9f5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_a9a9f5();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/a9a9f5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureLoad/a9a9f5.wgsl.expected.wgsl
index 93a3b77..660e818 100644
--- a/test/tint/builtins/gen/var/textureLoad/a9a9f5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/a9a9f5.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<u32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_a9a9f5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_a9a9f5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_a9a9f5();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/c2a480.wgsl b/test/tint/builtins/gen/var/textureLoad/c2a480.wgsl
index 62944a9..42ed922 100644
--- a/test/tint/builtins/gen/var/textureLoad/c2a480.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/c2a480.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<i32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_c2a480();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_c2a480();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_c2a480();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/c2a480.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureLoad/c2a480.wgsl.expected.wgsl
index a28a80c..1ba5cbd 100644
--- a/test/tint/builtins/gen/var/textureLoad/c2a480.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/c2a480.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<i32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_c2a480();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_c2a480();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_c2a480();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/c378ee.wgsl b/test/tint/builtins/gen/var/textureLoad/c378ee.wgsl
index fad4ac3..5174262 100644
--- a/test/tint/builtins/gen/var/textureLoad/c378ee.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/c378ee.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<u32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_c378ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_c378ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_c378ee();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/c378ee.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureLoad/c378ee.wgsl.expected.wgsl
index b957d4a..cb6fd49 100644
--- a/test/tint/builtins/gen/var/textureLoad/c378ee.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/c378ee.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<u32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_c378ee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_c378ee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_c378ee();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/e3d2cc.wgsl b/test/tint/builtins/gen/var/textureLoad/e3d2cc.wgsl
index a8f4f09..a5ef14e 100644
--- a/test/tint/builtins/gen/var/textureLoad/e3d2cc.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/e3d2cc.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<i32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_e3d2cc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_e3d2cc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_e3d2cc();
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/e3d2cc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureLoad/e3d2cc.wgsl.expected.wgsl
index 97cb8d8..f1f2971 100644
--- a/test/tint/builtins/gen/var/textureLoad/e3d2cc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureLoad/e3d2cc.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   var res : vec4<i32> = textureLoad(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureLoad_e3d2cc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureLoad_e3d2cc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureLoad_e3d2cc();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl b/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl
index ee39dbb..e6ab7d4 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_024820();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_024820();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_024820();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.wgsl
index f58c93c..eaa9cc7 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/024820.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_024820();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_024820();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_024820();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl b/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl
index f906fef..77d7dba 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_053df7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_053df7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_053df7();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.wgsl
index fae44b9..06592ac 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/053df7.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_053df7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_053df7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_053df7();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl b/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl
index 55e7ee0..c030a71 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_058cc3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_058cc3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_058cc3();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.wgsl
index ee5d2e0..a39583b 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/058cc3.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_058cc3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_058cc3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_058cc3();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl b/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl
index baf9538..ca4cb54 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_09d05d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_09d05d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_09d05d();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.wgsl
index 2034fa4..cede280 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/09d05d.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_09d05d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_09d05d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_09d05d();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl b/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl
index e21134d..c69857a 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_13b4ce();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_13b4ce();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_13b4ce();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.wgsl
index 5061e7e..15c0d55 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/13b4ce.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_13b4ce();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_13b4ce();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_13b4ce();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl b/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl
index a74f529..f67f703 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_22e53b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_22e53b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_22e53b();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.wgsl
index 6d9957b..2ac3057 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/22e53b.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_22e53b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_22e53b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_22e53b();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl b/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl
index b6f1c48..e7d5963 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_562013();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_562013();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_562013();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.wgsl
index 7223170..c82f593 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/562013.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_562013();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_562013();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_562013();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl b/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl
index d808df9..ab50237 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_5d59cd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_5d59cd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_5d59cd();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.wgsl
index 170c763..28bcd65 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/5d59cd.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_5d59cd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_5d59cd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_5d59cd();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl b/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl
index 680221f..56b97cc 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_68a65b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_68a65b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_68a65b();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.wgsl
index f358993..f7cfa50 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/68a65b.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_68a65b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_68a65b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_68a65b();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl b/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl
index 814bad1..81ba149 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_778bd1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_778bd1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_778bd1();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.wgsl
index c13e994..8274e1e 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/778bd1.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_778bd1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_778bd1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_778bd1();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl b/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl
index 7e843bd..613436c 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_7f1937();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_7f1937();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_7f1937();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.wgsl
index 4450ceb..27ba412 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/7f1937.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_7f1937();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_7f1937();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_7f1937();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl b/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl
index dc95da7..b5ccfa1 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_85f980();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_85f980();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_85f980();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.wgsl
index 4dc70c7..5206f51 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/85f980.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_85f980();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_85f980();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_85f980();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl b/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl
index 09bb3e8..47a8056 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_87953e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_87953e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_87953e();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.wgsl
index 26f73ea..55d0f9d 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/87953e.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_87953e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_87953e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_87953e();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl b/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl
index 3431985..d0931f8 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_893e7c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_893e7c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_893e7c();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.wgsl
index 3cda546..1ef4610 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/893e7c.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_893e7c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_893e7c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_893e7c();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl b/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl
index 096b3e8..4966eb9 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_9700fb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_9700fb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_9700fb();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.wgsl
index ce6acab..d260e36 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/9700fb.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_9700fb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_9700fb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_9700fb();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl b/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl
index 176205a..ec1a5b4 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_a216d2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_a216d2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_a216d2();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.wgsl
index 38fbc89..ef09e0b 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/a216d2.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_a216d2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_a216d2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_a216d2();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl b/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl
index f99e118..3b24ead 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_cd5dc8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_cd5dc8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_cd5dc8();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.wgsl
index 870778b..7fa1228 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/cd5dc8.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_cd5dc8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_cd5dc8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_cd5dc8();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl b/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl
index ba8d85e..f9b9e41 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_d5b228();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_d5b228();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_d5b228();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.wgsl
index 798b0a8..9cf3683 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/d5b228.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_d5b228();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_d5b228();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_d5b228();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl b/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl
index fa0eed7..dffc12e 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_e31be1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_e31be1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_e31be1();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.wgsl
index e47d202..c930384 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/e31be1.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_e31be1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_e31be1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_e31be1();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl b/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl
index 4ee178c..83f7e9d 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_e653c0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_e653c0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_e653c0();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.wgsl
index 4adddfb..601ce1f 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/e653c0.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_e653c0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_e653c0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_e653c0();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl b/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl
index ea1d4a8..fbc2880 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_ee942f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_ee942f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_ee942f();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.wgsl
index 4d48fac..c6d26dd 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/ee942f.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_ee942f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_ee942f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_ee942f();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl b/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl
index 6445227..7deef09 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_f33005();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_f33005();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_f33005();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.wgsl
index 35bd8ca..8d7eee4 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/f33005.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_f33005();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_f33005();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_f33005();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl b/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl
index 0fef907..62b4745 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_fcec98();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_fcec98();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_fcec98();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.wgsl
index 6a1723e..1c1e179 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/fcec98.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_fcec98();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_fcec98();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_fcec98();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl b/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl
index f12ea65..7b340b2 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_ff5e89();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_ff5e89();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_ff5e89();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.wgsl
index cd8cb2d..e7b51b4 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/ff5e89.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLayers(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLayers_ff5e89();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLayers_ff5e89();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLayers_ff5e89();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/076cb5.wgsl b/test/tint/builtins/gen/var/textureNumLevels/076cb5.wgsl
index 96b8e96..ba8ebfb 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/076cb5.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/076cb5.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_076cb5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_076cb5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_076cb5();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/076cb5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/076cb5.wgsl.expected.wgsl
index c04d6e6..0470c75 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/076cb5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/076cb5.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_076cb5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_076cb5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_076cb5();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/080d95.wgsl b/test/tint/builtins/gen/var/textureNumLevels/080d95.wgsl
index 172e090..4d73c90 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/080d95.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/080d95.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_080d95();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_080d95();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_080d95();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/080d95.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/080d95.wgsl.expected.wgsl
index 686c908..f6f058f 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/080d95.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/080d95.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_080d95();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_080d95();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_080d95();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/09ddd0.wgsl b/test/tint/builtins/gen/var/textureNumLevels/09ddd0.wgsl
index dea8f54..c452b95 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/09ddd0.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/09ddd0.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_09ddd0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_09ddd0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_09ddd0();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/09ddd0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/09ddd0.wgsl.expected.wgsl
index 7a4d344..4cebcab 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/09ddd0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/09ddd0.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_09ddd0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_09ddd0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_09ddd0();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/105988.wgsl b/test/tint/builtins/gen/var/textureNumLevels/105988.wgsl
index 67775fb..16c41a5 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/105988.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/105988.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_105988();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_105988();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_105988();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/105988.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/105988.wgsl.expected.wgsl
index 1466976..8eb140d 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/105988.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/105988.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_105988();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_105988();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_105988();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/1e6f3b.wgsl b/test/tint/builtins/gen/var/textureNumLevels/1e6f3b.wgsl
index a921b0c..59fc1e8 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/1e6f3b.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/1e6f3b.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_1e6f3b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_1e6f3b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_1e6f3b();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/1e6f3b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/1e6f3b.wgsl.expected.wgsl
index 3643d3e..58a28d7 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/1e6f3b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/1e6f3b.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_1e6f3b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_1e6f3b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_1e6f3b();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/23f750.wgsl b/test/tint/builtins/gen/var/textureNumLevels/23f750.wgsl
index c44baad..d66e8ad 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/23f750.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/23f750.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_23f750();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_23f750();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_23f750();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/23f750.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/23f750.wgsl.expected.wgsl
index 86bf588..1ce13f7 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/23f750.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/23f750.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_23f750();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_23f750();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_23f750();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/2c3575.wgsl b/test/tint/builtins/gen/var/textureNumLevels/2c3575.wgsl
index e94cb62..3a4bea5 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/2c3575.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/2c3575.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_2c3575();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_2c3575();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_2c3575();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/2c3575.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/2c3575.wgsl.expected.wgsl
index 6f2f54d..8e01960 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/2c3575.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/2c3575.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_2c3575();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_2c3575();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_2c3575();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/32a0ae.wgsl b/test/tint/builtins/gen/var/textureNumLevels/32a0ae.wgsl
index d7c7297..afa2c84 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/32a0ae.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/32a0ae.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_32a0ae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_32a0ae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_32a0ae();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/32a0ae.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/32a0ae.wgsl.expected.wgsl
index e5016eb..13377ce 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/32a0ae.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/32a0ae.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_32a0ae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_32a0ae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_32a0ae();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/5101cf.wgsl b/test/tint/builtins/gen/var/textureNumLevels/5101cf.wgsl
index 371315a..8264674 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/5101cf.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/5101cf.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_5101cf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_5101cf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_5101cf();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/5101cf.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/5101cf.wgsl.expected.wgsl
index 694397b..3425bb2 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/5101cf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/5101cf.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_5101cf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_5101cf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_5101cf();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/51b5bb.wgsl b/test/tint/builtins/gen/var/textureNumLevels/51b5bb.wgsl
index de1c30b..2193999 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/51b5bb.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/51b5bb.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_51b5bb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_51b5bb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_51b5bb();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/51b5bb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/51b5bb.wgsl.expected.wgsl
index 2ee7aa9..71883b0 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/51b5bb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/51b5bb.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_51b5bb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_51b5bb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_51b5bb();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/897aaf.wgsl b/test/tint/builtins/gen/var/textureNumLevels/897aaf.wgsl
index b4559d8..e81c991 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/897aaf.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/897aaf.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_897aaf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_897aaf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_897aaf();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/897aaf.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/897aaf.wgsl.expected.wgsl
index 97e9275..473da66 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/897aaf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/897aaf.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_897aaf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_897aaf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_897aaf();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/9da7a5.wgsl b/test/tint/builtins/gen/var/textureNumLevels/9da7a5.wgsl
index 75623c2..e8bad43 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/9da7a5.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/9da7a5.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_9da7a5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_9da7a5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_9da7a5();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/9da7a5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/9da7a5.wgsl.expected.wgsl
index 5980b48..13135d5 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/9da7a5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/9da7a5.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_9da7a5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_9da7a5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_9da7a5();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/a91c03.wgsl b/test/tint/builtins/gen/var/textureNumLevels/a91c03.wgsl
index 1f9d9ae..fad9082 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/a91c03.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/a91c03.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_a91c03();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_a91c03();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_a91c03();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/a91c03.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/a91c03.wgsl.expected.wgsl
index 7212853..69e569b 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/a91c03.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/a91c03.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_a91c03();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_a91c03();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_a91c03();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/aee7c8.wgsl b/test/tint/builtins/gen/var/textureNumLevels/aee7c8.wgsl
index f28913a..c156037 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/aee7c8.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/aee7c8.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_aee7c8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_aee7c8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_aee7c8();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/aee7c8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/aee7c8.wgsl.expected.wgsl
index 32c8b5a..a9336a0 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/aee7c8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/aee7c8.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_aee7c8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_aee7c8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_aee7c8();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/b1b12b.wgsl b/test/tint/builtins/gen/var/textureNumLevels/b1b12b.wgsl
index a03922c..591d66b 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/b1b12b.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/b1b12b.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_b1b12b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_b1b12b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_b1b12b();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/b1b12b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/b1b12b.wgsl.expected.wgsl
index 97fd9a2..cfb7e4b 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/b1b12b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/b1b12b.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_b1b12b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_b1b12b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_b1b12b();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/b4f5ea.wgsl b/test/tint/builtins/gen/var/textureNumLevels/b4f5ea.wgsl
index 4d81449..fe9bf4f 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/b4f5ea.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/b4f5ea.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_b4f5ea();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_b4f5ea();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_b4f5ea();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/b4f5ea.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/b4f5ea.wgsl.expected.wgsl
index ff1823d..d1f829a 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/b4f5ea.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/b4f5ea.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_b4f5ea();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_b4f5ea();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_b4f5ea();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/d004a9.wgsl b/test/tint/builtins/gen/var/textureNumLevels/d004a9.wgsl
index e191da8..3a20c84 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/d004a9.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/d004a9.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_d004a9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_d004a9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_d004a9();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/d004a9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/d004a9.wgsl.expected.wgsl
index e6efa4a..ce8d24d 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/d004a9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/d004a9.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_d004a9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_d004a9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_d004a9();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/dca09e.wgsl b/test/tint/builtins/gen/var/textureNumLevels/dca09e.wgsl
index a058700..a4af4a8 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/dca09e.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/dca09e.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_dca09e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_dca09e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_dca09e();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/dca09e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/dca09e.wgsl.expected.wgsl
index 81c2ed1..d5e1e54 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/dca09e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/dca09e.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_dca09e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_dca09e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_dca09e();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/e67231.wgsl b/test/tint/builtins/gen/var/textureNumLevels/e67231.wgsl
index 782d93a..84299e9 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/e67231.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/e67231.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_e67231();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_e67231();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_e67231();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/e67231.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/e67231.wgsl.expected.wgsl
index b9b5a95..a42349d 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/e67231.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/e67231.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_e67231();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_e67231();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_e67231();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/ed078b.wgsl b/test/tint/builtins/gen/var/textureNumLevels/ed078b.wgsl
index d3620a2..de4a0b2 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/ed078b.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/ed078b.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_ed078b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_ed078b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_ed078b();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/ed078b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/ed078b.wgsl.expected.wgsl
index 1eb3d87..3a95130 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/ed078b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/ed078b.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_ed078b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_ed078b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_ed078b();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/f46ec6.wgsl b/test/tint/builtins/gen/var/textureNumLevels/f46ec6.wgsl
index 665436b..be5a946 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/f46ec6.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/f46ec6.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_f46ec6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_f46ec6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_f46ec6();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/f46ec6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/f46ec6.wgsl.expected.wgsl
index d380d9b..b162138 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/f46ec6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/f46ec6.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_f46ec6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_f46ec6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_f46ec6();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/f5828d.wgsl b/test/tint/builtins/gen/var/textureNumLevels/f5828d.wgsl
index 0c000af..69e15ed 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/f5828d.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/f5828d.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_f5828d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_f5828d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_f5828d();
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/f5828d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumLevels/f5828d.wgsl.expected.wgsl
index 501fe61..02fdd80 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/f5828d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/f5828d.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumLevels(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumLevels_f5828d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumLevels_f5828d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumLevels_f5828d();
 }
diff --git a/test/tint/builtins/gen/var/textureNumSamples/2c6f14.wgsl b/test/tint/builtins/gen/var/textureNumSamples/2c6f14.wgsl
index 749d887..f99d30f 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/2c6f14.wgsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/2c6f14.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumSamples(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_2c6f14();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumSamples_2c6f14();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_2c6f14();
 }
diff --git a/test/tint/builtins/gen/var/textureNumSamples/2c6f14.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumSamples/2c6f14.wgsl.expected.wgsl
index be49934..460b4e2 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/2c6f14.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/2c6f14.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumSamples(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_2c6f14();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumSamples_2c6f14();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_2c6f14();
 }
diff --git a/test/tint/builtins/gen/var/textureNumSamples/42f8bb.wgsl b/test/tint/builtins/gen/var/textureNumSamples/42f8bb.wgsl
index 429e2eb..b78edc4 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/42f8bb.wgsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/42f8bb.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumSamples(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_42f8bb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumSamples_42f8bb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_42f8bb();
 }
diff --git a/test/tint/builtins/gen/var/textureNumSamples/42f8bb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumSamples/42f8bb.wgsl.expected.wgsl
index ef11b63..e62f047 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/42f8bb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/42f8bb.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumSamples(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_42f8bb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumSamples_42f8bb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_42f8bb();
 }
diff --git a/test/tint/builtins/gen/var/textureNumSamples/449d23.wgsl b/test/tint/builtins/gen/var/textureNumSamples/449d23.wgsl
index e5e5baf..e685ba6 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/449d23.wgsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/449d23.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumSamples(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_449d23();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumSamples_449d23();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_449d23();
 }
diff --git a/test/tint/builtins/gen/var/textureNumSamples/449d23.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumSamples/449d23.wgsl.expected.wgsl
index 9cab69e..0c9fd1f 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/449d23.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/449d23.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumSamples(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_449d23();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumSamples_449d23();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_449d23();
 }
diff --git a/test/tint/builtins/gen/var/textureNumSamples/a3c8a0.wgsl b/test/tint/builtins/gen/var/textureNumSamples/a3c8a0.wgsl
index 11df4fb..1c4626c 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/a3c8a0.wgsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/a3c8a0.wgsl
@@ -29,18 +29,18 @@
   var res: i32 = textureNumSamples(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_a3c8a0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumSamples_a3c8a0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_a3c8a0();
 }
diff --git a/test/tint/builtins/gen/var/textureNumSamples/a3c8a0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureNumSamples/a3c8a0.wgsl.expected.wgsl
index 29a914a..c78e101 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/a3c8a0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/a3c8a0.wgsl.expected.wgsl
@@ -4,18 +4,18 @@
   var res : i32 = textureNumSamples(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureNumSamples_a3c8a0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureNumSamples_a3c8a0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureNumSamples_a3c8a0();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl b/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl
index 0add540..add8269 100644
--- a/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl
@@ -31,7 +31,7 @@
   var res: f32 = textureSample(arg_0, arg_1, arg_2, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_0dff6c();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl.expected.wgsl
index 20cb56f..699d1c5 100644
--- a/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl.expected.wgsl
@@ -7,7 +7,7 @@
   var res : f32 = textureSample(arg_0, arg_1, arg_2, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_0dff6c();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/17e988.wgsl b/test/tint/builtins/gen/var/textureSample/17e988.wgsl
index 96fe6ec..bb82187 100644
--- a/test/tint/builtins/gen/var/textureSample/17e988.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/17e988.wgsl
@@ -32,7 +32,7 @@
   var res: vec4<f32> = textureSample(arg_0, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_17e988();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/17e988.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSample/17e988.wgsl.expected.wgsl
index f2733c2..1b022a5 100644
--- a/test/tint/builtins/gen/var/textureSample/17e988.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/17e988.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
   var res : vec4<f32> = textureSample(arg_0, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_17e988();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/2149ec.wgsl b/test/tint/builtins/gen/var/textureSample/2149ec.wgsl
index 04300d36..212bff7 100644
--- a/test/tint/builtins/gen/var/textureSample/2149ec.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/2149ec.wgsl
@@ -31,7 +31,7 @@
   var res: vec4<f32> = textureSample(arg_0, arg_1, arg_2, vec3<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_2149ec();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/2149ec.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSample/2149ec.wgsl.expected.wgsl
index 8b881c3..8d3f05d 100644
--- a/test/tint/builtins/gen/var/textureSample/2149ec.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/2149ec.wgsl.expected.wgsl
@@ -7,7 +7,7 @@
   var res : vec4<f32> = textureSample(arg_0, arg_1, arg_2, vec3<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_2149ec();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/38bbb9.wgsl b/test/tint/builtins/gen/var/textureSample/38bbb9.wgsl
index fc21827..77fda09 100644
--- a/test/tint/builtins/gen/var/textureSample/38bbb9.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/38bbb9.wgsl
@@ -31,7 +31,7 @@
   var res: f32 = textureSample(arg_0, arg_1, arg_2);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_38bbb9();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/38bbb9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSample/38bbb9.wgsl.expected.wgsl
index b0e17c0..2d6c9d1 100644
--- a/test/tint/builtins/gen/var/textureSample/38bbb9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/38bbb9.wgsl.expected.wgsl
@@ -7,7 +7,7 @@
   var res : f32 = textureSample(arg_0, arg_1, arg_2);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_38bbb9();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/3b50bd.wgsl b/test/tint/builtins/gen/var/textureSample/3b50bd.wgsl
index 903d540..74ae146 100644
--- a/test/tint/builtins/gen/var/textureSample/3b50bd.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/3b50bd.wgsl
@@ -31,7 +31,7 @@
   var res: vec4<f32> = textureSample(arg_0, arg_1, arg_2);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_3b50bd();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/3b50bd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSample/3b50bd.wgsl.expected.wgsl
index 3c2755f..77b2588 100644
--- a/test/tint/builtins/gen/var/textureSample/3b50bd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/3b50bd.wgsl.expected.wgsl
@@ -7,7 +7,7 @@
   var res : vec4<f32> = textureSample(arg_0, arg_1, arg_2);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_3b50bd();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/4dd1bf.wgsl b/test/tint/builtins/gen/var/textureSample/4dd1bf.wgsl
index c4e81e9..fe5133b 100644
--- a/test/tint/builtins/gen/var/textureSample/4dd1bf.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/4dd1bf.wgsl
@@ -32,7 +32,7 @@
   var res: vec4<f32> = textureSample(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_4dd1bf();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/4dd1bf.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSample/4dd1bf.wgsl.expected.wgsl
index 8c622de..a496a7c 100644
--- a/test/tint/builtins/gen/var/textureSample/4dd1bf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/4dd1bf.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
   var res : vec4<f32> = textureSample(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_4dd1bf();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/51b514.wgsl b/test/tint/builtins/gen/var/textureSample/51b514.wgsl
index 323375e..c0c4cdb 100644
--- a/test/tint/builtins/gen/var/textureSample/51b514.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/51b514.wgsl
@@ -31,7 +31,7 @@
   var res: vec4<f32> = textureSample(arg_0, arg_1, arg_2);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_51b514();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/51b514.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSample/51b514.wgsl.expected.wgsl
index 282e6eb..23f0f36 100644
--- a/test/tint/builtins/gen/var/textureSample/51b514.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/51b514.wgsl.expected.wgsl
@@ -7,7 +7,7 @@
   var res : vec4<f32> = textureSample(arg_0, arg_1, arg_2);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_51b514();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/60bf45.wgsl b/test/tint/builtins/gen/var/textureSample/60bf45.wgsl
index 93a8e2d..fd5fc10 100644
--- a/test/tint/builtins/gen/var/textureSample/60bf45.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/60bf45.wgsl
@@ -32,7 +32,7 @@
   var res: f32 = textureSample(arg_0, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_60bf45();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.wgsl
index dd2484a..b8950b6 100644
--- a/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
   var res : f32 = textureSample(arg_0, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_60bf45();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/6717ca.wgsl b/test/tint/builtins/gen/var/textureSample/6717ca.wgsl
index 26bab94..2b9336e 100644
--- a/test/tint/builtins/gen/var/textureSample/6717ca.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/6717ca.wgsl
@@ -32,7 +32,7 @@
   var res: vec4<f32> = textureSample(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_6717ca();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/6717ca.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSample/6717ca.wgsl.expected.wgsl
index 0e18da9..e9a7781 100644
--- a/test/tint/builtins/gen/var/textureSample/6717ca.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/6717ca.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
   var res : vec4<f32> = textureSample(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_6717ca();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/6e64fb.wgsl b/test/tint/builtins/gen/var/textureSample/6e64fb.wgsl
index 8218caa..f7908af 100644
--- a/test/tint/builtins/gen/var/textureSample/6e64fb.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/6e64fb.wgsl
@@ -31,7 +31,7 @@
   var res: vec4<f32> = textureSample(arg_0, arg_1, arg_2);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_6e64fb();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/6e64fb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSample/6e64fb.wgsl.expected.wgsl
index 77e51ef..3e90df9 100644
--- a/test/tint/builtins/gen/var/textureSample/6e64fb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/6e64fb.wgsl.expected.wgsl
@@ -7,7 +7,7 @@
   var res : vec4<f32> = textureSample(arg_0, arg_1, arg_2);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_6e64fb();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/7e9ffd.wgsl b/test/tint/builtins/gen/var/textureSample/7e9ffd.wgsl
index b08991a..f61fb8f 100644
--- a/test/tint/builtins/gen/var/textureSample/7e9ffd.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/7e9ffd.wgsl
@@ -32,7 +32,7 @@
   var res: f32 = textureSample(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_7e9ffd();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/7e9ffd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSample/7e9ffd.wgsl.expected.wgsl
index a2a7b82..87713db 100644
--- a/test/tint/builtins/gen/var/textureSample/7e9ffd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/7e9ffd.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
   var res : f32 = textureSample(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_7e9ffd();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/85c4ba.wgsl b/test/tint/builtins/gen/var/textureSample/85c4ba.wgsl
index c32bd33..7abee78 100644
--- a/test/tint/builtins/gen/var/textureSample/85c4ba.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/85c4ba.wgsl
@@ -31,7 +31,7 @@
   var res: vec4<f32> = textureSample(arg_0, arg_1, arg_2, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_85c4ba();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/85c4ba.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSample/85c4ba.wgsl.expected.wgsl
index 7d0cdcd..2694416 100644
--- a/test/tint/builtins/gen/var/textureSample/85c4ba.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/85c4ba.wgsl.expected.wgsl
@@ -7,7 +7,7 @@
   var res : vec4<f32> = textureSample(arg_0, arg_1, arg_2, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_85c4ba();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl b/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl
index 57133e0..f29a750 100644
--- a/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl
@@ -32,7 +32,7 @@
   var res: f32 = textureSample(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_c2f4e8();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.wgsl
index e80cfd0..4698069 100644
--- a/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
   var res : f32 = textureSample(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_c2f4e8();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/e53267.wgsl b/test/tint/builtins/gen/var/textureSample/e53267.wgsl
index 2f1f317..aaf645d 100644
--- a/test/tint/builtins/gen/var/textureSample/e53267.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/e53267.wgsl
@@ -31,7 +31,7 @@
   var res: vec4<f32> = textureSample(arg_0, arg_1, arg_2);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_e53267();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/e53267.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSample/e53267.wgsl.expected.wgsl
index 3b43395..457d7c7 100644
--- a/test/tint/builtins/gen/var/textureSample/e53267.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/e53267.wgsl.expected.wgsl
@@ -7,7 +7,7 @@
   var res : vec4<f32> = textureSample(arg_0, arg_1, arg_2);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_e53267();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/ea7030.wgsl b/test/tint/builtins/gen/var/textureSample/ea7030.wgsl
index 252c7d3..c2931b7 100644
--- a/test/tint/builtins/gen/var/textureSample/ea7030.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/ea7030.wgsl
@@ -31,7 +31,7 @@
   var res: f32 = textureSample(arg_0, arg_1, arg_2);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_ea7030();
 }
diff --git a/test/tint/builtins/gen/var/textureSample/ea7030.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSample/ea7030.wgsl.expected.wgsl
index ad04cbf..db6574c 100644
--- a/test/tint/builtins/gen/var/textureSample/ea7030.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSample/ea7030.wgsl.expected.wgsl
@@ -7,7 +7,7 @@
   var res : f32 = textureSample(arg_0, arg_1, arg_2);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSample_ea7030();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleBias/53b9f7.wgsl b/test/tint/builtins/gen/var/textureSampleBias/53b9f7.wgsl
index f8e76aa..645af19 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/53b9f7.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/53b9f7.wgsl
@@ -32,7 +32,7 @@
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_53b9f7();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleBias/53b9f7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleBias/53b9f7.wgsl.expected.wgsl
index f83ff9a..38e1477 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/53b9f7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/53b9f7.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_53b9f7();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleBias/594824.wgsl b/test/tint/builtins/gen/var/textureSampleBias/594824.wgsl
index 01130c7..7cbae0c 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/594824.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/594824.wgsl
@@ -32,7 +32,7 @@
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, arg_2, arg_3, vec3<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_594824();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleBias/594824.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleBias/594824.wgsl.expected.wgsl
index 3eecbf6..721b7f9 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/594824.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/594824.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, arg_2, arg_3, vec3<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_594824();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleBias/6a9113.wgsl b/test/tint/builtins/gen/var/textureSampleBias/6a9113.wgsl
index 25548f9..18c4785 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/6a9113.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/6a9113.wgsl
@@ -32,7 +32,7 @@
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_6a9113();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleBias/6a9113.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleBias/6a9113.wgsl.expected.wgsl
index 690d164..6fadfbc 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/6a9113.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/6a9113.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_6a9113();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleBias/80e579.wgsl b/test/tint/builtins/gen/var/textureSampleBias/80e579.wgsl
index 8e3b2d6..816c341 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/80e579.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/80e579.wgsl
@@ -33,7 +33,7 @@
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_80e579();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleBias/80e579.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleBias/80e579.wgsl.expected.wgsl
index 237a498..cffed38 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/80e579.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/80e579.wgsl.expected.wgsl
@@ -9,7 +9,7 @@
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_80e579();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleBias/9dbb51.wgsl b/test/tint/builtins/gen/var/textureSampleBias/9dbb51.wgsl
index 939e239..219bc9c 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/9dbb51.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/9dbb51.wgsl
@@ -33,7 +33,7 @@
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_9dbb51();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleBias/9dbb51.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleBias/9dbb51.wgsl.expected.wgsl
index 1498066..4575eb2 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/9dbb51.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/9dbb51.wgsl.expected.wgsl
@@ -9,7 +9,7 @@
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_9dbb51();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleBias/a161cf.wgsl b/test/tint/builtins/gen/var/textureSampleBias/a161cf.wgsl
index e84735c..82ffc45 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/a161cf.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/a161cf.wgsl
@@ -32,7 +32,7 @@
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_a161cf();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleBias/a161cf.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleBias/a161cf.wgsl.expected.wgsl
index 8ff74b5..4c57169 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/a161cf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/a161cf.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_a161cf();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleBias/d3fa1b.wgsl b/test/tint/builtins/gen/var/textureSampleBias/d3fa1b.wgsl
index 3a77dab..7948c4e8 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/d3fa1b.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/d3fa1b.wgsl
@@ -32,7 +32,7 @@
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_d3fa1b();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleBias/d3fa1b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleBias/d3fa1b.wgsl.expected.wgsl
index 7c8dd12..68b46a8 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/d3fa1b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/d3fa1b.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_d3fa1b();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleBias/eed7c4.wgsl b/test/tint/builtins/gen/var/textureSampleBias/eed7c4.wgsl
index 6e22d23..bf043ad 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/eed7c4.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/eed7c4.wgsl
@@ -33,7 +33,7 @@
   var res: vec4<f32> = textureSampleBias(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_eed7c4();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleBias/eed7c4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleBias/eed7c4.wgsl.expected.wgsl
index df36893..d31043a 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/eed7c4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/eed7c4.wgsl.expected.wgsl
@@ -9,7 +9,7 @@
   var res : vec4<f32> = textureSampleBias(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleBias_eed7c4();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/3a5923.wgsl b/test/tint/builtins/gen/var/textureSampleCompare/3a5923.wgsl
index f8b96de..738b5c5 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/3a5923.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/3a5923.wgsl
@@ -32,7 +32,7 @@
   var res: f32 = textureSampleCompare(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_3a5923();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/3a5923.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleCompare/3a5923.wgsl.expected.wgsl
index f2d1921..18b43a2 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/3a5923.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/3a5923.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
   var res : f32 = textureSampleCompare(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_3a5923();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/63fb83.wgsl b/test/tint/builtins/gen/var/textureSampleCompare/63fb83.wgsl
index 04a8dde..f7789d0 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/63fb83.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/63fb83.wgsl
@@ -32,7 +32,7 @@
   var res: f32 = textureSampleCompare(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_63fb83();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/63fb83.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleCompare/63fb83.wgsl.expected.wgsl
index 6763ef1..da69864 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/63fb83.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/63fb83.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
   var res : f32 = textureSampleCompare(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_63fb83();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/a3ca7e.wgsl b/test/tint/builtins/gen/var/textureSampleCompare/a3ca7e.wgsl
index b3b5cf0..e94690b 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/a3ca7e.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/a3ca7e.wgsl
@@ -33,7 +33,7 @@
   var res: f32 = textureSampleCompare(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_a3ca7e();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/a3ca7e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleCompare/a3ca7e.wgsl.expected.wgsl
index 7d34be2..c5574d9 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/a3ca7e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/a3ca7e.wgsl.expected.wgsl
@@ -9,7 +9,7 @@
   var res : f32 = textureSampleCompare(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_a3ca7e();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl b/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl
index c61a1c1..9bf0514 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl
@@ -33,7 +33,7 @@
   var res: f32 = textureSampleCompare(arg_0, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_af1051();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl.expected.wgsl
index 6f34ddc..ac32534 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl.expected.wgsl
@@ -9,7 +9,7 @@
   var res : f32 = textureSampleCompare(arg_0, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_af1051();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/dd431d.wgsl b/test/tint/builtins/gen/var/textureSampleCompare/dd431d.wgsl
index 287d827..aef2de2 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/dd431d.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/dd431d.wgsl
@@ -33,7 +33,7 @@
   var res: f32 = textureSampleCompare(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_dd431d();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/dd431d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleCompare/dd431d.wgsl.expected.wgsl
index 762d558..d61a1af 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/dd431d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/dd431d.wgsl.expected.wgsl
@@ -9,7 +9,7 @@
   var res : f32 = textureSampleCompare(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_dd431d();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/dec064.wgsl b/test/tint/builtins/gen/var/textureSampleCompare/dec064.wgsl
index dd9d45e..63bb3cf 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/dec064.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/dec064.wgsl
@@ -32,7 +32,7 @@
   var res: f32 = textureSampleCompare(arg_0, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_dec064();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/dec064.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleCompare/dec064.wgsl.expected.wgsl
index a77c90f..39fc916 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/dec064.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/dec064.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
   var res : f32 = textureSampleCompare(arg_0, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompare_dec064();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/1116ed.wgsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/1116ed.wgsl
index d5f827a..e5ccb7d 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/1116ed.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/1116ed.wgsl
@@ -33,18 +33,18 @@
   var res: f32 = textureSampleCompareLevel(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_1116ed();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_1116ed();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_1116ed();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/1116ed.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/1116ed.wgsl.expected.wgsl
index 87b42dd..494aa6c 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/1116ed.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/1116ed.wgsl.expected.wgsl
@@ -9,18 +9,18 @@
   var res : f32 = textureSampleCompareLevel(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_1116ed();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_1116ed();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_1116ed();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/1568e3.wgsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/1568e3.wgsl
index 3580ff6..3744bec 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/1568e3.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/1568e3.wgsl
@@ -32,18 +32,18 @@
   var res: f32 = textureSampleCompareLevel(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_1568e3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_1568e3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_1568e3();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/1568e3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/1568e3.wgsl.expected.wgsl
index 408a7da..032fe41 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/1568e3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/1568e3.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : f32 = textureSampleCompareLevel(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_1568e3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_1568e3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_1568e3();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/2ad2b1.wgsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/2ad2b1.wgsl
index e97fbb7..1e4501f 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/2ad2b1.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/2ad2b1.wgsl
@@ -32,18 +32,18 @@
   var res: f32 = textureSampleCompareLevel(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_2ad2b1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_2ad2b1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_2ad2b1();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/2ad2b1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/2ad2b1.wgsl.expected.wgsl
index 561b936..4f0e0f8 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/2ad2b1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/2ad2b1.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : f32 = textureSampleCompareLevel(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_2ad2b1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_2ad2b1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_2ad2b1();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/4cf3a2.wgsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/4cf3a2.wgsl
index 7b14c47..a4e3605 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/4cf3a2.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/4cf3a2.wgsl
@@ -33,18 +33,18 @@
   var res: f32 = textureSampleCompareLevel(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_4cf3a2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_4cf3a2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_4cf3a2();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/4cf3a2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/4cf3a2.wgsl.expected.wgsl
index d28a731..8ba2618 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/4cf3a2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/4cf3a2.wgsl.expected.wgsl
@@ -9,18 +9,18 @@
   var res : f32 = textureSampleCompareLevel(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_4cf3a2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_4cf3a2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_4cf3a2();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/7f2b9a.wgsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/7f2b9a.wgsl
index a42e7be..7503fbe 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/7f2b9a.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/7f2b9a.wgsl
@@ -32,18 +32,18 @@
   var res: f32 = textureSampleCompareLevel(arg_0, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_7f2b9a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_7f2b9a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_7f2b9a();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/7f2b9a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/7f2b9a.wgsl.expected.wgsl
index 9b8be3b..36f1122 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/7f2b9a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/7f2b9a.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : f32 = textureSampleCompareLevel(arg_0, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_7f2b9a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_7f2b9a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_7f2b9a();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl
index 4772672..d8942b0 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl
@@ -33,18 +33,18 @@
   var res: f32 = textureSampleCompareLevel(arg_0, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_b6e47c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_b6e47c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_b6e47c();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl.expected.wgsl
index 15f9956..3634251 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl.expected.wgsl
@@ -9,18 +9,18 @@
   var res : f32 = textureSampleCompareLevel(arg_0, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleCompareLevel_b6e47c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleCompareLevel_b6e47c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleCompareLevel_b6e47c();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/21402b.wgsl b/test/tint/builtins/gen/var/textureSampleGrad/21402b.wgsl
index bd6e7a0..cb2977c 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/21402b.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/21402b.wgsl
@@ -33,18 +33,18 @@
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_21402b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_21402b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_21402b();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/21402b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleGrad/21402b.wgsl.expected.wgsl
index 23170fb..4df3828 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/21402b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/21402b.wgsl.expected.wgsl
@@ -9,18 +9,18 @@
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_21402b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_21402b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_21402b();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/2ecd8f.wgsl b/test/tint/builtins/gen/var/textureSampleGrad/2ecd8f.wgsl
index ae3e70f..e8ed4a2 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/2ecd8f.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/2ecd8f.wgsl
@@ -34,18 +34,18 @@
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_2ecd8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_2ecd8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_2ecd8f();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/2ecd8f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleGrad/2ecd8f.wgsl.expected.wgsl
index f9434a9..32c526c 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/2ecd8f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/2ecd8f.wgsl.expected.wgsl
@@ -10,18 +10,18 @@
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_2ecd8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_2ecd8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_2ecd8f();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/521263.wgsl b/test/tint/builtins/gen/var/textureSampleGrad/521263.wgsl
index 66d6755..49c13c8 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/521263.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/521263.wgsl
@@ -33,18 +33,18 @@
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_521263();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_521263();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_521263();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/521263.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleGrad/521263.wgsl.expected.wgsl
index e229216..25a3852 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/521263.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/521263.wgsl.expected.wgsl
@@ -9,18 +9,18 @@
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_521263();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_521263();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_521263();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/5312f4.wgsl b/test/tint/builtins/gen/var/textureSampleGrad/5312f4.wgsl
index 7d6f633..259aeca 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/5312f4.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/5312f4.wgsl
@@ -33,18 +33,18 @@
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_5312f4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_5312f4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_5312f4();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/5312f4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleGrad/5312f4.wgsl.expected.wgsl
index badb6a1..f4175ba 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/5312f4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/5312f4.wgsl.expected.wgsl
@@ -9,18 +9,18 @@
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_5312f4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_5312f4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_5312f4();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/5884dd.wgsl b/test/tint/builtins/gen/var/textureSampleGrad/5884dd.wgsl
index 993eb73..90beedc 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/5884dd.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/5884dd.wgsl
@@ -33,18 +33,18 @@
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, arg_2, arg_3, arg_4, vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_5884dd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_5884dd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_5884dd();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/5884dd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleGrad/5884dd.wgsl.expected.wgsl
index cc06594..9e7449a 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/5884dd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/5884dd.wgsl.expected.wgsl
@@ -9,18 +9,18 @@
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, arg_2, arg_3, arg_4, vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_5884dd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_5884dd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_5884dd();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/d4e3c5.wgsl b/test/tint/builtins/gen/var/textureSampleGrad/d4e3c5.wgsl
index 6528fbf..6c2d039 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/d4e3c5.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/d4e3c5.wgsl
@@ -33,18 +33,18 @@
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_d4e3c5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_d4e3c5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_d4e3c5();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/d4e3c5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleGrad/d4e3c5.wgsl.expected.wgsl
index 65b1b2d..c40b807 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/d4e3c5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/d4e3c5.wgsl.expected.wgsl
@@ -9,18 +9,18 @@
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_d4e3c5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_d4e3c5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_d4e3c5();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/d65515.wgsl b/test/tint/builtins/gen/var/textureSampleGrad/d65515.wgsl
index 5e91af7..1e65772 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/d65515.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/d65515.wgsl
@@ -34,18 +34,18 @@
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_d65515();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_d65515();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_d65515();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/d65515.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleGrad/d65515.wgsl.expected.wgsl
index b628819..349514e 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/d65515.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/d65515.wgsl.expected.wgsl
@@ -10,18 +10,18 @@
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_d65515();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_d65515();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_d65515();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/e383db.wgsl b/test/tint/builtins/gen/var/textureSampleGrad/e383db.wgsl
index a39b522..113eb88 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/e383db.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/e383db.wgsl
@@ -34,18 +34,18 @@
   var res: vec4<f32> = textureSampleGrad(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_e383db();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_e383db();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_e383db();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/e383db.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleGrad/e383db.wgsl.expected.wgsl
index 0085daf..7271812 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/e383db.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/e383db.wgsl.expected.wgsl
@@ -10,18 +10,18 @@
   var res : vec4<f32> = textureSampleGrad(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleGrad_e383db();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleGrad_e383db();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleGrad_e383db();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/02be59.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/02be59.wgsl
index 04c34b7..2fde41f 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/02be59.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/02be59.wgsl
@@ -32,18 +32,18 @@
   var res: f32 = textureSampleLevel(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_02be59();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_02be59();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_02be59();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/02be59.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/02be59.wgsl.expected.wgsl
index 22ba964..16b70a6 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/02be59.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/02be59.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : f32 = textureSampleLevel(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_02be59();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_02be59();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_02be59();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/0b0a1b.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/0b0a1b.wgsl
index f73b6b7..7f84786 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/0b0a1b.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/0b0a1b.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_0b0a1b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_0b0a1b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_0b0a1b();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/0b0a1b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/0b0a1b.wgsl.expected.wgsl
index 4924f7f..8419b64 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/0b0a1b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/0b0a1b.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_0b0a1b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_0b0a1b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_0b0a1b();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/0bdd9a.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/0bdd9a.wgsl
index 098737a..ad28037 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/0bdd9a.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/0bdd9a.wgsl
@@ -33,18 +33,18 @@
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_0bdd9a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_0bdd9a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_0bdd9a();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/0bdd9a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/0bdd9a.wgsl.expected.wgsl
index 39434a1..b9c8aa8 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/0bdd9a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/0bdd9a.wgsl.expected.wgsl
@@ -9,18 +9,18 @@
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_0bdd9a();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_0bdd9a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_0bdd9a();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl
index db67e3c..8e0f4c2 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl
@@ -32,18 +32,18 @@
   var res: f32 = textureSampleLevel(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_1b0291();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_1b0291();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_1b0291();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.wgsl
index 8a2bf5c..5bae229 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : f32 = textureSampleLevel(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_1b0291();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_1b0291();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_1b0291();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl
index 673604d..90ab7a9 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl
@@ -33,18 +33,18 @@
   var res: f32 = textureSampleLevel(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_1bf73e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_1bf73e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_1bf73e();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.wgsl
index 26332ba..4cd09cb 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.wgsl
@@ -9,18 +9,18 @@
   var res : f32 = textureSampleLevel(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_1bf73e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_1bf73e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_1bf73e();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/302be4.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/302be4.wgsl
index 5797dbc..0652834 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/302be4.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/302be4.wgsl
@@ -33,18 +33,18 @@
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_302be4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_302be4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_302be4();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/302be4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/302be4.wgsl.expected.wgsl
index a31a4bc..b106d3e 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/302be4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/302be4.wgsl.expected.wgsl
@@ -9,18 +9,18 @@
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_302be4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_302be4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_302be4();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl
index 5069204..b7320fd 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl
@@ -33,18 +33,18 @@
   var res: f32 = textureSampleLevel(arg_0, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_36780e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_36780e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_36780e();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.wgsl
index affece6..8ccce18 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.wgsl
@@ -9,18 +9,18 @@
   var res : f32 = textureSampleLevel(arg_0, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_36780e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_36780e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_36780e();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl
index a64a9e9..0716393 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl
@@ -32,18 +32,18 @@
   var res: f32 = textureSampleLevel(arg_0, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_749baf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_749baf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_749baf();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl.expected.wgsl
index f6f7597..534677f 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : f32 = textureSampleLevel(arg_0, arg_1, arg_2, arg_3, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_749baf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_749baf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_749baf();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl
index fce2b83..448c3d5 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl
@@ -31,18 +31,18 @@
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_979816();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_979816();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_979816();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.wgsl
index c22b080..3c31778 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_979816();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_979816();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_979816();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/abfcc0.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/abfcc0.wgsl
index 7df2fc7..41c233a 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/abfcc0.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/abfcc0.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_abfcc0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_abfcc0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_abfcc0();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/abfcc0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/abfcc0.wgsl.expected.wgsl
index 744d29c..eccd808 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/abfcc0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/abfcc0.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_abfcc0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_abfcc0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_abfcc0();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl
index 1a27086..1a0e175 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl
@@ -33,18 +33,18 @@
   var res: f32 = textureSampleLevel(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_ae5e39();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_ae5e39();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_ae5e39();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.wgsl
index b67993a..730bdfd 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.wgsl
@@ -9,18 +9,18 @@
   var res : f32 = textureSampleLevel(arg_0, arg_1, arg_2, arg_3, arg_4);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_ae5e39();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_ae5e39();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_ae5e39();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/b7c55c.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/b7c55c.wgsl
index 6e68866..ef80220 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/b7c55c.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/b7c55c.wgsl
@@ -33,18 +33,18 @@
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_b7c55c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_b7c55c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_b7c55c();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/b7c55c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/b7c55c.wgsl.expected.wgsl
index 06098f1..9d7aaaf 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/b7c55c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/b7c55c.wgsl.expected.wgsl
@@ -9,18 +9,18 @@
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, arg_2, arg_3, arg_4, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_b7c55c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_b7c55c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_b7c55c();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/c32df7.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/c32df7.wgsl
index 17882a1..9b9b03d 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/c32df7.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/c32df7.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_c32df7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_c32df7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_c32df7();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/c32df7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/c32df7.wgsl.expected.wgsl
index 4920ce1..eca84cb 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/c32df7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/c32df7.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_c32df7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_c32df7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_c32df7();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/c6aca6.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/c6aca6.wgsl
index 5a7d65c..384580d 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/c6aca6.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/c6aca6.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_c6aca6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_c6aca6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_c6aca6();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/c6aca6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/c6aca6.wgsl.expected.wgsl
index 670b79f..1c88dae 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/c6aca6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/c6aca6.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_c6aca6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_c6aca6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_c6aca6();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/dcbecb.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/dcbecb.wgsl
index 944db01..ed4c556 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/dcbecb.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/dcbecb.wgsl
@@ -32,18 +32,18 @@
   var res: vec4<f32> = textureSampleLevel(arg_0, arg_1, arg_2, arg_3, vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_dcbecb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_dcbecb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_dcbecb();
 }
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/dcbecb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureSampleLevel/dcbecb.wgsl.expected.wgsl
index d527e5e..62d461a 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/dcbecb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/dcbecb.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<f32> = textureSampleLevel(arg_0, arg_1, arg_2, arg_3, vec3<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureSampleLevel_dcbecb();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureSampleLevel_dcbecb();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureSampleLevel_dcbecb();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/05ce15.wgsl b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl
index 9b41c0c..2a57f26 100644
--- a/test/tint/builtins/gen/var/textureStore/05ce15.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_05ce15();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_05ce15();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_05ce15();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.wgsl
index 70fbb97..85050b5 100644
--- a/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/05ce15.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_05ce15();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_05ce15();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_05ce15();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl
index 3ec416e..7c913a8 100644
--- a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_064c7f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_064c7f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_064c7f();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.wgsl
index c560892..ba056bc 100644
--- a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_064c7f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_064c7f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_064c7f();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/068641.wgsl b/test/tint/builtins/gen/var/textureStore/068641.wgsl
index 70d0025..4db1985 100644
--- a/test/tint/builtins/gen/var/textureStore/068641.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/068641.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_068641();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_068641();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_068641();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.wgsl
index 606252b..bad48dd 100644
--- a/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/068641.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_068641();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_068641();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_068641();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl
index 0ba9d0a..e552389 100644
--- a/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_0af6b5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_0af6b5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_0af6b5();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.wgsl
index 51ba164..cba9b02 100644
--- a/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/0af6b5.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_0af6b5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_0af6b5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_0af6b5();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl
index 65800b7..b872515 100644
--- a/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_0c3dff();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_0c3dff();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_0c3dff();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.wgsl
index 3ec0971..3da20f2 100644
--- a/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/0c3dff.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_0c3dff();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_0c3dff();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_0c3dff();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/102722.wgsl b/test/tint/builtins/gen/var/textureStore/102722.wgsl
index 7399cd7..6b6d4c7 100644
--- a/test/tint/builtins/gen/var/textureStore/102722.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/102722.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_102722();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_102722();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_102722();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.wgsl
index 6f998c2..6abacf8 100644
--- a/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/102722.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_102722();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_102722();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_102722();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl
index 4be5f7f..beac71a 100644
--- a/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_1bbd08();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_1bbd08();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_1bbd08();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.wgsl
index dc34b23..7043ee1 100644
--- a/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/1bbd08.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_1bbd08();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_1bbd08();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_1bbd08();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl
index 7773d7c..34d8589 100644
--- a/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl
@@ -32,18 +32,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_1c02e7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_1c02e7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_1c02e7();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.wgsl
index 2c24651..d1665ea 100644
--- a/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/1c02e7.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_1c02e7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_1c02e7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_1c02e7();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/22d955.wgsl b/test/tint/builtins/gen/var/textureStore/22d955.wgsl
index 09cc100..9952790 100644
--- a/test/tint/builtins/gen/var/textureStore/22d955.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/22d955.wgsl
@@ -32,18 +32,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_22d955();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_22d955();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_22d955();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.wgsl
index ca3080a..d46610c 100644
--- a/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/22d955.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_22d955();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_22d955();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_22d955();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/26bf70.wgsl b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl
index cc953f3..8709f6c 100644
--- a/test/tint/builtins/gen/var/textureStore/26bf70.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_26bf70();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_26bf70();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_26bf70();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.wgsl
index f2ef696..9585caf 100644
--- a/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/26bf70.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_26bf70();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_26bf70();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_26bf70();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl
index 43d4c05..ecc7e27 100644
--- a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2796b4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_2796b4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_2796b4();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.wgsl
index 73dfab1..00dfc5d 100644
--- a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2796b4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_2796b4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_2796b4();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl
index bd92a3d..a7383fd 100644
--- a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2ac6c7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_2ac6c7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_2ac6c7();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.wgsl
index 07686dd..c370053 100644
--- a/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2ac6c7.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2ac6c7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_2ac6c7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_2ac6c7();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl
index 6896dde..5a40340 100644
--- a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2eb2a4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_2eb2a4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_2eb2a4();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.wgsl
index fd73725..ed6ea1f 100644
--- a/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2eb2a4.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2eb2a4();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_2eb2a4();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_2eb2a4();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl
index f1e001e..d76dca1 100644
--- a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2ed2a3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_2ed2a3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_2ed2a3();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.wgsl
index db9ce1b..811df1c 100644
--- a/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/2ed2a3.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_2ed2a3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_2ed2a3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_2ed2a3();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/31745b.wgsl b/test/tint/builtins/gen/var/textureStore/31745b.wgsl
index 7a0e83a..6b1632a 100644
--- a/test/tint/builtins/gen/var/textureStore/31745b.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/31745b.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_31745b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_31745b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_31745b();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.wgsl
index 2cbbb06..03ffd0b 100644
--- a/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_31745b();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_31745b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_31745b();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/32f368.wgsl b/test/tint/builtins/gen/var/textureStore/32f368.wgsl
index 769031f..79b47d2 100644
--- a/test/tint/builtins/gen/var/textureStore/32f368.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/32f368.wgsl
@@ -32,18 +32,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_32f368();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_32f368();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_32f368();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.wgsl
index 7cf40ce..4e57641 100644
--- a/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/32f368.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_32f368();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_32f368();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_32f368();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/331aee.wgsl b/test/tint/builtins/gen/var/textureStore/331aee.wgsl
index f317f4d..c3f42bc 100644
--- a/test/tint/builtins/gen/var/textureStore/331aee.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/331aee.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_331aee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_331aee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_331aee();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.wgsl
index af9f52b..97cea3b 100644
--- a/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/331aee.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_331aee();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_331aee();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_331aee();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl
index 7309e18..2da4aa4 100644
--- a/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl
@@ -32,18 +32,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_38e8d7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_38e8d7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_38e8d7();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.wgsl
index 650afb8..2ae4af0 100644
--- a/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/38e8d7.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_38e8d7();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_38e8d7();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_38e8d7();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl
index 022d92b..dd97290 100644
--- a/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl
@@ -32,18 +32,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_3a52ac();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_3a52ac();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_3a52ac();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.wgsl
index ec27918..b213fc0 100644
--- a/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/3a52ac.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_3a52ac();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_3a52ac();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_3a52ac();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl
index 959aa09..6d894ab 100644
--- a/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl
@@ -32,18 +32,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_3bb7a1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_3bb7a1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_3bb7a1();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.wgsl
index d79be5d..e8a6e50 100644
--- a/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/3bb7a1.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_3bb7a1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_3bb7a1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_3bb7a1();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl
index b271e2c..fa805a9 100644
--- a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_3bec15();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_3bec15();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_3bec15();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.wgsl
index 63f1025..3b320e3 100644
--- a/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/3bec15.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_3bec15();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_3bec15();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_3bec15();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/441ba8.wgsl b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl
index 73f8b3b..18bbc62 100644
--- a/test/tint/builtins/gen/var/textureStore/441ba8.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_441ba8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_441ba8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_441ba8();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.wgsl
index 77c1fef..773999a 100644
--- a/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/441ba8.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_441ba8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_441ba8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_441ba8();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/4fc057.wgsl b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl
index b1433f5..6bc3eab 100644
--- a/test/tint/builtins/gen/var/textureStore/4fc057.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl
@@ -32,18 +32,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_4fc057();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_4fc057();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_4fc057();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.wgsl
index 5721e03..4cd0bf7 100644
--- a/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/4fc057.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_4fc057();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_4fc057();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_4fc057();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl
index 90117ce..174416b 100644
--- a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_5a2f8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_5a2f8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_5a2f8f();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.wgsl
index b2470f5..26334c9 100644
--- a/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/5a2f8f.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_5a2f8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_5a2f8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_5a2f8f();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/60975f.wgsl b/test/tint/builtins/gen/var/textureStore/60975f.wgsl
index c4a94b6..60439cb 100644
--- a/test/tint/builtins/gen/var/textureStore/60975f.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/60975f.wgsl
@@ -32,18 +32,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_60975f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_60975f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_60975f();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.wgsl
index 78911cc..896fd63 100644
--- a/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/60975f.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_60975f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_60975f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_60975f();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl
index 5be4263..4056200 100644
--- a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_682fd6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_682fd6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_682fd6();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.wgsl
index 8539d14..a7d1e07 100644
--- a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_682fd6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_682fd6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_682fd6();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl
index aac4b66..72f4786 100644
--- a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6b75c3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_6b75c3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_6b75c3();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.wgsl
index 8cc3cbd..37dfe80 100644
--- a/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/6b75c3.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6b75c3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_6b75c3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_6b75c3();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl
index 6579162..407bce7 100644
--- a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6b80d2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_6b80d2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_6b80d2();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.wgsl
index 857f142..84625de 100644
--- a/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/6b80d2.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6b80d2();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_6b80d2();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_6b80d2();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl
index b675a27..f02c857 100644
--- a/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6cff2e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_6cff2e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_6cff2e();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.wgsl
index 2278e2c..37ba249 100644
--- a/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/6cff2e.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6cff2e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_6cff2e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_6cff2e();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/6da692.wgsl b/test/tint/builtins/gen/var/textureStore/6da692.wgsl
index a2738e3..e9c9a24 100644
--- a/test/tint/builtins/gen/var/textureStore/6da692.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/6da692.wgsl
@@ -32,18 +32,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6da692();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_6da692();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_6da692();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.wgsl
index 9c99fa7..c54b75b 100644
--- a/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/6da692.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_6da692();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_6da692();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_6da692();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/731349.wgsl b/test/tint/builtins/gen/var/textureStore/731349.wgsl
index 513104f..baee8b2 100644
--- a/test/tint/builtins/gen/var/textureStore/731349.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/731349.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_731349();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_731349();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_731349();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.wgsl
index 6e8011a..eb1aa14 100644
--- a/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/731349.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_731349();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_731349();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_731349();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/752da6.wgsl b/test/tint/builtins/gen/var/textureStore/752da6.wgsl
index 7d568be..bbd9b52 100644
--- a/test/tint/builtins/gen/var/textureStore/752da6.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/752da6.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_752da6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_752da6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_752da6();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.wgsl
index 7a2a16b..5ec1d8d 100644
--- a/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/752da6.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_752da6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_752da6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_752da6();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl
index b68362e..c418d62 100644
--- a/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_77c0ae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_77c0ae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_77c0ae();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.wgsl
index 6be0361..28994fc 100644
--- a/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/77c0ae.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_77c0ae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_77c0ae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_77c0ae();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl
index 8dd0b94..ee25e7b 100644
--- a/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl
@@ -32,18 +32,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_7cec8d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_7cec8d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_7cec8d();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.wgsl
index 56e1988..2d60abc 100644
--- a/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/7cec8d.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_7cec8d();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_7cec8d();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_7cec8d();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl
index e1ac747..a83cb08 100644
--- a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_7f7fae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_7f7fae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_7f7fae();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.wgsl
index 0c41e78..accb7c0 100644
--- a/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/7f7fae.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_7f7fae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_7f7fae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_7f7fae();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/804942.wgsl b/test/tint/builtins/gen/var/textureStore/804942.wgsl
index 47d4ac7..1b01bfa 100644
--- a/test/tint/builtins/gen/var/textureStore/804942.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/804942.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_804942();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_804942();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_804942();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.wgsl
index 12e178d..171f249 100644
--- a/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/804942.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_804942();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_804942();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_804942();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/805dae.wgsl b/test/tint/builtins/gen/var/textureStore/805dae.wgsl
index edab8e5..c035708 100644
--- a/test/tint/builtins/gen/var/textureStore/805dae.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/805dae.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_805dae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_805dae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_805dae();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.wgsl
index d2ce87cb..3e6f446 100644
--- a/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/805dae.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_805dae();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_805dae();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_805dae();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl
index d44459a..1f609d4 100644
--- a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_83bcc1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_83bcc1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_83bcc1();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.wgsl
index ba0a1d8..32662db 100644
--- a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_83bcc1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_83bcc1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_83bcc1();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/872747.wgsl b/test/tint/builtins/gen/var/textureStore/872747.wgsl
index 67d6535..d0bd3e5 100644
--- a/test/tint/builtins/gen/var/textureStore/872747.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/872747.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_872747();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_872747();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_872747();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.wgsl
index a3090874..f1ce50d 100644
--- a/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_872747();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_872747();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_872747();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/8e0479.wgsl b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl
index 857a688..e7de106 100644
--- a/test/tint/builtins/gen/var/textureStore/8e0479.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl
@@ -32,18 +32,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_8e0479();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_8e0479();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_8e0479();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.wgsl
index 7a726a2..1543d39 100644
--- a/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8e0479.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_8e0479();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_8e0479();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_8e0479();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl
index 8d2c6b9..010be98 100644
--- a/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_8f71a1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_8f71a1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_8f71a1();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.wgsl
index c031e90..709f78e 100644
--- a/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/8f71a1.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_8f71a1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_8f71a1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_8f71a1();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/969534.wgsl b/test/tint/builtins/gen/var/textureStore/969534.wgsl
index a37d5b8..eca050d 100644
--- a/test/tint/builtins/gen/var/textureStore/969534.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/969534.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_969534();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_969534();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_969534();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.wgsl
index 0b2dbba..c83ec95 100644
--- a/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/969534.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_969534();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_969534();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_969534();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl
index 57062ce..4bbfe82 100644
--- a/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_9a3ecc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_9a3ecc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_9a3ecc();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.wgsl
index 2c723c0..04f9424 100644
--- a/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9a3ecc.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_9a3ecc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_9a3ecc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_9a3ecc();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl
index 6e7832e..f9bb1a4 100644
--- a/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl
@@ -32,18 +32,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_9d9cd5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_9d9cd5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_9d9cd5();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.wgsl
index b2a600b..b0dbf55 100644
--- a/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9d9cd5.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_9d9cd5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_9d9cd5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_9d9cd5();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl
index 7e1d29a..fa78e53 100644
--- a/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_9e3ec5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_9e3ec5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_9e3ec5();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.wgsl
index d024cb7..a825923 100644
--- a/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/9e3ec5.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_9e3ec5();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_9e3ec5();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_9e3ec5();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl
index 0ecf958..1ee0592 100644
--- a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_ac67aa();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_ac67aa();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_ac67aa();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.wgsl
index 9dd770c..2145e3a 100644
--- a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_ac67aa();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_ac67aa();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_ac67aa();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/b706b1.wgsl b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl
index 200a831..ca6abce 100644
--- a/test/tint/builtins/gen/var/textureStore/b706b1.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_b706b1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_b706b1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_b706b1();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.wgsl
index 4e5ab39..42775a4 100644
--- a/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/b706b1.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_b706b1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_b706b1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_b706b1();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl
index 58d83e4..300a096 100644
--- a/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_bbcb7f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_bbcb7f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_bbcb7f();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.wgsl
index 87d0a02..1bf17d9 100644
--- a/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/bbcb7f.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_bbcb7f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_bbcb7f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_bbcb7f();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/be6e30.wgsl b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl
index e0293cc..293d9b4 100644
--- a/test/tint/builtins/gen/var/textureStore/be6e30.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_be6e30();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_be6e30();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_be6e30();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.wgsl
index 259fa2b..3fa9fde 100644
--- a/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/be6e30.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_be6e30();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_be6e30();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_be6e30();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl
index f6147df..d1c107a 100644
--- a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_bf775c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_bf775c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_bf775c();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.wgsl
index cdf9966..b2fae4d 100644
--- a/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/bf775c.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_bf775c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_bf775c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_bf775c();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl
index db992bc..2d65ba5 100644
--- a/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_c5af1e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_c5af1e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_c5af1e();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.wgsl
index 1054a77..cc2c9d1 100644
--- a/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/c5af1e.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_c5af1e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_c5af1e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_c5af1e();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/c863be.wgsl b/test/tint/builtins/gen/var/textureStore/c863be.wgsl
index dead2ac..f2c8c98 100644
--- a/test/tint/builtins/gen/var/textureStore/c863be.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/c863be.wgsl
@@ -32,18 +32,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_c863be();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_c863be();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_c863be();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.wgsl
index a6ba2427..daa524b 100644
--- a/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_c863be();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_c863be();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_c863be();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl
index 1b25bc4..5a6930f 100644
--- a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_d73b5c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_d73b5c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_d73b5c();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.wgsl
index 6c5f4cb..9025a3e 100644
--- a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_d73b5c();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_d73b5c();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_d73b5c();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl
index 3c44ab4..5cefc67 100644
--- a/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_dd7d81();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_dd7d81();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_dd7d81();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.wgsl
index 5aa55d7..812587c 100644
--- a/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/dd7d81.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_dd7d81();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_dd7d81();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_dd7d81();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/dde364.wgsl b/test/tint/builtins/gen/var/textureStore/dde364.wgsl
index 13f1d59..247f438 100644
--- a/test/tint/builtins/gen/var/textureStore/dde364.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/dde364.wgsl
@@ -32,18 +32,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_dde364();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_dde364();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_dde364();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.wgsl
index 61c4140..8719ec9 100644
--- a/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_dde364();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_dde364();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_dde364();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl
index dc7a9af..b0d314a 100644
--- a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_e885e8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_e885e8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_e885e8();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.wgsl
index 27bd62e..4b1b9ac 100644
--- a/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/e885e8.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_e885e8();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_e885e8();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_e885e8();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/eb702f.wgsl b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl
index bee1283..b3e494d 100644
--- a/test/tint/builtins/gen/var/textureStore/eb702f.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_eb702f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_eb702f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_eb702f();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.wgsl
index dcb0776..bc8a259 100644
--- a/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/eb702f.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_eb702f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_eb702f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_eb702f();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl
index 564a7b1..d1a714c 100644
--- a/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_eb78b9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_eb78b9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_eb78b9();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.wgsl
index a19c531..2d7e635 100644
--- a/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/eb78b9.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_eb78b9();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_eb78b9();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_eb78b9();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl
index 5dd4ca3..6748aa0 100644
--- a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_ee6acc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_ee6acc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_ee6acc();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.wgsl
index aec0e26..8ba6d40 100644
--- a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_ee6acc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_ee6acc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_ee6acc();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl
index 988c3a7..f94b1f1 100644
--- a/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_ef9f2f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_ef9f2f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_ef9f2f();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.wgsl
index 596115c..1045a89 100644
--- a/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/ef9f2f.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_ef9f2f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_ef9f2f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_ef9f2f();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/f8dead.wgsl b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl
index afc1800..ddfdd94 100644
--- a/test/tint/builtins/gen/var/textureStore/f8dead.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_f8dead();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_f8dead();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_f8dead();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.wgsl
index 4ba27c6..52a1d3e 100644
--- a/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/f8dead.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_f8dead();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_f8dead();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_f8dead();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl
index fe6e874..7598ae8 100644
--- a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl
@@ -32,18 +32,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_f9be83();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_f9be83();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_f9be83();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.wgsl
index b5ade7c..f3601ae 100644
--- a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_f9be83();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_f9be83();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_f9be83();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl
index 08f7947..3172e73 100644
--- a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl
@@ -31,18 +31,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_fb9a8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_fb9a8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_fb9a8f();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.wgsl
index 63241f2..0d6561b 100644
--- a/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/fb9a8f.wgsl.expected.wgsl
@@ -6,18 +6,18 @@
   textureStore(arg_0, arg_1, arg_2);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_fb9a8f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_fb9a8f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_fb9a8f();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl
index 388220d..cd7e249 100644
--- a/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl
@@ -32,18 +32,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_fbf53f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_fbf53f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_fbf53f();
 }
diff --git a/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.wgsl
index e1d54f5..fd79a14 100644
--- a/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/textureStore/fbf53f.wgsl.expected.wgsl
@@ -7,18 +7,18 @@
   textureStore(arg_0, arg_1, arg_2, arg_3);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   textureStore_fbf53f();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   textureStore_fbf53f();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   textureStore_fbf53f();
 }
diff --git a/test/tint/builtins/gen/var/transpose/2585cd.wgsl b/test/tint/builtins/gen/var/transpose/2585cd.wgsl
index 4c3b60a..4655c32 100644
--- a/test/tint/builtins/gen/var/transpose/2585cd.wgsl
+++ b/test/tint/builtins/gen/var/transpose/2585cd.wgsl
@@ -29,18 +29,18 @@
   var res: mat3x4<f32> = transpose(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_2585cd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_2585cd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_2585cd();
 }
diff --git a/test/tint/builtins/gen/var/transpose/2585cd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/transpose/2585cd.wgsl.expected.wgsl
index 52f8c69..3d7c445 100644
--- a/test/tint/builtins/gen/var/transpose/2585cd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/transpose/2585cd.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : mat3x4<f32> = transpose(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_2585cd();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_2585cd();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_2585cd();
 }
diff --git a/test/tint/builtins/gen/var/transpose/31d679.wgsl b/test/tint/builtins/gen/var/transpose/31d679.wgsl
index c94a0ac..67f159c 100644
--- a/test/tint/builtins/gen/var/transpose/31d679.wgsl
+++ b/test/tint/builtins/gen/var/transpose/31d679.wgsl
@@ -29,18 +29,18 @@
   var res: mat2x2<f32> = transpose(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_31d679();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_31d679();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_31d679();
 }
diff --git a/test/tint/builtins/gen/var/transpose/31d679.wgsl.expected.wgsl b/test/tint/builtins/gen/var/transpose/31d679.wgsl.expected.wgsl
index f40121a..797c093 100644
--- a/test/tint/builtins/gen/var/transpose/31d679.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/transpose/31d679.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : mat2x2<f32> = transpose(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_31d679();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_31d679();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_31d679();
 }
diff --git a/test/tint/builtins/gen/var/transpose/31e37e.wgsl b/test/tint/builtins/gen/var/transpose/31e37e.wgsl
index a7b48bf..194e650 100644
--- a/test/tint/builtins/gen/var/transpose/31e37e.wgsl
+++ b/test/tint/builtins/gen/var/transpose/31e37e.wgsl
@@ -29,18 +29,18 @@
   var res: mat2x4<f32> = transpose(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_31e37e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_31e37e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_31e37e();
 }
diff --git a/test/tint/builtins/gen/var/transpose/31e37e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/transpose/31e37e.wgsl.expected.wgsl
index 4215819..f80f91d5 100644
--- a/test/tint/builtins/gen/var/transpose/31e37e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/transpose/31e37e.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : mat2x4<f32> = transpose(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_31e37e();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_31e37e();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_31e37e();
 }
diff --git a/test/tint/builtins/gen/var/transpose/4ce359.wgsl b/test/tint/builtins/gen/var/transpose/4ce359.wgsl
index a4d84b4..9f65afb 100644
--- a/test/tint/builtins/gen/var/transpose/4ce359.wgsl
+++ b/test/tint/builtins/gen/var/transpose/4ce359.wgsl
@@ -29,18 +29,18 @@
   var res: mat4x2<f32> = transpose(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_4ce359();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_4ce359();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_4ce359();
 }
diff --git a/test/tint/builtins/gen/var/transpose/4ce359.wgsl.expected.wgsl b/test/tint/builtins/gen/var/transpose/4ce359.wgsl.expected.wgsl
index bf52185..80670b0 100644
--- a/test/tint/builtins/gen/var/transpose/4ce359.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/transpose/4ce359.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : mat4x2<f32> = transpose(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_4ce359();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_4ce359();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_4ce359();
 }
diff --git a/test/tint/builtins/gen/var/transpose/4dc9a1.wgsl b/test/tint/builtins/gen/var/transpose/4dc9a1.wgsl
index bd7be8c..85bf493 100644
--- a/test/tint/builtins/gen/var/transpose/4dc9a1.wgsl
+++ b/test/tint/builtins/gen/var/transpose/4dc9a1.wgsl
@@ -29,18 +29,18 @@
   var res: mat3x2<f32> = transpose(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_4dc9a1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_4dc9a1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_4dc9a1();
 }
diff --git a/test/tint/builtins/gen/var/transpose/4dc9a1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/transpose/4dc9a1.wgsl.expected.wgsl
index 817b4f2..03a7290 100644
--- a/test/tint/builtins/gen/var/transpose/4dc9a1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/transpose/4dc9a1.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : mat3x2<f32> = transpose(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_4dc9a1();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_4dc9a1();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_4dc9a1();
 }
diff --git a/test/tint/builtins/gen/var/transpose/854336.wgsl b/test/tint/builtins/gen/var/transpose/854336.wgsl
index 3158b4f..83540d0 100644
--- a/test/tint/builtins/gen/var/transpose/854336.wgsl
+++ b/test/tint/builtins/gen/var/transpose/854336.wgsl
@@ -29,18 +29,18 @@
   var res: mat3x3<f32> = transpose(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_854336();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_854336();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_854336();
 }
diff --git a/test/tint/builtins/gen/var/transpose/854336.wgsl.expected.wgsl b/test/tint/builtins/gen/var/transpose/854336.wgsl.expected.wgsl
index 4321df3..1a0b25f 100644
--- a/test/tint/builtins/gen/var/transpose/854336.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/transpose/854336.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : mat3x3<f32> = transpose(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_854336();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_854336();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_854336();
 }
diff --git a/test/tint/builtins/gen/var/transpose/c1b600.wgsl b/test/tint/builtins/gen/var/transpose/c1b600.wgsl
index 64a03ea..8433736 100644
--- a/test/tint/builtins/gen/var/transpose/c1b600.wgsl
+++ b/test/tint/builtins/gen/var/transpose/c1b600.wgsl
@@ -29,18 +29,18 @@
   var res: mat4x4<f32> = transpose(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_c1b600();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_c1b600();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_c1b600();
 }
diff --git a/test/tint/builtins/gen/var/transpose/c1b600.wgsl.expected.wgsl b/test/tint/builtins/gen/var/transpose/c1b600.wgsl.expected.wgsl
index bca9621..8dca670 100644
--- a/test/tint/builtins/gen/var/transpose/c1b600.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/transpose/c1b600.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : mat4x4<f32> = transpose(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_c1b600();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_c1b600();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_c1b600();
 }
diff --git a/test/tint/builtins/gen/var/transpose/d8f8ba.wgsl b/test/tint/builtins/gen/var/transpose/d8f8ba.wgsl
index 6abd82f..4e68e11 100644
--- a/test/tint/builtins/gen/var/transpose/d8f8ba.wgsl
+++ b/test/tint/builtins/gen/var/transpose/d8f8ba.wgsl
@@ -29,18 +29,18 @@
   var res: mat4x3<f32> = transpose(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_d8f8ba();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_d8f8ba();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_d8f8ba();
 }
diff --git a/test/tint/builtins/gen/var/transpose/d8f8ba.wgsl.expected.wgsl b/test/tint/builtins/gen/var/transpose/d8f8ba.wgsl.expected.wgsl
index 14f91f0..3fa2d48 100644
--- a/test/tint/builtins/gen/var/transpose/d8f8ba.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/transpose/d8f8ba.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : mat4x3<f32> = transpose(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_d8f8ba();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_d8f8ba();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_d8f8ba();
 }
diff --git a/test/tint/builtins/gen/var/transpose/ed4bdc.wgsl b/test/tint/builtins/gen/var/transpose/ed4bdc.wgsl
index ed30d84..9e6edda 100644
--- a/test/tint/builtins/gen/var/transpose/ed4bdc.wgsl
+++ b/test/tint/builtins/gen/var/transpose/ed4bdc.wgsl
@@ -29,18 +29,18 @@
   var res: mat2x3<f32> = transpose(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_ed4bdc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_ed4bdc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_ed4bdc();
 }
diff --git a/test/tint/builtins/gen/var/transpose/ed4bdc.wgsl.expected.wgsl b/test/tint/builtins/gen/var/transpose/ed4bdc.wgsl.expected.wgsl
index bdc221e..f744685 100644
--- a/test/tint/builtins/gen/var/transpose/ed4bdc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/transpose/ed4bdc.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : mat2x3<f32> = transpose(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   transpose_ed4bdc();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   transpose_ed4bdc();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   transpose_ed4bdc();
 }
diff --git a/test/tint/builtins/gen/var/trunc/562d05.wgsl b/test/tint/builtins/gen/var/trunc/562d05.wgsl
index d805032..053f2d3 100644
--- a/test/tint/builtins/gen/var/trunc/562d05.wgsl
+++ b/test/tint/builtins/gen/var/trunc/562d05.wgsl
@@ -29,18 +29,18 @@
   var res: vec3<f32> = trunc(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_562d05();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   trunc_562d05();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   trunc_562d05();
 }
diff --git a/test/tint/builtins/gen/var/trunc/562d05.wgsl.expected.wgsl b/test/tint/builtins/gen/var/trunc/562d05.wgsl.expected.wgsl
index 44ace13..0d53d82 100644
--- a/test/tint/builtins/gen/var/trunc/562d05.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/trunc/562d05.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec3<f32> = trunc(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_562d05();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   trunc_562d05();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   trunc_562d05();
 }
diff --git a/test/tint/builtins/gen/var/trunc/e183aa.wgsl b/test/tint/builtins/gen/var/trunc/e183aa.wgsl
index d6f67ed..a272d15 100644
--- a/test/tint/builtins/gen/var/trunc/e183aa.wgsl
+++ b/test/tint/builtins/gen/var/trunc/e183aa.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = trunc(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_e183aa();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   trunc_e183aa();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   trunc_e183aa();
 }
diff --git a/test/tint/builtins/gen/var/trunc/e183aa.wgsl.expected.wgsl b/test/tint/builtins/gen/var/trunc/e183aa.wgsl.expected.wgsl
index 6e1a9a4..4ab39ed 100644
--- a/test/tint/builtins/gen/var/trunc/e183aa.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/trunc/e183aa.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = trunc(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_e183aa();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   trunc_e183aa();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   trunc_e183aa();
 }
diff --git a/test/tint/builtins/gen/var/trunc/eb83df.wgsl b/test/tint/builtins/gen/var/trunc/eb83df.wgsl
index 6b375b7..7cbbe968 100644
--- a/test/tint/builtins/gen/var/trunc/eb83df.wgsl
+++ b/test/tint/builtins/gen/var/trunc/eb83df.wgsl
@@ -29,18 +29,18 @@
   var res: f32 = trunc(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_eb83df();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   trunc_eb83df();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   trunc_eb83df();
 }
diff --git a/test/tint/builtins/gen/var/trunc/eb83df.wgsl.expected.wgsl b/test/tint/builtins/gen/var/trunc/eb83df.wgsl.expected.wgsl
index 183abed..e85b1b2 100644
--- a/test/tint/builtins/gen/var/trunc/eb83df.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/trunc/eb83df.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : f32 = trunc(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_eb83df();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   trunc_eb83df();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   trunc_eb83df();
 }
diff --git a/test/tint/builtins/gen/var/trunc/f370d3.wgsl b/test/tint/builtins/gen/var/trunc/f370d3.wgsl
index a5e40b4..291e95b 100644
--- a/test/tint/builtins/gen/var/trunc/f370d3.wgsl
+++ b/test/tint/builtins/gen/var/trunc/f370d3.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = trunc(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_f370d3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   trunc_f370d3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   trunc_f370d3();
 }
diff --git a/test/tint/builtins/gen/var/trunc/f370d3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/trunc/f370d3.wgsl.expected.wgsl
index 8f0468b..3a179a8 100644
--- a/test/tint/builtins/gen/var/trunc/f370d3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/trunc/f370d3.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = trunc(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   trunc_f370d3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   trunc_f370d3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   trunc_f370d3();
 }
diff --git a/test/tint/builtins/gen/var/unpack2x16float/32a5cf.wgsl b/test/tint/builtins/gen/var/unpack2x16float/32a5cf.wgsl
index c4a57a0..c89ddf8 100644
--- a/test/tint/builtins/gen/var/unpack2x16float/32a5cf.wgsl
+++ b/test/tint/builtins/gen/var/unpack2x16float/32a5cf.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = unpack2x16float(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack2x16float_32a5cf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack2x16float_32a5cf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack2x16float_32a5cf();
 }
diff --git a/test/tint/builtins/gen/var/unpack2x16float/32a5cf.wgsl.expected.wgsl b/test/tint/builtins/gen/var/unpack2x16float/32a5cf.wgsl.expected.wgsl
index 1e475e3..98598a4 100644
--- a/test/tint/builtins/gen/var/unpack2x16float/32a5cf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/unpack2x16float/32a5cf.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = unpack2x16float(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack2x16float_32a5cf();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack2x16float_32a5cf();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack2x16float_32a5cf();
 }
diff --git a/test/tint/builtins/gen/var/unpack2x16snorm/b4aea6.wgsl b/test/tint/builtins/gen/var/unpack2x16snorm/b4aea6.wgsl
index ca0db32..efc5ead 100644
--- a/test/tint/builtins/gen/var/unpack2x16snorm/b4aea6.wgsl
+++ b/test/tint/builtins/gen/var/unpack2x16snorm/b4aea6.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = unpack2x16snorm(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack2x16snorm_b4aea6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack2x16snorm_b4aea6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack2x16snorm_b4aea6();
 }
diff --git a/test/tint/builtins/gen/var/unpack2x16snorm/b4aea6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/unpack2x16snorm/b4aea6.wgsl.expected.wgsl
index f27c905..fbff51d 100644
--- a/test/tint/builtins/gen/var/unpack2x16snorm/b4aea6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/unpack2x16snorm/b4aea6.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = unpack2x16snorm(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack2x16snorm_b4aea6();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack2x16snorm_b4aea6();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack2x16snorm_b4aea6();
 }
diff --git a/test/tint/builtins/gen/var/unpack2x16unorm/7699c0.wgsl b/test/tint/builtins/gen/var/unpack2x16unorm/7699c0.wgsl
index 382b2d6..b0554ac 100644
--- a/test/tint/builtins/gen/var/unpack2x16unorm/7699c0.wgsl
+++ b/test/tint/builtins/gen/var/unpack2x16unorm/7699c0.wgsl
@@ -29,18 +29,18 @@
   var res: vec2<f32> = unpack2x16unorm(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack2x16unorm_7699c0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack2x16unorm_7699c0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack2x16unorm_7699c0();
 }
diff --git a/test/tint/builtins/gen/var/unpack2x16unorm/7699c0.wgsl.expected.wgsl b/test/tint/builtins/gen/var/unpack2x16unorm/7699c0.wgsl.expected.wgsl
index 15f7505..893e4db 100644
--- a/test/tint/builtins/gen/var/unpack2x16unorm/7699c0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/unpack2x16unorm/7699c0.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec2<f32> = unpack2x16unorm(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack2x16unorm_7699c0();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack2x16unorm_7699c0();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack2x16unorm_7699c0();
 }
diff --git a/test/tint/builtins/gen/var/unpack4x8snorm/523fb3.wgsl b/test/tint/builtins/gen/var/unpack4x8snorm/523fb3.wgsl
index eda71e0..1bfc56a 100644
--- a/test/tint/builtins/gen/var/unpack4x8snorm/523fb3.wgsl
+++ b/test/tint/builtins/gen/var/unpack4x8snorm/523fb3.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = unpack4x8snorm(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack4x8snorm_523fb3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack4x8snorm_523fb3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack4x8snorm_523fb3();
 }
diff --git a/test/tint/builtins/gen/var/unpack4x8snorm/523fb3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/unpack4x8snorm/523fb3.wgsl.expected.wgsl
index 5cb2171..14ff067 100644
--- a/test/tint/builtins/gen/var/unpack4x8snorm/523fb3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/unpack4x8snorm/523fb3.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = unpack4x8snorm(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack4x8snorm_523fb3();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack4x8snorm_523fb3();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack4x8snorm_523fb3();
 }
diff --git a/test/tint/builtins/gen/var/unpack4x8unorm/750c74.wgsl b/test/tint/builtins/gen/var/unpack4x8unorm/750c74.wgsl
index be79632..73325b2 100644
--- a/test/tint/builtins/gen/var/unpack4x8unorm/750c74.wgsl
+++ b/test/tint/builtins/gen/var/unpack4x8unorm/750c74.wgsl
@@ -29,18 +29,18 @@
   var res: vec4<f32> = unpack4x8unorm(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack4x8unorm_750c74();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack4x8unorm_750c74();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack4x8unorm_750c74();
 }
diff --git a/test/tint/builtins/gen/var/unpack4x8unorm/750c74.wgsl.expected.wgsl b/test/tint/builtins/gen/var/unpack4x8unorm/750c74.wgsl.expected.wgsl
index ad2faae..70c7980 100644
--- a/test/tint/builtins/gen/var/unpack4x8unorm/750c74.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/unpack4x8unorm/750c74.wgsl.expected.wgsl
@@ -3,18 +3,18 @@
   var res : vec4<f32> = unpack4x8unorm(arg_0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   unpack4x8unorm_750c74();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   unpack4x8unorm_750c74();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   unpack4x8unorm_750c74();
 }
diff --git a/test/tint/builtins/gen/var/workgroupBarrier/a17f7f.wgsl b/test/tint/builtins/gen/var/workgroupBarrier/a17f7f.wgsl
index 3b3f327..c19b983 100644
--- a/test/tint/builtins/gen/var/workgroupBarrier/a17f7f.wgsl
+++ b/test/tint/builtins/gen/var/workgroupBarrier/a17f7f.wgsl
@@ -28,7 +28,7 @@
   workgroupBarrier();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   workgroupBarrier_a17f7f();
 }
diff --git a/test/tint/builtins/gen/var/workgroupBarrier/a17f7f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/workgroupBarrier/a17f7f.wgsl.expected.wgsl
index 34db6c8..377a35e 100644
--- a/test/tint/builtins/gen/var/workgroupBarrier/a17f7f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/workgroupBarrier/a17f7f.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   workgroupBarrier();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   workgroupBarrier_a17f7f();
 }
diff --git a/test/tint/builtins/insertBits/scalar/i32.spvasm.expected.wgsl b/test/tint/builtins/insertBits/scalar/i32.spvasm.expected.wgsl
index d2859bc..b10742e 100644
--- a/test/tint/builtins/insertBits/scalar/i32.spvasm.expected.wgsl
+++ b/test/tint/builtins/insertBits/scalar/i32.spvasm.expected.wgsl
@@ -11,7 +11,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn f() {
   f_1();
 }
diff --git a/test/tint/builtins/insertBits/scalar/u32.spvasm.expected.wgsl b/test/tint/builtins/insertBits/scalar/u32.spvasm.expected.wgsl
index 78bbda0..b10c69d 100644
--- a/test/tint/builtins/insertBits/scalar/u32.spvasm.expected.wgsl
+++ b/test/tint/builtins/insertBits/scalar/u32.spvasm.expected.wgsl
@@ -11,7 +11,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn f() {
   f_1();
 }
diff --git a/test/tint/builtins/insertBits/vec3/i32.spvasm.expected.wgsl b/test/tint/builtins/insertBits/vec3/i32.spvasm.expected.wgsl
index b5c54ca..ecacd5f 100644
--- a/test/tint/builtins/insertBits/vec3/i32.spvasm.expected.wgsl
+++ b/test/tint/builtins/insertBits/vec3/i32.spvasm.expected.wgsl
@@ -11,7 +11,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn f() {
   f_1();
 }
diff --git a/test/tint/builtins/insertBits/vec3/u32.spvasm.expected.wgsl b/test/tint/builtins/insertBits/vec3/u32.spvasm.expected.wgsl
index 69dd715..23b4e7f 100644
--- a/test/tint/builtins/insertBits/vec3/u32.spvasm.expected.wgsl
+++ b/test/tint/builtins/insertBits/vec3/u32.spvasm.expected.wgsl
@@ -11,7 +11,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn f() {
   f_1();
 }
diff --git a/test/tint/builtins/modf.wgsl b/test/tint/builtins/modf.wgsl
index 6991b74..c96821a 100644
--- a/test/tint/builtins/modf.wgsl
+++ b/test/tint/builtins/modf.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     let res = modf(1.23);
     let fract : f32 = res.fract;
diff --git a/test/tint/builtins/modf.wgsl.expected.wgsl b/test/tint/builtins/modf.wgsl.expected.wgsl
index 8e95d07..a0f85b8 100644
--- a/test/tint/builtins/modf.wgsl.expected.wgsl
+++ b/test/tint/builtins/modf.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let res = modf(1.230000019);
   let fract : f32 = res.fract;
diff --git a/test/tint/builtins/radians.spvasm.expected.wgsl b/test/tint/builtins/radians.spvasm.expected.wgsl
index 72b3e06..a3de692 100644
--- a/test/tint/builtins/radians.spvasm.expected.wgsl
+++ b/test/tint/builtins/radians.spvasm.expected.wgsl
@@ -7,7 +7,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/builtins/repeated_use.wgsl b/test/tint/builtins/repeated_use.wgsl
index 511968d..026e183 100644
--- a/test/tint/builtins/repeated_use.wgsl
+++ b/test/tint/builtins/repeated_use.wgsl
@@ -1,6 +1,6 @@
 // Check that for backends that generate builtin helpers, repeated use of the
 // same builtin overload results in single helper being generated.
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = degrees(vec4<f32>());
     _ = degrees(vec4<f32>(1.));
diff --git a/test/tint/builtins/repeated_use.wgsl.expected.wgsl b/test/tint/builtins/repeated_use.wgsl.expected.wgsl
index 7b270c7..7f848c6 100644
--- a/test/tint/builtins/repeated_use.wgsl.expected.wgsl
+++ b/test/tint/builtins/repeated_use.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = degrees(vec4<f32>());
   _ = degrees(vec4<f32>(1.0));
diff --git a/test/tint/builtins/textureDimensions/depth_ms.spvasm.expected.wgsl b/test/tint/builtins/textureDimensions/depth_ms.spvasm.expected.wgsl
index 3a370a1..078ede8 100644
--- a/test/tint/builtins/textureDimensions/depth_ms.spvasm.expected.wgsl
+++ b/test/tint/builtins/textureDimensions/depth_ms.spvasm.expected.wgsl
@@ -25,7 +25,7 @@
   tint_symbol_1_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> vertex_main_out {
   vertex_main_1();
   return vertex_main_out(tint_symbol_1);
@@ -36,7 +36,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fragment_main_1();
 }
@@ -46,7 +46,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn compute_main() {
   compute_main_1();
 }
diff --git a/test/tint/builtins/textureGather/f32/alpha.wgsl b/test/tint/builtins/textureGather/f32/alpha.wgsl
index 1336988..2b3eac5 100644
--- a/test/tint/builtins/textureGather/f32/alpha.wgsl
+++ b/test/tint/builtins/textureGather/f32/alpha.wgsl
@@ -1,7 +1,7 @@
 @group(1) @binding(0) var t : texture_2d<f32>;
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<f32> = textureGather(3, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/f32/alpha.wgsl.expected.wgsl b/test/tint/builtins/textureGather/f32/alpha.wgsl.expected.wgsl
index 3cf1392..57049af 100644
--- a/test/tint/builtins/textureGather/f32/alpha.wgsl.expected.wgsl
+++ b/test/tint/builtins/textureGather/f32/alpha.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<f32> = textureGather(3, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/f32/blue.wgsl b/test/tint/builtins/textureGather/f32/blue.wgsl
index f31387b..fc3054d 100644
--- a/test/tint/builtins/textureGather/f32/blue.wgsl
+++ b/test/tint/builtins/textureGather/f32/blue.wgsl
@@ -1,7 +1,7 @@
 @group(1) @binding(0) var t : texture_2d<f32>;
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<f32> = textureGather(2, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/f32/blue.wgsl.expected.wgsl b/test/tint/builtins/textureGather/f32/blue.wgsl.expected.wgsl
index 2512919..e7ddb12 100644
--- a/test/tint/builtins/textureGather/f32/blue.wgsl.expected.wgsl
+++ b/test/tint/builtins/textureGather/f32/blue.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<f32> = textureGather(2, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/f32/green.wgsl b/test/tint/builtins/textureGather/f32/green.wgsl
index c0574ca..9f3b067 100644
--- a/test/tint/builtins/textureGather/f32/green.wgsl
+++ b/test/tint/builtins/textureGather/f32/green.wgsl
@@ -1,7 +1,7 @@
 @group(1) @binding(0) var t : texture_2d<f32>;
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<f32> = textureGather(1, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/f32/green.wgsl.expected.wgsl b/test/tint/builtins/textureGather/f32/green.wgsl.expected.wgsl
index 524c0c4..ea2c87f 100644
--- a/test/tint/builtins/textureGather/f32/green.wgsl.expected.wgsl
+++ b/test/tint/builtins/textureGather/f32/green.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<f32> = textureGather(1, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/f32/red.wgsl b/test/tint/builtins/textureGather/f32/red.wgsl
index 4eb8c60..abcb93a 100644
--- a/test/tint/builtins/textureGather/f32/red.wgsl
+++ b/test/tint/builtins/textureGather/f32/red.wgsl
@@ -1,7 +1,7 @@
 @group(1) @binding(0) var t : texture_2d<f32>;
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<f32> = textureGather(0, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/f32/red.wgsl.expected.wgsl b/test/tint/builtins/textureGather/f32/red.wgsl.expected.wgsl
index 0524429..cb29a4c 100644
--- a/test/tint/builtins/textureGather/f32/red.wgsl.expected.wgsl
+++ b/test/tint/builtins/textureGather/f32/red.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<f32> = textureGather(0, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/i32/alpha.wgsl b/test/tint/builtins/textureGather/i32/alpha.wgsl
index 42133c9..88813ac 100644
--- a/test/tint/builtins/textureGather/i32/alpha.wgsl
+++ b/test/tint/builtins/textureGather/i32/alpha.wgsl
@@ -1,7 +1,7 @@
 @group(1) @binding(0) var t : texture_2d<i32>;
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<i32> = textureGather(3, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/i32/alpha.wgsl.expected.wgsl b/test/tint/builtins/textureGather/i32/alpha.wgsl.expected.wgsl
index 35d727c..60cd449 100644
--- a/test/tint/builtins/textureGather/i32/alpha.wgsl.expected.wgsl
+++ b/test/tint/builtins/textureGather/i32/alpha.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<i32> = textureGather(3, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/i32/blue.wgsl b/test/tint/builtins/textureGather/i32/blue.wgsl
index 396dd52..43406d3 100644
--- a/test/tint/builtins/textureGather/i32/blue.wgsl
+++ b/test/tint/builtins/textureGather/i32/blue.wgsl
@@ -1,7 +1,7 @@
 @group(1) @binding(0) var t : texture_2d<i32>;
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<i32> = textureGather(2, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/i32/blue.wgsl.expected.wgsl b/test/tint/builtins/textureGather/i32/blue.wgsl.expected.wgsl
index 116439f..1df66dd 100644
--- a/test/tint/builtins/textureGather/i32/blue.wgsl.expected.wgsl
+++ b/test/tint/builtins/textureGather/i32/blue.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<i32> = textureGather(2, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/i32/green.wgsl b/test/tint/builtins/textureGather/i32/green.wgsl
index ee162d1..ed02d1f 100644
--- a/test/tint/builtins/textureGather/i32/green.wgsl
+++ b/test/tint/builtins/textureGather/i32/green.wgsl
@@ -1,7 +1,7 @@
 @group(1) @binding(0) var t : texture_2d<i32>;
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<i32> = textureGather(1, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/i32/green.wgsl.expected.wgsl b/test/tint/builtins/textureGather/i32/green.wgsl.expected.wgsl
index 6f75122..60c563c 100644
--- a/test/tint/builtins/textureGather/i32/green.wgsl.expected.wgsl
+++ b/test/tint/builtins/textureGather/i32/green.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<i32> = textureGather(1, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/i32/red.wgsl b/test/tint/builtins/textureGather/i32/red.wgsl
index 60117f7..3545c1c 100644
--- a/test/tint/builtins/textureGather/i32/red.wgsl
+++ b/test/tint/builtins/textureGather/i32/red.wgsl
@@ -1,7 +1,7 @@
 @group(1) @binding(0) var t : texture_2d<i32>;
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<i32> = textureGather(0, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/i32/red.wgsl.expected.wgsl b/test/tint/builtins/textureGather/i32/red.wgsl.expected.wgsl
index c2552b0..3793b29 100644
--- a/test/tint/builtins/textureGather/i32/red.wgsl.expected.wgsl
+++ b/test/tint/builtins/textureGather/i32/red.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<i32> = textureGather(0, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/u32/alpha.wgsl b/test/tint/builtins/textureGather/u32/alpha.wgsl
index adcc5fd..51f05de 100644
--- a/test/tint/builtins/textureGather/u32/alpha.wgsl
+++ b/test/tint/builtins/textureGather/u32/alpha.wgsl
@@ -1,7 +1,7 @@
 @group(1) @binding(0) var t : texture_2d<u32>;
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<u32> = textureGather(3, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/u32/alpha.wgsl.expected.wgsl b/test/tint/builtins/textureGather/u32/alpha.wgsl.expected.wgsl
index 496586d..966ca54 100644
--- a/test/tint/builtins/textureGather/u32/alpha.wgsl.expected.wgsl
+++ b/test/tint/builtins/textureGather/u32/alpha.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<u32> = textureGather(3, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/u32/blue.wgsl b/test/tint/builtins/textureGather/u32/blue.wgsl
index 30e266c..06727a6 100644
--- a/test/tint/builtins/textureGather/u32/blue.wgsl
+++ b/test/tint/builtins/textureGather/u32/blue.wgsl
@@ -1,7 +1,7 @@
 @group(1) @binding(0) var t : texture_2d<u32>;
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<u32> = textureGather(2, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/u32/blue.wgsl.expected.wgsl b/test/tint/builtins/textureGather/u32/blue.wgsl.expected.wgsl
index eb2c3e1..41aab9e 100644
--- a/test/tint/builtins/textureGather/u32/blue.wgsl.expected.wgsl
+++ b/test/tint/builtins/textureGather/u32/blue.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<u32> = textureGather(2, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/u32/green.wgsl b/test/tint/builtins/textureGather/u32/green.wgsl
index 5b9ae18..9012bad 100644
--- a/test/tint/builtins/textureGather/u32/green.wgsl
+++ b/test/tint/builtins/textureGather/u32/green.wgsl
@@ -1,7 +1,7 @@
 @group(1) @binding(0) var t : texture_2d<u32>;
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<u32> = textureGather(1, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/u32/green.wgsl.expected.wgsl b/test/tint/builtins/textureGather/u32/green.wgsl.expected.wgsl
index 935c1e2..2c60e95 100644
--- a/test/tint/builtins/textureGather/u32/green.wgsl.expected.wgsl
+++ b/test/tint/builtins/textureGather/u32/green.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<u32> = textureGather(1, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/u32/red.wgsl b/test/tint/builtins/textureGather/u32/red.wgsl
index 70ec158..70a9c65 100644
--- a/test/tint/builtins/textureGather/u32/red.wgsl
+++ b/test/tint/builtins/textureGather/u32/red.wgsl
@@ -1,7 +1,7 @@
 @group(1) @binding(0) var t : texture_2d<u32>;
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<u32> = textureGather(0, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureGather/u32/red.wgsl.expected.wgsl b/test/tint/builtins/textureGather/u32/red.wgsl.expected.wgsl
index 528958d..a5c334c 100644
--- a/test/tint/builtins/textureGather/u32/red.wgsl.expected.wgsl
+++ b/test/tint/builtins/textureGather/u32/red.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(1) @binding(1) var s : sampler;
 
-@stage(fragment)
+@fragment
 fn main() {
   var res : vec4<u32> = textureGather(0, t, s, vec2<f32>());
 }
diff --git a/test/tint/builtins/textureLoad/depth_ms.spvasm.expected.wgsl b/test/tint/builtins/textureLoad/depth_ms.spvasm.expected.wgsl
index f494c77..ca431c7 100644
--- a/test/tint/builtins/textureLoad/depth_ms.spvasm.expected.wgsl
+++ b/test/tint/builtins/textureLoad/depth_ms.spvasm.expected.wgsl
@@ -25,7 +25,7 @@
   tint_symbol_1_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> vertex_main_out {
   vertex_main_1();
   return vertex_main_out(tint_symbol_1);
@@ -36,7 +36,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fragment_main_1();
 }
@@ -46,7 +46,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn compute_main() {
   compute_main_1();
 }
diff --git a/test/tint/builtins/textureLoad/texture_external_param.wgsl b/test/tint/builtins/textureLoad/texture_external_param.wgsl
index 4a8edf8..b246fe2 100644
--- a/test/tint/builtins/textureLoad/texture_external_param.wgsl
+++ b/test/tint/builtins/textureLoad/texture_external_param.wgsl
@@ -8,18 +8,18 @@
   var res: vec4<f32> = textureLoad2d(arg_0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   doTextureLoad();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   doTextureLoad();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   doTextureLoad();
 }
diff --git a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.wgsl b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.wgsl
index edba45d..cb2c130 100644
--- a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.wgsl
+++ b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<f32> = textureLoad2d(arg_0, vec2<i32>());
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   doTextureLoad();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   doTextureLoad();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   doTextureLoad();
 }
diff --git a/test/tint/builtins/textureLoad/texture_param.wgsl b/test/tint/builtins/textureLoad/texture_param.wgsl
index 81f359e..e51ece0 100644
--- a/test/tint/builtins/textureLoad/texture_param.wgsl
+++ b/test/tint/builtins/textureLoad/texture_param.wgsl
@@ -8,18 +8,18 @@
   var res: vec4<i32> = textureLoad2d(arg_0, vec2<i32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   doTextureLoad();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   doTextureLoad();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   doTextureLoad();
 }
diff --git a/test/tint/builtins/textureLoad/texture_param.wgsl.expected.wgsl b/test/tint/builtins/textureLoad/texture_param.wgsl.expected.wgsl
index 13f6d82..0213847 100644
--- a/test/tint/builtins/textureLoad/texture_param.wgsl.expected.wgsl
+++ b/test/tint/builtins/textureLoad/texture_param.wgsl.expected.wgsl
@@ -8,18 +8,18 @@
   var res : vec4<i32> = textureLoad2d(arg_0, vec2<i32>(), 0);
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   doTextureLoad();
   return vec4<f32>();
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   doTextureLoad();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn compute_main() {
   doTextureLoad();
 }
diff --git a/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.wgsl b/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.wgsl
index 455889a..b2c5a8d 100644
--- a/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.wgsl
+++ b/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.wgsl
@@ -25,7 +25,7 @@
   tint_symbol_1_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn vertex_main() -> vertex_main_out {
   vertex_main_1();
   return vertex_main_out(tint_symbol_1);
@@ -36,7 +36,7 @@
   return;
 }
 
-@stage(fragment)
+@fragment
 fn fragment_main() {
   fragment_main_1();
 }
@@ -46,7 +46,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn compute_main() {
   compute_main_1();
 }
diff --git a/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl b/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl
index eac9ef6..0e214f6 100644
--- a/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl
+++ b/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = mat3x3<f32>(vec3<f32>( 1.,  2.,  3.), vec3<f32>( 4.,  5.,  6.), vec3<f32>( 7.,  8.,  9.));
     let b = mat3x3<f32>(vec3<f32>(-1., -2., -3.), vec3<f32>(-4., -5., -6.), vec3<f32>(-7., -8., -9.));
diff --git a/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.wgsl
index 2dfb7c8..8aa0a4c 100644
--- a/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = mat3x3<f32>(vec3<f32>(1.0, 2.0, 3.0), vec3<f32>(4.0, 5.0, 6.0), vec3<f32>(7.0, 8.0, 9.0));
   let b = mat3x3<f32>(vec3<f32>(-1.0, -2.0, -3.0), vec3<f32>(-4.0, -5.0, -6.0), vec3<f32>(-7.0, -8.0, -9.0));
diff --git a/test/tint/expressions/binary/add/scalar-scalar/f32.wgsl b/test/tint/expressions/binary/add/scalar-scalar/f32.wgsl
index 6dcc653..348f59e 100644
--- a/test/tint/expressions/binary/add/scalar-scalar/f32.wgsl
+++ b/test/tint/expressions/binary/add/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1.;
     let b = 2.;
diff --git a/test/tint/expressions/binary/add/scalar-scalar/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/add/scalar-scalar/f32.wgsl.expected.wgsl
index 0997a1a..a8dbf32 100644
--- a/test/tint/expressions/binary/add/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/add/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1.0;
   let b = 2.0;
diff --git a/test/tint/expressions/binary/add/scalar-scalar/i32.wgsl b/test/tint/expressions/binary/add/scalar-scalar/i32.wgsl
index 93e8a35..e772c34 100644
--- a/test/tint/expressions/binary/add/scalar-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/add/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2;
diff --git a/test/tint/expressions/binary/add/scalar-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/add/scalar-scalar/i32.wgsl.expected.wgsl
index 46fe066..417ace5 100644
--- a/test/tint/expressions/binary/add/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/add/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2;
diff --git a/test/tint/expressions/binary/add/scalar-scalar/u32.wgsl b/test/tint/expressions/binary/add/scalar-scalar/u32.wgsl
index cf3c56d..a55df64 100644
--- a/test/tint/expressions/binary/add/scalar-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/add/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/tint/expressions/binary/add/scalar-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/add/scalar-scalar/u32.wgsl.expected.wgsl
index c052925..ca5acd2 100644
--- a/test/tint/expressions/binary/add/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/add/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl b/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl
index 8467ba6..4bd9fdf 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4.;
     let b = vec3<f32>(1., 2., 3.);
diff --git a/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.wgsl
index 95a584b..160e0f3 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4.0;
   let b = vec3<f32>(1.0, 2.0, 3.0);
diff --git a/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl b/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl
index a61cd74..849fab2 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4;
     let b = vec3<i32>(1, 2, 3);
diff --git a/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.wgsl
index c1193c6..2d9c3f8 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4;
   let b = vec3<i32>(1, 2, 3);
diff --git a/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl b/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl
index 0fb18d4..a37afa7 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4u;
     let b = vec3<u32>(1u, 2u, 3u);
diff --git a/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.wgsl
index 2ec0595..0ece2c3 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4u;
   let b = vec3<u32>(1u, 2u, 3u);
diff --git a/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl b/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl
index 38320af..d7234db 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl
+++ b/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = 4.;
diff --git a/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.wgsl
index 86904e5..bdc58ee 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = 4.0;
diff --git a/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl b/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl
index eacbc3b..10ad527 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = 4;
diff --git a/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.wgsl
index e4775e1..29a003d 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = 4;
diff --git a/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl b/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl
index 50ceead..603bce2 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = 4u;
diff --git a/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.wgsl
index 8f0116a..d5a5ddd 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = 4u;
diff --git a/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl b/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl
index 5658e4e..86573be 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = vec3<f32>(4., 5., 6.);
diff --git a/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.wgsl
index b18ded4..635bd48 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = vec3<f32>(4.0, 5.0, 6.0);
diff --git a/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl b/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl
index 98ca5c2..b9ef483 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(4, 5, 6);
diff --git a/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.wgsl
index 58712ea..a5d4297 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(4, 5, 6);
diff --git a/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl b/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl
index f6d72ce..50400c7 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.wgsl
index db61dda..1569266 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/bit-and/scalar-scalar/bool.wgsl b/test/tint/expressions/binary/bit-and/scalar-scalar/bool.wgsl
index ffe06b2..4c3b55d 100644
--- a/test/tint/expressions/binary/bit-and/scalar-scalar/bool.wgsl
+++ b/test/tint/expressions/binary/bit-and/scalar-scalar/bool.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = true;
     let b = false;
diff --git a/test/tint/expressions/binary/bit-and/scalar-scalar/bool.wgsl.expected.wgsl b/test/tint/expressions/binary/bit-and/scalar-scalar/bool.wgsl.expected.wgsl
index 0c1fb6b..cd359b7 100644
--- a/test/tint/expressions/binary/bit-and/scalar-scalar/bool.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/bit-and/scalar-scalar/bool.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = true;
   let b = false;
diff --git a/test/tint/expressions/binary/bit-and/scalar-scalar/i32.wgsl b/test/tint/expressions/binary/bit-and/scalar-scalar/i32.wgsl
index e4d1a86..2b7c554 100644
--- a/test/tint/expressions/binary/bit-and/scalar-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/bit-and/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2;
diff --git a/test/tint/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.wgsl
index 24bab02..7d7e9b7 100644
--- a/test/tint/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2;
diff --git a/test/tint/expressions/binary/bit-and/scalar-scalar/u32.wgsl b/test/tint/expressions/binary/bit-and/scalar-scalar/u32.wgsl
index c297f9d..3485fa7db 100644
--- a/test/tint/expressions/binary/bit-and/scalar-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/bit-and/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/tint/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.wgsl
index a158e4c..b83374b 100644
--- a/test/tint/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl b/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl
index a463c0e..bc65645 100644
--- a/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl
+++ b/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<bool>(true, true, false);
     let b = vec3<bool>(true, false, true);
diff --git a/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.wgsl b/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.wgsl
index 6610d13..d1e9a77 100644
--- a/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<bool>(true, true, false);
   let b = vec3<bool>(true, false, true);
diff --git a/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl b/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl
index c2be41d..78641a7 100644
--- a/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(4, 5, 6);
diff --git a/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.wgsl
index 334474a..36203ae 100644
--- a/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(4, 5, 6);
diff --git a/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl b/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl
index 8383a86..5bdc140 100644
--- a/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.wgsl
index 7a95503..169e15c 100644
--- a/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/bit-or/scalar-scalar/i32.wgsl b/test/tint/expressions/binary/bit-or/scalar-scalar/i32.wgsl
index e0c227d..a5390df 100644
--- a/test/tint/expressions/binary/bit-or/scalar-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/bit-or/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2;
diff --git a/test/tint/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.wgsl
index 65617cb..19fd983 100644
--- a/test/tint/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2;
diff --git a/test/tint/expressions/binary/bit-or/scalar-scalar/u32.wgsl b/test/tint/expressions/binary/bit-or/scalar-scalar/u32.wgsl
index c8d4257..d16a8b2 100644
--- a/test/tint/expressions/binary/bit-or/scalar-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/bit-or/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/tint/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.wgsl
index 3c9bed3..19d671e 100644
--- a/test/tint/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl b/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl
index d5f6036..0f2f83b 100644
--- a/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(4, 5, 6);
diff --git a/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.wgsl
index ffc87a0..54093a0 100644
--- a/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(4, 5, 6);
diff --git a/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl b/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl
index cac160f..43f1e9d 100644
--- a/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.wgsl
index 580a328..acdd66e 100644
--- a/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/bit-xor/scalar-scalar/i32.wgsl b/test/tint/expressions/binary/bit-xor/scalar-scalar/i32.wgsl
index 9844c80..eb53f24 100644
--- a/test/tint/expressions/binary/bit-xor/scalar-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/bit-xor/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2;
diff --git a/test/tint/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.wgsl
index dc73ec6..1de88f2 100644
--- a/test/tint/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2;
diff --git a/test/tint/expressions/binary/bit-xor/scalar-scalar/u32.wgsl b/test/tint/expressions/binary/bit-xor/scalar-scalar/u32.wgsl
index f0f7a54..712ecdd 100644
--- a/test/tint/expressions/binary/bit-xor/scalar-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/bit-xor/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/tint/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.wgsl
index 930b21f..e4d519b 100644
--- a/test/tint/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl b/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl
index 0a5f1c2..f326709 100644
--- a/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(4, 5, 6);
diff --git a/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.wgsl
index de62f80..4dc949a 100644
--- a/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(4, 5, 6);
diff --git a/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl b/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl
index ce705f6..7296b3c 100644
--- a/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.wgsl
index 044e138..998a81b 100644
--- a/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/div/scalar-scalar/f32.wgsl b/test/tint/expressions/binary/div/scalar-scalar/f32.wgsl
index 025664d..af5a2c3 100644
--- a/test/tint/expressions/binary/div/scalar-scalar/f32.wgsl
+++ b/test/tint/expressions/binary/div/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1.;
     let b = 2.;
diff --git a/test/tint/expressions/binary/div/scalar-scalar/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/div/scalar-scalar/f32.wgsl.expected.wgsl
index 4f2fc18..39150b5 100644
--- a/test/tint/expressions/binary/div/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1.0;
   let b = 2.0;
diff --git a/test/tint/expressions/binary/div/scalar-scalar/i32.wgsl b/test/tint/expressions/binary/div/scalar-scalar/i32.wgsl
index cba5901..78571fe 100644
--- a/test/tint/expressions/binary/div/scalar-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/div/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2;
diff --git a/test/tint/expressions/binary/div/scalar-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/div/scalar-scalar/i32.wgsl.expected.wgsl
index 8f7e574..783dd12 100644
--- a/test/tint/expressions/binary/div/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2;
diff --git a/test/tint/expressions/binary/div/scalar-scalar/u32.wgsl b/test/tint/expressions/binary/div/scalar-scalar/u32.wgsl
index 441f376..9e9fc5c 100644
--- a/test/tint/expressions/binary/div/scalar-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/div/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/tint/expressions/binary/div/scalar-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/div/scalar-scalar/u32.wgsl.expected.wgsl
index cff0385..b73c90a 100644
--- a/test/tint/expressions/binary/div/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl b/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl
index f43e97c..8025d7d 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4.;
     let b = vec3<f32>(1., 2., 3.);
diff --git a/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.wgsl
index b8f74f4..e8d13f2 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4.0;
   let b = vec3<f32>(1.0, 2.0, 3.0);
diff --git a/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl b/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl
index 071efcf..dd35284 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4;
     let b = vec3<i32>(1, 2, 3);
diff --git a/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.wgsl
index 1a8cb05..a6dd21a 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4;
   let b = vec3<i32>(1, 2, 3);
diff --git a/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl b/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl
index 5ad53ee..1694f6e 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4u;
     let b = vec3<u32>(1u, 2u, 3u);
diff --git a/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.wgsl
index ffe6412..e278d29 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4u;
   let b = vec3<u32>(1u, 2u, 3u);
diff --git a/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl b/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl
index 087c0d3..f1c3d76 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl
+++ b/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = 4.;
diff --git a/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.wgsl
index 70432db..79851b8 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = 4.0;
diff --git a/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl b/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl
index 890b125..fdc8002 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = 4;
diff --git a/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.wgsl
index f3a1164..f664fce 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = 4;
diff --git a/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl b/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl
index 7ab6dd5..4a68b5e 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = 4u;
diff --git a/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.wgsl
index 2f64dd9..20dcced 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = 4u;
diff --git a/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl b/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl
index 1f253ea..9d9071b 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = vec3<f32>(4., 5., 6.);
diff --git a/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.wgsl
index c3129a9..0946de8 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = vec3<f32>(4.0, 5.0, 6.0);
diff --git a/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl b/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl
index 68d844f..daa29b5 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(4, 5, 6);
diff --git a/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.wgsl
index a601fa0..fef75fb 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(4, 5, 6);
diff --git a/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl b/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl
index 9215590..318abf1 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.wgsl
index 66261d5..2b03205 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl
index 9503e44..c892171 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1.;
     let b = 0.;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.wgsl
index 8036fce..d1acaeb 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1.0;
   let b = 0.0;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl
index 73f03b7..7df831e 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 0;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.wgsl
index 5284d7d..a5c1385 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 0;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl
index 38b3d24..be8b480 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 0u;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.wgsl
index 8c8f7ae..ddaf341 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 0u;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl
index 0db5465..7941933 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4.;
     let b = vec3<f32>(0., 2., 0.);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.wgsl
index 24d6132..6060200 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4.0;
   let b = vec3<f32>(0.0, 2.0, 0.0);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl
index 2b6ef48..756562b 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4;
     let b = vec3<i32>(0, 2, 0);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.wgsl
index 58c1887..f627163 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4;
   let b = vec3<i32>(0, 2, 0);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl
index a0a8fe6..6aa885b 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4u;
     let b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.wgsl
index bb436e1..309e490b 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4u;
   let b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl
index b83333f..c4c0d01 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = 0.;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.wgsl
index f48af63..43f2400 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = 0.0;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl
index f9291d5..9465797 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = 0;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.wgsl
index c7f11a1..9c2f12f 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = 0;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl
index 5446b2a..bebd1d8 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = 0u;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.wgsl
index 5ead983..a0bc135 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = 0u;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl
index 6db41a4..b2706ab 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = vec3<f32>(0., 5., 0.);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.wgsl
index 6f4aa8c..ec8b4ed 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = vec3<f32>(0.0, 5.0, 0.0);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl
index 5d583e6..963fbc7 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(0, 5, 0);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.wgsl
index 76bf812..401f1e5 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(0, 5, 0);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl
index 16a0dd0..13e9f8f 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.wgsl
index eb849bd..4212c52 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl
index 55c73c5..886a848 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 1.;
     var b = 0.;
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.wgsl
index 8b3d931..278a02a 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 1.0;
   var b = 0.0;
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl
index 016e7a8..7d196fb 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 1;
     var b = 0;
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.wgsl
index c762d02..d258b8a 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 1;
   var b = 0;
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl
index a265dd0..42c1872 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 1u;
     var b = 0u;
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.wgsl
index ad82462..f60cdb5 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 1u;
   var b = 0u;
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl
index ba92b62..986c1b1 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 4.;
     var b = vec3<f32>(0., 2., 0.);
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl.expected.wgsl
index c7a6ac1d..d349535 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 4.0;
   var b = vec3<f32>(0.0, 2.0, 0.0);
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl
index 9dc07d5..ed13271 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 4;
     var b = vec3<i32>(0, 2, 0);
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.wgsl
index e4dd4b4..c92fad8 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 4;
   var b = vec3<i32>(0, 2, 0);
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl
index 0547691..628a778 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 4u;
     var b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.wgsl
index 9f103fb..647e299 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 4u;
   var b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl
index 98ff5f0..a0b8b9b 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<f32>(1., 2., 3.);
     var b = 0.;
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl.expected.wgsl
index f0df1be..01272da 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<f32>(1.0, 2.0, 3.0);
   var b = 0.0;
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl
index b792c3a..6ccbded 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<i32>(1, 2, 3);
     var b = 0;
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.wgsl
index 6bbc51b..82ce280 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<i32>(1, 2, 3);
   var b = 0;
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl
index 4e4eacb..3adbb4f 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<u32>(1u, 2u, 3u);
     var b = 0u;
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.wgsl
index 2387364..0d57402 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<u32>(1u, 2u, 3u);
   var b = 0u;
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl
index 69761db..1c1d54e 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<f32>(1., 2., 3.);
     var b = vec3<f32>(0., 5., 0.);
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.wgsl
index 2e518af..b3998ed 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<f32>(1.0, 2.0, 3.0);
   var b = vec3<f32>(0.0, 5.0, 0.0);
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl
index 65e13dc..d858603 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<i32>(1, 2, 3);
     var b = vec3<i32>(0, 5, 0);
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.wgsl
index 3700b57..baeed85 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<i32>(1, 2, 3);
   var b = vec3<i32>(0, 5, 0);
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl
index d2e0417..bb71e4b 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<u32>(1u, 2u, 3u);
     var b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.wgsl
index ab03350..247bd29 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<u32>(1u, 2u, 3u);
   var b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl
index 2084ec5..ed45e70 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 1.;
     var b = 0.;
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.wgsl
index d616f9b..f0f3259 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 1.0;
   var b = 0.0;
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl
index b693c7c..96bcdf1 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 1;
     var b = 0;
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.wgsl
index da1a3c4..ed24ae4 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 1;
   var b = 0;
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl
index 7cab8cf..e78d08c 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 1u;
     var b = 0u;
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.wgsl
index 7ac2a45..8000ade 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 1u;
   var b = 0u;
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl
index 62267d4..21f3a0b 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 4.;
     var b = vec3<f32>(0., 2., 0.);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl.expected.wgsl
index 538b208..b41f23d 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 4.0;
   var b = vec3<f32>(0.0, 2.0, 0.0);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl
index c2e1627..f2cabd4 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 4;
     var b = vec3<i32>(0, 2, 0);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.wgsl
index c29283e..d73824b 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 4;
   var b = vec3<i32>(0, 2, 0);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl
index 6810e9a..2af672a 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 4u;
     var b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.wgsl
index 286538a..d1137a8 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 4u;
   var b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl
index 71b7474..21d2173 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<f32>(1., 2., 3.);
     var b = 0.;
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl.expected.wgsl
index 8caf79e..42d30fe 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<f32>(1.0, 2.0, 3.0);
   var b = 0.0;
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl
index 27fea32..75167b3 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<i32>(1, 2, 3);
     var b = 0;
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.wgsl
index f11c30e..2a49d07 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<i32>(1, 2, 3);
   var b = 0;
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl
index ea02f5c..11c34c3 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<u32>(1u, 2u, 3u);
     var b = 0u;
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.wgsl
index 0154b03..79a08bc 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<u32>(1u, 2u, 3u);
   var b = 0u;
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl
index fdcbb74..a7ab819 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<f32>(1., 2., 3.);
     var b = vec3<f32>(0., 5., 0.);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.wgsl
index d37119a..35a6ea9 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<f32>(1.0, 2.0, 3.0);
   var b = vec3<f32>(0.0, 5.0, 0.0);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl
index bb4bda3..ca2fa98 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<i32>(1, 2, 3);
     var b = vec3<i32>(0, 5, 0);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.wgsl
index 17e72b3..42f945b 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<i32>(1, 2, 3);
   var b = vec3<i32>(0, 5, 0);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl
index 26097c9..ef07fe2 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<u32>(1u, 2u, 3u);
     var b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.wgsl
index f2206ee..8cae1a4 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<u32>(1u, 2u, 3u);
   var b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/tint/expressions/binary/left-shift/scalar-scalar/i32.wgsl b/test/tint/expressions/binary/left-shift/scalar-scalar/i32.wgsl
index 1779cb0..9798d4a 100644
--- a/test/tint/expressions/binary/left-shift/scalar-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/left-shift/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2u;
diff --git a/test/tint/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.wgsl
index 69143dd..4339485 100644
--- a/test/tint/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2u;
diff --git a/test/tint/expressions/binary/left-shift/scalar-scalar/u32.wgsl b/test/tint/expressions/binary/left-shift/scalar-scalar/u32.wgsl
index 9638b83..05ea953 100644
--- a/test/tint/expressions/binary/left-shift/scalar-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/left-shift/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/tint/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.wgsl
index 39595c9..19d9671 100644
--- a/test/tint/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl b/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl
index fd21fb4..268f0a0 100644
--- a/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl
+++ b/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.wgsl
index 43d4d00..f062d94 100644
--- a/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl b/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl
index 7e0db01..903a83c 100644
--- a/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl
+++ b/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.wgsl
index 12a5cde..12bd7b8 100644
--- a/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/mod/scalar-scalar/f32.wgsl b/test/tint/expressions/binary/mod/scalar-scalar/f32.wgsl
index 20513e7..1988f9d 100644
--- a/test/tint/expressions/binary/mod/scalar-scalar/f32.wgsl
+++ b/test/tint/expressions/binary/mod/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1.;
     let b = 2.;
diff --git a/test/tint/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.wgsl
index eebb252..5a085a4 100644
--- a/test/tint/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1.0;
   let b = 2.0;
diff --git a/test/tint/expressions/binary/mod/scalar-scalar/i32.wgsl b/test/tint/expressions/binary/mod/scalar-scalar/i32.wgsl
index 12a7c72..eac3d53 100644
--- a/test/tint/expressions/binary/mod/scalar-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/mod/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2;
diff --git a/test/tint/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.wgsl
index 549140e..1b9c716 100644
--- a/test/tint/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2;
diff --git a/test/tint/expressions/binary/mod/scalar-scalar/u32.wgsl b/test/tint/expressions/binary/mod/scalar-scalar/u32.wgsl
index 96042bd..6102f34 100644
--- a/test/tint/expressions/binary/mod/scalar-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/mod/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/tint/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.wgsl
index d3835ed..793dded 100644
--- a/test/tint/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl b/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl
index 55a3acc..f8ffb23 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4.;
     let b = vec3<f32>(1., 2., 3.);
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.wgsl
index 7bfc341..25b0d9b 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4.0;
   let b = vec3<f32>(1.0, 2.0, 3.0);
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl b/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl
index 9e874a5..051d509 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4;
     let b = vec3<i32>(1, 2, 3);
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.wgsl
index 6b76bbb..d0ba74f 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4;
   let b = vec3<i32>(1, 2, 3);
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl b/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl
index e4d45ca..879c95c 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4u;
     let b = vec3<u32>(1u, 2u, 3u);
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.wgsl
index 309c295..180e6e1 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4u;
   let b = vec3<u32>(1u, 2u, 3u);
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl b/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl
index 7a9cd13..30586c4 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = 4.;
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.wgsl
index 31c0bbd..e8cfd80 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = 4.0;
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl b/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl
index e06a539..3c223e7 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = 4;
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.wgsl
index afa5ad7..6b8644e 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = 4;
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl b/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl
index af3a204..57a94c5 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = 4u;
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.wgsl
index 3c97f77..3f59fa1 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = 4u;
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl b/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl
index 815fb66..7b22860 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = vec3<f32>(4., 5., 6.);
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.wgsl
index d37c9d9..abb9bd1 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = vec3<f32>(4.0, 5.0, 6.0);
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl b/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl
index 55bfa49..39c41ea 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(4, 5, 6);
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.wgsl
index 1769386..b3877c7 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(4, 5, 6);
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl b/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl
index 02f1eea..7ecdd67 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.wgsl
index 36fa71e..198cfaf 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl
index 6d014b8..a4e2a3f 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1.;
     let b = 0.;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.wgsl
index 542a2e7..26f004c 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1.0;
   let b = 0.0;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl
index 4c05b0e..bf5c46c 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 0;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.wgsl
index e63b37d..fd3cc28 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 0;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl
index a63ca8fb..dc8e4d5 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 0u;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.wgsl
index 02a078b..58946be 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 0u;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl
index b319205..f48f0b4 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4;
     let b = vec3<i32>(0, 2, 0);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.wgsl
index 5b99aea..7b02ef6 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4;
   let b = vec3<i32>(0, 2, 0);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl
index 94494c3..9ec296c 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4u;
     let b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.wgsl
index 0aca8c0..1056273 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4u;
   let b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl
index 0a0f4d4..d99c708 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = 0;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.wgsl
index 8cc8abe9..8dcffb7 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = 0;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl
index 796e15f..b03befc 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = 0u;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.wgsl
index 98c4523..f75f0cd 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = 0u;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl
index 64fc4d5..b420076 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = vec3<f32>(0., 5., 0.);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.wgsl
index 227a070..9bd9c98 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = vec3<f32>(0.0, 5.0, 0.0);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl
index 9e64d49..63144cd 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(0, 5, 0);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.wgsl
index b6fc8c0..a5a8a27 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(0, 5, 0);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl
index 6724d92..a4d1eed 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.wgsl
index 24d48be..42e75d8 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl
index 820231b..0f6e3e4 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 1.;
     var b = 0.;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.wgsl
index 019d543..a52447e 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 1.0;
   var b = 0.0;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl
index 949d0fe..9489c9a 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 1;
     var b = 0;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.wgsl
index 74888f2..d626886 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 1;
   var b = 0;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl
index caf8b51..d1d8910 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 1u;
     var b = 0u;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.wgsl
index a75275dc..1a4bb6e 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 1u;
   var b = 0u;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl
index d341588..052a711 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 4;
     var b = vec3<i32>(0, 2, 0);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.wgsl
index 1cff64c..226235f 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 4;
   var b = vec3<i32>(0, 2, 0);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl
index bbe0ada..028da4a 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 4u;
     var b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.wgsl
index c292b7b..3ad7308 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 4u;
   var b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl
index 732dff4..26792f7 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<i32>(1, 2, 3);
     var b = 0;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.wgsl
index 0aaa1a2..f5cc2da 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<i32>(1, 2, 3);
   var b = 0;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl
index 87c0466..4456979 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<u32>(1u, 2u, 3u);
     var b = 0u;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.wgsl
index 9433a5a..c8ca750 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<u32>(1u, 2u, 3u);
   var b = 0u;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl
index 6a67f54..e060e57 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<f32>(1., 2., 3.);
     var b = vec3<f32>(0., 5., 0.);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.wgsl
index 965767f..512708f 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<f32>(1.0, 2.0, 3.0);
   var b = vec3<f32>(0.0, 5.0, 0.0);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl
index 6996804..60f69ff 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<i32>(1, 2, 3);
     var b = vec3<i32>(0, 5, 0);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.wgsl
index b327a60..1aad41e 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<i32>(1, 2, 3);
   var b = vec3<i32>(0, 5, 0);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl
index 769ce16..9dc5c6cb 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<u32>(1u, 2u, 3u);
     var b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.wgsl
index cdc7848..822cec2 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<u32>(1u, 2u, 3u);
   var b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl
index ec5cc7d..6ee4fca 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 1.;
     var b = 0.;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.wgsl
index 37faeaa3..1fe8662 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 1.0;
   var b = 0.0;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl
index 3f673f9..a089a58 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 1;
     var b = 0;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.wgsl
index 241e4c3..88b9efd 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 1;
   var b = 0;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl
index 19f6c04..38f8644 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 1u;
     var b = 0u;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.wgsl
index 8d6291b4..333e9e0 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 1u;
   var b = 0u;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl
index ac029c5..3980b9d 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 4;
     var b = vec3<i32>(0, 2, 0);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.wgsl
index 30bdb80..449c6c3 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 4;
   var b = vec3<i32>(0, 2, 0);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl
index 74885a7..3c490d9 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = 4u;
     var b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.wgsl
index 0abb9dc..00bf43b 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = 4u;
   var b = vec3<u32>(0u, 2u, 0u);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl
index 8ceeb13..3071db9 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<i32>(1, 2, 3);
     var b = 0;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.wgsl
index b9f853c..f0b54fd 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<i32>(1, 2, 3);
   var b = 0;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl
index aa6b581..2ff8b8a 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<u32>(1u, 2u, 3u);
     var b = 0u;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.wgsl
index d79da42..2625b9b 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<u32>(1u, 2u, 3u);
   var b = 0u;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl
index f5d27d5..eacb9ea 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<f32>(1., 2., 3.);
     var b = vec3<f32>(0., 5., 0.);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.wgsl
index c178fab..3dfb44c 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<f32>(1.0, 2.0, 3.0);
   var b = vec3<f32>(0.0, 5.0, 0.0);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl
index 129d4b0..f899ffa 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<i32>(1, 2, 3);
     var b = vec3<i32>(0, 5, 0);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.wgsl
index 96c95e9..4183cc4 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<i32>(1, 2, 3);
   var b = vec3<i32>(0, 5, 0);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl
index b6be872..fb5ab39 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var a = vec3<u32>(1u, 2u, 3u);
     var b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.wgsl
index de150e4..36d0e2d 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var a = vec3<u32>(1u, 2u, 3u);
   var b = vec3<u32>(0u, 5u, 0u);
diff --git a/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl b/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl
index d9e4331..452713d 100644
--- a/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl
+++ b/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = mat2x4<f32>(vec4<f32>(1., 2., 3., 4.), vec4<f32>(5., 6., 7., 8.));
     let b = mat4x2<f32>(vec2<f32>(-1., -2.), vec2<f32>(-3., -4.), vec2<f32>(-5., -6.), vec2<f32>(-7., -8.));
diff --git a/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.wgsl
index 2bdcf99..46edcc4 100644
--- a/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = mat2x4<f32>(vec4<f32>(1.0, 2.0, 3.0, 4.0), vec4<f32>(5.0, 6.0, 7.0, 8.0));
   let b = mat4x2<f32>(vec2<f32>(-1.0, -2.0), vec2<f32>(-3.0, -4.0), vec2<f32>(-5.0, -6.0), vec2<f32>(-7.0, -8.0));
diff --git a/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl b/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl
index c05600b..c367e0f 100644
--- a/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl
@@ -4,7 +4,7 @@
 };
 @group(0) @binding(0) var<uniform> data: S;
 
-@stage(fragment)
+@fragment
 fn main() {
   let x = data.matrix * data.vector;
 }
diff --git a/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.wgsl
index 3c5744e..edaba05 100644
--- a/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
 
 @group(0) @binding(0) var<uniform> data : S;
 
-@stage(fragment)
+@fragment
 fn main() {
   let x = (data.matrix * data.vector);
 }
diff --git a/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl b/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl
index 693b097..2b50d02 100644
--- a/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl
+++ b/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = mat3x3<f32>(vec3<f32>( 1.,  2.,  3.), vec3<f32>( 4.,  5.,  6.), vec3<f32>( 7.,  8.,  9.));
     let b = mat3x3<f32>(vec3<f32>(-1., -2., -3.), vec3<f32>(-4., -5., -6.), vec3<f32>(-7., -8., -9.));
diff --git a/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.wgsl
index 872ec3d..3265366 100644
--- a/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = mat3x3<f32>(vec3<f32>(1.0, 2.0, 3.0), vec3<f32>(4.0, 5.0, 6.0), vec3<f32>(7.0, 8.0, 9.0));
   let b = mat3x3<f32>(vec3<f32>(-1.0, -2.0, -3.0), vec3<f32>(-4.0, -5.0, -6.0), vec3<f32>(-7.0, -8.0, -9.0));
diff --git a/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl b/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl
index 2c0c966..adf19ee 100644
--- a/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl
@@ -4,7 +4,7 @@
 };
 @group(0) @binding(0) var<uniform> data: S;
 
-@stage(fragment)
+@fragment
 fn main() {
   let x = data.matrix * data.vector;
 }
diff --git a/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.wgsl
index 9c51fa6..777ccc0 100644
--- a/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
 
 @group(0) @binding(0) var<uniform> data : S;
 
-@stage(fragment)
+@fragment
 fn main() {
   let x = (data.matrix * data.vector);
 }
diff --git a/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl b/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl
index 76e4db2..bddcda1 100644
--- a/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl
+++ b/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = mat4x2<f32>(vec2<f32>(-1., -2.), vec2<f32>(-3., -4.), vec2<f32>(-5., -6.), vec2<f32>(-7., -8.));
     let b = mat2x4<f32>(vec4<f32>(1., 2., 3., 4.), vec4<f32>(5., 6., 7., 8.));
diff --git a/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.wgsl
index cc6bf09..0e59163 100644
--- a/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = mat4x2<f32>(vec2<f32>(-1.0, -2.0), vec2<f32>(-3.0, -4.0), vec2<f32>(-5.0, -6.0), vec2<f32>(-7.0, -8.0));
   let b = mat2x4<f32>(vec4<f32>(1.0, 2.0, 3.0, 4.0), vec4<f32>(5.0, 6.0, 7.0, 8.0));
diff --git a/test/tint/expressions/binary/mul/scalar-scalar/f32.wgsl b/test/tint/expressions/binary/mul/scalar-scalar/f32.wgsl
index 7c3a494..3d07785 100644
--- a/test/tint/expressions/binary/mul/scalar-scalar/f32.wgsl
+++ b/test/tint/expressions/binary/mul/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1.;
     let b = 2.;
diff --git a/test/tint/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.wgsl
index 1308e5a..ea04f10 100644
--- a/test/tint/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1.0;
   let b = 2.0;
diff --git a/test/tint/expressions/binary/mul/scalar-scalar/i32.wgsl b/test/tint/expressions/binary/mul/scalar-scalar/i32.wgsl
index 841429e..5e55d66 100644
--- a/test/tint/expressions/binary/mul/scalar-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/mul/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2;
diff --git a/test/tint/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.wgsl
index e0189a5..03fe7ce 100644
--- a/test/tint/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2;
diff --git a/test/tint/expressions/binary/mul/scalar-scalar/u32.wgsl b/test/tint/expressions/binary/mul/scalar-scalar/u32.wgsl
index 4998346..c943b96 100644
--- a/test/tint/expressions/binary/mul/scalar-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/mul/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/tint/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.wgsl
index 3dda0e0..1a4cfcb 100644
--- a/test/tint/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl b/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl
index 62560cb..7451334 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4.;
     let b = vec3<f32>(1., 2., 3.);
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.wgsl
index f2cf6c4..d61b516 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4.0;
   let b = vec3<f32>(1.0, 2.0, 3.0);
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl b/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl
index 8f8d3e4..e5424b3 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4;
     let b = vec3<i32>(1, 2, 3);
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.wgsl
index 85f39b5..2531599 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4;
   let b = vec3<i32>(1, 2, 3);
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl b/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl
index 5c9260f..a48bd99 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4u;
     let b = vec3<u32>(1u, 2u, 3u);
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.wgsl
index 9fc3bff..df46707 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4u;
   let b = vec3<u32>(1u, 2u, 3u);
diff --git a/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl b/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl
index 6f7e5df..f2fb487 100644
--- a/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl
@@ -4,7 +4,7 @@
 };
 @group(0) @binding(0) var<uniform> data: S;
 
-@stage(fragment)
+@fragment
 fn main() {
   let x = data.vector * data.matrix;
 }
diff --git a/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.wgsl
index 6aa7aac..f0923a7 100644
--- a/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
 
 @group(0) @binding(0) var<uniform> data : S;
 
-@stage(fragment)
+@fragment
 fn main() {
   let x = (data.vector * data.matrix);
 }
diff --git a/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl b/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl
index be83514..0165011 100644
--- a/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl
@@ -4,7 +4,7 @@
 };
 @group(0) @binding(0) var<uniform> data: S;
 
-@stage(fragment)
+@fragment
 fn main() {
   let x = data.vector * data.matrix;
 }
diff --git a/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.wgsl
index cf6fffd..9617430 100644
--- a/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
 
 @group(0) @binding(0) var<uniform> data : S;
 
-@stage(fragment)
+@fragment
 fn main() {
   let x = (data.vector * data.matrix);
 }
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl b/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl
index 10f72ae..3a346e6 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = 4.;
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.wgsl
index b3acece..2d7356b 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = 4.0;
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl b/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl
index d4d0678..fb56272 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = 4;
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.wgsl
index a727294..55b9f6f 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = 4;
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl b/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl
index 03a79ac..162083f 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = 4u;
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.wgsl
index fc7e60d..33bd16a 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = 4u;
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl b/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl
index 6d0e211..5b4b11a 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = vec3<f32>(4., 5., 6.);
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.wgsl
index a0dd1f7..30c7e0c 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = vec3<f32>(4.0, 5.0, 6.0);
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl b/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl
index 32ae83f..d8c64e6 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(4, 5, 6);
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.wgsl
index 20121b5..a6ff5b4 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(4, 5, 6);
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl b/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl
index 39e1db4..76c46b5 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.wgsl
index a910c86..1e40fe7 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/right-shift/scalar-scalar/i32.wgsl b/test/tint/expressions/binary/right-shift/scalar-scalar/i32.wgsl
index 54eda6d5..6f4dadc 100644
--- a/test/tint/expressions/binary/right-shift/scalar-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/right-shift/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2u;
diff --git a/test/tint/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.wgsl
index 57f33c8..054f0ef 100644
--- a/test/tint/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2u;
diff --git a/test/tint/expressions/binary/right-shift/scalar-scalar/u32.wgsl b/test/tint/expressions/binary/right-shift/scalar-scalar/u32.wgsl
index 4cf2a84..ae28e96 100644
--- a/test/tint/expressions/binary/right-shift/scalar-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/right-shift/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/tint/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.wgsl
index 827e23f..633685a 100644
--- a/test/tint/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl b/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl
index 366c8c4..b59067a 100644
--- a/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl
+++ b/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.wgsl
index 96e088f..3fd119e 100644
--- a/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl b/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl
index a70095de..e4214f3 100644
--- a/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl
+++ b/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.wgsl
index 4b44e73..f7073ef 100644
--- a/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl b/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl
index 1d90779..fbe5639 100644
--- a/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl
+++ b/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = mat3x3<f32>(vec3<f32>( 1.,  2.,  3.), vec3<f32>( 4.,  5.,  6.), vec3<f32>( 7.,  8.,  9.));
     let b = mat3x3<f32>(vec3<f32>(-1., -2., -3.), vec3<f32>(-4., -5., -6.), vec3<f32>(-7., -8., -9.));
diff --git a/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.wgsl
index d54c2dcc..0145210 100644
--- a/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = mat3x3<f32>(vec3<f32>(1.0, 2.0, 3.0), vec3<f32>(4.0, 5.0, 6.0), vec3<f32>(7.0, 8.0, 9.0));
   let b = mat3x3<f32>(vec3<f32>(-1.0, -2.0, -3.0), vec3<f32>(-4.0, -5.0, -6.0), vec3<f32>(-7.0, -8.0, -9.0));
diff --git a/test/tint/expressions/binary/sub/scalar-scalar/f32.wgsl b/test/tint/expressions/binary/sub/scalar-scalar/f32.wgsl
index 7aec1fe..9dff571 100644
--- a/test/tint/expressions/binary/sub/scalar-scalar/f32.wgsl
+++ b/test/tint/expressions/binary/sub/scalar-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1.;
     let b = 2.;
diff --git a/test/tint/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.wgsl
index 7639858..9362f39 100644
--- a/test/tint/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1.0;
   let b = 2.0;
diff --git a/test/tint/expressions/binary/sub/scalar-scalar/i32.wgsl b/test/tint/expressions/binary/sub/scalar-scalar/i32.wgsl
index 93fb7e0..a8fb3a1 100644
--- a/test/tint/expressions/binary/sub/scalar-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/sub/scalar-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1;
     let b = 2;
diff --git a/test/tint/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.wgsl
index 9aa9bf3..50a769f 100644
--- a/test/tint/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1;
   let b = 2;
diff --git a/test/tint/expressions/binary/sub/scalar-scalar/u32.wgsl b/test/tint/expressions/binary/sub/scalar-scalar/u32.wgsl
index fa75c67..c93a342 100644
--- a/test/tint/expressions/binary/sub/scalar-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/sub/scalar-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 1u;
     let b = 2u;
diff --git a/test/tint/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.wgsl
index 81cbedd..32a8869 100644
--- a/test/tint/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 1u;
   let b = 2u;
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl b/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl
index 8a4a112..25d44e6 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4.;
     let b = vec3<f32>(1., 2., 3.);
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.wgsl
index 1404695..ed0afe4 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4.0;
   let b = vec3<f32>(1.0, 2.0, 3.0);
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl b/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl
index 8b31299..de16162 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4;
     let b = vec3<i32>(1, 2, 3);
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.wgsl
index bec3a19..e3d4493 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4;
   let b = vec3<i32>(1, 2, 3);
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl b/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl
index 562719f..d138510 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = 4u;
     let b = vec3<u32>(1u, 2u, 3u);
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.wgsl
index 4e1bca9..2e003d4 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = 4u;
   let b = vec3<u32>(1u, 2u, 3u);
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl b/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl
index 4b4aced..5e151fd 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = 4.;
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.wgsl
index 169e9db..b9470ec 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = 4.0;
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl b/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl
index e12a2ba..d2f30e4 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = 4;
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.wgsl
index 003acfa..bc52104 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = 4;
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl b/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl
index f5e4e5a..37dce9c 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = 4u;
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.wgsl
index 9b9c0de..5daa300 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = 4u;
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl b/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl
index cea0bb7..b2967b6 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<f32>(1., 2., 3.);
     let b = vec3<f32>(4., 5., 6.);
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.wgsl b/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.wgsl
index 6075405..e3e32b1 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<f32>(1.0, 2.0, 3.0);
   let b = vec3<f32>(4.0, 5.0, 6.0);
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl b/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl
index 2ab7275..f1b0144 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<i32>(1, 2, 3);
     let b = vec3<i32>(4, 5, 6);
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.wgsl b/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.wgsl
index a5b306b..474ada0 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<i32>(1, 2, 3);
   let b = vec3<i32>(4, 5, 6);
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl b/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl
index cb59c1f..2dfe12e 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a = vec3<u32>(1u, 2u, 3u);
     let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.wgsl b/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.wgsl
index dea4cfe..83f2ec2 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a = vec3<u32>(1u, 2u, 3u);
   let b = vec3<u32>(4u, 5u, 6u);
diff --git a/test/tint/expressions/bitcast/scalar/f32-f32.wgsl b/test/tint/expressions/bitcast/scalar/f32-f32.wgsl
index 0e7b8ba..5243db2 100644
--- a/test/tint/expressions/bitcast/scalar/f32-f32.wgsl
+++ b/test/tint/expressions/bitcast/scalar/f32-f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a : f32 = 1.;
     let b : f32 = bitcast<f32>(a);
diff --git a/test/tint/expressions/bitcast/scalar/f32-f32.wgsl.expected.wgsl b/test/tint/expressions/bitcast/scalar/f32-f32.wgsl.expected.wgsl
index ac6a874..2cd5405 100644
--- a/test/tint/expressions/bitcast/scalar/f32-f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/bitcast/scalar/f32-f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a : f32 = 1.0;
   let b : f32 = bitcast<f32>(a);
diff --git a/test/tint/expressions/bitcast/scalar/f32-i32.wgsl b/test/tint/expressions/bitcast/scalar/f32-i32.wgsl
index 91c3d8f..40d370f 100644
--- a/test/tint/expressions/bitcast/scalar/f32-i32.wgsl
+++ b/test/tint/expressions/bitcast/scalar/f32-i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a : f32 = 1.;
     let b : i32 = bitcast<i32>(a);
diff --git a/test/tint/expressions/bitcast/scalar/f32-i32.wgsl.expected.wgsl b/test/tint/expressions/bitcast/scalar/f32-i32.wgsl.expected.wgsl
index 81e6fa6..20807eb 100644
--- a/test/tint/expressions/bitcast/scalar/f32-i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/bitcast/scalar/f32-i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a : f32 = 1.0;
   let b : i32 = bitcast<i32>(a);
diff --git a/test/tint/expressions/bitcast/scalar/f32-u32.wgsl b/test/tint/expressions/bitcast/scalar/f32-u32.wgsl
index 6f33d5a..9cf72ec 100644
--- a/test/tint/expressions/bitcast/scalar/f32-u32.wgsl
+++ b/test/tint/expressions/bitcast/scalar/f32-u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a : f32 = 1.;
     let b : u32 = bitcast<u32>(a);
diff --git a/test/tint/expressions/bitcast/scalar/f32-u32.wgsl.expected.wgsl b/test/tint/expressions/bitcast/scalar/f32-u32.wgsl.expected.wgsl
index c230fb8..3850451 100644
--- a/test/tint/expressions/bitcast/scalar/f32-u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/bitcast/scalar/f32-u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a : f32 = 1.0;
   let b : u32 = bitcast<u32>(a);
diff --git a/test/tint/expressions/bitcast/scalar/i32-f32.wgsl b/test/tint/expressions/bitcast/scalar/i32-f32.wgsl
index 00a8099..2720438 100644
--- a/test/tint/expressions/bitcast/scalar/i32-f32.wgsl
+++ b/test/tint/expressions/bitcast/scalar/i32-f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a : i32 = 1;
     let b : f32 = bitcast<f32>(a);
diff --git a/test/tint/expressions/bitcast/scalar/i32-f32.wgsl.expected.wgsl b/test/tint/expressions/bitcast/scalar/i32-f32.wgsl.expected.wgsl
index 1aae69a..16f86b2 100644
--- a/test/tint/expressions/bitcast/scalar/i32-f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/bitcast/scalar/i32-f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a : i32 = 1;
   let b : f32 = bitcast<f32>(a);
diff --git a/test/tint/expressions/bitcast/scalar/i32-i32.wgsl b/test/tint/expressions/bitcast/scalar/i32-i32.wgsl
index 282e218..ca5e70f 100644
--- a/test/tint/expressions/bitcast/scalar/i32-i32.wgsl
+++ b/test/tint/expressions/bitcast/scalar/i32-i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a : i32 = 1;
     let b : i32 = bitcast<i32>(a);
diff --git a/test/tint/expressions/bitcast/scalar/i32-i32.wgsl.expected.wgsl b/test/tint/expressions/bitcast/scalar/i32-i32.wgsl.expected.wgsl
index 9ecbee5..94c44a9 100644
--- a/test/tint/expressions/bitcast/scalar/i32-i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/bitcast/scalar/i32-i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a : i32 = 1;
   let b : i32 = bitcast<i32>(a);
diff --git a/test/tint/expressions/bitcast/scalar/i32-u32.wgsl b/test/tint/expressions/bitcast/scalar/i32-u32.wgsl
index ebb81b4..4a34de6 100644
--- a/test/tint/expressions/bitcast/scalar/i32-u32.wgsl
+++ b/test/tint/expressions/bitcast/scalar/i32-u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a : i32 = 1;
     let b : u32 = bitcast<u32>(a);
diff --git a/test/tint/expressions/bitcast/scalar/i32-u32.wgsl.expected.wgsl b/test/tint/expressions/bitcast/scalar/i32-u32.wgsl.expected.wgsl
index cb8e316..28a65c9 100644
--- a/test/tint/expressions/bitcast/scalar/i32-u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/bitcast/scalar/i32-u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a : i32 = 1;
   let b : u32 = bitcast<u32>(a);
diff --git a/test/tint/expressions/bitcast/scalar/i32min-u32.wgsl b/test/tint/expressions/bitcast/scalar/i32min-u32.wgsl
index de57788..374110c 100644
--- a/test/tint/expressions/bitcast/scalar/i32min-u32.wgsl
+++ b/test/tint/expressions/bitcast/scalar/i32min-u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let b : u32 = bitcast<u32>(-2147483648);
 }
diff --git a/test/tint/expressions/bitcast/scalar/i32min-u32.wgsl.expected.wgsl b/test/tint/expressions/bitcast/scalar/i32min-u32.wgsl.expected.wgsl
index de57788..374110c 100644
--- a/test/tint/expressions/bitcast/scalar/i32min-u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/bitcast/scalar/i32min-u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let b : u32 = bitcast<u32>(-2147483648);
 }
diff --git a/test/tint/expressions/bitcast/scalar/u32-f32.wgsl b/test/tint/expressions/bitcast/scalar/u32-f32.wgsl
index c196d83..3905040 100644
--- a/test/tint/expressions/bitcast/scalar/u32-f32.wgsl
+++ b/test/tint/expressions/bitcast/scalar/u32-f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a : u32 = 1u;
     let b : f32 = bitcast<f32>(a);
diff --git a/test/tint/expressions/bitcast/scalar/u32-f32.wgsl.expected.wgsl b/test/tint/expressions/bitcast/scalar/u32-f32.wgsl.expected.wgsl
index 7c0cb22..4873e26 100644
--- a/test/tint/expressions/bitcast/scalar/u32-f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/bitcast/scalar/u32-f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a : u32 = 1u;
   let b : f32 = bitcast<f32>(a);
diff --git a/test/tint/expressions/bitcast/scalar/u32-i32.wgsl b/test/tint/expressions/bitcast/scalar/u32-i32.wgsl
index 9d6785a..c502831 100644
--- a/test/tint/expressions/bitcast/scalar/u32-i32.wgsl
+++ b/test/tint/expressions/bitcast/scalar/u32-i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a : u32 = 1u;
     let b : i32 = bitcast<i32>(a);
diff --git a/test/tint/expressions/bitcast/scalar/u32-i32.wgsl.expected.wgsl b/test/tint/expressions/bitcast/scalar/u32-i32.wgsl.expected.wgsl
index 4d8f585..e07225e 100644
--- a/test/tint/expressions/bitcast/scalar/u32-i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/bitcast/scalar/u32-i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a : u32 = 1u;
   let b : i32 = bitcast<i32>(a);
diff --git a/test/tint/expressions/bitcast/scalar/u32-u32.wgsl b/test/tint/expressions/bitcast/scalar/u32-u32.wgsl
index 35f0a23..c1a4aed 100644
--- a/test/tint/expressions/bitcast/scalar/u32-u32.wgsl
+++ b/test/tint/expressions/bitcast/scalar/u32-u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a : u32 = 1u;
     let b : u32 = bitcast<u32>(a);
diff --git a/test/tint/expressions/bitcast/scalar/u32-u32.wgsl.expected.wgsl b/test/tint/expressions/bitcast/scalar/u32-u32.wgsl.expected.wgsl
index 45c6de7..ad7e55b 100644
--- a/test/tint/expressions/bitcast/scalar/u32-u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/bitcast/scalar/u32-u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a : u32 = 1u;
   let b : u32 = bitcast<u32>(a);
diff --git a/test/tint/expressions/bitcast/vector/f32-f32.wgsl b/test/tint/expressions/bitcast/vector/f32-f32.wgsl
index 8842275..a8f1759 100644
--- a/test/tint/expressions/bitcast/vector/f32-f32.wgsl
+++ b/test/tint/expressions/bitcast/vector/f32-f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a : vec3<f32> = vec3<f32>(1., 2., 3.);
     let b : vec3<f32> = bitcast<vec3<f32>>(a);
diff --git a/test/tint/expressions/bitcast/vector/f32-f32.wgsl.expected.wgsl b/test/tint/expressions/bitcast/vector/f32-f32.wgsl.expected.wgsl
index 1af19c7..452705c 100644
--- a/test/tint/expressions/bitcast/vector/f32-f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/bitcast/vector/f32-f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a : vec3<f32> = vec3<f32>(1.0, 2.0, 3.0);
   let b : vec3<f32> = bitcast<vec3<f32>>(a);
diff --git a/test/tint/expressions/bitcast/vector/f32-i32.wgsl b/test/tint/expressions/bitcast/vector/f32-i32.wgsl
index 69a8ee6..8a818f0 100644
--- a/test/tint/expressions/bitcast/vector/f32-i32.wgsl
+++ b/test/tint/expressions/bitcast/vector/f32-i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a : vec3<f32> = vec3<f32>(1., 2., 3.);
     let b : vec3<i32> = bitcast<vec3<i32>>(a);
diff --git a/test/tint/expressions/bitcast/vector/f32-i32.wgsl.expected.wgsl b/test/tint/expressions/bitcast/vector/f32-i32.wgsl.expected.wgsl
index 6f7c20e..3971ac8 100644
--- a/test/tint/expressions/bitcast/vector/f32-i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/bitcast/vector/f32-i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a : vec3<f32> = vec3<f32>(1.0, 2.0, 3.0);
   let b : vec3<i32> = bitcast<vec3<i32>>(a);
diff --git a/test/tint/expressions/bitcast/vector/f32-u32.wgsl b/test/tint/expressions/bitcast/vector/f32-u32.wgsl
index c478dc8..962f4f9 100644
--- a/test/tint/expressions/bitcast/vector/f32-u32.wgsl
+++ b/test/tint/expressions/bitcast/vector/f32-u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a : vec3<f32> = vec3<f32>(1., 2., 3.);
     let b : vec3<u32> = bitcast<vec3<u32>>(a);
diff --git a/test/tint/expressions/bitcast/vector/f32-u32.wgsl.expected.wgsl b/test/tint/expressions/bitcast/vector/f32-u32.wgsl.expected.wgsl
index d47bade..a4acebc 100644
--- a/test/tint/expressions/bitcast/vector/f32-u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/bitcast/vector/f32-u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a : vec3<f32> = vec3<f32>(1.0, 2.0, 3.0);
   let b : vec3<u32> = bitcast<vec3<u32>>(a);
diff --git a/test/tint/expressions/bitcast/vector/i32-f32.wgsl b/test/tint/expressions/bitcast/vector/i32-f32.wgsl
index 7fa9e52..b71ae34 100644
--- a/test/tint/expressions/bitcast/vector/i32-f32.wgsl
+++ b/test/tint/expressions/bitcast/vector/i32-f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a : vec3<i32> = vec3<i32>(1, 2, 3);
     let b : vec3<f32> = bitcast<vec3<f32>>(a);
diff --git a/test/tint/expressions/bitcast/vector/i32-f32.wgsl.expected.wgsl b/test/tint/expressions/bitcast/vector/i32-f32.wgsl.expected.wgsl
index 424988d..0026268 100644
--- a/test/tint/expressions/bitcast/vector/i32-f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/bitcast/vector/i32-f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a : vec3<i32> = vec3<i32>(1, 2, 3);
   let b : vec3<f32> = bitcast<vec3<f32>>(a);
diff --git a/test/tint/expressions/bitcast/vector/i32-i32.wgsl b/test/tint/expressions/bitcast/vector/i32-i32.wgsl
index 1b332c6..2becdf5 100644
--- a/test/tint/expressions/bitcast/vector/i32-i32.wgsl
+++ b/test/tint/expressions/bitcast/vector/i32-i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a : vec3<i32> = vec3<i32>(1, 2, 3);
     let b : vec3<i32> = bitcast<vec3<i32>>(a);
diff --git a/test/tint/expressions/bitcast/vector/i32-i32.wgsl.expected.wgsl b/test/tint/expressions/bitcast/vector/i32-i32.wgsl.expected.wgsl
index b77a8bf..888cba4 100644
--- a/test/tint/expressions/bitcast/vector/i32-i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/bitcast/vector/i32-i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a : vec3<i32> = vec3<i32>(1, 2, 3);
   let b : vec3<i32> = bitcast<vec3<i32>>(a);
diff --git a/test/tint/expressions/bitcast/vector/i32-u32.wgsl b/test/tint/expressions/bitcast/vector/i32-u32.wgsl
index f60a904..b0bbe46 100644
--- a/test/tint/expressions/bitcast/vector/i32-u32.wgsl
+++ b/test/tint/expressions/bitcast/vector/i32-u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a : vec3<i32> = vec3<i32>(1, 2, 3);
     let b : vec3<u32> = bitcast<vec3<u32>>(a);
diff --git a/test/tint/expressions/bitcast/vector/i32-u32.wgsl.expected.wgsl b/test/tint/expressions/bitcast/vector/i32-u32.wgsl.expected.wgsl
index a0d6f73..eed5e13 100644
--- a/test/tint/expressions/bitcast/vector/i32-u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/bitcast/vector/i32-u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a : vec3<i32> = vec3<i32>(1, 2, 3);
   let b : vec3<u32> = bitcast<vec3<u32>>(a);
diff --git a/test/tint/expressions/bitcast/vector/u32-f32.wgsl b/test/tint/expressions/bitcast/vector/u32-f32.wgsl
index 76adfdd..362773c 100644
--- a/test/tint/expressions/bitcast/vector/u32-f32.wgsl
+++ b/test/tint/expressions/bitcast/vector/u32-f32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a : vec3<u32> = vec3<u32>(1u, 2u, 3u);
     let b : vec3<f32> = bitcast<vec3<f32>>(a);
diff --git a/test/tint/expressions/bitcast/vector/u32-f32.wgsl.expected.wgsl b/test/tint/expressions/bitcast/vector/u32-f32.wgsl.expected.wgsl
index dd4b3a3..c4954a8 100644
--- a/test/tint/expressions/bitcast/vector/u32-f32.wgsl.expected.wgsl
+++ b/test/tint/expressions/bitcast/vector/u32-f32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a : vec3<u32> = vec3<u32>(1u, 2u, 3u);
   let b : vec3<f32> = bitcast<vec3<f32>>(a);
diff --git a/test/tint/expressions/bitcast/vector/u32-i32.wgsl b/test/tint/expressions/bitcast/vector/u32-i32.wgsl
index 9ae5c29..a3f6d26 100644
--- a/test/tint/expressions/bitcast/vector/u32-i32.wgsl
+++ b/test/tint/expressions/bitcast/vector/u32-i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a : vec3<u32> = vec3<u32>(1u, 2u, 3u);
     let b : vec3<i32> = bitcast<vec3<i32>>(a);
diff --git a/test/tint/expressions/bitcast/vector/u32-i32.wgsl.expected.wgsl b/test/tint/expressions/bitcast/vector/u32-i32.wgsl.expected.wgsl
index 7291ade..7539435 100644
--- a/test/tint/expressions/bitcast/vector/u32-i32.wgsl.expected.wgsl
+++ b/test/tint/expressions/bitcast/vector/u32-i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a : vec3<u32> = vec3<u32>(1u, 2u, 3u);
   let b : vec3<i32> = bitcast<vec3<i32>>(a);
diff --git a/test/tint/expressions/bitcast/vector/u32-u32.wgsl b/test/tint/expressions/bitcast/vector/u32-u32.wgsl
index 277597d..9ee4e82 100644
--- a/test/tint/expressions/bitcast/vector/u32-u32.wgsl
+++ b/test/tint/expressions/bitcast/vector/u32-u32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let a : vec3<u32> = vec3<u32>(1u, 2u, 3u);
     let b : vec3<u32> = bitcast<vec3<u32>>(a);
diff --git a/test/tint/expressions/bitcast/vector/u32-u32.wgsl.expected.wgsl b/test/tint/expressions/bitcast/vector/u32-u32.wgsl.expected.wgsl
index 86d9265..3296a7a 100644
--- a/test/tint/expressions/bitcast/vector/u32-u32.wgsl.expected.wgsl
+++ b/test/tint/expressions/bitcast/vector/u32-u32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let a : vec3<u32> = vec3<u32>(1u, 2u, 3u);
   let b : vec3<u32> = bitcast<vec3<u32>>(a);
diff --git a/test/tint/expressions/literals/-inf.spvasm.expected.wgsl b/test/tint/expressions/literals/-inf.spvasm.expected.wgsl
index eb85662..2e063ce 100644
--- a/test/tint/expressions/literals/-inf.spvasm.expected.wgsl
+++ b/test/tint/expressions/literals/-inf.spvasm.expected.wgsl
@@ -10,7 +10,7 @@
   out_var_SV_TARGET_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(out_var_SV_TARGET);
diff --git a/test/tint/expressions/literals/inf.spvasm.expected.wgsl b/test/tint/expressions/literals/inf.spvasm.expected.wgsl
index 6f8467c..dea7b3b 100644
--- a/test/tint/expressions/literals/inf.spvasm.expected.wgsl
+++ b/test/tint/expressions/literals/inf.spvasm.expected.wgsl
@@ -10,7 +10,7 @@
   out_var_SV_TARGET_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(out_var_SV_TARGET);
diff --git a/test/tint/expressions/literals/nan.spvasm.expected.wgsl b/test/tint/expressions/literals/nan.spvasm.expected.wgsl
index 0909a0f..922572a 100644
--- a/test/tint/expressions/literals/nan.spvasm.expected.wgsl
+++ b/test/tint/expressions/literals/nan.spvasm.expected.wgsl
@@ -10,7 +10,7 @@
   out_var_SV_TARGET_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(out_var_SV_TARGET);
diff --git a/test/tint/extensions/parsing/basic.wgsl b/test/tint/extensions/parsing/basic.wgsl
index d1d3017..f7b6bd5 100644
--- a/test/tint/extensions/parsing/basic.wgsl
+++ b/test/tint/extensions/parsing/basic.wgsl
@@ -1,7 +1,7 @@
 // Enable a void internal extension
 enable f16;
 
-@stage(fragment)
+@fragment
 fn main() -> @location(0) vec4<f32> {
     return vec4<f32>(0.1, 0.2, 0.3, 0.4);
 }
diff --git a/test/tint/extensions/parsing/basic.wgsl.expected.wgsl b/test/tint/extensions/parsing/basic.wgsl.expected.wgsl
index c084b23..f8bd65a 100644
--- a/test/tint/extensions/parsing/basic.wgsl.expected.wgsl
+++ b/test/tint/extensions/parsing/basic.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 enable f16;
 
-@stage(fragment)
+@fragment
 fn main() -> @location(0) vec4<f32> {
   return vec4<f32>(0.100000001, 0.200000003, 0.300000012, 0.400000006);
 }
diff --git a/test/tint/extensions/parsing/duplicated_extensions.wgsl b/test/tint/extensions/parsing/duplicated_extensions.wgsl
index d72f18d..b90bbcf 100644
--- a/test/tint/extensions/parsing/duplicated_extensions.wgsl
+++ b/test/tint/extensions/parsing/duplicated_extensions.wgsl
@@ -3,7 +3,7 @@
 enable f16;
 enable f16;
 
-@stage(fragment)
+@fragment
 fn main() -> @location(0) vec4<f32> {
     return vec4<f32>(0.1, 0.2, 0.3, 0.4);
 }
diff --git a/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.wgsl b/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.wgsl
index be5f381..b20c55f 100644
--- a/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.wgsl
+++ b/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 enable f16;
 enable f16;
 
-@stage(fragment)
+@fragment
 fn main() -> @location(0) vec4<f32> {
   return vec4<f32>(0.100000001, 0.200000003, 0.300000012, 0.400000006);
 }
diff --git a/test/tint/layout/storage/mat2x2/f32.wgsl b/test/tint/layout/storage/mat2x2/f32.wgsl
index 67afba0..7b9cfa8 100644
--- a/test/tint/layout/storage/mat2x2/f32.wgsl
+++ b/test/tint/layout/storage/mat2x2/f32.wgsl
@@ -3,7 +3,7 @@
 };
 @group(0) @binding(0) var<storage, read_write> ssbo : SSBO;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     let v = ssbo.m;
     ssbo.m = v;
diff --git a/test/tint/layout/storage/mat2x2/f32.wgsl.expected.wgsl b/test/tint/layout/storage/mat2x2/f32.wgsl.expected.wgsl
index 0a3e997..b737578 100644
--- a/test/tint/layout/storage/mat2x2/f32.wgsl.expected.wgsl
+++ b/test/tint/layout/storage/mat2x2/f32.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(0) var<storage, read_write> ssbo : SSBO;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   let v = ssbo.m;
   ssbo.m = v;
diff --git a/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.wgsl b/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.wgsl
index 119ede2..488d530 100644
--- a/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.wgsl
+++ b/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.wgsl
@@ -23,7 +23,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn f() {
   f_1();
 }
diff --git a/test/tint/let/global/global.wgsl b/test/tint/let/global/global.wgsl
index 9f4597b..6639d5d 100644
--- a/test/tint/let/global/global.wgsl
+++ b/test/tint/let/global/global.wgsl
@@ -18,7 +18,7 @@
 let v8 = MyStruct();
 let v9 = MyArray();
 
-@stage(fragment)
+@fragment
 fn main() -> @location(0) vec4<f32> {
     return vec4<f32>(0.0,0.0,0.0,0.0);
 }
diff --git a/test/tint/let/global/global.wgsl.expected.wgsl b/test/tint/let/global/global.wgsl.expected.wgsl
index b1e4d6e..8f76f49 100644
--- a/test/tint/let/global/global.wgsl.expected.wgsl
+++ b/test/tint/let/global/global.wgsl.expected.wgsl
@@ -22,7 +22,7 @@
 
 let v9 = MyArray();
 
-@stage(fragment)
+@fragment
 fn main() -> @location(0) vec4<f32> {
   return vec4<f32>(0.0, 0.0, 0.0, 0.0);
 }
diff --git a/test/tint/let/inferred/function.wgsl b/test/tint/let/inferred/function.wgsl
index 48ab6f0..b436f46 100644
--- a/test/tint/let/inferred/function.wgsl
+++ b/test/tint/let/inferred/function.wgsl
@@ -33,7 +33,7 @@
     let v15 = ret_MyArray();
 }
 
-@stage(fragment)
+@fragment
 fn main() -> @location(0) vec4<f32> {
     return vec4<f32>(0.0,0.0,0.0,0.0);
 }
diff --git a/test/tint/let/inferred/function.wgsl.expected.wgsl b/test/tint/let/inferred/function.wgsl.expected.wgsl
index 34c18ff..82654aa 100644
--- a/test/tint/let/inferred/function.wgsl.expected.wgsl
+++ b/test/tint/let/inferred/function.wgsl.expected.wgsl
@@ -42,7 +42,7 @@
   let v15 = ret_MyArray();
 }
 
-@stage(fragment)
+@fragment
 fn main() -> @location(0) vec4<f32> {
   return vec4<f32>(0.0, 0.0, 0.0, 0.0);
 }
diff --git a/test/tint/loops/continue_in_switch.wgsl b/test/tint/loops/continue_in_switch.wgsl
index b523874..475964a 100644
--- a/test/tint/loops/continue_in_switch.wgsl
+++ b/test/tint/loops/continue_in_switch.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     for (var i : i32 = 0; i < 4; i = i + 1) {
         switch(i) {
diff --git a/test/tint/loops/continue_in_switch.wgsl.expected.wgsl b/test/tint/loops/continue_in_switch.wgsl.expected.wgsl
index ab9a029..46be659 100644
--- a/test/tint/loops/continue_in_switch.wgsl.expected.wgsl
+++ b/test/tint/loops/continue_in_switch.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   for(var i : i32 = 0; (i < 4); i = (i + 1)) {
     switch(i) {
diff --git a/test/tint/out_of_order_decls/alias/alias.wgsl b/test/tint/out_of_order_decls/alias/alias.wgsl
index b1c9e66..ab66446 100644
--- a/test/tint/out_of_order_decls/alias/alias.wgsl
+++ b/test/tint/out_of_order_decls/alias/alias.wgsl
@@ -1,7 +1,7 @@
 type T1 = T2;
 type T2 = i32;
 
-@stage(fragment)
+@fragment
 fn f() {
   var v : T1;
 }
diff --git a/test/tint/out_of_order_decls/alias/alias.wgsl.expected.wgsl b/test/tint/out_of_order_decls/alias/alias.wgsl.expected.wgsl
index ca3ee03..fbb0dd4 100644
--- a/test/tint/out_of_order_decls/alias/alias.wgsl.expected.wgsl
+++ b/test/tint/out_of_order_decls/alias/alias.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 type T2 = i32;
 
-@stage(fragment)
+@fragment
 fn f() {
   var v : T1;
 }
diff --git a/test/tint/out_of_order_decls/alias/struct.wgsl b/test/tint/out_of_order_decls/alias/struct.wgsl
index 923353b..f736800 100644
--- a/test/tint/out_of_order_decls/alias/struct.wgsl
+++ b/test/tint/out_of_order_decls/alias/struct.wgsl
@@ -4,7 +4,7 @@
   m : i32,
 }
 
-@stage(fragment)
+@fragment
 fn f() {
   var v : T;
 }
diff --git a/test/tint/out_of_order_decls/alias/struct.wgsl.expected.wgsl b/test/tint/out_of_order_decls/alias/struct.wgsl.expected.wgsl
index 923353b..f736800 100644
--- a/test/tint/out_of_order_decls/alias/struct.wgsl.expected.wgsl
+++ b/test/tint/out_of_order_decls/alias/struct.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   m : i32,
 }
 
-@stage(fragment)
+@fragment
 fn f() {
   var v : T;
 }
diff --git a/test/tint/out_of_order_decls/array/alias.wgsl b/test/tint/out_of_order_decls/array/alias.wgsl
index 95cec5a..d7c7835 100644
--- a/test/tint/out_of_order_decls/array/alias.wgsl
+++ b/test/tint/out_of_order_decls/array/alias.wgsl
@@ -1,7 +1,7 @@
 var<private> A : array<T, 4>;
 type T = i32;
 
-@stage(fragment)
+@fragment
 fn f() {
   A[0] = 1;
 }
diff --git a/test/tint/out_of_order_decls/array/alias.wgsl.expected.wgsl b/test/tint/out_of_order_decls/array/alias.wgsl.expected.wgsl
index 1e581e0..5d17f7b 100644
--- a/test/tint/out_of_order_decls/array/alias.wgsl.expected.wgsl
+++ b/test/tint/out_of_order_decls/array/alias.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 type T = i32;
 
-@stage(fragment)
+@fragment
 fn f() {
   A[0] = 1;
 }
diff --git a/test/tint/out_of_order_decls/array/struct.wgsl b/test/tint/out_of_order_decls/array/struct.wgsl
index 70d1560..47495d9 100644
--- a/test/tint/out_of_order_decls/array/struct.wgsl
+++ b/test/tint/out_of_order_decls/array/struct.wgsl
@@ -3,7 +3,7 @@
   m : i32,
 };
 
-@stage(fragment)
+@fragment
 fn f() {
   A[0] = S(1);
 }
diff --git a/test/tint/out_of_order_decls/array/struct.wgsl.expected.wgsl b/test/tint/out_of_order_decls/array/struct.wgsl.expected.wgsl
index 30d0f58..92a79ac 100644
--- a/test/tint/out_of_order_decls/array/struct.wgsl.expected.wgsl
+++ b/test/tint/out_of_order_decls/array/struct.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
   m : i32,
 }
 
-@stage(fragment)
+@fragment
 fn f() {
   A[0] = S(1);
 }
diff --git a/test/tint/out_of_order_decls/func/func.wgsl b/test/tint/out_of_order_decls/func/func.wgsl
index 1a0f212..20032c4 100644
--- a/test/tint/out_of_order_decls/func/func.wgsl
+++ b/test/tint/out_of_order_decls/func/func.wgsl
@@ -1,4 +1,4 @@
-@stage(fragment)
+@fragment
 fn f1() {
   f2();
 }
diff --git a/test/tint/out_of_order_decls/func/func.wgsl.expected.wgsl b/test/tint/out_of_order_decls/func/func.wgsl.expected.wgsl
index 1a0f212..20032c4 100644
--- a/test/tint/out_of_order_decls/func/func.wgsl.expected.wgsl
+++ b/test/tint/out_of_order_decls/func/func.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(fragment)
+@fragment
 fn f1() {
   f2();
 }
diff --git a/test/tint/out_of_order_decls/func/let.wgsl b/test/tint/out_of_order_decls/func/let.wgsl
index 25a56c6..6498fe7 100644
--- a/test/tint/out_of_order_decls/func/let.wgsl
+++ b/test/tint/out_of_order_decls/func/let.wgsl
@@ -1,4 +1,4 @@
-@stage(fragment)
+@fragment
 fn f() {
   let b = a;
 }
diff --git a/test/tint/out_of_order_decls/func/let.wgsl.expected.wgsl b/test/tint/out_of_order_decls/func/let.wgsl.expected.wgsl
index 25a56c6..6498fe7 100644
--- a/test/tint/out_of_order_decls/func/let.wgsl.expected.wgsl
+++ b/test/tint/out_of_order_decls/func/let.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(fragment)
+@fragment
 fn f() {
   let b = a;
 }
diff --git a/test/tint/out_of_order_decls/func/type.wgsl b/test/tint/out_of_order_decls/func/type.wgsl
index 4810fc1..596ac2c 100644
--- a/test/tint/out_of_order_decls/func/type.wgsl
+++ b/test/tint/out_of_order_decls/func/type.wgsl
@@ -1,4 +1,4 @@
-@stage(fragment)
+@fragment
 fn f() {
   var b : T;
 }
diff --git a/test/tint/out_of_order_decls/func/type.wgsl.expected.wgsl b/test/tint/out_of_order_decls/func/type.wgsl.expected.wgsl
index 4810fc1..596ac2c 100644
--- a/test/tint/out_of_order_decls/func/type.wgsl.expected.wgsl
+++ b/test/tint/out_of_order_decls/func/type.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(fragment)
+@fragment
 fn f() {
   var b : T;
 }
diff --git a/test/tint/out_of_order_decls/func/var.wgsl b/test/tint/out_of_order_decls/func/var.wgsl
index d77a968..4635429 100644
--- a/test/tint/out_of_order_decls/func/var.wgsl
+++ b/test/tint/out_of_order_decls/func/var.wgsl
@@ -1,4 +1,4 @@
-@stage(fragment)
+@fragment
 fn f() {
   let b = a;
 }
diff --git a/test/tint/out_of_order_decls/func/var.wgsl.expected.wgsl b/test/tint/out_of_order_decls/func/var.wgsl.expected.wgsl
index d77a968..4635429 100644
--- a/test/tint/out_of_order_decls/func/var.wgsl.expected.wgsl
+++ b/test/tint/out_of_order_decls/func/var.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(fragment)
+@fragment
 fn f() {
   let b = a;
 }
diff --git a/test/tint/out_of_order_decls/struct/alias.wgsl b/test/tint/out_of_order_decls/struct/alias.wgsl
index 57dd249..84f8679 100644
--- a/test/tint/out_of_order_decls/struct/alias.wgsl
+++ b/test/tint/out_of_order_decls/struct/alias.wgsl
@@ -4,7 +4,7 @@
 
 type T = i32;
 
-@stage(fragment)
+@fragment
 fn f() {
   var v : S;
 }
diff --git a/test/tint/out_of_order_decls/struct/alias.wgsl.expected.wgsl b/test/tint/out_of_order_decls/struct/alias.wgsl.expected.wgsl
index 57dd249..84f8679 100644
--- a/test/tint/out_of_order_decls/struct/alias.wgsl.expected.wgsl
+++ b/test/tint/out_of_order_decls/struct/alias.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 type T = i32;
 
-@stage(fragment)
+@fragment
 fn f() {
   var v : S;
 }
diff --git a/test/tint/out_of_order_decls/struct/struct.wgsl b/test/tint/out_of_order_decls/struct/struct.wgsl
index 44e2030..3c78579 100644
--- a/test/tint/out_of_order_decls/struct/struct.wgsl
+++ b/test/tint/out_of_order_decls/struct/struct.wgsl
@@ -6,7 +6,7 @@
   m : i32,
 }
 
-@stage(fragment)
+@fragment
 fn f() {
   var v : S1;
 }
diff --git a/test/tint/out_of_order_decls/struct/struct.wgsl.expected.wgsl b/test/tint/out_of_order_decls/struct/struct.wgsl.expected.wgsl
index 44e2030..3c78579 100644
--- a/test/tint/out_of_order_decls/struct/struct.wgsl.expected.wgsl
+++ b/test/tint/out_of_order_decls/struct/struct.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   m : i32,
 }
 
-@stage(fragment)
+@fragment
 fn f() {
   var v : S1;
 }
diff --git a/test/tint/ptr_ref/access/matrix.spvasm.expected.wgsl b/test/tint/ptr_ref/access/matrix.spvasm.expected.wgsl
index c5e748e..b913709 100644
--- a/test/tint/ptr_ref/access/matrix.spvasm.expected.wgsl
+++ b/test/tint/ptr_ref/access/matrix.spvasm.expected.wgsl
@@ -5,7 +5,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/ptr_ref/access/matrix.wgsl b/test/tint/ptr_ref/access/matrix.wgsl
index a085846..de714c8 100644
--- a/test/tint/ptr_ref/access/matrix.wgsl
+++ b/test/tint/ptr_ref/access/matrix.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var m : mat3x3<f32> = mat3x3<f32>(vec3<f32>(1., 2., 3.), vec3<f32>(4., 5., 6.), vec3<f32>(7., 8., 9.));
   let v : ptr<function, vec3<f32>> = &m[1];
diff --git a/test/tint/ptr_ref/access/matrix.wgsl.expected.wgsl b/test/tint/ptr_ref/access/matrix.wgsl.expected.wgsl
index 110e6e6..4f9a3540 100644
--- a/test/tint/ptr_ref/access/matrix.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/access/matrix.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var m : mat3x3<f32> = mat3x3<f32>(vec3<f32>(1.0, 2.0, 3.0), vec3<f32>(4.0, 5.0, 6.0), vec3<f32>(7.0, 8.0, 9.0));
   let v : ptr<function, vec3<f32>> = &(m[1]);
diff --git a/test/tint/ptr_ref/copy/ptr_copy.spvasm.expected.wgsl b/test/tint/ptr_ref/copy/ptr_copy.spvasm.expected.wgsl
index ca43748..a063457 100644
--- a/test/tint/ptr_ref/copy/ptr_copy.spvasm.expected.wgsl
+++ b/test/tint/ptr_ref/copy/ptr_copy.spvasm.expected.wgsl
@@ -3,7 +3,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/ptr_ref/load/global/i32.spvasm.expected.wgsl b/test/tint/ptr_ref/load/global/i32.spvasm.expected.wgsl
index 24b4dd5..52e0e8a 100644
--- a/test/tint/ptr_ref/load/global/i32.spvasm.expected.wgsl
+++ b/test/tint/ptr_ref/load/global/i32.spvasm.expected.wgsl
@@ -6,7 +6,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/ptr_ref/load/global/i32.wgsl b/test/tint/ptr_ref/load/global/i32.wgsl
index 4f620cf..75bebb9 100644
--- a/test/tint/ptr_ref/load/global/i32.wgsl
+++ b/test/tint/ptr_ref/load/global/i32.wgsl
@@ -1,6 +1,6 @@
 var<private> I : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let i : i32 = I;
   let use : i32 = i + 1;
diff --git a/test/tint/ptr_ref/load/global/i32.wgsl.expected.wgsl b/test/tint/ptr_ref/load/global/i32.wgsl.expected.wgsl
index 5e1feea..0ac1cf8 100644
--- a/test/tint/ptr_ref/load/global/i32.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/global/i32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<private> I : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let i : i32 = I;
   let use : i32 = (i + 1);
diff --git a/test/tint/ptr_ref/load/global/struct_field.spvasm.expected.wgsl b/test/tint/ptr_ref/load/global/struct_field.spvasm.expected.wgsl
index e3c0fd1..477c131 100644
--- a/test/tint/ptr_ref/load/global/struct_field.spvasm.expected.wgsl
+++ b/test/tint/ptr_ref/load/global/struct_field.spvasm.expected.wgsl
@@ -11,7 +11,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/ptr_ref/load/global/struct_field.wgsl b/test/tint/ptr_ref/load/global/struct_field.wgsl
index 071ef62..949a608 100644
--- a/test/tint/ptr_ref/load/global/struct_field.wgsl
+++ b/test/tint/ptr_ref/load/global/struct_field.wgsl
@@ -4,7 +4,7 @@
 
 var<private> V : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let i : i32 = V.i;
 }
diff --git a/test/tint/ptr_ref/load/global/struct_field.wgsl.expected.wgsl b/test/tint/ptr_ref/load/global/struct_field.wgsl.expected.wgsl
index 4813b5a..a530187 100644
--- a/test/tint/ptr_ref/load/global/struct_field.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/global/struct_field.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 var<private> V : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let i : i32 = V.i;
 }
diff --git a/test/tint/ptr_ref/load/local/i32.spvasm.expected.wgsl b/test/tint/ptr_ref/load/local/i32.spvasm.expected.wgsl
index 6ffac57..e576470 100644
--- a/test/tint/ptr_ref/load/local/i32.spvasm.expected.wgsl
+++ b/test/tint/ptr_ref/load/local/i32.spvasm.expected.wgsl
@@ -6,7 +6,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/ptr_ref/load/local/i32.wgsl b/test/tint/ptr_ref/load/local/i32.wgsl
index 6c30f81..efbe993 100644
--- a/test/tint/ptr_ref/load/local/i32.wgsl
+++ b/test/tint/ptr_ref/load/local/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   let use : i32 = i + 1;
diff --git a/test/tint/ptr_ref/load/local/i32.wgsl.expected.wgsl b/test/tint/ptr_ref/load/local/i32.wgsl.expected.wgsl
index 587375e..f6f1306 100644
--- a/test/tint/ptr_ref/load/local/i32.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/local/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   let use : i32 = (i + 1);
diff --git a/test/tint/ptr_ref/load/local/ptr_function.wgsl b/test/tint/ptr_ref/load/local/ptr_function.wgsl
index ddaafb2..7406eab 100644
--- a/test/tint/ptr_ref/load/local/ptr_function.wgsl
+++ b/test/tint/ptr_ref/load/local/ptr_function.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   let p : ptr<function, i32> = &i;
diff --git a/test/tint/ptr_ref/load/local/ptr_function.wgsl.expected.wgsl b/test/tint/ptr_ref/load/local/ptr_function.wgsl.expected.wgsl
index e29289c..fee777f 100644
--- a/test/tint/ptr_ref/load/local/ptr_function.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/local/ptr_function.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   let p : ptr<function, i32> = &(i);
diff --git a/test/tint/ptr_ref/load/local/ptr_private.wgsl b/test/tint/ptr_ref/load/local/ptr_private.wgsl
index 0f59ad5..96030ac 100644
--- a/test/tint/ptr_ref/load/local/ptr_private.wgsl
+++ b/test/tint/ptr_ref/load/local/ptr_private.wgsl
@@ -1,6 +1,6 @@
 var<private> i : i32 = 123;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let p : ptr<private, i32> = &i;
   let use : i32 = *p + 1;
diff --git a/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.wgsl b/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.wgsl
index 9b77f46..4ee69c8 100644
--- a/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<private> i : i32 = 123;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let p : ptr<private, i32> = &(i);
   let use : i32 = (*(p) + 1);
diff --git a/test/tint/ptr_ref/load/local/ptr_storage.wgsl b/test/tint/ptr_ref/load/local/ptr_storage.wgsl
index b760937..f1bdec0 100644
--- a/test/tint/ptr_ref/load/local/ptr_storage.wgsl
+++ b/test/tint/ptr_ref/load/local/ptr_storage.wgsl
@@ -5,7 +5,7 @@
 @group(0) @binding(0)
 var<storage, read_write> v : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let p : ptr<storage, i32, read_write> = &v.a;
   let use : i32 = *p + 1;
diff --git a/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.wgsl b/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.wgsl
index 248519a..8a71ac9 100644
--- a/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(0) var<storage, read_write> v : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let p : ptr<storage, i32, read_write> = &(v.a);
   let use : i32 = (*(p) + 1);
diff --git a/test/tint/ptr_ref/load/local/ptr_uniform.wgsl b/test/tint/ptr_ref/load/local/ptr_uniform.wgsl
index 749a6e8..4f3c392 100644
--- a/test/tint/ptr_ref/load/local/ptr_uniform.wgsl
+++ b/test/tint/ptr_ref/load/local/ptr_uniform.wgsl
@@ -5,7 +5,7 @@
 @group(0) @binding(0)
 var<uniform> v : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let p : ptr<uniform, i32> = &v.a;
   let use : i32 = *p + 1;
diff --git a/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.wgsl b/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.wgsl
index e8af559..97a1b7b 100644
--- a/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(0) var<uniform> v : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let p : ptr<uniform, i32> = &(v.a);
   let use : i32 = (*(p) + 1);
diff --git a/test/tint/ptr_ref/load/local/ptr_workgroup.wgsl b/test/tint/ptr_ref/load/local/ptr_workgroup.wgsl
index 269caa5..d0957f2 100644
--- a/test/tint/ptr_ref/load/local/ptr_workgroup.wgsl
+++ b/test/tint/ptr_ref/load/local/ptr_workgroup.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> i : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   i = 123;
   let p : ptr<workgroup, i32> = &i;
diff --git a/test/tint/ptr_ref/load/local/ptr_workgroup.wgsl.expected.wgsl b/test/tint/ptr_ref/load/local/ptr_workgroup.wgsl.expected.wgsl
index 39ea1f5..4591a96 100644
--- a/test/tint/ptr_ref/load/local/ptr_workgroup.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/local/ptr_workgroup.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> i : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   i = 123;
   let p : ptr<workgroup, i32> = &(i);
diff --git a/test/tint/ptr_ref/load/local/struct_field.spvasm.expected.wgsl b/test/tint/ptr_ref/load/local/struct_field.spvasm.expected.wgsl
index 9a273cd..2e0efd8 100644
--- a/test/tint/ptr_ref/load/local/struct_field.spvasm.expected.wgsl
+++ b/test/tint/ptr_ref/load/local/struct_field.spvasm.expected.wgsl
@@ -10,7 +10,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/ptr_ref/load/local/struct_field.wgsl b/test/tint/ptr_ref/load/local/struct_field.wgsl
index e2a02fb..1187bab 100644
--- a/test/tint/ptr_ref/load/local/struct_field.wgsl
+++ b/test/tint/ptr_ref/load/local/struct_field.wgsl
@@ -2,7 +2,7 @@
   i : i32,
 };
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var V : S;
   var i : i32 = V.i;
diff --git a/test/tint/ptr_ref/load/local/struct_field.wgsl.expected.wgsl b/test/tint/ptr_ref/load/local/struct_field.wgsl.expected.wgsl
index 03fab9e..07b85a3 100644
--- a/test/tint/ptr_ref/load/local/struct_field.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/local/struct_field.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   i : i32,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var V : S;
   var i : i32 = V.i;
diff --git a/test/tint/ptr_ref/load/param/ptr.spvasm.expected.wgsl b/test/tint/ptr_ref/load/param/ptr.spvasm.expected.wgsl
index 5c5849a..7a2d592 100644
--- a/test/tint/ptr_ref/load/param/ptr.spvasm.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/ptr.spvasm.expected.wgsl
@@ -11,7 +11,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/ptr_ref/load/param/ptr.wgsl b/test/tint/ptr_ref/load/param/ptr.wgsl
index 1dfc928..6555820 100644
--- a/test/tint/ptr_ref/load/param/ptr.wgsl
+++ b/test/tint/ptr_ref/load/param/ptr.wgsl
@@ -2,7 +2,7 @@
   return value + *pointer;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   let r : i32 = func(i, &i);
diff --git a/test/tint/ptr_ref/load/param/ptr.wgsl.expected.wgsl b/test/tint/ptr_ref/load/param/ptr.wgsl.expected.wgsl
index 68c51db..0901cad 100644
--- a/test/tint/ptr_ref/load/param/ptr.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/load/param/ptr.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   return (value + *(pointer));
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   let r : i32 = func(i, &(i));
diff --git a/test/tint/ptr_ref/store/global/i32.spvasm.expected.wgsl b/test/tint/ptr_ref/store/global/i32.spvasm.expected.wgsl
index 949f6c1..6db2c96 100644
--- a/test/tint/ptr_ref/store/global/i32.spvasm.expected.wgsl
+++ b/test/tint/ptr_ref/store/global/i32.spvasm.expected.wgsl
@@ -6,7 +6,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/ptr_ref/store/global/i32.wgsl b/test/tint/ptr_ref/store/global/i32.wgsl
index 3a5c72e..df189a0 100644
--- a/test/tint/ptr_ref/store/global/i32.wgsl
+++ b/test/tint/ptr_ref/store/global/i32.wgsl
@@ -1,6 +1,6 @@
 var<private> I : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   I = 123; // constant
   I = 100 + 20 + 3; // dynamic
diff --git a/test/tint/ptr_ref/store/global/i32.wgsl.expected.wgsl b/test/tint/ptr_ref/store/global/i32.wgsl.expected.wgsl
index 807c1cd..2d376fe 100644
--- a/test/tint/ptr_ref/store/global/i32.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/global/i32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<private> I : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   I = 123;
   I = ((100 + 20) + 3);
diff --git a/test/tint/ptr_ref/store/global/struct_field.spvasm.expected.wgsl b/test/tint/ptr_ref/store/global/struct_field.spvasm.expected.wgsl
index b366fde..e869420 100644
--- a/test/tint/ptr_ref/store/global/struct_field.spvasm.expected.wgsl
+++ b/test/tint/ptr_ref/store/global/struct_field.spvasm.expected.wgsl
@@ -9,7 +9,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/ptr_ref/store/local/i32.spvasm.expected.wgsl b/test/tint/ptr_ref/store/local/i32.spvasm.expected.wgsl
index e75e83b..1fce2c9 100644
--- a/test/tint/ptr_ref/store/local/i32.spvasm.expected.wgsl
+++ b/test/tint/ptr_ref/store/local/i32.spvasm.expected.wgsl
@@ -6,7 +6,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/ptr_ref/store/local/i32.wgsl b/test/tint/ptr_ref/store/local/i32.wgsl
index ea390b9..c193f14 100644
--- a/test/tint/ptr_ref/store/local/i32.wgsl
+++ b/test/tint/ptr_ref/store/local/i32.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   let p : ptr<function, i32> = &i;
diff --git a/test/tint/ptr_ref/store/local/i32.wgsl.expected.wgsl b/test/tint/ptr_ref/store/local/i32.wgsl.expected.wgsl
index c5f03d5..a39176d 100644
--- a/test/tint/ptr_ref/store/local/i32.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/local/i32.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   let p : ptr<function, i32> = &(i);
diff --git a/test/tint/ptr_ref/store/local/struct_field.spvasm.expected.wgsl b/test/tint/ptr_ref/store/local/struct_field.spvasm.expected.wgsl
index 6cf6789..56ca420 100644
--- a/test/tint/ptr_ref/store/local/struct_field.spvasm.expected.wgsl
+++ b/test/tint/ptr_ref/store/local/struct_field.spvasm.expected.wgsl
@@ -8,7 +8,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/ptr_ref/store/param/ptr.spvasm.expected.wgsl b/test/tint/ptr_ref/store/param/ptr.spvasm.expected.wgsl
index 1ecd329..0a80e4b 100644
--- a/test/tint/ptr_ref/store/param/ptr.spvasm.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/ptr.spvasm.expected.wgsl
@@ -10,7 +10,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1i, 1i, 1i)
+@compute @workgroup_size(1i, 1i, 1i)
 fn main() {
   main_1();
 }
diff --git a/test/tint/ptr_ref/store/param/ptr.wgsl b/test/tint/ptr_ref/store/param/ptr.wgsl
index b23ad6f..9adc2c6 100644
--- a/test/tint/ptr_ref/store/param/ptr.wgsl
+++ b/test/tint/ptr_ref/store/param/ptr.wgsl
@@ -2,7 +2,7 @@
   *pointer = value;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   func(123, &i);
diff --git a/test/tint/ptr_ref/store/param/ptr.wgsl.expected.wgsl b/test/tint/ptr_ref/store/param/ptr.wgsl.expected.wgsl
index d9d6dbb..2955c9b 100644
--- a/test/tint/ptr_ref/store/param/ptr.wgsl.expected.wgsl
+++ b/test/tint/ptr_ref/store/param/ptr.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   *(pointer) = value;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var i : i32 = 123;
   func(123, &(i));
diff --git a/test/tint/samples/compute_boids.wgsl b/test/tint/samples/compute_boids.wgsl
index fdb9386..e8515a22 100644
--- a/test/tint/samples/compute_boids.wgsl
+++ b/test/tint/samples/compute_boids.wgsl
@@ -14,7 +14,7 @@
 
 // vertex shader
 
-@stage(vertex)
+@vertex
 fn vert_main(@location(0) a_particlePos : vec2<f32>,
              @location(1) a_particleVel : vec2<f32>,
              @location(2) a_pos : vec2<f32>)
@@ -28,7 +28,7 @@
 
 // fragment shader
 
-@stage(fragment)
+@fragment
 fn frag_main() -> @location(0) vec4<f32> {
   return vec4<f32>(1.0, 1.0, 1.0, 1.0);
 }
@@ -58,7 +58,7 @@
 @binding(2) @group(0) var<storage, read_write> particlesB : Particles;
 
 // https://github.com/austinEng/Project6-Vulkan-Flocking/blob/master/data/shaders/computeparticles/particle.comp
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main(
   @builtin(global_invocation_id) gl_GlobalInvocationID : vec3<u32>) {
   var index : u32 = gl_GlobalInvocationID.x;
diff --git a/test/tint/samples/compute_boids.wgsl.expected.wgsl b/test/tint/samples/compute_boids.wgsl.expected.wgsl
index 45ef30b..b41ba8c 100644
--- a/test/tint/samples/compute_boids.wgsl.expected.wgsl
+++ b/test/tint/samples/compute_boids.wgsl.expected.wgsl
@@ -1,11 +1,11 @@
-@stage(vertex)
+@vertex
 fn vert_main(@location(0) a_particlePos : vec2<f32>, @location(1) a_particleVel : vec2<f32>, @location(2) a_pos : vec2<f32>) -> @builtin(position) vec4<f32> {
   var angle : f32 = -(atan2(a_particleVel.x, a_particleVel.y));
   var pos : vec2<f32> = vec2<f32>(((a_pos.x * cos(angle)) - (a_pos.y * sin(angle))), ((a_pos.x * sin(angle)) + (a_pos.y * cos(angle))));
   return vec4<f32>((pos + a_particlePos), 0.0, 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() -> @location(0) vec4<f32> {
   return vec4<f32>(1.0, 1.0, 1.0, 1.0);
 }
@@ -35,7 +35,7 @@
 
 @binding(2) @group(0) var<storage, read_write> particlesB : Particles;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn comp_main(@builtin(global_invocation_id) gl_GlobalInvocationID : vec3<u32>) {
   var index : u32 = gl_GlobalInvocationID.x;
   if ((index >= 5u)) {
diff --git a/test/tint/samples/cube.wgsl b/test/tint/samples/cube.wgsl
index a894a2f..0a93ac6 100644
--- a/test/tint/samples/cube.wgsl
+++ b/test/tint/samples/cube.wgsl
@@ -29,7 +29,7 @@
   @builtin(position) Position : vec4<f32>,
 };
 
-@stage(vertex)
+@vertex
 fn vtx_main(input : VertexInput) -> VertexOutput {
   var output : VertexOutput;
   output.Position = uniforms.modelViewProjectionMatrix * input.cur_position;
@@ -39,7 +39,7 @@
 
 // Fragment shader
 
-@stage(fragment)
+@fragment
 fn frag_main(@location(0) fragColor : vec4<f32>)
           -> @location(0) vec4<f32> {
   return fragColor;
diff --git a/test/tint/samples/cube.wgsl.expected.wgsl b/test/tint/samples/cube.wgsl.expected.wgsl
index 4014881..6c36853 100644
--- a/test/tint/samples/cube.wgsl.expected.wgsl
+++ b/test/tint/samples/cube.wgsl.expected.wgsl
@@ -18,7 +18,7 @@
   Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn vtx_main(input : VertexInput) -> VertexOutput {
   var output : VertexOutput;
   output.Position = (uniforms.modelViewProjectionMatrix * input.cur_position);
@@ -26,7 +26,7 @@
   return output;
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(@location(0) fragColor : vec4<f32>) -> @location(0) vec4<f32> {
   return fragColor;
 }
diff --git a/test/tint/samples/function.wgsl b/test/tint/samples/function.wgsl
index 92ffb04..1987a5f 100644
--- a/test/tint/samples/function.wgsl
+++ b/test/tint/samples/function.wgsl
@@ -16,6 +16,6 @@
     return ((2. * 3.) - 4.) / 5.;
 }
 
-@stage(compute) @workgroup_size(2)
+@compute @workgroup_size(2)
 fn ep() {
 }
diff --git a/test/tint/samples/function.wgsl.expected.wgsl b/test/tint/samples/function.wgsl.expected.wgsl
index 5a3a80c..23b97bb 100644
--- a/test/tint/samples/function.wgsl.expected.wgsl
+++ b/test/tint/samples/function.wgsl.expected.wgsl
@@ -2,6 +2,6 @@
   return (((2.0 * 3.0) - 4.0) / 5.0);
 }
 
-@stage(compute) @workgroup_size(2)
+@compute @workgroup_size(2)
 fn ep() {
 }
diff --git a/test/tint/samples/simple.wgsl b/test/tint/samples/simple.wgsl
index d30b8a0..28522e8 100644
--- a/test/tint/samples/simple.wgsl
+++ b/test/tint/samples/simple.wgsl
@@ -15,7 +15,7 @@
 fn bar() {
 }
 
-@stage(fragment)
+@fragment
 fn main() -> @location(0) vec4<f32> {
     var a : vec2<f32> = vec2<f32>();
     bar();
diff --git a/test/tint/samples/simple.wgsl.expected.wgsl b/test/tint/samples/simple.wgsl.expected.wgsl
index 83388f8..0c37a65 100644
--- a/test/tint/samples/simple.wgsl.expected.wgsl
+++ b/test/tint/samples/simple.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 fn bar() {
 }
 
-@stage(fragment)
+@fragment
 fn main() -> @location(0) vec4<f32> {
   var a : vec2<f32> = vec2<f32>();
   bar();
diff --git a/test/tint/samples/simple_vertex.spvasm.expected.wgsl b/test/tint/samples/simple_vertex.spvasm.expected.wgsl
index ece4672..773ef64 100644
--- a/test/tint/samples/simple_vertex.spvasm.expected.wgsl
+++ b/test/tint/samples/simple_vertex.spvasm.expected.wgsl
@@ -10,7 +10,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> main_out {
   main_1();
   return main_out(gl_Position);
diff --git a/test/tint/samples/triangle.wgsl b/test/tint/samples/triangle.wgsl
index 69d2281..8c6afbd 100644
--- a/test/tint/samples/triangle.wgsl
+++ b/test/tint/samples/triangle.wgsl
@@ -18,14 +18,14 @@
     vec2<f32>(-0.5, -0.5),
     vec2<f32>(0.5, -0.5));
 
-@stage(vertex)
+@vertex
 fn vtx_main(@builtin(vertex_index) VertexIndex : u32)
          -> @builtin(position) vec4<f32> {
   return vec4<f32>(pos[VertexIndex], 0.0, 1.0);
 }
 
 // Fragment shader
-@stage(fragment)
+@fragment
 fn frag_main() -> @location(0) vec4<f32> {
   return vec4<f32>(1.0, 0.0, 0.0, 1.0);
 }
diff --git a/test/tint/samples/triangle.wgsl.expected.wgsl b/test/tint/samples/triangle.wgsl.expected.wgsl
index c92f0a6..84af3b2 100644
--- a/test/tint/samples/triangle.wgsl.expected.wgsl
+++ b/test/tint/samples/triangle.wgsl.expected.wgsl
@@ -1,11 +1,11 @@
 let pos : array<vec2<f32>, 3> = array<vec2<f32>, 3>(vec2<f32>(0.0, 0.5), vec2<f32>(-0.5, -0.5), vec2<f32>(0.5, -0.5));
 
-@stage(vertex)
+@vertex
 fn vtx_main(@builtin(vertex_index) VertexIndex : u32) -> @builtin(position) vec4<f32> {
   return vec4<f32>(pos[VertexIndex], 0.0, 1.0);
 }
 
-@stage(fragment)
+@fragment
 fn frag_main() -> @location(0) vec4<f32> {
   return vec4<f32>(1.0, 0.0, 0.0, 1.0);
 }
diff --git a/test/tint/shader_io/compute_input_builtins.wgsl.expected.wgsl b/test/tint/shader_io/compute_input_builtins.wgsl.expected.wgsl
index a1d3163..96c52bf 100644
--- a/test/tint/shader_io/compute_input_builtins.wgsl.expected.wgsl
+++ b/test/tint/shader_io/compute_input_builtins.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(@builtin(local_invocation_id) local_invocation_id : vec3<u32>, @builtin(local_invocation_index) local_invocation_index : u32, @builtin(global_invocation_id) global_invocation_id : vec3<u32>, @builtin(workgroup_id) workgroup_id : vec3<u32>, @builtin(num_workgroups) num_workgroups : vec3<u32>) {
   let foo : u32 = ((((local_invocation_id.x + local_invocation_index) + global_invocation_id.x) + workgroup_id.x) + num_workgroups.x);
 }
diff --git a/test/tint/shader_io/compute_input_builtins_struct.wgsl b/test/tint/shader_io/compute_input_builtins_struct.wgsl
index 336e822..fccdff0 100644
--- a/test/tint/shader_io/compute_input_builtins_struct.wgsl
+++ b/test/tint/shader_io/compute_input_builtins_struct.wgsl
@@ -6,7 +6,7 @@
   @builtin(num_workgroups) num_workgroups : vec3<u32>,
 };
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(inputs : ComputeInputs) {
   let foo : u32 =
     inputs.local_invocation_id.x +
diff --git a/test/tint/shader_io/compute_input_builtins_struct.wgsl.expected.wgsl b/test/tint/shader_io/compute_input_builtins_struct.wgsl.expected.wgsl
index da12569..84c1a1a 100644
--- a/test/tint/shader_io/compute_input_builtins_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/compute_input_builtins_struct.wgsl.expected.wgsl
@@ -11,7 +11,7 @@
   num_workgroups : vec3<u32>,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(inputs : ComputeInputs) {
   let foo : u32 = ((((inputs.local_invocation_id.x + inputs.local_invocation_index) + inputs.global_invocation_id.x) + inputs.workgroup_id.x) + inputs.num_workgroups.x);
 }
diff --git a/test/tint/shader_io/compute_input_mixed.wgsl b/test/tint/shader_io/compute_input_mixed.wgsl
index 7142431..8b5b9c7 100644
--- a/test/tint/shader_io/compute_input_mixed.wgsl
+++ b/test/tint/shader_io/compute_input_mixed.wgsl
@@ -5,7 +5,7 @@
   @builtin(workgroup_id) workgroup_id : vec3<u32>,
 };
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(
   inputs0 : ComputeInputs0,
   @builtin(local_invocation_index) local_invocation_index : u32,
diff --git a/test/tint/shader_io/compute_input_mixed.wgsl.expected.wgsl b/test/tint/shader_io/compute_input_mixed.wgsl.expected.wgsl
index b84448a..9368e09 100644
--- a/test/tint/shader_io/compute_input_mixed.wgsl.expected.wgsl
+++ b/test/tint/shader_io/compute_input_mixed.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
   workgroup_id : vec3<u32>,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main(inputs0 : ComputeInputs0, @builtin(local_invocation_index) local_invocation_index : u32, @builtin(global_invocation_id) global_invocation_id : vec3<u32>, inputs1 : ComputeInputs1) {
   let foo : u32 = (((inputs0.local_invocation_id.x + local_invocation_index) + global_invocation_id.x) + inputs1.workgroup_id.x);
 }
diff --git a/test/tint/shader_io/fragment_input_builtins.wgsl b/test/tint/shader_io/fragment_input_builtins.wgsl
index db717eb..5e4acd4 100644
--- a/test/tint/shader_io/fragment_input_builtins.wgsl
+++ b/test/tint/shader_io/fragment_input_builtins.wgsl
@@ -1,4 +1,4 @@
-@stage(fragment)
+@fragment
 fn main(
   @builtin(position) position : vec4<f32>,
   @builtin(front_facing) front_facing : bool,
diff --git a/test/tint/shader_io/fragment_input_builtins.wgsl.expected.wgsl b/test/tint/shader_io/fragment_input_builtins.wgsl.expected.wgsl
index 92dfb41..d2bd785 100644
--- a/test/tint/shader_io/fragment_input_builtins.wgsl.expected.wgsl
+++ b/test/tint/shader_io/fragment_input_builtins.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(fragment)
+@fragment
 fn main(@builtin(position) position : vec4<f32>, @builtin(front_facing) front_facing : bool, @builtin(sample_index) sample_index : u32, @builtin(sample_mask) sample_mask : u32) {
   if (front_facing) {
     let foo : vec4<f32> = position;
diff --git a/test/tint/shader_io/fragment_input_builtins_struct.wgsl b/test/tint/shader_io/fragment_input_builtins_struct.wgsl
index abaa641..e05a5225 100644
--- a/test/tint/shader_io/fragment_input_builtins_struct.wgsl
+++ b/test/tint/shader_io/fragment_input_builtins_struct.wgsl
@@ -5,7 +5,7 @@
   @builtin(sample_mask) sample_mask : u32,
 };
 
-@stage(fragment)
+@fragment
 fn main(inputs : FragmentInputs) {
   if (inputs.front_facing) {
     let foo : vec4<f32> = inputs.position;
diff --git a/test/tint/shader_io/fragment_input_builtins_struct.wgsl.expected.wgsl b/test/tint/shader_io/fragment_input_builtins_struct.wgsl.expected.wgsl
index 2084cac..157c2e2 100644
--- a/test/tint/shader_io/fragment_input_builtins_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/fragment_input_builtins_struct.wgsl.expected.wgsl
@@ -9,7 +9,7 @@
   sample_mask : u32,
 }
 
-@stage(fragment)
+@fragment
 fn main(inputs : FragmentInputs) {
   if (inputs.front_facing) {
     let foo : vec4<f32> = inputs.position;
diff --git a/test/tint/shader_io/fragment_input_locations.wgsl b/test/tint/shader_io/fragment_input_locations.wgsl
index b33cfe4..117c697 100644
--- a/test/tint/shader_io/fragment_input_locations.wgsl
+++ b/test/tint/shader_io/fragment_input_locations.wgsl
@@ -1,4 +1,4 @@
-@stage(fragment)
+@fragment
 fn main(
   @location(0) @interpolate(flat) loc0 : i32,
   @location(1) @interpolate(flat) loc1 : u32,
diff --git a/test/tint/shader_io/fragment_input_locations.wgsl.expected.wgsl b/test/tint/shader_io/fragment_input_locations.wgsl.expected.wgsl
index a4cd502..15cf856 100644
--- a/test/tint/shader_io/fragment_input_locations.wgsl.expected.wgsl
+++ b/test/tint/shader_io/fragment_input_locations.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(fragment)
+@fragment
 fn main(@location(0) @interpolate(flat) loc0 : i32, @location(1) @interpolate(flat) loc1 : u32, @location(2) loc2 : f32, @location(3) loc3 : vec4<f32>) {
   let i : i32 = loc0;
   let u : u32 = loc1;
diff --git a/test/tint/shader_io/fragment_input_locations_struct.wgsl b/test/tint/shader_io/fragment_input_locations_struct.wgsl
index 50fb1f7..fe3bd06 100644
--- a/test/tint/shader_io/fragment_input_locations_struct.wgsl
+++ b/test/tint/shader_io/fragment_input_locations_struct.wgsl
@@ -5,7 +5,7 @@
   @location(3) loc3 : vec4<f32>,
 };
 
-@stage(fragment)
+@fragment
 fn main(inputs : FragmentInputs) {
   let i : i32 = inputs.loc0;
   let u : u32 = inputs.loc1;
diff --git a/test/tint/shader_io/fragment_input_locations_struct.wgsl.expected.wgsl b/test/tint/shader_io/fragment_input_locations_struct.wgsl.expected.wgsl
index 4cbe800..fc508ce 100644
--- a/test/tint/shader_io/fragment_input_locations_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/fragment_input_locations_struct.wgsl.expected.wgsl
@@ -9,7 +9,7 @@
   loc3 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(inputs : FragmentInputs) {
   let i : i32 = inputs.loc0;
   let u : u32 = inputs.loc1;
diff --git a/test/tint/shader_io/fragment_input_mixed.wgsl b/test/tint/shader_io/fragment_input_mixed.wgsl
index 8a8c8e2..1fb20a7 100644
--- a/test/tint/shader_io/fragment_input_mixed.wgsl
+++ b/test/tint/shader_io/fragment_input_mixed.wgsl
@@ -7,7 +7,7 @@
   @builtin(sample_mask) sample_mask : u32,
 };
 
-@stage(fragment)
+@fragment
 fn main(
   inputs0 : FragmentInputs0,
   @builtin(front_facing) front_facing : bool,
diff --git a/test/tint/shader_io/fragment_input_mixed.wgsl.expected.wgsl b/test/tint/shader_io/fragment_input_mixed.wgsl.expected.wgsl
index 1734452..8625a41 100644
--- a/test/tint/shader_io/fragment_input_mixed.wgsl.expected.wgsl
+++ b/test/tint/shader_io/fragment_input_mixed.wgsl.expected.wgsl
@@ -12,7 +12,7 @@
   sample_mask : u32,
 }
 
-@stage(fragment)
+@fragment
 fn main(inputs0 : FragmentInputs0, @builtin(front_facing) front_facing : bool, @location(1) @interpolate(flat) loc1 : u32, @builtin(sample_index) sample_index : u32, inputs1 : FragmentInputs1, @location(2) loc2 : f32) {
   if (front_facing) {
     let foo : vec4<f32> = inputs0.position;
diff --git a/test/tint/shader_io/fragment_output_builtins.wgsl b/test/tint/shader_io/fragment_output_builtins.wgsl
index 914cbad..4dd4d68 100644
--- a/test/tint/shader_io/fragment_output_builtins.wgsl
+++ b/test/tint/shader_io/fragment_output_builtins.wgsl
@@ -1,9 +1,9 @@
-@stage(fragment)
+@fragment
 fn main1() -> @builtin(frag_depth) f32 {
   return 1.0;
 }
 
-@stage(fragment)
+@fragment
 fn main2() -> @builtin(sample_mask) u32 {
   return 1u;
 }
diff --git a/test/tint/shader_io/fragment_output_builtins.wgsl.expected.wgsl b/test/tint/shader_io/fragment_output_builtins.wgsl.expected.wgsl
index 914cbad..4dd4d68 100644
--- a/test/tint/shader_io/fragment_output_builtins.wgsl.expected.wgsl
+++ b/test/tint/shader_io/fragment_output_builtins.wgsl.expected.wgsl
@@ -1,9 +1,9 @@
-@stage(fragment)
+@fragment
 fn main1() -> @builtin(frag_depth) f32 {
   return 1.0;
 }
 
-@stage(fragment)
+@fragment
 fn main2() -> @builtin(sample_mask) u32 {
   return 1u;
 }
diff --git a/test/tint/shader_io/fragment_output_builtins_struct.wgsl b/test/tint/shader_io/fragment_output_builtins_struct.wgsl
index 8ef212d..117859c 100644
--- a/test/tint/shader_io/fragment_output_builtins_struct.wgsl
+++ b/test/tint/shader_io/fragment_output_builtins_struct.wgsl
@@ -3,7 +3,7 @@
   @builtin(sample_mask) sample_mask : u32,
 };
 
-@stage(fragment)
+@fragment
 fn main() -> FragmentOutputs {
   return FragmentOutputs(1.0, 1u);
 }
diff --git a/test/tint/shader_io/fragment_output_builtins_struct.wgsl.expected.wgsl b/test/tint/shader_io/fragment_output_builtins_struct.wgsl.expected.wgsl
index 500a094..b81cf47 100644
--- a/test/tint/shader_io/fragment_output_builtins_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/fragment_output_builtins_struct.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   sample_mask : u32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> FragmentOutputs {
   return FragmentOutputs(1.0, 1u);
 }
diff --git a/test/tint/shader_io/fragment_output_locations.wgsl b/test/tint/shader_io/fragment_output_locations.wgsl
index 239589d..632fc42 100644
--- a/test/tint/shader_io/fragment_output_locations.wgsl
+++ b/test/tint/shader_io/fragment_output_locations.wgsl
@@ -1,19 +1,19 @@
-@stage(fragment)
+@fragment
 fn main0() -> @location(0) i32 {
   return 1;
 }
 
-@stage(fragment)
+@fragment
 fn main1() -> @location(1) u32 {
   return 1u;
 }
 
-@stage(fragment)
+@fragment
 fn main2() -> @location(2) f32 {
   return 1.0;
 }
 
-@stage(fragment)
+@fragment
 fn main3() -> @location(3) vec4<f32> {
   return vec4<f32>(1.0, 2.0, 3.0, 4.0);
 }
diff --git a/test/tint/shader_io/fragment_output_locations.wgsl.expected.wgsl b/test/tint/shader_io/fragment_output_locations.wgsl.expected.wgsl
index 239589d..632fc42 100644
--- a/test/tint/shader_io/fragment_output_locations.wgsl.expected.wgsl
+++ b/test/tint/shader_io/fragment_output_locations.wgsl.expected.wgsl
@@ -1,19 +1,19 @@
-@stage(fragment)
+@fragment
 fn main0() -> @location(0) i32 {
   return 1;
 }
 
-@stage(fragment)
+@fragment
 fn main1() -> @location(1) u32 {
   return 1u;
 }
 
-@stage(fragment)
+@fragment
 fn main2() -> @location(2) f32 {
   return 1.0;
 }
 
-@stage(fragment)
+@fragment
 fn main3() -> @location(3) vec4<f32> {
   return vec4<f32>(1.0, 2.0, 3.0, 4.0);
 }
diff --git a/test/tint/shader_io/fragment_output_locations_struct.wgsl b/test/tint/shader_io/fragment_output_locations_struct.wgsl
index 440a4ad..5d51299 100644
--- a/test/tint/shader_io/fragment_output_locations_struct.wgsl
+++ b/test/tint/shader_io/fragment_output_locations_struct.wgsl
@@ -5,7 +5,7 @@
   @location(3) loc3 : vec4<f32>,
 };
 
-@stage(fragment)
+@fragment
 fn main() -> FragmentOutputs {
   return FragmentOutputs(1, 1u, 1.0, vec4<f32>(1.0, 2.0, 3.0, 4.0));
 }
diff --git a/test/tint/shader_io/fragment_output_locations_struct.wgsl.expected.wgsl b/test/tint/shader_io/fragment_output_locations_struct.wgsl.expected.wgsl
index b1eee07..0ec8340 100644
--- a/test/tint/shader_io/fragment_output_locations_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/fragment_output_locations_struct.wgsl.expected.wgsl
@@ -9,7 +9,7 @@
   loc3 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> FragmentOutputs {
   return FragmentOutputs(1, 1u, 1.0, vec4<f32>(1.0, 2.0, 3.0, 4.0));
 }
diff --git a/test/tint/shader_io/fragment_output_mixed.wgsl b/test/tint/shader_io/fragment_output_mixed.wgsl
index 49180ff..80af48d 100644
--- a/test/tint/shader_io/fragment_output_mixed.wgsl
+++ b/test/tint/shader_io/fragment_output_mixed.wgsl
@@ -7,7 +7,7 @@
   @location(3) loc3 : vec4<f32>,
 };
 
-@stage(fragment)
+@fragment
 fn main() -> FragmentOutputs {
   return FragmentOutputs(1, 2.0, 1u, 1.0, 2u, vec4<f32>(1.0, 2.0, 3.0, 4.0));
 }
diff --git a/test/tint/shader_io/fragment_output_mixed.wgsl.expected.wgsl b/test/tint/shader_io/fragment_output_mixed.wgsl.expected.wgsl
index b622a16..0177394 100644
--- a/test/tint/shader_io/fragment_output_mixed.wgsl.expected.wgsl
+++ b/test/tint/shader_io/fragment_output_mixed.wgsl.expected.wgsl
@@ -13,7 +13,7 @@
   loc3 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> FragmentOutputs {
   return FragmentOutputs(1, 2.0, 1u, 1.0, 2u, vec4<f32>(1.0, 2.0, 3.0, 4.0));
 }
diff --git a/test/tint/shader_io/interpolate_input_parameters.wgsl b/test/tint/shader_io/interpolate_input_parameters.wgsl
index 3e350ea..599fe9c 100644
--- a/test/tint/shader_io/interpolate_input_parameters.wgsl
+++ b/test/tint/shader_io/interpolate_input_parameters.wgsl
@@ -1,4 +1,4 @@
-@stage(fragment)
+@fragment
 fn main(
   @location(0) none : f32,
   @location(1) @interpolate(flat) flat : f32,
diff --git a/test/tint/shader_io/interpolate_input_parameters.wgsl.expected.wgsl b/test/tint/shader_io/interpolate_input_parameters.wgsl.expected.wgsl
index 8dbd5b1..df06a21 100644
--- a/test/tint/shader_io/interpolate_input_parameters.wgsl.expected.wgsl
+++ b/test/tint/shader_io/interpolate_input_parameters.wgsl.expected.wgsl
@@ -1,3 +1,3 @@
-@stage(fragment)
+@fragment
 fn main(@location(0) none : f32, @location(1) @interpolate(flat) flat : f32, @location(2) @interpolate(perspective, center) perspective_center : f32, @location(3) @interpolate(perspective, centroid) perspective_centroid : f32, @location(4) @interpolate(perspective, sample) perspective_sample : f32, @location(5) @interpolate(linear, center) linear_center : f32, @location(6) @interpolate(linear, centroid) linear_centroid : f32, @location(7) @interpolate(linear, sample) linear_sample : f32) {
 }
diff --git a/test/tint/shader_io/interpolate_input_struct.wgsl b/test/tint/shader_io/interpolate_input_struct.wgsl
index 46546a4..93cfec8 100644
--- a/test/tint/shader_io/interpolate_input_struct.wgsl
+++ b/test/tint/shader_io/interpolate_input_struct.wgsl
@@ -9,6 +9,6 @@
   @location(7) @interpolate(linear, sample) linear_sample : f32,
 };
 
-@stage(fragment)
+@fragment
 fn main(in : In) {
 }
diff --git a/test/tint/shader_io/interpolate_input_struct.wgsl.expected.wgsl b/test/tint/shader_io/interpolate_input_struct.wgsl.expected.wgsl
index d1b2b52..d6f2f04 100644
--- a/test/tint/shader_io/interpolate_input_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/interpolate_input_struct.wgsl.expected.wgsl
@@ -17,6 +17,6 @@
   linear_sample : f32,
 }
 
-@stage(fragment)
+@fragment
 fn main(in : In) {
 }
diff --git a/test/tint/shader_io/interpolate_integers.wgsl b/test/tint/shader_io/interpolate_integers.wgsl
index 2d93727..bad4d85 100644
--- a/test/tint/shader_io/interpolate_integers.wgsl
+++ b/test/tint/shader_io/interpolate_integers.wgsl
@@ -6,12 +6,12 @@
   @builtin(position) pos : vec4<f32>,
 };
 
-@stage(vertex)
+@vertex
 fn vert_main() -> Interface {
   return Interface();
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(inputs : Interface) -> @location(0) i32 {
   return inputs.i;
 }
diff --git a/test/tint/shader_io/interpolate_integers.wgsl.expected.wgsl b/test/tint/shader_io/interpolate_integers.wgsl.expected.wgsl
index 65f15f9..fd38b42 100644
--- a/test/tint/shader_io/interpolate_integers.wgsl.expected.wgsl
+++ b/test/tint/shader_io/interpolate_integers.wgsl.expected.wgsl
@@ -11,12 +11,12 @@
   pos : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn vert_main() -> Interface {
   return Interface();
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(inputs : Interface) -> @location(0) i32 {
   return inputs.i;
 }
diff --git a/test/tint/shader_io/interpolate_return_struct.wgsl b/test/tint/shader_io/interpolate_return_struct.wgsl
index b5c6740..966d0b7 100644
--- a/test/tint/shader_io/interpolate_return_struct.wgsl
+++ b/test/tint/shader_io/interpolate_return_struct.wgsl
@@ -10,7 +10,7 @@
   @location(7) @interpolate(linear, sample) linear_sample : f32,
 };
 
-@stage(vertex)
+@vertex
 fn main() -> Out {
   return Out();
 }
diff --git a/test/tint/shader_io/interpolate_return_struct.wgsl.expected.wgsl b/test/tint/shader_io/interpolate_return_struct.wgsl.expected.wgsl
index d224352..a9f9705 100644
--- a/test/tint/shader_io/interpolate_return_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/interpolate_return_struct.wgsl.expected.wgsl
@@ -19,7 +19,7 @@
   linear_sample : f32,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> Out {
   return Out();
 }
diff --git a/test/tint/shader_io/invariant.wgsl b/test/tint/shader_io/invariant.wgsl
index 9abbc94..534c2f0 100644
--- a/test/tint/shader_io/invariant.wgsl
+++ b/test/tint/shader_io/invariant.wgsl
@@ -1,4 +1,4 @@
-@stage(vertex)
+@vertex
 fn main() -> @builtin(position) @invariant vec4<f32> {
   return vec4<f32>();
 }
diff --git a/test/tint/shader_io/invariant.wgsl.expected.wgsl b/test/tint/shader_io/invariant.wgsl.expected.wgsl
index 9abbc94..534c2f0 100644
--- a/test/tint/shader_io/invariant.wgsl.expected.wgsl
+++ b/test/tint/shader_io/invariant.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(vertex)
+@vertex
 fn main() -> @builtin(position) @invariant vec4<f32> {
   return vec4<f32>();
 }
diff --git a/test/tint/shader_io/invariant_struct_member.wgsl b/test/tint/shader_io/invariant_struct_member.wgsl
index 64f32ce..fc58fd3 100644
--- a/test/tint/shader_io/invariant_struct_member.wgsl
+++ b/test/tint/shader_io/invariant_struct_member.wgsl
@@ -2,7 +2,7 @@
   @builtin(position) @invariant pos : vec4<f32>,
 };
 
-@stage(vertex)
+@vertex
 fn main() -> Out {
   return Out();
 }
diff --git a/test/tint/shader_io/invariant_struct_member.wgsl.expected.wgsl b/test/tint/shader_io/invariant_struct_member.wgsl.expected.wgsl
index aa95431..e3247dd 100644
--- a/test/tint/shader_io/invariant_struct_member.wgsl.expected.wgsl
+++ b/test/tint/shader_io/invariant_struct_member.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   pos : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> Out {
   return Out();
 }
diff --git a/test/tint/shader_io/shared_struct_different_stages.wgsl b/test/tint/shader_io/shared_struct_different_stages.wgsl
index fc2e7ff..3d9feaf 100644
--- a/test/tint/shader_io/shared_struct_different_stages.wgsl
+++ b/test/tint/shader_io/shared_struct_different_stages.wgsl
@@ -4,12 +4,12 @@
   @builtin(position) pos : vec4<f32>,
 };
 
-@stage(vertex)
+@vertex
 fn vert_main() -> Interface {
   return Interface(0.4, 0.6, vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(colors : Interface) {
   let r : f32 = colors.col1;
   let g : f32 = colors.col2;
diff --git a/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.wgsl b/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.wgsl
index ebf8b86..4c3967d 100644
--- a/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.wgsl
+++ b/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.wgsl
@@ -7,12 +7,12 @@
   pos : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn vert_main() -> Interface {
   return Interface(0.400000006, 0.600000024, vec4<f32>());
 }
 
-@stage(fragment)
+@fragment
 fn frag_main(colors : Interface) {
   let r : f32 = colors.col1;
   let g : f32 = colors.col2;
diff --git a/test/tint/shader_io/shared_struct_helper_function.wgsl b/test/tint/shader_io/shared_struct_helper_function.wgsl
index c6bc37b..2dbc8af 100644
--- a/test/tint/shader_io/shared_struct_helper_function.wgsl
+++ b/test/tint/shader_io/shared_struct_helper_function.wgsl
@@ -7,12 +7,12 @@
   return VertexOutput(vec4<f32>(x, x, x, 1.0), 42);
 }
 
-@stage(vertex)
+@vertex
 fn vert_main1() -> VertexOutput {
   return foo(0.5);
 }
 
-@stage(vertex)
+@vertex
 fn vert_main2() -> VertexOutput {
   return foo(0.25);
 }
diff --git a/test/tint/shader_io/shared_struct_helper_function.wgsl.expected.wgsl b/test/tint/shader_io/shared_struct_helper_function.wgsl.expected.wgsl
index 57e1e1b..fe18db5 100644
--- a/test/tint/shader_io/shared_struct_helper_function.wgsl.expected.wgsl
+++ b/test/tint/shader_io/shared_struct_helper_function.wgsl.expected.wgsl
@@ -9,12 +9,12 @@
   return VertexOutput(vec4<f32>(x, x, x, 1.0), 42);
 }
 
-@stage(vertex)
+@vertex
 fn vert_main1() -> VertexOutput {
   return foo(0.5);
 }
 
-@stage(vertex)
+@vertex
 fn vert_main2() -> VertexOutput {
   return foo(0.25);
 }
diff --git a/test/tint/shader_io/shared_struct_storage_buffer.wgsl b/test/tint/shader_io/shared_struct_storage_buffer.wgsl
index d547365..d5f239a 100644
--- a/test/tint/shader_io/shared_struct_storage_buffer.wgsl
+++ b/test/tint/shader_io/shared_struct_storage_buffer.wgsl
@@ -7,7 +7,7 @@
 @group(0) @binding(0)
 var<storage, write> output : S;
 
-@stage(fragment)
+@fragment
 fn frag_main(input : S) {
   let f : f32 = input.f;
   let u : u32 = input.u;
diff --git a/test/tint/shader_io/shared_struct_storage_buffer.wgsl.expected.wgsl b/test/tint/shader_io/shared_struct_storage_buffer.wgsl.expected.wgsl
index d8c3ad7..38fe6ef 100644
--- a/test/tint/shader_io/shared_struct_storage_buffer.wgsl.expected.wgsl
+++ b/test/tint/shader_io/shared_struct_storage_buffer.wgsl.expected.wgsl
@@ -9,7 +9,7 @@
 
 @group(0) @binding(0) var<storage, write> output : S;
 
-@stage(fragment)
+@fragment
 fn frag_main(input : S) {
   let f : f32 = input.f;
   let u : u32 = input.u;
diff --git a/test/tint/shader_io/vertex_input_builtins.wgsl b/test/tint/shader_io/vertex_input_builtins.wgsl
index a73ae88..8043581 100644
--- a/test/tint/shader_io/vertex_input_builtins.wgsl
+++ b/test/tint/shader_io/vertex_input_builtins.wgsl
@@ -1,4 +1,4 @@
-@stage(vertex)
+@vertex
 fn main(
   @builtin(vertex_index) vertex_index : u32,
   @builtin(instance_index) instance_index : u32,
diff --git a/test/tint/shader_io/vertex_input_builtins.wgsl.expected.wgsl b/test/tint/shader_io/vertex_input_builtins.wgsl.expected.wgsl
index 9955c16..0b45ee7 100644
--- a/test/tint/shader_io/vertex_input_builtins.wgsl.expected.wgsl
+++ b/test/tint/shader_io/vertex_input_builtins.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(vertex)
+@vertex
 fn main(@builtin(vertex_index) vertex_index : u32, @builtin(instance_index) instance_index : u32) -> @builtin(position) vec4<f32> {
   let foo : u32 = (vertex_index + instance_index);
   return vec4<f32>();
diff --git a/test/tint/shader_io/vertex_input_builtins_struct.wgsl b/test/tint/shader_io/vertex_input_builtins_struct.wgsl
index ceeab77..0db20a5 100644
--- a/test/tint/shader_io/vertex_input_builtins_struct.wgsl
+++ b/test/tint/shader_io/vertex_input_builtins_struct.wgsl
@@ -3,7 +3,7 @@
   @builtin(instance_index) instance_index : u32,
 };
 
-@stage(vertex)
+@vertex
 fn main(inputs : VertexInputs) -> @builtin(position) vec4<f32> {
   let foo : u32 = inputs.vertex_index + inputs.instance_index;
   return vec4<f32>();
diff --git a/test/tint/shader_io/vertex_input_builtins_struct.wgsl.expected.wgsl b/test/tint/shader_io/vertex_input_builtins_struct.wgsl.expected.wgsl
index 579d914..71175a8 100644
--- a/test/tint/shader_io/vertex_input_builtins_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/vertex_input_builtins_struct.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
   instance_index : u32,
 }
 
-@stage(vertex)
+@vertex
 fn main(inputs : VertexInputs) -> @builtin(position) vec4<f32> {
   let foo : u32 = (inputs.vertex_index + inputs.instance_index);
   return vec4<f32>();
diff --git a/test/tint/shader_io/vertex_input_locations.wgsl b/test/tint/shader_io/vertex_input_locations.wgsl
index 3627e13..0bf249f 100644
--- a/test/tint/shader_io/vertex_input_locations.wgsl
+++ b/test/tint/shader_io/vertex_input_locations.wgsl
@@ -1,4 +1,4 @@
-@stage(vertex)
+@vertex
 fn main(
   @location(0) loc0 : i32,
   @location(1) loc1 : u32,
diff --git a/test/tint/shader_io/vertex_input_locations.wgsl.expected.wgsl b/test/tint/shader_io/vertex_input_locations.wgsl.expected.wgsl
index 4964dc7..af986ac 100644
--- a/test/tint/shader_io/vertex_input_locations.wgsl.expected.wgsl
+++ b/test/tint/shader_io/vertex_input_locations.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(vertex)
+@vertex
 fn main(@location(0) loc0 : i32, @location(1) loc1 : u32, @location(2) loc2 : f32, @location(3) loc3 : vec4<f32>) -> @builtin(position) vec4<f32> {
   let i : i32 = loc0;
   let u : u32 = loc1;
diff --git a/test/tint/shader_io/vertex_input_locations_struct.wgsl b/test/tint/shader_io/vertex_input_locations_struct.wgsl
index d2afb8c..16c86b1 100644
--- a/test/tint/shader_io/vertex_input_locations_struct.wgsl
+++ b/test/tint/shader_io/vertex_input_locations_struct.wgsl
@@ -5,7 +5,7 @@
   @location(3) loc3 : vec4<f32>,
 };
 
-@stage(vertex)
+@vertex
 fn main(inputs : VertexInputs) -> @builtin(position) vec4<f32> {
   let i : i32 = inputs.loc0;
   let u : u32 = inputs.loc1;
diff --git a/test/tint/shader_io/vertex_input_locations_struct.wgsl.expected.wgsl b/test/tint/shader_io/vertex_input_locations_struct.wgsl.expected.wgsl
index 7cf656d..5ccc7d2 100644
--- a/test/tint/shader_io/vertex_input_locations_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/vertex_input_locations_struct.wgsl.expected.wgsl
@@ -9,7 +9,7 @@
   loc3 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(inputs : VertexInputs) -> @builtin(position) vec4<f32> {
   let i : i32 = inputs.loc0;
   let u : u32 = inputs.loc1;
diff --git a/test/tint/shader_io/vertex_input_mixed.wgsl b/test/tint/shader_io/vertex_input_mixed.wgsl
index 5c60fa2..0014192 100644
--- a/test/tint/shader_io/vertex_input_mixed.wgsl
+++ b/test/tint/shader_io/vertex_input_mixed.wgsl
@@ -7,7 +7,7 @@
   @location(3) loc3 : vec4<f32>,
 };
 
-@stage(vertex)
+@vertex
 fn main(
   inputs0 : VertexInputs0,
   @location(1) loc1 : u32,
diff --git a/test/tint/shader_io/vertex_input_mixed.wgsl.expected.wgsl b/test/tint/shader_io/vertex_input_mixed.wgsl.expected.wgsl
index fc2b4d6..931404b 100644
--- a/test/tint/shader_io/vertex_input_mixed.wgsl.expected.wgsl
+++ b/test/tint/shader_io/vertex_input_mixed.wgsl.expected.wgsl
@@ -12,7 +12,7 @@
   loc3 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(inputs0 : VertexInputs0, @location(1) loc1 : u32, @builtin(instance_index) instance_index : u32, inputs1 : VertexInputs1) -> @builtin(position) vec4<f32> {
   let foo : u32 = (inputs0.vertex_index + instance_index);
   let i : i32 = inputs0.loc0;
diff --git a/test/tint/shader_io/vertex_output_builtins.wgsl b/test/tint/shader_io/vertex_output_builtins.wgsl
index d606b44..3aca32e 100644
--- a/test/tint/shader_io/vertex_output_builtins.wgsl
+++ b/test/tint/shader_io/vertex_output_builtins.wgsl
@@ -1,4 +1,4 @@
-@stage(vertex)
+@vertex
 fn main() -> @builtin(position) vec4<f32> {
   return vec4<f32>(1.0, 2.0, 3.0, 4.0);
 }
diff --git a/test/tint/shader_io/vertex_output_builtins.wgsl.expected.wgsl b/test/tint/shader_io/vertex_output_builtins.wgsl.expected.wgsl
index d606b44..3aca32e 100644
--- a/test/tint/shader_io/vertex_output_builtins.wgsl.expected.wgsl
+++ b/test/tint/shader_io/vertex_output_builtins.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(vertex)
+@vertex
 fn main() -> @builtin(position) vec4<f32> {
   return vec4<f32>(1.0, 2.0, 3.0, 4.0);
 }
diff --git a/test/tint/shader_io/vertex_output_builtins_struct.wgsl b/test/tint/shader_io/vertex_output_builtins_struct.wgsl
index 7f5d2a7..906a0ef 100644
--- a/test/tint/shader_io/vertex_output_builtins_struct.wgsl
+++ b/test/tint/shader_io/vertex_output_builtins_struct.wgsl
@@ -2,7 +2,7 @@
   @builtin(position) position : vec4<f32>,
 };
 
-@stage(vertex)
+@vertex
 fn main() -> VertexOutputs {
   return VertexOutputs(vec4<f32>(1.0, 2.0, 3.0, 4.0));
 }
diff --git a/test/tint/shader_io/vertex_output_builtins_struct.wgsl.expected.wgsl b/test/tint/shader_io/vertex_output_builtins_struct.wgsl.expected.wgsl
index 5fe2d8f..85ac952 100644
--- a/test/tint/shader_io/vertex_output_builtins_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/vertex_output_builtins_struct.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> VertexOutputs {
   return VertexOutputs(vec4<f32>(1.0, 2.0, 3.0, 4.0));
 }
diff --git a/test/tint/shader_io/vertex_output_locations_struct.wgsl b/test/tint/shader_io/vertex_output_locations_struct.wgsl
index a13fd72..0fcdbfb 100644
--- a/test/tint/shader_io/vertex_output_locations_struct.wgsl
+++ b/test/tint/shader_io/vertex_output_locations_struct.wgsl
@@ -6,7 +6,7 @@
   @builtin(position) position : vec4<f32>,
 };
 
-@stage(vertex)
+@vertex
 fn main() -> VertexOutputs {
   return VertexOutputs(1, 1u, 1.0, vec4<f32>(1.0, 2.0, 3.0, 4.0), vec4<f32>());
 }
diff --git a/test/tint/shader_io/vertex_output_locations_struct.wgsl.expected.wgsl b/test/tint/shader_io/vertex_output_locations_struct.wgsl.expected.wgsl
index b117ecc..65ffd0a 100644
--- a/test/tint/shader_io/vertex_output_locations_struct.wgsl.expected.wgsl
+++ b/test/tint/shader_io/vertex_output_locations_struct.wgsl.expected.wgsl
@@ -11,7 +11,7 @@
   position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main() -> VertexOutputs {
   return VertexOutputs(1, 1u, 1.0, vec4<f32>(1.0, 2.0, 3.0, 4.0), vec4<f32>());
 }
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl
index 3535da9..5f457014 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl
@@ -12,7 +12,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.wgsl
index 55968e2..7a6a406 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.wgsl
@@ -12,7 +12,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl
index 2e4d57b7..13774ab 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl
@@ -12,7 +12,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.wgsl
index 9e3319d..38fa45c 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.wgsl
@@ -12,7 +12,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl
index c2f9b7f..337a5c3 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl
@@ -12,7 +12,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.wgsl
index 6efc259..ef5ab68 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.wgsl
@@ -12,7 +12,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl
index 6bd7876..42c6cd0 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl
@@ -23,7 +23,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.wgsl
index 00f96ca..11d871e 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.wgsl
@@ -24,7 +24,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl
index 32f9603..6e98f33 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl
@@ -12,7 +12,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.wgsl
index 9599c41e..bb5dd3ac 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.wgsl
@@ -12,7 +12,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl
index 76bed78..b4cb7ab 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl
@@ -13,7 +13,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.wgsl
index db88183..6da6de0 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.wgsl
@@ -13,7 +13,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl
index ea9bdb3..31a2fa1 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl
@@ -16,7 +16,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.wgsl
index 820aee6..6315970 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.wgsl
@@ -16,7 +16,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl
index feadd47..b9f558b 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl
@@ -17,7 +17,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.wgsl
index da8bd0f..e77fa87 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.wgsl
@@ -17,7 +17,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl
index 82aaf7f..12f615b 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl
@@ -13,7 +13,7 @@
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 @binding(0) @group(0) var<storage, read_write> s1 : OuterS;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   s1.a1[uniforms.i] = v;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.wgsl
index ad1319f..75b704d 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.wgsl
@@ -14,7 +14,7 @@
 
 @binding(0) @group(0) var<storage, read_write> s1 : OuterS;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   s1.a1[uniforms.i] = v;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl
index 639acf2..be7cf3d 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl
@@ -18,7 +18,7 @@
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 @binding(0) @group(0) var<storage, read_write> s : OuterS;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   s.a1[uniforms.i].a2[uniforms.j] = v;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.wgsl
index 7c2bd05..8935d53 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.wgsl
@@ -19,7 +19,7 @@
 
 @binding(0) @group(0) var<storage, read_write> s : OuterS;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   s.a1[uniforms.i].a2[uniforms.j] = v;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl
index 5065ae4..9a024e4 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl
@@ -8,7 +8,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   s1.m1[uniforms.i] = vec4<f32>(1.0);
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.wgsl
index f24bd46..7e84384 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   s1.m1[uniforms.i] = vec4<f32>(1.0);
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl
index 8e83830..713d910 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl
@@ -13,7 +13,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.wgsl
index 63096f1..d988487 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.wgsl
@@ -13,7 +13,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl
index f782c62..fa749e8 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl
@@ -16,7 +16,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.wgsl
index 1d27da4..7108507 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.wgsl
@@ -16,7 +16,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl
index 99c85a9..1cb39fb 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl
@@ -8,7 +8,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   s1.v1[uniforms.i] = 1.0;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.wgsl
index 13a4ebc..5f4da8c 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.wgsl
@@ -8,7 +8,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   s1.v1[uniforms.i] = 1.0;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl
index 639300e..225d858 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl
@@ -12,7 +12,7 @@
   return i + 1u;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   var v : vec3<f32>;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.wgsl
index 47d2e7b..9282fd0 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.wgsl
@@ -12,7 +12,7 @@
   return (i + 1u);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   var v : vec3<f32>;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl
index 7776cd2..278ed92 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl
@@ -12,7 +12,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.wgsl
index acd635d..3db9dea 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.wgsl
@@ -12,7 +12,7 @@
 
 @group(1) @binding(4) var<uniform> uniforms : Uniforms;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : InnerS;
   var s1 : OuterS;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl
index fa1ad43..950f267 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl
@@ -14,7 +14,7 @@
   (*p).a1[uniforms.i] = v;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   f(&s1);
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.wgsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.wgsl
index cebf112..8e8c553 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.wgsl
@@ -17,7 +17,7 @@
   (*(p)).a1[uniforms.i] = v;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var s1 : OuterS;
   f(&(s1));
diff --git a/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl b/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl
index 0b07b79..601a023 100644
--- a/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl
+++ b/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl
@@ -4,7 +4,7 @@
 
 @binding(0) @group(0) var<storage, read_write> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = &s;
 }
diff --git a/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl.expected.wgsl b/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl.expected.wgsl
index 4bb4719..0f263ac 100644
--- a/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/phony/addr_of_non_constructable.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @binding(0) @group(0) var<storage, read_write> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = &(s);
 }
diff --git a/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl b/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl
index 4d7a319..b83a8f9 100644
--- a/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl
+++ b/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl
@@ -4,7 +4,7 @@
 
 @binding(0) @group(0) var<storage, read_write> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = &s.arr;
 }
diff --git a/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl.expected.wgsl b/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl.expected.wgsl
index d16ffd2..a7509e0 100644
--- a/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @binding(0) @group(0) var<storage, read_write> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = &(s.arr);
 }
diff --git a/test/tint/statements/assign/phony/call.wgsl b/test/tint/statements/assign/phony/call.wgsl
index 5f44585..133e3d5 100644
--- a/test/tint/statements/assign/phony/call.wgsl
+++ b/test/tint/statements/assign/phony/call.wgsl
@@ -2,7 +2,7 @@
     return a * b + c;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = f(1, 2, 3);
 }
diff --git a/test/tint/statements/assign/phony/call.wgsl.expected.wgsl b/test/tint/statements/assign/phony/call.wgsl.expected.wgsl
index cef5c5f..5c3d1f7 100644
--- a/test/tint/statements/assign/phony/call.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/phony/call.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   return ((a * b) + c);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = f(1, 2, 3);
 }
diff --git a/test/tint/statements/assign/phony/multiple_side_effects.wgsl b/test/tint/statements/assign/phony/multiple_side_effects.wgsl
index da2faf8..61abe47 100644
--- a/test/tint/statements/assign/phony/multiple_side_effects.wgsl
+++ b/test/tint/statements/assign/phony/multiple_side_effects.wgsl
@@ -2,7 +2,7 @@
     return a * b + c;
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = f(1, 2, 3) + f(4, 5, 6) * f(7, f(8, 9, 10), 11);
 }
diff --git a/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.wgsl b/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.wgsl
index e438785..0e54c4e 100644
--- a/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   return ((a * b) + c);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = (f(1, 2, 3) + (f(4, 5, 6) * f(7, f(8, 9, 10), 11)));
 }
diff --git a/test/tint/statements/assign/phony/storage_buffer.wgsl b/test/tint/statements/assign/phony/storage_buffer.wgsl
index caf8296..848aa2d 100644
--- a/test/tint/statements/assign/phony/storage_buffer.wgsl
+++ b/test/tint/statements/assign/phony/storage_buffer.wgsl
@@ -4,7 +4,7 @@
 
 @binding(0) @group(0) var<storage, read_write> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = s;
     _ = s.i;
diff --git a/test/tint/statements/assign/phony/storage_buffer.wgsl.expected.wgsl b/test/tint/statements/assign/phony/storage_buffer.wgsl.expected.wgsl
index 90c096d..5e13684 100644
--- a/test/tint/statements/assign/phony/storage_buffer.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/phony/storage_buffer.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @binding(0) @group(0) var<storage, read_write> s : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = s;
   _ = s.i;
diff --git a/test/tint/statements/assign/phony/uniform_buffer.wgsl b/test/tint/statements/assign/phony/uniform_buffer.wgsl
index 5ad1e64..0262faf 100644
--- a/test/tint/statements/assign/phony/uniform_buffer.wgsl
+++ b/test/tint/statements/assign/phony/uniform_buffer.wgsl
@@ -4,7 +4,7 @@
 
 @binding(0) @group(0) var<uniform> u : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = u;
     _ = u.i;
diff --git a/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.wgsl b/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.wgsl
index 22a3bc1..33521d9 100644
--- a/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.wgsl
+++ b/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @binding(0) @group(0) var<uniform> u : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = u;
   _ = u.i;
diff --git a/test/tint/statements/switch/common.wgsl b/test/tint/statements/switch/common.wgsl
index 6b8735d..cdebc4e 100644
--- a/test/tint/statements/switch/common.wgsl
+++ b/test/tint/statements/switch/common.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var i : i32;
     var result : i32;
diff --git a/test/tint/statements/switch/common.wgsl.expected.wgsl b/test/tint/statements/switch/common.wgsl.expected.wgsl
index 8b56b03..8e96822 100644
--- a/test/tint/statements/switch/common.wgsl.expected.wgsl
+++ b/test/tint/statements/switch/common.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var i : i32;
   var result : i32;
diff --git a/test/tint/statements/switch/fallthrough.wgsl b/test/tint/statements/switch/fallthrough.wgsl
index 70691c8..667a8f2 100644
--- a/test/tint/statements/switch/fallthrough.wgsl
+++ b/test/tint/statements/switch/fallthrough.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var i : i32;
     switch(i) {
diff --git a/test/tint/statements/switch/fallthrough.wgsl.expected.wgsl b/test/tint/statements/switch/fallthrough.wgsl.expected.wgsl
index b04e882..7794a63 100644
--- a/test/tint/statements/switch/fallthrough.wgsl.expected.wgsl
+++ b/test/tint/statements/switch/fallthrough.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var i : i32;
   switch(i) {
diff --git a/test/tint/statements/switch/only_default_case.wgsl b/test/tint/statements/switch/only_default_case.wgsl
index dcecc4d..967282b 100644
--- a/test/tint/statements/switch/only_default_case.wgsl
+++ b/test/tint/statements/switch/only_default_case.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
     var i : i32;
     var result : i32;
diff --git a/test/tint/statements/switch/only_default_case.wgsl.expected.wgsl b/test/tint/statements/switch/only_default_case.wgsl.expected.wgsl
index 234f256..d3ab4f7 100644
--- a/test/tint/statements/switch/only_default_case.wgsl.expected.wgsl
+++ b/test/tint/statements/switch/only_default_case.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn f() {
   var i : i32;
   var result : i32;
diff --git a/test/tint/struct/type_constructor.wgsl b/test/tint/struct/type_constructor.wgsl
index b556902..30c3dbe 100644
--- a/test/tint/struct/type_constructor.wgsl
+++ b/test/tint/struct/type_constructor.wgsl
@@ -20,7 +20,7 @@
   a : array<i32, 2>,
 };
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x : i32 = 42;
 
diff --git a/test/tint/struct/type_constructor.wgsl.expected.wgsl b/test/tint/struct/type_constructor.wgsl.expected.wgsl
index 6d26b5d..b0a3147 100644
--- a/test/tint/struct/type_constructor.wgsl.expected.wgsl
+++ b/test/tint/struct/type_constructor.wgsl.expected.wgsl
@@ -20,7 +20,7 @@
   a : array<i32, 2>,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let x : i32 = 42;
   let empty : S1 = S1();
diff --git a/test/tint/types/function_scope_declarations.wgsl b/test/tint/types/function_scope_declarations.wgsl
index 9debfec..938fbf5 100644
--- a/test/tint/types/function_scope_declarations.wgsl
+++ b/test/tint/types/function_scope_declarations.wgsl
@@ -2,7 +2,7 @@
   a : f32,
 };
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var bool_var : bool = bool();
   let bool_let : bool = bool();
diff --git a/test/tint/types/function_scope_declarations.wgsl.expected.wgsl b/test/tint/types/function_scope_declarations.wgsl.expected.wgsl
index d09c44c..7d05765 100644
--- a/test/tint/types/function_scope_declarations.wgsl.expected.wgsl
+++ b/test/tint/types/function_scope_declarations.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
   a : f32,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var bool_var : bool = bool();
   let bool_let : bool = bool();
diff --git a/test/tint/types/function_scope_var_conversions.wgsl b/test/tint/types/function_scope_var_conversions.wgsl
index 4f58b71..77ac807 100644
--- a/test/tint/types/function_scope_var_conversions.wgsl
+++ b/test/tint/types/function_scope_var_conversions.wgsl
@@ -3,7 +3,7 @@
   var b : vec2<f32> = vec2<f32>(f32(i32(1)), a);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var bool_var1 : bool = bool(123u);
   var bool_var2 : bool = bool(123);
diff --git a/test/tint/types/function_scope_var_conversions.wgsl.expected.wgsl b/test/tint/types/function_scope_var_conversions.wgsl.expected.wgsl
index 53206b3..036ec12 100644
--- a/test/tint/types/function_scope_var_conversions.wgsl.expected.wgsl
+++ b/test/tint/types/function_scope_var_conversions.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   var b : vec2<f32> = vec2<f32>(f32(i32(1)), a);
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var bool_var1 : bool = bool(123u);
   var bool_var2 : bool = bool(123);
diff --git a/test/tint/types/module_scope_let.wgsl b/test/tint/types/module_scope_let.wgsl
index 4f5f7fe..f7e9375 100644
--- a/test/tint/types/module_scope_let.wgsl
+++ b/test/tint/types/module_scope_let.wgsl
@@ -13,6 +13,6 @@
 let arr_let : array<f32, 4> = array<f32, 4>();
 let struct_let : S = S();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
 }
diff --git a/test/tint/types/module_scope_let.wgsl.expected.wgsl b/test/tint/types/module_scope_let.wgsl.expected.wgsl
index 2585c0c..2baded4 100644
--- a/test/tint/types/module_scope_let.wgsl.expected.wgsl
+++ b/test/tint/types/module_scope_let.wgsl.expected.wgsl
@@ -22,6 +22,6 @@
 
 let struct_let : S = S();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
 }
diff --git a/test/tint/types/module_scope_var.wgsl b/test/tint/types/module_scope_var.wgsl
index c5ea8b6..4576f80 100644
--- a/test/tint/types/module_scope_var.wgsl
+++ b/test/tint/types/module_scope_var.wgsl
@@ -13,7 +13,7 @@
 var<private> arr_var : array<f32, 4>;
 var<private> struct_var : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   // Reference the module-scope variables to stop them from being removed.
   bool_var = bool();
diff --git a/test/tint/types/module_scope_var.wgsl.expected.wgsl b/test/tint/types/module_scope_var.wgsl.expected.wgsl
index 31a20b0..d6ffe85 100644
--- a/test/tint/types/module_scope_var.wgsl.expected.wgsl
+++ b/test/tint/types/module_scope_var.wgsl.expected.wgsl
@@ -22,7 +22,7 @@
 
 var<private> struct_var : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   bool_var = bool();
   i32_var = i32();
diff --git a/test/tint/types/module_scope_var_conversions.wgsl b/test/tint/types/module_scope_var_conversions.wgsl
index ce6fa2e..25b8b40 100644
--- a/test/tint/types/module_scope_var_conversions.wgsl
+++ b/test/tint/types/module_scope_var_conversions.wgsl
@@ -25,7 +25,7 @@
 var<private> v3bool_var4 : vec3<bool> = vec3<bool>(vec2<bool>(vec2<f32>(123.0)), true);
 var<private> v4bool_var5 : vec4<bool> = vec4<bool>(vec2<bool>(vec2<f32>(123.0, 0.0)), vec2<bool>(true, bool(f32(0.0))));
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   // Reference the module-scope variables to stop them from being removed.
   bool_var1 = bool();
diff --git a/test/tint/types/module_scope_var_conversions.wgsl.expected.wgsl b/test/tint/types/module_scope_var_conversions.wgsl.expected.wgsl
index b5373bf..8cbfc01 100644
--- a/test/tint/types/module_scope_var_conversions.wgsl.expected.wgsl
+++ b/test/tint/types/module_scope_var_conversions.wgsl.expected.wgsl
@@ -38,7 +38,7 @@
 
 var<private> v4bool_var5 : vec4<bool> = vec4<bool>(vec2<bool>(vec2<f32>(123.0, 0.0)), vec2<bool>(true, bool(f32(0.0))));
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   bool_var1 = bool();
   bool_var2 = bool();
diff --git a/test/tint/types/module_scope_var_initializers.wgsl b/test/tint/types/module_scope_var_initializers.wgsl
index f2ffaee..791df7b 100644
--- a/test/tint/types/module_scope_var_initializers.wgsl
+++ b/test/tint/types/module_scope_var_initializers.wgsl
@@ -13,7 +13,7 @@
 var<private> arr_var : array<f32, 4> = array<f32, 4>();
 var<private> struct_var : S = S();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   // Reference the module-scope variables to stop them from being removed.
   bool_var = bool();
diff --git a/test/tint/types/module_scope_var_initializers.wgsl.expected.wgsl b/test/tint/types/module_scope_var_initializers.wgsl.expected.wgsl
index e8e80d9..26771df 100644
--- a/test/tint/types/module_scope_var_initializers.wgsl.expected.wgsl
+++ b/test/tint/types/module_scope_var_initializers.wgsl.expected.wgsl
@@ -22,7 +22,7 @@
 
 var<private> struct_var : S = S();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   bool_var = bool();
   i32_var = i32();
diff --git a/test/tint/types/parameters.wgsl b/test/tint/types/parameters.wgsl
index 465a673..d2fcf29 100644
--- a/test/tint/types/parameters.wgsl
+++ b/test/tint/types/parameters.wgsl
@@ -18,6 +18,6 @@
   param_ptr_arr : ptr<function, array<f32, 4>>,
 ) {}
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
 }
diff --git a/test/tint/types/parameters.wgsl.expected.wgsl b/test/tint/types/parameters.wgsl.expected.wgsl
index e98185f..cc80dc2 100644
--- a/test/tint/types/parameters.wgsl.expected.wgsl
+++ b/test/tint/types/parameters.wgsl.expected.wgsl
@@ -5,6 +5,6 @@
 fn foo(param_bool : bool, param_i32 : i32, param_u32 : u32, param_f32 : f32, param_v2i32 : vec2<i32>, param_v3u32 : vec3<u32>, param_v4f32 : vec4<f32>, param_m2x3 : mat2x3<f32>, param_arr : array<f32, 4>, param_struct : S, param_ptr_f32 : ptr<function, f32>, param_ptr_vec : ptr<function, vec4<f32>>, param_ptr_arr : ptr<function, array<f32, 4>>) {
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
 }
diff --git a/test/tint/types/return_types.wgsl b/test/tint/types/return_types.wgsl
index 563b2192..06a055e 100644
--- a/test/tint/types/return_types.wgsl
+++ b/test/tint/types/return_types.wgsl
@@ -13,6 +13,6 @@
 fn ret_arr() -> array<f32, 4> { return array<f32, 4>(); }
 fn ret_struct() -> S { return S(); }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
 }
diff --git a/test/tint/types/return_types.wgsl.expected.wgsl b/test/tint/types/return_types.wgsl.expected.wgsl
index 3ef490e..d339d33 100644
--- a/test/tint/types/return_types.wgsl.expected.wgsl
+++ b/test/tint/types/return_types.wgsl.expected.wgsl
@@ -42,6 +42,6 @@
   return S();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
 }
diff --git a/test/tint/types/sampler.wgsl b/test/tint/types/sampler.wgsl
index edeb51e..cf113ec 100644
--- a/test/tint/types/sampler.wgsl
+++ b/test/tint/types/sampler.wgsl
@@ -1,7 +1,7 @@
 @group(0) @binding(0) var s : sampler;
 @group(0) @binding(1) var sc : sampler_comparison;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = s;
   _ = sc;
diff --git a/test/tint/types/sampler.wgsl.expected.wgsl b/test/tint/types/sampler.wgsl.expected.wgsl
index 3d873eb..de33d8b 100644
--- a/test/tint/types/sampler.wgsl.expected.wgsl
+++ b/test/tint/types/sampler.wgsl.expected.wgsl
@@ -2,7 +2,7 @@
 
 @group(0) @binding(1) var sc : sampler_comparison;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = s;
   _ = sc;
diff --git a/test/tint/types/struct_members.wgsl b/test/tint/types/struct_members.wgsl
index 21bc217..180b042 100644
--- a/test/tint/types/struct_members.wgsl
+++ b/test/tint/types/struct_members.wgsl
@@ -15,7 +15,7 @@
   member_struct : S_inner,
 };
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let s : S = S();
 }
diff --git a/test/tint/types/struct_members.wgsl.expected.wgsl b/test/tint/types/struct_members.wgsl.expected.wgsl
index 061b6f7..89d7867 100644
--- a/test/tint/types/struct_members.wgsl.expected.wgsl
+++ b/test/tint/types/struct_members.wgsl.expected.wgsl
@@ -15,7 +15,7 @@
   member_struct : S_inner,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   let s : S = S();
 }
diff --git a/test/tint/types/texture/depth/2d.wgsl b/test/tint/types/texture/depth/2d.wgsl
index e3a53cd..b0947c7 100644
--- a/test/tint/types/texture/depth/2d.wgsl
+++ b/test/tint/types/texture/depth/2d.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var t_f : texture_depth_2d;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
 }
diff --git a/test/tint/types/texture/depth/2d.wgsl.expected.wgsl b/test/tint/types/texture/depth/2d.wgsl.expected.wgsl
index e3a53cd..b0947c7 100644
--- a/test/tint/types/texture/depth/2d.wgsl.expected.wgsl
+++ b/test/tint/types/texture/depth/2d.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var t_f : texture_depth_2d;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
 }
diff --git a/test/tint/types/texture/depth/2d_array.wgsl b/test/tint/types/texture/depth/2d_array.wgsl
index e6fac8c..22ec1c1 100644
--- a/test/tint/types/texture/depth/2d_array.wgsl
+++ b/test/tint/types/texture/depth/2d_array.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var t_f : texture_depth_2d_array;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
 }
diff --git a/test/tint/types/texture/depth/2d_array.wgsl.expected.wgsl b/test/tint/types/texture/depth/2d_array.wgsl.expected.wgsl
index e6fac8c..22ec1c1 100644
--- a/test/tint/types/texture/depth/2d_array.wgsl.expected.wgsl
+++ b/test/tint/types/texture/depth/2d_array.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var t_f : texture_depth_2d_array;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
 }
diff --git a/test/tint/types/texture/depth/cube.wgsl b/test/tint/types/texture/depth/cube.wgsl
index 785b96c..f19bb64 100644
--- a/test/tint/types/texture/depth/cube.wgsl
+++ b/test/tint/types/texture/depth/cube.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var t_f : texture_depth_cube;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
 }
diff --git a/test/tint/types/texture/depth/cube.wgsl.expected.wgsl b/test/tint/types/texture/depth/cube.wgsl.expected.wgsl
index 785b96c..f19bb64 100644
--- a/test/tint/types/texture/depth/cube.wgsl.expected.wgsl
+++ b/test/tint/types/texture/depth/cube.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var t_f : texture_depth_cube;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
 }
diff --git a/test/tint/types/texture/depth/cube_array.wgsl b/test/tint/types/texture/depth/cube_array.wgsl
index 0e1b07e..db53912 100644
--- a/test/tint/types/texture/depth/cube_array.wgsl
+++ b/test/tint/types/texture/depth/cube_array.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var t_f : texture_depth_cube_array;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
 }
diff --git a/test/tint/types/texture/depth/cube_array.wgsl.expected.wgsl b/test/tint/types/texture/depth/cube_array.wgsl.expected.wgsl
index 0e1b07e..db53912 100644
--- a/test/tint/types/texture/depth/cube_array.wgsl.expected.wgsl
+++ b/test/tint/types/texture/depth/cube_array.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @group(0) @binding(0) var t_f : texture_depth_cube_array;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
 }
diff --git a/test/tint/types/texture/multisampled/2d.wgsl b/test/tint/types/texture/multisampled/2d.wgsl
index 76521e5..771238c 100644
--- a/test/tint/types/texture/multisampled/2d.wgsl
+++ b/test/tint/types/texture/multisampled/2d.wgsl
@@ -2,7 +2,7 @@
 @group(0) @binding(1) var t_i : texture_multisampled_2d<i32>;
 @group(0) @binding(2) var t_u : texture_multisampled_2d<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/tint/types/texture/multisampled/2d.wgsl.expected.wgsl b/test/tint/types/texture/multisampled/2d.wgsl.expected.wgsl
index d8eb77b..156716a 100644
--- a/test/tint/types/texture/multisampled/2d.wgsl.expected.wgsl
+++ b/test/tint/types/texture/multisampled/2d.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(2) var t_u : texture_multisampled_2d<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/tint/types/texture/sampled/1d.wgsl b/test/tint/types/texture/sampled/1d.wgsl
index ed97090..90f22de 100644
--- a/test/tint/types/texture/sampled/1d.wgsl
+++ b/test/tint/types/texture/sampled/1d.wgsl
@@ -2,7 +2,7 @@
 @group(0) @binding(1) var t_i : texture_1d<i32>;
 @group(0) @binding(2) var t_u : texture_1d<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/tint/types/texture/sampled/1d.wgsl.expected.wgsl b/test/tint/types/texture/sampled/1d.wgsl.expected.wgsl
index 565089e..93f60d0 100644
--- a/test/tint/types/texture/sampled/1d.wgsl.expected.wgsl
+++ b/test/tint/types/texture/sampled/1d.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(2) var t_u : texture_1d<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/tint/types/texture/sampled/2d.wgsl b/test/tint/types/texture/sampled/2d.wgsl
index b6be42b..5c7e2e5 100644
--- a/test/tint/types/texture/sampled/2d.wgsl
+++ b/test/tint/types/texture/sampled/2d.wgsl
@@ -2,7 +2,7 @@
 @group(0) @binding(1) var t_i : texture_2d<i32>;
 @group(0) @binding(2) var t_u : texture_2d<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/tint/types/texture/sampled/2d.wgsl.expected.wgsl b/test/tint/types/texture/sampled/2d.wgsl.expected.wgsl
index 007b85f..a5f3faf 100644
--- a/test/tint/types/texture/sampled/2d.wgsl.expected.wgsl
+++ b/test/tint/types/texture/sampled/2d.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(2) var t_u : texture_2d<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/tint/types/texture/sampled/2d_array.wgsl b/test/tint/types/texture/sampled/2d_array.wgsl
index 1dcfc6c..120d0f1 100644
--- a/test/tint/types/texture/sampled/2d_array.wgsl
+++ b/test/tint/types/texture/sampled/2d_array.wgsl
@@ -2,7 +2,7 @@
 @group(0) @binding(1) var t_i : texture_2d_array<i32>;
 @group(0) @binding(2) var t_u : texture_2d_array<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/tint/types/texture/sampled/2d_array.wgsl.expected.wgsl b/test/tint/types/texture/sampled/2d_array.wgsl.expected.wgsl
index 5201bbe..cec37a4 100644
--- a/test/tint/types/texture/sampled/2d_array.wgsl.expected.wgsl
+++ b/test/tint/types/texture/sampled/2d_array.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(2) var t_u : texture_2d_array<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/tint/types/texture/sampled/3d.wgsl b/test/tint/types/texture/sampled/3d.wgsl
index 37a525e..4e79357 100644
--- a/test/tint/types/texture/sampled/3d.wgsl
+++ b/test/tint/types/texture/sampled/3d.wgsl
@@ -2,7 +2,7 @@
 @group(0) @binding(1) var t_i : texture_3d<i32>;
 @group(0) @binding(2) var t_u : texture_3d<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/tint/types/texture/sampled/3d.wgsl.expected.wgsl b/test/tint/types/texture/sampled/3d.wgsl.expected.wgsl
index 747bc8f..d8bd8a2 100644
--- a/test/tint/types/texture/sampled/3d.wgsl.expected.wgsl
+++ b/test/tint/types/texture/sampled/3d.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(2) var t_u : texture_3d<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/tint/types/texture/sampled/cube.wgsl b/test/tint/types/texture/sampled/cube.wgsl
index 89859e9..c02c905 100644
--- a/test/tint/types/texture/sampled/cube.wgsl
+++ b/test/tint/types/texture/sampled/cube.wgsl
@@ -2,7 +2,7 @@
 @group(0) @binding(1) var t_i : texture_cube<i32>;
 @group(0) @binding(2) var t_u : texture_cube<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/tint/types/texture/sampled/cube.wgsl.expected.wgsl b/test/tint/types/texture/sampled/cube.wgsl.expected.wgsl
index 28c6881..21f2402 100644
--- a/test/tint/types/texture/sampled/cube.wgsl.expected.wgsl
+++ b/test/tint/types/texture/sampled/cube.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(2) var t_u : texture_cube<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/tint/types/texture/sampled/cube_array.wgsl b/test/tint/types/texture/sampled/cube_array.wgsl
index c7249c8..4f51942 100644
--- a/test/tint/types/texture/sampled/cube_array.wgsl
+++ b/test/tint/types/texture/sampled/cube_array.wgsl
@@ -2,7 +2,7 @@
 @group(0) @binding(1) var t_i : texture_cube_array<i32>;
 @group(0) @binding(2) var t_u : texture_cube_array<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/tint/types/texture/sampled/cube_array.wgsl.expected.wgsl b/test/tint/types/texture/sampled/cube_array.wgsl.expected.wgsl
index 12dc114..67597b4 100644
--- a/test/tint/types/texture/sampled/cube_array.wgsl.expected.wgsl
+++ b/test/tint/types/texture/sampled/cube_array.wgsl.expected.wgsl
@@ -4,7 +4,7 @@
 
 @group(0) @binding(2) var t_u : texture_cube_array<u32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_f;
   _ = t_i;
diff --git a/test/tint/types/texture/storage/1d.wgsl b/test/tint/types/texture/storage/1d.wgsl
index 7adad9e..7ea09c2 100644
--- a/test/tint/types/texture/storage/1d.wgsl
+++ b/test/tint/types/texture/storage/1d.wgsl
@@ -15,7 +15,7 @@
 @group(0) @binding(14) var t_rgba32sint : texture_storage_1d<rgba32sint, write>;
 @group(0) @binding(15) var t_rgba32float : texture_storage_1d<rgba32float, write>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_rgba8unorm;
   _ = t_rgba8snorm;
diff --git a/test/tint/types/texture/storage/1d.wgsl.expected.wgsl b/test/tint/types/texture/storage/1d.wgsl.expected.wgsl
index a3e5555..d58214d 100644
--- a/test/tint/types/texture/storage/1d.wgsl.expected.wgsl
+++ b/test/tint/types/texture/storage/1d.wgsl.expected.wgsl
@@ -30,7 +30,7 @@
 
 @group(0) @binding(15) var t_rgba32float : texture_storage_1d<rgba32float, write>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_rgba8unorm;
   _ = t_rgba8snorm;
diff --git a/test/tint/types/texture/storage/2d.wgsl b/test/tint/types/texture/storage/2d.wgsl
index 44d0dfd..e631bcf 100644
--- a/test/tint/types/texture/storage/2d.wgsl
+++ b/test/tint/types/texture/storage/2d.wgsl
@@ -15,7 +15,7 @@
 @group(0) @binding(14) var t_rgba32sint : texture_storage_2d<rgba32sint, write>;
 @group(0) @binding(15) var t_rgba32float : texture_storage_2d<rgba32float, write>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_rgba8unorm;
   _ = t_rgba8snorm;
diff --git a/test/tint/types/texture/storage/2d.wgsl.expected.wgsl b/test/tint/types/texture/storage/2d.wgsl.expected.wgsl
index 97824ad..164be3e 100644
--- a/test/tint/types/texture/storage/2d.wgsl.expected.wgsl
+++ b/test/tint/types/texture/storage/2d.wgsl.expected.wgsl
@@ -30,7 +30,7 @@
 
 @group(0) @binding(15) var t_rgba32float : texture_storage_2d<rgba32float, write>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_rgba8unorm;
   _ = t_rgba8snorm;
diff --git a/test/tint/types/texture/storage/2d_array.wgsl b/test/tint/types/texture/storage/2d_array.wgsl
index 6919fda..d183038 100644
--- a/test/tint/types/texture/storage/2d_array.wgsl
+++ b/test/tint/types/texture/storage/2d_array.wgsl
@@ -15,7 +15,7 @@
 @group(0) @binding(14) var t_rgba32sint : texture_storage_2d_array<rgba32sint, write>;
 @group(0) @binding(15) var t_rgba32float : texture_storage_2d_array<rgba32float, write>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_rgba8unorm;
   _ = t_rgba8snorm;
diff --git a/test/tint/types/texture/storage/2d_array.wgsl.expected.wgsl b/test/tint/types/texture/storage/2d_array.wgsl.expected.wgsl
index c4aa337..893a3ba 100644
--- a/test/tint/types/texture/storage/2d_array.wgsl.expected.wgsl
+++ b/test/tint/types/texture/storage/2d_array.wgsl.expected.wgsl
@@ -30,7 +30,7 @@
 
 @group(0) @binding(15) var t_rgba32float : texture_storage_2d_array<rgba32float, write>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_rgba8unorm;
   _ = t_rgba8snorm;
diff --git a/test/tint/types/texture/storage/3d.wgsl b/test/tint/types/texture/storage/3d.wgsl
index 710d0d3..cd51e6b 100644
--- a/test/tint/types/texture/storage/3d.wgsl
+++ b/test/tint/types/texture/storage/3d.wgsl
@@ -15,7 +15,7 @@
 @group(0) @binding(14) var t_rgba32sint : texture_storage_3d<rgba32sint, write>;
 @group(0) @binding(15) var t_rgba32float : texture_storage_3d<rgba32float, write>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_rgba8unorm;
   _ = t_rgba8snorm;
diff --git a/test/tint/types/texture/storage/3d.wgsl.expected.wgsl b/test/tint/types/texture/storage/3d.wgsl.expected.wgsl
index c3ba672..1ee3b94 100644
--- a/test/tint/types/texture/storage/3d.wgsl.expected.wgsl
+++ b/test/tint/types/texture/storage/3d.wgsl.expected.wgsl
@@ -30,7 +30,7 @@
 
 @group(0) @binding(15) var t_rgba32float : texture_storage_3d<rgba32float, write>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = t_rgba8unorm;
   _ = t_rgba8snorm;
diff --git a/test/tint/unicode/comments.wgsl b/test/tint/unicode/comments.wgsl
index 0e42055..1d6108b 100644
--- a/test/tint/unicode/comments.wgsl
+++ b/test/tint/unicode/comments.wgsl
@@ -5,7 +5,7 @@
 नमस्ते दुनिया
 */
 
-@stage(fragment)
+@fragment
 fn /* こんにちは世界 */ main( /* 你好世界 */ ) {
     // 안녕하세요 세계
 }
diff --git a/test/tint/unicode/comments.wgsl.expected.wgsl b/test/tint/unicode/comments.wgsl.expected.wgsl
index 3662a35..1df86fc 100644
--- a/test/tint/unicode/comments.wgsl.expected.wgsl
+++ b/test/tint/unicode/comments.wgsl.expected.wgsl
@@ -1,3 +1,3 @@
-@stage(fragment)
+@fragment
 fn main() {
 }
diff --git a/test/tint/unicode/identifiers.wgsl b/test/tint/unicode/identifiers.wgsl
index 84c904a..64fc205 100644
--- a/test/tint/unicode/identifiers.wgsl
+++ b/test/tint/unicode/identifiers.wgsl
@@ -5,7 +5,7 @@
     return 𝐭𝐲𝐩𝐞_𝐛(ᵖᵃʳᵃᵐ);
 }
 
-@stage(fragment)
+@fragment
 fn 𝕖𝕟𝕥𝕣𝕪𝕡𝕠𝕚𝕟𝕥() {
     var 𝙫𝙖𝙧𝙞𝙖𝙗𝙡𝙚 : 𝓉𝓎𝓅ℯ_𝒶;
     let 𝖗𝖊𝖘𝖚𝖑𝖙 = 𝓯𝓾𝓷𝓬𝓽𝓲𝓸𝓷(𝙫𝙖𝙧𝙞𝙖𝙗𝙡𝙚);
diff --git a/test/tint/unicode/identifiers.wgsl.expected.wgsl b/test/tint/unicode/identifiers.wgsl.expected.wgsl
index d78ad34..e13248f 100644
--- a/test/tint/unicode/identifiers.wgsl.expected.wgsl
+++ b/test/tint/unicode/identifiers.wgsl.expected.wgsl
@@ -6,7 +6,7 @@
   return 𝐭𝐲𝐩𝐞_𝐛(ᵖᵃʳᵃᵐ);
 }
 
-@stage(fragment)
+@fragment
 fn 𝕖𝕟𝕥𝕣𝕪𝕡𝕠𝕚𝕟𝕥() {
   var 𝙫𝙖𝙧𝙞𝙖𝙗𝙡𝙚 : 𝓉𝓎𝓅ℯ_𝒶;
   let 𝖗𝖊𝖘𝖚𝖑𝖙 = 𝓯𝓾𝓷𝓬𝓽𝓲𝓸𝓷(𝙫𝙖𝙧𝙞𝙖𝙗𝙡𝙚);
diff --git a/test/tint/var/inferred/function.wgsl b/test/tint/var/inferred/function.wgsl
index fe9f6fd..a955cde 100644
--- a/test/tint/var/inferred/function.wgsl
+++ b/test/tint/var/inferred/function.wgsl
@@ -33,7 +33,7 @@
     var v15 = ret_MyArray();
 }
 
-@stage(fragment)
+@fragment
 fn main() -> @location(0) vec4<f32> {
     return vec4<f32>(0.0,0.0,0.0,0.0);
 }
diff --git a/test/tint/var/inferred/function.wgsl.expected.wgsl b/test/tint/var/inferred/function.wgsl.expected.wgsl
index ce54347..7abf40a 100644
--- a/test/tint/var/inferred/function.wgsl.expected.wgsl
+++ b/test/tint/var/inferred/function.wgsl.expected.wgsl
@@ -42,7 +42,7 @@
   var v15 = ret_MyArray();
 }
 
-@stage(fragment)
+@fragment
 fn main() -> @location(0) vec4<f32> {
   return vec4<f32>(0.0, 0.0, 0.0, 0.0);
 }
diff --git a/test/tint/var/initialization/function/array.wgsl b/test/tint/var/initialization/function/array.wgsl
index c261a3a..7b33431 100644
--- a/test/tint/var/initialization/function/array.wgsl
+++ b/test/tint/var/initialization/function/array.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     var v : array<i32, 3>;
     _ = v;
diff --git a/test/tint/var/initialization/function/array.wgsl.expected.wgsl b/test/tint/var/initialization/function/array.wgsl.expected.wgsl
index 8ff70f2..fc5ed43 100644
--- a/test/tint/var/initialization/function/array.wgsl.expected.wgsl
+++ b/test/tint/var/initialization/function/array.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : array<i32, 3>;
   _ = v;
diff --git a/test/tint/var/initialization/function/matrix.wgsl b/test/tint/var/initialization/function/matrix.wgsl
index ea336e8..02da4d2 100644
--- a/test/tint/var/initialization/function/matrix.wgsl
+++ b/test/tint/var/initialization/function/matrix.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     var v : mat2x3<f32>;
     _ = v;
diff --git a/test/tint/var/initialization/function/matrix.wgsl.expected.wgsl b/test/tint/var/initialization/function/matrix.wgsl.expected.wgsl
index d8bb391..97df040 100644
--- a/test/tint/var/initialization/function/matrix.wgsl.expected.wgsl
+++ b/test/tint/var/initialization/function/matrix.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : mat2x3<f32>;
   _ = v;
diff --git a/test/tint/var/initialization/function/scalar.wgsl b/test/tint/var/initialization/function/scalar.wgsl
index 5d3b86e..0ff3a5c 100644
--- a/test/tint/var/initialization/function/scalar.wgsl
+++ b/test/tint/var/initialization/function/scalar.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     var v : i32;
     _ = v;
diff --git a/test/tint/var/initialization/function/scalar.wgsl.expected.wgsl b/test/tint/var/initialization/function/scalar.wgsl.expected.wgsl
index 67ee18d..ecc4d30 100644
--- a/test/tint/var/initialization/function/scalar.wgsl.expected.wgsl
+++ b/test/tint/var/initialization/function/scalar.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : i32;
   _ = v;
diff --git a/test/tint/var/initialization/function/struct.wgsl b/test/tint/var/initialization/function/struct.wgsl
index f5ff55d..51d3f3e 100644
--- a/test/tint/var/initialization/function/struct.wgsl
+++ b/test/tint/var/initialization/function/struct.wgsl
@@ -3,7 +3,7 @@
     b : f32,
 };
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     var v : S;
     _ = v;
diff --git a/test/tint/var/initialization/function/struct.wgsl.expected.wgsl b/test/tint/var/initialization/function/struct.wgsl.expected.wgsl
index 8bada3b..be915fc 100644
--- a/test/tint/var/initialization/function/struct.wgsl.expected.wgsl
+++ b/test/tint/var/initialization/function/struct.wgsl.expected.wgsl
@@ -3,7 +3,7 @@
   b : f32,
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : S;
   _ = v;
diff --git a/test/tint/var/initialization/function/vector.wgsl b/test/tint/var/initialization/function/vector.wgsl
index 40bc481..d5fe138 100644
--- a/test/tint/var/initialization/function/vector.wgsl
+++ b/test/tint/var/initialization/function/vector.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     var v : vec3<i32>;
     _ = v;
diff --git a/test/tint/var/initialization/function/vector.wgsl.expected.wgsl b/test/tint/var/initialization/function/vector.wgsl.expected.wgsl
index 37600e5..f8839b5 100644
--- a/test/tint/var/initialization/function/vector.wgsl.expected.wgsl
+++ b/test/tint/var/initialization/function/vector.wgsl.expected.wgsl
@@ -1,4 +1,4 @@
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   var v : vec3<i32>;
   _ = v;
diff --git a/test/tint/var/initialization/private/array.wgsl b/test/tint/var/initialization/private/array.wgsl
index f01730a..266e4f2 100644
--- a/test/tint/var/initialization/private/array.wgsl
+++ b/test/tint/var/initialization/private/array.wgsl
@@ -1,6 +1,6 @@
 var<private> v : array<i32, 3>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/tint/var/initialization/private/array.wgsl.expected.wgsl b/test/tint/var/initialization/private/array.wgsl.expected.wgsl
index ba967ec..478777e 100644
--- a/test/tint/var/initialization/private/array.wgsl.expected.wgsl
+++ b/test/tint/var/initialization/private/array.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<private> v : array<i32, 3>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/tint/var/initialization/private/matrix.wgsl b/test/tint/var/initialization/private/matrix.wgsl
index e46734c..5ab7ed2 100644
--- a/test/tint/var/initialization/private/matrix.wgsl
+++ b/test/tint/var/initialization/private/matrix.wgsl
@@ -1,6 +1,6 @@
 var<private> v : mat2x3<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/tint/var/initialization/private/matrix.wgsl.expected.wgsl b/test/tint/var/initialization/private/matrix.wgsl.expected.wgsl
index c3042ab..e76e77e 100644
--- a/test/tint/var/initialization/private/matrix.wgsl.expected.wgsl
+++ b/test/tint/var/initialization/private/matrix.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<private> v : mat2x3<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/tint/var/initialization/private/scalar.wgsl b/test/tint/var/initialization/private/scalar.wgsl
index 8e46653..c737250 100644
--- a/test/tint/var/initialization/private/scalar.wgsl
+++ b/test/tint/var/initialization/private/scalar.wgsl
@@ -1,6 +1,6 @@
 var<private> v : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/tint/var/initialization/private/scalar.wgsl.expected.wgsl b/test/tint/var/initialization/private/scalar.wgsl.expected.wgsl
index 911081b..7c128fa 100644
--- a/test/tint/var/initialization/private/scalar.wgsl.expected.wgsl
+++ b/test/tint/var/initialization/private/scalar.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<private> v : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/tint/var/initialization/private/struct.wgsl b/test/tint/var/initialization/private/struct.wgsl
index 4d87595..29e5d30 100644
--- a/test/tint/var/initialization/private/struct.wgsl
+++ b/test/tint/var/initialization/private/struct.wgsl
@@ -5,7 +5,7 @@
 
 var<private> v : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/tint/var/initialization/private/struct.wgsl.expected.wgsl b/test/tint/var/initialization/private/struct.wgsl.expected.wgsl
index bb45cd6..53f8f6c 100644
--- a/test/tint/var/initialization/private/struct.wgsl.expected.wgsl
+++ b/test/tint/var/initialization/private/struct.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
 
 var<private> v : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/tint/var/initialization/private/vector.wgsl b/test/tint/var/initialization/private/vector.wgsl
index 2af1bf5..29f5823 100644
--- a/test/tint/var/initialization/private/vector.wgsl
+++ b/test/tint/var/initialization/private/vector.wgsl
@@ -1,6 +1,6 @@
 var<private> v : vec3<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/tint/var/initialization/private/vector.wgsl.expected.wgsl b/test/tint/var/initialization/private/vector.wgsl.expected.wgsl
index 183418e..ea22b21 100644
--- a/test/tint/var/initialization/private/vector.wgsl.expected.wgsl
+++ b/test/tint/var/initialization/private/vector.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<private> v : vec3<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/tint/var/initialization/workgroup/array.wgsl b/test/tint/var/initialization/workgroup/array.wgsl
index 1d9aa8b..f3b6972 100644
--- a/test/tint/var/initialization/workgroup/array.wgsl
+++ b/test/tint/var/initialization/workgroup/array.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> v : array<i32, 3>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/tint/var/initialization/workgroup/array.wgsl.expected.wgsl b/test/tint/var/initialization/workgroup/array.wgsl.expected.wgsl
index cc53b73..d1e084b 100644
--- a/test/tint/var/initialization/workgroup/array.wgsl.expected.wgsl
+++ b/test/tint/var/initialization/workgroup/array.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> v : array<i32, 3>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/tint/var/initialization/workgroup/matrix.wgsl b/test/tint/var/initialization/workgroup/matrix.wgsl
index f494319..42505a6 100644
--- a/test/tint/var/initialization/workgroup/matrix.wgsl
+++ b/test/tint/var/initialization/workgroup/matrix.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> v : mat2x3<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/tint/var/initialization/workgroup/matrix.wgsl.expected.wgsl b/test/tint/var/initialization/workgroup/matrix.wgsl.expected.wgsl
index 62ce905..bdda50c 100644
--- a/test/tint/var/initialization/workgroup/matrix.wgsl.expected.wgsl
+++ b/test/tint/var/initialization/workgroup/matrix.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> v : mat2x3<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/tint/var/initialization/workgroup/scalar.wgsl b/test/tint/var/initialization/workgroup/scalar.wgsl
index 37c8a4f..f99bf74 100644
--- a/test/tint/var/initialization/workgroup/scalar.wgsl
+++ b/test/tint/var/initialization/workgroup/scalar.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> v : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/tint/var/initialization/workgroup/scalar.wgsl.expected.wgsl b/test/tint/var/initialization/workgroup/scalar.wgsl.expected.wgsl
index 3cfef70..98978d0 100644
--- a/test/tint/var/initialization/workgroup/scalar.wgsl.expected.wgsl
+++ b/test/tint/var/initialization/workgroup/scalar.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> v : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/tint/var/initialization/workgroup/struct.wgsl b/test/tint/var/initialization/workgroup/struct.wgsl
index 5aa0a6d..c26547b 100644
--- a/test/tint/var/initialization/workgroup/struct.wgsl
+++ b/test/tint/var/initialization/workgroup/struct.wgsl
@@ -5,7 +5,7 @@
 
 var<workgroup> v : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/tint/var/initialization/workgroup/struct.wgsl.expected.wgsl b/test/tint/var/initialization/workgroup/struct.wgsl.expected.wgsl
index a8b7f86..fe9b67f 100644
--- a/test/tint/var/initialization/workgroup/struct.wgsl.expected.wgsl
+++ b/test/tint/var/initialization/workgroup/struct.wgsl.expected.wgsl
@@ -5,7 +5,7 @@
 
 var<workgroup> v : S;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/tint/var/initialization/workgroup/vector.wgsl b/test/tint/var/initialization/workgroup/vector.wgsl
index 37ff6f2..8e3a45b 100644
--- a/test/tint/var/initialization/workgroup/vector.wgsl
+++ b/test/tint/var/initialization/workgroup/vector.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> v : vec3<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = v;
 }
diff --git a/test/tint/var/initialization/workgroup/vector.wgsl.expected.wgsl b/test/tint/var/initialization/workgroup/vector.wgsl.expected.wgsl
index a6f967c..21d32ba 100644
--- a/test/tint/var/initialization/workgroup/vector.wgsl.expected.wgsl
+++ b/test/tint/var/initialization/workgroup/vector.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 var<workgroup> v : vec3<i32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = v;
 }
diff --git a/test/tint/var/override/named/no_init/bool.wgsl b/test/tint/var/override/named/no_init/bool.wgsl
index 9c595f2..de58af9 100644
--- a/test/tint/var/override/named/no_init/bool.wgsl
+++ b/test/tint/var/override/named/no_init/bool.wgsl
@@ -1,7 +1,7 @@
 // flags: --overrides WGSL_SPEC_CONSTANT_0=0
 override o : bool;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/named/no_init/bool.wgsl.expected.wgsl b/test/tint/var/override/named/no_init/bool.wgsl.expected.wgsl
index 344ec0e..6ee52bb 100644
--- a/test/tint/var/override/named/no_init/bool.wgsl.expected.wgsl
+++ b/test/tint/var/override/named/no_init/bool.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 override o : bool;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/named/no_init/f32.wgsl b/test/tint/var/override/named/no_init/f32.wgsl
index 75b0841..ddc1450 100644
--- a/test/tint/var/override/named/no_init/f32.wgsl
+++ b/test/tint/var/override/named/no_init/f32.wgsl
@@ -1,7 +1,7 @@
 // flags: --overrides WGSL_SPEC_CONSTANT_0=0
 override o : f32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/named/no_init/f32.wgsl.expected.wgsl b/test/tint/var/override/named/no_init/f32.wgsl.expected.wgsl
index bf38cdd..bc62e28 100644
--- a/test/tint/var/override/named/no_init/f32.wgsl.expected.wgsl
+++ b/test/tint/var/override/named/no_init/f32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 override o : f32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/named/no_init/i32.wgsl b/test/tint/var/override/named/no_init/i32.wgsl
index 847fb27..1a951c9 100644
--- a/test/tint/var/override/named/no_init/i32.wgsl
+++ b/test/tint/var/override/named/no_init/i32.wgsl
@@ -1,7 +1,7 @@
 // flags: --overrides WGSL_SPEC_CONSTANT_0=0
 override o : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/named/no_init/i32.wgsl.expected.wgsl b/test/tint/var/override/named/no_init/i32.wgsl.expected.wgsl
index 95d395c..e3f13ae 100644
--- a/test/tint/var/override/named/no_init/i32.wgsl.expected.wgsl
+++ b/test/tint/var/override/named/no_init/i32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 override o : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/named/no_init/u32.wgsl b/test/tint/var/override/named/no_init/u32.wgsl
index a56cecb..6440d75 100644
--- a/test/tint/var/override/named/no_init/u32.wgsl
+++ b/test/tint/var/override/named/no_init/u32.wgsl
@@ -1,7 +1,7 @@
 // flags: --overrides WGSL_SPEC_CONSTANT_0=0
 override o : u32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/named/no_init/u32.wgsl.expected.wgsl b/test/tint/var/override/named/no_init/u32.wgsl.expected.wgsl
index 8d79972..7858624 100644
--- a/test/tint/var/override/named/no_init/u32.wgsl.expected.wgsl
+++ b/test/tint/var/override/named/no_init/u32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 override o : u32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/named/val_init/bool.wgsl b/test/tint/var/override/named/val_init/bool.wgsl
index 8eaca90..839f0ae 100644
--- a/test/tint/var/override/named/val_init/bool.wgsl
+++ b/test/tint/var/override/named/val_init/bool.wgsl
@@ -1,6 +1,6 @@
 override o : bool = true;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/named/val_init/bool.wgsl.expected.wgsl b/test/tint/var/override/named/val_init/bool.wgsl.expected.wgsl
index 02f5b7d..46c64f0 100644
--- a/test/tint/var/override/named/val_init/bool.wgsl.expected.wgsl
+++ b/test/tint/var/override/named/val_init/bool.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 override o : bool = true;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/named/val_init/f32.wgsl b/test/tint/var/override/named/val_init/f32.wgsl
index 0f718e8..7b98110 100644
--- a/test/tint/var/override/named/val_init/f32.wgsl
+++ b/test/tint/var/override/named/val_init/f32.wgsl
@@ -1,6 +1,6 @@
 override o : f32 = 1.0;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/named/val_init/f32.wgsl.expected.wgsl b/test/tint/var/override/named/val_init/f32.wgsl.expected.wgsl
index 1c53942..b297f1a 100644
--- a/test/tint/var/override/named/val_init/f32.wgsl.expected.wgsl
+++ b/test/tint/var/override/named/val_init/f32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 override o : f32 = 1.0;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/named/val_init/i32.wgsl b/test/tint/var/override/named/val_init/i32.wgsl
index 9f4b021..bcc63d5 100644
--- a/test/tint/var/override/named/val_init/i32.wgsl
+++ b/test/tint/var/override/named/val_init/i32.wgsl
@@ -1,6 +1,6 @@
 override o : i32 = 1;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/named/val_init/i32.wgsl.expected.wgsl b/test/tint/var/override/named/val_init/i32.wgsl.expected.wgsl
index f36ff37..52b23b9 100644
--- a/test/tint/var/override/named/val_init/i32.wgsl.expected.wgsl
+++ b/test/tint/var/override/named/val_init/i32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 override o : i32 = 1;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/named/val_init/u32.wgsl b/test/tint/var/override/named/val_init/u32.wgsl
index 77ca84c..0ae52cc 100644
--- a/test/tint/var/override/named/val_init/u32.wgsl
+++ b/test/tint/var/override/named/val_init/u32.wgsl
@@ -1,6 +1,6 @@
 override o : u32 = 1u;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/named/val_init/u32.wgsl.expected.wgsl b/test/tint/var/override/named/val_init/u32.wgsl.expected.wgsl
index 4a56f44..ab5c07a 100644
--- a/test/tint/var/override/named/val_init/u32.wgsl.expected.wgsl
+++ b/test/tint/var/override/named/val_init/u32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 override o : u32 = 1u;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/named/zero_init/bool.wgsl b/test/tint/var/override/named/zero_init/bool.wgsl
index 1dff97f..b9c57b3 100644
--- a/test/tint/var/override/named/zero_init/bool.wgsl
+++ b/test/tint/var/override/named/zero_init/bool.wgsl
@@ -1,6 +1,6 @@
 override o : bool = bool();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/named/zero_init/bool.wgsl.expected.wgsl b/test/tint/var/override/named/zero_init/bool.wgsl.expected.wgsl
index cfd341e..283ad4e 100644
--- a/test/tint/var/override/named/zero_init/bool.wgsl.expected.wgsl
+++ b/test/tint/var/override/named/zero_init/bool.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 override o : bool = bool();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/named/zero_init/f32.wgsl b/test/tint/var/override/named/zero_init/f32.wgsl
index c4f949a..a49a8a3 100644
--- a/test/tint/var/override/named/zero_init/f32.wgsl
+++ b/test/tint/var/override/named/zero_init/f32.wgsl
@@ -1,6 +1,6 @@
 override o : f32 = f32();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/named/zero_init/f32.wgsl.expected.wgsl b/test/tint/var/override/named/zero_init/f32.wgsl.expected.wgsl
index 159b6a9..b3b26c1 100644
--- a/test/tint/var/override/named/zero_init/f32.wgsl.expected.wgsl
+++ b/test/tint/var/override/named/zero_init/f32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 override o : f32 = f32();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/named/zero_init/i32.wgsl b/test/tint/var/override/named/zero_init/i32.wgsl
index 2b44da7..21cb5cb 100644
--- a/test/tint/var/override/named/zero_init/i32.wgsl
+++ b/test/tint/var/override/named/zero_init/i32.wgsl
@@ -1,6 +1,6 @@
 override o : i32 = i32();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/named/zero_init/i32.wgsl.expected.wgsl b/test/tint/var/override/named/zero_init/i32.wgsl.expected.wgsl
index e02284c..b699ac1 100644
--- a/test/tint/var/override/named/zero_init/i32.wgsl.expected.wgsl
+++ b/test/tint/var/override/named/zero_init/i32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 override o : i32 = i32();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/named/zero_init/u32.wgsl b/test/tint/var/override/named/zero_init/u32.wgsl
index de11d5a..137b5f8 100644
--- a/test/tint/var/override/named/zero_init/u32.wgsl
+++ b/test/tint/var/override/named/zero_init/u32.wgsl
@@ -1,6 +1,6 @@
 override o : u32 = u32();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/named/zero_init/u32.wgsl.expected.wgsl b/test/tint/var/override/named/zero_init/u32.wgsl.expected.wgsl
index 62250f4..0162076 100644
--- a/test/tint/var/override/named/zero_init/u32.wgsl.expected.wgsl
+++ b/test/tint/var/override/named/zero_init/u32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 override o : u32 = u32();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/numbered/no_init/bool.wgsl b/test/tint/var/override/numbered/no_init/bool.wgsl
index 34818a1..955c29f 100644
--- a/test/tint/var/override/numbered/no_init/bool.wgsl
+++ b/test/tint/var/override/numbered/no_init/bool.wgsl
@@ -1,7 +1,7 @@
 // flags: --overrides WGSL_SPEC_CONSTANT_1234=0
 @id(1234) override o : bool;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/numbered/no_init/bool.wgsl.expected.wgsl b/test/tint/var/override/numbered/no_init/bool.wgsl.expected.wgsl
index d2077c0..fac817d 100644
--- a/test/tint/var/override/numbered/no_init/bool.wgsl.expected.wgsl
+++ b/test/tint/var/override/numbered/no_init/bool.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : bool;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/numbered/no_init/f32.wgsl b/test/tint/var/override/numbered/no_init/f32.wgsl
index dde41d9..ecef6e1 100644
--- a/test/tint/var/override/numbered/no_init/f32.wgsl
+++ b/test/tint/var/override/numbered/no_init/f32.wgsl
@@ -1,7 +1,7 @@
 // flags: --overrides WGSL_SPEC_CONSTANT_1234=0
 @id(1234) override o : f32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/numbered/no_init/f32.wgsl.expected.wgsl b/test/tint/var/override/numbered/no_init/f32.wgsl.expected.wgsl
index 1d3c7ca..b7cf516 100644
--- a/test/tint/var/override/numbered/no_init/f32.wgsl.expected.wgsl
+++ b/test/tint/var/override/numbered/no_init/f32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : f32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/numbered/no_init/i32.wgsl b/test/tint/var/override/numbered/no_init/i32.wgsl
index afc07ef..a347fc6 100644
--- a/test/tint/var/override/numbered/no_init/i32.wgsl
+++ b/test/tint/var/override/numbered/no_init/i32.wgsl
@@ -1,7 +1,7 @@
 // flags: --overrides WGSL_SPEC_CONSTANT_1234=0
 @id(1234) override o : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/numbered/no_init/i32.wgsl.expected.wgsl b/test/tint/var/override/numbered/no_init/i32.wgsl.expected.wgsl
index 89e3049..8538212 100644
--- a/test/tint/var/override/numbered/no_init/i32.wgsl.expected.wgsl
+++ b/test/tint/var/override/numbered/no_init/i32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : i32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/numbered/no_init/u32.wgsl b/test/tint/var/override/numbered/no_init/u32.wgsl
index be20c98..0fe7b12 100644
--- a/test/tint/var/override/numbered/no_init/u32.wgsl
+++ b/test/tint/var/override/numbered/no_init/u32.wgsl
@@ -1,7 +1,7 @@
 // flags: --overrides WGSL_SPEC_CONSTANT_1234=0
 @id(1234) override o : u32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/numbered/no_init/u32.wgsl.expected.wgsl b/test/tint/var/override/numbered/no_init/u32.wgsl.expected.wgsl
index d330537..a187373 100644
--- a/test/tint/var/override/numbered/no_init/u32.wgsl.expected.wgsl
+++ b/test/tint/var/override/numbered/no_init/u32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : u32;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/numbered/val_init/bool.wgsl b/test/tint/var/override/numbered/val_init/bool.wgsl
index 815e510..17983bb 100644
--- a/test/tint/var/override/numbered/val_init/bool.wgsl
+++ b/test/tint/var/override/numbered/val_init/bool.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : bool = true;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/numbered/val_init/bool.wgsl.expected.wgsl b/test/tint/var/override/numbered/val_init/bool.wgsl.expected.wgsl
index 6237336..ff5606e 100644
--- a/test/tint/var/override/numbered/val_init/bool.wgsl.expected.wgsl
+++ b/test/tint/var/override/numbered/val_init/bool.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : bool = true;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/numbered/val_init/f32.wgsl b/test/tint/var/override/numbered/val_init/f32.wgsl
index c565064..55635ab 100644
--- a/test/tint/var/override/numbered/val_init/f32.wgsl
+++ b/test/tint/var/override/numbered/val_init/f32.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : f32 = 1.0;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/numbered/val_init/f32.wgsl.expected.wgsl b/test/tint/var/override/numbered/val_init/f32.wgsl.expected.wgsl
index 8599cba..7c7a937 100644
--- a/test/tint/var/override/numbered/val_init/f32.wgsl.expected.wgsl
+++ b/test/tint/var/override/numbered/val_init/f32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : f32 = 1.0;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/numbered/val_init/i32.wgsl b/test/tint/var/override/numbered/val_init/i32.wgsl
index 78cb191..d763d36 100644
--- a/test/tint/var/override/numbered/val_init/i32.wgsl
+++ b/test/tint/var/override/numbered/val_init/i32.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : i32 = 1;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/numbered/val_init/i32.wgsl.expected.wgsl b/test/tint/var/override/numbered/val_init/i32.wgsl.expected.wgsl
index 062ca36..84151e8 100644
--- a/test/tint/var/override/numbered/val_init/i32.wgsl.expected.wgsl
+++ b/test/tint/var/override/numbered/val_init/i32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : i32 = 1;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/numbered/val_init/u32.wgsl b/test/tint/var/override/numbered/val_init/u32.wgsl
index bbc7409..107bb31 100644
--- a/test/tint/var/override/numbered/val_init/u32.wgsl
+++ b/test/tint/var/override/numbered/val_init/u32.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : u32 = 1u;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/numbered/val_init/u32.wgsl.expected.wgsl b/test/tint/var/override/numbered/val_init/u32.wgsl.expected.wgsl
index 8a65ad6..9ea424d 100644
--- a/test/tint/var/override/numbered/val_init/u32.wgsl.expected.wgsl
+++ b/test/tint/var/override/numbered/val_init/u32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : u32 = 1u;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/numbered/zero_init/bool.wgsl b/test/tint/var/override/numbered/zero_init/bool.wgsl
index b411e9c..531d595 100644
--- a/test/tint/var/override/numbered/zero_init/bool.wgsl
+++ b/test/tint/var/override/numbered/zero_init/bool.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : bool = bool();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/numbered/zero_init/bool.wgsl.expected.wgsl b/test/tint/var/override/numbered/zero_init/bool.wgsl.expected.wgsl
index 41ae914..1f7f861 100644
--- a/test/tint/var/override/numbered/zero_init/bool.wgsl.expected.wgsl
+++ b/test/tint/var/override/numbered/zero_init/bool.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : bool = bool();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/numbered/zero_init/f32.wgsl b/test/tint/var/override/numbered/zero_init/f32.wgsl
index 92dffa4..40361fc 100644
--- a/test/tint/var/override/numbered/zero_init/f32.wgsl
+++ b/test/tint/var/override/numbered/zero_init/f32.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : f32 = f32();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/numbered/zero_init/f32.wgsl.expected.wgsl b/test/tint/var/override/numbered/zero_init/f32.wgsl.expected.wgsl
index caaafb0..af740ac 100644
--- a/test/tint/var/override/numbered/zero_init/f32.wgsl.expected.wgsl
+++ b/test/tint/var/override/numbered/zero_init/f32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : f32 = f32();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/numbered/zero_init/i32.wgsl b/test/tint/var/override/numbered/zero_init/i32.wgsl
index 79f3f2c..c1e8fe7 100644
--- a/test/tint/var/override/numbered/zero_init/i32.wgsl
+++ b/test/tint/var/override/numbered/zero_init/i32.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : i32 = i32();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/numbered/zero_init/i32.wgsl.expected.wgsl b/test/tint/var/override/numbered/zero_init/i32.wgsl.expected.wgsl
index f10ef51..ac2516f 100644
--- a/test/tint/var/override/numbered/zero_init/i32.wgsl.expected.wgsl
+++ b/test/tint/var/override/numbered/zero_init/i32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : i32 = i32();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/override/numbered/zero_init/u32.wgsl b/test/tint/var/override/numbered/zero_init/u32.wgsl
index a0e7de6..183862f 100644
--- a/test/tint/var/override/numbered/zero_init/u32.wgsl
+++ b/test/tint/var/override/numbered/zero_init/u32.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : u32 = u32();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
     _ = o;
 }
diff --git a/test/tint/var/override/numbered/zero_init/u32.wgsl.expected.wgsl b/test/tint/var/override/numbered/zero_init/u32.wgsl.expected.wgsl
index 710e3eb..b455127 100644
--- a/test/tint/var/override/numbered/zero_init/u32.wgsl.expected.wgsl
+++ b/test/tint/var/override/numbered/zero_init/u32.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @id(1234) override o : u32 = u32();
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main() {
   _ = o;
 }
diff --git a/test/tint/var/uses/many_workgroup_vars.wgsl b/test/tint/var/uses/many_workgroup_vars.wgsl
index 56df492..4a08679 100644
--- a/test/tint/var/uses/many_workgroup_vars.wgsl
+++ b/test/tint/var/uses/many_workgroup_vars.wgsl
@@ -99,7 +99,7 @@
 var<workgroup> m98 : mat2x2<f32>;
 var<workgroup> m99 : mat2x2<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn tint_symbol(@builtin(local_invocation_index) idx : u32) {
   m00[0][0] = 1.0;
   m01[0][0] = 1.0;
diff --git a/test/tint/var/uses/many_workgroup_vars.wgsl.expected.wgsl b/test/tint/var/uses/many_workgroup_vars.wgsl.expected.wgsl
index 9d1822e..dd7c89b 100644
--- a/test/tint/var/uses/many_workgroup_vars.wgsl.expected.wgsl
+++ b/test/tint/var/uses/many_workgroup_vars.wgsl.expected.wgsl
@@ -198,7 +198,7 @@
 
 var<workgroup> m99 : mat2x2<f32>;
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn tint_symbol(@builtin(local_invocation_index) idx : u32) {
   m00[0][0] = 1.0;
   m01[0][0] = 1.0;
diff --git a/test/tint/var/uses/private.wgsl b/test/tint/var/uses/private.wgsl
index 6ec289a..9b83ccb 100644
--- a/test/tint/var/uses/private.wgsl
+++ b/test/tint/var/uses/private.wgsl
@@ -25,25 +25,25 @@
   no_uses();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main1() {
   a = 42;
   uses_a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main2() {
   b = 7;
   uses_b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main3() {
   outer();
   no_uses();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main4() {
   no_uses();
 }
diff --git a/test/tint/var/uses/private.wgsl.expected.wgsl b/test/tint/var/uses/private.wgsl.expected.wgsl
index 4770447..e16dddb 100644
--- a/test/tint/var/uses/private.wgsl.expected.wgsl
+++ b/test/tint/var/uses/private.wgsl.expected.wgsl
@@ -27,25 +27,25 @@
   no_uses();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main1() {
   a = 42;
   uses_a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main2() {
   b = 7;
   uses_b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main3() {
   outer();
   no_uses();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main4() {
   no_uses();
 }
diff --git a/test/tint/var/uses/workgroup.wgsl b/test/tint/var/uses/workgroup.wgsl
index 23736b5..029b67d 100644
--- a/test/tint/var/uses/workgroup.wgsl
+++ b/test/tint/var/uses/workgroup.wgsl
@@ -25,25 +25,25 @@
   no_uses();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main1() {
   a = 42;
   uses_a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main2() {
   b = 7;
   uses_b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main3() {
   outer();
   no_uses();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main4() {
   no_uses();
 }
diff --git a/test/tint/var/uses/workgroup.wgsl.expected.wgsl b/test/tint/var/uses/workgroup.wgsl.expected.wgsl
index a3386fe..bde813a 100644
--- a/test/tint/var/uses/workgroup.wgsl.expected.wgsl
+++ b/test/tint/var/uses/workgroup.wgsl.expected.wgsl
@@ -27,25 +27,25 @@
   no_uses();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main1() {
   a = 42;
   uses_a();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main2() {
   b = 7;
   uses_b();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main3() {
   outer();
   no_uses();
 }
 
-@stage(compute) @workgroup_size(1)
+@compute @workgroup_size(1)
 fn main4() {
   no_uses();
 }
diff --git a/test/tint/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl b/test/tint/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl
index 6997f0c..798e1a6 100644
--- a/test/tint/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl
+++ b/test/tint/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl
@@ -34,7 +34,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl
index ff8d1ee..4ededd0 100644
--- a/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl
+++ b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl
@@ -9,7 +9,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl
index 382abb7..e77dd7d 100644
--- a/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl
+++ b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl
@@ -25,7 +25,7 @@
   frag_color_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl
index a23ed1f..574dcec 100644
--- a/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl
+++ b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl
@@ -13,7 +13,7 @@
   final_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@location(0) frag_color_param : vec4<f32>) -> main_out {
   frag_color = frag_color_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl b/test/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl
index 02b20e2..98179f8 100644
--- a/test/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl
@@ -19,7 +19,7 @@
   frag_color_1 : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/combined_operations/negintdivand/1.wgsl b/test/tint/vk-gl-cts/combined_operations/negintdivand/1.wgsl
index 372cd82..df17ef4 100644
--- a/test/tint/vk-gl-cts/combined_operations/negintdivand/1.wgsl
+++ b/test/tint/vk-gl-cts/combined_operations/negintdivand/1.wgsl
@@ -20,7 +20,7 @@
   color_out_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@location(1) frag_color_param : vec4<f32>) -> main_out {
   frag_color = frag_color_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl
index 9ca3830..97d3f2d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl
@@ -15,7 +15,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl
index 4e1dcd4..d21b69c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl
@@ -105,7 +105,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl
index b82911e..5589016 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl
@@ -189,7 +189,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl
index ca479f1..0a755ea 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl
@@ -95,7 +95,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl
index 30a8516..ddebef0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl
@@ -105,7 +105,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl
index 483497e..ade160a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl
@@ -87,7 +87,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl
index db02a9b..eb6d8be 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl
@@ -55,7 +55,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(16, 1, 1)
+@compute @workgroup_size(16, 1, 1)
 fn main(@builtin(local_invocation_id) gl_LocalInvocationID_param : vec3<u32>) {
   gl_LocalInvocationID = gl_LocalInvocationID_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl
index 58086b58..8d5b860 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl
@@ -37,7 +37,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl
index 6909d48..6fdd881 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl
@@ -32,7 +32,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl
index 7a949f2..00cdb63 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl
@@ -65,7 +65,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl
index 2e3649f..e3c97d7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl
@@ -24,7 +24,7 @@
   x_GLF_color_1 : vec4<f32>,
 };
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl
index c4cb117..044314a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl
@@ -65,7 +65,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl
index 7740b40..0413bb0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl
@@ -43,7 +43,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl
index 55480e9..55e5cb0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl
@@ -308,7 +308,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl
index 989414f..bf68647 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl
@@ -116,7 +116,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl
index 14f52ec..663f921 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl
@@ -68,7 +68,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl
index 01d4813..0707959 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl
@@ -67,7 +67,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl
index c9e1346..2165d5e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl
@@ -59,7 +59,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl
index 3acd4f4..4d66ded 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl
@@ -27,7 +27,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl
index bcb113c..8334cdb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl
@@ -72,7 +72,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl
index 3fcf705..3766aef 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl
@@ -62,7 +62,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl
index 2365447..824afdb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl
@@ -67,7 +67,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl
index 2704791..31e0e34 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl
@@ -60,7 +60,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl
index 405795b..2707f56 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl
@@ -26,7 +26,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl
index 7ee2ddc..6d695ad 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl
@@ -93,7 +93,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl
index 0c68847..1a714f0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl
@@ -53,7 +53,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl
index 6a1eb17..9b23f2a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl
@@ -72,7 +72,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl
index e5f7fe4..7ae5656 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl
@@ -228,7 +228,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl
index 7824aca..8db47c1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl
@@ -93,7 +93,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl
index fd2a248..f054a86 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl
@@ -67,7 +67,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl
index 2897828..34bdda3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl
@@ -51,7 +51,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl
index f337640..1dd221f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl
@@ -75,7 +75,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl
index 656a824..5ed9acf 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl
@@ -66,7 +66,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl
index fe80563..8b0be09 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl
@@ -67,7 +67,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl
index dd18cd5..10b0b75 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl
@@ -153,7 +153,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl
index 01c22cf..0dc3069 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl
@@ -151,7 +151,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl
index 1bd35c9..56f31ad 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl
@@ -36,7 +36,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl
index 6fe0c20..44d84ee 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl
@@ -79,7 +79,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl
index 2d3a69b..e0b1c7d3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl
@@ -55,7 +55,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl
index 3803b96..a517edc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl
@@ -85,7 +85,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl
index 840baf1..12131bc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl
@@ -56,7 +56,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl
index f8aae14..efd21d3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl
@@ -56,7 +56,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl
index d77e5ef..4763b60 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl
@@ -52,7 +52,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl
index 2828ef3..b4408a6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl
@@ -147,7 +147,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl
index 723750d..4cd39d2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl
@@ -41,7 +41,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl
index aed5a7c..dba1df6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl
@@ -51,7 +51,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl
index 2e7e905..3d8c594 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl
@@ -59,7 +59,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl
index 5a12a3a..d7b593a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl
@@ -74,7 +74,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl
index f9bf034..961247d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl
@@ -24,7 +24,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl
index 12fa7fd..3465cfa 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl
@@ -32,7 +32,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl
index e129446..09f2c57 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl
@@ -22,7 +22,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl
index 33f0a30..09192ed 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl
@@ -27,7 +27,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl
index ff07167..a49457f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl
@@ -33,7 +33,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl
index a37027f..dcc2d71 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl
@@ -17,7 +17,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl
index 4d552c1..06db937 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl
@@ -24,7 +24,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl
index dbd8670..ef5aad6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl
@@ -72,7 +72,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl
index bde5e50..3e94de7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl
@@ -32,7 +32,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl
index e744089..e480acb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl
@@ -62,7 +62,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl
index 0c19e6f..abb114b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl
@@ -44,7 +44,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl
index 4563cb8..f78ce82 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl
@@ -46,7 +46,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl
index 37d5e8d..3e232f0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl
@@ -18,7 +18,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl
index 0c8d7f0..5887199 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl
@@ -82,7 +82,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl
index df26d79..8449566 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl
@@ -25,7 +25,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl
index e9d8121..1903882 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl
@@ -61,7 +61,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl
index 1cab56c..1320e87 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl
@@ -62,7 +62,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl
index 1a5eda7..56aa25c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl
@@ -34,7 +34,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl
index 4f9c8f6..f617b1e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl
@@ -69,7 +69,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl
index 4ead109..ff986fe 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl
@@ -43,7 +43,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl
index 401a99e..a3c7d90 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl
@@ -100,7 +100,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl
index 7c8c99e..cb7f47c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl
@@ -69,7 +69,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl
index 8903c42..b0264c4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl
@@ -79,7 +79,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl
index 2acb304..20f5681 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl
@@ -61,7 +61,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl
index 9f7e350..ca9da8c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl
@@ -92,7 +92,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl
index 1146646..94a5965 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl
@@ -45,7 +45,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl
index 937966c..528a80e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl
@@ -53,7 +53,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl
index 9cfcb85..ea897a9 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl
@@ -55,7 +55,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl
index 730a78b..a79e26b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl
@@ -70,7 +70,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl
index a43ae19..2a6af9c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl
@@ -112,7 +112,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl
index 8437972..6042980 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl
@@ -76,7 +76,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl
index 918fa8a..59f25b4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl
@@ -93,7 +93,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl
index f1e118e..f83ce2e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl
@@ -69,7 +69,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl
index df50e29..d0d229b6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl
@@ -17,7 +17,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl
index 8692c5a..277b9a2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl
@@ -62,7 +62,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl
index 6473fba..cdb1c69 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl
@@ -69,7 +69,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl
index 1fb1cb2..281a136 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl
@@ -17,7 +17,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl
index 803d61a..cf44a69 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl
@@ -64,7 +64,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl
index fb1065d..0af76ab 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl
@@ -46,7 +46,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl
index 5dcceaa..640d4df 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl
@@ -21,7 +21,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl
index d0c12de..b111a60 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl
@@ -21,7 +21,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl
index 2107dd3..9d3fa96 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl
@@ -20,7 +20,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl
index a2a02a0..245db9e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl
@@ -17,7 +17,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl
index 4089c1f..a8d8cea 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl
@@ -31,7 +31,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl
index f4422c8..48820a3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl
@@ -17,7 +17,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl
index 9c233ec..61658e9 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl
@@ -28,7 +28,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl
index 7d02d77..af4f4b2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl
@@ -17,7 +17,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl
index b543414..58d674c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl
@@ -68,7 +68,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl
index 007ff8f..cf7bb0f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl
@@ -17,7 +17,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl
index 58700bc..6e7b565 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl
@@ -20,7 +20,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl
index 7e3367d..ed6eebe 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl
@@ -37,7 +37,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl
index 5b1b46f..4572702 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl
@@ -21,7 +21,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl
index 9d3abf8..5f8a19b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl
@@ -38,7 +38,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl
index 784949c..3e6470a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl
@@ -21,7 +21,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl
index b751c1b..7a3f940 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl
@@ -21,7 +21,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl
index e2a3c0d..9f58ee0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl
@@ -28,7 +28,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl
index 07b9211..c5a4fd7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl
@@ -25,7 +25,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl
index b172dad..72f1d19 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl
@@ -25,7 +25,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl
index 1ff19b5..58bedfe 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl
@@ -25,7 +25,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl
index 61d8451..e3764ba 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl
@@ -38,7 +38,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl
index aeb7d65..0348fd7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl
@@ -38,7 +38,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl
index cef61b2..b3a70c4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl
@@ -35,7 +35,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl
index 6af612b..b18a426 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl
@@ -28,7 +28,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl
index 812b29d..f5f52a3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl
@@ -21,7 +21,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl
index 728b7bc..7d3dab7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl
@@ -24,7 +24,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl
index 3ade036..186261e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl
@@ -21,7 +21,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl
index d242c7f..ece67fc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl
@@ -21,7 +21,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl
index 5139fdc..bad9a67 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl
@@ -27,7 +27,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl
index 12b5e94..a7ae8bd 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl
@@ -20,7 +20,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl
index 589559b..496d491 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl
@@ -29,7 +29,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl
index 5cb935f..eebd08e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl
@@ -50,7 +50,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl
index 96df572..ebda8b7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl
@@ -73,7 +73,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl
index ab5a157..ec9ebf0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl
@@ -63,7 +63,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl
index a1321d9..738125f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl
@@ -54,7 +54,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl
index 6969f4a..1df2885 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl
@@ -57,7 +57,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl
index b67f6a2..7ea16de8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl
@@ -45,7 +45,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl
index 0691fca..4e2b131 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl
@@ -99,7 +99,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl
index 7ca0036..0c5a8a5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl
@@ -76,7 +76,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl
index 183832e..cf243d6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl
@@ -96,7 +96,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl
index 4ffbb2c..f7a2b84 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl
@@ -74,7 +74,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl
index ca7f418..20267d8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl
@@ -64,7 +64,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl
index 12c07c6..4bbbcb3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl
@@ -144,7 +144,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl
index 0361d8a..a997432 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl
@@ -72,7 +72,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl
index 36bfedc..adc1178 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl
@@ -77,7 +77,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl
index 854150b..3e81573 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl
@@ -51,7 +51,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl
index 7833a32..3b238a0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl
@@ -32,7 +32,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl
index cf9e22e..d50160b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl
@@ -59,7 +59,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl
index 66732b5..4371470 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl
@@ -76,7 +76,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl
index c682dfc..4f3baca 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl
@@ -55,7 +55,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl
index 9c7018a..dffd65e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl
@@ -47,7 +47,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl
index ba5f72c..fc0e8b8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl
@@ -91,7 +91,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl
index 8d275b8..d3de501 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl
@@ -85,7 +85,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl
index 89f6084..45f3802 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl
@@ -90,7 +90,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl
index 592a626..3a21958 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl
@@ -43,7 +43,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl
index 8cd0f31..8f2685e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl
@@ -61,7 +61,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl
index f5fbe5c..f4bbc24 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl
@@ -96,7 +96,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl
index 0652450..27b58b7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl
@@ -72,7 +72,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl
index 6cb7a93..ed73b3d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl
@@ -70,7 +70,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl
index 488a6f4..d63c258 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl
@@ -31,7 +31,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl
index b36fbd0..8b6de3d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl
@@ -72,7 +72,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl
index c39b3d8..450f490 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl
@@ -42,7 +42,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl
index e6e3393..266c5c3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl
@@ -33,7 +33,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl
index 70a1ede..d6fa70f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl
@@ -87,7 +87,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl
index 5a38ad6..e1d317b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl
@@ -72,7 +72,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl
index 5c979eb..1e20241 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl
@@ -82,7 +82,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl
index 4b7661d..abc3671 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl
@@ -92,7 +92,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl
index 3b6c63b..99ea7e4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl
@@ -103,7 +103,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl
index ea99ca9..5256543 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl
@@ -78,7 +78,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl
index 79615f6..b18be7b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl
@@ -58,7 +58,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl
index 8918a9d..85c9c8d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl
@@ -50,7 +50,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl
index e0cafa1..5e207fb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl
@@ -80,7 +80,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl
index 39cdba3..e2a9479 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl
@@ -60,7 +60,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl
index 90bbc4a..e500f0a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl
@@ -57,7 +57,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl
index 38846e7..a50ef0d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl
@@ -78,7 +78,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl
index 98eb6e6..9145c24 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl
@@ -99,7 +99,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl
index ee6a3df..aeb5009 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl
@@ -73,7 +73,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl
index af52c85..5484a46 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl
@@ -96,7 +96,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl
index 64f35ba..149b02d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl
@@ -98,7 +98,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl
index ebf907b..a0d986a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl
@@ -100,7 +100,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl
index a551426..c84d5e4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl
@@ -53,7 +53,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl
index f473270..95fa93b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl
@@ -91,7 +91,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl
index c587550..b194928 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl
@@ -33,7 +33,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl
index ea785d7..d7f663b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl
@@ -38,7 +38,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl
index 2815fa8..01ab459 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl
@@ -52,7 +52,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl
index 943871b..f46299f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl
@@ -174,7 +174,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl
index 226454a..a1eccf0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl
@@ -49,7 +49,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl
index e36ad17..dea5865 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl
@@ -49,7 +49,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl
index feea7d7..4b06cb6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl
@@ -47,7 +47,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl
index 8fc099c..2a99833 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl
@@ -156,7 +156,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl
index 9fa82b9..485b2b7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl
@@ -64,7 +64,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl
index e9236ec..f0040e7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl
@@ -39,7 +39,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl
index 26752c8..3dcdf88 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl
@@ -56,7 +56,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl
index b5148b4..a84b027 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl
@@ -60,7 +60,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl
index ca56e25..0d1da8a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl
@@ -94,7 +94,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl
index b707433..ec4f450 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl
@@ -52,7 +52,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl
index f1e5842..dc00bca 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl
@@ -46,7 +46,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl
index 5765012..ce1ba21 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl
@@ -48,7 +48,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl
index c4dd2b4..3404785 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl
@@ -80,7 +80,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl
index c6568be..62b83a1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl
@@ -82,7 +82,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl
index 15bb11e..5deeaa6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl
@@ -46,7 +46,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl
index 0ea341f..d98ec27 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl
@@ -79,7 +79,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl
index 456679a..4d350e0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl
@@ -88,7 +88,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl
index 5094e8f..b202044 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl
@@ -85,7 +85,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl
index 0ff978e..8c48e02 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl
@@ -95,7 +95,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl
index 88fae6d..bf75f9f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl
@@ -62,7 +62,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl
index 632ec35..4714145 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl
@@ -47,7 +47,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl
index cf18336..b59d5b9 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl
@@ -42,7 +42,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl
index c1708e2..7254319 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl
@@ -71,7 +71,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl
index b463cdc..d71eb46 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl
@@ -95,7 +95,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl
index cad8ee4..6deb5fb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl
@@ -133,7 +133,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl
index b932d17..affe188 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl
@@ -95,7 +95,7 @@
   x_GLF_v1_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl
index 3fcd25f..2cb9c6a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl
@@ -44,7 +44,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl
index f5899f7..b2f11af 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl
@@ -70,7 +70,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl
index fe1d9b7..ca0b70c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl
@@ -94,7 +94,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl
index 8957d40..4162bbf 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl
@@ -41,7 +41,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl
index 969ad9f..ba55a80 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl
@@ -46,7 +46,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl
index b797548..0c09e84 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl
@@ -23,7 +23,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl
index 26d5982..bba9af1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl
@@ -38,7 +38,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl
index 7db29fd..eb051e5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl
@@ -87,7 +87,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl
index 92fa2cf..6b0ff19 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl
@@ -36,7 +36,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl
index 711a60f..a4ddb5c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl
@@ -54,7 +54,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl
index 4558a2f..aa6f230 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl
@@ -51,7 +51,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl
index 078abbe..773834a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl
@@ -16,7 +16,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl
index 122db07..2d04059 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl
@@ -60,7 +60,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl
index 51d8e24..ad0688d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl
@@ -35,7 +35,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl
index cf1d21a..d56929d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl
@@ -75,7 +75,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl
index 77c853a..79c369b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl
@@ -652,7 +652,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl
index e24074c..fd50f46 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl
@@ -132,7 +132,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl
index b84b88d..6713484 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl
@@ -102,7 +102,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl
index 12ea1f8..c243164 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl
@@ -333,7 +333,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl
index adfcd1b..3cf05ac 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl
@@ -125,7 +125,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl
index 0a1c942..465d0b6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl
@@ -77,7 +77,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl
index d39091b..9f4c8f1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl
@@ -77,7 +77,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl
index aa3bb95..9c77bd8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl
@@ -78,7 +78,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl
index 6ea41ef..6764ecb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl
@@ -40,7 +40,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl
index 9e62836..13e7aed 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl
@@ -108,7 +108,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl
index 12f14a2..df6c8dd 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl
@@ -233,7 +233,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl
index a08b68a..d838fea 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl
@@ -105,7 +105,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl
index 5df8e0f..47eb90b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl
@@ -33,7 +33,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl
index 24bcc10..d6347ad 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl
@@ -21,7 +21,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl
index 5e3792b..84c096d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl
@@ -85,7 +85,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl
index 3e01f1a..c3cc736 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl
@@ -71,7 +71,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl
index 8278bc5..2c7406d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl
@@ -68,7 +68,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl
index efc6249..b70b2db 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl
@@ -44,7 +44,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl
index 94ee900..b08467d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl
@@ -38,7 +38,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl
index 3a4bee7..efe4f32 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl
@@ -38,7 +38,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl
index 61e7a69..961f4b6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl
@@ -36,7 +36,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl
index 42b3530..8c354c5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl
@@ -61,7 +61,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl
index 95351ab..6a680de 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl
@@ -84,7 +84,7 @@
   x_GLF_v1_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl
index 2459e4c..77a2801 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl
@@ -84,7 +84,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl
index ef12407..441f193 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl
@@ -80,7 +80,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl
index 79be73a..4a5526b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl
@@ -46,7 +46,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl
index e15d8de..382ffa2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl
@@ -72,7 +72,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl
index de5ae78..19f1fab 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl
@@ -64,7 +64,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl
index 98a9ebd..8c61b22 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl
@@ -232,7 +232,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl
index 66e1050..7eccaa5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl
@@ -183,7 +183,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl
index 4613f05..d176ddb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl
@@ -53,7 +53,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl
index 0665057..4c0dd13 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl
@@ -33,7 +33,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl
index a72e332..c556495 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl
@@ -57,7 +57,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl
index 895e284..84e0f7b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl
@@ -49,7 +49,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl
index fe3a5c4..f15d57a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl
@@ -32,7 +32,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl
index 8c201e0..1ab7d69 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl
@@ -110,7 +110,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl
index c93962f..15ea995 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl
@@ -73,7 +73,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl
index 3ec072c..f63bade 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl
@@ -81,7 +81,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl
index e655d57..27eede7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl
@@ -55,7 +55,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl
index 260dac0..d1597ed 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl
@@ -56,7 +56,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl
index 1ee580f..aa340d6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl
@@ -39,7 +39,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl
index ede3ec0..9ba95b4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl
@@ -42,7 +42,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl
index 829a0a8..527a2da 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl
@@ -24,7 +24,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl
index b7f1559..64b0470 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl
@@ -58,7 +58,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl
index 22f846d..d3bceff 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl
@@ -24,7 +24,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl
index a52fd11..23219d0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl
@@ -95,7 +95,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl
index c821a0b..47994dc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl
@@ -50,7 +50,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl
index 32d7182..81d8511 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl
@@ -28,7 +28,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl
index 7371365..9ef2543 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl
@@ -33,7 +33,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl
index a1cbaf4..d2deae4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl
@@ -34,7 +34,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl
index 60e6c3a..7941446 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl
@@ -30,7 +30,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl
index b2ff3d7..a6dfef5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl
@@ -90,7 +90,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl
index c38f758..902b2c6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl
@@ -49,7 +49,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl
index 236b092..bae09d5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl
@@ -72,7 +72,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl
index 36f9060..0cbcc97 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl
@@ -54,7 +54,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl
index cec76af..20e9dc8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl
@@ -19,7 +19,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl
index 1b4b63d..18da3eb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl
@@ -92,7 +92,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl
index 07c860c..63deae6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl
@@ -61,7 +61,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl
index 36e7882..0302149 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl
@@ -105,7 +105,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl
index 57b1326..fadf785 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl
@@ -98,7 +98,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl
index 439064c..ad71b07 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl
@@ -31,7 +31,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl
index 9507f31..f9c3613 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl
@@ -162,7 +162,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl
index 37acd79..3d5c8b7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl
@@ -22,7 +22,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl
index 4f20354..40362b6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl
@@ -54,7 +54,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl
index 91d1ace..0f9279b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl
@@ -23,7 +23,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl
index e357321..2dcba3a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl
@@ -56,7 +56,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl
index 408951f..f25d1e9 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl
@@ -94,7 +94,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl
index e00fdb4..537ce2b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl
@@ -70,7 +70,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl
index ab2fe1e..006779f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl
@@ -98,7 +98,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl
index 3e9258a..118074c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl
@@ -97,7 +97,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl
index 6f1222b..e58d17e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl
@@ -35,7 +35,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl
index 7f6f64d..8418f6e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl
@@ -60,7 +60,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl
index f609495..dfc8799 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl
@@ -61,7 +61,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl
index d60a6c4..a3eb8ed 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl
@@ -39,7 +39,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl
index 6c21a50..038cbc5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl
@@ -64,7 +64,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl
index 6591588..f5b06a9 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl
@@ -64,7 +64,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl
index 8360d2e..6475082 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl
@@ -158,7 +158,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl
index 06406f2..2020584 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl
@@ -33,7 +33,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl
index b8fde85..9e9fe23 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl
@@ -31,7 +31,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl
index 8cdf805..2586ea3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl
@@ -22,7 +22,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl
index ffddefb..07ee5e2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl
@@ -18,7 +18,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl
index 2878e1d..e1d29af 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl
@@ -69,7 +69,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl
index 878faea..f94b71c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl
@@ -64,7 +64,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl
index 1770f67..fd261db 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl
@@ -70,7 +70,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl
index d3898be..be96401 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl
@@ -117,7 +117,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl
index 0a3e1b3..7855268 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl
@@ -61,7 +61,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl
index 8aaf0af..2c83684 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl
@@ -91,7 +91,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl
index f4c8f8e..0a907b9 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl
@@ -101,7 +101,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl
index df826b8..df60af3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl
@@ -66,7 +66,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl
index f1a3930..0fbc4eb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl
@@ -47,7 +47,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl
index 888ee7a..6761b87 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl
@@ -36,7 +36,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl
index 6cfa6d9..1f09f47 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl
@@ -42,7 +42,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl
index d557692..4890b8a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl
@@ -51,7 +51,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl
index 943fe6d..7038fc4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl
@@ -37,7 +37,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl
index b328851..a819c80 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl
@@ -44,7 +44,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl
index e35d29b..ce12bf7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl
@@ -68,7 +68,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl
index 896c857..83e36a6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl
@@ -28,7 +28,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl
index e449404..7311f29 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl
@@ -37,7 +37,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl
index d5891ce..9bb781c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl
@@ -77,7 +77,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl
index 5e29cbc..1355b0e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl
@@ -35,7 +35,7 @@
   color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl
index 8d1c3d74..e5c0b2b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl
@@ -19,7 +19,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl
index 4b56ed3..489cbde 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl
@@ -35,7 +35,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl
index fa91391..2ca87f2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl
@@ -81,7 +81,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl
index 9ee645e..12782cb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl
@@ -54,7 +54,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl
index 96b3c21..68a8df5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl
@@ -142,7 +142,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl
index 5ba76cf..d9cf1c7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl
@@ -40,7 +40,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl
index 6dca256..94830bb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl
@@ -265,7 +265,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl
index b6091b1..772bef8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl
@@ -104,7 +104,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl
index c9a7503..527d462 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl
@@ -38,7 +38,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl
index dec595e..21ecd84 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl
@@ -77,7 +77,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl
index baeeb55..f4377a9 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl
@@ -41,7 +41,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl
index a5552f4..7c36589 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl
@@ -84,7 +84,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl
index 51edc79..62fa83b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl
@@ -28,7 +28,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl
index 2f9bda5..21bc658 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl
@@ -32,7 +32,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl
index bb411e1..8efed25 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl
@@ -15,7 +15,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl
index a35a515..d714e88 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl
@@ -65,7 +65,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl
index d0af691..93a0a9b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl
@@ -34,7 +34,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl
index 1cd8dda..feee324 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl
@@ -38,7 +38,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl
index cd954d2..fe4a229 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl
@@ -113,7 +113,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl
index 51cb5d6..f932ed9 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl
@@ -40,7 +40,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl
index 9fd97b8..f9e11f4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl
@@ -41,7 +41,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl
index fbc53b7..d18a927 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl
@@ -46,7 +46,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl
index 25a5811..bea8c03 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl
@@ -53,7 +53,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl
index 9b2a3d6..0361cc5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl
@@ -67,7 +67,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl
index 7109cc1..2eda8e3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl
@@ -105,7 +105,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl
index 21218c2..ed302ea 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl
@@ -93,7 +93,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl
index 6a68dff..2521351 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl
@@ -70,7 +70,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl
index b7a61d9..908d8cc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl
@@ -25,7 +25,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl
index 3374e31..fb36a0a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl
@@ -339,7 +339,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl
index 8ad4074..6ae4e0d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl
@@ -188,7 +188,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl
index bbeb974..2b8e59b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl
@@ -193,7 +193,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl
index ef8966d..ec7407e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl
@@ -47,7 +47,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl
index 63a5937..9b2e1a8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl
@@ -48,7 +48,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl
index c80d66f..306792e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl
@@ -85,7 +85,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl
index 6f2ad79..3dbfccb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl
@@ -90,7 +90,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl
index 539e851..d4e6eff 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl
@@ -348,7 +348,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl
index aba0ac9..f9eeb16 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl
@@ -104,7 +104,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl
index a95f9f7..c658491 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl
@@ -105,7 +105,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl
index 8b594d4..a4e052f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl
@@ -303,7 +303,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl
index 3ab90cb..d968dc6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl
@@ -307,7 +307,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl
index 6709a3c..aeb7ee4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl
@@ -110,7 +110,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl
index b6e14fc..c3f0e76 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl
@@ -110,7 +110,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl
index df0ae14..35a5a3e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl
@@ -307,7 +307,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl
index c05ac33..8552766 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl
@@ -621,7 +621,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl
index 76a3bfc..54d48f3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl
@@ -88,7 +88,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl
index e5be06f..c30cb4d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl
@@ -51,7 +51,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl
index 8147bc1..b93af95 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl
@@ -48,7 +48,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl
index 69482c9..a6a0da4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl
@@ -130,7 +130,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl
index db23b3e..bc3593e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl
@@ -187,7 +187,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl
index 949a77d..b9a04b8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl
@@ -54,7 +54,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl
index abd147e..3a6ebf8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl
@@ -61,7 +61,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl
index 6355748..cf14db2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl
@@ -188,7 +188,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl
index af7ad71..81b22d3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl
@@ -383,7 +383,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl
index 8449a16..edf5b87 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl
@@ -345,7 +345,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl
index 0dda483..23603de 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl
@@ -332,7 +332,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl
index 3bfc9db..389189b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl
@@ -329,7 +329,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl
index 8f8ed41..8056a03 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl
@@ -297,7 +297,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl
index 1c4985d..0005334 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl
@@ -312,7 +312,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl
index 3344447..2f6e5c2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl
@@ -405,7 +405,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl
index 57694d1..c2f5450 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl
@@ -404,7 +404,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl
index cc20c95..ce42393 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl
@@ -295,7 +295,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl
index b41f89b..8bbd92b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl
@@ -292,7 +292,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl
index b88eb31..9013c67 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl
@@ -96,7 +96,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl
index 6f8c83d..b529575 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl
@@ -99,7 +99,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl
index 55cd6e5..e495947 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl
@@ -96,7 +96,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl
index 903d43b..3d271c2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl
@@ -99,7 +99,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl
index 1692b79..ea82726 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl
@@ -96,7 +96,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl
index f2297b1..9841272 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl
@@ -97,7 +97,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl
index 227ca66..8479a82 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl
@@ -90,7 +90,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl
index 98b1185..463fe28 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl
@@ -75,7 +75,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl
index 48f2dd5..ec0dce8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl
@@ -81,7 +81,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl
index 7580826..0d10814 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl
@@ -247,7 +247,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl
index 6728048..86252db 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl
@@ -247,7 +247,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl
index 3500ff3..a4607d0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl
@@ -94,7 +94,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl
index 5345cd6..afddd20 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl
@@ -91,7 +91,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl
index 4a1f3e2..9f1a34b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl
@@ -619,7 +619,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl
index 68ea6e3..8fe63ef 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl
@@ -950,7 +950,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl
index 60e5290..39ff092 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl
@@ -254,7 +254,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl
index e690b00..cafa4d2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl
@@ -266,7 +266,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl
index ec9d97f..0bd3cb8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl
@@ -284,7 +284,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl
index e698948..5bd37fe 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl
@@ -254,7 +254,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl
index c1f21a4..576d845 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl
@@ -308,7 +308,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl
index 7b48be9..6a560bb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl
@@ -59,7 +59,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl
index 3a8aca0..3fcd20f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl
@@ -209,7 +209,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl
index 594f9f8..f612661 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl
@@ -107,7 +107,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl
index 14441ba..5882e5b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl
@@ -123,7 +123,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl
index 0013539..d8b4269 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl
@@ -110,7 +110,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl
index 81e620c..bdbe598 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl
@@ -124,7 +124,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl
index c2c1977..e149872 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl
@@ -139,7 +139,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl
index b324fbf..8ae40e0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl
@@ -112,7 +112,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl
index 1c47a91..5ce31ca 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl
@@ -331,7 +331,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl
index 0cd476e..803c071 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl
@@ -335,7 +335,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl
index bdd78d3..41563d7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl
@@ -307,7 +307,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl
index 5e852c6..2c4ecdc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl
@@ -271,7 +271,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl
index 046de74..a84e86b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl
@@ -255,7 +255,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) x_GLF_pos_param : vec4<f32>) -> main_out {
   x_GLF_pos = x_GLF_pos_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl
index 206c4d1..fab590f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl
@@ -13,7 +13,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@location(0) frag_color_param : vec4<f32>) -> main_out {
   frag_color = frag_color_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl
index 692a93a..e2ba710 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl
@@ -266,7 +266,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) x_GLF_pos_param : vec4<f32>) -> main_out {
   x_GLF_pos = x_GLF_pos_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl
index 1a71e0c..c920db8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl
@@ -253,7 +253,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) x_GLF_pos_param : vec4<f32>) -> main_out {
   x_GLF_pos = x_GLF_pos_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl
index c3d6185..4c787cd 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl
@@ -259,7 +259,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) x_GLF_pos_param : vec4<f32>) -> main_out {
   x_GLF_pos = x_GLF_pos_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl
index 64489a9..7dbd3fc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl
@@ -264,7 +264,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) x_GLF_pos_param : vec4<f32>) -> main_out {
   x_GLF_pos = x_GLF_pos_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl
index a3c4802..1f9f074 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl
@@ -117,7 +117,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl
index d74e2b4..776e915 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl
@@ -134,7 +134,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl
index ba05600..e531c8b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl
@@ -125,7 +125,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl
index 09c4afb..0d8b91a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl
@@ -154,7 +154,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl
index 00375d4..79dd906 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl
@@ -125,7 +125,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl
index febe37b..373fca2 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl
@@ -119,7 +119,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl
index 9dfb234..b491c61 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl
@@ -163,7 +163,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl
index bf21950..753ce4f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl
@@ -43,7 +43,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl
index 9c94b7e..d7ed97d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl
@@ -44,7 +44,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl
index aed4596..56f0b19 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl
@@ -24,7 +24,7 @@
   x_3_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_3);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl
index ee8dc03..931939d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl
@@ -28,7 +28,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl
index d87c600..cdddf1f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl
@@ -47,7 +47,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl
index 0290964..41e5cfe 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl
@@ -66,7 +66,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl
index 68b1a0e..05be13b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl
@@ -18,7 +18,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl
index 349f964..44c1c31 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl
@@ -66,7 +66,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl
index c1f5d4a..33f736c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl
@@ -33,7 +33,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl
index 787c25f..dde0aff 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl
@@ -101,7 +101,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl
index dbcb808..56be7c3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl
@@ -91,7 +91,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1, 18, 6)
+@compute @workgroup_size(1, 18, 6)
 fn main() {
   main_1();
 }
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl
index dbd9c5a..01508b7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl
@@ -61,7 +61,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl
index 3603274..ab3430f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl
@@ -71,7 +71,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl
index 6ce6f52..309d5e1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl
@@ -60,7 +60,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl
index dd12134..1dc822f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl
@@ -84,7 +84,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl
index 060017b..d07a278 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl
@@ -55,7 +55,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl
index 5f7d58c..289004e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl
@@ -34,7 +34,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl
index 7e36aee..3cadb54 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl
@@ -62,7 +62,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl
index 9af2e55..435e54e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl
@@ -35,7 +35,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl
index a577af6..c9198f6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl
@@ -26,7 +26,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl
index 29fc085..c3bc1bf 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl
@@ -135,7 +135,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {
   gl_GlobalInvocationID = gl_GlobalInvocationID_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl
index 28a95e6..c9d8492 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl
@@ -34,7 +34,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl
index 2ce27b5..f656b91 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl
@@ -39,7 +39,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl
index 7edecc2..5b160e1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl
@@ -56,7 +56,7 @@
   x_GLF_color_1 : vec4<f32>,
 };
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl
index d983488..dafad00 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl
@@ -38,7 +38,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl
index 27ea484..f7afe65 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl
@@ -42,7 +42,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl
index aae7862..4633c8c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl
@@ -41,7 +41,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl
index 243b48b..3038a68 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl
@@ -102,7 +102,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl
index a7f2419..e24cb0a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl
@@ -33,7 +33,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl
index e46dd74..317778e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl
@@ -39,7 +39,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl
index b33f560..32082a5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl
@@ -98,7 +98,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl
index d4ea4f9..11d42f3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl
@@ -411,7 +411,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl
index 772af1d..b945674 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl
@@ -91,7 +91,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl b/test/tint/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl
index 13f20ff..2ed7214 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl
@@ -23,7 +23,7 @@
   x_GLF_color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl b/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl
index 89672bd..b516363 100644
--- a/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl
@@ -109,7 +109,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(4, 1, 1)
+@compute @workgroup_size(4, 1, 1)
 fn main(@builtin(workgroup_id) gl_WorkGroupID_param : vec3<u32>) {
   gl_WorkGroupID = gl_WorkGroupID_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl b/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl
index d373a84..5e8bbe1 100644
--- a/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl
@@ -109,7 +109,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(4, 1, 1)
+@compute @workgroup_size(4, 1, 1)
 fn main(@builtin(workgroup_id) gl_WorkGroupID_param : vec3<u32>) {
   gl_WorkGroupID = gl_WorkGroupID_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl b/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl
index 08343e5..5ac3080 100644
--- a/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl
+++ b/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl
@@ -10,7 +10,7 @@
   color_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(color);
diff --git a/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl b/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl
index adc5669..ed844c0 100644
--- a/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl
+++ b/test/tint/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl
@@ -16,7 +16,7 @@
   color_out_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl
index 70d0754..a78ae2c 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl
@@ -37,7 +37,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl
index cb066ee..b363911 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl
@@ -20,7 +20,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main(@builtin(global_invocation_id) x_2_param : vec3<u32>) {
   x_2 = x_2_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl
index 733a1f0..bae81f9 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl
@@ -20,7 +20,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main(@builtin(global_invocation_id) x_2_param : vec3<u32>) {
   x_2 = x_2_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl
index c6ad43c..56061a7 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl
@@ -20,7 +20,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main(@builtin(global_invocation_id) x_2_param : vec3<u32>) {
   x_2 = x_2_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl
index 5ccc2a7..fefb524 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl
@@ -20,7 +20,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main(@builtin(global_invocation_id) x_2_param : vec3<u32>) {
   x_2 = x_2_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl
index d7b159f..c290487 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl
@@ -23,7 +23,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main(@builtin(global_invocation_id) x_3_param : vec3<u32>) {
   x_3 = x_3_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl
index a8ef5a2..b33c53b 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl
@@ -17,7 +17,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main(@builtin(global_invocation_id) x_3_param : vec3<u32>) {
   x_3 = x_3_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl
index 5943d91..8817e33 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl
@@ -23,7 +23,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main(@builtin(global_invocation_id) x_3_param : vec3<u32>) {
   x_3 = x_3_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl
index 2a2b3bd..e86ba62 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl
@@ -20,7 +20,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main(@builtin(global_invocation_id) x_3_param : vec3<u32>) {
   x_3 = x_3_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl
index e1a9836..eade541 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl
@@ -20,7 +20,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main(@builtin(global_invocation_id) x_3_param : vec3<u32>) {
   x_3 = x_3_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl
index 293a48cf..7958835 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl
@@ -20,7 +20,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main(@builtin(global_invocation_id) x_2_param : vec3<u32>) {
   x_2 = x_2_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl
index 08ebc65..7f3aca0 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl
@@ -17,7 +17,7 @@
   return;
 }
 
-@stage(compute) @workgroup_size(1, 1, 1)
+@compute @workgroup_size(1, 1, 1)
 fn main(@builtin(global_invocation_id) x_2_param : vec3<u32>) {
   x_2 = x_2_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl
index 47dac83..6fd10fa 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl
@@ -20,7 +20,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) x_3_param : vec2<f32>) -> main_out {
   x_3 = x_3_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl
index 5fafe44..b3544f7 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl
@@ -14,7 +14,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl
index 48f911c..5a82d34 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl
@@ -15,7 +15,7 @@
   gl_FragDepth_1 : f32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(color_out, gl_FragDepth);
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl
index 4301036..811fe59 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl
@@ -14,7 +14,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl
index 4b77847..8b3efb2 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl
@@ -15,7 +15,7 @@
   gl_FragDepth_1 : f32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(color_out, gl_FragDepth);
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl
index 8535066..ddc27e7 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl
@@ -14,7 +14,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl
index b4531a7..e5ece0c 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl
@@ -15,7 +15,7 @@
   gl_FragDepth_1 : f32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(color_out, gl_FragDepth);
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl
index 95d7f54..396a887 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl
@@ -14,7 +14,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl
index 6d7e13d..bae4d1a 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl
@@ -15,7 +15,7 @@
   gl_FragDepth_1 : f32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(color_out, gl_FragDepth);
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl
index ad8f4af..868da48 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl
@@ -14,7 +14,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl
index 20e02ac..e59c3fc 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl
@@ -14,7 +14,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl
index 9f3a0ac..f2a67fb 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl
@@ -15,7 +15,7 @@
   gl_FragDepth_1 : f32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(outColor, gl_FragDepth);
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl
index ff8fc9a..cf4b64c 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl
@@ -15,7 +15,7 @@
   gl_FragDepth_1 : f32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(outColor, gl_FragDepth);
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl
index 7039723..d68db5f 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl
@@ -15,7 +15,7 @@
   gl_FragDepth_1 : f32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(outColor, gl_FragDepth);
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl
index 7d01c21..adf7699 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl
@@ -18,7 +18,7 @@
   gl_FragDepth_1 : f32,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl
index 2a68cc4..e07220e 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl
@@ -15,7 +15,7 @@
   gl_FragDepth_1 : f32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(outColor, gl_FragDepth);
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl
index e7b8508..9445351 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl
@@ -15,7 +15,7 @@
   gl_FragDepth_1 : f32,
 }
 
-@stage(fragment)
+@fragment
 fn main() -> main_out {
   main_1();
   return main_out(outColor, gl_FragDepth);
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl
index cf79af0..330cec1 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl
@@ -18,7 +18,7 @@
   pos_1 : u32,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl
index dbe9cde..c984071 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl
@@ -20,7 +20,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) x_2_param : vec3<f32>, @location(1) @interpolate(flat) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl
index a4d22f2..59e367d 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl
@@ -23,7 +23,7 @@
   x_4_1 : i32,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) @interpolate(flat) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl
index 18d4b52..2cfa888 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl
@@ -18,7 +18,7 @@
   x_4_1 : i32,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) @interpolate(flat) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl
index 88ebe31..9790cbd 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl
@@ -20,7 +20,7 @@
   out_data_1 : i32,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl
index 1c90d21..c8c5fd1 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl
@@ -18,7 +18,7 @@
   x_4_1 : i32,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) @interpolate(flat) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl
index c57b476..472f453 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl
@@ -29,7 +29,7 @@
   x_4_1 : i32,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) @interpolate(flat) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl
index 1db1c34..2cdb543 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl
@@ -29,7 +29,7 @@
   x_4_1 : i32,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) @interpolate(flat) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl
index c1412bd..5701f86 100644
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl
+++ b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl
@@ -33,7 +33,7 @@
   x_4_1 : i32,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) @interpolate(flat) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
diff --git a/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl b/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl
index 97fb1ae..162c715 100644
--- a/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl
+++ b/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl
@@ -13,7 +13,7 @@
   gl_Position : vec4<f32>,
 }
 
-@stage(vertex)
+@vertex
 fn main(@location(0) position_param : vec3<f32>) -> main_out {
   position = position_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl b/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl
index 63fb5d0..325436a 100644
--- a/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl
+++ b/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl
@@ -26,7 +26,7 @@
   expect_1 : i32,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl b/test/tint/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl
index 964f60c..9aad59e 100644
--- a/test/tint/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl
+++ b/test/tint/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl
@@ -13,7 +13,7 @@
   color_out_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@location(0) color_in_param : vec4<f32>) -> main_out {
   color_in = color_in_param;
   main_1();
diff --git a/test/tint/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl b/test/tint/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl
index 777eb67..277b8f2 100644
--- a/test/tint/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl
+++ b/test/tint/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl
@@ -14,7 +14,7 @@
   result_1 : vec4<f32>,
 }
 
-@stage(fragment)
+@fragment
 fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();