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");

44static_assert(PRIOR_MAX < 120, "FeatPriorities is limited to 120 entries");

46

47#define EMIT_ARCHEXTKIND_ENUM

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

52

53

54

55

58

59 std::optional Alias;

60 ArchExtKind ID;

61

63

66

68

71#define EMIT_EXTENSIONS

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

75 StringRef Name;

76 std::optional

77 FeatureBit;

79 std::optional ID;

87

88

89

90

95

96#define EMIT_EXTENSION_DEPENDENCIES

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

98

100

101

105 StringRef Name;

108 DefaultExts;

109

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

112 }

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

115 }

116

117

118

119

120

121

122

123

124

125

126

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

129 return false;

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

131 return this->Version > Other.Version;

132 }

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

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

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

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

138 }

139 return false;

140 }

141

142

143

147

148

150

151

153};

154

155#define EMIT_ARCHITECTURES

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

157

158

169

170#define EMIT_CPU_INFO

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

172

174

176

177

179

180

182

184

185

186

187

189

190

191

192

193

195

196

197

199

200

201

203

204

205

206

207

209 const bool AllowNoDashForm = false);

210

211

212

213

214

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

218

219

220

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

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

224

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

227 continue;

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

230 else

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

232 }

233 }

234

236};

237

238

243

244#define EMIT_CPU_ALIAS

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

246

248

250 std::vector &Features);

251

254

255

257

258

260

261

262LLVM_ABI std::optional

264

265

267

268

270

271

273

275

277

278

279

280

282

283

284

285

286

287

289

291

294

295}

296}

297

298#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

@ PRIOR_MAX

Definition AArch64TargetParser.h:64

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)

@ 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:50

LLVM_ABI APInt getFMVPriority(ArrayRef< StringRef > Features)

LLVM_ABI void PrintSupportedExtensions()

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

ArchProfile

Definition AArch64TargetParser.h:99

@ InvalidProfile

Definition AArch64TargetParser.h:99

@ AProfile

Definition AArch64TargetParser.h:99

@ RProfile

Definition AArch64TargetParser.h:99

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:241

StringRef AltName

Definition AArch64TargetParser.h:240

VersionTuple Version

Definition AArch64TargetParser.h:103

bool is_superset(const ArchInfo &Other) const

Definition AArch64TargetParser.h:144

ArchProfile Profile

Definition AArch64TargetParser.h:104

StringRef getSubArch() const

Definition AArch64TargetParser.h:149

bool implies(const ArchInfo &Other) const

Definition AArch64TargetParser.h:127

AArch64::ExtensionBitset DefaultExts

Definition AArch64TargetParser.h:108

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

bool operator==(const ArchInfo &Other) const

Definition AArch64TargetParser.h:110

StringRef ArchFeature

Definition AArch64TargetParser.h:106

StringRef Name

Definition AArch64TargetParser.h:105

bool operator!=(const ArchInfo &Other) const

Definition AArch64TargetParser.h:113

AArch64::ExtensionBitset getImpliedExtensions() const

Definition AArch64TargetParser.h:165

StringRef Name

Definition AArch64TargetParser.h:160

AArch64::ExtensionBitset DefaultExtensions

Definition AArch64TargetParser.h:163

const ArchInfo & Arch

Definition AArch64TargetParser.h:161

ArchExtKind Earlier

Definition AArch64TargetParser.h:92

ArchExtKind Later

Definition AArch64TargetParser.h:93

StringRef Description

Definition AArch64TargetParser.h:64

ArchExtKind ID

Definition AArch64TargetParser.h:60

std::optional< StringRef > Alias

Definition AArch64TargetParser.h:59

StringRef UserVisibleName

Definition AArch64TargetParser.h:57

StringRef NegTargetFeature

Definition AArch64TargetParser.h:67

StringRef PosTargetFeature

Definition AArch64TargetParser.h:65

StringRef ArchFeatureName

Definition AArch64TargetParser.h:62

ExtensionBitset Touched

Definition AArch64TargetParser.h:178

ExtensionSet()

Definition AArch64TargetParser.h:183

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:221

LLVM_ABI void dump() const

const ArchInfo * BaseArch

Definition AArch64TargetParser.h:181

ExtensionBitset Enabled

Definition AArch64TargetParser.h:175

LLVM_ABI void addArchDefaults(const ArchInfo &Arch)

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

std::optional< CPUFeatures > FeatureBit

Definition AArch64TargetParser.h:77

StringRef Name

Definition AArch64TargetParser.h:75

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

Definition AArch64TargetParser.h:80

std::optional< ArchExtKind > ID

Definition AArch64TargetParser.h:79

FeatPriorities PriorityBit

Definition AArch64TargetParser.h:78