mini-llvm
0.1.0
Toggle main menu visibility
Loading...
Searching...
No Matches
StackOffsetImmediate.h
Go to the documentation of this file.
1
// SPDX-License-Identifier: MIT
2
3
#pragma once
4
5
#include <cstdint>
6
#include <memory>
7
8
#include "
mini-llvm/mir/Immediate.h
"
9
#include "
mini-llvm/mir/StackSlot.h
"
10
11
namespace
mini_llvm::mir
{
12
13
class
StackOffsetImmediate
final :
public
Immediate
{
14
public
:
15
StackOffsetImmediate
(
StackSlot
*
baseSlot
,
StackSlot
*
slot
,
int
displacement
= 0)
16
: baseSlot_(
baseSlot
), slot_(
slot
), displacement_(
displacement
) {}
17
18
StackSlot
*
baseSlot
()
const
{
19
return
baseSlot_;
20
}
21
22
StackSlot
*
slot
()
const
{
23
return
slot_;
24
}
25
26
int
displacement
()
const
{
27
return
displacement_;
28
}
29
30
int64_t
value
()
const override
{
31
return
slot
()->
offset
() -
baseSlot
()->
offset
() +
displacement
();
32
}
33
34
std::unique_ptr<Immediate>
clone
()
const override
{
35
return
std::make_unique<StackOffsetImmediate>(
baseSlot
(),
slot
(),
displacement
());
36
}
37
38
private
:
39
StackSlot
*baseSlot_, *slot_;
40
int
displacement_;
41
};
42
43
}
// namespace mini_llvm::mir
Immediate.h
StackSlot.h
mini_llvm::mir::Immediate::Immediate
Immediate(const Immediate &)=delete
mini_llvm::mir::StackOffsetImmediate::value
int64_t value() const override
Definition
StackOffsetImmediate.h:30
mini_llvm::mir::StackOffsetImmediate::slot
StackSlot * slot() const
Definition
StackOffsetImmediate.h:22
mini_llvm::mir::StackOffsetImmediate::StackOffsetImmediate
StackOffsetImmediate(StackSlot *baseSlot, StackSlot *slot, int displacement=0)
Definition
StackOffsetImmediate.h:15
mini_llvm::mir::StackOffsetImmediate::displacement
int displacement() const
Definition
StackOffsetImmediate.h:26
mini_llvm::mir::StackOffsetImmediate::clone
std::unique_ptr< Immediate > clone() const override
Definition
StackOffsetImmediate.h:34
mini_llvm::mir::StackOffsetImmediate::baseSlot
StackSlot * baseSlot() const
Definition
StackOffsetImmediate.h:18
mini_llvm::mir::StackSlot
Definition
StackSlot.h:11
mini_llvm::mir::StackSlot::offset
int offset() const
mini_llvm::mir
Definition
BasicBlock.h:22
include
mini-llvm
mir
StackOffsetImmediate.h
Generated by
1.17.0