diff options
author | Steve Reinhardt <steve.reinhardt@amd.com> | 2015-10-06 17:26:50 -0700 |
---|---|---|
committer | Steve Reinhardt <steve.reinhardt@amd.com> | 2015-10-06 17:26:50 -0700 |
commit | 57b9f53afa5660152a77b7f3b7affb39f5b0e176 (patch) | |
tree | a8fe858866fecdd2e1d2703a95f04b0b0b37e9ad /src/arch/x86/isa/insts | |
parent | 83e07c07f941ab496fa9cfef4807719a16b51066 (diff) | |
download | gem5-57b9f53afa5660152a77b7f3b7affb39f5b0e176.tar.xz |
x86: implement fild, fucomi, and fucomip x87 insts
fild loads an integer value into the x87 top of stack register.
fucomi/fucomip compare two x87 register values (the latter
also doing a stack pop).
These instructions are used by some versions of GNU libstdc++.
Diffstat (limited to 'src/arch/x86/isa/insts')
-rw-r--r-- | src/arch/x86/isa/insts/x87/compare_and_test/floating_point_unordered_compare.py | 16 | ||||
-rw-r--r-- | src/arch/x86/isa/insts/x87/data_transfer_and_conversion/convert_and_load_or_store_integer.py | 17 |
2 files changed, 30 insertions, 3 deletions
diff --git a/src/arch/x86/isa/insts/x87/compare_and_test/floating_point_unordered_compare.py b/src/arch/x86/isa/insts/x87/compare_and_test/floating_point_unordered_compare.py index 8cca0582b..7007c2d74 100644 --- a/src/arch/x86/isa/insts/x87/compare_and_test/floating_point_unordered_compare.py +++ b/src/arch/x86/isa/insts/x87/compare_and_test/floating_point_unordered_compare.py @@ -1,4 +1,6 @@ # Copyright (c) 2007 The Hewlett-Packard Development Company +# Copyright (c) 2015 Advanced Micro Devices, Inc. +# # All rights reserved. # # The license below extends only to copyright in the software and shall @@ -34,11 +36,21 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Authors: Gabe Black +# Steve Reinhardt microcode = ''' # FUCOM # FUCOMP # FUCOMPP -# FUCOMI -# FUCOMIP + +# fucomi +def macroop FUCOMI_R { + compfp st(0), sti +}; + +# fucomi with stack pop (caused by spm=1) +def macroop FUCOMIP_R { + compfp st(0), sti, spm=1 +}; + ''' diff --git a/src/arch/x86/isa/insts/x87/data_transfer_and_conversion/convert_and_load_or_store_integer.py b/src/arch/x86/isa/insts/x87/data_transfer_and_conversion/convert_and_load_or_store_integer.py index 38f179d74..9bf4ec614 100644 --- a/src/arch/x86/isa/insts/x87/data_transfer_and_conversion/convert_and_load_or_store_integer.py +++ b/src/arch/x86/isa/insts/x87/data_transfer_and_conversion/convert_and_load_or_store_integer.py @@ -1,4 +1,6 @@ # Copyright (c) 2007 The Hewlett-Packard Development Company +# Copyright (c) 2015 Advanced Micro Devices, Inc. +# # All rights reserved. # # The license below extends only to copyright in the software and shall @@ -34,9 +36,22 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Authors: Gabe Black +# Steve Reinhardt microcode = ''' -# FILD +# fild common case +def macroop FILD_M { + ldifp87 ufp1, seg, sib, disp + movfp st(-1), ufp1, spm=-1 +}; + +# fild with RIP-relative addressing +def macroop FILD_P { + rdip t7 + ldifp87 ufp1, seg, riprel, disp + movfp st(-1), ufp1, spm=-1 +}; + # FIST # FISTP # FISTTP |