1//===-- RISCVTargetStreamer.h - RISCV Target Streamer ----------*- C++ -*--===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8 9#ifndef LLVM_LIB_TARGET_RISCV_RISCVTARGETSTREAMER_H 10#define LLVM_LIB_TARGET_RISCV_RISCVTARGETSTREAMER_H 11 12#include "llvm/MC/MCStreamer.h" 13#include "llvm/MC/MCSubtargetInfo.h" 14 15namespace llvm { 16 17class RISCVTargetStreamer : public MCTargetStreamer { 18public: 19 RISCVTargetStreamer(MCStreamer &S); 20 void finish() override; 21 22 virtual void emitDirectiveOptionPush(); 23 virtual void emitDirectiveOptionPop(); 24 virtual void emitDirectiveOptionPIC(); 25 virtual void emitDirectiveOptionNoPIC(); 26 virtual void emitDirectiveOptionRVC(); 27 virtual void emitDirectiveOptionNoRVC(); 28 virtual void emitDirectiveOptionRelax(); 29 virtual void emitDirectiveOptionNoRelax(); 30 virtual void emitAttribute(unsigned Attribute, unsigned Value); 31 virtual void finishAttributeSection(); 32 virtual void emitTextAttribute(unsigned Attribute, StringRef String); 33 virtual void emitIntTextAttribute(unsigned Attribute, unsigned IntValue, 34 StringRef StringValue); 35 36 void emitTargetAttributes(const MCSubtargetInfo &STI); 37}; 38 39// This part is for ascii assembly output 40class RISCVTargetAsmStreamer : public RISCVTargetStreamer { 41 formatted_raw_ostream &OS; 42 43 void finishAttributeSection() override; 44 void emitAttribute(unsigned Attribute, unsigned Value) override; 45 void emitTextAttribute(unsigned Attribute, StringRef String) override; 46 void emitIntTextAttribute(unsigned Attribute, unsigned IntValue, 47 StringRef StringValue) override; 48 49public: 50 RISCVTargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &OS); 51 52 void emitDirectiveOptionPush() override; 53 void emitDirectiveOptionPop() override; 54 void emitDirectiveOptionPIC() override; 55 void emitDirectiveOptionNoPIC() override; 56 void emitDirectiveOptionRVC() override; 57 void emitDirectiveOptionNoRVC() override; 58 void emitDirectiveOptionRelax() override; 59 void emitDirectiveOptionNoRelax() override; 60}; 61 62} 63#endif 64