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/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();
 }