diff options
author | Korey Sewell <ksewell@umich.edu> | 2006-04-28 00:24:25 -0400 |
---|---|---|
committer | Korey Sewell <ksewell@umich.edu> | 2006-04-28 00:24:25 -0400 |
commit | a183f66a8ad2a1ac822b07d9b399a3a3e6d3cb5c (patch) | |
tree | 168a3480a74fafd15112af6cf2beb247b066a507 /arch/mips/isa_traits.hh | |
parent | 316f1f323913482e02f992f9b38a873bbf8588e6 (diff) | |
download | gem5-a183f66a8ad2a1ac822b07d9b399a3a3e6d3cb5c.tar.xz |
Use lower two bits of FCSR reg to determine rounding mode (may want to move this out of decoder.isa and into a template)
Have FP conversion instructions use re-defined convert_and_round() function
arch/mips/isa/decoder.isa:
Use lower two bits of FCSR reg to determine rounding mode (may want to move this out of decoder.isa and into a template)
Have FP conversion instructions to use re-defined convert_and_round() function
arch/mips/isa/formats/util.isa:
Remove convert_and_round function from here
arch/mips/isa_traits.cc:
Define convert_and_round function here
arch/mips/isa_traits.hh:
Use "enums" to define FP conversion types & Round Modes
Declare convert_and_round function here
--HG--
extra : convert_revision : 0f4f8c1732a53b277361559ea71af2a1feb4fc64
Diffstat (limited to 'arch/mips/isa_traits.hh')
-rw-r--r-- | arch/mips/isa_traits.hh | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/arch/mips/isa_traits.hh b/arch/mips/isa_traits.hh index e5de675cf..3ea72bde2 100644 --- a/arch/mips/isa_traits.hh +++ b/arch/mips/isa_traits.hh @@ -315,13 +315,41 @@ namespace MipsISA return NoFault; } - - void serialize(std::ostream &os); void unserialize(Checkpoint *cp, const std::string §ion); }; + enum ConvertType{ + SINGLE_TO_DOUBLE, + SINGLE_TO_WORD, + SINGLE_TO_LONG, + + DOUBLE_TO_SINGLE, + DOUBLE_TO_WORD, + DOUBLE_TO_LONG, + + LONG_TO_SINGLE, + LONG_TO_DOUBLE, + LONG_TO_WORD, + + WORD_TO_SINGLE, + WORD_TO_DOUBLE, + WORD_TO_LONG, + + PLOWER_TO_SINGLE, + PUPPER_TO_SINGLE + }; + + enum RoundMode{ + RND_ZERO, + RND_DOWN, + RND_UP, + RND_NEAREST + }; + + uint64_t convert_and_round(uint64_t fp_val,ConvertType cvt_type, int rnd_mode = 0); + void copyRegs(ExecContext *src, ExecContext *dest); |