mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-27 14:32:21 +00:00
Implement the optimized FCMP_OEQ/FCMP_UNE code for x86 fast-isel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57915 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
237033e6ac
commit
7b66e04182
@ -692,6 +692,11 @@ bool X86FastISel::X86SelectBranch(Instruction *I) {
|
||||
unsigned BranchOpc; // Opcode to jump on, e.g. "X86::JA"
|
||||
|
||||
switch (Predicate) {
|
||||
case CmpInst::FCMP_OEQ:
|
||||
std::swap(TrueMBB, FalseMBB);
|
||||
Predicate = CmpInst::FCMP_UNE;
|
||||
// FALL THROUGH
|
||||
case CmpInst::FCMP_UNE: SwapArgs = false; BranchOpc = X86::JNE; break;
|
||||
case CmpInst::FCMP_OGT: SwapArgs = false; BranchOpc = X86::JA; break;
|
||||
case CmpInst::FCMP_OGE: SwapArgs = false; BranchOpc = X86::JAE; break;
|
||||
case CmpInst::FCMP_OLT: SwapArgs = true; BranchOpc = X86::JA; break;
|
||||
@ -728,6 +733,13 @@ bool X86FastISel::X86SelectBranch(Instruction *I) {
|
||||
return false;
|
||||
|
||||
BuildMI(MBB, TII.get(BranchOpc)).addMBB(TrueMBB);
|
||||
|
||||
if (Predicate == CmpInst::FCMP_UNE) {
|
||||
// X86 requires a second branch to handle UNE (and OEQ,
|
||||
// which is mapped to UNE above).
|
||||
BuildMI(MBB, TII.get(X86::JP)).addMBB(TrueMBB);
|
||||
}
|
||||
|
||||
FastEmitBranch(FalseMBB);
|
||||
MBB->addSuccessor(TrueMBB);
|
||||
return true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user