From 69deaa097670ddfaa24640eb90f7ebb03728ddf7 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Fri, 21 Jul 2023 10:12:39 -0400 Subject: [PATCH] LongDivideRemovalPass: Don't detect xor zero It is now optimized out (canonicalized) in the frontend. Signed-off-by: Alyssa Rosenzweig --- .../Source/Interface/IR/Passes/LongDivideRemovalPass.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/External/FEXCore/Source/Interface/IR/Passes/LongDivideRemovalPass.cpp b/External/FEXCore/Source/Interface/IR/Passes/LongDivideRemovalPass.cpp index edc6a5cb6..a6abd048d 100644 --- a/External/FEXCore/Source/Interface/IR/Passes/LongDivideRemovalPass.cpp +++ b/External/FEXCore/Source/Interface/IR/Passes/LongDivideRemovalPass.cpp @@ -28,11 +28,7 @@ bool LongDivideEliminationPass::IsZeroOp(IREmitter *IREmit, OrderedNodeWrapper A auto IROp = IREmit->GetOpHeader(Arg); uint64_t Value; - // XOR based zero - if (IROp->Op == OP_XOR) { - return IROp->Args[0] == IROp->Args[1]; - } - else if (IREmit->IsValueConstant(Arg, &Value)) { + if (IREmit->IsValueConstant(Arg, &Value)) { // Zero constant based zero op return Value == 0; } @@ -87,8 +83,7 @@ bool LongDivideEliminationPass::Run(IREmitter *IREmit) { else if (IROp->Op == OP_LUDIV || IROp->Op == OP_LUREM) { auto Op = IROp->C(); - // Check upper Op to see if it came from a xor zeroing op - // XOR: Result = _Xor(Dest, Src); + // Check upper Op to see if it came from a zeroing op // If it does then it we only need a 64bit UDIV if (IsZeroOp(IREmit, Op->Upper)) { IREmit->SetWriteCursor(CodeNode);