Coverage Report

Created: 2017-10-03 07:32

/Users/buildslave/jenkins/sharedspace/clang-stage2-coverage-R@2/llvm/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.cpp
Line
Count
Source (jump to first uncovered line)
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
10.1k
PPC::Predicate PPC::InvertPredicate(PPC::Predicate Opcode) {
20
10.1k
  switch (Opcode) {
21
1.82k
  case PPC::PRED_EQ: return PPC::PRED_NE;
22
3.00k
  case PPC::PRED_NE: return PPC::PRED_EQ;
23
545
  case PPC::PRED_LT: return PPC::PRED_GE;
24
724
  case PPC::PRED_GE: return PPC::PRED_LT;
25
612
  case PPC::PRED_GT: return PPC::PRED_LE;
26
683
  case PPC::PRED_LE: return PPC::PRED_GT;
27
16
  case PPC::PRED_NU: return PPC::PRED_UN;
28
8
  case PPC::PRED_UN: return PPC::PRED_NU;
29
43
  case PPC::PRED_EQ_MINUS: return PPC::PRED_NE_PLUS;
30
48
  case PPC::PRED_NE_MINUS: return PPC::PRED_EQ_PLUS;
31
0
  case PPC::PRED_LT_MINUS: return PPC::PRED_GE_PLUS;
32
5
  case PPC::PRED_GE_MINUS: return PPC::PRED_LT_PLUS;
33
2
  case PPC::PRED_GT_MINUS: return PPC::PRED_LE_PLUS;
34
3
  case PPC::PRED_LE_MINUS: return PPC::PRED_GT_PLUS;
35
0
  case PPC::PRED_NU_MINUS: return PPC::PRED_UN_PLUS;
36
0
  case PPC::PRED_UN_MINUS: return PPC::PRED_NU_PLUS;
37
36
  case PPC::PRED_EQ_PLUS: return PPC::PRED_NE_MINUS;
38
45
  case PPC::PRED_NE_PLUS: return PPC::PRED_EQ_MINUS;
39
5
  case PPC::PRED_LT_PLUS: return PPC::PRED_GE_MINUS;
40
0
  case PPC::PRED_GE_PLUS: return PPC::PRED_LT_MINUS;
41
6
  case PPC::PRED_GT_PLUS: return PPC::PRED_LE_MINUS;
42
0
  case PPC::PRED_LE_PLUS: return PPC::PRED_GT_MINUS;
43
0
  case PPC::PRED_NU_PLUS: return PPC::PRED_UN_MINUS;
44
0
  case PPC::PRED_UN_PLUS: return PPC::PRED_NU_MINUS;
45
10.1k
46
10.1k
  // Simple predicates for single condition-register bits.
47
1.61k
  case PPC::PRED_BIT_SET:   return PPC::PRED_BIT_UNSET;
48
918
  case PPC::PRED_BIT_UNSET: return PPC::PRED_BIT_SET;
49
0
  }
50
0
  
llvm_unreachable0
("Unknown PPC branch opcode!");
51
0
}
52
53
10
PPC::Predicate PPC::getSwappedPredicate(PPC::Predicate Opcode) {
54
10
  switch (Opcode) {
55
0
  case PPC::PRED_EQ: return PPC::PRED_EQ;
56
10
  case PPC::PRED_NE: return PPC::PRED_NE;
57
0
  case PPC::PRED_LT: return PPC::PRED_GT;
58
0
  case PPC::PRED_GE: return PPC::PRED_LE;
59
0
  case PPC::PRED_GT: return PPC::PRED_LT;
60
0
  case PPC::PRED_LE: return PPC::PRED_GE;
61
0
  case PPC::PRED_NU: return PPC::PRED_NU;
62
0
  case PPC::PRED_UN: return PPC::PRED_UN;
63
0
  case PPC::PRED_EQ_MINUS: return PPC::PRED_EQ_MINUS;
64
0
  case PPC::PRED_NE_MINUS: return PPC::PRED_NE_MINUS;
65
0
  case PPC::PRED_LT_MINUS: return PPC::PRED_GT_MINUS;
66
0
  case PPC::PRED_GE_MINUS: return PPC::PRED_LE_MINUS;
67
0
  case PPC::PRED_GT_MINUS: return PPC::PRED_LT_MINUS;
68
0
  case PPC::PRED_LE_MINUS: return PPC::PRED_GE_MINUS;
69
0
  case PPC::PRED_NU_MINUS: return PPC::PRED_NU_MINUS;
70
0
  case PPC::PRED_UN_MINUS: return PPC::PRED_UN_MINUS;
71
0
  case PPC::PRED_EQ_PLUS: return PPC::PRED_EQ_PLUS;
72
0
  case PPC::PRED_NE_PLUS: return PPC::PRED_NE_PLUS;
73
0
  case PPC::PRED_LT_PLUS: return PPC::PRED_GT_PLUS;
74
0
  case PPC::PRED_GE_PLUS: return PPC::PRED_LE_PLUS;
75
0
  case PPC::PRED_GT_PLUS: return PPC::PRED_LT_PLUS;
76
0
  case PPC::PRED_LE_PLUS: return PPC::PRED_GE_PLUS;
77
0
  case PPC::PRED_NU_PLUS: return PPC::PRED_NU_PLUS;
78
0
  case PPC::PRED_UN_PLUS: return PPC::PRED_UN_PLUS;
79
10
80
0
  case PPC::PRED_BIT_SET:
81
0
  case PPC::PRED_BIT_UNSET:
82
0
    llvm_unreachable("Invalid use of bit predicate code");
83
0
  }
84
0
  
llvm_unreachable0
("Unknown PPC branch opcode!");
85
0
}
86