mini-llvm 0.1.0
Loading...
Searching...
No Matches
AndI.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
16
17namespace mini_llvm::mir {
18
20public:
22 std::shared_ptr<Register> dst,
23 std::shared_ptr<Register> src1,
24 std::unique_ptr<Immediate> src2,
26 : BinaryOperatorI(width, std::move(dst), std::move(src1), std::move(src2), extMode) {}
27
28 bool hasSideEffects() const override {
29 return false;
30 }
31
32 std::unique_ptr<Instruction> clone() const override {
33 return std::make_unique<AndI>(
34 width(), share(*dst()), share(*src1()), src2()->clone(), extMode());
35 }
36
37 void accept(InstructionVisitor &visitor) override {
38 visitor.visitAndI(*this);
39 }
40
41 void accept(InstructionVisitor &visitor) const override {
42 visitor.visitAndI(*this);
43 }
44
45protected:
46 const char *mnemonic() const override {
47 return "ANDI";
48 }
49};
50
51} // namespace mini_llvm::mir
#define MINI_LLVM_EXPORT
Definition Compiler.h:17
void accept(InstructionVisitor &visitor) override
Definition AndI.h:37
AndI(int width, std::shared_ptr< Register > dst, std::shared_ptr< Register > src1, std::unique_ptr< Immediate > src2, ExtensionMode extMode=ExtensionMode::kNo)
Definition AndI.h:21
const char * mnemonic() const override
Definition AndI.h:46
std::unique_ptr< Instruction > clone() const override
Definition AndI.h:32
void accept(InstructionVisitor &visitor) const override
Definition AndI.h:41
bool hasSideEffects() const override
Definition AndI.h:28
auto & src2(this Self &&self)
Definition BinaryOperatorI.h:38
BinaryOperatorI(int width, std::shared_ptr< Register > dst, std::shared_ptr< Register > src1, std::unique_ptr< Immediate > src2, ExtensionMode extMode)
Definition BinaryOperatorI.h:69
ExtensionMode extMode() const
Definition BinaryOperatorI.h:42
int width() const
Definition BinaryOperatorI.h:23
auto & src1(this Self &&self)
Definition BinaryOperatorI.h:33
auto & dst(this Self &&self)
Definition BinaryOperatorI.h:28
Definition InstructionVisitor.h:70
virtual void visitAndI(AndI &I)
Definition InstructionVisitor.h:85
Definition BasicBlock.h:22
ExtensionMode
Definition ExtensionMode.h:7
@ kNo
Definition ExtensionMode.h:8
std::shared_ptr< T > share(T &value)
Definition Memory.h:25