mini-llvm 0.1.0
Loading...
Searching...
No Matches
FMov.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
15
16namespace mini_llvm::mir {
17
19public:
20 FMov(Precision precision, std::shared_ptr<Register> dst, std::shared_ptr<Register> src)
21 : FUnaryOperator(precision, std::move(dst), std::move(src)) {}
22
23 bool isCoalescent() const override {
24 return true;
25 }
26
27 Register *coalescenceDst() const override {
28 return &*dst();
29 }
30
31 Register *coalescenceSrc() const override {
32 return &*src();
33 }
34
35 bool hasSideEffects() const override {
36 return false;
37 }
38
39 std::unique_ptr<Instruction> clone() const override {
40 return std::make_unique<FMov>(precision(), share(*dst()), share(*src()));
41 }
42
43 void accept(InstructionVisitor &visitor) override {
44 visitor.visitFMov(*this);
45 }
46
47 void accept(InstructionVisitor &visitor) const override {
48 visitor.visitFMov(*this);
49 }
50
51protected:
52 const char *mnemonic() const override {
53 return "FMOV";
54 }
55};
56
57} // namespace mini_llvm::mir
#define MINI_LLVM_EXPORT
Definition Compiler.h:17
std::unique_ptr< Instruction > clone() const override
Definition FMov.h:39
FMov(Precision precision, std::shared_ptr< Register > dst, std::shared_ptr< Register > src)
Definition FMov.h:20
bool isCoalescent() const override
Definition FMov.h:23
bool hasSideEffects() const override
Definition FMov.h:35
Register * coalescenceSrc() const override
Definition FMov.h:31
Register * coalescenceDst() const override
Definition FMov.h:27
const char * mnemonic() const override
Definition FMov.h:52
void accept(InstructionVisitor &visitor) const override
Definition FMov.h:47
void accept(InstructionVisitor &visitor) override
Definition FMov.h:43
Precision precision() const
Definition FUnaryOperator.h:25
auto & src(this Self &&self)
Definition FUnaryOperator.h:35
auto & dst(this Self &&self)
Definition FUnaryOperator.h:30
FUnaryOperator(Precision precision, std::shared_ptr< Register > dst, std::shared_ptr< Register > src)
Definition FUnaryOperator.h:64
Definition InstructionVisitor.h:70
virtual void visitFMov(FMov &I)
Definition InstructionVisitor.h:105
Definition Register.h:14
Definition BasicBlock.h:22
std::shared_ptr< T > share(T &value)
Definition Memory.h:25
Precision
Definition Precision.h:7