diff options
author | Chris Lattner <sabre@nondot.org> | 2002-10-25 22:54:41 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-10-25 22:54:41 +0000 |
commit | 78cee7e7ab9fde0453d3f1b7a317b1c1b41a1b4c (patch) | |
tree | d5033feff84105930cfedec4beef41fb30e5704c /lib/CodeGen/MInstruction.cpp | |
parent | 2ee9aa1072f13eec6fdc1ab900aec6ede3e7ad13 (diff) |
Initial checkin of codegen infrastructure for LLVM-JIT
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4282 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/MInstruction.cpp')
-rw-r--r-- | lib/CodeGen/MInstruction.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/CodeGen/MInstruction.cpp b/lib/CodeGen/MInstruction.cpp new file mode 100644 index 0000000000..d6740e5212 --- /dev/null +++ b/lib/CodeGen/MInstruction.cpp @@ -0,0 +1,31 @@ +//===-- MInstruction.cpp - Implementation code for the MInstruction class -===// +// +// This file contains a printer that converts from our internal representation +// of LLVM code to a nice human readable form that is suitable for debuggging. +// +//===----------------------------------------------------------------------===// + +#include "llvm/CodeGen/MBasicBlock.h" + +/// MInstruction ctor - Create a new instruction, and append it to the +/// specified basic block. +/// +MInstruction::MInstruction(MBasicBlock *BB, unsigned O, unsigned D) + : Opcode(O), Dest(D) { + // Add this instruction to the specified basic block + BB->getInstList().push_back(this); +} + + +/// addOperand - Add a new operand to the instruction with the specified value +/// and interpretation. +/// +void MInstruction::addOperand(unsigned Value, MOperand::Interpretation Ty) { + if (Operands.size() < 4) { + OperandInterpretation[Operands.size()] = Ty; // Save interpretation + } else { + assert(Ty == MOperand::Register && + "Trying to add 5th operand that is not a register to MInstruction!"); + } + Operands.push_back(Value); +} |