mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-16 14:31:59 +00:00
Fix PR9127 by reversing the operands even if they have more then one use.
Reversing the operands allows us to fold, but doesn't force us to. Also, at this point the DAG is still being optimized, so the check for hasOneUse is not very precise. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124773 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b0cfa6cab8
commit
f297c93191
@ -2712,8 +2712,8 @@ static unsigned TranslateX86CC(ISD::CondCode SetCCOpcode, bool isFP,
|
||||
// First determine if it is required or is profitable to flip the operands.
|
||||
|
||||
// If LHS is a foldable load, but RHS is not, flip the condition.
|
||||
if ((ISD::isNON_EXTLoad(LHS.getNode()) && LHS.hasOneUse()) &&
|
||||
!(ISD::isNON_EXTLoad(RHS.getNode()) && RHS.hasOneUse())) {
|
||||
if (ISD::isNON_EXTLoad(LHS.getNode()) &&
|
||||
!ISD::isNON_EXTLoad(RHS.getNode())) {
|
||||
SetCCOpcode = getSetCCSwappedOperands(SetCCOpcode);
|
||||
std::swap(LHS, RHS);
|
||||
}
|
||||
|
12
test/CodeGen/X86/pr9127.ll
Normal file
12
test/CodeGen/X86/pr9127.ll
Normal file
@ -0,0 +1,12 @@
|
||||
; RUN: llc < %s | FileCheck %s
|
||||
|
||||
define i8 @foobar(double %d, double* %x) {
|
||||
entry:
|
||||
%tmp2 = load double* %x, align 8
|
||||
%cmp = fcmp oeq double %tmp2, %d
|
||||
%conv3 = zext i1 %cmp to i8
|
||||
ret i8 %conv3
|
||||
}
|
||||
|
||||
; test that the load is folded.
|
||||
; CHECK: ucomisd (%rdi), %xmm0
|
Loading…
x
Reference in New Issue
Block a user