summaryrefslogtreecommitdiff
path: root/src/arch/x86/intregs.hh
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2007-09-06 16:27:28 -0700
committerGabe Black <gblack@eecs.umich.edu>2007-09-06 16:27:28 -0700
commite4c01713562f51847537c5724bc629ce4bdcf3bc (patch)
treee2e30437879036e4fa10e2720112f12cefcfd310 /src/arch/x86/intregs.hh
parent7f079149f147107070f518fc0a86c45c6c62b2a5 (diff)
downloadgem5-e4c01713562f51847537c5724bc629ce4bdcf3bc.tar.xz
X86: Rework the multiplication microops so that they work like they would in the patent.
--HG-- extra : convert_revision : 6fcf5dee440288d8bf92f6c5c2f97ef019975536
Diffstat (limited to 'src/arch/x86/intregs.hh')
-rw-r--r--src/arch/x86/intregs.hh26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/arch/x86/intregs.hh b/src/arch/x86/intregs.hh
index dbbb9f97e..6f252392e 100644
--- a/src/arch/x86/intregs.hh
+++ b/src/arch/x86/intregs.hh
@@ -58,6 +58,7 @@
#ifndef __ARCH_X86_INTREGS_HH__
#define __ARCH_X86_INTREGS_HH__
+#include "arch/x86/x86_traits.hh"
#include "base/bitunion.hh"
namespace X86ISA
@@ -163,6 +164,31 @@ namespace X86ISA
NUM_INTREGS
};
+
+ inline static IntRegIndex
+ INTREG_MICRO(int index)
+ {
+ return (IntRegIndex)(NUM_INTREGS + index);
+ }
+
+ inline static IntRegIndex
+ INTREG_PSEUDO(int index)
+ {
+ return (IntRegIndex)(NUM_INTREGS + NumMicroIntRegs + index);
+ }
+
+ inline static IntRegIndex
+ INTREG_IMPLICIT(int index)
+ {
+ return (IntRegIndex)(NUM_INTREGS + NumMicroIntRegs +
+ NumPseudoIntRegs + index);
+ }
+
+ inline static IntRegIndex
+ INTREG_FOLDED(int index, int foldBit)
+ {
+ return (IntRegIndex)(((index & 0x1C) == 4 ? foldBit : 0) | index);
+ }
};
#endif // __ARCH_X86_INTREGS_HH__