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