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