Add GLSL FindILsb, FindUMsb, FindSMsb and InterpolateAtCentroid.

This CL adds the type determination for the GLSL methods FindILsb,
FindUMsb, FindSMsb and InterpolateAtCentroid.

Change-Id: I2b1e9d021e6799ffe6b5b71c5cca947b8e6ccfa0
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/22843
Reviewed-by: David Neto <dneto@google.com>
diff --git a/src/type_determiner.cc b/src/type_determiner.cc
index 9b1e3c9..cd22db2 100644
--- a/src/type_determiner.cc
+++ b/src/type_determiner.cc
@@ -661,6 +661,9 @@
     {"faceforward", 3, GLSLstd450FaceForward,
      GlslDataType::kFloatScalarOrVector, 0},
     {"fclamp", 3, GLSLstd450FClamp, GlslDataType::kFloatScalarOrVector, 0},
+    {"findilsb", 1, GLSLstd450FindILsb, GlslDataType::kIntScalarOrVector, 0},
+    {"findumsb", 1, GLSLstd450FindUMsb, GlslDataType::kIntScalarOrVector, 0},
+    {"findsmsb", 1, GLSLstd450FindSMsb, GlslDataType::kIntScalarOrVector, 0},
     {"floor", 1, GLSLstd450Floor, GlslDataType::kFloatScalarOrVector, 0},
     {"fma", 3, GLSLstd450Fma, GlslDataType::kFloatScalarOrVector, 0},
     {"fmax", 2, GLSLstd450FMax, GlslDataType::kFloatScalarOrVector, 0},
@@ -668,6 +671,8 @@
     {"fmix", 3, GLSLstd450FMix, GlslDataType::kFloatScalarOrVector, 0},
     {"fract", 1, GLSLstd450Fract, GlslDataType::kFloatScalarOrVector, 0},
     {"fsign", 1, GLSLstd450FSign, GlslDataType::kFloatScalarOrVector, 0},
+    {"interpolateatcentroid", 1, GLSLstd450InterpolateAtCentroid,
+     GlslDataType::kFloatScalarOrVector, 0},
     {"inversesqrt", 1, GLSLstd450InverseSqrt,
      GlslDataType::kFloatScalarOrVector, 0},
     {"length", 1, GLSLstd450Length, GlslDataType::kFloatScalarOrVector, 0},
diff --git a/src/type_determiner_test.cc b/src/type_determiner_test.cc
index 5871be4..0b607f3 100644
--- a/src/type_determiner_test.cc
+++ b/src/type_determiner_test.cc
@@ -1859,7 +1859,9 @@
                     GLSLData{"log2", GLSLstd450Log2},
                     GLSLData{"sqrt", GLSLstd450Sqrt},
                     GLSLData{"inversesqrt", GLSLstd450InverseSqrt},
-                    GLSLData{"normalize", GLSLstd450Normalize}));
+                    GLSLData{"normalize", GLSLstd450Normalize},
+                    GLSLData{"interpolateatcentroid",
+                             GLSLstd450InterpolateAtCentroid}));
 
 TEST_F(TypeDeterminerTest, ImportData_Length_Scalar) {
   ast::type::F32Type f32;
@@ -2890,10 +2892,14 @@
                                param.name + ". Expected 1 got 3");
 }
 
-INSTANTIATE_TEST_SUITE_P(TypeDeterminerTest,
-                         ImportData_Int_SingleParamTest,
-                         testing::Values(GLSLData{"sabs", GLSLstd450SAbs},
-                                         GLSLData{"ssign", GLSLstd450SSign}));
+INSTANTIATE_TEST_SUITE_P(
+    TypeDeterminerTest,
+    ImportData_Int_SingleParamTest,
+    testing::Values(GLSLData{"sabs", GLSLstd450SAbs},
+                    GLSLData{"ssign", GLSLstd450SSign},
+                    GLSLData{"findilsb", GLSLstd450FindILsb},
+                    GLSLData{"findumsb", GLSLstd450FindUMsb},
+                    GLSLData{"findsmsb", GLSLstd450FindSMsb}));
 
 using ImportData_Int_TwoParamTest = TypeDeterminerTestWithParam<GLSLData>;
 TEST_P(ImportData_Int_TwoParamTest, Scalar_Signed) {