LLVM 17.0.0git
RISCVTargetStreamer.h
Go to the documentation of this file.
1//===-- RISCVTargetStreamer.h - RISC-V 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_MCTARGETDESC_RISCVTARGETSTREAMER_H
10#define LLVM_LIB_TARGET_RISCV_MCTARGETDESC_RISCVTARGETSTREAMER_H
11
12#include "RISCV.h"
13#include "llvm/MC/MCStreamer.h"
15
16namespace llvm {
17
18class formatted_raw_ostream;
19
21 Full,
22 Plus,
23 Minus,
24};
25
28 std::string Value;
29
31 : Type(Type), Value(Value) {}
32};
33
36
37public:
39 void finish() override;
40 virtual void reset();
41
42 virtual void emitDirectiveOptionPush();
43 virtual void emitDirectiveOptionPop();
44 virtual void emitDirectiveOptionPIC();
45 virtual void emitDirectiveOptionNoPIC();
46 virtual void emitDirectiveOptionRVC();
47 virtual void emitDirectiveOptionNoRVC();
48 virtual void emitDirectiveOptionRelax();
49 virtual void emitDirectiveOptionNoRelax();
51 virtual void emitDirectiveVariantCC(MCSymbol &Symbol);
52 virtual void emitAttribute(unsigned Attribute, unsigned Value);
53 virtual void finishAttributeSection();
54 virtual void emitTextAttribute(unsigned Attribute, StringRef String);
55 virtual void emitIntTextAttribute(unsigned Attribute, unsigned IntValue,
56 StringRef StringValue);
57
58 void emitTargetAttributes(const MCSubtargetInfo &STI, bool EmitStackAlign);
60 RISCVABI::ABI getTargetABI() const { return TargetABI; }
61};
62
63// This part is for ascii assembly output
66
67 void finishAttributeSection() override;
68 void emitAttribute(unsigned Attribute, unsigned Value) override;
69 void emitTextAttribute(unsigned Attribute, StringRef String) override;
70 void emitIntTextAttribute(unsigned Attribute, unsigned IntValue,
71 StringRef StringValue) override;
72
73public:
75
76 void emitDirectiveOptionPush() override;
77 void emitDirectiveOptionPop() override;
78 void emitDirectiveOptionPIC() override;
79 void emitDirectiveOptionNoPIC() override;
80 void emitDirectiveOptionRVC() override;
81 void emitDirectiveOptionNoRVC() override;
82 void emitDirectiveOptionRelax() override;
83 void emitDirectiveOptionNoRelax() override;
85 void emitDirectiveVariantCC(MCSymbol &Symbol) override;
86};
87
88}
89#endif
raw_pwrite_stream & OS
@ ABI
Definition: TextStubV5.cpp:100
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Definition: ArrayRef.h:41
Streaming machine code generation interface.
Definition: MCStreamer.h:212
Generic base class for all target subtargets.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
Definition: MCSymbol.h:41
Target specific streamer interface.
Definition: MCStreamer.h:93
void emitDirectiveOptionArch(ArrayRef< RISCVOptionArchArg > Args) override
void emitDirectiveVariantCC(MCSymbol &Symbol) override
virtual void emitDirectiveOptionNoRelax()
virtual void emitAttribute(unsigned Attribute, unsigned Value)
RISCVABI::ABI getTargetABI() const
virtual void emitTextAttribute(unsigned Attribute, StringRef String)
virtual void emitDirectiveVariantCC(MCSymbol &Symbol)
void emitTargetAttributes(const MCSubtargetInfo &STI, bool EmitStackAlign)
virtual void emitIntTextAttribute(unsigned Attribute, unsigned IntValue, StringRef StringValue)
void setTargetABI(RISCVABI::ABI ABI)
virtual void emitDirectiveOptionArch(ArrayRef< RISCVOptionArchArg > Args)
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:50
The instances of the Type class are immutable: once they are created, they are never changed.
Definition: Type.h:45
LLVM Value Representation.
Definition: Value.h:74
formatted_raw_ostream - A raw_ostream that wraps another one and keeps track of line and column posit...
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
RISCVOptionArchArg(RISCVOptionArchArgType Type, std::string Value)
RISCVOptionArchArgType Type