aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-11-18 06:56:24 +0000
committerChris Lattner <sabre@nondot.org>2002-11-18 06:56:24 +0000
commitf21dfcddcf199444440004bfa74bb222e2d3ce9e (patch)
treeb0f94a3d7cbe6419d16cfb4c10a5074c31c2085b
parent6aab9cf65cd1e96f9d0fa99f8453da454648bba1 (diff)
Expose base opcode
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4742 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/X86/X86InstrInfo.cpp13
-rw-r--r--lib/Target/X86/X86InstrInfo.h7
2 files changed, 20 insertions, 0 deletions
diff --git a/lib/Target/X86/X86InstrInfo.cpp b/lib/Target/X86/X86InstrInfo.cpp
index c4785e7346..fa3537c648 100644
--- a/lib/Target/X86/X86InstrInfo.cpp
+++ b/lib/Target/X86/X86InstrInfo.cpp
@@ -25,3 +25,16 @@ X86InstrInfo::X86InstrInfo()
}
+static unsigned char BaseOpcodes[] = {
+#define I(ENUM, NAME, BASEOPCODE, FLAGS, TSFLAGS) BASEOPCODE,
+#include "X86InstrInfo.def"
+};
+
+// getBaseOpcodeFor - This function returns the "base" X86 opcode for the
+// specified opcode number.
+//
+unsigned char X86InstrInfo::getBaseOpcodeFor(unsigned Opcode) const {
+ assert(Opcode < sizeof(BaseOpcodes)/sizeof(BaseOpcodes[0]) &&
+ "Opcode out of range!");
+ return BaseOpcodes[Opcode];
+}
diff --git a/lib/Target/X86/X86InstrInfo.h b/lib/Target/X86/X86InstrInfo.h
index 415d81a05c..65536818bf 100644
--- a/lib/Target/X86/X86InstrInfo.h
+++ b/lib/Target/X86/X86InstrInfo.h
@@ -54,6 +54,7 @@ namespace X86II {
/// TODO: Mod/RM that uses a fixed opcode extension, like /0
+ FormMask = 7,
//===------------------------------------------------------------------===//
// Actual flags...
@@ -83,6 +84,12 @@ public:
virtual void print(const MachineInstr *MI, std::ostream &O,
const TargetMachine &TM) const;
+ // getBaseOpcodeFor - This function returns the "base" X86 opcode for the
+ // specified opcode number.
+ //
+ unsigned char getBaseOpcodeFor(unsigned Opcode) const;
+
+
//===--------------------------------------------------------------------===//
//