diff --git a/src/tint/writer/glsl/generator_impl.cc b/src/tint/writer/glsl/generator_impl.cc
index 9b6bdf6..2765927 100644
--- a/src/tint/writer/glsl/generator_impl.cc
+++ b/src/tint/writer/glsl/generator_impl.cc
@@ -1617,7 +1617,7 @@
     case sem::BuiltinType::kFaceForward:
       return "faceforward";
     case sem::BuiltinType::kFract:
-      return "frac";
+      return "fract";
     case sem::BuiltinType::kFma:
       return "mad";
     case sem::BuiltinType::kFwidth:
diff --git a/src/tint/writer/glsl/generator_impl_builtin_test.cc b/src/tint/writer/glsl/generator_impl_builtin_test.cc
index 1d69e15..bcd48b0 100644
--- a/src/tint/writer/glsl/generator_impl_builtin_test.cc
+++ b/src/tint/writer/glsl/generator_impl_builtin_test.cc
@@ -214,7 +214,7 @@
         BuiltinData{BuiltinType::kFaceForward, ParamType::kF32, "faceforward"},
         BuiltinData{BuiltinType::kFloor, ParamType::kF32, "floor"},
         BuiltinData{BuiltinType::kFma, ParamType::kF32, "mad"},
-        BuiltinData{BuiltinType::kFract, ParamType::kF32, "frac"},
+        BuiltinData{BuiltinType::kFract, ParamType::kF32, "fract"},
         BuiltinData{BuiltinType::kFwidth, ParamType::kF32, "fwidth"},
         BuiltinData{BuiltinType::kFwidthCoarse, ParamType::kF32, "fwidth"},
         BuiltinData{BuiltinType::kFwidthFine, ParamType::kF32, "fwidth"},
diff --git a/src/tint/writer/glsl/generator_impl_import_test.cc b/src/tint/writer/glsl/generator_impl_import_test.cc
index 3a65396..458ee0e 100644
--- a/src/tint/writer/glsl/generator_impl_import_test.cc
+++ b/src/tint/writer/glsl/generator_impl_import_test.cc
@@ -56,7 +56,7 @@
                                          GlslImportData{"exp", "exp"},
                                          GlslImportData{"exp2", "exp2"},
                                          GlslImportData{"floor", "floor"},
-                                         GlslImportData{"fract", "frac"},
+                                         GlslImportData{"fract", "fract"},
                                          GlslImportData{"inverseSqrt", "rsqrt"},
                                          GlslImportData{"length", "length"},
                                          GlslImportData{"log", "log"},
@@ -114,7 +114,7 @@
                                          GlslImportData{"exp", "exp"},
                                          GlslImportData{"exp2", "exp2"},
                                          GlslImportData{"floor", "floor"},
-                                         GlslImportData{"fract", "frac"},
+                                         GlslImportData{"fract", "fract"},
                                          GlslImportData{"inverseSqrt", "rsqrt"},
                                          GlslImportData{"length", "length"},
                                          GlslImportData{"log", "log"},
diff --git a/test/tint/benchmark/particles.wgsl.expected.glsl b/test/tint/benchmark/particles.wgsl.expected.glsl
index b0eccd3..8a544f9 100644
--- a/test/tint/benchmark/particles.wgsl.expected.glsl
+++ b/test/tint/benchmark/particles.wgsl.expected.glsl
@@ -123,8 +123,8 @@
 
 vec2 rand_seed = vec2(0.0f, 0.0f);
 float rand() {
-  rand_seed.x = frac((cos(dot(rand_seed, vec2(23.140779495f, 232.616897583f))) * 136.816802979f));
-  rand_seed.y = frac((cos(dot(rand_seed, vec2(54.478565216f, 345.841522217f))) * 534.764526367f));
+  rand_seed.x = fract((cos(dot(rand_seed, vec2(23.140779495f, 232.616897583f))) * 136.816802979f));
+  rand_seed.y = fract((cos(dot(rand_seed, vec2(54.478565216f, 345.841522217f))) * 534.764526367f));
   return rand_seed.y;
 }
 
@@ -208,8 +208,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'frac' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:64: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:64: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/bug/tint/948.wgsl.expected.glsl b/test/tint/bug/tint/948.wgsl.expected.glsl
index 0d2b2ce..f62e60c 100644
--- a/test/tint/bug/tint/948.wgsl.expected.glsl
+++ b/test/tint/bug/tint/948.wgsl.expected.glsl
@@ -79,7 +79,7 @@
   float alpha = 0.0f;
   vec3 mixed = vec3(0.0f, 0.0f, 0.0f);
   color = vec4(0.0f, 0.0f, 0.0f, 0.0f);
-  tileUV = frac(tUV);
+  tileUV = fract(tUV);
   float x_91 = tileUV.y;
   tileUV.y = (1.0f - x_91);
   tileID = floor(tUV);
@@ -200,10 +200,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:80: 'frac' : no matching overloaded function found 
-ERROR: 0:80: 'assign' :  cannot convert from ' const float' to ' temp mediump 2-component vector of float'
-ERROR: 0:80: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
+ERROR: 0:120: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type ' temp mediump float' and a right operand of type ' const float' (or there is no acceptable conversion)
+ERROR: 0:120: '' : compilation terminated 
+ERROR: 2 compilation errors.  No code generated.
 
 
 
diff --git a/test/tint/builtins/gen/fract/8bc1e9.wgsl.expected.glsl b/test/tint/builtins/gen/fract/8bc1e9.wgsl.expected.glsl
index 2d5f17d..528089d 100644
--- a/test/tint/builtins/gen/fract/8bc1e9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/fract/8bc1e9.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 void fract_8bc1e9() {
-  vec4 res = frac(vec4(0.0f, 0.0f, 0.0f, 0.0f));
+  vec4 res = fract(vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 vec4 vertex_main() {
@@ -18,19 +16,11 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: 'frac' : no matching overloaded function found 
-ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 void fract_8bc1e9() {
-  vec4 res = frac(vec4(0.0f, 0.0f, 0.0f, 0.0f));
+  vec4 res = fract(vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 void fragment_main() {
@@ -41,18 +31,10 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:5: 'frac' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 void fract_8bc1e9() {
-  vec4 res = frac(vec4(0.0f, 0.0f, 0.0f, 0.0f));
+  vec4 res = fract(vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 void compute_main() {
@@ -64,11 +46,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: 'frac' : no matching overloaded function found 
-ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/tint/builtins/gen/fract/943cb1.wgsl.expected.glsl b/test/tint/builtins/gen/fract/943cb1.wgsl.expected.glsl
index 7b55b0c..ef608c1 100644
--- a/test/tint/builtins/gen/fract/943cb1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/fract/943cb1.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 void fract_943cb1() {
-  vec2 res = frac(vec2(0.0f, 0.0f));
+  vec2 res = fract(vec2(0.0f, 0.0f));
 }
 
 vec4 vertex_main() {
@@ -18,19 +16,11 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: 'frac' : no matching overloaded function found 
-ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of float'
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 void fract_943cb1() {
-  vec2 res = frac(vec2(0.0f, 0.0f));
+  vec2 res = fract(vec2(0.0f, 0.0f));
 }
 
 void fragment_main() {
@@ -41,18 +31,10 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:5: 'frac' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 void fract_943cb1() {
-  vec2 res = frac(vec2(0.0f, 0.0f));
+  vec2 res = fract(vec2(0.0f, 0.0f));
 }
 
 void compute_main() {
@@ -64,11 +46,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: 'frac' : no matching overloaded function found 
-ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of float'
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/tint/builtins/gen/fract/a49758.wgsl.expected.glsl b/test/tint/builtins/gen/fract/a49758.wgsl.expected.glsl
index 29e64b8..655125f 100644
--- a/test/tint/builtins/gen/fract/a49758.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/fract/a49758.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 void fract_a49758() {
-  vec3 res = frac(vec3(0.0f, 0.0f, 0.0f));
+  vec3 res = fract(vec3(0.0f, 0.0f, 0.0f));
 }
 
 vec4 vertex_main() {
@@ -18,19 +16,11 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: 'frac' : no matching overloaded function found 
-ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of float'
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 void fract_a49758() {
-  vec3 res = frac(vec3(0.0f, 0.0f, 0.0f));
+  vec3 res = fract(vec3(0.0f, 0.0f, 0.0f));
 }
 
 void fragment_main() {
@@ -41,18 +31,10 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:5: 'frac' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 void fract_a49758() {
-  vec3 res = frac(vec3(0.0f, 0.0f, 0.0f));
+  vec3 res = fract(vec3(0.0f, 0.0f, 0.0f));
 }
 
 void compute_main() {
@@ -64,11 +46,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: 'frac' : no matching overloaded function found 
-ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of float'
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/tint/builtins/gen/fract/fa5c71.wgsl.expected.glsl b/test/tint/builtins/gen/fract/fa5c71.wgsl.expected.glsl
index 36c061c..68864a0 100644
--- a/test/tint/builtins/gen/fract/fa5c71.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/fract/fa5c71.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 void fract_fa5c71() {
-  float res = frac(1.0f);
+  float res = fract(1.0f);
 }
 
 vec4 vertex_main() {
@@ -18,18 +16,11 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: 'frac' : no matching overloaded function found 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 void fract_fa5c71() {
-  float res = frac(1.0f);
+  float res = fract(1.0f);
 }
 
 void fragment_main() {
@@ -40,17 +31,10 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:5: 'frac' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 void fract_fa5c71() {
-  float res = frac(1.0f);
+  float res = fract(1.0f);
 }
 
 void compute_main() {
@@ -62,10 +46,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: 'frac' : no matching overloaded function found 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_11.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_11.spvasm.expected.glsl
index cb9c216..1b2805b 100644
--- a/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_11.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_11.spvasm.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 
 void main_1() {
@@ -25,7 +23,7 @@
   vec3 v3f2 = vec3(60.0f, 70.0f, 50.0f);
   vec4 v4f1 = vec4(50.0f, 50.0f, 50.0f, 50.0f);
   vec4 v4f2 = v4f1;
-  float x_1 = frac(f1);
+  float x_1 = fract(f1);
   return;
 }
 
@@ -38,10 +36,3 @@
   tint_symbol();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:26: 'frac' : no matching overloaded function found 
-ERROR: 0:26: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_11.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_11.spvasm.expected.glsl
index be153b2..45afc95 100644
--- a/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_11.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_11.spvasm.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 
 void main_1() {
@@ -25,7 +23,7 @@
   vec3 v3f2 = vec3(60.0f, 70.0f, 50.0f);
   vec4 v4f1 = vec4(50.0f, 50.0f, 50.0f, 50.0f);
   vec4 v4f2 = v4f1;
-  vec2 x_1 = frac(v2f1);
+  vec2 x_1 = fract(v2f1);
   return;
 }
 
@@ -38,11 +36,3 @@
   tint_symbol();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:26: 'frac' : no matching overloaded function found 
-ERROR: 0:26: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of float'
-ERROR: 0:26: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm.expected.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm.expected.glsl
index 465bf71..82c90b1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm.expected.glsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.spvasm.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
@@ -34,7 +32,7 @@
   float f0 = 0.0f;
   float f1 = 0.0f;
   f0 = uintBitsToFloat(0x7fc00000u);
-  f1 = frac(f0);
+  f1 = fract(f0);
   float x_38 = tint_symbol.x;
   float x_40 = x_8.x_GLF_uniform_float_values[0].el;
   if ((x_38 > x_40)) {
@@ -66,10 +64,3 @@
   x_GLF_color_1_1 = inner_result.x_GLF_color_1;
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:35: 'frac' : no matching overloaded function found 
-ERROR: 0:35: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl.expected.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl.expected.glsl
index 0d7cabe..d26b943 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl.expected.glsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 vk-gl-cts/graphicsfuzz/cov-fract-asin-undefined-never-used/0-opt.wgsl:1:13 warning: use of deprecated language feature: the @stride attribute is deprecated; use a larger type if necessary
 type Arr = @stride(16) array<f32, 1>;
             ^^^^^^
@@ -42,7 +40,7 @@
   float f0 = 0.0f;
   float f1 = 0.0f;
   f0 = uintBitsToFloat(0x7f800000u);
-  f1 = frac(f0);
+  f1 = fract(f0);
   float x_38 = tint_symbol.x;
   float x_40 = x_8.x_GLF_uniform_float_values[0].el;
   if ((x_38 > x_40)) {
@@ -74,10 +72,3 @@
   x_GLF_color_1_1 = inner_result.x_GLF_color_1;
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:35: 'frac' : no matching overloaded function found 
-ERROR: 0:35: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm.expected.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm.expected.glsl
index b850705..e722f2e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm.expected.glsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.spvasm.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
@@ -25,7 +23,7 @@
   bool x_52_phi = false;
   float x_30 = x_6.x_GLF_uniform_float_values[0].el;
   v1 = vec2(x_30, x_30);
-  b = frac(v1);
+  b = fract(v1);
   a = smoothstep(vec2(1.0f, 1.0f), vec2(1.0f, 1.0f), b).x;
   float x_38 = x_6.x_GLF_uniform_float_values[0].el;
   float x_39 = a;
@@ -68,11 +66,3 @@
   x_GLF_color_1_1 = inner_result.x_GLF_color_1;
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:26: 'frac' : no matching overloaded function found 
-ERROR: 0:26: 'assign' :  cannot convert from ' const float' to ' temp mediump 2-component vector of float'
-ERROR: 0:26: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl.expected.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl.expected.glsl
index 40fa5ab..9289557 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl.expected.glsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 vk-gl-cts/graphicsfuzz/cov-fract-smoothstep-undefined/0-opt.wgsl:1:13 warning: use of deprecated language feature: the @stride attribute is deprecated; use a larger type if necessary
 type Arr = @stride(16) array<f32, 1>;
             ^^^^^^
@@ -29,7 +27,7 @@
   bool x_52_phi = false;
   float x_30 = x_6.x_GLF_uniform_float_values[0].el;
   v1 = vec2(x_30, x_30);
-  b = frac(v1);
+  b = fract(v1);
   a = smoothstep(vec2(1.0f, 1.0f), vec2(1.0f, 1.0f), b).x;
   float x_38 = x_6.x_GLF_uniform_float_values[0].el;
   float x_39 = a;
@@ -72,11 +70,3 @@
   x_GLF_color_1_1 = inner_result.x_GLF_color_1;
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:26: 'frac' : no matching overloaded function found 
-ERROR: 0:26: 'assign' :  cannot convert from ' const float' to ' temp mediump 2-component vector of float'
-ERROR: 0:26: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm.expected.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm.expected.glsl
index 48bf4dc..2406070 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm.expected.glsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.spvasm.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
@@ -34,7 +32,7 @@
   float f = 0.0f;
   float x_35 = tint_symbol.y;
   float x_37 = x_7.x_GLF_uniform_float_values[1].el;
-  f = frac(trunc(((x_35 < x_37) ? 0.100000001f : 1.0f)));
+  f = fract(trunc(((x_35 < x_37) ? 0.100000001f : 1.0f)));
   float x_42 = f;
   float x_44 = x_7.x_GLF_uniform_float_values[0].el;
   if ((x_42 == x_44)) {
@@ -67,10 +65,3 @@
   x_GLF_color_1_1 = inner_result.x_GLF_color_1;
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:35: 'frac' : no matching overloaded function found 
-ERROR: 0:35: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl.expected.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl.expected.glsl
index 6146823..e916559 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl.expected.glsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 vk-gl-cts/graphicsfuzz/cov-trunc-fract-always-zero/0-opt.wgsl:1:13 warning: use of deprecated language feature: the @stride attribute is deprecated; use a larger type if necessary
 type Arr = @stride(16) array<f32, 2>;
             ^^^^^^
@@ -42,7 +40,7 @@
   float f = 0.0f;
   float x_35 = tint_symbol.y;
   float x_37 = x_7.x_GLF_uniform_float_values[1].el;
-  f = frac(trunc(((x_35 < x_37) ? 0.100000001f : 1.0f)));
+  f = fract(trunc(((x_35 < x_37) ? 0.100000001f : 1.0f)));
   float x_42 = f;
   float x_44 = x_7.x_GLF_uniform_float_values[0].el;
   if ((x_42 == x_44)) {
@@ -75,10 +73,3 @@
   x_GLF_color_1_1 = inner_result.x_GLF_color_1;
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:35: 'frac' : no matching overloaded function found 
-ERROR: 0:35: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm.expected.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm.expected.glsl
index 03a6930..569d4d8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm.expected.glsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.spvasm.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
@@ -11,7 +9,7 @@
   a = vec2(1.0f, 1.0f);
   float x_25 = a.x;
   a.x = (x_25 + 0.5f);
-  b = frac(a);
+  b = fract(a);
   float x_31 = b.x;
   if ((x_31 == 0.5f)) {
     x_GLF_color = vec4(1.0f, 0.0f, 0.0f, 1.0f);
@@ -36,11 +34,3 @@
   x_GLF_color_1_1 = inner_result.x_GLF_color_1;
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:12: 'frac' : no matching overloaded function found 
-ERROR: 0:12: 'assign' :  cannot convert from ' const float' to ' temp mediump 2-component vector of float'
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl.expected.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl.expected.glsl
index 03a6930..569d4d8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl.expected.glsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-vector-dce-unused-component/0-opt.wgsl.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
@@ -11,7 +9,7 @@
   a = vec2(1.0f, 1.0f);
   float x_25 = a.x;
   a.x = (x_25 + 0.5f);
-  b = frac(a);
+  b = fract(a);
   float x_31 = b.x;
   if ((x_31 == 0.5f)) {
     x_GLF_color = vec4(1.0f, 0.0f, 0.0f, 1.0f);
@@ -36,11 +34,3 @@
   x_GLF_color_1_1 = inner_result.x_GLF_color_1;
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:12: 'frac' : no matching overloaded function found 
-ERROR: 0:12: 'assign' :  cannot convert from ' const float' to ' temp mediump 2-component vector of float'
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
