|
mini-llvm 0.1.0
|
#include <Instruction.h>

Public Member Functions | |
| virtual | ~Instruction ()=default |
| Instruction ()=default | |
| Instruction (const Instruction &)=delete | |
| Instruction & | operator= (const Instruction &)=delete |
| Instruction (Instruction &&)=delete | |
| Instruction & | operator= (Instruction &&)=delete |
| virtual std::unordered_set< const RegisterOperand * > | regOps () const =0 |
| virtual std::unordered_set< const RegisterOperand * > | dsts () const =0 |
| virtual std::unordered_set< const RegisterOperand * > | srcs () const =0 |
| std::unordered_set< RegisterOperand * > | regOps () |
| std::unordered_set< RegisterOperand * > | dsts () |
| std::unordered_set< RegisterOperand * > | srcs () |
| virtual std::unordered_set< PhysicalRegister * > | implicitDsts () const |
| virtual std::unordered_set< PhysicalRegister * > | implicitSrcs () const |
| virtual std::unordered_set< const ImmediateOperand * > | immOps () const =0 |
| std::unordered_set< ImmediateOperand * > | immOps () |
| virtual std::unordered_set< const MemoryOperand * > | memOps () const =0 |
| std::unordered_set< MemoryOperand * > | memOps () |
| virtual bool | isCoalescent () const |
| virtual Register * | coalescenceDst () const |
| virtual Register * | coalescenceSrc () const |
| virtual bool | hasSideEffects () const =0 |
| virtual std::string | format () const =0 |
| virtual std::unique_ptr< Instruction > | clone () const =0 |
| virtual void | accept (InstructionVisitor &visitor)=0 |
| virtual void | accept (InstructionVisitor &visitor) const =0 |
|
virtualdefault |
|
default |
|
delete |
|
delete |
|
pure virtual |
Implemented in mini_llvm::mir::Add, mini_llvm::mir::AddI, mini_llvm::mir::And, mini_llvm::mir::AndI, mini_llvm::mir::Br, mini_llvm::mir::Cmp, mini_llvm::mir::CmpBr, mini_llvm::mir::CmpSet, mini_llvm::mir::CmpZ, mini_llvm::mir::CmpZBr, mini_llvm::mir::CmpZSet, mini_llvm::mir::CondBr, mini_llvm::mir::CondSet, mini_llvm::mir::FAdd, mini_llvm::mir::FakeUse, mini_llvm::mir::FCmp, mini_llvm::mir::FCmpSet, mini_llvm::mir::FCvt, mini_llvm::mir::FCvtFS, mini_llvm::mir::FCvtFU, mini_llvm::mir::FCvtSF, mini_llvm::mir::FCvtUF, mini_llvm::mir::FDiv, mini_llvm::mir::FLoad, mini_llvm::mir::FMov, mini_llvm::mir::FMovFI, mini_llvm::mir::FMovIF, mini_llvm::mir::FMul, mini_llvm::mir::FNeg, mini_llvm::mir::FStore, mini_llvm::mir::FSub, mini_llvm::mir::LA, mini_llvm::mir::LI, mini_llvm::mir::Load, mini_llvm::mir::Marker, mini_llvm::mir::Mov, mini_llvm::mir::Mul, mini_llvm::mir::Neg, mini_llvm::mir::Not, mini_llvm::mir::Or, mini_llvm::mir::OrI, mini_llvm::mir::RISCVCall, mini_llvm::mir::RISCVJALR, mini_llvm::mir::RISCVRet, mini_llvm::mir::SDiv, mini_llvm::mir::SExt, mini_llvm::mir::SHL, mini_llvm::mir::SHLI, mini_llvm::mir::SHRA, mini_llvm::mir::SHRAI, mini_llvm::mir::SHRL, mini_llvm::mir::SHRLI, mini_llvm::mir::SRem, mini_llvm::mir::Store, mini_llvm::mir::Sub, mini_llvm::mir::SubI, mini_llvm::mir::UDiv, mini_llvm::mir::URem, mini_llvm::mir::Xor, and mini_llvm::mir::XorI.
|
pure virtual |
Implemented in mini_llvm::mir::Add, mini_llvm::mir::AddI, mini_llvm::mir::And, mini_llvm::mir::AndI, mini_llvm::mir::Br, mini_llvm::mir::Cmp, mini_llvm::mir::CmpBr, mini_llvm::mir::CmpSet, mini_llvm::mir::CmpZ, mini_llvm::mir::CmpZBr, mini_llvm::mir::CmpZSet, mini_llvm::mir::CondBr, mini_llvm::mir::CondSet, mini_llvm::mir::FAdd, mini_llvm::mir::FakeUse, mini_llvm::mir::FCmp, mini_llvm::mir::FCmpSet, mini_llvm::mir::FCvt, mini_llvm::mir::FCvtFS, mini_llvm::mir::FCvtFU, mini_llvm::mir::FCvtSF, mini_llvm::mir::FCvtUF, mini_llvm::mir::FDiv, mini_llvm::mir::FLoad, mini_llvm::mir::FMov, mini_llvm::mir::FMovFI, mini_llvm::mir::FMovIF, mini_llvm::mir::FMul, mini_llvm::mir::FNeg, mini_llvm::mir::FStore, mini_llvm::mir::FSub, mini_llvm::mir::LA, mini_llvm::mir::LI, mini_llvm::mir::Load, mini_llvm::mir::Marker, mini_llvm::mir::Mov, mini_llvm::mir::Mul, mini_llvm::mir::Neg, mini_llvm::mir::Not, mini_llvm::mir::Or, mini_llvm::mir::OrI, mini_llvm::mir::RISCVCall, mini_llvm::mir::RISCVJALR, mini_llvm::mir::RISCVRet, mini_llvm::mir::SDiv, mini_llvm::mir::SExt, mini_llvm::mir::SHL, mini_llvm::mir::SHLI, mini_llvm::mir::SHRA, mini_llvm::mir::SHRAI, mini_llvm::mir::SHRL, mini_llvm::mir::SHRLI, mini_llvm::mir::SRem, mini_llvm::mir::Store, mini_llvm::mir::Sub, mini_llvm::mir::SubI, mini_llvm::mir::UDiv, mini_llvm::mir::URem, mini_llvm::mir::Xor, and mini_llvm::mir::XorI.
|
pure virtual |
Implemented in mini_llvm::mir::Add, mini_llvm::mir::AddI, mini_llvm::mir::And, mini_llvm::mir::AndI, mini_llvm::mir::Br, mini_llvm::mir::Cmp, mini_llvm::mir::CmpBr, mini_llvm::mir::CmpSet, mini_llvm::mir::CmpZ, mini_llvm::mir::CmpZBr, mini_llvm::mir::CmpZSet, mini_llvm::mir::CondBr, mini_llvm::mir::CondSet, mini_llvm::mir::FAdd, mini_llvm::mir::FakeUse, mini_llvm::mir::FCmp, mini_llvm::mir::FCmpSet, mini_llvm::mir::FCvt, mini_llvm::mir::FCvtFS, mini_llvm::mir::FCvtFU, mini_llvm::mir::FCvtSF, mini_llvm::mir::FCvtUF, mini_llvm::mir::FDiv, mini_llvm::mir::FLoad, mini_llvm::mir::FMov, mini_llvm::mir::FMovFI, mini_llvm::mir::FMovIF, mini_llvm::mir::FMul, mini_llvm::mir::FNeg, mini_llvm::mir::FStore, mini_llvm::mir::FSub, mini_llvm::mir::LA, mini_llvm::mir::LI, mini_llvm::mir::Load, mini_llvm::mir::Marker, mini_llvm::mir::Mov, mini_llvm::mir::Mul, mini_llvm::mir::Neg, mini_llvm::mir::Not, mini_llvm::mir::Or, mini_llvm::mir::OrI, mini_llvm::mir::RISCVCall, mini_llvm::mir::RISCVJALR, mini_llvm::mir::RISCVRet, mini_llvm::mir::SDiv, mini_llvm::mir::SExt, mini_llvm::mir::SHL, mini_llvm::mir::SHLI, mini_llvm::mir::SHRA, mini_llvm::mir::SHRAI, mini_llvm::mir::SHRL, mini_llvm::mir::SHRLI, mini_llvm::mir::SRem, mini_llvm::mir::Store, mini_llvm::mir::Sub, mini_llvm::mir::SubI, mini_llvm::mir::UDiv, mini_llvm::mir::URem, mini_llvm::mir::Xor, and mini_llvm::mir::XorI.
|
inlinevirtual |
Reimplemented in mini_llvm::mir::FMov, and mini_llvm::mir::Mov.
|
inlinevirtual |
Reimplemented in mini_llvm::mir::FMov, and mini_llvm::mir::Mov.
| std::unordered_set< RegisterOperand * > mini_llvm::mir::Instruction::dsts | ( | ) |
|
pure virtual |
Implemented in mini_llvm::mir::BinaryOperator, mini_llvm::mir::BinaryOperatorI, mini_llvm::mir::Br, mini_llvm::mir::Cmp, mini_llvm::mir::CmpBr, mini_llvm::mir::CmpSet, mini_llvm::mir::CmpZ, mini_llvm::mir::CmpZBr, mini_llvm::mir::CmpZSet, mini_llvm::mir::CondBr, mini_llvm::mir::CondSet, mini_llvm::mir::FakeUse, mini_llvm::mir::FBinaryOperator, mini_llvm::mir::FCmp, mini_llvm::mir::FCmpSet, mini_llvm::mir::FCvt, mini_llvm::mir::FCvtFS, mini_llvm::mir::FCvtFU, mini_llvm::mir::FCvtSF, mini_llvm::mir::FCvtUF, mini_llvm::mir::FLoad, mini_llvm::mir::FMovFI, mini_llvm::mir::FMovIF, mini_llvm::mir::FStore, mini_llvm::mir::FUnaryOperator, mini_llvm::mir::LA, mini_llvm::mir::LI, mini_llvm::mir::Load, mini_llvm::mir::Marker, mini_llvm::mir::RISCVCall, mini_llvm::mir::RISCVJALR, mini_llvm::mir::RISCVRet, mini_llvm::mir::SExt, mini_llvm::mir::Store, and mini_llvm::mir::UnaryOperator.
|
pure virtual |
Implemented in mini_llvm::mir::BinaryOperator, mini_llvm::mir::BinaryOperatorI, mini_llvm::mir::Br, mini_llvm::mir::Cmp, mini_llvm::mir::CmpBr, mini_llvm::mir::CmpSet, mini_llvm::mir::CmpZ, mini_llvm::mir::CmpZBr, mini_llvm::mir::CmpZSet, mini_llvm::mir::CondBr, mini_llvm::mir::CondSet, mini_llvm::mir::FakeUse, mini_llvm::mir::FBinaryOperator, mini_llvm::mir::FCmp, mini_llvm::mir::FCmpSet, mini_llvm::mir::FCvt, mini_llvm::mir::FCvtFS, mini_llvm::mir::FCvtFU, mini_llvm::mir::FCvtSF, mini_llvm::mir::FCvtUF, mini_llvm::mir::FLoad, mini_llvm::mir::FMovFI, mini_llvm::mir::FMovIF, mini_llvm::mir::FStore, mini_llvm::mir::FUnaryOperator, mini_llvm::mir::LA, mini_llvm::mir::LI, mini_llvm::mir::Load, mini_llvm::mir::Marker, mini_llvm::mir::RISCVCall, mini_llvm::mir::RISCVJALR, mini_llvm::mir::RISCVRet, mini_llvm::mir::SExt, mini_llvm::mir::Store, and mini_llvm::mir::UnaryOperator.
|
pure virtual |
Implemented in mini_llvm::mir::Add, mini_llvm::mir::AddI, mini_llvm::mir::And, mini_llvm::mir::AndI, mini_llvm::mir::Cmp, mini_llvm::mir::CmpSet, mini_llvm::mir::CmpZ, mini_llvm::mir::CmpZSet, mini_llvm::mir::CondSet, mini_llvm::mir::FAdd, mini_llvm::mir::FakeUse, mini_llvm::mir::FCmp, mini_llvm::mir::FCmpSet, mini_llvm::mir::FCvt, mini_llvm::mir::FCvtFS, mini_llvm::mir::FCvtFU, mini_llvm::mir::FCvtSF, mini_llvm::mir::FCvtUF, mini_llvm::mir::FDiv, mini_llvm::mir::FLoad, mini_llvm::mir::FMov, mini_llvm::mir::FMovFI, mini_llvm::mir::FMovIF, mini_llvm::mir::FMul, mini_llvm::mir::FNeg, mini_llvm::mir::FStore, mini_llvm::mir::FSub, mini_llvm::mir::LA, mini_llvm::mir::LI, mini_llvm::mir::Load, mini_llvm::mir::Marker, mini_llvm::mir::Mov, mini_llvm::mir::Mul, mini_llvm::mir::Neg, mini_llvm::mir::Not, mini_llvm::mir::Or, mini_llvm::mir::OrI, mini_llvm::mir::RISCVCall, mini_llvm::mir::RISCVJALR, mini_llvm::mir::SDiv, mini_llvm::mir::SExt, mini_llvm::mir::SHL, mini_llvm::mir::SHLI, mini_llvm::mir::SHRA, mini_llvm::mir::SHRAI, mini_llvm::mir::SHRL, mini_llvm::mir::SHRLI, mini_llvm::mir::SRem, mini_llvm::mir::Store, mini_llvm::mir::Sub, mini_llvm::mir::SubI, mini_llvm::mir::Terminator, mini_llvm::mir::UDiv, mini_llvm::mir::URem, mini_llvm::mir::Xor, and mini_llvm::mir::XorI.
| std::unordered_set< ImmediateOperand * > mini_llvm::mir::Instruction::immOps | ( | ) |
|
pure virtual |
Implemented in mini_llvm::mir::BinaryOperator, mini_llvm::mir::BinaryOperatorI, mini_llvm::mir::Br, mini_llvm::mir::Cmp, mini_llvm::mir::CmpBr, mini_llvm::mir::CmpSet, mini_llvm::mir::CmpZ, mini_llvm::mir::CmpZBr, mini_llvm::mir::CmpZSet, mini_llvm::mir::CondBr, mini_llvm::mir::CondSet, mini_llvm::mir::FakeUse, mini_llvm::mir::FBinaryOperator, mini_llvm::mir::FCmp, mini_llvm::mir::FCmpSet, mini_llvm::mir::FCvt, mini_llvm::mir::FCvtFS, mini_llvm::mir::FCvtFU, mini_llvm::mir::FCvtSF, mini_llvm::mir::FCvtUF, mini_llvm::mir::FLoad, mini_llvm::mir::FMovFI, mini_llvm::mir::FMovIF, mini_llvm::mir::FStore, mini_llvm::mir::FUnaryOperator, mini_llvm::mir::LA, mini_llvm::mir::LI, mini_llvm::mir::Load, mini_llvm::mir::Marker, mini_llvm::mir::RISCVCall, mini_llvm::mir::RISCVJALR, mini_llvm::mir::RISCVRet, mini_llvm::mir::SExt, mini_llvm::mir::Store, and mini_llvm::mir::UnaryOperator.
|
inlinevirtual |
Reimplemented in mini_llvm::mir::RISCVCall, mini_llvm::mir::RISCVJALR, and mini_llvm::mir::RISCVRet.
|
inlinevirtual |
Reimplemented in mini_llvm::mir::FakeUse, mini_llvm::mir::RISCVCall, mini_llvm::mir::RISCVJALR, and mini_llvm::mir::RISCVRet.
|
inlinevirtual |
Reimplemented in mini_llvm::mir::FMov, and mini_llvm::mir::Mov.
| std::unordered_set< MemoryOperand * > mini_llvm::mir::Instruction::memOps | ( | ) |
|
pure virtual |
Implemented in mini_llvm::mir::BinaryOperator, mini_llvm::mir::BinaryOperatorI, mini_llvm::mir::Br, mini_llvm::mir::Cmp, mini_llvm::mir::CmpBr, mini_llvm::mir::CmpSet, mini_llvm::mir::CmpZ, mini_llvm::mir::CmpZBr, mini_llvm::mir::CmpZSet, mini_llvm::mir::CondBr, mini_llvm::mir::CondSet, mini_llvm::mir::FakeUse, mini_llvm::mir::FBinaryOperator, mini_llvm::mir::FCmp, mini_llvm::mir::FCmpSet, mini_llvm::mir::FCvt, mini_llvm::mir::FCvtFS, mini_llvm::mir::FCvtFU, mini_llvm::mir::FCvtSF, mini_llvm::mir::FCvtUF, mini_llvm::mir::FLoad, mini_llvm::mir::FMovFI, mini_llvm::mir::FMovIF, mini_llvm::mir::FStore, mini_llvm::mir::FUnaryOperator, mini_llvm::mir::LA, mini_llvm::mir::LI, mini_llvm::mir::Load, mini_llvm::mir::Marker, mini_llvm::mir::RISCVCall, mini_llvm::mir::RISCVJALR, mini_llvm::mir::RISCVRet, mini_llvm::mir::SExt, mini_llvm::mir::Store, and mini_llvm::mir::UnaryOperator.
|
delete |
|
delete |
| std::unordered_set< RegisterOperand * > mini_llvm::mir::Instruction::regOps | ( | ) |
|
pure virtual |
Implemented in mini_llvm::mir::BinaryOperator, mini_llvm::mir::BinaryOperatorI, mini_llvm::mir::Br, mini_llvm::mir::Cmp, mini_llvm::mir::CmpBr, mini_llvm::mir::CmpSet, mini_llvm::mir::CmpZ, mini_llvm::mir::CmpZBr, mini_llvm::mir::CmpZSet, mini_llvm::mir::CondBr, mini_llvm::mir::CondSet, mini_llvm::mir::FakeUse, mini_llvm::mir::FBinaryOperator, mini_llvm::mir::FCmp, mini_llvm::mir::FCmpSet, mini_llvm::mir::FCvt, mini_llvm::mir::FCvtFS, mini_llvm::mir::FCvtFU, mini_llvm::mir::FCvtSF, mini_llvm::mir::FCvtUF, mini_llvm::mir::FLoad, mini_llvm::mir::FMovFI, mini_llvm::mir::FMovIF, mini_llvm::mir::FStore, mini_llvm::mir::FUnaryOperator, mini_llvm::mir::LA, mini_llvm::mir::LI, mini_llvm::mir::Load, mini_llvm::mir::Marker, mini_llvm::mir::RISCVCall, mini_llvm::mir::RISCVJALR, mini_llvm::mir::RISCVRet, mini_llvm::mir::SExt, mini_llvm::mir::Store, and mini_llvm::mir::UnaryOperator.
| std::unordered_set< RegisterOperand * > mini_llvm::mir::Instruction::srcs | ( | ) |
|
pure virtual |
Implemented in mini_llvm::mir::BinaryOperator, mini_llvm::mir::BinaryOperatorI, mini_llvm::mir::Br, mini_llvm::mir::Cmp, mini_llvm::mir::CmpBr, mini_llvm::mir::CmpSet, mini_llvm::mir::CmpZ, mini_llvm::mir::CmpZBr, mini_llvm::mir::CmpZSet, mini_llvm::mir::CondBr, mini_llvm::mir::CondSet, mini_llvm::mir::FakeUse, mini_llvm::mir::FBinaryOperator, mini_llvm::mir::FCmp, mini_llvm::mir::FCmpSet, mini_llvm::mir::FCvt, mini_llvm::mir::FCvtFS, mini_llvm::mir::FCvtFU, mini_llvm::mir::FCvtSF, mini_llvm::mir::FCvtUF, mini_llvm::mir::FLoad, mini_llvm::mir::FMovFI, mini_llvm::mir::FMovIF, mini_llvm::mir::FStore, mini_llvm::mir::FUnaryOperator, mini_llvm::mir::LA, mini_llvm::mir::LI, mini_llvm::mir::Load, mini_llvm::mir::Marker, mini_llvm::mir::RISCVCall, mini_llvm::mir::RISCVJALR, mini_llvm::mir::RISCVRet, mini_llvm::mir::SExt, mini_llvm::mir::Store, and mini_llvm::mir::UnaryOperator.