aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/MInstruction.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-10-25 22:54:41 +0000
committerChris Lattner <sabre@nondot.org>2002-10-25 22:54:41 +0000
commit78cee7e7ab9fde0453d3f1b7a317b1c1b41a1b4c (patch)
treed5033feff84105930cfedec4beef41fb30e5704c /lib/CodeGen/MInstruction.cpp
parent2ee9aa1072f13eec6fdc1ab900aec6ede3e7ad13 (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.cpp31
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);
+}