summaryrefslogtreecommitdiff
path: root/src/arch/x86/insts
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2007-09-04 23:31:40 -0700
committerGabe Black <gblack@eecs.umich.edu>2007-09-04 23:31:40 -0700
commitaf4c04c426cca3b73e58ab7464119db28252984c (patch)
tree500f4bd45710fd73028f5946750aa88cb166533d /src/arch/x86/insts
parent310912cf2ccae3a4e9e3505cc3316d778daa2ec8 (diff)
downloadgem5-af4c04c426cca3b73e58ab7464119db28252984c.tar.xz
X86: Add floating point micro registers.
--HG-- extra : convert_revision : 442a5f8b9216638e4e6898f89eacb8695719e20f
Diffstat (limited to 'src/arch/x86/insts')
-rw-r--r--src/arch/x86/insts/static_inst.cc14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/arch/x86/insts/static_inst.cc b/src/arch/x86/insts/static_inst.cc
index 948a74bc1..4f6ec5390 100644
--- a/src/arch/x86/insts/static_inst.cc
+++ b/src/arch/x86/insts/static_inst.cc
@@ -192,7 +192,19 @@ namespace X86ISA
}
ccprintf(os, suffix);
} else if (reg < Ctrl_Base_DepTag) {
- ccprintf(os, "%%f%d", reg - FP_Base_DepTag);
+ int fpindex = reg - FP_Base_DepTag;
+ if(fpindex < NumMMXRegs) {
+ ccprintf(os, "%%mmx%d", reg - FP_Base_DepTag);
+ return;
+ }
+ fpindex -= NumMMXRegs;
+ if(fpindex < NumXMMRegs) {
+ ccprintf(os, "%%xmm%d_%s", fpindex / 2,
+ (fpindex % 2) ? "high": "low");
+ return;
+ }
+ fpindex -= NumXMMRegs;
+ ccprintf(os, "%%ufp%d", fpindex);
} else {
switch (reg - Ctrl_Base_DepTag) {
default: