LLVM: lib/Target/Lanai/LanaiAluCode.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13#ifndef LLVM_LIB_TARGET_LANAI_LANAIALUCODE_H
14#define LLVM_LIB_TARGET_LANAI_LANAIALUCODE_H
15
18
19namespace llvm {
41
42
43
46
48 unsigned const OP_ENCODING_MASK = 0x07;
49 return AluOp & OP_ENCODING_MASK;
50}
51
52inline static unsigned getAluOp(unsigned AluOp) {
53 unsigned const ALU_MASK = 0x3F;
54 return AluOp & ALU_MASK;
55}
56
58
60
61inline static unsigned makePreOp(unsigned AluOp) {
62 assert((AluOp) && "Operator can't be a post- and pre-op");
64}
65
66inline static unsigned makePostOp(unsigned AluOp) {
67 assert((AluOp) && "Operator can't be a post- and pre-op");
69}
70
74
78 return "add";
80 return "addc";
82 return "sub";
84 return "subb";
86 return "and";
87 case OR:
88 return "or";
90 return "xor";
92 return "sh";
94 return "sh";
96 return "sha";
97 default:
99 }
100}
101
116}
117}
118
119#endif
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
This file implements the StringSwitch template, which mimics a switch() statement whose cases are str...
StringRef - Represent a constant reference to a string, i.e.
A switch()-like statement whose cases are string literals.
StringSwitch & Case(StringLiteral S, T Value)
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
Definition LanaiAluCode.h:20
static bool isPreOp(unsigned AluOp)
Definition LanaiAluCode.h:57
static unsigned getAluOp(unsigned AluOp)
Definition LanaiAluCode.h:52
static const char * lanaiAluCodeToString(unsigned AluOp)
Definition LanaiAluCode.h:75
static unsigned makePostOp(unsigned AluOp)
Definition LanaiAluCode.h:66
static unsigned makePreOp(unsigned AluOp)
Definition LanaiAluCode.h:61
static unsigned encodeLanaiAluCode(unsigned AluOp)
Definition LanaiAluCode.h:47
static AluCode stringToLanaiAluCode(StringRef S)
Definition LanaiAluCode.h:102
const int Lanai_POST_OP
Definition LanaiAluCode.h:45
AluCode
Definition LanaiAluCode.h:21
@ XOR
Definition LanaiAluCode.h:28
@ SHL
Definition LanaiAluCode.h:34
@ ADD
Definition LanaiAluCode.h:22
@ ADDC
Definition LanaiAluCode.h:23
@ AND
Definition LanaiAluCode.h:26
@ SRA
Definition LanaiAluCode.h:36
@ SPECIAL
Definition LanaiAluCode.h:29
@ UNKNOWN
Definition LanaiAluCode.h:39
@ OR
Definition LanaiAluCode.h:27
@ SUBB
Definition LanaiAluCode.h:25
@ SUB
Definition LanaiAluCode.h:24
@ SRL
Definition LanaiAluCode.h:35
static bool isPostOp(unsigned AluOp)
Definition LanaiAluCode.h:59
const int Lanai_PRE_OP
Definition LanaiAluCode.h:44
static bool modifiesOp(unsigned AluOp)
Definition LanaiAluCode.h:71
This is an optimization pass for GlobalISel generic memory operations.