23#include "AArch64GenSystemOperands.inc"
29 namespace AArch64DBnXS {
31#include "AArch64GenSystemOperands.inc"
38#include "AArch64GenSystemOperands.inc"
45#include "AArch64GenSystemOperands.inc"
52#include "AArch64GenSystemOperands.inc"
57 namespace AArch64ISB {
59#include "AArch64GenSystemOperands.inc"
64 namespace AArch64TSB {
66#include "AArch64GenSystemOperands.inc"
71 namespace AArch64PRCTX {
73#include "AArch64GenSystemOperands.inc"
78 namespace AArch64PRFM {
80#include "AArch64GenSystemOperands.inc"
85 namespace AArch64SVEPRFM {
86#define GET_SVEPRFM_IMPL
87#include "AArch64GenSystemOperands.inc"
92 namespace AArch64RPRFM {
94#include "AArch64GenSystemOperands.inc"
99 namespace AArch64SVEPredPattern {
100#define GET_SVEPREDPAT_IMPL
101#include "AArch64GenSystemOperands.inc"
106namespace AArch64SVEVecLenSpecifier {
107#define GET_SVEVECLENSPECIFIER_IMPL
108#include "AArch64GenSystemOperands.inc"
113 namespace AArch64ExactFPImm {
114#define GET_EXACTFPIMM_IMPL
115#include "AArch64GenSystemOperands.inc"
120 namespace AArch64PState {
121#define GET_PSTATEIMM0_15_IMPL
122#include "AArch64GenSystemOperands.inc"
123#define GET_PSTATEIMM0_1_IMPL
124#include "AArch64GenSystemOperands.inc"
129 namespace AArch64PSBHint {
131#include "AArch64GenSystemOperands.inc"
136 namespace AArch64BTIHint {
138#include "AArch64GenSystemOperands.inc"
143 namespace AArch64SysReg {
144#define GET_SYSREG_IMPL
145#include "AArch64GenSystemOperands.inc"
151 static const Regex GenericRegPattern(
"^S([0-3])_([0-7])_C([0-9]|1[0-5])_C([0-9]|1[0-5])_([0-7])$");
153 std::string UpperName =
Name.upper();
155 if (!GenericRegPattern.
match(UpperName, &Ops))
158 uint32_t Op0 = 0, Op1 = 0, CRn = 0, CRm = 0, Op2 = 0;
160 Ops[1].getAsInteger(10, Op0);
161 Ops[2].getAsInteger(10, Op1);
162 Ops[3].getAsInteger(10, CRn);
163 Ops[4].getAsInteger(10, CRm);
164 Ops[5].getAsInteger(10, Op2);
165 Bits = (Op0 << 14) | (Op1 << 11) | (CRn << 7) | (CRm << 3) | Op2;
178 return "S" + utostr(Op0) +
"_" + utostr(Op1) +
"_C" + utostr(CRn) +
"_C" +
179 utostr(CRm) +
"_" + utostr(Op2);
183 namespace AArch64TLBI {
184#define GET_TLBITable_IMPL
185#include "AArch64GenSystemOperands.inc"
190 namespace AArch64SVCR {
192#include "AArch64GenSystemOperands.inc"
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
This file defines the SmallVector class.
bool match(StringRef String, SmallVectorImpl< StringRef > *Matches=nullptr, std::string *Error=nullptr) const
matches - Match the regex against a given String.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
StringRef - Represent a constant reference to a string, i.e.
uint32_t parseGenericRegister(StringRef Name)
std::string genericRegisterString(uint32_t Bits)
This is an optimization pass for GlobalISel generic memory operations.