blob: 74ec9e303933d1260fa6947a9e325e149d718f30 [file] [log] [blame]
Shiva Chen056d8352018-01-26 07:53:07 +00001//===-- RISCVTargetStreamer.h - RISCV 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 LLVM_LIB_TARGET_RISCV_RISCVTARGETSTREAMER_H
11#define LLVM_LIB_TARGET_RISCV_RISCVTARGETSTREAMER_H
12
13#include "llvm/MC/MCStreamer.h"
14
15namespace llvm {
16
17class RISCVTargetStreamer : public MCTargetStreamer {
18public:
19 RISCVTargetStreamer(MCStreamer &S);
Alex Bradburybca0c3c2018-05-11 17:30:28 +000020
Alex Bradbury893e5bc2018-11-28 16:39:14 +000021 virtual void emitDirectiveOptionPush() = 0;
22 virtual void emitDirectiveOptionPop() = 0;
Alex Bradburybca0c3c2018-05-11 17:30:28 +000023 virtual void emitDirectiveOptionRVC() = 0;
24 virtual void emitDirectiveOptionNoRVC() = 0;
Alex Bradbury9c03e4c2018-11-12 14:25:07 +000025 virtual void emitDirectiveOptionRelax() = 0;
26 virtual void emitDirectiveOptionNoRelax() = 0;
Shiva Chen056d8352018-01-26 07:53:07 +000027};
Alex Bradburybca0c3c2018-05-11 17:30:28 +000028
29// This part is for ascii assembly output
30class RISCVTargetAsmStreamer : public RISCVTargetStreamer {
31 formatted_raw_ostream &OS;
32
33public:
34 RISCVTargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &OS);
35
Alex Bradbury893e5bc2018-11-28 16:39:14 +000036 void emitDirectiveOptionPush() override;
37 void emitDirectiveOptionPop() override;
Alex Bradburybca0c3c2018-05-11 17:30:28 +000038 void emitDirectiveOptionRVC() override;
39 void emitDirectiveOptionNoRVC() override;
Alex Bradbury9c03e4c2018-11-12 14:25:07 +000040 void emitDirectiveOptionRelax() override;
41 void emitDirectiveOptionNoRelax() override;
Alex Bradburybca0c3c2018-05-11 17:30:28 +000042};
43
Shiva Chen056d8352018-01-26 07:53:07 +000044}
45#endif