From 8e9c1826896d5a2565de8c397d236492a37f1ac2 Mon Sep 17 00:00:00 2001 From: Mr-Wiseguy Date: Sun, 29 Sep 2024 02:18:20 -0400 Subject: [PATCH] Fixed pair of bugs with float compare flag that cancelled each other out --- src/cgenerator.cpp | 4 ++-- src/operations.cpp | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/cgenerator.cpp b/src/cgenerator.cpp index f8607e6..191d306 100644 --- a/src/cgenerator.cpp +++ b/src/cgenerator.cpp @@ -333,10 +333,10 @@ void N64Recomp::CGenerator::get_binary_expr_string(BinaryOpType type, const Bina expr_string = fmt::format("{} {} {} ? 1 : 0", input_a, infix_string, input_b); } else if (type == BinaryOpType::Equal && operands.operands[1] == Operand::Zero && operands.operand_operations[1] == UnaryOpType::None) { - expr_string = input_a; + expr_string = "!" + input_a; } else if (type == BinaryOpType::NotEqual && operands.operands[1] == Operand::Zero && operands.operand_operations[1] == UnaryOpType::None) { - expr_string = "!" + input_a; + expr_string = input_a; } // End unnecessary cases. diff --git a/src/operations.cpp b/src/operations.cpp index d73b278..e3b372c 100644 --- a/src/operations.cpp +++ b/src/operations.cpp @@ -159,10 +159,10 @@ namespace N64Recomp { { InstrId::cpu_bltzl, { BinaryOpType::Less, {{ UnaryOpType::ToS64, UnaryOpType::None }, { Operand::Rs, Operand::Zero }}, false, true }}, { InstrId::cpu_bgezal, { BinaryOpType::GreaterEq, {{ UnaryOpType::ToS64, UnaryOpType::None }, { Operand::Rs, Operand::Zero }}, true, false }}, { InstrId::cpu_bgezall, { BinaryOpType::GreaterEq, {{ UnaryOpType::ToS64, UnaryOpType::None }, { Operand::Rs, Operand::Zero }}, true, true }}, - { InstrId::cpu_bc1f, { BinaryOpType::NotEqual, {{ UnaryOpType::None, UnaryOpType::None }, { Operand::Cop1cs, Operand::Zero }}, false, false }}, - { InstrId::cpu_bc1fl, { BinaryOpType::NotEqual, {{ UnaryOpType::None, UnaryOpType::None }, { Operand::Cop1cs, Operand::Zero }}, false, true }}, - { InstrId::cpu_bc1t, { BinaryOpType::Equal, {{ UnaryOpType::None, UnaryOpType::None }, { Operand::Cop1cs, Operand::Zero }}, false, false }}, - { InstrId::cpu_bc1tl, { BinaryOpType::Equal, {{ UnaryOpType::None, UnaryOpType::None }, { Operand::Cop1cs, Operand::Zero }}, false, true }}, + { InstrId::cpu_bc1f, { BinaryOpType::Equal, {{ UnaryOpType::None, UnaryOpType::None }, { Operand::Cop1cs, Operand::Zero }}, false, false }}, + { InstrId::cpu_bc1fl, { BinaryOpType::Equal, {{ UnaryOpType::None, UnaryOpType::None }, { Operand::Cop1cs, Operand::Zero }}, false, true }}, + { InstrId::cpu_bc1t, { BinaryOpType::NotEqual, {{ UnaryOpType::None, UnaryOpType::None }, { Operand::Cop1cs, Operand::Zero }}, false, false }}, + { InstrId::cpu_bc1tl, { BinaryOpType::NotEqual, {{ UnaryOpType::None, UnaryOpType::None }, { Operand::Cop1cs, Operand::Zero }}, false, true }}, }; const std::unordered_map store_ops {