From: Venkatraman Govindaraju Date: Fri, 4 Oct 2013 23:54:30 +0000 (+0000) Subject: [Sparc] Correct the floating point conditional code mapping in GetOppositeBranchCondi... X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=1c9524b6249ab01c71856e69c4f7071236cf54ed;p=oota-llvm.git [Sparc] Correct the floating point conditional code mapping in GetOppositeBranchCondition(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192006 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/Sparc/SparcInstrInfo.cpp b/lib/Target/Sparc/SparcInstrInfo.cpp index 0342db4696b..93d7b56501f 100644 --- a/lib/Target/Sparc/SparcInstrInfo.cpp +++ b/lib/Target/Sparc/SparcInstrInfo.cpp @@ -102,14 +102,14 @@ static SPCC::CondCodes GetOppositeBranchCondition(SPCC::CondCodes CC) case SPCC::FCC_U: return SPCC::FCC_O; case SPCC::FCC_O: return SPCC::FCC_U; - case SPCC::FCC_G: return SPCC::FCC_LE; - case SPCC::FCC_LE: return SPCC::FCC_G; - case SPCC::FCC_UG: return SPCC::FCC_ULE; - case SPCC::FCC_ULE: return SPCC::FCC_UG; - case SPCC::FCC_L: return SPCC::FCC_GE; - case SPCC::FCC_GE: return SPCC::FCC_L; - case SPCC::FCC_UL: return SPCC::FCC_UGE; - case SPCC::FCC_UGE: return SPCC::FCC_UL; + case SPCC::FCC_G: return SPCC::FCC_ULE; + case SPCC::FCC_LE: return SPCC::FCC_UG; + case SPCC::FCC_UG: return SPCC::FCC_LE; + case SPCC::FCC_ULE: return SPCC::FCC_G; + case SPCC::FCC_L: return SPCC::FCC_UGE; + case SPCC::FCC_GE: return SPCC::FCC_UL; + case SPCC::FCC_UL: return SPCC::FCC_GE; + case SPCC::FCC_UGE: return SPCC::FCC_L; case SPCC::FCC_LG: return SPCC::FCC_UE; case SPCC::FCC_UE: return SPCC::FCC_LG; case SPCC::FCC_NE: return SPCC::FCC_E; diff --git a/test/CodeGen/SPARC/2011-01-11-CC.ll b/test/CodeGen/SPARC/2011-01-11-CC.ll index edbcb4929ff..ba90ca1a721 100644 --- a/test/CodeGen/SPARC/2011-01-11-CC.ll +++ b/test/CodeGen/SPARC/2011-01-11-CC.ll @@ -103,3 +103,35 @@ entry: %1 = select i1 %0, double %f1, double %f2 ret double %1 } + +define i32 @test_float_cc(double %a, double %b, i32 %c, i32 %d) { +entry: +; V8-LABEL: test_float_cc +; V8: fcmpd +; V8: {{fbl|fbuge}} .LBB +; V8: fcmpd +; V8: {{fbule|fbg}} .LBB + +; V9-LABEL: test_float_cc +; V9: fcmpd +; V9: {{fbl|fbuge}} .LBB +; V9: fcmpd +; V9: {{fbule|fbg}} .LBB + + %0 = fcmp uge double %a, 0.000000e+00 + br i1 %0, label %loop, label %loop.2 + +loop: + %1 = icmp eq i32 %c, 10 + br i1 %1, label %loop, label %exit.0 + +loop.2: + %2 = fcmp ogt double %b, 0.000000e+00 + br i1 %2, label %exit.1, label %loop + +exit.0: + ret i32 0 + +exit.1: + ret i32 1 +}