LLVM: lib/Target/ARM/MCTargetDesc/ARMBaseInfo.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16#ifndef LLVM_LIB_TARGET_ARM_MCTARGETDESC_ARMBASEINFO_H

17#define LLVM_LIB_TARGET_ARM_MCTARGETDESC_ARMBASEINFO_H

18

22

23namespace llvm {

24

30

36

38 switch (val) {

40 case F: return "f";

41 case I: return "i";

42 case A: return "a";

43 }

44 }

45

46 inline static const char *IModToString(unsigned val) {

47 switch (val) {

49 case IE: return "ie";

50 case ID: return "id";

51 }

52 }

53}

54

56

57

76

77 inline static const char *MemBOptToString(unsigned val, bool HasV8) {

78 switch (val) {

80 case SY: return "sy";

81 case ST: return "st";

82 case LD: return HasV8 ? "ld" : "#0xd";

84 case ISH: return "ish";

85 case ISHST: return "ishst";

86 case ISHLD: return HasV8 ? "ishld" : "#0x9";

88 case NSH: return "nsh";

89 case NSHST: return "nshst";

90 case NSHLD: return HasV8 ? "nshld" : "#0x5";

92 case OSH: return "osh";

93 case OSHST: return "oshst";

94 case OSHLD: return HasV8 ? "oshld" : "#0x1";

96 }

97 }

98}

99

104

106 switch (val) {

107 default:

108 llvm_unreachable("Unknown trace synchronization barrier operation");

109 case CSYNC: return "csync";

110 }

111 }

112}

113

133

135 switch (val) {

136 default:

153 case SY: return "sy";

154 }

155 }

156}

157

158

159

161 using namespace ARM;

162 switch (Reg.id()) {

163 case R0: case R1: case R2: case R3:

164 case R4: case R5: case R6: case R7:

165 return true;

166 default:

167 return false;

168 }

169}

170

171

172

173

175

176

183

184

211

213 switch (addrmode) {

215 case AddrMode1: return "AddrMode1";

216 case AddrMode2: return "AddrMode2";

217 case AddrMode3: return "AddrMode3";

218 case AddrMode4: return "AddrMode4";

219 case AddrMode5: return "AddrMode5";

221 case AddrMode6: return "AddrMode6";

238 }

239 }

240

241

243

244

245

247

248

249

251

252

253

255

256

257

259

260

261

262

264

265

267

268

269

271

272

273

274

276

277

278

279

280

282

283

284

285

286

287

289

290

291

292

294

295

296

297

298

300

301

302

303

305

306

307

308

309

311 };

312

313 enum {

314

315

316

317

318

319 AddrModeMask = 0x1f,

320

321

322

323

326

327

328

329

332

333

335

336

338

339

342

343

346

347

353

355

356

359

360

362

363

374

375

377

378

380

381

398

399

400

401

402

403

405

406

407

409

410

411

412

413

415

416

417

419

420

421

423

424

426

427

428

430

431

432

433

434

435

438

439

440

448

449

450

451

452

453

454

456

477 };

478

479}

480

481}

482

483#endif

Wrapper class representing physical registers. Should be passed by value.

#define llvm_unreachable(msg)

Marks that the current location is not supposed to be reachable.

ARMII - This namespace holds all of the target specific flags that instruction info tracks.

Definition ARMBaseInfo.h:174

@ M_BitShift

Definition ARMBaseInfo.h:457

@ MulFrm

Definition ARMBaseInfo.h:337

@ BrFrm

Definition ARMBaseInfo.h:340

@ LdStExFrm

Definition ARMBaseInfo.h:354

@ MiscFrm

Definition ARMBaseInfo.h:379

@ VecSizeShift

Definition ARMBaseInfo.h:436

@ VFPLdStFrm

Definition ARMBaseInfo.h:371

@ BrMiscFrm

Definition ARMBaseInfo.h:341

@ IndexModeMask

Definition ARMBaseInfo.h:325

@ DomainNEON

Definition ARMBaseInfo.h:445

@ DomainVFP

Definition ARMBaseInfo.h:444

@ N3RegVShFrm

Definition ARMBaseInfo.h:393

@ NDupFrm

Definition ARMBaseInfo.h:384

@ DoubleWidthResult

Definition ARMBaseInfo.h:429

@ N2RegFrm

Definition ARMBaseInfo.h:387

@ D_BitShift

Definition ARMBaseInfo.h:472

@ DomainNEONA8

Definition ARMBaseInfo.h:446

@ RegRdLoShift

Definition ARMBaseInfo.h:465

@ ExtRotImmShift

Definition ARMBaseInfo.h:464

@ FormMask

Definition ARMBaseInfo.h:331

@ ShiftShift

Definition ARMBaseInfo.h:459

@ AM3_I_BitShift

Definition ARMBaseInfo.h:471

@ RegRdHiShift

Definition ARMBaseInfo.h:467

@ ThumbArithFlagSetting

Definition ARMBaseInfo.h:414

@ SatFrm

Definition ARMBaseInfo.h:358

@ Xform16Bit

Definition ARMBaseInfo.h:408

@ VFPConv5Frm

Definition ARMBaseInfo.h:370

@ VecSize

Definition ARMBaseInfo.h:437

@ NVExtFrm

Definition ARMBaseInfo.h:394

@ VFPMiscFrm

Definition ARMBaseInfo.h:373

@ NVDupLnFrm

Definition ARMBaseInfo.h:389

@ NGetLnFrm

Definition ARMBaseInfo.h:382

@ LdFrm

Definition ARMBaseInfo.h:348

@ VFPBinaryFrm

Definition ARMBaseInfo.h:365

@ NVTBLFrm

Definition ARMBaseInfo.h:396

@ P_BitShift

Definition ARMBaseInfo.h:474

@ NSetLnFrm

Definition ARMBaseInfo.h:383

@ DPSoRegFrm

Definition ARMBaseInfo.h:345

@ NVMulSLFrm

Definition ARMBaseInfo.h:395

@ N2RegVShRFrm

Definition ARMBaseInfo.h:391

@ ValidForTailPredication

Definition ARMBaseInfo.h:418

@ S_BitShift

Definition ARMBaseInfo.h:469

@ CondShift

Definition ARMBaseInfo.h:476

@ StMiscFrm

Definition ARMBaseInfo.h:351

@ VFPConv2Frm

Definition ARMBaseInfo.h:367

@ ExtFrm

Definition ARMBaseInfo.h:361

@ N1RegModImmFrm

Definition ARMBaseInfo.h:386

@ VFPUnaryFrm

Definition ARMBaseInfo.h:364

@ ShiftImmShift

Definition ARMBaseInfo.h:458

@ DomainMask

Definition ARMBaseInfo.h:442

@ LdStMulFrm

Definition ARMBaseInfo.h:352

@ DomainGeneral

Definition ARMBaseInfo.h:443

@ VFPConv4Frm

Definition ARMBaseInfo.h:369

@ RegRnShift

Definition ARMBaseInfo.h:468

@ HorizontalReduction

Definition ARMBaseInfo.h:425

@ RegRsShift

Definition ARMBaseInfo.h:463

@ ThumbFrm

Definition ARMBaseInfo.h:376

@ DomainShift

Definition ARMBaseInfo.h:441

@ RetainsPreviousHalfElement

Definition ARMBaseInfo.h:422

@ ArithMiscFrm

Definition ARMBaseInfo.h:357

@ I_BitShift

Definition ARMBaseInfo.h:475

@ DomainMVE

Definition ARMBaseInfo.h:447

@ DPFrm

Definition ARMBaseInfo.h:344

@ N2RegVShLFrm

Definition ARMBaseInfo.h:390

@ NLdStFrm

Definition ARMBaseInfo.h:385

@ N3RegCplxFrm

Definition ARMBaseInfo.h:397

@ SoRotImmShift

Definition ARMBaseInfo.h:462

@ IndexModeShift

Definition ARMBaseInfo.h:324

@ VFPLdStMulFrm

Definition ARMBaseInfo.h:372

@ VFPConv1Frm

Definition ARMBaseInfo.h:366

@ ShiftTypeShift

Definition ARMBaseInfo.h:455

@ N3RegFrm

Definition ARMBaseInfo.h:392

@ NVCVTFrm

Definition ARMBaseInfo.h:388

@ W_BitShift

Definition ARMBaseInfo.h:470

@ RegRdShift

Definition ARMBaseInfo.h:466

@ U_BitShift

Definition ARMBaseInfo.h:473

@ LdMiscFrm

Definition ARMBaseInfo.h:350

@ N_BitShift

Definition ARMBaseInfo.h:460

@ VFPConv3Frm

Definition ARMBaseInfo.h:368

@ FormShift

Definition ARMBaseInfo.h:330

@ Pseudo

Definition ARMBaseInfo.h:334

@ AddrModeMask

Definition ARMBaseInfo.h:319

@ ImmHiShift

Definition ARMBaseInfo.h:461

@ StFrm

Definition ARMBaseInfo.h:349

@ UnaryDP

Definition ARMBaseInfo.h:404

static const char * AddrModeToString(AddrMode addrmode)

Definition ARMBaseInfo.h:212

TOF

Target Operand Flag enum.

Definition ARMBaseInfo.h:242

@ MO_OPTION_MASK

MO_OPTION_MASK - Most flags are mutually exclusive; this mask selects just that part of the flag set.

Definition ARMBaseInfo.h:258

@ MO_LO16

MO_LO16 - On a symbol operand, this represents a relocation containing lower 16 bit of the address.

Definition ARMBaseInfo.h:250

@ MO_LO_0_7

MO_LO_0_7 - On a symbol operand, this represents a relocation containing bits 0 through 7 of the addr...

Definition ARMBaseInfo.h:293

@ MO_LO_8_15

MO_LO_8_15 - On a symbol operand, this represents a relocation containing bits 8 through 15 of the ad...

Definition ARMBaseInfo.h:299

@ MO_NONLAZY

MO_NONLAZY - This is an independent flag, on a symbol operand "FOO" it represents a symbol which,...

Definition ARMBaseInfo.h:288

@ MO_HI_8_15

MO_HI_8_15 - On a symbol operand, this represents a relocation containing bits 24 through 31 of the a...

Definition ARMBaseInfo.h:310

@ MO_SBREL

MO_SBREL - On a symbol operand, this represents a static base relative relocation.

Definition ARMBaseInfo.h:270

@ MO_HI16

MO_HI16 - On a symbol operand, this represents a relocation containing higher 16 bit of the address.

Definition ARMBaseInfo.h:254

@ MO_DLLIMPORT

MO_DLLIMPORT - On a symbol operand, this represents that the reference to the symbol is for an import...

Definition ARMBaseInfo.h:275

@ MO_SECREL

MO_SECREL - On a symbol operand this indicates that the immediate is the offset from beginning of sec...

Definition ARMBaseInfo.h:281

@ MO_NO_FLAG

Definition ARMBaseInfo.h:246

@ MO_HI_0_7

MO_HI_0_7 - On a symbol operand, this represents a relocation containing bits 16 through 23 of the ad...

Definition ARMBaseInfo.h:304

@ MO_GOT

MO_GOT - On a symbol operand, this represents a GOT relative relocation.

Definition ARMBaseInfo.h:266

@ MO_COFFSTUB

MO_COFFSTUB - On a symbol operand "FOO", this indicates that the reference is actually to the "....

Definition ARMBaseInfo.h:263

IndexMode

ARM Index Modes.

Definition ARMBaseInfo.h:177

@ IndexModeNone

Definition ARMBaseInfo.h:178

@ IndexModeUpd

Definition ARMBaseInfo.h:181

@ IndexModePost

Definition ARMBaseInfo.h:180

@ IndexModePre

Definition ARMBaseInfo.h:179

AddrMode

ARM Addressing Modes.

Definition ARMBaseInfo.h:185

@ AddrMode5

Definition ARMBaseInfo.h:191

@ AddrModeT1_s

Definition ARMBaseInfo.h:196

@ AddrModeT1_4

Definition ARMBaseInfo.h:195

@ AddrMode5FP16

Definition ARMBaseInfo.h:205

@ AddrMode3

Definition ARMBaseInfo.h:189

@ AddrMode_i12

Definition ARMBaseInfo.h:204

@ AddrModeT1_2

Definition ARMBaseInfo.h:194

@ AddrModeT2_i12

Definition ARMBaseInfo.h:197

@ AddrModeT2_i7s2

Definition ARMBaseInfo.h:208

@ AddrModeNone

Definition ARMBaseInfo.h:186

@ AddrMode2

Definition ARMBaseInfo.h:188

@ AddrMode6

Definition ARMBaseInfo.h:192

@ AddrModeT2_i8neg

Definition ARMBaseInfo.h:200

@ AddrModeT2_ldrex

Definition ARMBaseInfo.h:206

@ AddrModeT2_i8

Definition ARMBaseInfo.h:198

@ AddrModeT2_i7

Definition ARMBaseInfo.h:209

@ AddrMode4

Definition ARMBaseInfo.h:190

@ AddrMode1

Definition ARMBaseInfo.h:187

@ AddrModeT2_i8pos

Definition ARMBaseInfo.h:199

@ AddrModeT2_i7s4

Definition ARMBaseInfo.h:207

@ AddrModeT1_1

Definition ARMBaseInfo.h:193

@ AddrModeT2_i8s4

Definition ARMBaseInfo.h:203

@ AddrModeT2_so

Definition ARMBaseInfo.h:201

@ AddrModeT2_pc

Definition ARMBaseInfo.h:202

Definition ARMBaseInfo.h:114

static const char * InstSyncBOptToString(unsigned val)

Definition ARMBaseInfo.h:134

InstSyncBOpt

Definition ARMBaseInfo.h:115

@ RESERVED_2

Definition ARMBaseInfo.h:118

@ RESERVED_0

Definition ARMBaseInfo.h:116

@ RESERVED_8

Definition ARMBaseInfo.h:124

@ RESERVED_13

Definition ARMBaseInfo.h:129

@ RESERVED_1

Definition ARMBaseInfo.h:117

@ RESERVED_6

Definition ARMBaseInfo.h:122

@ RESERVED_7

Definition ARMBaseInfo.h:123

@ RESERVED_4

Definition ARMBaseInfo.h:120

@ SY

Definition ARMBaseInfo.h:131

@ RESERVED_5

Definition ARMBaseInfo.h:121

@ RESERVED_12

Definition ARMBaseInfo.h:128

@ RESERVED_3

Definition ARMBaseInfo.h:119

@ RESERVED_11

Definition ARMBaseInfo.h:127

@ RESERVED_14

Definition ARMBaseInfo.h:130

@ RESERVED_9

Definition ARMBaseInfo.h:125

@ RESERVED_10

Definition ARMBaseInfo.h:126

Definition ARMBaseInfo.h:55

static const char * MemBOptToString(unsigned val, bool HasV8)

Definition ARMBaseInfo.h:77

MemBOpt

Definition ARMBaseInfo.h:58

@ SY

Definition ARMBaseInfo.h:74

@ NSH

Definition ARMBaseInfo.h:66

@ RESERVED_4

Definition ARMBaseInfo.h:63

@ OSH

Definition ARMBaseInfo.h:62

@ NSHLD

Definition ARMBaseInfo.h:64

@ RESERVED_8

Definition ARMBaseInfo.h:67

@ ISH

Definition ARMBaseInfo.h:70

@ OSHLD

Definition ARMBaseInfo.h:60

@ ISHLD

Definition ARMBaseInfo.h:68

@ LD

Definition ARMBaseInfo.h:72

@ ISHST

Definition ARMBaseInfo.h:69

@ NSHST

Definition ARMBaseInfo.h:65

@ RESERVED_12

Definition ARMBaseInfo.h:71

@ OSHST

Definition ARMBaseInfo.h:61

@ RESERVED_0

Definition ARMBaseInfo.h:59

@ ST

Definition ARMBaseInfo.h:73

Definition ARMBaseInfo.h:25

IMod

Definition ARMBaseInfo.h:26

@ ID

Definition ARMBaseInfo.h:28

@ IE

Definition ARMBaseInfo.h:27

static const char * IModToString(unsigned val)

Definition ARMBaseInfo.h:46

static const char * IFlagsToString(unsigned val)

Definition ARMBaseInfo.h:37

IFlags

Definition ARMBaseInfo.h:31

@ I

Definition ARMBaseInfo.h:33

@ A

Definition ARMBaseInfo.h:34

@ F

Definition ARMBaseInfo.h:32

Definition ARMBaseInfo.h:100

static const char * TraceSyncBOptToString(unsigned val)

Definition ARMBaseInfo.h:105

TraceSyncBOpt

Definition ARMBaseInfo.h:101

@ CSYNC

Definition ARMBaseInfo.h:102

Define some predicates that are used for node matching.

This is an optimization pass for GlobalISel generic memory operations.

static bool isARMLowRegister(MCRegister Reg)

isARMLowRegister - Returns true if the register is a low register (r0-r7).

Definition ARMBaseInfo.h:160