mini-llvm 0.1.0
Loading...
Searching...
No Matches
FAdd.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:
21 std::shared_ptr<Register> dst,
22 std::shared_ptr<Register> src1,
23 std::shared_ptr<Register> src2)
24 : FBinaryOperator(precision, std::move(dst), std::move(src1), std::move(src2)) {}
25
26 bool hasSideEffects() const override {
27 return true;
28 }
29
30 std::unique_ptr<Instruction> clone() const override {
31 return std::make_unique<FAdd>(
32 precision(), share(*dst()), share(*src1()), share(*src2()));
33 }
34
35 void accept(InstructionVisitor &visitor) override {
36 visitor.visitFAdd(*this);
37 }
38
39 void accept(InstructionVisitor &visitor) const override {
40 visitor.visitFAdd(*this);
41 }
42
43protected:
44 const char *mnemonic() const override {
45 return "FADD";
46 }
47};
48
49} // namespace mini_llvm::mir
#define MINI_LLVM_EXPORT
Definition Compiler.h:17
void accept(InstructionVisitor &visitor) override
Definition FAdd.h:35
std::unique_ptr< Instruction > clone() const override
Definition FAdd.h:30
FAdd(Precision precision, std::shared_ptr< Register > dst, std::shared_ptr< Register > src1, std::shared_ptr< Register > src2)
Definition FAdd.h:20
void accept(InstructionVisitor &visitor) const override
Definition FAdd.h:39
bool hasSideEffects() const override
Definition FAdd.h:26
const char * mnemonic() const override
Definition FAdd.h:44
auto & dst(this Self &&self)
Definition FBinaryOperator.h:30
auto & src1(this Self &&self)
Definition FBinaryOperator.h:35
auto & src2(this Self &&self)
Definition FBinaryOperator.h:40
Precision precision() const
Definition FBinaryOperator.h:25
FBinaryOperator(Precision precision, std::shared_ptr< Register > dst, std::shared_ptr< Register > src1, std::shared_ptr< Register > src2)
Definition FBinaryOperator.h:69
Definition InstructionVisitor.h:70
virtual void visitFAdd(FAdd &I)
Definition InstructionVisitor.h:95
Definition BasicBlock.h:22
std::shared_ptr< T > share(T &value)
Definition Memory.h:25
Precision
Definition Precision.h:7