mini-llvm
0.1.0
Toggle main menu visibility
Loading...
Searching...
No Matches
RISCVRet.h
Go to the documentation of this file.
1
// SPDX-License-Identifier: MIT
2
3
#pragma once
4
5
#include <memory>
6
#include <string>
7
#include <unordered_set>
8
9
#include "
mini-llvm/mir/BasicBlockOperand.h
"
10
#include "
mini-llvm/mir/ImmediateOperand.h
"
11
#include "
mini-llvm/mir/Instruction.h
"
12
#include "
mini-llvm/mir/Instruction/Terminator.h
"
13
#include "
mini-llvm/mir/MemoryOperand.h
"
14
#include "
mini-llvm/targets/riscv/mir/RISCVInstructionVisitor.h
"
15
#include "
mini-llvm/utils/Compiler.h
"
16
17
namespace
mini_llvm::mir
{
18
19
class
MINI_LLVM_EXPORT
RISCVRet
final :
public
Terminator
{
20
public
:
21
RISCVRet
(
int
numIntegerResults
,
int
numFloatingResults
)
22
: numIntegerResults_(
numIntegerResults
), numFloatingResults_(
numFloatingResults
) {}
23
24
int
numIntegerResults
()
const
{
25
return
numIntegerResults_;
26
}
27
28
void
setNumIntegerResults
(
int
numIntegerResults
) {
29
numIntegerResults_ =
numIntegerResults
;
30
}
31
32
int
numFloatingResults
()
const
{
33
return
numFloatingResults_;
34
}
35
36
void
setNumFloatingResults
(
int
numFloatingResults
) {
37
numFloatingResults_ =
numFloatingResults
;
38
}
39
40
std::unordered_set<const BasicBlockOperand *>
blockOps
()
const override
{
41
return
{};
42
}
43
44
std::unordered_set<const RegisterOperand *>
regOps
()
const override
{
45
return
{};
46
}
47
48
std::unordered_set<const RegisterOperand *>
dsts
()
const override
{
49
return
{};
50
}
51
52
std::unordered_set<const RegisterOperand *>
srcs
()
const override
{
53
return
{};
54
}
55
56
std::unordered_set<PhysicalRegister *>
implicitDsts
()
const override
{
57
return
{};
58
}
59
60
std::unordered_set<PhysicalRegister *>
implicitSrcs
()
const override
;
61
62
std::unordered_set<const ImmediateOperand *>
immOps
()
const override
{
63
return
{};
64
}
65
66
std::unordered_set<const MemoryOperand *>
memOps
()
const override
{
67
return
{};
68
}
69
70
void
accept
(
InstructionVisitor
&visitor)
override
{
71
static_cast<
RISCVInstructionVisitor
&
>
(visitor).visitRISCVRet(*
this
);
72
}
73
74
void
accept
(
InstructionVisitor
&visitor)
const override
{
75
static_cast<
RISCVInstructionVisitor
&
>
(visitor).visitRISCVRet(*
this
);
76
}
77
78
std::string
format
()
const override
;
79
80
std::unique_ptr<Instruction>
clone
()
const override
{
81
return
std::make_unique<RISCVRet>(
numIntegerResults
(),
numFloatingResults
());
82
}
83
84
private
:
85
int
numIntegerResults_, numFloatingResults_;
86
};
87
88
}
// namespace mini_llvm::mir
BasicBlockOperand.h
Compiler.h
MINI_LLVM_EXPORT
#define MINI_LLVM_EXPORT
Definition
Compiler.h:17
ImmediateOperand.h
MemoryOperand.h
RISCVInstructionVisitor.h
mini_llvm::mir::InstructionVisitor
Definition
InstructionVisitor.h:70
mini_llvm::mir::RISCVInstructionVisitor
Definition
RISCVInstructionVisitor.h:17
mini_llvm::mir::RISCVRet::numFloatingResults
int numFloatingResults() const
Definition
RISCVRet.h:32
mini_llvm::mir::RISCVRet::blockOps
std::unordered_set< const BasicBlockOperand * > blockOps() const override
Definition
RISCVRet.h:40
mini_llvm::mir::RISCVRet::format
std::string format() const override
mini_llvm::mir::RISCVRet::accept
void accept(InstructionVisitor &visitor) override
Definition
RISCVRet.h:70
mini_llvm::mir::RISCVRet::setNumFloatingResults
void setNumFloatingResults(int numFloatingResults)
Definition
RISCVRet.h:36
mini_llvm::mir::RISCVRet::implicitDsts
std::unordered_set< PhysicalRegister * > implicitDsts() const override
Definition
RISCVRet.h:56
mini_llvm::mir::RISCVRet::numIntegerResults
int numIntegerResults() const
Definition
RISCVRet.h:24
mini_llvm::mir::RISCVRet::RISCVRet
RISCVRet(int numIntegerResults, int numFloatingResults)
Definition
RISCVRet.h:21
mini_llvm::mir::RISCVRet::memOps
std::unordered_set< const MemoryOperand * > memOps() const override
Definition
RISCVRet.h:66
mini_llvm::mir::RISCVRet::regOps
std::unordered_set< const RegisterOperand * > regOps() const override
Definition
RISCVRet.h:44
mini_llvm::mir::RISCVRet::dsts
std::unordered_set< const RegisterOperand * > dsts() const override
Definition
RISCVRet.h:48
mini_llvm::mir::RISCVRet::immOps
std::unordered_set< const ImmediateOperand * > immOps() const override
Definition
RISCVRet.h:62
mini_llvm::mir::RISCVRet::srcs
std::unordered_set< const RegisterOperand * > srcs() const override
Definition
RISCVRet.h:52
mini_llvm::mir::RISCVRet::accept
void accept(InstructionVisitor &visitor) const override
Definition
RISCVRet.h:74
mini_llvm::mir::RISCVRet::setNumIntegerResults
void setNumIntegerResults(int numIntegerResults)
Definition
RISCVRet.h:28
mini_llvm::mir::RISCVRet::implicitSrcs
std::unordered_set< PhysicalRegister * > implicitSrcs() const override
mini_llvm::mir::RISCVRet::clone
std::unique_ptr< Instruction > clone() const override
Definition
RISCVRet.h:80
mini_llvm::mir::Terminator
Definition
Terminator.h:13
Terminator.h
Instruction.h
mini_llvm::mir
Definition
BasicBlock.h:22
include
mini-llvm
targets
riscv
mir
Instruction
RISCVRet.h
Generated by
1.17.0