mini-llvm 0.1.0
Loading...
Searching...
No Matches
RegisterOperand.h
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2
3#pragma once
4
5#include <memory>
6#include <utility>
7
10
11namespace mini_llvm::mir {
12
14public:
15 RegisterOperand(RegisterClass Class, std::shared_ptr<Register> reg)
16 : class_(Class), reg_(std::move(reg)) {}
17
19 return class_;
20 }
21
23 return *reg_;
24 }
25
27 return &*reg_;
28 }
29
30 void set(std::shared_ptr<Register> reg) {
31 reg_ = std::move(reg);
32 }
33
34private:
35 RegisterClass class_;
36 std::shared_ptr<Register> reg_;
37};
38
39} // namespace mini_llvm::mir
Register * operator->() const
Definition RegisterOperand.h:26
RegisterOperand(RegisterClass Class, std::shared_ptr< Register > reg)
Definition RegisterOperand.h:15
void set(std::shared_ptr< Register > reg)
Definition RegisterOperand.h:30
Register & operator*() const
Definition RegisterOperand.h:22
RegisterClass Class() const
Definition RegisterOperand.h:18
Definition Register.h:14
Definition BasicBlock.h:22
RegisterClass
Definition RegisterClass.h:7