GLSL: implement inverseSqrt() and update test expectations.

Bug: tint:1447
Change-Id: I521d021a9177c75badd52ad39ce4db6def48b6ab
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/82144
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
diff --git a/src/tint/writer/glsl/generator_impl.cc b/src/tint/writer/glsl/generator_impl.cc
index 2765927..1ca4a8a 100644
--- a/src/tint/writer/glsl/generator_impl.cc
+++ b/src/tint/writer/glsl/generator_impl.cc
@@ -1625,7 +1625,7 @@
     case sem::BuiltinType::kFwidthFine:
       return "fwidth";
     case sem::BuiltinType::kInverseSqrt:
-      return "rsqrt";
+      return "inversesqrt";
     case sem::BuiltinType::kIsFinite:
       return "isfinite";
     case sem::BuiltinType::kIsInf:
diff --git a/src/tint/writer/glsl/generator_impl_builtin_test.cc b/src/tint/writer/glsl/generator_impl_builtin_test.cc
index bcd48b0..c90cd57 100644
--- a/src/tint/writer/glsl/generator_impl_builtin_test.cc
+++ b/src/tint/writer/glsl/generator_impl_builtin_test.cc
@@ -218,7 +218,7 @@
         BuiltinData{BuiltinType::kFwidth, ParamType::kF32, "fwidth"},
         BuiltinData{BuiltinType::kFwidthCoarse, ParamType::kF32, "fwidth"},
         BuiltinData{BuiltinType::kFwidthFine, ParamType::kF32, "fwidth"},
-        BuiltinData{BuiltinType::kInverseSqrt, ParamType::kF32, "rsqrt"},
+        BuiltinData{BuiltinType::kInverseSqrt, ParamType::kF32, "inversesqrt"},
         BuiltinData{BuiltinType::kIsFinite, ParamType::kF32, "isfinite"},
         BuiltinData{BuiltinType::kIsInf, ParamType::kF32, "isinf"},
         BuiltinData{BuiltinType::kIsNan, ParamType::kF32, "isnan"},
diff --git a/src/tint/writer/glsl/generator_impl_import_test.cc b/src/tint/writer/glsl/generator_impl_import_test.cc
index 458ee0e..a553136 100644
--- a/src/tint/writer/glsl/generator_impl_import_test.cc
+++ b/src/tint/writer/glsl/generator_impl_import_test.cc
@@ -57,7 +57,8 @@
                                          GlslImportData{"exp2", "exp2"},
                                          GlslImportData{"floor", "floor"},
                                          GlslImportData{"fract", "fract"},
-                                         GlslImportData{"inverseSqrt", "rsqrt"},
+                                         GlslImportData{"inverseSqrt",
+                                                        "inversesqrt"},
                                          GlslImportData{"length", "length"},
                                          GlslImportData{"log", "log"},
                                          GlslImportData{"log2", "log2"},
@@ -102,33 +103,33 @@
   EXPECT_EQ(out.str(),
             std::string(param.glsl_name) + "(vec3(1.0f, 2.0f, 3.0f))");
 }
-INSTANTIATE_TEST_SUITE_P(GlslGeneratorImplTest_Import,
-                         GlslImportData_SingleVectorParamTest,
-                         testing::Values(GlslImportData{"abs", "abs"},
-                                         GlslImportData{"acos", "acos"},
-                                         GlslImportData{"asin", "asin"},
-                                         GlslImportData{"atan", "atan"},
-                                         GlslImportData{"cos", "cos"},
-                                         GlslImportData{"cosh", "cosh"},
-                                         GlslImportData{"ceil", "ceil"},
-                                         GlslImportData{"exp", "exp"},
-                                         GlslImportData{"exp2", "exp2"},
-                                         GlslImportData{"floor", "floor"},
-                                         GlslImportData{"fract", "fract"},
-                                         GlslImportData{"inverseSqrt", "rsqrt"},
-                                         GlslImportData{"length", "length"},
-                                         GlslImportData{"log", "log"},
-                                         GlslImportData{"log2", "log2"},
-                                         GlslImportData{"normalize",
-                                                        "normalize"},
-                                         GlslImportData{"round", "round"},
-                                         GlslImportData{"sign", "sign"},
-                                         GlslImportData{"sin", "sin"},
-                                         GlslImportData{"sinh", "sinh"},
-                                         GlslImportData{"sqrt", "sqrt"},
-                                         GlslImportData{"tan", "tan"},
-                                         GlslImportData{"tanh", "tanh"},
-                                         GlslImportData{"trunc", "trunc"}));
+INSTANTIATE_TEST_SUITE_P(
+    GlslGeneratorImplTest_Import,
+    GlslImportData_SingleVectorParamTest,
+    testing::Values(GlslImportData{"abs", "abs"},
+                    GlslImportData{"acos", "acos"},
+                    GlslImportData{"asin", "asin"},
+                    GlslImportData{"atan", "atan"},
+                    GlslImportData{"cos", "cos"},
+                    GlslImportData{"cosh", "cosh"},
+                    GlslImportData{"ceil", "ceil"},
+                    GlslImportData{"exp", "exp"},
+                    GlslImportData{"exp2", "exp2"},
+                    GlslImportData{"floor", "floor"},
+                    GlslImportData{"fract", "fract"},
+                    GlslImportData{"inverseSqrt", "inversesqrt"},
+                    GlslImportData{"length", "length"},
+                    GlslImportData{"log", "log"},
+                    GlslImportData{"log2", "log2"},
+                    GlslImportData{"normalize", "normalize"},
+                    GlslImportData{"round", "round"},
+                    GlslImportData{"sign", "sign"},
+                    GlslImportData{"sin", "sin"},
+                    GlslImportData{"sinh", "sinh"},
+                    GlslImportData{"sqrt", "sqrt"},
+                    GlslImportData{"tan", "tan"},
+                    GlslImportData{"tanh", "tanh"},
+                    GlslImportData{"trunc", "trunc"}));
 
 using GlslImportData_DualParam_ScalarTest = TestParamHelper<GlslImportData>;
 TEST_P(GlslImportData_DualParam_ScalarTest, Float) {
diff --git a/test/tint/bug/tint/949.wgsl.expected.glsl b/test/tint/bug/tint/949.wgsl.expected.glsl
index 212b48a..fbb9d32 100644
--- a/test/tint/bug/tint/949.wgsl.expected.glsl
+++ b/test/tint/bug/tint/949.wgsl.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
@@ -102,7 +100,7 @@
   tangent = (tangent * x_173);
   float x_177 = tangentSpaceParams.y;
   bitangent = (bitangent * x_177);
-  invmax = rsqrt(max(dot(tangent, tangent), dot(bitangent, bitangent)));
+  invmax = inversesqrt(max(dot(tangent, tangent), dot(bitangent, bitangent)));
   vec3 x_191 = (tangent * invmax);
   vec3 x_194 = (bitangent * invmax);
   vec3 x_195 = normal_1;
@@ -374,10 +372,3 @@
   glFragColor_1_1 = inner_result.glFragColor_1;
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:103: 'rsqrt' : no matching overloaded function found 
-ERROR: 0:103: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/tint/builtins/gen/inverseSqrt/84407e.wgsl.expected.glsl b/test/tint/builtins/gen/inverseSqrt/84407e.wgsl.expected.glsl
index 715b0c6..375f93a 100644
--- a/test/tint/builtins/gen/inverseSqrt/84407e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/inverseSqrt/84407e.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 void inverseSqrt_84407e() {
-  float res = rsqrt(1.0f);
+  float res = inversesqrt(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: 'rsqrt' : no matching overloaded function found 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 void inverseSqrt_84407e() {
-  float res = rsqrt(1.0f);
+  float res = inversesqrt(1.0f);
 }
 
 void fragment_main() {
@@ -40,17 +31,10 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:5: 'rsqrt' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 void inverseSqrt_84407e() {
-  float res = rsqrt(1.0f);
+  float res = inversesqrt(1.0f);
 }
 
 void compute_main() {
@@ -62,10 +46,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: 'rsqrt' : no matching overloaded function found 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/tint/builtins/gen/inverseSqrt/8f2bd2.wgsl.expected.glsl b/test/tint/builtins/gen/inverseSqrt/8f2bd2.wgsl.expected.glsl
index 19105a8..75a2183 100644
--- a/test/tint/builtins/gen/inverseSqrt/8f2bd2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/inverseSqrt/8f2bd2.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 void inverseSqrt_8f2bd2() {
-  vec2 res = rsqrt(vec2(0.0f, 0.0f));
+  vec2 res = inversesqrt(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: 'rsqrt' : 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 inverseSqrt_8f2bd2() {
-  vec2 res = rsqrt(vec2(0.0f, 0.0f));
+  vec2 res = inversesqrt(vec2(0.0f, 0.0f));
 }
 
 void fragment_main() {
@@ -41,18 +31,10 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:5: 'rsqrt' : 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 inverseSqrt_8f2bd2() {
-  vec2 res = rsqrt(vec2(0.0f, 0.0f));
+  vec2 res = inversesqrt(vec2(0.0f, 0.0f));
 }
 
 void compute_main() {
@@ -64,11 +46,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: 'rsqrt' : 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/inverseSqrt/b197b1.wgsl.expected.glsl b/test/tint/builtins/gen/inverseSqrt/b197b1.wgsl.expected.glsl
index 6c04051..ea11af3 100644
--- a/test/tint/builtins/gen/inverseSqrt/b197b1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/inverseSqrt/b197b1.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 void inverseSqrt_b197b1() {
-  vec3 res = rsqrt(vec3(0.0f, 0.0f, 0.0f));
+  vec3 res = inversesqrt(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: 'rsqrt' : 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 inverseSqrt_b197b1() {
-  vec3 res = rsqrt(vec3(0.0f, 0.0f, 0.0f));
+  vec3 res = inversesqrt(vec3(0.0f, 0.0f, 0.0f));
 }
 
 void fragment_main() {
@@ -41,18 +31,10 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:5: 'rsqrt' : 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 inverseSqrt_b197b1() {
-  vec3 res = rsqrt(vec3(0.0f, 0.0f, 0.0f));
+  vec3 res = inversesqrt(vec3(0.0f, 0.0f, 0.0f));
 }
 
 void compute_main() {
@@ -64,11 +46,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: 'rsqrt' : 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/inverseSqrt/c22347.wgsl.expected.glsl b/test/tint/builtins/gen/inverseSqrt/c22347.wgsl.expected.glsl
index 8248943..1caa93e 100644
--- a/test/tint/builtins/gen/inverseSqrt/c22347.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/inverseSqrt/c22347.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 void inverseSqrt_c22347() {
-  vec4 res = rsqrt(vec4(0.0f, 0.0f, 0.0f, 0.0f));
+  vec4 res = inversesqrt(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: 'rsqrt' : 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 inverseSqrt_c22347() {
-  vec4 res = rsqrt(vec4(0.0f, 0.0f, 0.0f, 0.0f));
+  vec4 res = inversesqrt(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: 'rsqrt' : 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 inverseSqrt_c22347() {
-  vec4 res = rsqrt(vec4(0.0f, 0.0f, 0.0f, 0.0f));
+  vec4 res = inversesqrt(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: 'rsqrt' : 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/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_12.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_12.spvasm.expected.glsl
index a30f7e7..7543bb5 100644
--- a/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_12.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_12.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 = rsqrt(f1);
+  float x_1 = inversesqrt(f1);
   return;
 }
 
@@ -38,10 +36,3 @@
   tint_symbol();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:26: 'rsqrt' : 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_12.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_12.spvasm.expected.glsl
index 2b3a549..a4166ac 100644
--- a/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_12.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_12.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 = rsqrt(v2f1);
+  vec2 x_1 = inversesqrt(v2f1);
   return;
 }
 
@@ -38,11 +36,3 @@
   tint_symbol();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:26: 'rsqrt' : 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-inst-value-tracking-inversesqrt/0-opt.spvasm.expected.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm.expected.glsl
index 962d394..040a938 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm.expected.glsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.spvasm.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
@@ -19,7 +17,7 @@
 vec4 x_GLF_color = vec4(0.0f, 0.0f, 0.0f, 0.0f);
 void main_1() {
   float x_23 = x_5.x_GLF_uniform_float_values[1].el;
-  if ((rsqrt(x_23) < -1.0f)) {
+  if ((inversesqrt(x_23) < -1.0f)) {
     float x_30 = x_5.x_GLF_uniform_float_values[0].el;
     x_GLF_color = vec4(x_30, x_30, x_30, x_30);
   } else {
@@ -47,10 +45,3 @@
   x_GLF_color_1_1 = inner_result.x_GLF_color_1;
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:20: 'rsqrt' : no matching overloaded function found 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl.expected.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl.expected.glsl
index 794bec9..f030ba7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl.expected.glsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/0-opt.wgsl.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 vk-gl-cts/graphicsfuzz/cov-inst-value-tracking-inversesqrt/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>;
             ^^^^^^
@@ -23,7 +21,7 @@
 vec4 x_GLF_color = vec4(0.0f, 0.0f, 0.0f, 0.0f);
 void main_1() {
   float x_23 = x_5.x_GLF_uniform_float_values[1].el;
-  if ((rsqrt(x_23) < -1.0f)) {
+  if ((inversesqrt(x_23) < -1.0f)) {
     float x_30 = x_5.x_GLF_uniform_float_values[0].el;
     x_GLF_color = vec4(x_30, x_30, x_30, x_30);
   } else {
@@ -51,10 +49,3 @@
   x_GLF_color_1_1 = inner_result.x_GLF_color_1;
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:20: 'rsqrt' : no matching overloaded function found 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-