From df793fc0493a67ca2838ba816232da8409d03c8a Mon Sep 17 00:00:00 2001
From: ameerj <52414509+ameerj@users.noreply.github.com>
Date: Mon, 24 May 2021 00:55:39 -0400
Subject: glsl: Implement FCMP

---
 src/shader_recompiler/backend/glsl/reg_alloc.cpp | 12 ++++++++++++
 1 file changed, 12 insertions(+)

(limited to 'src/shader_recompiler/backend/glsl/reg_alloc.cpp')

diff --git a/src/shader_recompiler/backend/glsl/reg_alloc.cpp b/src/shader_recompiler/backend/glsl/reg_alloc.cpp
index 007f8c89d2..9f529c3583 100644
--- a/src/shader_recompiler/backend/glsl/reg_alloc.cpp
+++ b/src/shader_recompiler/backend/glsl/reg_alloc.cpp
@@ -25,6 +25,18 @@ std::string Representation(Id id) {
 }
 
 std::string FormatFloat(std::string_view value, IR::Type type) {
+    // TODO: Confirm FP64 nan/inf
+    if (type == IR::Type::F32) {
+        if (value == "nan") {
+            return "uintBitsToFloat(0x7fc00000)";
+        }
+        if (value == "inf") {
+            return "uintBitsToFloat(0x7f800000)";
+        }
+        if (value == "-inf") {
+            return "uintBitsToFloat(0xff800000)";
+        }
+    }
     const bool needs_dot = value.find_first_of('.') == std::string_view::npos;
     const bool needs_suffix = !value.ends_with('f');
     const auto suffix = type == IR::Type::F32 ? "f" : "lf";
-- 
cgit v1.2.3-70-g09d2