LLVM: include/llvm/TargetParser/AArch64TargetParser.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14#ifndef LLVM_TARGETPARSER_AARCH64TARGETPARSER_H

15#define LLVM_TARGETPARSER_AARCH64TARGETPARSER_H

16

26#include

27#include

42 "Number of features in CPUFeatures are limited to 62 entries");

44

45#define EMIT_ARCHEXTKIND_ENUM

46#include "llvm/TargetParser/AArch64TargetParserDef.inc"

50

51

52

53

56

57 std::optional Alias;

58 ArchExtKind ID;

59

61

64

66

69#define EMIT_EXTENSIONS

70#include "llvm/TargetParser/AArch64TargetParserDef.inc"

73 StringRef Name;

76 std::optional ID;

78 std::optional ID)

84

85

86

87

92

93#define EMIT_EXTENSION_DEPENDENCIES

94#include "llvm/TargetParser/AArch64TargetParserDef.inc"

95

97

98

102 StringRef Name;

105 DefaultExts;

106

108 return this->Name == Other.Name;

109 }

111 return this->Name != Other.Name;

112 }

113

114

115

116

117

118

119

120

121

122

123

125 if (this->Profile != Other.Profile)

126 return false;

127 if (this->Version.getMajor() == Other.Version.getMajor()) {

128 return this->Version > Other.Version;

129 }

130 if (this->Version.getMajor() == 9 && Other.Version.getMajor() == 8) {

132 "AArch64::ArchInfo should have a minor version.");

133 return this->Version.getMinor().value_or(0) + 5 >=

134 Other.Version.getMinor().value_or(0);

135 }

136 return false;

137 }

138

139

140

144

145

147

148

150};

151

152#define EMIT_ARCHITECTURES

153#include "llvm/TargetParser/AArch64TargetParserDef.inc"

154

155

166

167#define EMIT_CPU_INFO

168#include "llvm/TargetParser/AArch64TargetParserDef.inc"

169

171

173

174

176

177

179

181

182

183

184

186

187

188

189

190

192

193

194

196

197

198

200

201

202

203

204

206 const bool AllowNoDashForm = false);

207

208

209

210

211

214 std::vectorstd::string &NonExtensions);

215

216

217

218 template void toLLVMFeatureList(std::vector &Features) const {

220 Features.emplace_back(T(BaseArch->ArchFeature));

221

223 if (E.PosTargetFeature.empty() || Touched.test(E.ID))

224 continue;

226 Features.emplace_back(T(E.PosTargetFeature));

227 else

228 Features.emplace_back(T(E.NegTargetFeature));

229 }

230 }

231

233};

234

235

240

241#define EMIT_CPU_ALIAS

242#include "llvm/TargetParser/AArch64TargetParserDef.inc"

243

245

247 std::vector &Features);

248

251

252

254

255

257

258

259LLVM_ABI std::optional

261

262

264

265

267

268

270

272

274

275

276

277

279

280

281

282

283

284

286

288

291

292}

293}

294

295#endif

assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")

This file defines the StringMap class.

static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")

static cl::opt< std::set< SPIRV::Extension::Extension >, false, SPIRVExtensionsParser > Extensions("spirv-ext", cl::desc("Specify list of enabled SPIR-V extensions"))

Defines the llvm::VersionTuple class, which represents a version in the form major[....

Class for arbitrary precision integers.

ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...

This is a constexpr reimplementation of a subset of std::bitset.

This class consists of common code factored out of the SmallVector class to reduce code duplication b...

StringRef - Represent a constant reference to a string, i.e.

Triple - Helper class for working with autoconf configuration names.

Represents a version number in the form major[.minor[.subminor[.build]]].

unsigned getMajor() const

Retrieve the major version number.

std::optional< unsigned > getMinor() const

Retrieve the minor version number, if provided.

FeatPriorities

Definition AArch64TargetParser.h:18

LLVM_ABI bool isX18ReservedByDefault(const Triple &TT)

LLVM_ABI StringRef getArchExtFeature(StringRef ArchExt)

LLVM_ABI std::optional< ExtensionInfo > parseArchExtension(StringRef Extension)

LLVM_ABI std::optional< CpuInfo > parseCpu(StringRef Name)

CPUFeatures

Definition AArch64TargetParser.h:25

@ FEAT_MAX

Definition AArch64TargetParser.h:86

LLVM_ABI const std::vector< FMVInfo > & getFMVInfo()

LLVM_ABI const ArchInfo * parseArch(StringRef Arch)

LLVM_ABI const ArchInfo * getArchForCpu(StringRef CPU)

LLVM_ABI const ExtensionInfo & getExtensionByID(ArchExtKind(ExtID))

LLVM_ABI void fillValidCPUArchList(SmallVectorImpl< StringRef > &Values)

LLVM_ABI APInt getCpuSupportsMask(ArrayRef< StringRef > Features)

LLVM_ABI void printEnabledExtensions(const std::set< StringRef > &EnabledFeatureNames)

LLVM_ABI std::optional< FMVInfo > parseFMVExtension(StringRef Extension)

Bitset< AEK_NUM_EXTENSIONS > ExtensionBitset

Definition AArch64TargetParser.h:48

LLVM_ABI APInt getFMVPriority(ArrayRef< StringRef > Features)

LLVM_ABI void PrintSupportedExtensions()

LLVM_ABI std::optional< ExtensionInfo > targetFeatureToExtension(StringRef TargetFeature)

ArchProfile

Definition AArch64TargetParser.h:96

@ InvalidProfile

Definition AArch64TargetParser.h:96

@ AProfile

Definition AArch64TargetParser.h:96

@ RProfile

Definition AArch64TargetParser.h:96

LLVM_ABI StringRef resolveCPUAlias(StringRef CPU)

LLVM_ABI bool getExtensionFeatures(const AArch64::ExtensionBitset &Extensions, std::vector< StringRef > &Features)

unsigned ID

LLVM IR allows to use arbitrary numbers as calling convention identifiers.

This is an optimization pass for GlobalISel generic memory operations.

StringRef Name

Definition AArch64TargetParser.h:238

StringRef AltName

Definition AArch64TargetParser.h:237

VersionTuple Version

Definition AArch64TargetParser.h:100

bool is_superset(const ArchInfo &Other) const

Definition AArch64TargetParser.h:141

ArchProfile Profile

Definition AArch64TargetParser.h:101

StringRef getSubArch() const

Definition AArch64TargetParser.h:146

bool implies(const ArchInfo &Other) const

Definition AArch64TargetParser.h:124

AArch64::ExtensionBitset DefaultExts

Definition AArch64TargetParser.h:105

static LLVM_ABI std::optional< ArchInfo > findBySubArch(StringRef SubArch)

bool operator==(const ArchInfo &Other) const

Definition AArch64TargetParser.h:107

StringRef ArchFeature

Definition AArch64TargetParser.h:103

StringRef Name

Definition AArch64TargetParser.h:102

bool operator!=(const ArchInfo &Other) const

Definition AArch64TargetParser.h:110

AArch64::ExtensionBitset getImpliedExtensions() const

Definition AArch64TargetParser.h:162

StringRef Name

Definition AArch64TargetParser.h:157

AArch64::ExtensionBitset DefaultExtensions

Definition AArch64TargetParser.h:160

const ArchInfo & Arch

Definition AArch64TargetParser.h:158

ArchExtKind Earlier

Definition AArch64TargetParser.h:89

ArchExtKind Later

Definition AArch64TargetParser.h:90

StringRef Description

Definition AArch64TargetParser.h:62

ArchExtKind ID

Definition AArch64TargetParser.h:58

std::optional< StringRef > Alias

Definition AArch64TargetParser.h:57

StringRef UserVisibleName

Definition AArch64TargetParser.h:55

StringRef NegTargetFeature

Definition AArch64TargetParser.h:65

StringRef PosTargetFeature

Definition AArch64TargetParser.h:63

StringRef ArchFeatureName

Definition AArch64TargetParser.h:60

ExtensionBitset Touched

Definition AArch64TargetParser.h:175

ExtensionSet()

Definition AArch64TargetParser.h:180

LLVM_ABI bool parseModifier(StringRef Modifier, const bool AllowNoDashForm=false)

LLVM_ABI void addCPUDefaults(const CpuInfo &CPU)

LLVM_ABI void enable(ArchExtKind E)

LLVM_ABI void disable(ArchExtKind E)

void toLLVMFeatureList(std::vector< T > &Features) const

Definition AArch64TargetParser.h:218

LLVM_ABI void dump() const

const ArchInfo * BaseArch

Definition AArch64TargetParser.h:178

ExtensionBitset Enabled

Definition AArch64TargetParser.h:172

LLVM_ABI void addArchDefaults(const ArchInfo &Arch)

LLVM_ABI void reconstructFromParsedFeatures(const std::vector< std::string > &Features, std::vector< std::string > &NonExtensions)

StringRef Name

Definition AArch64TargetParser.h:73

CPUFeatures FeatureBit

Definition AArch64TargetParser.h:74

std::optional< ArchExtKind > ID

Definition AArch64TargetParser.h:76

FMVInfo(StringRef Name, CPUFeatures FeatureBit, FeatPriorities PriorityBit, std::optional< ArchExtKind > ID)

Definition AArch64TargetParser.h:77

FeatPriorities PriorityBit

Definition AArch64TargetParser.h:75