diff options
author | Steve Reinhardt <steve.reinhardt@amd.com> | 2017-04-20 11:33:00 -0400 |
---|---|---|
committer | Anthony Gutierrez <anthony.gutierrez@amd.com> | 2018-05-02 23:28:23 +0000 |
commit | ddb80527e37e505e74b04755da502934ce8f0645 (patch) | |
tree | 1ded5d45ffc2ef92ac62ab2210b833af0342d3de | |
parent | 47cda1d20b1b7e16d7a8b21b8d31e357d9ec38da (diff) | |
download | gem5-ddb80527e37e505e74b04755da502934ce8f0645.tar.xz |
arch-x86: implement movntps/movntpd SSE insts
These are non-temporal packed SSE stores.
Change-Id: I526cd6551b38d6d35010bc6173f23d017106b466
Reviewed-on: https://gem5-review.googlesource.com/9861
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
-rw-r--r-- | src/arch/x86/isa/decoder/two_byte_opcodes.isa | 4 | ||||
-rw-r--r-- | src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move_non_temporal.py | 31 |
2 files changed, 31 insertions, 4 deletions
diff --git a/src/arch/x86/isa/decoder/two_byte_opcodes.isa b/src/arch/x86/isa/decoder/two_byte_opcodes.isa index 761e8381e..339e5a0ab 100644 --- a/src/arch/x86/isa/decoder/two_byte_opcodes.isa +++ b/src/arch/x86/isa/decoder/two_byte_opcodes.isa @@ -383,7 +383,7 @@ 0x0: MOVAPS(Vq,Wq); 0x1: MOVAPS(Wq,Vq); 0x2: CVTPI2PS(Vq,Qq); - 0x3: WarnUnimpl::movntps_Mo_Vo(); + 0x3: MOVNTPS(Mq,Vq); 0x4: CVTTPS2PI(Pq,Wq); 0x5: CVTPS2PI(Pq,Wq); 0x6: UCOMISS(Vd,Wd); @@ -401,7 +401,7 @@ 0x0: MOVAPD(Vo,Wo); 0x1: MOVAPD(Wo,Vo); 0x2: CVTPI2PD(Vo,Qq); - 0x3: WarnUnimpl::movntpd_Mo_Vo(); + 0x3: MOVNTPD(Mq,Vq); 0x4: CVTTPD2PI(Pq,Wo); 0x5: CVTPD2PI(Pq,Wo); 0x6: UCOMISD(Vq,Wq); diff --git a/src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move_non_temporal.py b/src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move_non_temporal.py index 063be91bd..a6e392ffd 100644 --- a/src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move_non_temporal.py +++ b/src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move_non_temporal.py @@ -1,4 +1,5 @@ # Copyright (c) 2007 The Hewlett-Packard Development Company +# Copyright (c) 2015, 2018 Advanced Micro Devices, Inc. # All rights reserved. # # The license below extends only to copyright in the software and shall @@ -34,8 +35,34 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Authors: Gabe Black +# Steve Reinhardt microcode = ''' -# MOVNTPS -# MOVNTPD +# movntps is basically the same as movaps, excepting the caching hint and +# ordering constraints +def macroop MOVNTPS_M_XMM { + # Check low address. + stfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8, uncacheable=True + stfp xmml, seg, sib, disp, dataSize=8, uncacheable=True +}; + +def macroop MOVNTPS_P_XMM { + rdip t7 + # Check low address. + stfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8, uncacheable=True + stfp xmml, seg, riprel, disp, dataSize=8, uncacheable=True +}; + +# movntpd is basically the same as movapd, excepting the caching hint and +# ordering constraints +def macroop MOVNTPD_M_XMM { + stfp xmml, seg, sib, "DISPLACEMENT", dataSize=8, uncacheable=True + stfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8, uncacheable=True +}; + +def macroop MOVNTPD_P_XMM { + rdip t7 + stfp xmml, seg, riprel, "DISPLACEMENT", dataSize=8, uncacheable=True + stfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8, uncacheable=True +}; ''' |