]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - contrib/llvm/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.cpp
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / contrib / llvm / lib / Target / PowerPC / MCTargetDesc / PPCPredicates.cpp
1 //===-- PPCPredicates.cpp - PPC Branch Predicate Information --------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file implements the PowerPC branch predicates.
11 //
12 //===----------------------------------------------------------------------===//
13
14 #include "PPCPredicates.h"
15 #include "llvm/Support/ErrorHandling.h"
16 #include <cassert>
17 using namespace llvm;
18
19 PPC::Predicate PPC::InvertPredicate(PPC::Predicate Opcode) {
20   switch (Opcode) {
21   case PPC::PRED_EQ: return PPC::PRED_NE;
22   case PPC::PRED_NE: return PPC::PRED_EQ;
23   case PPC::PRED_LT: return PPC::PRED_GE;
24   case PPC::PRED_GE: return PPC::PRED_LT;
25   case PPC::PRED_GT: return PPC::PRED_LE;
26   case PPC::PRED_LE: return PPC::PRED_GT;
27   case PPC::PRED_NU: return PPC::PRED_UN;
28   case PPC::PRED_UN: return PPC::PRED_NU;
29   }
30   llvm_unreachable("Unknown PPC branch opcode!");
31 }
32
33 PPC::Predicate PPC::getSwappedPredicate(PPC::Predicate Opcode) {
34   switch (Opcode) {
35   case PPC::PRED_EQ: return PPC::PRED_EQ;
36   case PPC::PRED_NE: return PPC::PRED_NE;
37   case PPC::PRED_LT: return PPC::PRED_GT;
38   case PPC::PRED_GE: return PPC::PRED_LE;
39   case PPC::PRED_GT: return PPC::PRED_LT;
40   case PPC::PRED_LE: return PPC::PRED_GE;
41   case PPC::PRED_NU: return PPC::PRED_NU;
42   case PPC::PRED_UN: return PPC::PRED_UN;
43   }
44   llvm_unreachable("Unknown PPC branch opcode!");
45 }
46