glsl: Add "built-in" functions to convert bool to double
authorMatt Turner <mattst88@gmail.com>
Fri, 9 Nov 2018 06:12:16 +0000 (22:12 -0800)
committerMatt Turner <mattst88@gmail.com>
Thu, 10 Jan 2019 00:42:40 +0000 (16:42 -0800)
And vice versa.

Reviewed-by: Elie Tournier <tournier.elie@gmail.com>
src/compiler/glsl/float64.glsl

index 7d12da50ac0162ab13e7c2a541c04d8f5d4848c8..1808fec07277290ed3d78fd33cf881a34cf88f6f 100644 (file)
@@ -951,6 +951,18 @@ __int_to_fp64(int a)
    return __packFloat64(zSign, 0x412 - shiftCount, zFrac0, zFrac1);
 }
 
+bool
+__fp64_to_bool(uint64_t a)
+{
+   return !__feq64_nonnan(__fabs64(a), 0ul);
+}
+
+uint64_t
+__bool_to_fp64(bool a)
+{
+   return __int_to_fp64(int(a));
+}
+
 /* Packs the sign `zSign', exponent `zExp', and significand `zFrac' into a
  * single-precision floating-point value, returning the result.  After being
  * shifted into the proper positions, the three fields are simply added