LLVM
23.0.0git
lib
Target
LoongArch
MCTargetDesc
LoongArchTargetStreamer.cpp
Go to the documentation of this file.
1
//===-- LoongArchTargetStreamer.cpp - LoongArch Target Streamer Methods ---===//
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
// This file provides LoongArch specific target streamer methods.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#include "
LoongArchTargetStreamer.h
"
14
#include "
llvm/MC/MCAsmInfo.h
"
15
#include "
llvm/MC/MCContext.h
"
16
17
using namespace
llvm
;
18
19
LoongArchTargetStreamer::LoongArchTargetStreamer
(
MCStreamer
&S)
20
:
MCTargetStreamer
(S) {}
21
22
void
LoongArchTargetStreamer::setTargetABI
(
LoongArchABI::ABI
ABI) {
23
assert
(ABI !=
LoongArchABI::ABI_Unknown
&&
24
"Improperly initialized target ABI"
);
25
TargetABI = ABI;
26
}
27
28
void
LoongArchTargetStreamer::emitDirectiveOptionPush
() {}
29
void
LoongArchTargetStreamer::emitDirectiveOptionPop
() {}
30
void
LoongArchTargetStreamer::emitDirectiveOptionRelax
() {}
31
void
LoongArchTargetStreamer::emitDirectiveOptionNoRelax
() {}
32
void
LoongArchTargetStreamer::emitDTPRel32Value
(
const
MCExpr
*) {}
33
void
LoongArchTargetStreamer::emitDTPRel64Value
(
const
MCExpr
*) {}
34
35
// This part is for ascii assembly output.
36
LoongArchTargetAsmStreamer::LoongArchTargetAsmStreamer
(
37
MCStreamer
&S,
formatted_raw_ostream
&OS)
38
:
LoongArchTargetStreamer
(S), OS(OS) {}
39
40
void
LoongArchTargetAsmStreamer::emitDirectiveOptionPush
() {
41
OS <<
"\t.option\tpush\n"
;
42
}
43
44
void
LoongArchTargetAsmStreamer::emitDirectiveOptionPop
() {
45
OS <<
"\t.option\tpop\n"
;
46
}
47
48
void
LoongArchTargetAsmStreamer::emitDirectiveOptionRelax
() {
49
OS <<
"\t.option\trelax\n"
;
50
}
51
52
void
LoongArchTargetAsmStreamer::emitDirectiveOptionNoRelax
() {
53
OS <<
"\t.option\tnorelax\n"
;
54
}
55
56
void
LoongArchTargetAsmStreamer::emitDTPRel32Value
(
const
MCExpr
*
Value
) {
57
auto
&MAI =
getStreamer
().
getContext
().
getAsmInfo
();
58
OS <<
"\t.dtprelword\t"
;
59
MAI.
printExpr
(OS, *
Value
);
60
OS <<
'\n'
;
61
}
62
63
void
LoongArchTargetAsmStreamer::emitDTPRel64Value
(
const
MCExpr
*
Value
) {
64
auto
&MAI =
getStreamer
().
getContext
().
getAsmInfo
();
65
OS <<
"\t.dtpreldword\t"
;
66
MAI.
printExpr
(OS, *
Value
);
67
OS <<
'\n'
;
68
}
assert
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
LoongArchTargetStreamer.h
MCAsmInfo.h
MCContext.h
llvm::LoongArchTargetAsmStreamer::emitDTPRel64Value
void emitDTPRel64Value(const MCExpr *) override
Definition
LoongArchTargetStreamer.cpp:63
llvm::LoongArchTargetAsmStreamer::emitDirectiveOptionPop
void emitDirectiveOptionPop() override
Definition
LoongArchTargetStreamer.cpp:44
llvm::LoongArchTargetAsmStreamer::emitDirectiveOptionNoRelax
void emitDirectiveOptionNoRelax() override
Definition
LoongArchTargetStreamer.cpp:52
llvm::LoongArchTargetAsmStreamer::emitDTPRel32Value
void emitDTPRel32Value(const MCExpr *) override
Definition
LoongArchTargetStreamer.cpp:56
llvm::LoongArchTargetAsmStreamer::emitDirectiveOptionPush
void emitDirectiveOptionPush() override
Definition
LoongArchTargetStreamer.cpp:40
llvm::LoongArchTargetAsmStreamer::LoongArchTargetAsmStreamer
LoongArchTargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &OS)
Definition
LoongArchTargetStreamer.cpp:36
llvm::LoongArchTargetAsmStreamer::emitDirectiveOptionRelax
void emitDirectiveOptionRelax() override
Definition
LoongArchTargetStreamer.cpp:48
llvm::LoongArchTargetStreamer::emitDirectiveOptionNoRelax
virtual void emitDirectiveOptionNoRelax()
Definition
LoongArchTargetStreamer.cpp:31
llvm::LoongArchTargetStreamer::emitDirectiveOptionPush
virtual void emitDirectiveOptionPush()
Definition
LoongArchTargetStreamer.cpp:28
llvm::LoongArchTargetStreamer::emitDirectiveOptionRelax
virtual void emitDirectiveOptionRelax()
Definition
LoongArchTargetStreamer.cpp:30
llvm::LoongArchTargetStreamer::LoongArchTargetStreamer
LoongArchTargetStreamer(MCStreamer &S)
Definition
LoongArchTargetStreamer.cpp:19
llvm::LoongArchTargetStreamer::emitDirectiveOptionPop
virtual void emitDirectiveOptionPop()
Definition
LoongArchTargetStreamer.cpp:29
llvm::LoongArchTargetStreamer::setTargetABI
void setTargetABI(LoongArchABI::ABI ABI)
Definition
LoongArchTargetStreamer.cpp:22
llvm::LoongArchTargetStreamer::emitDTPRel64Value
virtual void emitDTPRel64Value(const MCExpr *)
Definition
LoongArchTargetStreamer.cpp:33
llvm::LoongArchTargetStreamer::emitDTPRel32Value
virtual void emitDTPRel32Value(const MCExpr *)
Definition
LoongArchTargetStreamer.cpp:32
llvm::MCAsmInfo::printExpr
void printExpr(raw_ostream &, const MCExpr &) const
Definition
MCAsmInfo.cpp:133
llvm::MCContext::getAsmInfo
const MCAsmInfo & getAsmInfo() const
Definition
MCContext.h:409
llvm::MCExpr
Base class for the full range of assembler expressions which are needed for parsing.
Definition
MCExpr.h:34
llvm::MCStreamer
Streaming machine code generation interface.
Definition
MCStreamer.h:222
llvm::MCStreamer::getContext
MCContext & getContext() const
Definition
MCStreamer.h:323
llvm::MCTargetStreamer::getStreamer
MCStreamer & getStreamer()
Definition
MCStreamer.h:103
llvm::MCTargetStreamer::MCTargetStreamer
MCTargetStreamer(MCStreamer &S)
Definition
MCStreamer.cpp:46
llvm::Value
LLVM Value Representation.
Definition
Value.h:75
llvm::formatted_raw_ostream
formatted_raw_ostream - A raw_ostream that wraps another one and keeps track of line and column posit...
Definition
FormattedStream.h:31
llvm::LoongArchABI::ABI
ABI
Definition
LoongArchBaseInfo.h:132
llvm::LoongArchABI::ABI_Unknown
@ ABI_Unknown
Definition
LoongArchBaseInfo.h:139
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition
FunctionInfo.h:25
Generated on
for LLVM by
1.14.0