summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/backend')
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl_floating_point.cpp10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_floating_point.cpp b/src/shader_recompiler/backend/glsl/emit_glsl_floating_point.cpp
index 2edcf592e..d423bfb1b 100644
--- a/src/shader_recompiler/backend/glsl/emit_glsl_floating_point.cpp
+++ b/src/shader_recompiler/backend/glsl/emit_glsl_floating_point.cpp
@@ -13,12 +13,10 @@ namespace Shader::Backend::GLSL {
13namespace { 13namespace {
14void Compare(EmitContext& ctx, IR::Inst& inst, std::string_view lhs, std::string_view rhs, 14void Compare(EmitContext& ctx, IR::Inst& inst, std::string_view lhs, std::string_view rhs,
15 std::string_view op, bool ordered) { 15 std::string_view op, bool ordered) {
16 ctx.AddU1("{}={}{}{}", inst, lhs, op, rhs, lhs, rhs); 16 const auto nan_op{ordered ? "&&!" : "||"};
17 if (ordered) { 17 ctx.AddU1("{}={}{}{}"
18 ctx.Add("&&!isnan({})&&!isnan({});", lhs, rhs); 18 "{}isnan({}){}isnan({});",
19 } else { 19 inst, lhs, op, rhs, nan_op, lhs, nan_op, rhs);
20 ctx.Add("||isnan({})||isnan({});", lhs, rhs);
21 }
22} 20}
23 21
24bool IsPrecise(const IR::Inst& inst) { 22bool IsPrecise(const IR::Inst& inst) {