diff options
Diffstat (limited to 'lib/Target/Mips/MipsTargetStreamer.h')
| -rw-r--r-- | lib/Target/Mips/MipsTargetStreamer.h | 99 |
1 files changed, 91 insertions, 8 deletions
diff --git a/lib/Target/Mips/MipsTargetStreamer.h b/lib/Target/Mips/MipsTargetStreamer.h index 96966fd..5f4b74b 100644 --- a/lib/Target/Mips/MipsTargetStreamer.h +++ b/lib/Target/Mips/MipsTargetStreamer.h @@ -18,8 +18,33 @@ class MipsTargetStreamer : public MCTargetStreamer { virtual void anchor(); public: - virtual void emitMipsHackELFFlags(unsigned Flags) = 0; - virtual void emitMipsHackSTOCG(MCSymbol *Sym, unsigned Val) = 0; + MipsTargetStreamer(MCStreamer &S); + virtual void emitDirectiveSetMicroMips() = 0; + virtual void emitDirectiveSetNoMicroMips() = 0; + virtual void emitDirectiveSetMips16() = 0; + virtual void emitDirectiveSetNoMips16() = 0; + + virtual void emitDirectiveSetReorder() = 0; + virtual void emitDirectiveSetNoReorder() = 0; + virtual void emitDirectiveSetMacro() = 0; + virtual void emitDirectiveSetNoMacro() = 0; + virtual void emitDirectiveSetAt() = 0; + virtual void emitDirectiveSetNoAt() = 0; + virtual void emitDirectiveEnd(StringRef Name) = 0; + + virtual void emitDirectiveEnt(const MCSymbol &Symbol) = 0; + virtual void emitDirectiveAbiCalls() = 0; + virtual void emitDirectiveOptionPic0() = 0; + virtual void emitDirectiveOptionPic2() = 0; + virtual void emitFrame(unsigned StackReg, unsigned StackSize, + unsigned ReturnReg) = 0; + virtual void emitMask(unsigned CPUBitmask, int CPUTopSavedRegOff) = 0; + virtual void emitFMask(unsigned FPUBitmask, int FPUTopSavedRegOff) = 0; + + virtual void emitDirectiveSetMips32R2() = 0; + virtual void emitDirectiveSetMips64() = 0; + virtual void emitDirectiveSetMips64R2() = 0; + virtual void emitDirectiveSetDsp() = 0; }; // This part is for ascii assembly output @@ -27,18 +52,76 @@ class MipsTargetAsmStreamer : public MipsTargetStreamer { formatted_raw_ostream &OS; public: - MipsTargetAsmStreamer(formatted_raw_ostream &OS); - virtual void emitMipsHackELFFlags(unsigned Flags); - virtual void emitMipsHackSTOCG(MCSymbol *Sym, unsigned Val); + MipsTargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &OS); + virtual void emitDirectiveSetMicroMips(); + virtual void emitDirectiveSetNoMicroMips(); + virtual void emitDirectiveSetMips16(); + virtual void emitDirectiveSetNoMips16(); + + virtual void emitDirectiveSetReorder(); + virtual void emitDirectiveSetNoReorder(); + virtual void emitDirectiveSetMacro(); + virtual void emitDirectiveSetNoMacro(); + virtual void emitDirectiveSetAt(); + virtual void emitDirectiveSetNoAt(); + virtual void emitDirectiveEnd(StringRef Name); + + virtual void emitDirectiveEnt(const MCSymbol &Symbol); + virtual void emitDirectiveAbiCalls(); + virtual void emitDirectiveOptionPic0(); + virtual void emitDirectiveOptionPic2(); + virtual void emitFrame(unsigned StackReg, unsigned StackSize, + unsigned ReturnReg); + virtual void emitMask(unsigned CPUBitmask, int CPUTopSavedRegOff); + virtual void emitFMask(unsigned FPUBitmask, int FPUTopSavedRegOff); + + virtual void emitDirectiveSetMips32R2(); + virtual void emitDirectiveSetMips64(); + virtual void emitDirectiveSetMips64R2(); + virtual void emitDirectiveSetDsp(); }; // This part is for ELF object output class MipsTargetELFStreamer : public MipsTargetStreamer { + bool MicroMipsEnabled; + const MCSubtargetInfo &STI; + bool Pic; + public: + bool isMicroMipsEnabled() const { return MicroMipsEnabled; } MCELFStreamer &getStreamer(); - virtual void emitMipsHackELFFlags(unsigned Flags); - virtual void emitMipsHackSTOCG(MCSymbol *Sym, unsigned Val); + MipsTargetELFStreamer(MCStreamer &S, const MCSubtargetInfo &STI); + + virtual void emitLabel(MCSymbol *Symbol) override; + virtual void emitAssignment(MCSymbol *Symbol, const MCExpr *Value) override; + void finish() override; + + virtual void emitDirectiveSetMicroMips(); + virtual void emitDirectiveSetNoMicroMips(); + virtual void emitDirectiveSetMips16(); + virtual void emitDirectiveSetNoMips16(); + + virtual void emitDirectiveSetReorder(); + virtual void emitDirectiveSetNoReorder(); + virtual void emitDirectiveSetMacro(); + virtual void emitDirectiveSetNoMacro(); + virtual void emitDirectiveSetAt(); + virtual void emitDirectiveSetNoAt(); + virtual void emitDirectiveEnd(StringRef Name); + + virtual void emitDirectiveEnt(const MCSymbol &Symbol); + virtual void emitDirectiveAbiCalls(); + virtual void emitDirectiveOptionPic0(); + virtual void emitDirectiveOptionPic2(); + virtual void emitFrame(unsigned StackReg, unsigned StackSize, + unsigned ReturnReg); + virtual void emitMask(unsigned CPUBitmask, int CPUTopSavedRegOff); + virtual void emitFMask(unsigned FPUBitmask, int FPUTopSavedRegOff); + + virtual void emitDirectiveSetMips32R2(); + virtual void emitDirectiveSetMips64(); + virtual void emitDirectiveSetMips64R2(); + virtual void emitDirectiveSetDsp(); }; } - #endif |
