summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86InstrInfo.cpp
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2008-11-26 22:37:40 +0000
committerBill Wendling <isanbard@gmail.com>2008-11-26 22:37:40 +0000
commit751a694ad351924fdbd69a7702d3e39c6d263b93 (patch)
treee18a4eebbd922b979f25a7b4bec59ab6916cc216 /llvm/lib/Target/X86/X86InstrInfo.cpp
parent57251782d0345403f89e8615b060486b37538501 (diff)
downloadbcm5719-llvm-751a694ad351924fdbd69a7702d3e39c6d263b93.tar.gz
bcm5719-llvm-751a694ad351924fdbd69a7702d3e39c6d263b93.zip
Generate something sensible for an [SU]ADDO op when the overflow/carry flag is
the conditional for the BRCOND statement. For instance, it will generate: addl %eax, %ecx jo LOF instead of addl %eax, %ecx ; About 10 instructions to compare the signs of LHS, RHS, and sum. jl LOF llvm-svn: 60123
Diffstat (limited to 'llvm/lib/Target/X86/X86InstrInfo.cpp')
-rw-r--r--llvm/lib/Target/X86/X86InstrInfo.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86InstrInfo.cpp b/llvm/lib/Target/X86/X86InstrInfo.cpp
index 2e449b99316..ba73f49f883 100644
--- a/llvm/lib/Target/X86/X86InstrInfo.cpp
+++ b/llvm/lib/Target/X86/X86InstrInfo.cpp
@@ -1382,6 +1382,8 @@ static X86::CondCode GetCondFromBranchOpc(unsigned BrOpc) {
case X86::JNP: return X86::COND_NP;
case X86::JO: return X86::COND_O;
case X86::JNO: return X86::COND_NO;
+ case X86::JC: return X86::COND_C;
+ case X86::JNC: return X86::COND_NC;
}
}
@@ -1404,6 +1406,8 @@ unsigned X86::GetCondBranchFromCond(X86::CondCode CC) {
case X86::COND_NP: return X86::JNP;
case X86::COND_O: return X86::JO;
case X86::COND_NO: return X86::JNO;
+ case X86::COND_C: return X86::JC;
+ case X86::COND_NC: return X86::JNC;
}
}
@@ -1428,6 +1432,8 @@ X86::CondCode X86::GetOppositeBranchCondition(X86::CondCode CC) {
case X86::COND_NP: return X86::COND_P;
case X86::COND_O: return X86::COND_NO;
case X86::COND_NO: return X86::COND_O;
+ case X86::COND_C: return X86::COND_NC;
+ case X86::COND_NC: return X86::COND_C;
}
}
OpenPOWER on IntegriCloud