LLVM 24.0.0git
SystemZ.h
Go to the documentation of this file.
1//==- SystemZ.h - Top-Level Interface for SystemZ representation -*- C++ -*-==//
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 contains the entry points for global functions defined in
10// the LLVM SystemZ backend.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZ_H
15#define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZ_H
16
19
20namespace llvm {
21class FunctionPass;
22class ModulePass;
23class PassRegistry;
25
26namespace SystemZ {
27// Condition-code mask values.
28const unsigned CCMASK_NONE = 0;
29const unsigned CCMASK_0 = 1 << 3;
30const unsigned CCMASK_1 = 1 << 2;
31const unsigned CCMASK_2 = 1 << 1;
32const unsigned CCMASK_3 = 1 << 0;
34
35// Condition-code mask assignments for integer and floating-point
36// comparisons.
37const unsigned CCMASK_CMP_EQ = CCMASK_0;
38const unsigned CCMASK_CMP_LT = CCMASK_1;
39const unsigned CCMASK_CMP_GT = CCMASK_2;
43
44// Condition-code mask assignments for floating-point comparisons only.
45const unsigned CCMASK_CMP_UO = CCMASK_3;
47
48// All condition-code values produced by comparisons.
51
52// Condition-code mask assignments for arithmetical operations.
53const unsigned CCMASK_ARITH_EQ = CCMASK_0;
54const unsigned CCMASK_ARITH_LT = CCMASK_1;
55const unsigned CCMASK_ARITH_GT = CCMASK_2;
57const unsigned CCMASK_ARITH = CCMASK_ANY;
58
59// Condition-code mask assignments for logical operations.
66const unsigned CCMASK_LOGICAL = CCMASK_ANY;
67
68// Condition-code mask assignments for CS.
69const unsigned CCMASK_CS_EQ = CCMASK_0;
70const unsigned CCMASK_CS_NE = CCMASK_1;
71const unsigned CCMASK_CS = CCMASK_0 | CCMASK_1;
72
73// Condition-code mask assignments for a completed SRST loop.
74const unsigned CCMASK_SRST_FOUND = CCMASK_1;
76const unsigned CCMASK_SRST = CCMASK_1 | CCMASK_2;
77
78// Condition-code mask assignments for TEST UNDER MASK.
79const unsigned CCMASK_TM_ALL_0 = CCMASK_0;
82const unsigned CCMASK_TM_ALL_1 = CCMASK_3;
87const unsigned CCMASK_TM = CCMASK_ANY;
88
89// Condition-code mask assignments for TRANSACTION_BEGIN.
94const unsigned CCMASK_TBEGIN = CCMASK_ANY;
95
96// Condition-code mask assignments for TRANSACTION_END.
97const unsigned CCMASK_TEND_TX = CCMASK_0;
98const unsigned CCMASK_TEND_NOTX = CCMASK_2;
100
101// Condition-code mask assignments for vector comparisons (and similar
102// operations).
103const unsigned CCMASK_VCMP_ALL = CCMASK_0;
105const unsigned CCMASK_VCMP_NONE = CCMASK_3;
107
108// Condition-code mask assignments for Test Data Class.
110const unsigned CCMASK_TDC_MATCH = CCMASK_1;
112
113// The position of the low CC bit in an IPM result.
114const unsigned IPM_CC = 28;
115
116// Mask assignments for PFD.
117const unsigned PFD_READ = 1;
118const unsigned PFD_WRITE = 2;
119
120// Mask assignments for TDC
121const unsigned TDCMASK_ZERO_PLUS = 0x800;
122const unsigned TDCMASK_ZERO_MINUS = 0x400;
123const unsigned TDCMASK_NORMAL_PLUS = 0x200;
124const unsigned TDCMASK_NORMAL_MINUS = 0x100;
125const unsigned TDCMASK_SUBNORMAL_PLUS = 0x080;
126const unsigned TDCMASK_SUBNORMAL_MINUS = 0x040;
127const unsigned TDCMASK_INFINITY_PLUS = 0x020;
128const unsigned TDCMASK_INFINITY_MINUS = 0x010;
129const unsigned TDCMASK_QNAN_PLUS = 0x008;
130const unsigned TDCMASK_QNAN_MINUS = 0x004;
131const unsigned TDCMASK_SNAN_PLUS = 0x002;
132const unsigned TDCMASK_SNAN_MINUS = 0x001;
133
154
155// Number of bits in a vector register.
156const unsigned VectorBits = 128;
157
158// Number of bytes in a vector register (and consequently the number of
159// bytes in a general permute vector).
160const unsigned VectorBytes = VectorBits / 8;
161
162// Return true if Val fits an LLILL operand.
163static inline bool isImmLL(uint64_t Val) {
164 return (Val & ~0x000000000000ffffULL) == 0;
165}
166
167// Return true if Val fits an LLILH operand.
168static inline bool isImmLH(uint64_t Val) {
169 return (Val & ~0x00000000ffff0000ULL) == 0;
170}
171
172// Return true if Val fits an LLIHL operand.
173static inline bool isImmHL(uint64_t Val) {
174 return (Val & ~0x00000ffff00000000ULL) == 0;
175}
176
177// Return true if Val fits an LLIHH operand.
178static inline bool isImmHH(uint64_t Val) {
179 return (Val & ~0xffff000000000000ULL) == 0;
180}
181
182// Return true if Val fits an LLILF operand.
183static inline bool isImmLF(uint64_t Val) {
184 return (Val & ~0x00000000ffffffffULL) == 0;
185}
186
187// Return true if Val fits an LLIHF operand.
188static inline bool isImmHF(uint64_t Val) {
189 return (Val & ~0xffffffff00000000ULL) == 0;
190}
191} // end namespace SystemZ
192
193FunctionPass *createSystemZISelDag(SystemZTargetMachine &TM,
194 CodeGenOptLevel OptLevel);
195FunctionPass *createSystemZElimComparePass(SystemZTargetMachine &TM);
203
214
215namespace SYSTEMZAS {
216enum : unsigned { PTR32 = 1 };
217} // namespace SYSTEMZAS
218
219} // end namespace llvm
220
221#endif
unsigned uint64_t
FunctionPass class - This class is used to implement most global optimizations.
Definition Pass.h:314
ModulePass class - This class is used to implement unstructured interprocedural optimizations and ana...
Definition Pass.h:255
PassRegistry - This class manages the registration and intitialization of the pass subsystem as appli...
const unsigned CCMASK_ARITH_EQ
Definition SystemZ.h:53
const unsigned CCMASK_CMP_GE
Definition SystemZ.h:42
const unsigned CCMASK_LOGICAL_ZERO
Definition SystemZ.h:60
const unsigned CCMASK_SRST_NOTFOUND
Definition SystemZ.h:75
static bool isImmHH(uint64_t Val)
Definition SystemZ.h:178
const unsigned CCMASK_TEND
Definition SystemZ.h:99
const unsigned CCMASK_LOGICAL_NOCARRY
Definition SystemZ.h:63
const unsigned CCMASK_CS_EQ
Definition SystemZ.h:69
const unsigned CCMASK_TBEGIN
Definition SystemZ.h:94
const unsigned TDCMASK_NEGATIVE
Definition SystemZ.h:138
const unsigned CCMASK_SRST
Definition SystemZ.h:76
const unsigned CCMASK_TEND_NOTX
Definition SystemZ.h:98
const unsigned CCMASK_0
Definition SystemZ.h:29
const unsigned CCMASK_TM_SOME_1
Definition SystemZ.h:84
const unsigned CCMASK_LOGICAL_CARRY
Definition SystemZ.h:62
const unsigned TDCMASK_NORMAL_MINUS
Definition SystemZ.h:124
const unsigned CCMASK_TDC
Definition SystemZ.h:111
const unsigned CCMASK_FCMP
Definition SystemZ.h:50
const unsigned CCMASK_TM_SOME_0
Definition SystemZ.h:83
const unsigned TDCMASK_MINUS
Definition SystemZ.h:149
static bool isImmHL(uint64_t Val)
Definition SystemZ.h:173
const unsigned TDCMASK_SUBNORMAL_MINUS
Definition SystemZ.h:126
const unsigned TDCMASK_ZERO
Definition SystemZ.h:134
const unsigned PFD_READ
Definition SystemZ.h:117
const unsigned CCMASK_TBEGIN_PERSISTENT
Definition SystemZ.h:93
const unsigned CCMASK_1
Definition SystemZ.h:30
const unsigned TDCMASK_NORMAL_PLUS
Definition SystemZ.h:123
const unsigned PFD_WRITE
Definition SystemZ.h:118
const unsigned CCMASK_CMP_GT
Definition SystemZ.h:39
const unsigned CCMASK_ARITH_LT
Definition SystemZ.h:54
const unsigned CCMASK_ARITH_GT
Definition SystemZ.h:55
const unsigned TDCMASK_QNAN_MINUS
Definition SystemZ.h:130
const unsigned CCMASK_SRST_FOUND
Definition SystemZ.h:74
const unsigned TDCMASK_ALL
Definition SystemZ.h:153
const unsigned CCMASK_CS
Definition SystemZ.h:71
const unsigned CCMASK_ANY
Definition SystemZ.h:33
const unsigned CCMASK_ARITH
Definition SystemZ.h:57
const unsigned CCMASK_TM_MIXED_MSB_0
Definition SystemZ.h:80
const unsigned TDCMASK_SUBNORMAL_PLUS
Definition SystemZ.h:125
const unsigned CCMASK_TBEGIN_TRANSIENT
Definition SystemZ.h:92
static bool isImmLL(uint64_t Val)
Definition SystemZ.h:163
const unsigned VectorBits
Definition SystemZ.h:156
const unsigned CCMASK_TEND_TX
Definition SystemZ.h:97
static bool isImmLH(uint64_t Val)
Definition SystemZ.h:168
const unsigned TDCMASK_INFINITY_PLUS
Definition SystemZ.h:127
const unsigned CCMASK_TM_ALL_0
Definition SystemZ.h:79
const unsigned IPM_CC
Definition SystemZ.h:114
const unsigned CCMASK_CMP_LE
Definition SystemZ.h:41
static bool isImmHF(uint64_t Val)
Definition SystemZ.h:188
const unsigned CCMASK_CMP_O
Definition SystemZ.h:46
const unsigned CCMASK_CMP_EQ
Definition SystemZ.h:37
const unsigned CCMASK_VCMP_MIXED
Definition SystemZ.h:104
const unsigned VectorBytes
Definition SystemZ.h:160
const unsigned TDCMASK_POSITIVE
Definition SystemZ.h:135
const unsigned TDCMASK_INFINITY_MINUS
Definition SystemZ.h:128
const unsigned CCMASK_ICMP
Definition SystemZ.h:49
const unsigned CCMASK_TDC_NOMATCH
Definition SystemZ.h:109
const unsigned CCMASK_VCMP_ALL
Definition SystemZ.h:103
const unsigned CCMASK_VCMP_NONE
Definition SystemZ.h:105
const unsigned TDCMASK_NAN
Definition SystemZ.h:141
const unsigned CCMASK_TBEGIN_STARTED
Definition SystemZ.h:90
const unsigned CCMASK_VCMP
Definition SystemZ.h:106
const unsigned CCMASK_TDC_MATCH
Definition SystemZ.h:110
const unsigned CCMASK_TM_MIXED_MSB_1
Definition SystemZ.h:81
const unsigned CCMASK_TM_MSB_0
Definition SystemZ.h:85
const unsigned CCMASK_ARITH_OVERFLOW
Definition SystemZ.h:56
const unsigned CCMASK_CS_NE
Definition SystemZ.h:70
const unsigned TDCMASK_SNAN_PLUS
Definition SystemZ.h:131
const unsigned CCMASK_LOGICAL_NOBORROW
Definition SystemZ.h:65
const unsigned CCMASK_TM
Definition SystemZ.h:87
const unsigned CCMASK_3
Definition SystemZ.h:32
const unsigned CCMASK_NONE
Definition SystemZ.h:28
const unsigned CCMASK_CMP_LT
Definition SystemZ.h:38
const unsigned CCMASK_CMP_NE
Definition SystemZ.h:40
const unsigned CCMASK_TBEGIN_INDETERMINATE
Definition SystemZ.h:91
const unsigned CCMASK_LOGICAL_NONZERO
Definition SystemZ.h:61
const unsigned TDCMASK_ZERO_PLUS
Definition SystemZ.h:121
static bool isImmLF(uint64_t Val)
Definition SystemZ.h:183
const unsigned TDCMASK_QNAN_PLUS
Definition SystemZ.h:129
const unsigned TDCMASK_ZERO_MINUS
Definition SystemZ.h:122
const unsigned CCMASK_TM_ALL_1
Definition SystemZ.h:82
const unsigned TDCMASK_PLUS
Definition SystemZ.h:145
const unsigned CCMASK_2
Definition SystemZ.h:31
const unsigned CCMASK_LOGICAL_BORROW
Definition SystemZ.h:64
const unsigned CCMASK_CMP_UO
Definition SystemZ.h:45
const unsigned CCMASK_LOGICAL
Definition SystemZ.h:66
const unsigned CCMASK_TM_MSB_1
Definition SystemZ.h:86
const unsigned TDCMASK_SNAN_MINUS
Definition SystemZ.h:132
This is an optimization pass for GlobalISel generic memory operations.
void initializeSystemZElimComparePass(PassRegistry &)
FunctionPass * createSystemZLongBranchPass(SystemZTargetMachine &TM)
FunctionPass * createSystemZISelDag(SystemZTargetMachine &TM, CodeGenOptLevel OptLevel)
ModulePass * createSystemZAlignGlobalsPass()
FunctionPass * createSystemZCopyPhysRegsPass(SystemZTargetMachine &TM)
FunctionPass * createSystemZElimComparePass(SystemZTargetMachine &TM)
void initializeSystemZCopyPhysRegsPass(PassRegistry &)
void initializeSystemZLongBranchPass(PassRegistry &)
void initializeSystemZShortenInstPass(PassRegistry &)
void initializeSystemZDAGToDAGISelLegacyPass(PassRegistry &)
FunctionPass * createSystemZTDCPass()
FunctionPass * createSystemZShortenInstPass(SystemZTargetMachine &TM)
void initializeSystemZPostRewritePass(PassRegistry &)
void initializeSystemZTDCPassPass(PassRegistry &)
FunctionPass * createSystemZLDCleanupPass(SystemZTargetMachine &TM)
void initializeSystemZAlignGlobalsPass(PassRegistry &)
void initializeSystemZAsmPrinterPass(PassRegistry &)
FunctionPass * createSystemZPostRewritePass(SystemZTargetMachine &TM)
void initializeSystemZLDCleanupPass(PassRegistry &)