wgsl: Replace [[decoration]] with @decoration

Deprecate the old syntax. Migrate everything to the new syntax.

Bug: tint:1382
Change-Id: Ide12b2e927b17dc93b9714c7049090864cc568d3
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/77260
Reviewed-by: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: David Neto <dneto@google.com>
Commit-Queue: David Neto <dneto@google.com>
diff --git a/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl
index cd91ab7..cb95b58 100644
--- a/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl
+++ b/test/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl
@@ -16,13 +16,13 @@
   data2 : i32;
 };
 
-[[group(0), binding(3)]] var<storage, read_write> x_4 : result;
+@group(0) @binding(3) var<storage, read_write> x_4 : result;
 
-[[group(0), binding(0)]] var<uniform> x_6 : block0;
+@group(0) @binding(0) var<uniform> x_6 : block0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : block1;
+@group(0) @binding(1) var<uniform> x_8 : block1;
 
-[[group(0), binding(2)]] var<uniform> x_10 : block2;
+@group(0) @binding(2) var<uniform> x_10 : block2;
 
 fn main_1() {
   let x_25 : i32 = x_6.data0;
@@ -34,7 +34,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl
index 8d78d1e..0e4fce3 100644
--- a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl
@@ -2,14 +2,14 @@
   data : vec4<f32>;
 };
 
-[[group(0), binding(1)]] var<storage, read_write> x_4 : block0;
+@group(0) @binding(1) var<storage, read_write> x_4 : block0;
 
 fn main_1() {
   x_4.data = vec4<f32>(1.0, 2.0, 3.0, 4.0);
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl
index 465aac8..5cdad21 100644
--- a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl
@@ -6,7 +6,7 @@
 
 var<private> frag_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : block0;
+@group(0) @binding(1) var<uniform> x_8 : block0;
 
 var<private> gl_Position : vec4<f32>;
 
@@ -19,14 +19,14 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
-  [[location(0)]]
+  @location(0)
   frag_color_1 : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position, frag_color);
diff --git a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl
index 0901c1f..eae3d41 100644
--- a/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl
+++ b/test/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/1.wgsl
@@ -9,12 +9,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   final_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[location(0)]] frag_color_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@location(0) frag_color_param : vec4<f32>) -> main_out {
   frag_color = frag_color_param;
   main_1();
   return main_out(final_color);
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl
index b9cc524..8e480df 100644
--- a/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl
+++ b/test/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl
@@ -13,14 +13,14 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
-  [[location(1)]]
+  @location(1)
   frag_color_1 : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position, frag_color);
diff --git a/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl b/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl
index cbbd626..0ad4fe9 100644
--- a/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl
+++ b/test/vk-gl-cts/combined_operations/negintdivand/1.wgsl
@@ -16,12 +16,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   color_out_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[location(1)]] frag_color_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@location(1) frag_color_param : vec4<f32>) -> main_out {
   frag_color = frag_color_param;
   main_1();
   return main_out(color_out);
diff --git a/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl
index 8432d48..6d1ff1f 100644
--- a/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/access-new-vector-inside-if-condition/0-opt.wgsl
@@ -11,11 +11,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl
index 32cc07e..ae0c7b0 100644
--- a/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/always-discarding-function/0-opt.wgsl
@@ -6,7 +6,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+@group(0) @binding(0) var<uniform> x_11 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -101,11 +101,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl
index c345dfc..58049a1 100644
--- a/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/arr-value-set-to-arr-value-squared/0-opt.wgsl
@@ -10,7 +10,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_30 : buf0;
+@group(0) @binding(0) var<uniform> x_30 : buf0;
 
 fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
   var temp : i32;
@@ -185,11 +185,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl
index 75f4bd3..db02da6 100644
--- a/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/array-idx-multiplied-by-for-loop-idx/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -91,12 +91,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl
index a09f0d4..63e9675 100644
--- a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array-2/0-opt.wgsl
@@ -102,12 +102,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl
index 19735ee..9c19516 100644
--- a/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/assign-array-value-to-another-array/0-opt.wgsl
@@ -83,11 +83,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl
index 5793a6f..6200ff3 100644
--- a/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<i32>;
+type RTArr = @stride(4) array<i32>;
 
 struct doesNotMatter {
   global_seed : i32;
@@ -11,9 +11,9 @@
 
 var<private> gl_LocalInvocationID : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_7 : doesNotMatter;
+@group(0) @binding(0) var<storage, read_write> x_7 : doesNotMatter;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 fn main_1() {
   var lid : i32;
@@ -55,8 +55,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(16, 1, 1)]]
-fn main([[builtin(local_invocation_id)]] gl_LocalInvocationID_param : vec3<u32>) {
+@stage(compute) @workgroup_size(16, 1, 1)
+fn main(@builtin(local_invocation_id) gl_LocalInvocationID_param : vec3<u32>) {
   gl_LocalInvocationID = gl_LocalInvocationID_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl
index 5ac0f1a..557b89c 100644
--- a/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/break-in-do-while-with-nested-if/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   var GLF_live12c5 : bool;
@@ -34,11 +34,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl
index 817d91b..04662ee 100644
--- a/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/call-function-with-discard/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -28,11 +28,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl
index d68a5ec..f655e42 100644
--- a/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/call-if-while-switch/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -62,11 +62,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl
index 520dccb..8af8b73 100644
--- a/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/color-set-in-for-loop/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -20,11 +20,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl
index 088c0f8..1f03990 100644
--- a/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/color-write-in-loop/0.wgsl
@@ -61,12 +61,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl
index 937a8df..4de0ebd 100644
--- a/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/conditional-return-in-infinite-while/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> GLF_live6tree : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -39,11 +39,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl
index 4affd4f..2a4df80 100644
--- a/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/control-flow-in-function/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_25 : buf0;
+@group(0) @binding(0) var<uniform> x_25 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -304,12 +304,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl
index c7a4fe2..b4400e6 100644
--- a/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cosh-return-inf-unused/0-opt.wgsl
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+@group(0) @binding(0) var<uniform> x_11 : buf0;
 
 fn func_i1_(b : ptr<function, i32>) -> f32 {
   var ndx : i32;
@@ -112,12 +112,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl
index 021c3f7..dd80eb3 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-access-array-dot/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 3>;
+type Arr_1 = @stride(16) array<f32, 3>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -54,11 +54,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl
index b046ca1..c361951 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-analysis-reachable-from-many/0-opt.wgsl
@@ -2,7 +2,7 @@
   zero : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -63,11 +63,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl
index 1fff19f..a652c56 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-and-even-numbers-from-fragcoord/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 fn main_1() {
   var v : vec2<i32>;
@@ -45,12 +45,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl
index 6c62828..9630567 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-acos-ldexp/0-opt.wgsl
@@ -2,7 +2,7 @@
   two : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -23,11 +23,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl
index 32c79b7..a4a925f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mix-nan/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 10>;
+type Arr = @stride(16) array<i32, 10>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -58,11 +58,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl
index d1079cb..87c4fe3 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-mod-zero/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -48,11 +48,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl
index 019dd07..9a72028 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-module-small-number/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 fn main_1() {
   var f0 : f32;
@@ -77,11 +77,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl
index e8b285f..fd64516 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-reflect-denorm/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 3>;
+type Arr_1 = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -53,11 +53,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl
index 57cbd69..3b441f6 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-sinh-negative-log2/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -46,11 +46,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl
index 8bcb3a5..be02bf8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-tanh/0-opt.wgsl
@@ -22,11 +22,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl
index 3c3604a..4861cdf07 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-undefined-matrix-mul/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<i32, 12>;
+type Arr = @stride(16) array<i32, 12>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_15 : buf0;
+@group(0) @binding(0) var<uniform> x_15 : buf0;
 
 fn main_1() {
   var m0 : mat3x4<f32>;
@@ -79,11 +79,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl
index 058b636..f9187ee 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-apfloat-unpackunorm-loop/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -44,11 +44,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl
index ba3f0fe..fdeb85a 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-accesses-clamp/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+@group(0) @binding(1) var<uniform> x_11 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -58,12 +58,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl
index ab2be50..f7f4488 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-array-copies-loops-with-limiters/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 20>;
+type Arr = @stride(16) array<i32, 20>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -8,11 +8,11 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_19 : buf1;
+@group(0) @binding(1) var<uniform> x_19 : buf1;
 
 fn main_1() {
   var arr0 : array<i32, 10>;
@@ -219,11 +219,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl
index f95fe55..f71829a 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-asin-undefined-smoothstep/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 7>;
+type Arr = @stride(16) array<f32, 7>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -84,11 +84,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl
index 74ba82b..2ffa4ac 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-atan-trunc-vec4/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -53,11 +53,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl
index fbe9843..26f7859 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-basic-block-discard-in-function/0-opt.wgsl
@@ -2,7 +2,7 @@
   zero : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -47,11 +47,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl
index 8cbbc01..383dd2b 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitcount/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+@group(0) @binding(1) var<uniform> x_11 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -61,12 +61,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl
index f5e5913..5ab1ec2 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitfieldreverse-loop-limit-underflow/0.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -57,11 +57,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl
index 1d88159..b8d916b 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-bitwise-inverse-uniform-condition/0-opt.wgsl
@@ -2,23 +2,23 @@
   zero : f32;
 };
 
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(2)]] var<uniform> x_6 : buf2;
+@group(0) @binding(2) var<uniform> x_6 : buf2;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -53,11 +53,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl
index 73515b9..9b8061d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl
@@ -149,12 +149,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl
index b8f5efd..90b17bf 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-branch-probability-identity-matrix/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 3>;
+type Arr_1 = @stride(16) array<f32, 3>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -137,11 +137,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl
index 3319941..e8560ca 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cast-float-to-int-and-back/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   var f : f32;
@@ -27,11 +27,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl
index 6cc8571..82acf85 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-loop-limit-increment-float-array/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -65,11 +65,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl
index f53bccb..a5ffc0e 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-lower-limit-from-always-false/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 fn main_1() {
   var a : f32;
@@ -41,11 +41,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl
index 6251946..c01653c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -71,11 +71,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl
index e0b9928..bbd9843 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-element-ceil-negative/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 fn main_1() {
   var v0 : vec2<f32>;
@@ -42,11 +42,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl
index dc68ea44..3fc8857 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clamp-vector-variable-negative-offset/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 fn main_1() {
   var v0 : vec2<f32>;
@@ -42,11 +42,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl
index 8d15f49..4b9df77 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-clear-yz-inside-condition/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
@@ -8,9 +8,9 @@
   zero : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -43,11 +43,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl
index 7094098..f0c0fa1 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-output-undefined-in-unexecuted-branch/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf2 {
   x_GLF_uniform_int_values : Arr_1;
@@ -14,7 +14,7 @@
   three : i32;
 };
 
-type Arr_2 = [[stride(16)]] array<u32, 1>;
+type Arr_2 = @stride(16) array<u32, 1>;
 
 struct buf0 {
   x_GLF_uniform_uint_values : Arr_2;
@@ -22,15 +22,15 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(2)]] var<uniform> x_12 : buf2;
+@group(0) @binding(2) var<uniform> x_12 : buf2;
 
-[[group(0), binding(3)]] var<uniform> x_14 : buf3;
+@group(0) @binding(3) var<uniform> x_14 : buf3;
 
-[[group(0), binding(0)]] var<uniform> x_16 : buf0;
+@group(0) @binding(0) var<uniform> x_16 : buf0;
 
 fn func0_() {
   var tmp : vec4<f32>;
@@ -128,12 +128,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl
index 4287868..3468018 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-color-overwrite-identity-matrix-multiply/0.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 5>;
+type Arr = @stride(16) array<f32, 5>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -32,12 +32,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl
index 5049fc2..181cfc2 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-combine-and-or-xor-gt-lt/0-opt.wgsl
@@ -2,17 +2,17 @@
   v1 : vec2<f32>;
 };
 
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 fn main_1() {
   var b : bool;
@@ -42,11 +42,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl
index 8cc5601..0b91056 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-condition-loop-index-bitwise-not/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -50,11 +50,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl
index 3860701..fc6c715 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-conditional-discard-inside-loop/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -8,7 +8,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
@@ -16,11 +16,11 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(2)]] var<uniform> x_9 : buf2;
+@group(0) @binding(2) var<uniform> x_9 : buf2;
 
-[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+@group(0) @binding(1) var<uniform> x_11 : buf1;
 
 fn main_1() {
   var a : i32;
@@ -60,11 +60,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl
index 279f432..1bf8ce0 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-ceil-vec4/0-opt.wgsl
@@ -2,7 +2,7 @@
   quarter : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -20,11 +20,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl
index 367bf40..e0b9f7d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-inside-while/0-opt.wgsl
@@ -28,11 +28,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl
index c3e6f5d..95c8f9c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-min/0-opt.wgsl
@@ -2,7 +2,7 @@
   zero : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -18,11 +18,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl
index 45f886f..3801059 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp-vs-original/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   var f : f32;
@@ -23,11 +23,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl
index b2ed065..cbea4ee 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-clamp/0-opt.wgsl
@@ -2,7 +2,7 @@
   fourtytwo : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -29,11 +29,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl
index 2617e9c..348724f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-dot-condition-true/0-opt.wgsl
@@ -13,11 +13,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl
index 78b9651..a0b52a6 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-gte-const-first/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -20,12 +20,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl
index bab28c3..c5e47de 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-min-as-loop-range/0-opt.wgsl
@@ -2,7 +2,7 @@
   zero : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -68,11 +68,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl
index 919120b..fe33aad 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-mod-one-one-lte/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   if (((1.0 % 1.0) <= 0.01)) {
@@ -23,11 +23,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl
index 9bdf93e..cb84651 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-pow-large-exp/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -48,11 +48,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl
index 92d63c5..cf2d376 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-same-condition/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   var x_30 : bool;
@@ -40,11 +40,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl
index f14b530..5dd0328 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-sinh-inf/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -30,11 +30,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl
index 2d4b641..a9f8c0d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-const-folding-vector-shuffle/0.wgsl
@@ -42,11 +42,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl
index aa69903..aff4ac4 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constant-folding-atan-over-tanh/0-opt.wgsl
@@ -14,11 +14,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl
index 0fdf48f..903cd15 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-combine-add-sub/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -74,11 +74,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl
index 9853546..9a4d15f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-constants-mix-uniform/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -21,11 +21,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl
index 3af5bf9..9822ce0 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-continue-break-discard-return-in-loop/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -10,9 +10,9 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
 fn main_1() {
   let x_28 : i32 = x_5.x_GLF_uniform_int_values[0];
@@ -52,11 +52,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl
index 91ec687..c0a411d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-func-argument/0-opt.wgsl
@@ -6,7 +6,7 @@
   zero : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -58,11 +58,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl
index be4b0ae..6c2ce38 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl
@@ -6,7 +6,7 @@
   zero : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -30,11 +30,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl
index 1604234..9438771 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-param-uniform/0-opt.wgsl
@@ -6,7 +6,7 @@
   zero : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -65,11 +65,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl
index 56180ef..6301e66 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cosh-clamped-to-one/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 1>;
+type Arr_1 = @stride(16) array<i32, 1>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 fn main_1() {
   var v : vec4<f32>;
@@ -29,11 +29,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl
index a5bfcb9..0eaf9df 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -91,11 +91,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl
index c7c18d1e..659ece3 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-cumulate-loops-unreachable/1.wgsl
@@ -65,11 +65,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl
index 645096c..6544198 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-clamp-undefined-access-array/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -65,11 +65,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl
index 5c74b32..ff92b48 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -52,11 +52,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl
index 1a131cd..5cc135e 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-glf_color/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+@group(0) @binding(0) var<uniform> x_12 : buf0;
 
 fn func_f1_(b : ptr<function, f32>) -> f32 {
   let x_90 : f32 = x_7.x_GLF_uniform_float_values[0];
@@ -78,11 +78,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl
index 06ea4a2..01e8325 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-increment-color/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -36,11 +36,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl
index eadf964..1964f4c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-loop-bitfieldreverse/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -44,11 +44,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl
index 1a4e159..308fa1a 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-neg-div-pow2/0-opt.wgsl
@@ -6,9 +6,9 @@
   minusEight : i32;
 };
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -51,11 +51,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl
index d6f28e9..52f8b42 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dag-combiner-same-cond-nested/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -66,11 +66,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl
index 14ef8d3..76343c7 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.wgsl
@@ -108,11 +108,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl
index 46da53a..cb78e4d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl
@@ -8,7 +8,7 @@
 
 var<private> array1 : array<f32, 3>;
 
-[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+@group(0) @binding(0) var<uniform> x_11 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -72,12 +72,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl
index e1e2a9e..ddd7fa4 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-derivative-uniform-vector-global-loop-count/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
@@ -16,11 +16,11 @@
 
 var<private> x_GLF_global_loop_count : i32;
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
-[[group(0), binding(2)]] var<uniform> x_12 : buf2;
+@group(0) @binding(2) var<uniform> x_12 : buf2;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -79,11 +79,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl
index 0155704..ffdf893 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-descending-loop-min-max-always-zero/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -55,11 +55,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl
index af5a1c1..cd8f3f0 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-divide-matrix-transpose-by-constant/0-opt.wgsl
@@ -13,11 +13,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl
index b93b128..6006a29 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-double-if-true-in-loop/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -53,11 +53,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl
index 690c3dd..9237ad8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-empty-loop-minus-one-modulo-variable-one/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -60,11 +60,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl
index 620e1b8..e09ab73 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-exp2-two/0-opt.wgsl
@@ -13,11 +13,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl
index 28e53df..4ca3a57 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-float-array-init-pow/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -50,11 +50,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl
index 35a6b62..af347a5 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-and-in-for-loop-range/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -42,11 +42,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl
index 57dfb87..91e2f98 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-and-zero/0.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl
index 76cdd76..92a2bb7 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-or-full-mask/0.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl
index a475384..4244472 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-bitwise-xor/0-opt.wgsl
@@ -16,11 +16,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl
index 3d02048..7b6d3b1 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-const-variable/0.wgsl
@@ -13,11 +13,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl
index 4fa9901..3926937 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-and-constant/0-opt.wgsl
@@ -27,12 +27,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl
index 56678ab..ad83063 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-logical-or-constant/0.wgsl
@@ -13,12 +13,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl
index 10c8137..cdfde15 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-min-int-value/0-opt.wgsl
@@ -2,7 +2,7 @@
   minusOne : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -24,11 +24,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl
index ec3893d..41c2d79 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-negate-variable/0.wgsl
@@ -13,11 +13,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl
index 9e985c7..7cb34b0 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-gte32/0.wgsl
@@ -2,7 +2,7 @@
   one : u32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -64,11 +64,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl
index f04d8e2..45e24a8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-shift-right-arithmetic/0.wgsl
@@ -13,11 +13,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl
index be6fc47..350df86 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fold-switch-udiv/0.wgsl
@@ -16,11 +16,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl
index 6795d45..e86e68c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-clamp-cmp-const-first/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -33,11 +33,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl
index 485238c..865cffe 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-merge-add-sub-uniform/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl
index eb496299..3aeb232 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-construct-extract/0-opt.wgsl
@@ -2,7 +2,7 @@
   twoandthree : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -34,11 +34,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl
index 017d331..5e92a1d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-extract/0-opt.wgsl
@@ -2,7 +2,7 @@
   three : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl
index c832a10..cd134b6 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-dot-no-extract/0.wgsl
@@ -2,7 +2,7 @@
   three : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl
index 7c7b28a..1446989 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-add-sub/0-opt.wgsl
@@ -24,11 +24,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl
index eb97819..7e63c10 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-div-mul/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -21,11 +21,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl
index 82d53fc..b9dc403 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-divs/0-opt.wgsl
@@ -2,7 +2,7 @@
   four : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -21,11 +21,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl
index 738c840..dbdf48c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-mul-div/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -21,11 +21,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl
index 99ec59a..d7f03d8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-add/0-opt.wgsl
@@ -34,11 +34,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl
index 44ac190..b4a3e58 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-sub-sub/0-opt.wgsl
@@ -34,11 +34,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl
index 1bba57f..6ae5084 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-merge-var-sub/0-opt.wgsl
@@ -2,7 +2,7 @@
   five : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -31,11 +31,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl
index 1315b97..fa13a35 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-mix-uniform-weight/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -24,11 +24,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl
index a762a7d..115f201 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-div/0-opt.wgsl
@@ -2,7 +2,7 @@
   four : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl
index edfae00..37d278a 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-negate-sub/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -20,11 +20,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl
index 5938fe4..2397e0e 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-redundant-mix/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl
index bbb0ca6..16eb822 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl
index 49c9205..7049b33 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl
@@ -2,7 +2,7 @@
   threeandfour : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -23,11 +23,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl
index 13ebbb0..e857996 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-split-vector-init/0-opt.wgsl
@@ -16,11 +16,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl
index bca2411..479f215 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-vec-mix-uniform/0-opt.wgsl
@@ -2,7 +2,7 @@
   zeroOne : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -25,11 +25,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl
index c13349f..3d3d0e4 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-array-initializing-modulo/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -41,11 +41,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl
index c5585de..6a728fd 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-loop-min-increment-array-element/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -59,11 +59,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl
index af6ec42..b6ec115 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-for-switch-fallthrough/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -54,11 +54,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl
index 05228f7..9e1b201 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 fn main_1() {
   var f0 : f32;
@@ -40,12 +40,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl
index a1ab4e0..089938b 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -48,11 +48,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl
index 9d5718a..3a9c135 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-bitwise-not/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -36,12 +36,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl
index 0ea6e7d..a905e60 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -85,12 +85,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl
index baa752e..ddb1417 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-fragcoord-multiply/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 1>;
+type Arr_1 = @stride(16) array<i32, 1>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 fn main_1() {
   var icoord : vec2<i32>;
@@ -62,12 +62,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl
index 0791d46..20851de 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-fragcoord-condition-always-return/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+@group(0) @binding(0) var<uniform> x_11 : buf0;
 
 fn func_f1_(x : ptr<function, f32>) -> f32 {
   loop {
@@ -82,12 +82,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl
index b695c16..85ca151 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-function-vec2-never-discard/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
@@ -8,21 +8,21 @@
   zero : f32;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
-[[group(0), binding(2)]] var<uniform> x_10 : buf2;
+@group(0) @binding(2) var<uniform> x_10 : buf2;
 
 var<private> gl_FragCoord : vec4<f32>;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+@group(0) @binding(0) var<uniform> x_13 : buf0;
 
 fn func_vf2_(pos : ptr<function, vec2<f32>>) -> bool {
   let x_62 : f32 = (*(pos)).x;
@@ -60,12 +60,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl
index 9c26d44..b2ded57 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-bound-true-logical-or/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -8,7 +8,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   x_GLF_global_loop_count = 0;
@@ -55,11 +55,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl
index 57432b7..caf4f3a 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 18>;
+type Arr = @stride(16) array<f32, 18>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
@@ -16,11 +16,11 @@
 
 var<private> x_GLF_global_loop_count : i32;
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+@group(0) @binding(0) var<uniform> x_12 : buf0;
 
-[[group(0), binding(2)]] var<uniform> x_15 : buf2;
+@group(0) @binding(2) var<uniform> x_15 : buf2;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -130,11 +130,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl
index 19d84ed..96ce6a3 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-main-function-call/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_global_loop_count : i32;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -63,11 +63,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl
index 510a02ab..3ae2436 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-multiply-one-minus/0.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -68,11 +68,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl
index 231d414..531a3d4 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-squared-comparison/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -8,7 +8,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   x_GLF_global_loop_count = 0;
@@ -42,11 +42,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl
index 080e3ba..c5c2c0c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-conversion-identical-branches/0-opt.wgsl
@@ -2,7 +2,7 @@
   zero : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -28,11 +28,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl
index fa50b1e..eae9e89 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-switch-fallthrough/0.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 fn main_1() {
   let x_31 : f32 = x_6.x_GLF_uniform_float_values[1];
@@ -45,12 +45,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl
index e31894b..aed3c77 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-continue/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -67,11 +67,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl
index ff058e8..883acb7 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-if-true-discard-in-do-while-never-reached/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -46,11 +46,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl
index e18c700..885ecab 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inc-inside-switch-and-for/0-opt.wgsl
@@ -2,7 +2,7 @@
   three : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -43,11 +43,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl
index 9dc640b..d210920 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-array-element-in-loop/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -77,11 +77,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl
index d9a10ba..f649776 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-float-in-loop-abs/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -71,11 +71,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl
index d16fa14..3d51f22 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-global-counter-loop-function/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_global_loop_count : i32;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -81,11 +81,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl
index 5f11cde..27f748f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-inside-clamp/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -39,11 +39,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl
index 0bb69b8..a98a0ef 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-int-loop-counter-mod-array/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -52,11 +52,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl
index a1adef2..ba4cf88 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-multiple-integers/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -87,11 +87,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl
index 5a5096d..2a3bb62 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -58,11 +58,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl
index 02f7508..02e7cd8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 4>;
+type Arr_1 = @stride(16) array<f32, 4>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -56,11 +56,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl
index 7d42f20..5ea2613 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-empty-block/0-opt.wgsl
@@ -27,12 +27,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl
index ab1fd10..badcf70 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-nested-loops/0-opt.wgsl
@@ -2,7 +2,7 @@
   zero : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -68,11 +68,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl
index c5a9a86..7405541 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-return-in-loop/0-opt.wgsl
@@ -38,11 +38,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl
index cf1481a..0a01338 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inline-pass-unreachable-func/0-opt.wgsl
@@ -29,12 +29,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl
index 95eb9e4..6df84d8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-increase-negative/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+@group(0) @binding(0) var<uniform> x_11 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -73,12 +73,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl
index de17bea..4b2c476 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-ldexp/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -58,11 +58,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl
index 46580ae..95e3e82 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-neg-func-arg/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -74,11 +74,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl
index 10bc47e..ce4f886 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-add-sub-pre-increase/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+@group(0) @binding(0) var<uniform> x_12 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -79,12 +79,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl
index d0f8b62..6284f25 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-pack-unpack/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -89,11 +89,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl
index 3e90ab3..c40e683 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-switch/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -69,11 +69,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl
index 8b9be4e..5515fa1 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-and-or-xor-xor-add/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -44,11 +44,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl
index 41a1c55..9f58cd8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-isnan/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   let x_7 : i32 = x_5.x_GLF_uniform_int_values[0];
@@ -24,11 +24,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl
index a691939..b69d2c2 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ldexp/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
 fn main_1() {
   let x_29 : f32 = x_5.x_GLF_uniform_float_values[0];
@@ -36,11 +36,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl
index 5e268e0..4de5b47 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-pre-increment-clamp/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_14 : buf1;
+@group(0) @binding(1) var<uniform> x_14 : buf1;
 
 fn f1_f1_(a : ptr<function, f32>) -> f32 {
   var b : i32;
@@ -66,12 +66,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl
index 4cc9cf8..d9c43db 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-ternary-vector-access/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 fn main_1() {
   var a : i32;
@@ -46,12 +46,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl
index ed48840..a31725e 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-compares-while-modulo/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 fn main_1() {
   var i : i32;
@@ -43,11 +43,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl
index 585c193..2465cc6 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-mul-div-rem-if-undefined-divide-mix/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 fn f1_f1_(a : ptr<function, f32>) -> f32 {
   let x_100 : f32 = *(a);
@@ -64,12 +64,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl
index 2b819ba..d84f847 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-pack-unpack/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 7>;
+type Arr = @stride(16) array<f32, 7>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -85,11 +85,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl
index eae85ef..62a1158 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-left-shift-for/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 fn main_1() {
   var i : i32;
@@ -59,12 +59,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl
index 628a5ec..b67d22f7 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -82,11 +82,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl
index c18fcc8..6f2a0b3 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-pack-unpack/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 3>;
+type Arr_1 = @stride(16) array<f32, 3>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -84,11 +84,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl
index c423f55..d912c18 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-packsnorm-unpackunorm/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -86,11 +86,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl
index 7b441cf6..b3b842d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-simplify-demanded-switch-or-xor/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -39,11 +39,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl
index 58bf348..5daa6ea 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-vector-ops-asin/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -77,11 +77,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl
index 3591994..054e604 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -24,11 +24,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl
index 2c3b18f..2ff0ddf 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-bit-shifting/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -29,11 +29,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl
index ebf9237..450004f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inclusive-or/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -38,11 +38,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl
index 6b0ffef..e6a5f8c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-inst-combine-calls-for-compare-function-call-result/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 12>;
+type Arr = @stride(16) array<i32, 12>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -165,11 +165,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl
index dbbbe2b..ad8bed6 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-acos-undefined/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 fn main_1() {
   var a : f32;
@@ -35,11 +35,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl
index e3df98e..04e7908 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-mod-sqrt-undefined/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 fn main_1() {
   var a : f32;
@@ -35,11 +35,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl
index 43f4562..fd3b6cd 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instruction-simplify-sqrt/0.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
 fn main_1() {
   let x_31 : f32 = x_5.x_GLF_uniform_float_values[0];
@@ -33,11 +33,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl
index fb49913..9dda7ec 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-first-value-phi/0-opt.wgsl
@@ -6,15 +6,15 @@
   v1 : vec2<f32>;
 };
 
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -147,11 +147,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl
index 0590a0e..277fb3a 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-instructions-for-if-less-than-equal/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_5 : buf1;
+@group(0) @binding(1) var<uniform> x_5 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 fn main_1() {
   var i : i32;
@@ -50,11 +50,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl
index b584e24..c915bc3 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-div-round-to-zero/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -30,11 +30,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl
index ab9a5fd..31c63ab 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-int-full-bits-divide-by-two-loop/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -47,12 +47,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl
index 054f760..c2cd62a 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-integer-modulo-negative/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -51,11 +51,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl
index a0443e6..195dfd7 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-intervalmap-set-stop/0-opt.wgsl
@@ -91,11 +91,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl
index a317457..da37a46 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -38,11 +38,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl
index cf4338c..1736a9c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-array-access/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -37,11 +37,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl
index 6029823..0429c3b 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-left-shift-right-shift-compare/0.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   var x_32_phi : i32;
@@ -39,11 +39,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl
index 0a12739..0d9ad36 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-liveinterval-different-dest/0-opt.wgsl
@@ -77,11 +77,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl
index c13d80f..76b7072 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-abs-multiply-offset/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -68,11 +68,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl
index 4c1cc2e..e839854 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-break-floor-nan-never-executed/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -42,11 +42,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl
index 8f286a3..7f75d10 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-clamp-to-one-empty-condition/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> x_GLF_global_loop_count : i32;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -65,11 +65,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl
index 3dc9b8f..4d7396f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-condition-double-negate/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 6>;
+type Arr = @stride(16) array<i32, 6>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -79,11 +79,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl
index 4f881f0..da7adbc 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-dfdx-constant-divide/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+@group(0) @binding(1) var<uniform> x_11 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -71,11 +71,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl
index d17d686..043f22e 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -81,12 +81,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl
index 6bee0d7..c2a9270 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-increment-or-divide-by-loop-index/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -53,11 +53,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl
index 61e176c..4fb7bb4 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-integer-half-minus-one/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -38,11 +38,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl
index fbaf576..749e41d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-logical-xor/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -33,11 +33,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl
index 5d36dbd..95223c0 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-returns-behind-true-and-false/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_global_loop_count : i32;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -62,11 +62,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl
index 3edff4c..5603562 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-loop-with-two-integers/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -81,11 +81,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl
index b2a62e1..1afd0fb 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-basic-block-for-for-for-less-than/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 6>;
+type Arr = @stride(16) array<i32, 6>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+@group(0) @binding(0) var<uniform> x_12 : buf0;
 
 fn main_1() {
   var data : array<i32, 5>;
@@ -119,12 +119,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl
index f9b028df..e4181c5 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machine-scheduler-for-if-pow/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+@group(0) @binding(0) var<uniform> x_12 : buf0;
 
 var<private> x_GLF_v1 : vec4<f32>;
 
@@ -81,12 +81,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_v1_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_v1);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl
index 633587b..92c33ac 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-machinevaluetype-one-iter-loop/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -40,11 +40,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl
index 97d05ee..595d15c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-conditions-break/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -61,12 +61,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl
index bacb0e9..6063cf2 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matching-if-always-true-inside-loop/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -85,11 +85,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl
index 745d306..80a5f2f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-double-transpose/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -32,11 +32,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl
index 7556722..3000605 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-matrix-square-mul-with-vector/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -37,11 +37,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl
index 6847d17..0b552c2 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-clamp-same-minval/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -19,11 +19,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl
index 4168f03..7c8e12d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-max-min-less-than/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -8,7 +8,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 fn main_1() {
   var a : i32;
@@ -29,12 +29,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl
index 7987ab9..beb04a2 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-sum-struct-members/0-opt.wgsl
@@ -8,7 +8,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -86,11 +86,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl
index 9c1a3af..dcf3f7d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mem-pass-unused-component/0-opt.wgsl
@@ -2,7 +2,7 @@
   two : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -32,11 +32,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl
index a30ca1f..3860032 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-merge-return-condition-twice/0-opt.wgsl
@@ -2,7 +2,7 @@
   three : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -50,11 +50,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl
index 194355f..75ef009 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-intbitstofloat-undefined-never-used/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 fn main_1() {
   var f : f32;
@@ -37,12 +37,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl
index 6c6f442..c91bc5b 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-min-nested-loop-same-value-for-variables/0-opt.wgsl
@@ -12,12 +12,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl
index 0eacd57..970ec3a 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-missing-return-value-function-never-called/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : u32;
 };
 
-type Arr = [[stride(16)]] array<i32, 1>;
+type Arr = @stride(16) array<i32, 1>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -10,11 +10,11 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 fn func_() -> f32 {
   switch(1) {
@@ -51,12 +51,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl
index ee397ee..4e092af 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-mod-uint-bits-float/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   var a : f32;
@@ -26,11 +26,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl
index 45050a1..8dc1059 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-modulo-zero-never-executed/0-opt.wgsl
@@ -1,28 +1,28 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf2 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-type Arr_2 = [[stride(16)]] array<u32, 1>;
+type Arr_2 = @stride(16) array<u32, 1>;
 
 struct buf1 {
   x_GLF_uniform_uint_values : Arr_2;
 };
 
-[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+@group(0) @binding(2) var<uniform> x_8 : buf2;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_12 : buf1;
+@group(0) @binding(1) var<uniform> x_12 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -56,12 +56,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl
index 6dbe667..c840fa9 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl
@@ -648,11 +648,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl
index 85ab856..c5a7eec 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-functions-accumulate-global-matrix/0-opt.wgsl
@@ -2,13 +2,13 @@
   one : f32;
 };
 
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -16,13 +16,13 @@
 
 var<private> m : mat4x2<f32>;
 
-[[group(0), binding(2)]] var<uniform> x_10 : buf2;
+@group(0) @binding(2) var<uniform> x_10 : buf2;
 
-[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+@group(0) @binding(0) var<uniform> x_12 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_16 : buf1;
+@group(0) @binding(1) var<uniform> x_16 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -118,12 +118,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl
index 888c7e3..fa8927b 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -88,11 +88,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl
index 6961cb2..bc23f2a 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> x_GLF_global_loop_count : i32;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -319,11 +319,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl
index 3542b4b..45c6006 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-array-access/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 19>;
+type Arr = @stride(16) array<i32, 19>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -116,11 +116,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl
index 014de3f..07176d9 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-large-constants-for-clamp-vector-access/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -63,11 +63,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl
index 8033cb9..ab44f55 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-nir-opt-loop-unroll-if-if-if-if-do-while/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,9 +12,9 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 fn main_1() {
   var a : f32;
@@ -63,11 +63,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl
index c83f471..ebcbd97 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-not-clamp-matrix-access/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 5>;
+type Arr = @stride(16) array<f32, 5>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -64,11 +64,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl
index 045939d..503dd1c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-one-minus-clamp-always-one-cast-to-int/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -31,11 +31,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl
index 40c7d3e..892a12c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for-for-do-while-if-if/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+@group(0) @binding(0) var<uniform> x_11 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -94,12 +94,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl
index 07eb0ab..9439fb8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-optimize-phis-for/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+@group(0) @binding(1) var<uniform> x_11 : buf1;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -219,12 +219,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl
index 25ac138..7ea4c74 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-packhalf-unpackunorm/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -91,11 +91,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl
index 967e25d..fbcbd37 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-signum/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -29,11 +29,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl
index 23deeb0..a562dab 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pattern-match-single-bit/0.wgsl
@@ -2,7 +2,7 @@
   three : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl
index 9526fa4..d437610 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-peephole-optimizer-target-instr-info-for-if-if-if/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 fn main_1() {
   var i : i32;
@@ -71,12 +71,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl
index 45a9af8..21a1811 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-identical-value-sqrt/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
@@ -8,17 +8,17 @@
   one : f32;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(2)]] var<uniform> x_11 : buf2;
+@group(0) @binding(2) var<uniform> x_11 : buf2;
 
-[[group(0), binding(1)]] var<uniform> x_13 : buf1;
+@group(0) @binding(1) var<uniform> x_13 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -57,11 +57,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl
index ed5b89a..76a7c6f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined-result-condition-with-always-true/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
@@ -8,17 +8,17 @@
   zero : i32;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+@group(0) @binding(2) var<uniform> x_8 : buf2;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -54,11 +54,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl
index 7418f6e..a213691 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-pow-undefined/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 fn main_1() {
   var a : f32;
@@ -35,11 +35,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl
index c40a4c6..3dc8f01 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-rcp-negative-int/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -29,11 +29,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl
index 04d4193..04e7a73 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reciprocal-var-minus-one/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -29,11 +29,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl
index dad9c78..c72ff22 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-array-replace-extract/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   var x_9 : array<i32, 1>;
@@ -32,11 +32,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl
index 9d61014..af3e4e9 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reduce-load-replace-extract/0-opt.wgsl
@@ -7,7 +7,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -57,11 +57,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl
index 8e1fa65..41448e1 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-register-coalescer-live-intervals-target-instr-info-for-discard-for-discard/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -70,12 +70,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_v1_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_v1);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl
index 149bcab..de85f78 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -75,11 +75,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl
index 708e046..8fcba9c 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-replace-copy-object/0-opt.wgsl
@@ -6,7 +6,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_11 : buf0;
+@group(0) @binding(0) var<uniform> x_11 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -77,11 +77,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl
index d902f3f..25b4aee 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf1;
+@group(0) @binding(0) var<uniform> x_5 : buf1;
 
 fn main_1() {
   let x_22 : i32 = x_5.x_GLF_uniform_int_values[0];
@@ -37,11 +37,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl
index 5fbcdd9..8d05b1d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-after-first-iteration/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
@@ -16,13 +16,13 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
-[[group(0), binding(2)]] var<uniform> x_11 : buf2;
+@group(0) @binding(2) var<uniform> x_11 : buf2;
 
 fn main_1() {
   var i : i32;
@@ -58,12 +58,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl
index 4f29ab6..d1c4406 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-return-partly-undefined-vector-from-array/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+@group(0) @binding(1) var<uniform> x_11 : buf1;
 
 fn func_() -> vec2<f32> {
   var v : vec2<f32>;
@@ -50,11 +50,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl
index 97c49ab..5e613ad 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops-array-access/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 7>;
+type Arr = @stride(16) array<i32, 7>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 3>;
+type Arr_1 = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -218,11 +218,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl
index 3e5c910..5dac995 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-scaled-number-nested-loops/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -179,11 +179,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl
index 2794ec5..7428919 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-schedule-dag-rrlist-mix-log-cos/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 5>;
+type Arr = @stride(16) array<f32, 5>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -44,11 +44,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl
index d74e3c2..b903685 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-assign-back-and-forth/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   var v : vec4<f32>;
@@ -24,11 +24,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl
index b2a778b..5229944 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-inverse-clamp/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -48,11 +48,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl
index 27faee3..776fce0 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-lt-gt/0-opt.wgsl
@@ -2,17 +2,17 @@
   v1 : vec2<f32>;
 };
 
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(1)]] var<uniform> x_5 : buf1;
+@group(0) @binding(1) var<uniform> x_5 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 fn main_1() {
   let x_29 : f32 = x_5.v1.x;
@@ -40,11 +40,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl
index b48fce6..530c5ac 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-selection-dag-same-cond-twice/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   var x_29 : bool;
@@ -28,11 +28,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl
index 8b99a56..a683057 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-output-color-function-call-nested-loop/0.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 6>;
+type Arr = @stride(16) array<i32, 6>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -101,11 +101,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl
index 75a7f4c..133ac57 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-set-vector-cos-fragcoord/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -69,12 +69,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl
index 30873ed..58cee81 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-unused-struct/0-opt.wgsl
@@ -6,7 +6,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -77,11 +77,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl
index 47c21ce..f0082cf 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplification-while-inside-for/0-opt.wgsl
@@ -8,9 +8,9 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 fn main_1() {
   var i : i32;
@@ -51,11 +51,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl
index 3fd60e5..0cf0b49 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-clamp-max-itself/0-opt.wgsl
@@ -2,7 +2,7 @@
   sequence : vec4<i32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -52,11 +52,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl
index 4480579..8100eda 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-combine-compares-max-max-one/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -30,11 +30,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl
index 36eceec..a9510ff 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-component-uniform-idx/0-opt.wgsl
@@ -2,7 +2,7 @@
   two : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -38,11 +38,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl
index 99296b4..0d58bc3 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-div-by-uint-one/0-opt.wgsl
@@ -2,7 +2,7 @@
   two : u32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -20,11 +20,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl
index 98b5b4c..b58a8b9 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-for-bitwise-condition/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -49,11 +49,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl
index 66ce6c9..7c308e3 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-ldexp-exponent-zero/0-opt.wgsl
@@ -2,7 +2,7 @@
   three : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -20,11 +20,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl
index 2336efa..a92ccaf 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-max-multiplied-values/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -86,11 +86,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl
index 2ac7c5e..b5acf65 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-modulo-1/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 1>;
+type Arr_1 = @stride(16) array<i32, 1>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 fn main_1() {
   var a : f32;
@@ -36,11 +36,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl
index a54df57..65a65c4 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-mul-identity/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -24,11 +24,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl
index 8395edad..cd777be 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-not-less-than-neg/0.wgsl
@@ -2,7 +2,7 @@
   three : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -29,12 +29,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl
index 318f16a..68db28f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-right-shift-greater-than-zero/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -25,11 +25,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl
index a903014..6b82628 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-sign-cosh/0.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -26,11 +26,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl
index 2b24d07..648957e 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-simplify-smoothstep-undef/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -44,12 +44,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl
index a3418a9..853116d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sin-mul-mat-mat-mul-vec-mat/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -76,11 +76,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl
index 2e51071..99d7851 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-single-block-elim-self-assign/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> g : i32;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -45,11 +45,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl
index 0814ab2..9875dc8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sinh-ldexp/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 4>;
+type Arr = @stride(16) array<f32, 4>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -58,11 +58,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl
index cc2ab67..878b143 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-ssa-rewrite-case-with-default/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -51,11 +51,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl
index a52a30a..71aaee0 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-step-sinh/0-opt.wgsl
@@ -15,11 +15,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl
index ba81461..5656cd6 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl
@@ -2,7 +2,7 @@
   numbers : array<f32, 3>;
 };
 
-type Arr = [[stride(16)]] array<f32, 5>;
+type Arr = @stride(16) array<f32, 5>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
@@ -16,19 +16,19 @@
   oneVec : vec2<f32>;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
-[[group(0), binding(2)]] var<uniform> x_9 : buf2;
+@group(0) @binding(2) var<uniform> x_9 : buf2;
 
-[[group(0), binding(3)]] var<uniform> x_12 : buf3;
+@group(0) @binding(3) var<uniform> x_12 : buf3;
 
-[[group(0), binding(0)]] var<uniform> x_15 : buf0;
+@group(0) @binding(0) var<uniform> x_15 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -78,11 +78,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl
index 5174f36..be7e4b8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-sum-uniform-vector-components-round/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
@@ -8,19 +8,19 @@
   resolution : vec2<f32>;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+@group(0) @binding(2) var<uniform> x_8 : buf2;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 fn main_1() {
   var f : f32;
@@ -47,11 +47,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl
index 0397e5b..47f7183 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+@group(0) @binding(1) var<uniform> x_11 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -91,11 +91,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl
index 210236b..a95343e 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
@@ -8,7 +8,7 @@
   zero : f32;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
@@ -16,11 +16,11 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_5 : buf1;
+@group(0) @binding(1) var<uniform> x_5 : buf1;
 
-[[group(0), binding(2)]] var<uniform> x_7 : buf2;
+@group(0) @binding(2) var<uniform> x_7 : buf2;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 fn main_1() {
   var i : i32;
@@ -84,11 +84,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl
index c1757e6..496f779 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-dfdx-cos/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -27,12 +27,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl
index 0ee891d..0f1c0bb 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-target-lowering-inst-combine-compares-struct-array-clamp-function-cal/0-opt.wgsl
@@ -6,15 +6,15 @@
   v1 : vec2<f32>;
 };
 
-type Arr = [[stride(16)]] array<i32, 5>;
+type Arr = @stride(16) array<i32, 5>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -153,11 +153,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl
index 891a913..49874e8 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-transpose-multiply/0-opt.wgsl
@@ -18,11 +18,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl
index d2a1597..a0ae7b1 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
@@ -12,11 +12,11 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_7 : buf1;
+@group(0) @binding(1) var<uniform> x_7 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 fn main_1() {
   var f : f32;
@@ -40,12 +40,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl
index cb2e891..7e44271 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-types-return-in-main-never-hit/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   var x_24 : vec4<f32>;
@@ -19,11 +19,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl
index 97b93bc..f73e0ea 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-undefined-inversesqrt-reflect/0-opt.wgsl
@@ -1,4 +1,4 @@
-type Arr = [[stride(16)]] array<f32, 1>;
+type Arr = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr;
@@ -8,9 +8,9 @@
   v1 : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -46,11 +46,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl
index 8691174..a2cb24f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-uninitialized-values-passed-to-function-never-executed/0-opt.wgsl
@@ -2,13 +2,13 @@
   data : i32;
 };
 
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -85,11 +85,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl
index ce444a3..2255ea4 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unpack-unorm-mix-always-one/0-opt.wgsl
@@ -1,26 +1,26 @@
-type Arr = [[stride(16)]] array<u32, 1>;
+type Arr = @stride(16) array<u32, 1>;
 
 struct buf0 {
   x_GLF_uniform_uint_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 2>;
+type Arr_1 = @stride(16) array<i32, 2>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-type Arr_2 = [[stride(16)]] array<f32, 3>;
+type Arr_2 = @stride(16) array<f32, 3>;
 
 struct buf2 {
   x_GLF_uniform_float_values : Arr_2;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
-[[group(0), binding(2)]] var<uniform> x_10 : buf2;
+@group(0) @binding(2) var<uniform> x_10 : buf2;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -51,11 +51,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl
index b2e8650..eb55b50 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -84,11 +84,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl
index f99a3bc..a353c90 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf1 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf0 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -83,11 +83,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl
index 4aa9d43..f74488d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-val-cfg-case-fallthrough/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -31,11 +31,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl
index 00262c5..b301222 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-inst-combine-select-value-tracking-flip-bits/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 3>;
+type Arr = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -51,11 +51,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl
index 4c3b34b..18e91bc 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-apint-inst-combine-simplify-one-mod-loop-iterator/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -52,11 +52,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl
index 36afb2f..d5df523 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-inclusive-or/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 fn main_1() {
   var a : i32;
@@ -35,11 +35,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl
index c80f332..5cd4d7e 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-known-nonzero/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 4>;
+type Arr = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -55,11 +55,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl
index 240d9d9..d54fa3d 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-max-uintbitstofloat/0-opt.wgsl
@@ -1,28 +1,28 @@
-type Arr = [[stride(16)]] array<u32, 1>;
+type Arr = @stride(16) array<u32, 1>;
 
 struct buf2 {
   x_GLF_uniform_uint_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-type Arr_2 = [[stride(16)]] array<i32, 2>;
+type Arr_2 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_2;
 };
 
-[[group(0), binding(2)]] var<uniform> x_6 : buf2;
+@group(0) @binding(2) var<uniform> x_6 : buf2;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 fn main_1() {
   var f : f32;
@@ -45,11 +45,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl
index 2c1e642..6e1e0ba 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-selection-dag-negation-clamp-loop/0-opt.wgsl
@@ -1,10 +1,10 @@
-type Arr = [[stride(16)]] array<i32, 16>;
+type Arr = @stride(16) array<i32, 16>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -149,11 +149,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl
index da47422..22314e6 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-value-tracking-uniform-incident/0-opt.wgsl
@@ -2,7 +2,7 @@
   quarter : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -29,11 +29,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl
index 941df15..50fc802 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-inc-unused-comp/0-opt.wgsl
@@ -2,7 +2,7 @@
   zero : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -27,11 +27,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl
index 5be7339..d431a77 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl
@@ -18,11 +18,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl
index 2cecb75..d7062ee 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-vector-log2-cosh/0-opt.wgsl
@@ -14,11 +14,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl
index c5a9449..85f68d3 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 2>;
+type Arr = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 3>;
+type Arr_1 = @stride(16) array<i32, 3>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -55,11 +55,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl
index 9a7681c..007b027 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-apfloat-nan-cos-cos/0-opt.wgsl
@@ -1,20 +1,20 @@
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 2>;
+type Arr_1 = @stride(16) array<f32, 2>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_8 : buf1;
+@group(0) @binding(1) var<uniform> x_8 : buf1;
 
 fn main_1() {
   var v1 : vec2<f32>;
@@ -50,11 +50,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl
index f3f84a4..549b310 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-machine-value-type-uint-to-float/0-opt.wgsl
@@ -1,28 +1,28 @@
-type Arr = [[stride(16)]] array<u32, 2>;
+type Arr = @stride(16) array<u32, 2>;
 
 struct buf1 {
   x_GLF_uniform_uint_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<f32, 1>;
+type Arr_1 = @stride(16) array<f32, 1>;
 
 struct buf2 {
   x_GLF_uniform_float_values : Arr_1;
 };
 
-type Arr_2 = [[stride(16)]] array<i32, 2>;
+type Arr_2 = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_2;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(2)]] var<uniform> x_8 : buf2;
+@group(0) @binding(2) var<uniform> x_8 : buf2;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_12 : buf0;
+@group(0) @binding(0) var<uniform> x_12 : buf0;
 
 fn main_1() {
   var a : u32;
@@ -51,11 +51,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl
index 814eae3..854255f 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(16)]] array<f32, 3>;
+type Arr = @stride(16) array<f32, 3>;
 
 struct buf1 {
   x_GLF_uniform_float_values : Arr;
 };
 
-type Arr_1 = [[stride(16)]] array<i32, 4>;
+type Arr_1 = @stride(16) array<i32, 4>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr_1;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -103,11 +103,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl
index 8551242..4440fe2 100644
--- a/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-selection-dag-struct-array-clamp-index/0-opt.wgsl
@@ -4,13 +4,13 @@
   c : i32;
 };
 
-type Arr = [[stride(16)]] array<i32, 2>;
+type Arr = @stride(16) array<i32, 2>;
 
 struct buf0 {
   x_GLF_uniform_int_values : Arr;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -52,11 +52,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl
index d154e28..54c80fc 100644
--- a/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -87,12 +87,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl
index 765114d..6f1e3d1 100644
--- a/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/dead-barriers-in-loops/0-opt.wgsl
@@ -6,9 +6,9 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<storage, read_write> x_4 : theSSBO;
+@group(0) @binding(0) var<storage, read_write> x_4 : theSSBO;
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
 fn main_1() {
   var i : i32;
@@ -101,7 +101,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl
index c416382..8a5dbfb 100644
--- a/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/disc-and-add-in-func-in-loop/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -65,11 +65,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl
index 549895b..0be3eee 100644
--- a/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/discard-continue-return/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -44,12 +44,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl
index 6981641..d043efa 100644
--- a/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-array-manipulating-loop/0-opt.wgsl
@@ -32,12 +32,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl
index 8ff5ce8..724ac94 100644
--- a/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop-in-function/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -39,12 +39,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl
index 83948ce..12ab32e 100644
--- a/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/discard-in-loop/0-opt.wgsl
@@ -50,12 +50,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl
index 926c273..8d86b693 100644
--- a/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/discards-in-control-flow/0-opt.wgsl
@@ -33,12 +33,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl
index c2fa551..e826d0a 100644
--- a/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-false-loops/0-opt.wgsl
@@ -43,11 +43,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl
index 45e2a65..9784c8bd 100644
--- a/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-if-return/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -64,11 +64,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl
index 2c077a3f..60ed7c9 100644
--- a/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/do-while-loop-in-conditionals/0-opt.wgsl
@@ -24,12 +24,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl
index 82a7bae..1267e46 100644
--- a/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl
@@ -2,7 +2,7 @@
   out_data : i32;
 };
 
-[[group(0), binding(0)]] var<storage, read_write> x_4 : theSSBO;
+@group(0) @binding(0) var<storage, read_write> x_4 : theSSBO;
 
 fn main_1() {
   var x_30 : mat2x2<f32>;
@@ -37,7 +37,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl
index c02f2ce..b468753 100644
--- a/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/flag-always-false-if/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -73,12 +73,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl
index 3817d55..bf208d3 100644
--- a/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/for-condition-always-false/0-opt.wgsl
@@ -31,11 +31,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(color);
diff --git a/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl
index 1478c3b..f8bd3f3 100644
--- a/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/for-loop-with-return/0.wgsl
@@ -17,11 +17,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl
index 869d8a9..0eff67b 100644
--- a/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/for-with-ifs-and-return/0-opt.wgsl
@@ -31,12 +31,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl
index 64ef616..1eefb0f 100644
--- a/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/frag-coord-func-call-and-ifs/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -77,12 +77,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl
index 2fffb92..2285d25 100644
--- a/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -50,12 +50,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl
index 999c03a..b57810b 100644
--- a/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/global-array-loops/0-opt.wgsl
@@ -2,7 +2,7 @@
   one : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -139,11 +139,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl
index 7948d49..58d409d 100644
--- a/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/if-and-switch/0.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -37,11 +37,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl
index 944e589..751210a 100644
--- a/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -261,12 +261,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl
index 8d4edc0..b98eed5 100644
--- a/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/injection-switch-as-comparison/0.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -100,11 +100,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl
index 132e8f0..10bf29a 100644
--- a/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/int-mat2-struct/0-opt.wgsl
@@ -34,12 +34,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl
index 2002e51..c8a6e22 100644
--- a/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/loop-dead-if-loop/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -73,11 +73,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl
index b8234b5..f4302e5 100644
--- a/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/loop-nested-ifs/0-opt.wgsl
@@ -37,11 +37,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl
index eb27e35..14c39b0 100644
--- a/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl
@@ -6,7 +6,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -80,11 +80,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl
index ee6e11e..b582c1b 100644
--- a/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/matrices-and-return-in-loop/0.wgsl
@@ -25,12 +25,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl
index 03312ac..235bcc2 100644
--- a/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/max-mix-conditional-discard/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> gv : vec4<f32>;
 
@@ -28,11 +28,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl
index 99c613e..7dbb3e0 100644
--- a/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/mix-floor-add/0-opt.wgsl
@@ -11,11 +11,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl
index a1058d6..599f7fb 100644
--- a/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -61,12 +61,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl
index f37535c..e5ed27a 100644
--- a/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.wgsl
@@ -31,12 +31,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl
index 515f38a..ae18c57 100644
--- a/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/nested-ifs-and-return-in-for-loop/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   var i : i32;
@@ -34,11 +34,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl
index 1921a1c..0f6d9e5 100644
--- a/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/nested-loops-switch/0.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -109,11 +109,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl
index ac98e18..a1432ca 100644
--- a/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/nested-switch-break-discard/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -36,12 +36,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl
index 3a6e54e..428f9a3 100644
--- a/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/one-sized-array/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   var x_10 : array<i32, 1>;
@@ -37,11 +37,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl
index c9c712e..610bced 100644
--- a/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/return-float-from-while-loop/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -43,12 +43,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl
index 8e2cc4c..f16375f 100644
--- a/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/return-in-loop-in-function/0-opt.wgsl
@@ -49,11 +49,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl
index def4326..3be5acb 100644
--- a/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/return-inside-loop-in-function/0.wgsl
@@ -63,11 +63,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl
index dc15751..39c139e 100644
--- a/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/returned-boolean-in-vector/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -101,11 +101,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl
index ff67040..96f0064 100644
--- a/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/set-color-in-one-iteration-while-loop/0.wgsl
@@ -6,7 +6,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   loop {
@@ -89,12 +89,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl
index 6af14a0..077959b 100644
--- a/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> gv : f32;
 
@@ -66,12 +66,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl
index 3f8d86d..23403a2 100644
--- a/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/smoothstep-after-loop/0-opt.wgsl
@@ -21,11 +21,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl
index df653e8..f45ccdd 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-access-chains/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> map : array<i32, 256>;
 
@@ -335,12 +335,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl
index 532521f..fd017fb 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/0.wgsl
@@ -2,7 +2,7 @@
   resolution : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -184,12 +184,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl
index ec923c0..8ab78ee 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite-phi/1.wgsl
@@ -2,7 +2,7 @@
   resolution : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -189,12 +189,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl
index 2081172..bbc0147 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -43,12 +43,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl
index f104dd3..eace056 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composite2/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -44,12 +44,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl
index 57ef309..e9cce2e 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -81,12 +81,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl
index 57c0006..0ee298a 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-composites/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -86,12 +86,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl
index 8400b67..b09ced5 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-dead-break-and-unroll/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> map : array<i32, 256>;
 
@@ -344,12 +344,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl
index 4d73d20..3d8680e 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_20 : buf0;
+@group(0) @binding(0) var<uniform> x_20 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -100,12 +100,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl
index 1d54a26..1deee30 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-declare-bvec4/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_20 : buf0;
+@group(0) @binding(0) var<uniform> x_20 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -101,12 +101,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl
index e41e03c..12607ba 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/0-opt.wgsl
@@ -10,13 +10,13 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_32 : buf1;
+@group(0) @binding(1) var<uniform> x_32 : buf1;
 
 fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
   var k : i32;
@@ -299,12 +299,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl
index 39cf669..2e55508 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block/1.wgsl
@@ -10,13 +10,13 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_32 : buf1;
+@group(0) @binding(1) var<uniform> x_32 : buf1;
 
 fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
   var k : i32;
@@ -303,12 +303,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl
index 7899f1b..2a098b03 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/0.wgsl
@@ -8,9 +8,9 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -106,12 +106,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl
index 6d8202a..78974c6 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block2/1.wgsl
@@ -8,9 +8,9 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -106,12 +106,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl
index 03f5d4a..c38f746 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-double-branch-to-same-block3/1.wgsl
@@ -10,13 +10,13 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_32 : buf1;
+@group(0) @binding(1) var<uniform> x_32 : buf1;
 
 fn merge_i1_i1_i1_(from : ptr<function, i32>, mid : ptr<function, i32>, to : ptr<function, i32>) {
   var k : i32;
@@ -303,12 +303,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl
index 0c19b19..333d424 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl
@@ -644,11 +644,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl
index 62fb33d..f8056fa 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-null-in-phi-and-unroll/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -84,12 +84,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl
index 913b37e..016470f 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -47,12 +47,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl
index 8954930..310e34e 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bifurcation-Os-mutate-var-vector-shuffle/2.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -44,12 +44,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl
index 6ee1e3f..e666f6f 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/0.wgsl
@@ -8,9 +8,9 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+@group(0) @binding(0) var<uniform> x_13 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -126,12 +126,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl
index ce2fc53..9564b95 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-bubblesort-flag-complex-conditionals/1.wgsl
@@ -8,9 +8,9 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf1;
+@group(0) @binding(1) var<uniform> x_9 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+@group(0) @binding(0) var<uniform> x_13 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -183,12 +183,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl
index 502e8b7..dba5558 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -50,12 +50,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl
index 0f6f3db..188c3b9 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-collatz-O-mutate-composite-construct-extract/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -57,12 +57,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl
index 3626dd3..a57be40 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-colorgrid-modulo-O-move-block-down/1.wgsl
@@ -2,7 +2,7 @@
   resolution : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -184,12 +184,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl
index a2c109a..f652923 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> map : array<i32, 256>;
 
@@ -379,12 +379,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl
index 1012c1f..26ad9ba 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/2.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> map : array<i32, 256>;
 
@@ -341,12 +341,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl
index 633a6d5..322b118 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/1.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -328,12 +328,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl
index bafcb6da..b480a86 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-O-prop-up-mutate-var/2.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -325,12 +325,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl
index 5b0e2fe..066c0ac 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/0.wgsl
@@ -6,7 +6,7 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -293,12 +293,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl
index 2f33bdb..a61c509 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-dead-code/1.wgsl
@@ -6,7 +6,7 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -308,12 +308,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl
index f9628e7..c1fb481 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/1.wgsl
@@ -6,7 +6,7 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -401,12 +401,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl
index 1007714..4b36bd5 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-flatten-selection-dead-continues/2-opt.wgsl
@@ -6,7 +6,7 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -400,12 +400,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl
index c2695fb..8c64b73 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/1.wgsl
@@ -6,7 +6,7 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -291,12 +291,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl
index 90086b8..ac0f111 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-mergesort-func-inline-mutate-var/2.wgsl
@@ -6,7 +6,7 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -288,12 +288,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl
index 6c17b27..66ff6af 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -92,12 +92,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl
index 6821821..7f55dec 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-O-mutate-variable/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -95,12 +95,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl
index 6afaa07..49dd9ad 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -92,12 +92,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl
index 12209a3..a7bed31 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -96,12 +96,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl
index a28de2c..4f2ceb5 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-orbit-Os-access-chain-mutate-pointer/2.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -93,12 +93,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl
index af34df2..67a46a0 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -93,12 +93,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl
index fdca5df..6bceeee 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-O-op-select-to-op-phi/2.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -86,12 +86,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl
index de4a473..ddb4094 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+@group(0) @binding(0) var<uniform> x_13 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -71,12 +71,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl
index 8ec24b1..9300937 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-pillars-volatile-nontemporal-store/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+@group(0) @binding(0) var<uniform> x_13 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -77,12 +77,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl
index bb41ccf..339dc23 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-dontinline/0-opt.wgsl
@@ -10,7 +10,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_32 : buf0;
+@group(0) @binding(0) var<uniform> x_32 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -243,12 +243,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl
index 843a743..e30253e 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-quicksort-mat-func-param/1.wgsl
@@ -10,7 +10,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_32 : buf0;
+@group(0) @binding(0) var<uniform> x_32 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -243,12 +243,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl
index 9c26329..45b69b1 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -90,12 +90,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl
index 2f0c558..31783ae 100644
--- a/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/spv-stable-rects-Os-mutate-var-push-through-var/2.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -87,12 +87,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl
index 76d569e..fb898a5 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl
@@ -642,11 +642,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl
index dcb31b3..5e42687 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/1.wgsl
@@ -8,7 +8,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -964,12 +964,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl
index 0016d4c..fa23bb3 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl
@@ -253,11 +253,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl
index 4d268f6..a546ac5 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl
@@ -265,12 +265,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl
index 1f17892..571ad7a 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-nested-if-and-conditional/1.wgsl
@@ -10,7 +10,7 @@
 
 var<private> tree_1 : array<BST, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_16 : buf0;
+@group(0) @binding(0) var<uniform> x_16 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -281,11 +281,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl
index 19d6c9d..495c99b 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl
@@ -253,11 +253,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl
index 80872f4..3831d37 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl
@@ -16,7 +16,7 @@
 
 var<private> tree : array<BST, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_50 : buf0;
+@group(0) @binding(0) var<uniform> x_50 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -307,11 +307,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl
index e1656b7..1eb7ba1 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-collatz-push-constant-with-nested-min-max/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -55,12 +55,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl
index eaaaea2..9c0e908 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-double-always-false-discard/1.wgsl
@@ -6,9 +6,9 @@
   resolution : vec2<f32>;
 };
 
-[[group(0), binding(1)]] var<uniform> x_6 : buf1;
+@group(0) @binding(1) var<uniform> x_6 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -205,12 +205,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl
index b30f116..c51aa77 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-float-mat-determinant-clamp/0.wgsl
@@ -2,7 +2,7 @@
   resolution : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+@group(0) @binding(0) var<uniform> x_13 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -103,12 +103,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl
index 7520419..c089d3b 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-injected-conditional-true/1.wgsl
@@ -6,13 +6,13 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+@group(0) @binding(0) var<uniform> x_13 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_20 : buf1;
+@group(0) @binding(1) var<uniform> x_20 : buf1;
 
 fn compute_value_f1_f1_(limit : ptr<function, f32>, thirty_two : ptr<function, f32>) -> f32 {
   var result : f32;
@@ -119,12 +119,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl
index 848cfcd..f0d8b20 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/0-opt.wgsl
@@ -2,7 +2,7 @@
   resolution : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -106,12 +106,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl
index 046ec18..c1ee8ba 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-divided-1/1.wgsl
@@ -6,11 +6,11 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_16 : buf1;
+@group(0) @binding(1) var<uniform> x_16 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -120,12 +120,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl
index f3cb6eb..c97f756 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-true-conditional-simple-loop/1.wgsl
@@ -6,11 +6,11 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+@group(0) @binding(0) var<uniform> x_13 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_19 : buf1;
+@group(0) @binding(1) var<uniform> x_19 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -135,12 +135,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl
index 3bafe44..ebbb314 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl
@@ -2,7 +2,7 @@
   resolution : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_13 : buf0;
+@group(0) @binding(0) var<uniform> x_13 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -108,12 +108,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl
index eca86f4..5fd4664 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-clamped-conditional-bit-shift/1.wgsl
@@ -8,7 +8,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+@group(0) @binding(0) var<uniform> x_34 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -327,12 +327,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl
index 30d100d..f58028b 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-for-always-false-if-discard/1.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -331,12 +331,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl
index 13e6965..b471144 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-mergesort-reversed-for-loop/1.wgsl
@@ -6,7 +6,7 @@
 
 var<private> temp : array<i32, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_28 : buf0;
+@group(0) @binding(0) var<uniform> x_28 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -303,12 +303,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl
index a800ba9..d6dc1aea 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl
@@ -10,7 +10,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+@group(0) @binding(0) var<uniform> x_34 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -267,12 +267,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl
index c3d31af..cf9871e 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl
@@ -12,7 +12,7 @@
 
 var<private> x_GLF_pos : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+@group(0) @binding(0) var<uniform> x_34 : buf0;
 
 var<private> frag_color : vec4<f32>;
 
@@ -249,14 +249,14 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   frag_color_1 : vec4<f32>;
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) x_GLF_pos_param : vec4<f32>) -> main_out {
   x_GLF_pos = x_GLF_pos_param;
   main_1();
   return main_out(frag_color, gl_Position);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl
index b7d3ed1..99980d9 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/1.wgsl
@@ -9,12 +9,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[location(0)]] frag_color_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@location(0) frag_color_param : vec4<f32>) -> main_out {
   frag_color = frag_color_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl
index 7a24166..71d617e 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl
@@ -16,9 +16,9 @@
 
 var<private> x_GLF_pos : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_33 : buf0;
+@group(0) @binding(0) var<uniform> x_33 : buf0;
 
-[[group(0), binding(1)]] var<uniform> x_36 : buf1;
+@group(0) @binding(1) var<uniform> x_36 : buf1;
 
 var<private> frag_color : vec4<f32>;
 
@@ -260,14 +260,14 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   frag_color_1 : vec4<f32>;
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) x_GLF_pos_param : vec4<f32>) -> main_out {
   x_GLF_pos = x_GLF_pos_param;
   main_1();
   return main_out(frag_color, gl_Position);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl
index a6b6c61..877d1cb 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl
@@ -12,7 +12,7 @@
 
 var<private> x_GLF_pos : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+@group(0) @binding(0) var<uniform> x_34 : buf0;
 
 var<private> frag_color : vec4<f32>;
 
@@ -247,14 +247,14 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   frag_color_1 : vec4<f32>;
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) x_GLF_pos_param : vec4<f32>) -> main_out {
   x_GLF_pos = x_GLF_pos_param;
   main_1();
   return main_out(frag_color, gl_Position);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl
index 89fc186..ad578ea 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl
@@ -12,7 +12,7 @@
 
 var<private> x_GLF_pos : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_34 : buf0;
+@group(0) @binding(0) var<uniform> x_34 : buf0;
 
 var<private> frag_color : vec4<f32>;
 
@@ -253,14 +253,14 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   frag_color_1 : vec4<f32>;
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) x_GLF_pos_param : vec4<f32>) -> main_out {
   x_GLF_pos = x_GLF_pos_param;
   main_1();
   return main_out(frag_color, gl_Position);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl
index 8f8de06..fe18daa 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-quicksort-max-value-as-index/2-opt.wgsl
@@ -16,9 +16,9 @@
 
 var<private> x_GLF_pos : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_34 : buf1;
+@group(0) @binding(1) var<uniform> x_34 : buf1;
 
-[[group(0), binding(0)]] var<uniform> x_37 : buf0;
+@group(0) @binding(0) var<uniform> x_37 : buf0;
 
 var<private> frag_color : vec4<f32>;
 
@@ -258,14 +258,14 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   frag_color_1 : vec4<f32>;
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] x_GLF_pos_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) x_GLF_pos_param : vec4<f32>) -> main_out {
   x_GLF_pos = x_GLF_pos_param;
   main_1();
   return main_out(frag_color, gl_Position);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl
index 518cf6b..448c4ce 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-rects-vec4-clamp-conditional-min-mix/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_20 : buf0;
+@group(0) @binding(0) var<uniform> x_20 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -113,12 +113,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl
index 697b608..c2deab3 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-array-nested-loop/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_24 : buf0;
+@group(0) @binding(0) var<uniform> x_24 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -130,12 +130,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl
index 357f622..6aa6b53 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_24 : buf0;
+@group(0) @binding(0) var<uniform> x_24 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -121,12 +121,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl
index 048a25e..2c60f19 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-clamp-conditional-mix/1.wgsl
@@ -2,7 +2,7 @@
   resolution : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_15 : buf0;
+@group(0) @binding(0) var<uniform> x_15 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -150,12 +150,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl
index 12eb944..1f81ee1 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-conditional-clamped-float/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_24 : buf0;
+@group(0) @binding(0) var<uniform> x_24 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -121,12 +121,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl
index 6b3a7b0..7ba773c 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_17 : buf0;
+@group(0) @binding(0) var<uniform> x_17 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -115,12 +115,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl
index acb40bf..a3eecf8 100644
--- a/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/stable-triangle-nested-for-loop-and-true-if/1.wgsl
@@ -6,13 +6,13 @@
   resolution : vec2<f32>;
 };
 
-[[group(0), binding(1)]] var<uniform> x_11 : buf1;
+@group(0) @binding(1) var<uniform> x_11 : buf1;
 
 var<private> x_GLF_color : vec4<f32>;
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_19 : buf0;
+@group(0) @binding(0) var<uniform> x_19 : buf0;
 
 fn pointInTriangle_vf2_vf2_vf2_vf2_(p : ptr<function, vec2<f32>>, a : ptr<function, vec2<f32>>, b : ptr<function, vec2<f32>>, c : ptr<function, vec2<f32>>) -> i32 {
   var x_78 : f32;
@@ -159,12 +159,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl
index f28293a..5540bb1 100644
--- a/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/struct-array-index/0.wgsl
@@ -10,7 +10,7 @@
 
 var<private> struct_array : array<struct_base, 3>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -39,11 +39,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl
index a46cd46..646af01 100644
--- a/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/struct-controlled-loop/0-opt.wgsl
@@ -7,7 +7,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -40,11 +40,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl
index 0ea59c0..703abb7 100644
--- a/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/struct-used-as-temporary/0-opt.wgsl
@@ -8,7 +8,7 @@
 
 var<private> x_3 : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : S;
+@group(0) @binding(0) var<uniform> x_5 : S;
 
 fn main_1() {
   let x_20 : vec4<f32> = x_5.field0;
@@ -20,11 +20,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_3_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_3);
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl
index 1fe3437..148481e 100644
--- a/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/switch-if-discard/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -24,11 +24,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl
index 027c6a7..121453e 100644
--- a/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/switch-inside-while-always-return/0-opt.wgsl
@@ -2,7 +2,7 @@
   zero : f32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -43,11 +43,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl
index a458da5..893499c 100644
--- a/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/switch-loop-switch-if/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -62,11 +62,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl
index cdab78b..95517da 100644
--- a/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-empty-if-false/0.wgsl
@@ -14,11 +14,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl
index 7c355bb..718f257 100644
--- a/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/switch-with-fall-through-cases/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -62,11 +62,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl
index cf0d932..6199c0e 100644
--- a/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/transpose-rectangular-matrix/0.wgsl
@@ -29,12 +29,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl
index d9ba1c9..f5a69b7 100644
--- a/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/two-2-iteration-loops/0-opt.wgsl
@@ -6,7 +6,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 fn main_1() {
   var odd_index : i32;
@@ -97,12 +97,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl
index 73c71d0..3588452 100644
--- a/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct doesNotMatter {
   x_compute_data : RTArr;
@@ -10,9 +10,9 @@
 
 var<private> GLF_live2gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(1)]] var<uniform> x_9 : buf0;
+@group(0) @binding(1) var<uniform> x_9 : buf0;
 
-[[group(0), binding(0)]] var<storage, read_write> x_12 : doesNotMatter;
+@group(0) @binding(0) var<storage, read_write> x_12 : doesNotMatter;
 
 fn main_1() {
   var GLF_live2_looplimiter1 : i32;
@@ -91,7 +91,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 18, 6)]]
+@stage(compute) @workgroup_size(1, 18, 6)
 fn main() {
   main_1();
 }
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl
index 3177b79..e307b1e 100644
--- a/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl
@@ -2,7 +2,7 @@
   matrix_a_uni : mat4x4<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_8 : buf0;
+@group(0) @binding(0) var<uniform> x_8 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -57,11 +57,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl
index 027fc0f..c2ae08c 100644
--- a/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-set-struct/0.wgsl
@@ -7,7 +7,7 @@
   bbbb : vec4<bool>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -67,11 +67,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl
index a5541a2..6fd343d 100644
--- a/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/two-loops-with-break/0-opt.wgsl
@@ -56,11 +56,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl
index b68fb06..fff1f46 100644
--- a/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-do-whiles/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -80,12 +80,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl
index 21c6a7b..e38b6c6 100644
--- a/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl
@@ -1,10 +1,10 @@
-type RTArr = [[stride(4)]] array<f32>;
+type RTArr = @stride(4) array<f32>;
 
 struct doesNotMatter {
   x_compute_data : RTArr;
 };
 
-[[group(0), binding(0)]] var<storage, read_write> x_9 : doesNotMatter;
+@group(0) @binding(0) var<storage, read_write> x_9 : doesNotMatter;
 
 fn nb_mod_() -> f32 {
   var s : f32;
@@ -55,7 +55,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl
index 2124377..4ac1a23 100644
--- a/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   var GLF_dead6index : i32;
@@ -30,11 +30,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl
index b6321d8..e684e37 100644
--- a/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/undefined-integer-in-function/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn performPartition_() -> i32 {
   var GLF_live0i : i32;
@@ -60,11 +60,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl
index dd73656..91df442 100644
--- a/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/uninit-element-cast-in-loop/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -32,11 +32,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl
index 3b84978..fbd4862 100644
--- a/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/uninitialized-var-decrement-and-add/0-opt.wgsl
@@ -22,12 +22,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl
index aed1aee..5df2899 100644
--- a/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl
@@ -6,7 +6,7 @@
   resolution : vec2<f32>;
 };
 
-type RTArr = [[stride(4)]] array<i32>;
+type RTArr = @stride(4) array<i32>;
 
 struct doesNotMatter {
   x_compute_data : RTArr;
@@ -14,11 +14,11 @@
 
 var<private> gl_GlobalInvocationID : vec3<u32>;
 
-[[group(0), binding(1)]] var<uniform> x_10 : buf1;
+@group(0) @binding(1) var<uniform> x_10 : buf1;
 
-[[group(0), binding(2)]] var<uniform> x_13 : buf2;
+@group(0) @binding(2) var<uniform> x_13 : buf2;
 
-[[group(0), binding(0)]] var<storage, read_write> x_15 : doesNotMatter;
+@group(0) @binding(0) var<storage, read_write> x_15 : doesNotMatter;
 
 fn main_1() {
   var A : array<f32, 1>;
@@ -135,8 +135,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] gl_GlobalInvocationID_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) gl_GlobalInvocationID_param : vec3<u32>) {
   gl_GlobalInvocationID = gl_GlobalInvocationID_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl
index a7740fe..f448ed4 100644
--- a/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-continue-statement/0.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 fn computeColor_() -> vec3<f32> {
   var x_injected_loop_counter : i32;
@@ -32,11 +32,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl
index 54af3d3..d4b87d8 100644
--- a/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-discard-statement-in-if/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_7 : buf0;
+@group(0) @binding(0) var<uniform> x_7 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -35,12 +35,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl
index 473428a..6c95054 100644
--- a/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops-in-switch/0.wgsl
@@ -52,11 +52,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl
index e6da47e..2fc3c26 100644
--- a/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_5 : buf0;
+@group(0) @binding(0) var<uniform> x_5 : buf0;
 
 fn main_1() {
   var m : i32;
@@ -34,11 +34,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl
index 005fa19..4fbd06f 100644
--- a/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-return-in-loop/0.wgsl
@@ -38,11 +38,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl
index bd4cfad..2606dcd 100644
--- a/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/uv-value-comparison-as-boolean/0.wgsl
@@ -37,11 +37,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl
index 3761ab1..e5dac5c 100644
--- a/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/vector-values-multiplied-by-fragcoord/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> gl_FragCoord : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_10 : buf0;
+@group(0) @binding(0) var<uniform> x_10 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -99,12 +99,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl
index 3461a66..83ac163 100644
--- a/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/vectors-and-discard-in-function/0.wgsl
@@ -29,11 +29,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl
index 9770d45..1cb22a3 100644
--- a/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/while-function-always-false/0-opt.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_GLF_color : vec4<f32>;
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 fn main_1() {
   var j : i32;
@@ -35,11 +35,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl
index ad7b1a1..1aded6e 100644
--- a/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl
@@ -2,7 +2,7 @@
   injected : i32;
 };
 
-[[group(0), binding(0)]] var<uniform> x_9 : buf0;
+@group(0) @binding(0) var<uniform> x_9 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -94,11 +94,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl
index 086a895..b0aa989 100644
--- a/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl
@@ -15,7 +15,7 @@
 
 var<private> tree_1 : array<BST, 10>;
 
-[[group(0), binding(0)]] var<uniform> x_27 : buf0;
+@group(0) @binding(0) var<uniform> x_27 : buf0;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -407,12 +407,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl
index dd18573..dbb226a 100644
--- a/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/write-red-in-loop-nest/0-opt.wgsl
@@ -87,11 +87,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl
index aabebad..acfcdf2 100644
--- a/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl
+++ b/test/vk-gl-cts/graphicsfuzz/wrong-color-in-always-false-if/0-opt.wgsl
@@ -2,7 +2,7 @@
   injectionSwitch : vec2<f32>;
 };
 
-[[group(0), binding(0)]] var<uniform> x_6 : buf0;
+@group(0) @binding(0) var<uniform> x_6 : buf0;
 
 var<private> x_GLF_color : vec4<f32>;
 
@@ -19,11 +19,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_GLF_color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(x_GLF_color);
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl
index ef817f7..6b386e9 100644
--- a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(4)]] array<i32, 8>;
+type Arr = @stride(4) array<i32, 8>;
 
 struct In2 {
   data_in2 : Arr;
 };
 
-type Arr_1 = [[stride(4)]] array<i32, 1024>;
+type Arr_1 = @stride(4) array<i32, 1024>;
 
 struct Out0 {
   data_out0 : Arr_1;
 };
 
-type Arr_2 = [[stride(4)]] array<i32, 512>;
+type Arr_2 = @stride(4) array<i32, 512>;
 
-type Arr_3 = [[stride(4)]] array<i32, 512>;
+type Arr_3 = @stride(4) array<i32, 512>;
 
 struct In1 {
   data_in1 : Arr_3;
@@ -24,13 +24,13 @@
 
 var<private> gl_WorkGroupID : vec3<u32>;
 
-[[group(0), binding(2)]] var<storage, read> x_13 : In2;
+@group(0) @binding(2) var<storage, read> x_13 : In2;
 
-[[group(0), binding(3)]] var<storage, read_write> x_15 : Out0;
+@group(0) @binding(3) var<storage, read_write> x_15 : Out0;
 
-[[group(0), binding(1)]] var<storage, read> x_17 : In1;
+@group(0) @binding(1) var<storage, read> x_17 : In1;
 
-[[group(0), binding(0)]] var<storage, read> x_19 : In0;
+@group(0) @binding(0) var<storage, read> x_19 : In0;
 
 fn main_1() {
   var base_index_in : u32;
@@ -109,8 +109,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(4, 1, 1)]]
-fn main([[builtin(workgroup_id)]] gl_WorkGroupID_param : vec3<u32>) {
+@stage(compute) @workgroup_size(4, 1, 1)
+fn main(@builtin(workgroup_id) gl_WorkGroupID_param : vec3<u32>) {
   gl_WorkGroupID = gl_WorkGroupID_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl
index 7665283..646cf0f 100644
--- a/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl
+++ b/test/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl
@@ -1,18 +1,18 @@
-type Arr = [[stride(4)]] array<i32, 8>;
+type Arr = @stride(4) array<i32, 8>;
 
 struct In2 {
   data_in2 : Arr;
 };
 
-type Arr_1 = [[stride(4)]] array<i32, 1024>;
+type Arr_1 = @stride(4) array<i32, 1024>;
 
 struct Out0 {
   data_out0 : Arr_1;
 };
 
-type Arr_2 = [[stride(4)]] array<i32, 512>;
+type Arr_2 = @stride(4) array<i32, 512>;
 
-type Arr_3 = [[stride(4)]] array<i32, 512>;
+type Arr_3 = @stride(4) array<i32, 512>;
 
 struct In0 {
   data_in0 : Arr_3;
@@ -24,13 +24,13 @@
 
 var<private> gl_WorkGroupID : vec3<u32>;
 
-[[group(0), binding(2)]] var<storage, read> x_13 : In2;
+@group(0) @binding(2) var<storage, read> x_13 : In2;
 
-[[group(0), binding(3)]] var<storage, read_write> x_15 : Out0;
+@group(0) @binding(3) var<storage, read_write> x_15 : Out0;
 
-[[group(0), binding(0)]] var<storage, read> x_17 : In0;
+@group(0) @binding(0) var<storage, read> x_17 : In0;
 
-[[group(0), binding(1)]] var<storage, read> x_19 : In1;
+@group(0) @binding(1) var<storage, read> x_19 : In1;
 
 fn main_1() {
   var base_index_in : u32;
@@ -109,8 +109,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(4, 1, 1)]]
-fn main([[builtin(workgroup_id)]] gl_WorkGroupID_param : vec3<u32>) {
+@stage(compute) @workgroup_size(4, 1, 1)
+fn main(@builtin(workgroup_id) gl_WorkGroupID_param : vec3<u32>) {
   gl_WorkGroupID = gl_WorkGroupID_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl
index c1d101c..a4fc561 100644
--- a/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/0.wgsl
@@ -6,11 +6,11 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   color_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(color);
diff --git a/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl
index 702b117..6f3e895 100644
--- a/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl
+++ b/test/vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl
@@ -1,6 +1,6 @@
 var<private> color_out : vec4<f32>;
 
-[[group(0), binding(0)]] var texture : texture_2d<f32>;
+@group(0) @binding(0) var texture : texture_2d<f32>;
 
 var<private> gl_FragCoord : vec4<f32>;
 
@@ -12,12 +12,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   color_out_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(color_out);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl
index 2b3b645..dfcbf44 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl
@@ -2,15 +2,15 @@
   result : i32;
 };
 
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct Buf0 {
   values : RTArr;
 };
 
-[[group(0), binding(1)]] var<storage, read_write> x_4 : Buf1;
+@group(0) @binding(1) var<storage, read_write> x_4 : Buf1;
 
-[[group(0), binding(0)]] var<storage, read_write> x_7 : Buf0;
+@group(0) @binding(0) var<storage, read_write> x_7 : Buf0;
 
 fn main_1() {
   var i : u32;
@@ -37,7 +37,7 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
+@stage(compute) @workgroup_size(1, 1, 1)
 fn main() {
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl
index 0fee5ee..bed026c 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,11 +6,11 @@
 
 var<private> x_2 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+@group(0) @binding(0) var<storage, read_write> x_5 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(1) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(2) var<storage, read_write> x_7 : S;
 
 fn main_1() {
   let x_21 : u32 = x_2.x;
@@ -20,8 +20,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_2_param : vec3<u32>) {
   x_2 = x_2_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl
index cf2536e..98535f6 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,11 +6,11 @@
 
 var<private> x_2 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+@group(0) @binding(0) var<storage, read_write> x_5 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(1) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(2) var<storage, read_write> x_7 : S;
 
 fn main_1() {
   let x_21 : u32 = x_2.x;
@@ -20,8 +20,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_2_param : vec3<u32>) {
   x_2 = x_2_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl
index f842e24..516e08b 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,11 +6,11 @@
 
 var<private> x_2 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+@group(0) @binding(0) var<storage, read_write> x_5 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(1) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(2) var<storage, read_write> x_7 : S;
 
 fn main_1() {
   let x_21 : u32 = x_2.x;
@@ -20,8 +20,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_2_param : vec3<u32>) {
   x_2 = x_2_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl
index 21548c6..fc4ae4a 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,11 +6,11 @@
 
 var<private> x_2 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+@group(0) @binding(0) var<storage, read_write> x_5 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(1) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(2) var<storage, read_write> x_7 : S;
 
 fn main_1() {
   let x_21 : u32 = x_2.x;
@@ -20,8 +20,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_2_param : vec3<u32>) {
   x_2 = x_2_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl
index 51319ac..4f4872e 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<i32>;
+type RTArr = @stride(4) array<i32>;
 
 struct S {
   field0 : RTArr;
@@ -6,13 +6,13 @@
 
 var<private> x_3 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(0) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(1) var<storage, read_write> x_7 : S;
 
-[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+@group(0) @binding(2) var<storage, read_write> x_8 : S;
 
-[[group(0), binding(3)]] var<storage, read_write> x_9 : S;
+@group(0) @binding(3) var<storage, read_write> x_9 : S;
 
 fn main_1() {
   let x_26 : u32 = x_3.x;
@@ -23,8 +23,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_3_param : vec3<u32>) {
   x_3 = x_3_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl
index 8abb109..0a7a6fd 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,9 +6,9 @@
 
 var<private> x_3 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(0) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(1) var<storage, read_write> x_7 : S;
 
 fn main_1() {
   let x_21 : u32 = x_3.x;
@@ -17,8 +17,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_3_param : vec3<u32>) {
   x_3 = x_3_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl
index fce79f04..52902a4 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,13 +6,13 @@
 
 var<private> x_3 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(0) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(1) var<storage, read_write> x_7 : S;
 
-[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+@group(0) @binding(2) var<storage, read_write> x_8 : S;
 
-[[group(0), binding(3)]] var<storage, read_write> x_9 : S;
+@group(0) @binding(3) var<storage, read_write> x_9 : S;
 
 fn main_1() {
   let x_23 : u32 = x_3.x;
@@ -23,8 +23,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_3_param : vec3<u32>) {
   x_3 = x_3_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl
index c21661d..04a0297 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,11 +6,11 @@
 
 var<private> x_3 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(0) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(1) var<storage, read_write> x_7 : S;
 
-[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+@group(0) @binding(2) var<storage, read_write> x_8 : S;
 
 fn main_1() {
   let x_21 : u32 = x_3.x;
@@ -20,8 +20,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_3_param : vec3<u32>) {
   x_3 = x_3_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl
index f83857f..fd0938c 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,11 +6,11 @@
 
 var<private> x_3 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(0) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(1) var<storage, read_write> x_7 : S;
 
-[[group(0), binding(2)]] var<storage, read_write> x_8 : S;
+@group(0) @binding(2) var<storage, read_write> x_8 : S;
 
 fn main_1() {
   let x_21 : u32 = x_3.x;
@@ -20,8 +20,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_3_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_3_param : vec3<u32>) {
   x_3 = x_3_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl
index de05c79..2bbbe0b 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,11 +6,11 @@
 
 var<private> x_2 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+@group(0) @binding(0) var<storage, read_write> x_5 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(1) var<storage, read_write> x_6 : S;
 
-[[group(0), binding(2)]] var<storage, read_write> x_7 : S;
+@group(0) @binding(2) var<storage, read_write> x_7 : S;
 
 fn main_1() {
   let x_20 : u32 = x_2.x;
@@ -20,8 +20,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_2_param : vec3<u32>) {
   x_2 = x_2_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl
index 3e60e98..f34494a 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<u32>;
+type RTArr = @stride(4) array<u32>;
 
 struct S {
   field0 : RTArr;
@@ -6,9 +6,9 @@
 
 var<private> x_2 : vec3<u32>;
 
-[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+@group(0) @binding(0) var<storage, read_write> x_5 : S;
 
-[[group(0), binding(1)]] var<storage, read_write> x_6 : S;
+@group(0) @binding(1) var<storage, read_write> x_6 : S;
 
 fn main_1() {
   let x_20 : u32 = x_2.x;
@@ -17,8 +17,8 @@
   return;
 }
 
-[[stage(compute), workgroup_size(1, 1, 1)]]
-fn main([[builtin(global_invocation_id)]] x_2_param : vec3<u32>) {
+@stage(compute) @workgroup_size(1, 1, 1)
+fn main(@builtin(global_invocation_id) x_2_param : vec3<u32>) {
   x_2 = x_2_param;
   main_1();
 }
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl
index eef9fd1..5c734e3 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/float32/comparison/frexpstruct_1_frag/0.wgsl
@@ -14,14 +14,14 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_4_1 : u32;
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] x_3_param : vec2<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) x_3_param : vec2<f32>) -> main_out {
   x_3 = x_3_param;
   main_1();
   return main_out(x_4, gl_Position);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl
index bf7b1a4..74923da 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl
@@ -10,12 +10,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl
index 48a9583..1c90a48 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/1.wgsl
@@ -9,13 +9,13 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   color_out_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(color_out, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl
index 574d2de..5707fa3 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl
@@ -10,12 +10,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl
index df3c7e3..1620bac 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/1.wgsl
@@ -9,13 +9,13 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   color_out_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(color_out, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl
index f3aec87..507511d 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl
@@ -10,12 +10,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl
index 8bf833a..d20dbea 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less_or_equal/1.wgsl
@@ -9,13 +9,13 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   color_out_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(color_out, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl
index 1cc00dd..6e13950 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl
@@ -10,12 +10,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl
index 5051169..eabe436 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/1.wgsl
@@ -9,13 +9,13 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   color_out_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(color_out, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl
index 788ee5b..ac55a23 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl
@@ -10,12 +10,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl
index f71b320..7b85214 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl
@@ -10,12 +10,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl
index b6e0701..1566cc9 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/1.wgsl
@@ -9,13 +9,13 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   outColor_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(outColor, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl
index 9f726a7..310e6db 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_0/1.wgsl
@@ -9,13 +9,13 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   outColor_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(outColor, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl
index bc535ca..293f469 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthless_2/1.wgsl
@@ -9,13 +9,13 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   outColor_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(outColor, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl
index 0fe24e6..269e7da 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_0/1.wgsl
@@ -12,14 +12,14 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   outColor_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(outColor, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl
index 04a6db7..656c0ed 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_2/1.wgsl
@@ -9,13 +9,13 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   outColor_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(outColor, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl
index f6cb3ea..7c01a5c 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthunchanged_3/1.wgsl
@@ -9,13 +9,13 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   outColor_1 : vec4<f32>;
-  [[builtin(frag_depth)]]
+  @builtin(frag_depth)
   gl_FragDepth_1 : f32;
 };
 
-[[stage(fragment)]]
+@stage(fragment)
 fn main() -> main_out {
   main_1();
   return main_out(outColor, gl_FragDepth);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl
index 081740c..1ab42ae 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl
@@ -12,14 +12,14 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
-  [[location(0)]]
+  @location(0)
   pos_1 : u32;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec4<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position, pos);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl
index 9959aa6..0e32731 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl
@@ -14,14 +14,14 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_4_1 : i32;
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] x_2_param : vec3<f32>, [[location(1)]] x_3_param : i32) -> main_out {
+@stage(vertex)
+fn main(@location(0) x_2_param : vec3<f32>, @location(1) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
   main_1();
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl
index 0f3c732..2cd673e 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl
@@ -4,7 +4,7 @@
 
 var<private> x_4 : i32;
 
-[[group(0), binding(0)]] var x_5 : texture_storage_2d<r32sint, write>;
+@group(0) @binding(0) var x_5 : texture_storage_2d<r32sint, write>;
 
 fn main_1() {
   x_4 = 1;
@@ -19,12 +19,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_4_1 : i32;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
   main_1();
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.glsl
index f63590e..34862ac 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_store/1.wgsl:27:70 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
                                                                      ^^^^^^^^^
 
 #version 310 es
@@ -62,7 +62,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:45: 'int' : must be qualified as flat in
-ERROR: 0:45: '' : compilation terminated 
+ERROR: 0:45: '' : compilation terminated
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl
index affcd63..07e6992 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl
@@ -14,12 +14,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_4_1 : i32;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
   main_1();
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.glsl
index c7468bb..2da1cc8 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/1.wgsl:22:70 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
                                                                      ^^^^^^^^^
 
 #version 310 es
@@ -58,7 +58,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:41: 'int' : must be qualified as flat in
-ERROR: 0:41: '' : compilation terminated 
+ERROR: 0:41: '' : compilation terminated
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl
index 3820a70..e1c76c9 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write/2-opt.wgsl
@@ -16,12 +16,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   out_data_1 : i32;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(out_data);
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl
index e0e933a..a849b1d 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl
@@ -14,12 +14,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_4_1 : i32;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
   main_1();
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.glsl
index 42a8717..fe31b1c 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_output_write_before_terminate/1.wgsl:22:70 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
                                                                      ^^^^^^^^^
 
 #version 310 es
@@ -59,7 +59,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:42: 'int' : must be qualified as flat in
-ERROR: 0:42: '' : compilation terminated 
+ERROR: 0:42: '' : compilation terminated
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl
index fd8dd5f..da18d12 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<i32>;
+type RTArr = @stride(4) array<i32>;
 
 struct S {
   field0 : RTArr;
@@ -10,7 +10,7 @@
 
 var<private> x_4 : i32;
 
-[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+@group(0) @binding(0) var<storage, read_write> x_5 : S;
 
 fn main_1() {
   x_4 = 1;
@@ -25,12 +25,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_4_1 : i32;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
   main_1();
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.glsl
index 41b83dd..f7d8197 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_ssbo_store/1.wgsl:33:70 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
                                                                      ^^^^^^^^^
 
 #version 310 es
@@ -67,8 +67,8 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: '' : array size required
+ERROR: 0:6: '' : compilation terminated
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl
index 4a8c8a7..48083ee 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl
@@ -1,4 +1,4 @@
-type RTArr = [[stride(4)]] array<i32>;
+type RTArr = @stride(4) array<i32>;
 
 struct S {
   field0 : RTArr;
@@ -10,7 +10,7 @@
 
 var<private> x_4 : i32;
 
-[[group(0), binding(0)]] var<storage, read_write> x_5 : S;
+@group(0) @binding(0) var<storage, read_write> x_5 : S;
 
 fn main_1() {
   x_4 = 1;
@@ -25,12 +25,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_4_1 : i32;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
   main_1();
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.glsl
index 4b8208a..6fe04b3 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 vk-gl-cts/spirv_assembly/instruction/terminate_invocation/ssbo_store_before_terminate/1.wgsl:33:70 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
                                                                      ^^^^^^^^^
 
 #version 310 es
@@ -68,8 +68,8 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: '' : array size required
+ERROR: 0:6: '' : compilation terminated
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl
index 5142f3d..78ca88f 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl
@@ -29,12 +29,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   x_4_1 : i32;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
   x_2 = x_2_param;
   x_3 = x_3_param;
   main_1();
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.glsl
index 2d61612..b9ab85d 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 vk-gl-cts/spirv_assembly/instruction/terminate_invocation/terminate_loop/1.wgsl:37:70 warning: integral user-defined fragment inputs must have a flat interpolation attribute
-fn main([[builtin(position)]] x_2_param : vec4<f32>, [[location(0)]] x_3_param : i32) -> main_out {
+fn main(@builtin(position) x_2_param : vec4<f32>, @location(0) x_3_param : i32) -> main_out {
                                                                      ^^^^^^^^^
 
 #version 310 es
@@ -73,7 +73,7 @@
 
 Error parsing GLSL shader:
 ERROR: 0:56: 'int' : must be qualified as flat in
-ERROR: 0:56: '' : compilation terminated 
+ERROR: 0:56: '' : compilation terminated
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl
index cfebf74..e62f918 100644
--- a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl
@@ -9,12 +9,12 @@
 }
 
 struct main_out {
-  [[builtin(position)]]
+  @builtin(position)
   gl_Position : vec4<f32>;
 };
 
-[[stage(vertex)]]
-fn main([[location(0)]] position_param : vec3<f32>) -> main_out {
+@stage(vertex)
+fn main(@location(0) position_param : vec3<f32>) -> main_out {
   position = position_param;
   main_1();
   return main_out(gl_Position);
diff --git a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl
index a3e9f614..bdf8be5 100644
--- a/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl
+++ b/test/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/2-opt.wgsl
@@ -22,12 +22,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   expect_1 : i32;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(expect);
diff --git a/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl
index cd7d76c..711a401 100644
--- a/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl
+++ b/test/vk-gl-cts/texture/subgroup_lod/texel_fetch/1.wgsl
@@ -9,12 +9,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   color_out_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[location(0)]] color_in_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@location(0) color_in_param : vec4<f32>) -> main_out {
   color_in = color_in_param;
   main_1();
   return main_out(color_out);
diff --git a/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl
index 2130c1a..ac4ba8a 100644
--- a/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl
+++ b/test/vk-gl-cts/texture/texel_offset/texel_offset/0-opt.wgsl
@@ -10,12 +10,12 @@
 }
 
 struct main_out {
-  [[location(0)]]
+  @location(0)
   result_1 : vec4<f32>;
 };
 
-[[stage(fragment)]]
-fn main([[builtin(position)]] gl_FragCoord_param : vec4<f32>) -> main_out {
+@stage(fragment)
+fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   return main_out(result);