LLVM
8.0.1
lib
Target
PowerPC
MCTargetDesc
PPCPredicates.cpp
Go to the documentation of this file.
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
case
PPC::PRED_EQ_MINUS
:
return
PPC::PRED_NE_PLUS
;
30
case
PPC::PRED_NE_MINUS
:
return
PPC::PRED_EQ_PLUS
;
31
case
PPC::PRED_LT_MINUS
:
return
PPC::PRED_GE_PLUS
;
32
case
PPC::PRED_GE_MINUS
:
return
PPC::PRED_LT_PLUS
;
33
case
PPC::PRED_GT_MINUS
:
return
PPC::PRED_LE_PLUS
;
34
case
PPC::PRED_LE_MINUS
:
return
PPC::PRED_GT_PLUS
;
35
case
PPC::PRED_NU_MINUS
:
return
PPC::PRED_UN_PLUS
;
36
case
PPC::PRED_UN_MINUS
:
return
PPC::PRED_NU_PLUS
;
37
case
PPC::PRED_EQ_PLUS
:
return
PPC::PRED_NE_MINUS
;
38
case
PPC::PRED_NE_PLUS
:
return
PPC::PRED_EQ_MINUS
;
39
case
PPC::PRED_LT_PLUS
:
return
PPC::PRED_GE_MINUS
;
40
case
PPC::PRED_GE_PLUS
:
return
PPC::PRED_LT_MINUS
;
41
case
PPC::PRED_GT_PLUS
:
return
PPC::PRED_LE_MINUS
;
42
case
PPC::PRED_LE_PLUS
:
return
PPC::PRED_GT_MINUS
;
43
case
PPC::PRED_NU_PLUS
:
return
PPC::PRED_UN_MINUS
;
44
case
PPC::PRED_UN_PLUS
:
return
PPC::PRED_NU_MINUS
;
45
46
// Simple predicates for single condition-register bits.
47
case
PPC::PRED_BIT_SET
:
return
PPC::PRED_BIT_UNSET
;
48
case
PPC::PRED_BIT_UNSET
:
return
PPC::PRED_BIT_SET
;
49
}
50
llvm_unreachable
(
"Unknown PPC branch opcode!"
);
51
}
52
53
PPC::Predicate
PPC::getSwappedPredicate
(
PPC::Predicate
Opcode) {
54
switch
(Opcode) {
55
case
PPC::PRED_EQ
:
return
PPC::PRED_EQ
;
56
case
PPC::PRED_NE
:
return
PPC::PRED_NE
;
57
case
PPC::PRED_LT
:
return
PPC::PRED_GT
;
58
case
PPC::PRED_GE
:
return
PPC::PRED_LE
;
59
case
PPC::PRED_GT
:
return
PPC::PRED_LT
;
60
case
PPC::PRED_LE
:
return
PPC::PRED_GE
;
61
case
PPC::PRED_NU
:
return
PPC::PRED_NU
;
62
case
PPC::PRED_UN
:
return
PPC::PRED_UN
;
63
case
PPC::PRED_EQ_MINUS
:
return
PPC::PRED_EQ_MINUS
;
64
case
PPC::PRED_NE_MINUS
:
return
PPC::PRED_NE_MINUS
;
65
case
PPC::PRED_LT_MINUS
:
return
PPC::PRED_GT_MINUS
;
66
case
PPC::PRED_GE_MINUS
:
return
PPC::PRED_LE_MINUS
;
67
case
PPC::PRED_GT_MINUS
:
return
PPC::PRED_LT_MINUS
;
68
case
PPC::PRED_LE_MINUS
:
return
PPC::PRED_GE_MINUS
;
69
case
PPC::PRED_NU_MINUS
:
return
PPC::PRED_NU_MINUS
;
70
case
PPC::PRED_UN_MINUS
:
return
PPC::PRED_UN_MINUS
;
71
case
PPC::PRED_EQ_PLUS
:
return
PPC::PRED_EQ_PLUS
;
72
case
PPC::PRED_NE_PLUS
:
return
PPC::PRED_NE_PLUS
;
73
case
PPC::PRED_LT_PLUS
:
return
PPC::PRED_GT_PLUS
;
74
case
PPC::PRED_GE_PLUS
:
return
PPC::PRED_LE_PLUS
;
75
case
PPC::PRED_GT_PLUS
:
return
PPC::PRED_LT_PLUS
;
76
case
PPC::PRED_LE_PLUS
:
return
PPC::PRED_GE_PLUS
;
77
case
PPC::PRED_NU_PLUS
:
return
PPC::PRED_NU_PLUS
;
78
case
PPC::PRED_UN_PLUS
:
return
PPC::PRED_UN_PLUS
;
79
80
case
PPC::PRED_BIT_SET
:
81
case
PPC::PRED_BIT_UNSET
:
82
llvm_unreachable
(
"Invalid use of bit predicate code"
);
83
}
84
llvm_unreachable
(
"Unknown PPC branch opcode!"
);
85
}
86
llvm::PPC::PRED_GE_MINUS
Definition:
PPCPredicates.h:39
llvm::PPC::PRED_GT
Definition:
PPCPredicates.h:32
llvm
This class represents lattice values for constants.
Definition:
AllocatorList.h:24
llvm::PPC::PRED_NU_MINUS
Definition:
PPCPredicates.h:43
llvm::PPC::PRED_LE
Definition:
PPCPredicates.h:29
llvm::PPC::PRED_UN_MINUS
Definition:
PPCPredicates.h:42
llvm::PPC::PRED_GE_PLUS
Definition:
PPCPredicates.h:47
llvm::PPC::PRED_GE
Definition:
PPCPredicates.h:31
llvm::PPC::PRED_BIT_SET
Definition:
PPCPredicates.h:58
llvm::PPC::PRED_NU_PLUS
Definition:
PPCPredicates.h:51
llvm::PPC::PRED_NE
Definition:
PPCPredicates.h:33
llvm::PPC::PRED_EQ
Definition:
PPCPredicates.h:30
llvm::PPC::PRED_NE_MINUS
Definition:
PPCPredicates.h:41
llvm::PPC::PRED_NE_PLUS
Definition:
PPCPredicates.h:49
llvm::PPC::PRED_GT_MINUS
Definition:
PPCPredicates.h:40
llvm::PPC::PRED_UN
Definition:
PPCPredicates.h:34
llvm::PPC::PRED_UN_PLUS
Definition:
PPCPredicates.h:50
llvm::PPC::PRED_LT
Definition:
PPCPredicates.h:28
llvm_unreachable
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
Definition:
ErrorHandling.h:136
llvm::PPC::PRED_LE_MINUS
Definition:
PPCPredicates.h:37
llvm::PPC::PRED_LT_MINUS
Definition:
PPCPredicates.h:36
llvm::PPC::PRED_GT_PLUS
Definition:
PPCPredicates.h:48
llvm::PPC::Predicate
Predicate
Predicate - These are "(BI << 5) | BO" for various predicates.
Definition:
PPCPredicates.h:27
llvm::PPC::PRED_LE_PLUS
Definition:
PPCPredicates.h:45
ErrorHandling.h
llvm::PPC::PRED_NU
Definition:
PPCPredicates.h:35
llvm::PPC::InvertPredicate
Predicate InvertPredicate(Predicate Opcode)
Invert the specified predicate. != -> ==, < -> >=.
llvm::PPC::PRED_BIT_UNSET
Definition:
PPCPredicates.h:59
llvm::PPC::PRED_EQ_MINUS
Definition:
PPCPredicates.h:38
PPCPredicates.h
llvm::PPC::PRED_LT_PLUS
Definition:
PPCPredicates.h:44
llvm::PPC::PRED_EQ_PLUS
Definition:
PPCPredicates.h:46
llvm::PPC::getSwappedPredicate
Predicate getSwappedPredicate(Predicate Opcode)
Assume the condition register is set by MI(a,b), return the predicate if we modify the instructions s...
Generated on Sun Dec 20 2020 13:57:26 for LLVM by
1.8.13