summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move_non_temporal.py
diff options
context:
space:
mode:
authorSteve Reinhardt <steve.reinhardt@amd.com>2017-04-20 11:33:00 -0400
committerAnthony Gutierrez <anthony.gutierrez@amd.com>2018-05-02 23:28:23 +0000
commitddb80527e37e505e74b04755da502934ce8f0645 (patch)
tree1ded5d45ffc2ef92ac62ab2210b833af0342d3de /src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move_non_temporal.py
parent47cda1d20b1b7e16d7a8b21b8d31e357d9ec38da (diff)
downloadgem5-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>
Diffstat (limited to 'src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move_non_temporal.py')
-rw-r--r--src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move_non_temporal.py31
1 files changed, 29 insertions, 2 deletions
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
+};
'''