diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2007-10-02 22:57:33 -0700 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2007-10-02 22:57:33 -0700 |
commit | 3e644b48bbbc3c0c3f3dd6bb158ea7b9c2024424 (patch) | |
tree | 358ffe6a7e3ffc1d940f4b0b4a9193278b5ce48f /src/arch/x86/insts/static_inst.cc | |
parent | a56c651980921d210f2c48f84ce5d3445fc38475 (diff) | |
download | gem5-3e644b48bbbc3c0c3f3dd6bb158ea7b9c2024424.tar.xz |
X86: Fix x87 floating point stack register indexing.
--HG--
extra : convert_revision : b515ec20cbfc50b38aa7da6cf4d465acf9054c08
Diffstat (limited to 'src/arch/x86/insts/static_inst.cc')
-rw-r--r-- | src/arch/x86/insts/static_inst.cc | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/arch/x86/insts/static_inst.cc b/src/arch/x86/insts/static_inst.cc index 4f6ec5390..510295157 100644 --- a/src/arch/x86/insts/static_inst.cc +++ b/src/arch/x86/insts/static_inst.cc @@ -198,13 +198,18 @@ namespace X86ISA return; } fpindex -= NumMMXRegs; - if(fpindex < NumXMMRegs) { + if(fpindex < NumXMMRegs * 2) { ccprintf(os, "%%xmm%d_%s", fpindex / 2, (fpindex % 2) ? "high": "low"); return; } - fpindex -= NumXMMRegs; - ccprintf(os, "%%ufp%d", fpindex); + fpindex -= NumXMMRegs * 2; + if(fpindex < NumMicroFpRegs) { + ccprintf(os, "%%ufp%d", fpindex); + return; + } + fpindex -= NumMicroFpRegs; + ccprintf(os, "%%st(%d)", fpindex); } else { switch (reg - Ctrl_Base_DepTag) { default: |