111424445SEvan Cheng //===-- PPCPredicates.cpp - PPC Branch Predicate Information --------------===//
211424445SEvan Cheng //
311424445SEvan Cheng //                     The LLVM Compiler Infrastructure
411424445SEvan Cheng //
511424445SEvan Cheng // This file is distributed under the University of Illinois Open Source
611424445SEvan Cheng // License. See LICENSE.TXT for details.
711424445SEvan Cheng //
811424445SEvan Cheng //===----------------------------------------------------------------------===//
911424445SEvan Cheng //
1011424445SEvan Cheng // This file implements the PowerPC branch predicates.
1111424445SEvan Cheng //
1211424445SEvan Cheng //===----------------------------------------------------------------------===//
1311424445SEvan Cheng 
1411424445SEvan Cheng #include "PPCPredicates.h"
1511424445SEvan Cheng #include "llvm/Support/ErrorHandling.h"
1611424445SEvan Cheng #include <cassert>
1711424445SEvan Cheng using namespace llvm;
1811424445SEvan Cheng 
1911424445SEvan Cheng PPC::Predicate PPC::InvertPredicate(PPC::Predicate Opcode) {
2011424445SEvan Cheng   switch (Opcode) {
2111424445SEvan Cheng   case PPC::PRED_EQ: return PPC::PRED_NE;
2211424445SEvan Cheng   case PPC::PRED_NE: return PPC::PRED_EQ;
2311424445SEvan Cheng   case PPC::PRED_LT: return PPC::PRED_GE;
2411424445SEvan Cheng   case PPC::PRED_GE: return PPC::PRED_LT;
2511424445SEvan Cheng   case PPC::PRED_GT: return PPC::PRED_LE;
2611424445SEvan Cheng   case PPC::PRED_LE: return PPC::PRED_GT;
2711424445SEvan Cheng   case PPC::PRED_NU: return PPC::PRED_UN;
2811424445SEvan Cheng   case PPC::PRED_UN: return PPC::PRED_NU;
2911424445SEvan Cheng   }
30*c2467c4eSDavid Blaikie   llvm_unreachable("Unknown PPC branch opcode!");
3111424445SEvan Cheng }
320f64e21bSHal Finkel 
330f64e21bSHal Finkel PPC::Predicate PPC::getSwappedPredicate(PPC::Predicate Opcode) {
340f64e21bSHal Finkel   switch (Opcode) {
350f64e21bSHal Finkel   case PPC::PRED_EQ: return PPC::PRED_EQ;
360f64e21bSHal Finkel   case PPC::PRED_NE: return PPC::PRED_NE;
370f64e21bSHal Finkel   case PPC::PRED_LT: return PPC::PRED_GT;
380f64e21bSHal Finkel   case PPC::PRED_GE: return PPC::PRED_LE;
390f64e21bSHal Finkel   case PPC::PRED_GT: return PPC::PRED_LT;
400f64e21bSHal Finkel   case PPC::PRED_LE: return PPC::PRED_GE;
410f64e21bSHal Finkel   case PPC::PRED_NU: return PPC::PRED_NU;
420f64e21bSHal Finkel   case PPC::PRED_UN: return PPC::PRED_UN;
430f64e21bSHal Finkel   }
44*c2467c4eSDavid Blaikie   llvm_unreachable("Unknown PPC branch opcode!");
450f64e21bSHal Finkel }
460f64e21bSHal Finkel 
47