Coverage Report

Created: 2019-07-24 05:18

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.cpp
Line
Count
Source (jump to first uncovered line)
1
//===-- PPCPredicates.cpp - PPC Branch Predicate Information --------------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// This file implements the PowerPC branch predicates.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#include "PPCPredicates.h"
14
#include "llvm/Support/ErrorHandling.h"
15
#include <cassert>
16
using namespace llvm;
17
18
13.0k
PPC::Predicate PPC::InvertPredicate(PPC::Predicate Opcode) {
19
13.0k
  switch (Opcode) {
20
13.0k
  
case PPC::PRED_EQ: return PPC::PRED_NE2.21k
;
21
13.0k
  
case PPC::PRED_NE: return PPC::PRED_EQ3.35k
;
22
13.0k
  
case PPC::PRED_LT: return PPC::PRED_GE622
;
23
13.0k
  
case PPC::PRED_GE: return PPC::PRED_LT795
;
24
13.0k
  
case PPC::PRED_GT: return PPC::PRED_LE677
;
25
13.0k
  
case PPC::PRED_LE: return PPC::PRED_GT702
;
26
13.0k
  
case PPC::PRED_NU: return PPC::PRED_UN16
;
27
13.0k
  
case PPC::PRED_UN: return PPC::PRED_NU8
;
28
13.0k
  
case PPC::PRED_EQ_MINUS: return PPC::PRED_NE_PLUS52
;
29
13.0k
  
case PPC::PRED_NE_MINUS: return PPC::PRED_EQ_PLUS55
;
30
13.0k
  
case PPC::PRED_LT_MINUS: return PPC::PRED_GE_PLUS0
;
31
13.0k
  
case PPC::PRED_GE_MINUS: return PPC::PRED_LT_PLUS8
;
32
13.0k
  
case PPC::PRED_GT_MINUS: return PPC::PRED_LE_PLUS2
;
33
13.0k
  
case PPC::PRED_LE_MINUS: return PPC::PRED_GT_PLUS3
;
34
13.0k
  
case PPC::PRED_NU_MINUS: return PPC::PRED_UN_PLUS0
;
35
13.0k
  
case PPC::PRED_UN_MINUS: return PPC::PRED_NU_PLUS0
;
36
13.0k
  
case PPC::PRED_EQ_PLUS: return PPC::PRED_NE_MINUS41
;
37
13.0k
  
case PPC::PRED_NE_PLUS: return PPC::PRED_EQ_MINUS59
;
38
13.0k
  
case PPC::PRED_LT_PLUS: return PPC::PRED_GE_MINUS10
;
39
13.0k
  
case PPC::PRED_GE_PLUS: return PPC::PRED_LT_MINUS8
;
40
13.0k
  
case PPC::PRED_GT_PLUS: return PPC::PRED_LE_MINUS6
;
41
13.0k
  
case PPC::PRED_LE_PLUS: return PPC::PRED_GT_MINUS0
;
42
13.0k
  
case PPC::PRED_NU_PLUS: return PPC::PRED_UN_MINUS0
;
43
13.0k
  
case PPC::PRED_UN_PLUS: return PPC::PRED_NU_MINUS0
;
44
13.0k
45
13.0k
  // Simple predicates for single condition-register bits.
46
13.0k
  
case PPC::PRED_BIT_SET: return PPC::PRED_BIT_UNSET2.53k
;
47
13.0k
  
case PPC::PRED_BIT_UNSET: return PPC::PRED_BIT_SET1.86k
;
48
0
  }
49
0
  llvm_unreachable("Unknown PPC branch opcode!");
50
0
}
51
52
10
PPC::Predicate PPC::getSwappedPredicate(PPC::Predicate Opcode) {
53
10
  switch (Opcode) {
54
10
  
case PPC::PRED_EQ: return PPC::PRED_EQ0
;
55
10
  case PPC::PRED_NE: return PPC::PRED_NE;
56
10
  
case PPC::PRED_LT: return PPC::PRED_GT0
;
57
10
  
case PPC::PRED_GE: return PPC::PRED_LE0
;
58
10
  
case PPC::PRED_GT: return PPC::PRED_LT0
;
59
10
  
case PPC::PRED_LE: return PPC::PRED_GE0
;
60
10
  
case PPC::PRED_NU: return PPC::PRED_NU0
;
61
10
  
case PPC::PRED_UN: return PPC::PRED_UN0
;
62
10
  
case PPC::PRED_EQ_MINUS: return PPC::PRED_EQ_MINUS0
;
63
10
  
case PPC::PRED_NE_MINUS: return PPC::PRED_NE_MINUS0
;
64
10
  
case PPC::PRED_LT_MINUS: return PPC::PRED_GT_MINUS0
;
65
10
  
case PPC::PRED_GE_MINUS: return PPC::PRED_LE_MINUS0
;
66
10
  
case PPC::PRED_GT_MINUS: return PPC::PRED_LT_MINUS0
;
67
10
  
case PPC::PRED_LE_MINUS: return PPC::PRED_GE_MINUS0
;
68
10
  
case PPC::PRED_NU_MINUS: return PPC::PRED_NU_MINUS0
;
69
10
  
case PPC::PRED_UN_MINUS: return PPC::PRED_UN_MINUS0
;
70
10
  
case PPC::PRED_EQ_PLUS: return PPC::PRED_EQ_PLUS0
;
71
10
  
case PPC::PRED_NE_PLUS: return PPC::PRED_NE_PLUS0
;
72
10
  
case PPC::PRED_LT_PLUS: return PPC::PRED_GT_PLUS0
;
73
10
  
case PPC::PRED_GE_PLUS: return PPC::PRED_LE_PLUS0
;
74
10
  
case PPC::PRED_GT_PLUS: return PPC::PRED_LT_PLUS0
;
75
10
  
case PPC::PRED_LE_PLUS: return PPC::PRED_GE_PLUS0
;
76
10
  
case PPC::PRED_NU_PLUS: return PPC::PRED_NU_PLUS0
;
77
10
  
case PPC::PRED_UN_PLUS: return PPC::PRED_UN_PLUS0
;
78
10
79
10
  case PPC::PRED_BIT_SET:
80
0
  case PPC::PRED_BIT_UNSET:
81
0
    llvm_unreachable("Invalid use of bit predicate code");
82
0
  }
83
0
  llvm_unreachable("Unknown PPC branch opcode!");
84
0
}
85