clang: include/clang/Basic/TargetBuiltins.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15#ifndef LLVM_CLANG_BASIC_TARGETBUILTINS_H

16#define LLVM_CLANG_BASIC_TARGETBUILTINS_H

17

18#include

21#include "llvm/Support/MathExtras.h"

22#undef PPC

23

25

27 enum {

29#define GET_NEON_BUILTIN_ENUMERATORS

30#include "clang/Basic/arm_neon.inc"

33#include "clang/Basic/arm_fp16.inc"

34#undef GET_NEON_BUILTIN_ENUMERATORS

36 };

37 }

38

39

41 enum {

44#define GET_MVE_BUILTIN_ENUMERATORS

45#include "clang/Basic/arm_mve_builtins.inc"

46#undef GET_MVE_BUILTIN_ENUMERATORS

49#define GET_CDE_BUILTIN_ENUMERATORS

50#include "clang/Basic/arm_cde_builtins.inc"

51#undef GET_CDE_BUILTIN_ENUMERATORS

54#define BUILTIN(ID, TYPE, ATTRS) BI##ID,

55#include "clang/Basic/BuiltinsARM.def"

57 };

58 }

59

61 enum {

63#define GET_SVE_BUILTIN_ENUMERATORS

64#include "clang/Basic/arm_sve_builtins.inc"

65#undef GET_SVE_BUILTIN_ENUMERATORS

68#define GET_SVE_BUILTINS

69#define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BI##ID,

70#include "clang/Basic/BuiltinsAArch64NeonSVEBridge.def"

71#undef TARGET_BUILTIN

72#undef GET_SVE_BUILTINS

74 };

75 }

76

78 enum {

80#define GET_SME_BUILTIN_ENUMERATORS

81#include "clang/Basic/arm_sme_builtins.inc"

82#undef GET_SME_BUILTIN_ENUMERATORS

84 };

85 }

86

87

89 enum {

96 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,

97 #include "clang/Basic/BuiltinsAArch64.def"

99 };

100 }

101

102

104 enum {

106#define GET_BUILTIN_ENUMERATORS

107#include "clang/Basic/BuiltinsBPF.inc"

108#undef GET_BUILTIN_ENUMERATORS

110 };

111 }

112

113

115 enum {

117#define BUILTIN(ID, TYPE, ATTRS) BI##ID,

118#include "clang/Basic/BuiltinsPPC.def"

120 };

121 }

122

123

125 enum {

127#define GET_BUILTIN_ENUMERATORS

128#include "clang/Basic/BuiltinsNVPTX.inc"

129#undef GET_BUILTIN_ENUMERATORS

131 };

132 }

133

134

136 enum {

138 #define BUILTIN(ID, TYPE, ATTRS) BI##ID,

139 #include "clang/Basic/BuiltinsAMDGPU.def"

141 };

142 }

143

144

146 enum {

148#define GET_BUILTIN_ENUMERATORS

149#include "clang/Basic/BuiltinsDirectX.inc"

150#undef GET_BUILTIN_ENUMERATORS

152 };

153 }

154

155

157 enum {

159#define GET_BUILTIN_ENUMERATORS

160#include "clang/Basic/BuiltinsSPIRVCommon.inc"

161#undef GET_BUILTIN_ENUMERATORS

164#define GET_BUILTIN_ENUMERATORS

165#include "clang/Basic/BuiltinsSPIRVVK.inc"

166#undef GET_BUILTIN_ENUMERATORS

169#define GET_BUILTIN_ENUMERATORS

170#include "clang/Basic/BuiltinsSPIRVCL.inc"

171#undef GET_BUILTIN_ENUMERATORS

173 };

174 }

175

176

178 enum {

180#define GET_BUILTIN_ENUMERATORS

181#include "clang/Basic/BuiltinsX86.inc"

182#undef GET_BUILTIN_ENUMERATORS

185#define GET_BUILTIN_ENUMERATORS

186#include "clang/Basic/BuiltinsX86_64.inc"

187#undef GET_BUILTIN_ENUMERATORS

189 };

190 }

191

192

194 enum {

196#define BUILTIN(ID, TYPE, ATTRS) BI##ID,

197#include "clang/Basic/BuiltinsVE.def"

199 };

200 }

201

203 enum {

205#define GET_RISCVV_BUILTIN_ENUMERATORS

206#include "clang/Basic/riscv_vector_builtins.inc"

209#include "clang/Basic/riscv_sifive_vector_builtins.inc"

212#include "clang/Basic/riscv_andes_vector_builtins.inc"

213#undef GET_RISCVV_BUILTIN_ENUMERATORS

215 };

216 }

217

218

220 enum {

224#define GET_BUILTIN_ENUMERATORS

225#include "clang/Basic/BuiltinsRISCV.inc"

226#undef GET_BUILTIN_ENUMERATORS

228 };

229 }

230

231

233 enum {

235#define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BI##ID,

236#include "clang/Basic/BuiltinsLoongArchBase.def"

239#define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BI##ID,

240#include "clang/Basic/BuiltinsLoongArchLSX.def"

243#define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BI##ID,

244#include "clang/Basic/BuiltinsLoongArchLASX.def"

246 };

247 }

248

249

250

251

253 enum {

254 EltTypeMask = 0xf,

255 UnsignedFlag = 0x10,

256 QuadFlag = 0x20

257 };

258 uint32_t Flags;

259

260 public:

276

279 if (IsUnsigned)

280 Flags |= UnsignedFlag;

281 if (IsQuad)

282 Flags |= QuadFlag;

283 }

284

294 bool isUnsigned() const { return (Flags & UnsignedFlag) != 0; }

295 bool isQuad() const { return (Flags & QuadFlag) != 0; }

301 return 8;

306 return 16;

309 return 32;

313 return 64;

315 return 128;

316 }

317 llvm_unreachable("Invalid NeonTypeFlag!");

318 }

319 };

320

321

323#define LLVM_GET_ARM_INTRIN_IMMCHECKTYPES

324#include "clang/Basic/arm_immcheck_types.inc"

325#undef LLVM_GET_ARM_INTRIN_IMMCHECKTYPES

326 };

327

328

330 uint64_t Flags;

331 unsigned EltTypeShift;

332 unsigned MemEltTypeShift;

333 unsigned MergeTypeShift;

334 unsigned SplatOperandMaskShift;

335

336 public:

337#define LLVM_GET_SVE_TYPEFLAGS

338#include "clang/Basic/arm_sve_typeflags.inc"

339#undef LLVM_GET_SVE_TYPEFLAGS

340

342#define LLVM_GET_SVE_ELTTYPES

343#include "clang/Basic/arm_sve_typeflags.inc"

344#undef LLVM_GET_SVE_ELTTYPES

345 };

346

348#define LLVM_GET_SVE_MEMELTTYPES

349#include "clang/Basic/arm_sve_typeflags.inc"

350#undef LLVM_GET_SVE_MEMELTTYPES

351 };

352

354#define LLVM_GET_SVE_MERGETYPES

355#include "clang/Basic/arm_sve_typeflags.inc"

356#undef LLVM_GET_SVE_MERGETYPES

357 };

358

360 EltTypeShift = llvm::countr_zero(EltTypeMask);

361 MemEltTypeShift = llvm::countr_zero(MemEltTypeMask);

362 MergeTypeShift = llvm::countr_zero(MergeTypeMask);

363 SplatOperandMaskShift = llvm::countr_zero(SplatOperandMask);

364 }

365

367 return (EltType)((Flags & EltTypeMask) >> EltTypeShift);

368 }

369

371 return (MemEltType)((Flags & MemEltTypeMask) >> MemEltTypeShift);

372 }

373

375 return (MergeType)((Flags & MergeTypeMask) >> MergeTypeShift);

376 }

377

379 return ((Flags & SplatOperandMask) >> SplatOperandMaskShift) - 1;

380 }

381

383 return Flags & SplatOperandMask;

384 }

385

386 bool isLoad() const { return Flags & IsLoad; }

387 bool isStore() const { return Flags & IsStore; }

388 bool isGatherLoad() const { return Flags & IsGatherLoad; }

390 bool isStructLoad() const { return Flags & IsStructLoad; }

392 bool isZExtReturn() const { return Flags & IsZExtReturn; }

396 return Flags & IsOverloadWhileOrMultiVecCvt;

397 }

401 return Flags & IsOverloadFirstandLast;

402 }

403 bool isPrefetch() const { return Flags & IsPrefetch; }

411 bool isUndef() const { return Flags & IsUndef; }

413 bool isTupleGet() const { return Flags & IsTupleGet; }

414 bool isTupleSet() const { return Flags & IsTupleSet; }

415 bool isReadZA() const { return Flags & IsReadZA; }

416 bool isWriteZA() const { return Flags & IsWriteZA; }

417 bool setsFPMR() const { return Flags & SetsFPMR; }

419 uint64_t getBits() const { return Flags; }

420 bool isFlagSet(uint64_t Flag) const { return Flags & Flag; }

421 };

422

423

425 enum {

427#define GET_BUILTIN_ENUMERATORS

428#include "clang/Basic/BuiltinsHexagon.inc"

429#undef GET_BUILTIN_ENUMERATORS

431 };

432 }

433

434

436 enum {

438#define BUILTIN(ID, TYPE, ATTRS) BI##ID,

439#include "clang/Basic/BuiltinsMips.def"

441 };

442 }

443

444

446 enum {

448#define BUILTIN(ID, TYPE, ATTRS) BI##ID,

449#include "clang/Basic/BuiltinsXCore.def"

451 };

452 }

453

454

456 enum {

458#define BUILTIN(ID, TYPE, ATTRS) BI##ID,

459#include "clang/Basic/BuiltinsSystemZ.def"

461 };

462 }

463

464

466 enum {

468#define BUILTIN(ID, TYPE, ATTRS) BI##ID,

469#include "clang/Basic/BuiltinsWebAssembly.def"

471 };

472 }

473

480

481}

482

483#endif

Defines enum values for all the target-independent builtin functions.

bool isUnsigned() const

Definition TargetBuiltins.h:294

NeonTypeFlags(unsigned F)

Definition TargetBuiltins.h:277

bool isFloatingPoint() const

Definition TargetBuiltins.h:290

bool isQuad() const

Definition TargetBuiltins.h:295

EltType

Definition TargetBuiltins.h:261

@ Float64

Definition TargetBuiltins.h:272

@ Poly64

Definition TargetBuiltins.h:268

@ Poly8

Definition TargetBuiltins.h:266

@ Float32

Definition TargetBuiltins.h:271

@ Int32

Definition TargetBuiltins.h:264

@ Int16

Definition TargetBuiltins.h:263

@ Poly128

Definition TargetBuiltins.h:269

@ Int8

Definition TargetBuiltins.h:262

@ BFloat16

Definition TargetBuiltins.h:273

@ Poly16

Definition TargetBuiltins.h:267

@ Float16

Definition TargetBuiltins.h:270

@ Int64

Definition TargetBuiltins.h:265

@ MFloat8

Definition TargetBuiltins.h:274

unsigned getEltSizeInBits() const

Definition TargetBuiltins.h:296

bool isPoly() const

Definition TargetBuiltins.h:286

EltType getEltType() const

Definition TargetBuiltins.h:285

NeonTypeFlags(EltType ET, bool IsUnsigned, bool IsQuad)

Definition TargetBuiltins.h:278

bool isZExtReturn() const

Definition TargetBuiltins.h:392

bool isReverseUSDOT() const

Definition TargetBuiltins.h:408

bool isOverloadNone() const

Definition TargetBuiltins.h:394

bool isUndef() const

Definition TargetBuiltins.h:411

EltType

Definition TargetBuiltins.h:341

MergeType

Definition TargetBuiltins.h:353

MemEltType getMemEltType() const

Definition TargetBuiltins.h:370

bool isWriteZA() const

Definition TargetBuiltins.h:416

uint64_t getBits() const

Definition TargetBuiltins.h:419

bool isGatherLoad() const

Definition TargetBuiltins.h:388

EltType getEltType() const

Definition TargetBuiltins.h:366

bool isLoad() const

Definition TargetBuiltins.h:386

bool isOverloadFirstandLast() const

Definition TargetBuiltins.h:400

bool isOverloadDefault() const

Definition TargetBuiltins.h:398

bool isPrefetch() const

Definition TargetBuiltins.h:403

bool isOverloadWhileRW() const

Definition TargetBuiltins.h:399

bool isReadZA() const

Definition TargetBuiltins.h:415

bool isTupleSet() const

Definition TargetBuiltins.h:414

bool isReverseMergeAnyAccOp() const

Definition TargetBuiltins.h:410

bool isReductionQV() const

Definition TargetBuiltins.h:418

bool isTupleGet() const

Definition TargetBuiltins.h:413

bool isFlagSet(uint64_t Flag) const

Definition TargetBuiltins.h:420

bool isInsertOp1SVALL() const

Definition TargetBuiltins.h:406

bool isAppendSVALL() const

Definition TargetBuiltins.h:405

bool isReverseMergeAnyBinOp() const

Definition TargetBuiltins.h:409

bool isStructStore() const

Definition TargetBuiltins.h:391

bool isTupleCreate() const

Definition TargetBuiltins.h:412

bool isGatherPrefetch() const

Definition TargetBuiltins.h:407

SVETypeFlags(uint64_t F)

Definition TargetBuiltins.h:359

bool hasSplatOperand() const

Definition TargetBuiltins.h:382

MergeType getMergeType() const

Definition TargetBuiltins.h:374

bool isByteIndexed() const

Definition TargetBuiltins.h:393

bool isStructLoad() const

Definition TargetBuiltins.h:390

bool setsFPMR() const

Definition TargetBuiltins.h:417

bool isOverloadWhileOrMultiVecCvt() const

Definition TargetBuiltins.h:395

unsigned getSplatOperand() const

Definition TargetBuiltins.h:378

MemEltType

Definition TargetBuiltins.h:347

bool isStore() const

Definition TargetBuiltins.h:387

bool isScatterStore() const

Definition TargetBuiltins.h:389

bool isReverseCompare() const

Definition TargetBuiltins.h:404

AArch64 builtins.

Definition TargetBuiltins.h:88

@ LastTIBuiltin

Definition TargetBuiltins.h:90

@ FirstSVEBuiltin

Definition TargetBuiltins.h:92

@ LastSMEBuiltin

Definition TargetBuiltins.h:95

@ LastTSBuiltin

Definition TargetBuiltins.h:98

@ LastSVEBuiltin

Definition TargetBuiltins.h:93

@ FirstSMEBuiltin

Definition TargetBuiltins.h:94

@ LastNEONBuiltin

Definition TargetBuiltins.h:91

AMDGPU builtins.

Definition TargetBuiltins.h:135

@ LastTIBuiltin

Definition TargetBuiltins.h:137

@ LastTSBuiltin

Definition TargetBuiltins.h:140

ARM builtins.

Definition TargetBuiltins.h:40

@ FirstCDEBuiltin

Definition TargetBuiltins.h:47

@ FirstARMBuiltin

Definition TargetBuiltins.h:52

@ LastNEONBuiltin

Definition TargetBuiltins.h:43

@ LastTSBuiltin

Definition TargetBuiltins.h:56

@ LastMVEBuiltin

Definition TargetBuiltins.h:48

@ LastCDEBuiltin

Definition TargetBuiltins.h:53

@ LastTIBuiltin

Definition TargetBuiltins.h:42

BPF builtins.

Definition TargetBuiltins.h:103

@ LastTIBuiltin

Definition TargetBuiltins.h:105

@ LastTSBuiltin

Definition TargetBuiltins.h:109

DirectX builtins.

Definition TargetBuiltins.h:145

@ LastTIBuiltin

Definition TargetBuiltins.h:147

@ LastTSBuiltin

Definition TargetBuiltins.h:151

Hexagon builtins.

Definition TargetBuiltins.h:424

@ LastTSBuiltin

Definition TargetBuiltins.h:430

@ LastTIBuiltin

Definition TargetBuiltins.h:426

LoongArch builtins.

Definition TargetBuiltins.h:232

@ LastLSXBuiltin

Definition TargetBuiltins.h:242

@ LastTIBuiltin

Definition TargetBuiltins.h:234

@ FirstLSXBuiltin

Definition TargetBuiltins.h:237

@ FirstLASXBuiltin

Definition TargetBuiltins.h:241

@ LastTSBuiltin

Definition TargetBuiltins.h:245

@ LastBaseBuiltin

Definition TargetBuiltins.h:238

MIPS builtins.

Definition TargetBuiltins.h:435

@ LastTIBuiltin

Definition TargetBuiltins.h:437

@ LastTSBuiltin

Definition TargetBuiltins.h:440

Definition TargetBuiltins.h:26

@ FirstTSBuiltin

Definition TargetBuiltins.h:35

@ LastTIBuiltin

Definition TargetBuiltins.h:28

@ LastNeonBuiltin

Definition TargetBuiltins.h:32

@ FirstFp16Builtin

Definition TargetBuiltins.h:31

NVPTX builtins.

Definition TargetBuiltins.h:124

@ LastTIBuiltin

Definition TargetBuiltins.h:126

@ LastTSBuiltin

Definition TargetBuiltins.h:130

PPC builtins.

Definition TargetBuiltins.h:114

@ LastTSBuiltin

Definition TargetBuiltins.h:119

@ LastTIBuiltin

Definition TargetBuiltins.h:116

Definition TargetBuiltins.h:202

@ FirstSiFiveBuiltin

Definition TargetBuiltins.h:207

@ FirstAndesBuiltin

Definition TargetBuiltins.h:210

@ LastSiFiveBuiltin

Definition TargetBuiltins.h:211

@ LastRVVBuiltin

Definition TargetBuiltins.h:208

@ LastTIBuiltin

Definition TargetBuiltins.h:204

@ FirstTSBuiltin

Definition TargetBuiltins.h:214

RISCV builtins.

Definition TargetBuiltins.h:219

@ LastTIBuiltin

Definition TargetBuiltins.h:221

@ LastTSBuiltin

Definition TargetBuiltins.h:227

@ FirstRVVBuiltin

Definition TargetBuiltins.h:222

@ LastRVVBuiltin

Definition TargetBuiltins.h:223

Definition TargetBuiltins.h:77

@ LastSVEBuiltin

Definition TargetBuiltins.h:79

@ FirstTSBuiltin

Definition TargetBuiltins.h:83

SPIRV builtins.

Definition TargetBuiltins.h:156

@ FirstCLBuiltin

Definition TargetBuiltins.h:167

@ LastTSBuiltin

Definition TargetBuiltins.h:172

@ FirstVKBuiltin

Definition TargetBuiltins.h:162

@ LastVKBuiltin

Definition TargetBuiltins.h:168

@ LastCoreBuiltin

Definition TargetBuiltins.h:163

@ LastTIBuiltin

Definition TargetBuiltins.h:158

Definition TargetBuiltins.h:60

@ FirstNeonBridgeBuiltin

Definition TargetBuiltins.h:66

@ FirstTSBuiltin

Definition TargetBuiltins.h:73

@ LastSveBuiltin

Definition TargetBuiltins.h:67

@ LastNEONBuiltin

Definition TargetBuiltins.h:62

SystemZ builtins.

Definition TargetBuiltins.h:455

@ LastTIBuiltin

Definition TargetBuiltins.h:457

@ LastTSBuiltin

Definition TargetBuiltins.h:460

VE builtins.

Definition TargetBuiltins.h:193

@ LastTIBuiltin

Definition TargetBuiltins.h:195

@ LastTSBuiltin

Definition TargetBuiltins.h:198

WebAssembly builtins.

Definition TargetBuiltins.h:465

@ LastTSBuiltin

Definition TargetBuiltins.h:470

@ LastTIBuiltin

Definition TargetBuiltins.h:467

X86 builtins.

Definition TargetBuiltins.h:177

@ FirstX86_64Builtin

Definition TargetBuiltins.h:183

@ LastX86CommonBuiltin

Definition TargetBuiltins.h:184

@ LastTSBuiltin

Definition TargetBuiltins.h:188

@ LastTIBuiltin

Definition TargetBuiltins.h:179

XCore builtins.

Definition TargetBuiltins.h:445

@ LastTSBuiltin

Definition TargetBuiltins.h:450

@ LastTIBuiltin

Definition TargetBuiltins.h:447

The JSON file list parser is used to communicate input to InstallAPI.

ImmCheckType

Definition TargetBuiltins.h:322

static constexpr uint64_t LargestBuiltinID

Definition TargetBuiltins.h:474