LLVM: lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

32

33using namespace llvm;

34

35namespace {

37 "mips-round-section-sizes", cl::init(false),

38 cl::desc("Round section sizes up to the section alignment"), cl::Hidden);

39}

40

42 return STI->hasFeature(Mips::FeatureMicroMips);

43}

44

46 return STI->hasFeature(Mips::FeatureMips32r6);

47}

48

53

132

133

134

135

136

137

138

139

140

142 return;

143

145

147}

155 const MCSymbol &Sym, bool IsReg) {

156}

158 bool SaveLocationIsRegister) {}

159

161

183

189 TmpInst.setLoc(IDLoc);

191}

192

199 TmpInst.setLoc(IDLoc);

201}

202

207

213

220 TmpInst.setLoc(IDLoc);

222}

223

232 TmpInst.setLoc(IDLoc);

234}

235

241

252 TmpInst.setLoc(IDLoc);

254}

255

261

263 MCRegister Reg1, int16_t Imm0, int16_t Imm1,

264 int16_t Imm2, SMLoc IDLoc,

273 TmpInst.setLoc(IDLoc);

275}

276

280 emitRRR(Is64Bit ? Mips::DADDu : Mips::ADDu, DstReg, SrcReg, TrgReg, SMLoc(),

281 STI);

282}

283

285 int16_t ShiftAmount, SMLoc IDLoc,

287 if (ShiftAmount >= 32) {

288 emitRRI(Mips::DSLL32, DstReg, SrcReg, ShiftAmount - 32, IDLoc, STI);

289 return;

290 }

291

292 emitRRI(Mips::DSLL, DstReg, SrcReg, ShiftAmount, IDLoc, STI);

293}

294

297

298 unsigned Opc = Mips::SLL;

300 Opc = isMips32r6(STI) ? Mips::MOVE16_MMR6 : Mips::MOVE16_MM;

301 emitRR(Opc, Mips::ZERO, Mips::ZERO, IDLoc, STI);

302 return;

303 }

304

306 Opc = isMips32r6(STI) ? Mips::SLL_MMR6 : Mips::SLL_MM;

307

308 emitRRI(Opc, Mips::ZERO, Mips::ZERO, 0, IDLoc, STI);

309}

310

313 emitRR(Mips::MOVE16_MM, Mips::ZERO, Mips::ZERO, IDLoc, STI);

314 else

315 emitRRI(Mips::SLL, Mips::ZERO, Mips::ZERO, 0, IDLoc, STI);

316}

317

318

323

324

330 emitRRI(Opcode, SrcReg, BaseReg, Offset, IDLoc, STI);

331 return;

332 }

333

334

335

336

337

339 if (!ATReg)

340 return;

341

342 unsigned LoOffset = Offset & 0x0000ffff;

343 unsigned HiOffset = (Offset & 0xffff0000) >> 16;

344

345

346

347 if (LoOffset & 0x8000)

348 HiOffset++;

349

350

351 emitRI(Mips::LUi, ATReg, HiOffset, IDLoc, STI);

352 if (BaseReg != Mips::ZERO)

353 emitRRR(Mips::ADDu, ATReg, ATReg, BaseReg, IDLoc, STI);

354

355 emitRRI(Opcode, SrcReg, ATReg, LoOffset, IDLoc, STI);

356}

357

358

359

360

361

366 emitRRI(Opcode, DstReg, BaseReg, Offset, IDLoc, STI);

367 return;

368 }

369

370

371

372

373

374

375

376

377 unsigned LoOffset = Offset & 0x0000ffff;

378 unsigned HiOffset = (Offset & 0xffff0000) >> 16;

379

380

381

382 if (LoOffset & 0x8000)

383 HiOffset++;

384

385

386 emitRI(Mips::LUi, TmpReg, HiOffset, IDLoc, STI);

387 if (BaseReg != Mips::ZERO)

388 emitRRR(Mips::ADDu, TmpReg, TmpReg, BaseReg, IDLoc, STI);

389

390 emitRRI(Opcode, DstReg, TmpReg, LoOffset, IDLoc, STI);

391}

392

396

399 OS << "\t.dtprelword\t";

401 OS << '\n';

402}

403

406 OS << "\t.dtpreldword\t";

408 OS << '\n';

409}

410

413 OS << "\t.tprelword\t";

415 OS << '\n';

416}

417

420 OS << "\t.tpreldword\t";

422 OS << '\n';

423}

424

427 OS << "\t.gpword\t";

429 OS << '\n';

430}

431

434 OS << "\t.gpdword\t";

436 OS << '\n';

437}

438

440 OS << "\t.set\tmicromips\n";

442}

443

445 OS << "\t.set\tnomicromips\n";

447}

448

450 OS << "\t.set\tmips16\n";

452}

453

455 OS << "\t.set\tnomips16\n";

457}

458

460 OS << "\t.set\treorder\n";

462}

463

465 OS << "\t.set\tnoreorder\n";

467}

468

470 OS << "\t.set\tmacro\n";

472}

473

475 OS << "\t.set\tnomacro\n";

477}

478

480 OS << "\t.set\tmsa\n";

482}

483

485 OS << "\t.set\tnomsa\n";

487}

488

490 OS << "\t.set\tmt\n";

492}

493

495 OS << "\t.set\tnomt\n";

497}

498

500 OS << "\t.set\tcrc\n";

502}

503

505 OS << "\t.set\tnocrc\n";

507}

508

510 OS << "\t.set\tvirt\n";

512}

513

515 OS << "\t.set\tnovirt\n";

517}

518

520 OS << "\t.set\tginv\n";

522}

523

525 OS << "\t.set\tnoginv\n";

527}

528

530 OS << "\t.set\tat\n";

532}

533

535 OS << "\t.set\tat=$" << Twine(RegNo) << "\n";

537}

538

540 OS << "\t.set\tnoat\n";

542}

543

545 OS << "\t.end\t" << Name << '\n';

546}

547

549 OS << "\t.ent\t" << Symbol.getName() << '\n';

550}

551

553

555

557 OS << "\t.nan\tlegacy\n";

558}

559

561 OS << "\t.option\tpic0\n";

562}

563

565 OS << "\t.option\tpic2\n";

566}

567

570 OS << "\t.insn\n";

571}

572

575 OS << "\t.frame\t$"

577 << StackSize << ",$"

579}

580

582 OS << "\t.set arch=" << Arch << "\n";

584}

585

587 OS << "\t.set\tmips0\n";

589}

590

592 OS << "\t.set\tmips1\n";

594}

595

597 OS << "\t.set\tmips2\n";

599}

600

602 OS << "\t.set\tmips3\n";

604}

605

607 OS << "\t.set\tmips4\n";

609}

610

612 OS << "\t.set\tmips5\n";

614}

615

617 OS << "\t.set\tmips32\n";

619}

620

622 OS << "\t.set\tmips32r2\n";

624}

625

627 OS << "\t.set\tmips32r3\n";

629}

630

632 OS << "\t.set\tmips32r5\n";

634}

635

637 OS << "\t.set\tmips32r6\n";

639}

640

642 OS << "\t.set\tmips64\n";

644}

645

647 OS << "\t.set\tmips64r2\n";

649}

650

652 OS << "\t.set\tmips64r3\n";

654}

655

657 OS << "\t.set\tmips64r5\n";

659}

660

662 OS << "\t.set\tmips64r6\n";

664}

665

667 OS << "\t.set\tdsp\n";

669}

670

672 OS << "\t.set\tdspr2\n";

674}

675

677 OS << "\t.set\tnodsp\n";

679}

680

682 OS << "\t.set\tmips3d\n";

684}

685

687 OS << "\t.set\tnomips3d\n";

689}

690

692 OS << "\t.set\tpop\n";

694}

695

697 OS << "\t.set\tpush\n";

699}

700

702 OS << "\t.set\tsoftfloat\n";

704}

705

707 OS << "\t.set\thardfloat\n";

709}

710

711

713 OS << "0x";

714 for (int i = 7; i >= 0; i--)

716}

717

719 int CPUTopSavedRegOff) {

720 OS << "\t.mask \t";

722 OS << ',' << CPUTopSavedRegOff << '\n';

723}

724

726 int FPUTopSavedRegOff) {

727 OS << "\t.fmask\t";

729 OS << "," << FPUTopSavedRegOff << '\n';

730}

731

733 OS << "\t.cpadd\t$"

736}

737

739 OS << "\t.cpload\t$"

742}

743

745 OS << "\t.cplocal\t$"

748}

749

754 OS << "\t.cprestore\t" << Offset << "\n";

755 return true;

756}

757

759 int RegOrOffset,

761 bool IsReg) {

762 OS << "\t.cpsetup\t$"

764

765 if (IsReg)

766 OS << "$"

768 else

769 OS << RegOrOffset;

770

771 OS << ", ";

772

775}

776

778 bool SaveLocationIsRegister) {

779 OS << "\t.cpreturn";

781}

782

786 OS << "\t.module\tsoftfloat\n";

787 else

788 OS << "\t.module\tfp=" << ABIFlagsSection.getFpABIString(FpABI) << "\n";

789}

790

794

795 OS << "\t.set\tfp=";

797}

798

801

802 OS << "\t.module\t" << (ABIFlagsSection.OddSPReg ? "" : "no") << "oddspreg\n";

803}

804

807 OS << "\t.set\toddspreg\n";

808}

809

812 OS << "\t.set\tnooddspreg\n";

813}

814

816 OS << "\t.module\tsoftfloat\n";

817}

818

820 OS << "\t.module\thardfloat\n";

821}

822

824 OS << "\t.module\tmt\n";

825}

826

828 OS << "\t.module\tcrc\n";

829}

830

832 OS << "\t.module\tnocrc\n";

833}

834

836 OS << "\t.module\tvirt\n";

837}

838

840 OS << "\t.module\tnovirt\n";

841}

842

844 OS << "\t.module\tginv\n";

845}

846

848 OS << "\t.module\tnoginv\n";

849}

850

851

857

858

859

860

861

862

863

864

866

867 const FeatureBitset &Features = STI.getFeatureBits();

868

869

870

871

872

873

874

875

876

877

878

879

880 unsigned EFlags = W.getELFHeaderEFlags();

881

882

883

884

885

886

892

893

894 if (Features[Mips::FeatureMips64r6])

896 else if (Features[Mips::FeatureMips64r2] ||

897 Features[Mips::FeatureMips64r3] ||

898 Features[Mips::FeatureMips64r5])

900 else if (Features[Mips::FeatureMips64])

902 else if (Features[Mips::FeatureMips5])

904 else if (Features[Mips::FeatureMips4])

906 else if (Features[Mips::FeatureMips3])

908 else if (Features[Mips::FeatureMips32r6])

910 else if (Features[Mips::FeatureMips32r2] ||

911 Features[Mips::FeatureMips32r3] ||

912 Features[Mips::FeatureMips32r5])

914 else if (Features[Mips::FeatureMips32])

916 else if (Features[Mips::FeatureMips2])

918 else

920

921

922 if (Features[Mips::FeatureCnMips])

924

925

926 if (Features[Mips::FeatureNaN2008])

928

929 W.setELFHeaderEFlags(EFlags);

930}

931

933 auto *Symbol = static_cast<MCSymbolELF *>(S);

937 return;

938

941}

942

948

949

956

960

961 if (RoundSectionSizes) {

962

963

964

965

968

969 Align Alignment = Section.getAlign();

971 if (getContext().getAsmInfo()->useCodeAlign(Section))

973 else

975 }

976 }

977

978 const FeatureBitset &Features = STI.getFeatureBits();

979

980

981

982 unsigned EFlags = W.getELFHeaderEFlags();

983

984

985

986 if (getABI().IsO32())

988 else if (getABI().IsN32())

990

991 if (Features[Mips::FeatureGP64Bit]) {

992 if (getABI().IsO32())

994 } else if (Features[Mips::FeatureMips64r2] || Features[Mips::FeatureMips64])

996

997

998

999 if (!Features[Mips::FeatureNoABICalls])

1001

1002 if (Pic)

1004

1005 W.setELFHeaderEFlags(EFlags);

1006

1007

1008

1009

1012

1014}

1015

1017 auto *Symbol = static_cast<MCSymbolELF *>(S);

1018

1020 return;

1021 auto &RhsSym = static_cast<const MCSymbolELF &>(

1023

1025 return;

1026

1028}

1029

1033

1036 S.ensureHeadroom(4);

1038 S.appendContents(4, 0);

1039}

1040

1043 S.ensureHeadroom(8);

1044

1046 S.appendContents(8, 0);

1047}

1048

1051 S.ensureHeadroom(4);

1053 S.appendContents(4, 0);

1054}

1055

1058 S.ensureHeadroom(8);

1060 S.appendContents(8, 0);

1061}

1062

1065 S.ensureHeadroom(4);

1067 S.appendContents(4, 0);

1068}

1069

1072 S.ensureHeadroom(8);

1074 S.appendContents(8, 0);

1075}

1076

1078 MicroMipsEnabled = true;

1080}

1081

1083 MicroMipsEnabled = false;

1085}

1086

1089 unsigned Flags = W.getELFHeaderEFlags();

1091 W.setELFHeaderEFlags(Flags);

1092}

1093

1096 unsigned Flags = W.getELFHeaderEFlags();

1098 W.setELFHeaderEFlags(Flags);

1100}

1101

1104 unsigned Flags = W.getELFHeaderEFlags();

1106 W.setELFHeaderEFlags(Flags);

1108}

1109

1114

1119

1120 MCSymbol *Sym = Context.getOrCreateSymbol(Name);

1123

1126

1129

1133

1134

1135

1137

1139

1140

1141 MCSymbol *CurPCSym = Context.createTempSymbol();

1145

1146

1147

1148

1150}

1151

1158

1161 unsigned Flags = W.getELFHeaderEFlags();

1163 W.setELFHeaderEFlags(Flags);

1164}

1165

1168 unsigned Flags = W.getELFHeaderEFlags();

1170 W.setELFHeaderEFlags(Flags);

1171}

1172

1175 unsigned Flags = W.getELFHeaderEFlags();

1176 Flags &= ~ELF::EF_MIPS_NAN2008;

1177 W.setELFHeaderEFlags(Flags);

1178}

1179

1182 unsigned Flags = W.getELFHeaderEFlags();

1183

1184 Pic = false;

1185 Flags &= ~ELF::EF_MIPS_PIC;

1186 W.setELFHeaderEFlags(Flags);

1187}

1188

1191 unsigned Flags = W.getELFHeaderEFlags();

1192 Pic = true;

1193

1194

1195

1196

1198 W.setELFHeaderEFlags(Flags);

1199}

1200

1206

1210 const MCRegisterInfo *RegInfo = Context.getRegisterInfo();

1211

1213 FrameReg = RegInfo->getEncodingValue(StackReg);

1215 ReturnReg = RegInfo->getEncodingValue(ReturnReg_);

1216}

1217

1219 int CPUTopSavedRegOff) {

1223}

1224

1226 int FPUTopSavedRegOff) {

1230}

1231

1233

1234

1235

1236 if (!Pic)

1237 return;

1238

1241}

1242

1244

1245

1246

1247

1248

1249

1250 if (!Pic || (getABI().IsN32() || getABI().IsN64()))

1251 return;

1252

1253

1254

1255

1256

1257

1258

1259

1264

1271

1272 TmpInst.clear();

1273

1280

1281 TmpInst.clear();

1282

1288

1290}

1291

1296

1301

1302

1303

1304

1305

1306

1307

1308

1309 if (!Pic || (getABI().IsN32() || getABI().IsN64()))

1310 return true;

1311

1312

1314 STI);

1315 return true;

1316}

1317

1319 int RegOrOffset,

1321 bool IsReg) {

1322

1323 if (!Pic || !(getABI().IsN32() || getABI().IsN64()))

1324 return;

1325

1327

1330

1331

1332 if (IsReg) {

1333

1334 emitRRR(Mips::OR64, RegOrOffset, GPReg, Mips::ZERO, SMLoc(), &STI);

1335 } else {

1336

1338 }

1339

1340 auto *HiExpr =

1343 auto *LoExpr =

1346

1347

1349

1350

1352 &STI);

1353

1354

1355 if (getABI().IsN32())

1357 else

1359}

1360

1362 bool SaveLocationIsRegister) {

1363

1364 if (!Pic || !(getABI().IsN32() || getABI().IsN64()))

1365 return;

1366

1368

1369 if (SaveLocationIsRegister) {

1374 } else {

1379 }

1381

1383}

1384

static bool hasShortDelaySlot(MCInst &Inst)

static bool isMicroMips(const MCSubtargetInfo *STI)

Definition MipsTargetStreamer.cpp:41

static void printHex32(unsigned Value, raw_ostream &OS)

Definition MipsTargetStreamer.cpp:712

static bool isMips32r6(const MCSubtargetInfo *STI)

Definition MipsTargetStreamer.cpp:45

Container class for subtarget features.

void printExpr(raw_ostream &, const MCExpr &) const

MCContext & getContext() const

LLVM_ABI bool registerSymbol(const MCSymbol &Symbol)

static const MCBinaryExpr * createSub(const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)

Context object for machine code objects.

const MCObjectFileInfo * getObjectFileInfo() const

const MCAsmInfo * getAsmInfo() const

LLVM_ABI MCSymbol * getOrCreateSymbol(const Twine &Name)

Lookup the symbol inside with the specified Name.

ELFObjectWriter & getWriter()

Base class for the full range of assembler expressions which are needed for parsing.

@ SymbolRef

References to labels and assigned expressions.

Instances of this class represent a single low-level machine instruction.

void addOperand(const MCOperand Op)

void setOpcode(unsigned Op)

MCSection * getBSSSection() const

bool isPositionIndependent() const

MCSection * getTextSection() const

MCSection * getDataSection() const

void emitValueToAlignment(Align Alignment, int64_t Fill=0, uint8_t FillLen=1, unsigned MaxBytesToEmit=0) override

Emit some number of copies of Value until the byte alignment ByteAlignment is reached.

MCAssembler & getAssembler()

void emitInstruction(const MCInst &Inst, const MCSubtargetInfo &STI) override

Emit the given Instruction into the current section.

void emitCodeAlignment(Align ByteAlignment, const MCSubtargetInfo *STI, unsigned MaxBytesToEmit=0) override

Emit nops until the byte alignment ByteAlignment is reached.

Instances of this class represent operands of the MCInst class.

static MCOperand createExpr(const MCExpr *Val)

static MCOperand createReg(MCRegister Reg)

static MCOperand createImm(int64_t Val)

MCRegisterInfo base class - We assume that the target defines a static array of MCRegisterDesc object...

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

This represents a section on linux, lots of unix variants and some bare metal systems.

Instances of this class represent a uniqued identifier for a section in the current translation unit.

void setAlignment(Align Value)

void ensureMinAlignment(Align MinAlignment)

Makes sure that Alignment is at least MinAlignment.

static const MCSpecifierExpr * create(const MCExpr *Expr, Spec S, MCContext &Ctx, SMLoc Loc=SMLoc())

Streaming machine code generation interface.

virtual bool popSection()

Restore the current and previous section from the section stack.

virtual void emitInstruction(const MCInst &Inst, const MCSubtargetInfo &STI)

Emit the given Instruction into the current section.

MCContext & getContext() const

virtual void emitLabel(MCSymbol *Symbol, SMLoc Loc=SMLoc())

Emit a label for Symbol into the current section.

virtual void emitIntValue(uint64_t Value, unsigned Size)

Special case of EmitValue that avoids the client having to pass in a MCExpr for constant integers.

void pushSection()

Save the current and previous section on the section stack.

virtual void switchSection(MCSection *Section, uint32_t Subsec=0)

Set the current section where code is being emitted to Section.

virtual void emitValueImpl(const MCExpr *Value, unsigned Size, SMLoc Loc=SMLoc())

Emit the expression Value into the output as a native integer of the given Size bytes.

Generic base class for all target subtargets.

bool hasFeature(unsigned Feature) const

void setOther(unsigned Other)

Represent a reference to a symbol from inside an expression.

const MCSymbol & getSymbol() const

static const MCSymbolRefExpr * create(const MCSymbol *Symbol, MCContext &Ctx, SMLoc Loc=SMLoc())

MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...

StringRef getName() const

getName - Get the symbol name.

MCStreamer & getStreamer()

MCTargetStreamer(MCStreamer &S)

void EmitMipsOptionRecords()

Emits all the option records stored up until the point it's called.

void createPendingLabelRelocs()

Mark labels as microMIPS, if necessary for the subtarget.

static const char * getRegisterName(MCRegister Reg)

void emitDirectiveSetMips32R3() override

Definition MipsTargetStreamer.cpp:626

void emitDirectiveSetFp(MipsABIFlagsSection::FpABIKind Value) override

Definition MipsTargetStreamer.cpp:791

void emitDirectiveSetArch(StringRef Arch) override

Definition MipsTargetStreamer.cpp:581

void emitDirectiveModuleGINV() override

Definition MipsTargetStreamer.cpp:843

void emitDirectiveCpsetup(MCRegister Reg, int RegOrOffset, const MCSymbol &Sym, bool IsReg) override

Definition MipsTargetStreamer.cpp:758

MipsTargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &OS)

Definition MipsTargetStreamer.cpp:393

void emitDirectiveSetMips5() override

Definition MipsTargetStreamer.cpp:611

void emitDirectiveSetNoVirt() override

Definition MipsTargetStreamer.cpp:514

void emitDirectiveSetNoAt() override

Definition MipsTargetStreamer.cpp:539

void emitDirectiveSetNoCRC() override

Definition MipsTargetStreamer.cpp:504

void emitDirectiveSetMips32R5() override

Definition MipsTargetStreamer.cpp:631

void emitDirectiveSetNoMacro() override

Definition MipsTargetStreamer.cpp:474

void emitDirectiveModuleMT() override

Definition MipsTargetStreamer.cpp:823

void emitDirectiveSetNoOddSPReg() override

Definition MipsTargetStreamer.cpp:810

void emitDirectiveCpLocal(MCRegister Reg) override

Definition MipsTargetStreamer.cpp:744

void emitDirectiveModuleCRC() override

Definition MipsTargetStreamer.cpp:827

void emitDirectiveEnt(const MCSymbol &Symbol) override

Definition MipsTargetStreamer.cpp:548

void emitDirectiveSetDspr2() override

Definition MipsTargetStreamer.cpp:671

void emitDirectiveSetMips1() override

Definition MipsTargetStreamer.cpp:591

void emitDirectiveSetMips64R2() override

Definition MipsTargetStreamer.cpp:646

void emitDirectiveSetMips4() override

Definition MipsTargetStreamer.cpp:606

void emitDirectiveModuleSoftFloat() override

Definition MipsTargetStreamer.cpp:815

void emitDirectiveSetMips16() override

Definition MipsTargetStreamer.cpp:449

void emitDirectiveSetMt() override

Definition MipsTargetStreamer.cpp:489

void emitDirectiveInsn() override

Definition MipsTargetStreamer.cpp:568

void emitDTPRel64Value(const MCExpr *) override

Definition MipsTargetStreamer.cpp:404

void emitDirectiveSetMicroMips() override

Definition MipsTargetStreamer.cpp:439

void emitTPRel64Value(const MCExpr *) override

Definition MipsTargetStreamer.cpp:418

void emitDirectiveModuleNoCRC() override

Definition MipsTargetStreamer.cpp:831

void emitDirectiveSetMips32R6() override

Definition MipsTargetStreamer.cpp:636

bool emitDirectiveCpRestore(int Offset, function_ref< MCRegister()> GetATReg, SMLoc IDLoc, const MCSubtargetInfo *STI) override

Emit a .cprestore directive.

Definition MipsTargetStreamer.cpp:750

void emitDirectiveCpAdd(MCRegister Reg) override

Definition MipsTargetStreamer.cpp:732

void emitDirectiveSetNoGINV() override

Definition MipsTargetStreamer.cpp:524

void emitDirectiveSetMips64R5() override

Definition MipsTargetStreamer.cpp:656

void emitDirectiveSetMips32() override

Definition MipsTargetStreamer.cpp:616

void emitDirectiveCpLoad(MCRegister Reg) override

Definition MipsTargetStreamer.cpp:738

void emitDirectiveSetNoMips3D() override

Definition MipsTargetStreamer.cpp:686

void emitDirectiveSetPush() override

Definition MipsTargetStreamer.cpp:696

void emitDirectiveSetNoMips16() override

Definition MipsTargetStreamer.cpp:454

void emitDirectiveSetNoDsp() override

Definition MipsTargetStreamer.cpp:676

void emitDirectiveSetMips32R2() override

Definition MipsTargetStreamer.cpp:621

void emitDirectiveSetMips64() override

Definition MipsTargetStreamer.cpp:641

void emitFrame(MCRegister StackReg, unsigned StackSize, MCRegister ReturnReg) override

Definition MipsTargetStreamer.cpp:573

void emitDirectiveModuleHardFloat() override

Definition MipsTargetStreamer.cpp:819

void emitDirectiveOptionPic0() override

Definition MipsTargetStreamer.cpp:560

void emitDirectiveSetMacro() override

Definition MipsTargetStreamer.cpp:469

void emitDirectiveSetCRC() override

Definition MipsTargetStreamer.cpp:499

void emitDirectiveSetNoReorder() override

Definition MipsTargetStreamer.cpp:464

void emitDirectiveEnd(StringRef Name) override

Definition MipsTargetStreamer.cpp:544

void emitDirectiveSetMips64R3() override

Definition MipsTargetStreamer.cpp:651

void emitFMask(unsigned FPUBitmask, int FPUTopSavedRegOff) override

Definition MipsTargetStreamer.cpp:725

void emitDirectiveSetNoMt() override

Definition MipsTargetStreamer.cpp:494

void emitDirectiveAbiCalls() override

Definition MipsTargetStreamer.cpp:552

void emitDirectiveSetMsa() override

Definition MipsTargetStreamer.cpp:479

void emitDirectiveOptionPic2() override

Definition MipsTargetStreamer.cpp:564

void emitMask(unsigned CPUBitmask, int CPUTopSavedRegOff) override

Definition MipsTargetStreamer.cpp:718

void emitDirectiveModuleVirt() override

Definition MipsTargetStreamer.cpp:835

void emitDirectiveSetGINV() override

Definition MipsTargetStreamer.cpp:519

void emitDirectiveSetNoMsa() override

Definition MipsTargetStreamer.cpp:484

void emitDirectiveCpreturn(unsigned SaveLocation, bool SaveLocationIsRegister) override

Definition MipsTargetStreamer.cpp:777

void emitDirectiveModuleNoVirt() override

Definition MipsTargetStreamer.cpp:839

void emitDirectiveNaN2008() override

Definition MipsTargetStreamer.cpp:554

void emitDirectiveSetPop() override

Definition MipsTargetStreamer.cpp:691

void emitDTPRel32Value(const MCExpr *) override

Definition MipsTargetStreamer.cpp:397

void emitDirectiveSetMips3() override

Definition MipsTargetStreamer.cpp:601

void emitDirectiveSetMips0() override

Definition MipsTargetStreamer.cpp:586

void emitTPRel32Value(const MCExpr *) override

Definition MipsTargetStreamer.cpp:411

void emitDirectiveSetHardFloat() override

Definition MipsTargetStreamer.cpp:706

void emitDirectiveModuleNoGINV() override

Definition MipsTargetStreamer.cpp:847

void emitDirectiveSetVirt() override

Definition MipsTargetStreamer.cpp:509

void emitDirectiveModuleFP() override

Definition MipsTargetStreamer.cpp:783

void emitDirectiveSetMips2() override

Definition MipsTargetStreamer.cpp:596

void emitDirectiveSetMips3D() override

Definition MipsTargetStreamer.cpp:681

void emitDirectiveSetAtWithArg(unsigned RegNo) override

Definition MipsTargetStreamer.cpp:534

void emitDirectiveSetReorder() override

Definition MipsTargetStreamer.cpp:459

void emitDirectiveNaNLegacy() override

Definition MipsTargetStreamer.cpp:556

void emitGPRel64Value(const MCExpr *) override

Definition MipsTargetStreamer.cpp:432

void emitDirectiveSetMips64R6() override

Definition MipsTargetStreamer.cpp:661

void emitDirectiveSetSoftFloat() override

Definition MipsTargetStreamer.cpp:701

void emitDirectiveSetNoMicroMips() override

Definition MipsTargetStreamer.cpp:444

void emitGPRel32Value(const MCExpr *) override

Definition MipsTargetStreamer.cpp:425

void emitDirectiveSetAt() override

Definition MipsTargetStreamer.cpp:529

void emitDirectiveSetOddSPReg() override

Definition MipsTargetStreamer.cpp:805

void emitDirectiveModuleOddSPReg() override

Definition MipsTargetStreamer.cpp:799

void emitDirectiveSetDsp() override

Definition MipsTargetStreamer.cpp:666

bool emitDirectiveCpRestore(int Offset, function_ref< MCRegister()> GetATReg, SMLoc IDLoc, const MCSubtargetInfo *STI) override

Definition MipsTargetStreamer.cpp:1297

void emitDTPRel32Value(const MCExpr *) override

Definition MipsTargetStreamer.cpp:1049

MipsTargetELFStreamer(MCStreamer &S, const MCSubtargetInfo &STI)

Definition MipsTargetStreamer.cpp:852

void emitDirectiveNaN2008() override

Definition MipsTargetStreamer.cpp:1166

void emitDirectiveSetNoMicroMips() override

Definition MipsTargetStreamer.cpp:1082

void emitGPRel64Value(const MCExpr *) override

Definition MipsTargetStreamer.cpp:1041

void emitDirectiveInsn() override

Definition MipsTargetStreamer.cpp:1201

void setUsesMicroMips() override

Definition MipsTargetStreamer.cpp:1087

void emitDirectiveOptionPic2() override

Definition MipsTargetStreamer.cpp:1189

void emitGPRel32Value(const MCExpr *) override

Definition MipsTargetStreamer.cpp:1034

bool isMicroMipsEnabled() const

void emitDirectiveEnd(StringRef Name) override

Definition MipsTargetStreamer.cpp:1110

void emitFrame(MCRegister StackReg, unsigned StackSize, MCRegister ReturnReg) override

Definition MipsTargetStreamer.cpp:1207

void emitDirectiveCpsetup(MCRegister Reg, int RegOrOffset, const MCSymbol &Sym, bool IsReg) override

Definition MipsTargetStreamer.cpp:1318

void emitDirectiveCpAdd(MCRegister Reg) override

Definition MipsTargetStreamer.cpp:1232

void emitDirectiveCpLocal(MCRegister Reg) override

Definition MipsTargetStreamer.cpp:1292

void emitTPRel64Value(const MCExpr *) override

Definition MipsTargetStreamer.cpp:1070

void emitDirectiveSetMicroMips() override

Definition MipsTargetStreamer.cpp:1077

void emitLabel(MCSymbol *Symbol) override

Definition MipsTargetStreamer.cpp:932

void emitTPRel32Value(const MCExpr *) override

Definition MipsTargetStreamer.cpp:1063

void emitDTPRel64Value(const MCExpr *) override

Definition MipsTargetStreamer.cpp:1056

void emitMask(unsigned CPUBitmask, int CPUTopSavedRegOff) override

Definition MipsTargetStreamer.cpp:1218

void finish() override

Definition MipsTargetStreamer.cpp:943

void emitDirectiveAbiCalls() override

Definition MipsTargetStreamer.cpp:1159

void emitFMask(unsigned FPUBitmask, int FPUTopSavedRegOff) override

Definition MipsTargetStreamer.cpp:1225

void emitDirectiveCpLoad(MCRegister Reg) override

Definition MipsTargetStreamer.cpp:1243

void emitAssignment(MCSymbol *Symbol, const MCExpr *Value) override

Definition MipsTargetStreamer.cpp:1016

void emitDirectiveCpreturn(unsigned SaveLocation, bool SaveLocationIsRegister) override

Definition MipsTargetStreamer.cpp:1361

void emitDirectiveSetMips16() override

Definition MipsTargetStreamer.cpp:1094

void emitDirectiveOptionPic0() override

Definition MipsTargetStreamer.cpp:1180

void emitDirectiveEnt(const MCSymbol &Symbol) override

Definition MipsTargetStreamer.cpp:1152

void emitDirectiveSetNoReorder() override

Definition MipsTargetStreamer.cpp:1102

void emitDirectiveNaNLegacy() override

Definition MipsTargetStreamer.cpp:1173

MCELFStreamer & getStreamer()

Definition MipsTargetStreamer.cpp:1030

void emitMipsAbiFlags()

Definition MipsTargetStreamer.cpp:1385

std::optional< MipsABIInfo > ABI

virtual void emitDirectiveSetMips64R5()

Definition MipsTargetStreamer.cpp:114

virtual void emitDirectiveSetAt()

Definition MipsTargetStreamer.cpp:79

virtual void emitDirectiveModuleNoVirt()

Definition MipsTargetStreamer.cpp:172

void emitRRX(unsigned Opcode, MCRegister Reg0, MCRegister Reg1, MCOperand Op2, SMLoc IDLoc, const MCSubtargetInfo *STI)

Definition MipsTargetStreamer.cpp:224

virtual void emitDirectiveSetReorder()

Definition MipsTargetStreamer.cpp:65

virtual void emitDirectiveSetNoCRC()

Definition MipsTargetStreamer.cpp:74

virtual void emitFrame(MCRegister StackReg, unsigned StackSize, MCRegister ReturnReg)

Definition MipsTargetStreamer.cpp:92

void emitRRRX(unsigned Opcode, MCRegister Reg0, MCRegister Reg1, MCRegister Reg2, MCOperand Op3, SMLoc IDLoc, const MCSubtargetInfo *STI)

Definition MipsTargetStreamer.cpp:242

virtual void emitDirectiveModuleNoGINV()

Definition MipsTargetStreamer.cpp:174

virtual void emitDirectiveCpLoad(MCRegister Reg)

Definition MipsTargetStreamer.cpp:130

virtual void emitDirectiveSetSoftFloat()

Definition MipsTargetStreamer.cpp:118

virtual void emitDirectiveSetNoDsp()

Definition MipsTargetStreamer.cpp:126

void forbidModuleDirective()

virtual void emitDirectiveCpreturn(unsigned SaveLocation, bool SaveLocationIsRegister)

Definition MipsTargetStreamer.cpp:157

virtual void emitGPRel32Value(const MCExpr *)

Definition MipsTargetStreamer.cpp:54

virtual void emitDirectiveSetNoMicroMips()

Definition MipsTargetStreamer.cpp:61

void emitRX(unsigned Opcode, MCRegister Reg0, MCOperand Op1, SMLoc IDLoc, const MCSubtargetInfo *STI)

Definition MipsTargetStreamer.cpp:193

virtual void emitDirectiveSetDspr2()

Definition MipsTargetStreamer.cpp:125

virtual void emitDirectiveNaN2008()

Definition MipsTargetStreamer.cpp:87

virtual void emitDirectiveSetMips64R2()

Definition MipsTargetStreamer.cpp:112

virtual void emitDirectiveSetMips3D()

Definition MipsTargetStreamer.cpp:127

virtual void emitDirectiveEnd(StringRef Name)

Definition MipsTargetStreamer.cpp:84

virtual void emitDirectiveSetFp(MipsABIFlagsSection::FpABIKind Value)

Definition MipsTargetStreamer.cpp:175

virtual void emitDirectiveSetCRC()

Definition MipsTargetStreamer.cpp:73

virtual void emitTPRel64Value(const MCExpr *)

Definition MipsTargetStreamer.cpp:59

virtual void emitDirectiveSetMips64R3()

Definition MipsTargetStreamer.cpp:113

virtual void emitDirectiveSetNoVirt()

Definition MipsTargetStreamer.cpp:76

virtual void emitDirectiveSetGINV()

Definition MipsTargetStreamer.cpp:77

virtual void emitDirectiveSetMacro()

Definition MipsTargetStreamer.cpp:67

virtual void emitDirectiveSetMips3()

Definition MipsTargetStreamer.cpp:103

void emitR(unsigned Opcode, MCRegister Reg0, SMLoc IDLoc, const MCSubtargetInfo *STI)

Definition MipsTargetStreamer.cpp:184

virtual void emitDirectiveSetNoGINV()

Definition MipsTargetStreamer.cpp:78

virtual void setUsesMicroMips()

Definition MipsTargetStreamer.cpp:62

virtual void emitDirectiveSetMips32R3()

Definition MipsTargetStreamer.cpp:108

virtual void emitDirectiveSetMips32R2()

Definition MipsTargetStreamer.cpp:107

void emitRRI(unsigned Opcode, MCRegister Reg0, MCRegister Reg1, int16_t Imm, SMLoc IDLoc, const MCSubtargetInfo *STI)

Definition MipsTargetStreamer.cpp:256

virtual void emitDirectiveEnt(const MCSymbol &Symbol)

Definition MipsTargetStreamer.cpp:85

virtual void emitDirectiveSetMips1()

Definition MipsTargetStreamer.cpp:101

virtual void emitDirectiveSetDsp()

Definition MipsTargetStreamer.cpp:124

virtual void emitDirectiveSetNoMips3D()

Definition MipsTargetStreamer.cpp:128

void emitLoadWithImmOffset(unsigned Opcode, MCRegister DstReg, MCRegister BaseReg, int64_t Offset, MCRegister TmpReg, SMLoc IDLoc, const MCSubtargetInfo *STI)

Emit a load instruction with an immediate offset.

Definition MipsTargetStreamer.cpp:362

virtual void emitDirectiveSetHardFloat()

Definition MipsTargetStreamer.cpp:121

void emitEmptyDelaySlot(bool hasShortDelaySlot, SMLoc IDLoc, const MCSubtargetInfo *STI)

Definition MipsTargetStreamer.cpp:295

void emitAddu(MCRegister DstReg, MCRegister SrcReg, MCRegister TrgReg, bool Is64Bit, const MCSubtargetInfo *STI)

Definition MipsTargetStreamer.cpp:277

void emitRI(unsigned Opcode, MCRegister Reg0, int32_t Imm, SMLoc IDLoc, const MCSubtargetInfo *STI)

Definition MipsTargetStreamer.cpp:203

virtual void emitTPRel32Value(const MCExpr *)

Definition MipsTargetStreamer.cpp:58

virtual void emitDirectiveSetNoMips16()

Definition MipsTargetStreamer.cpp:64

virtual void emitDirectiveSetMips5()

Definition MipsTargetStreamer.cpp:105

virtual void emitDirectiveSetMips2()

Definition MipsTargetStreamer.cpp:102

virtual void emitDirectiveSetPush()

Definition MipsTargetStreamer.cpp:117

virtual void emitDirectiveSetMt()

Definition MipsTargetStreamer.cpp:71

virtual void emitDirectiveSetNoOddSPReg()

Definition MipsTargetStreamer.cpp:180

virtual void emitGPRel64Value(const MCExpr *)

Definition MipsTargetStreamer.cpp:55

void emitII(unsigned Opcode, int16_t Imm1, int16_t Imm2, SMLoc IDLoc, const MCSubtargetInfo *STI)

Definition MipsTargetStreamer.cpp:214

void emitRR(unsigned Opcode, MCRegister Reg0, MCRegister Reg1, SMLoc IDLoc, const MCSubtargetInfo *STI)

Definition MipsTargetStreamer.cpp:208

virtual void emitDirectiveSetOddSPReg()

Definition MipsTargetStreamer.cpp:179

virtual void emitDirectiveSetNoMt()

Definition MipsTargetStreamer.cpp:72

virtual bool emitDirectiveCpRestore(int Offset, function_ref< MCRegister()> GetATReg, SMLoc IDLoc, const MCSubtargetInfo *STI)

Definition MipsTargetStreamer.cpp:148

virtual void emitDirectiveModuleCRC()

Definition MipsTargetStreamer.cpp:169

virtual void emitDirectiveModuleGINV()

Definition MipsTargetStreamer.cpp:173

virtual void emitDirectiveSetNoAt()

Definition MipsTargetStreamer.cpp:83

virtual void emitDirectiveNaNLegacy()

Definition MipsTargetStreamer.cpp:88

virtual void emitMask(unsigned CPUBitmask, int CPUTopSavedRegOff)

Definition MipsTargetStreamer.cpp:94

virtual void emitDirectiveCpsetup(MCRegister Reg, int RegOrOffset, const MCSymbol &Sym, bool IsReg)

Definition MipsTargetStreamer.cpp:154

void emitRRIII(unsigned Opcode, MCRegister Reg0, MCRegister Reg1, int16_t Imm0, int16_t Imm1, int16_t Imm2, SMLoc IDLoc, const MCSubtargetInfo *STI)

Definition MipsTargetStreamer.cpp:262

virtual void emitDirectiveSetPop()

Definition MipsTargetStreamer.cpp:116

virtual void emitDirectiveSetMicroMips()

Definition MipsTargetStreamer.cpp:60

virtual void emitDirectiveSetMips0()

Definition MipsTargetStreamer.cpp:100

virtual void emitDTPRel64Value(const MCExpr *)

Definition MipsTargetStreamer.cpp:57

virtual void emitDirectiveModuleSoftFloat()

Definition MipsTargetStreamer.cpp:166

virtual void emitDirectiveSetArch(StringRef Arch)

Definition MipsTargetStreamer.cpp:97

virtual void emitDTPRel32Value(const MCExpr *)

Definition MipsTargetStreamer.cpp:56

virtual void emitDirectiveCpAdd(MCRegister Reg)

Definition MipsTargetStreamer.cpp:129

virtual void emitDirectiveSetAtWithArg(unsigned RegNo)

Definition MipsTargetStreamer.cpp:80

virtual void emitDirectiveModuleNoCRC()

Definition MipsTargetStreamer.cpp:170

virtual void emitDirectiveSetNoMacro()

Definition MipsTargetStreamer.cpp:68

void emitDSLL(MCRegister DstReg, MCRegister SrcReg, int16_t ShiftAmount, SMLoc IDLoc, const MCSubtargetInfo *STI)

Definition MipsTargetStreamer.cpp:284

const MipsABIInfo & getABI() const

virtual void emitDirectiveModuleOddSPReg()

Definition MipsTargetStreamer.cpp:162

virtual void emitDirectiveInsn()

Definition MipsTargetStreamer.cpp:91

virtual void emitDirectiveSetMips64R6()

Definition MipsTargetStreamer.cpp:115

virtual void emitDirectiveSetNoMsa()

Definition MipsTargetStreamer.cpp:70

virtual void emitDirectiveSetVirt()

Definition MipsTargetStreamer.cpp:75

void emitGPRestore(int Offset, SMLoc IDLoc, const MCSubtargetInfo *STI)

Emit the $gp restore operation for .cprestore.

Definition MipsTargetStreamer.cpp:319

MipsTargetStreamer(MCStreamer &S)

Definition MipsTargetStreamer.cpp:49

virtual void emitFMask(unsigned FPUBitmask, int FPUTopSavedRegOff)

Definition MipsTargetStreamer.cpp:95

virtual void emitDirectiveModuleVirt()

Definition MipsTargetStreamer.cpp:171

void emitNop(SMLoc IDLoc, const MCSubtargetInfo *STI)

Definition MipsTargetStreamer.cpp:311

void emitRRR(unsigned Opcode, MCRegister Reg0, MCRegister Reg1, MCRegister Reg2, SMLoc IDLoc, const MCSubtargetInfo *STI)

Definition MipsTargetStreamer.cpp:236

virtual void emitDirectiveSetNoReorder()

Definition MipsTargetStreamer.cpp:66

void emitStoreWithImmOffset(unsigned Opcode, MCRegister SrcReg, MCRegister BaseReg, int64_t Offset, function_ref< MCRegister()> GetATReg, SMLoc IDLoc, const MCSubtargetInfo *STI)

Emit a store instruction with an offset.

Definition MipsTargetStreamer.cpp:325

virtual void emitDirectiveSetMips32()

Definition MipsTargetStreamer.cpp:106

virtual void emitDirectiveOptionPic0()

Definition MipsTargetStreamer.cpp:89

virtual void emitDirectiveModuleMT()

Definition MipsTargetStreamer.cpp:168

virtual void emitDirectiveModuleHardFloat()

Definition MipsTargetStreamer.cpp:167

virtual void emitDirectiveSetMips32R5()

Definition MipsTargetStreamer.cpp:109

virtual void emitDirectiveSetMsa()

Definition MipsTargetStreamer.cpp:69

virtual void emitDirectiveSetMips32R6()

Definition MipsTargetStreamer.cpp:110

virtual void emitDirectiveSetMips4()

Definition MipsTargetStreamer.cpp:104

virtual void emitDirectiveOptionPic2()

Definition MipsTargetStreamer.cpp:90

virtual void emitDirectiveCpLocal(MCRegister Reg)

Definition MipsTargetStreamer.cpp:131

virtual void emitDirectiveSetMips16()

Definition MipsTargetStreamer.cpp:63

virtual void emitDirectiveSetMips64()

Definition MipsTargetStreamer.cpp:111

virtual void emitDirectiveAbiCalls()

Definition MipsTargetStreamer.cpp:86

virtual void emitDirectiveModuleFP()

Definition MipsTargetStreamer.cpp:160

MipsABIFlagsSection ABIFlagsSection

Represents a location in source code.

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

LLVM_ABI std::string lower() const

Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...

The instances of the Type class are immutable: once they are created, they are never changed.

LLVM Value Representation.

formatted_raw_ostream - A raw_ostream that wraps another one and keeps track of line and column posit...

An efficient, type-erasing, non-owning reference to a callable.

This class implements an extremely fast bulk output stream that can only output to a stream.

raw_ostream & write_hex(unsigned long long N)

Output N in hexadecimal, without any prefix or padding.

const MCSpecifierExpr * createGpOff(const MCExpr *Expr, Specifier S, MCContext &Ctx)

initializer< Ty > init(const Ty &Val)

This is an optimization pass for GlobalISel generic memory operations.

constexpr bool isInt(int64_t x)

Checks if an integer fits into the given bit width.

LLVM_ABI void report_fatal_error(Error Err, bool gen_crash_diag=true)

This struct is a compact representation of a valid (non-zero power of two) alignment.

constexpr uint64_t value() const

This is a hole in the type system and should not be abused.