GLSL: implement inf, nan.

Use uintBitsToFloat.

Bug: tint:1306
Change-Id: Ie9a5e14c13c0d63b57c126f16c4e2a5c7a77e3f7
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/69740
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
diff --git a/src/writer/glsl/generator_impl.cc b/src/writer/glsl/generator_impl.cc
index 6fbc70f..32b4d94 100644
--- a/src/writer/glsl/generator_impl.cc
+++ b/src/writer/glsl/generator_impl.cc
@@ -2081,9 +2081,10 @@
     out << (l->value ? "true" : "false");
   } else if (auto* fl = lit->As<ast::FloatLiteralExpression>()) {
     if (std::isinf(fl->value)) {
-      out << (fl->value >= 0 ? "asfloat(0x7f800000u)" : "asfloat(0xff800000u)");
+      out << (fl->value >= 0 ? "uintBitsToFloat(0x7f800000u)"
+                             : "uintBitsToFloat(0xff800000u)");
     } else if (std::isnan(fl->value)) {
-      out << "asfloat(0x7fc00000u)";
+      out << "uintBitsToFloat(0x7fc00000u)";
     } else {
       out << FloatToString(fl->value) << "f";
     }
diff --git a/test/bug/tint/951.spvasm.expected.glsl b/test/bug/tint/951.spvasm.expected.glsl
index 47667e8..d638979 100644
--- a/test/bug/tint/951.spvasm.expected.glsl
+++ b/test/bug/tint/951.spvasm.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
@@ -28,7 +26,7 @@
 float unaryOperation_f1_(inout float a) {
   float x_47 = a;
   if ((x_47 < 0.0f)) {
-    return asfloat(0x7f800000u);
+    return uintBitsToFloat(0x7f800000u);
   }
   float x_55 = a;
   return log(x_55);
@@ -84,10 +82,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:29: 'asfloat' : no matching overloaded function found 
-ERROR: 0:29: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/expressions/literals/-inf.spvasm.expected.glsl b/test/expressions/literals/-inf.spvasm.expected.glsl
index 6bad4d5..bf214c6 100644
--- a/test/expressions/literals/-inf.spvasm.expected.glsl
+++ b/test/expressions/literals/-inf.spvasm.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 vec4 out_var_SV_TARGET = vec4(0.0f, 0.0f, 0.0f, 0.0f);
 
 void main_1() {
-  out_var_SV_TARGET = vec4(asfloat(0xff800000u), asfloat(0xff800000u), asfloat(0xff800000u), asfloat(0xff800000u));
+  out_var_SV_TARGET = vec4(uintBitsToFloat(0xff800000u), uintBitsToFloat(0xff800000u), uintBitsToFloat(0xff800000u), uintBitsToFloat(0xff800000u));
   return;
 }
 
@@ -37,10 +35,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'asfloat' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/expressions/literals/inf.spvasm.expected.glsl b/test/expressions/literals/inf.spvasm.expected.glsl
index 46738b0..b06b5f9 100644
--- a/test/expressions/literals/inf.spvasm.expected.glsl
+++ b/test/expressions/literals/inf.spvasm.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 vec4 out_var_SV_TARGET = vec4(0.0f, 0.0f, 0.0f, 0.0f);
 
 void main_1() {
-  out_var_SV_TARGET = vec4(asfloat(0x7f800000u), asfloat(0x7f800000u), asfloat(0x7f800000u), asfloat(0x7f800000u));
+  out_var_SV_TARGET = vec4(uintBitsToFloat(0x7f800000u), uintBitsToFloat(0x7f800000u), uintBitsToFloat(0x7f800000u), uintBitsToFloat(0x7f800000u));
   return;
 }
 
@@ -37,10 +35,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'asfloat' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/expressions/literals/nan.spvasm.expected.glsl b/test/expressions/literals/nan.spvasm.expected.glsl
index eff4ad4..4ce65a8 100644
--- a/test/expressions/literals/nan.spvasm.expected.glsl
+++ b/test/expressions/literals/nan.spvasm.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 vec4 out_var_SV_TARGET = vec4(0.0f, 0.0f, 0.0f, 0.0f);
 
 void main_1() {
-  out_var_SV_TARGET = vec4(asfloat(0x7fc00000u), asfloat(0x7fc00000u), asfloat(0x7fc00000u), asfloat(0x7fc00000u));
+  out_var_SV_TARGET = vec4(uintBitsToFloat(0x7fc00000u), uintBitsToFloat(0x7fc00000u), uintBitsToFloat(0x7fc00000u), uintBitsToFloat(0x7fc00000u));
   return;
 }
 
@@ -37,10 +35,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'asfloat' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-