blob: 8c53cb5bc2d33f4f1e32bcbfcb3dc32abec27d0e [file] [log] [blame]
Rafael Espindolaa17151a2013-10-08 13:08:17 +00001//===-- MipsTargetStreamer.h - Mips Target Streamer ------------*- C++ -*--===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef MIPSTARGETSTREAMER_H
11#define MIPSTARGETSTREAMER_H
12
Jack Carter86ac5c12013-11-18 23:55:27 +000013#include "llvm/MC/MCELFStreamer.h"
Rafael Espindolaa17151a2013-10-08 13:08:17 +000014#include "llvm/MC/MCStreamer.h"
15
16namespace llvm {
17class MipsTargetStreamer : public MCTargetStreamer {
Jack Carter86ac5c12013-11-18 23:55:27 +000018 virtual void anchor();
Eric Christopher37776fb2013-11-19 02:01:07 +000019
Rafael Espindolaa17151a2013-10-08 13:08:17 +000020public:
21 virtual void emitMipsHackELFFlags(unsigned Flags) = 0;
Jack Carter6ef6cc52013-11-19 20:53:28 +000022 virtual void emitMipsHackSTOCG(MCSymbol *Sym, unsigned Val) = 0;
Jack Carter0cd3c192014-01-06 23:27:31 +000023 virtual void emitDirectiveAbiCalls() = 0;
24 virtual void emitDirectiveOptionPic0() = 0;
Rafael Espindolaa17151a2013-10-08 13:08:17 +000025};
Jack Carter86ac5c12013-11-18 23:55:27 +000026
27// This part is for ascii assembly output
28class MipsTargetAsmStreamer : public MipsTargetStreamer {
Jack Carter6ef6cc52013-11-19 20:53:28 +000029 formatted_raw_ostream &OS;
30
Jack Carter86ac5c12013-11-18 23:55:27 +000031public:
Jack Carter6ef6cc52013-11-19 20:53:28 +000032 MipsTargetAsmStreamer(formatted_raw_ostream &OS);
Jack Carter86ac5c12013-11-18 23:55:27 +000033 virtual void emitMipsHackELFFlags(unsigned Flags);
Jack Carter6ef6cc52013-11-19 20:53:28 +000034 virtual void emitMipsHackSTOCG(MCSymbol *Sym, unsigned Val);
Jack Carter0cd3c192014-01-06 23:27:31 +000035 virtual void emitDirectiveAbiCalls();
36 virtual void emitDirectiveOptionPic0();
Jack Carter86ac5c12013-11-18 23:55:27 +000037};
38
39// This part is for ELF object output
40class MipsTargetELFStreamer : public MipsTargetStreamer {
41public:
42 MCELFStreamer &getStreamer();
Jack Carter0cd3c192014-01-06 23:27:31 +000043 MipsTargetELFStreamer();
44 // FIXME: emitMipsHackELFFlags() will be removed from this class.
Jack Carter86ac5c12013-11-18 23:55:27 +000045 virtual void emitMipsHackELFFlags(unsigned Flags);
Jack Carter6ef6cc52013-11-19 20:53:28 +000046 virtual void emitMipsHackSTOCG(MCSymbol *Sym, unsigned Val);
Jack Carter0cd3c192014-01-06 23:27:31 +000047 virtual void emitDirectiveAbiCalls();
48 virtual void emitDirectiveOptionPic0();
Jack Carter86ac5c12013-11-18 23:55:27 +000049};
Rafael Espindolaa17151a2013-10-08 13:08:17 +000050}
Rafael Espindolaa17151a2013-10-08 13:08:17 +000051#endif