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 <string>
7#include <utility>
8
12#include "mini-llvm/ir/Value.h"
14
15namespace mini_llvm::ir {
16
18public:
19 FAdd(std::shared_ptr<Value> lhs, std::shared_ptr<Value> rhs)
20 : BinaryFloatingArithmeticOperator(std::move(lhs), std::move(rhs)) {}
21
22 bool isCommutative() const override {
23 return true;
24 }
25
26 std::shared_ptr<Constant> fold() const override;
27
28 void accept(InstructionVisitor &visitor) override {
29 visitor.visitFAdd(*this);
30 }
31
32 void accept(InstructionVisitor &visitor) const override {
33 visitor.visitFAdd(*this);
34 }
35
36 std::string format() const override;
37 std::unique_ptr<Value> clone() const override;
38};
39
40} // namespace mini_llvm::ir
#define MINI_LLVM_EXPORT
Definition Compiler.h:17
BinaryFloatingArithmeticOperator(std::shared_ptr< Value > lhs, std::shared_ptr< Value > rhs)
Definition BinaryFloatingArithmeticOperator.h:25
auto & rhs(this Self &&self)
Definition BinaryFloatingOperator.h:24
auto & lhs(this Self &&self)
Definition BinaryFloatingOperator.h:19
void accept(InstructionVisitor &visitor) const override
Definition FAdd.h:32
FAdd(std::shared_ptr< Value > lhs, std::shared_ptr< Value > rhs)
Definition FAdd.h:19
std::shared_ptr< Constant > fold() const override
std::string format() const override
std::unique_ptr< Value > clone() const override
bool isCommutative() const override
Definition FAdd.h:22
void accept(InstructionVisitor &visitor) override
Definition FAdd.h:28
Definition InstructionVisitor.h:58
virtual void visitFAdd(FAdd &I)
Definition InstructionVisitor.h:78
Definition Argument.h:13