LLVM
20.0.0git
lib
Target
PowerPC
MCTargetDesc
PPCPredicates.cpp
Go to the documentation of this file.
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
using namespace
llvm
;
16
17
PPC::Predicate
PPC::InvertPredicate
(
PPC::Predicate
Opcode) {
18
switch
(Opcode) {
19
case
PPC::PRED_EQ
:
return
PPC::PRED_NE
;
20
case
PPC::PRED_NE
:
return
PPC::PRED_EQ
;
21
case
PPC::PRED_LT
:
return
PPC::PRED_GE
;
22
case
PPC::PRED_GE
:
return
PPC::PRED_LT
;
23
case
PPC::PRED_GT
:
return
PPC::PRED_LE
;
24
case
PPC::PRED_LE
:
return
PPC::PRED_GT
;
25
case
PPC::PRED_NU
:
return
PPC::PRED_UN
;
26
case
PPC::PRED_UN
:
return
PPC::PRED_NU
;
27
case
PPC::PRED_EQ_MINUS
:
return
PPC::PRED_NE_PLUS
;
28
case
PPC::PRED_NE_MINUS
:
return
PPC::PRED_EQ_PLUS
;
29
case
PPC::PRED_LT_MINUS
:
return
PPC::PRED_GE_PLUS
;
30
case
PPC::PRED_GE_MINUS
:
return
PPC::PRED_LT_PLUS
;
31
case
PPC::PRED_GT_MINUS
:
return
PPC::PRED_LE_PLUS
;
32
case
PPC::PRED_LE_MINUS
:
return
PPC::PRED_GT_PLUS
;
33
case
PPC::PRED_NU_MINUS
:
return
PPC::PRED_UN_PLUS
;
34
case
PPC::PRED_UN_MINUS
:
return
PPC::PRED_NU_PLUS
;
35
case
PPC::PRED_EQ_PLUS
:
return
PPC::PRED_NE_MINUS
;
36
case
PPC::PRED_NE_PLUS
:
return
PPC::PRED_EQ_MINUS
;
37
case
PPC::PRED_LT_PLUS
:
return
PPC::PRED_GE_MINUS
;
38
case
PPC::PRED_GE_PLUS
:
return
PPC::PRED_LT_MINUS
;
39
case
PPC::PRED_GT_PLUS
:
return
PPC::PRED_LE_MINUS
;
40
case
PPC::PRED_LE_PLUS
:
return
PPC::PRED_GT_MINUS
;
41
case
PPC::PRED_NU_PLUS
:
return
PPC::PRED_UN_MINUS
;
42
case
PPC::PRED_UN_PLUS
:
return
PPC::PRED_NU_MINUS
;
43
44
// Simple predicates for single condition-register bits.
45
case
PPC::PRED_BIT_SET
:
return
PPC::PRED_BIT_UNSET
;
46
case
PPC::PRED_BIT_UNSET
:
return
PPC::PRED_BIT_SET
;
47
}
48
llvm_unreachable
(
"Unknown PPC branch opcode!"
);
49
}
50
51
PPC::Predicate
PPC::getSwappedPredicate
(
PPC::Predicate
Opcode) {
52
switch
(Opcode) {
53
case
PPC::PRED_EQ
:
return
PPC::PRED_EQ
;
54
case
PPC::PRED_NE
:
return
PPC::PRED_NE
;
55
case
PPC::PRED_LT
:
return
PPC::PRED_GT
;
56
case
PPC::PRED_GE
:
return
PPC::PRED_LE
;
57
case
PPC::PRED_GT
:
return
PPC::PRED_LT
;
58
case
PPC::PRED_LE
:
return
PPC::PRED_GE
;
59
case
PPC::PRED_NU
:
return
PPC::PRED_NU
;
60
case
PPC::PRED_UN
:
return
PPC::PRED_UN
;
61
case
PPC::PRED_EQ_MINUS
:
return
PPC::PRED_EQ_MINUS
;
62
case
PPC::PRED_NE_MINUS
:
return
PPC::PRED_NE_MINUS
;
63
case
PPC::PRED_LT_MINUS
:
return
PPC::PRED_GT_MINUS
;
64
case
PPC::PRED_GE_MINUS
:
return
PPC::PRED_LE_MINUS
;
65
case
PPC::PRED_GT_MINUS
:
return
PPC::PRED_LT_MINUS
;
66
case
PPC::PRED_LE_MINUS
:
return
PPC::PRED_GE_MINUS
;
67
case
PPC::PRED_NU_MINUS
:
return
PPC::PRED_NU_MINUS
;
68
case
PPC::PRED_UN_MINUS
:
return
PPC::PRED_UN_MINUS
;
69
case
PPC::PRED_EQ_PLUS
:
return
PPC::PRED_EQ_PLUS
;
70
case
PPC::PRED_NE_PLUS
:
return
PPC::PRED_NE_PLUS
;
71
case
PPC::PRED_LT_PLUS
:
return
PPC::PRED_GT_PLUS
;
72
case
PPC::PRED_GE_PLUS
:
return
PPC::PRED_LE_PLUS
;
73
case
PPC::PRED_GT_PLUS
:
return
PPC::PRED_LT_PLUS
;
74
case
PPC::PRED_LE_PLUS
:
return
PPC::PRED_GE_PLUS
;
75
case
PPC::PRED_NU_PLUS
:
return
PPC::PRED_NU_PLUS
;
76
case
PPC::PRED_UN_PLUS
:
return
PPC::PRED_UN_PLUS
;
77
78
case
PPC::PRED_BIT_SET
:
79
case
PPC::PRED_BIT_UNSET
:
80
llvm_unreachable
(
"Invalid use of bit predicate code"
);
81
}
82
llvm_unreachable
(
"Unknown PPC branch opcode!"
);
83
}
84
PPCPredicates.h
ErrorHandling.h
llvm_unreachable
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
Definition:
ErrorHandling.h:143
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...
Definition:
PPCPredicates.cpp:51
llvm::PPC::Predicate
Predicate
Predicate - These are "(BI << 5) | BO" for various predicates.
Definition:
PPCPredicates.h:26
llvm::PPC::PRED_GE_PLUS
@ PRED_GE_PLUS
Definition:
PPCPredicates.h:46
llvm::PPC::PRED_BIT_SET
@ PRED_BIT_SET
Definition:
PPCPredicates.h:57
llvm::PPC::PRED_LT_MINUS
@ PRED_LT_MINUS
Definition:
PPCPredicates.h:35
llvm::PPC::PRED_EQ
@ PRED_EQ
Definition:
PPCPredicates.h:29
llvm::PPC::PRED_GE
@ PRED_GE
Definition:
PPCPredicates.h:30
llvm::PPC::PRED_LE_PLUS
@ PRED_LE_PLUS
Definition:
PPCPredicates.h:44
llvm::PPC::PRED_LT
@ PRED_LT
Definition:
PPCPredicates.h:27
llvm::PPC::PRED_LT_PLUS
@ PRED_LT_PLUS
Definition:
PPCPredicates.h:43
llvm::PPC::PRED_UN_PLUS
@ PRED_UN_PLUS
Definition:
PPCPredicates.h:49
llvm::PPC::PRED_NE_PLUS
@ PRED_NE_PLUS
Definition:
PPCPredicates.h:48
llvm::PPC::PRED_UN_MINUS
@ PRED_UN_MINUS
Definition:
PPCPredicates.h:41
llvm::PPC::PRED_UN
@ PRED_UN
Definition:
PPCPredicates.h:33
llvm::PPC::PRED_GT_PLUS
@ PRED_GT_PLUS
Definition:
PPCPredicates.h:47
llvm::PPC::PRED_GT
@ PRED_GT
Definition:
PPCPredicates.h:31
llvm::PPC::PRED_NU
@ PRED_NU
Definition:
PPCPredicates.h:34
llvm::PPC::PRED_NU_PLUS
@ PRED_NU_PLUS
Definition:
PPCPredicates.h:50
llvm::PPC::PRED_GE_MINUS
@ PRED_GE_MINUS
Definition:
PPCPredicates.h:38
llvm::PPC::PRED_BIT_UNSET
@ PRED_BIT_UNSET
Definition:
PPCPredicates.h:58
llvm::PPC::PRED_LE_MINUS
@ PRED_LE_MINUS
Definition:
PPCPredicates.h:36
llvm::PPC::PRED_NE_MINUS
@ PRED_NE_MINUS
Definition:
PPCPredicates.h:40
llvm::PPC::PRED_GT_MINUS
@ PRED_GT_MINUS
Definition:
PPCPredicates.h:39
llvm::PPC::PRED_LE
@ PRED_LE
Definition:
PPCPredicates.h:28
llvm::PPC::PRED_NU_MINUS
@ PRED_NU_MINUS
Definition:
PPCPredicates.h:42
llvm::PPC::PRED_NE
@ PRED_NE
Definition:
PPCPredicates.h:32
llvm::PPC::PRED_EQ_MINUS
@ PRED_EQ_MINUS
Definition:
PPCPredicates.h:37
llvm::PPC::PRED_EQ_PLUS
@ PRED_EQ_PLUS
Definition:
PPCPredicates.h:45
llvm::PPC::InvertPredicate
Predicate InvertPredicate(Predicate Opcode)
Invert the specified predicate. != -> ==, < -> >=.
Definition:
PPCPredicates.cpp:17
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:
AddressRanges.h:18
Generated on Mon Dec 23 2024 20:26:50 for LLVM by
1.9.6