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