Anthony Gutierrez has uploaded this change for review. ( https://gem5-review.googlesource.com/9861

Change subject: x86: implement movntps/movntpd SSE insts
......................................................................

x86: implement movntps/movntpd SSE insts

These are non-temporal packed SSE stores.  For now, we are not
supporting the cache hints, but are implementing them the same
as the non-hinting movaps/movapd instructions.

Also got rid of the placeholder file that was intended for these insts
(simd128/floating_point/data_transfer/move_non_temporal.py) since it
seemed more logical to put them in with the other moves.

Change-Id: I526cd6551b38d6d35010bc6173f23d017106b466
---
M src/arch/x86/SConscript
M src/arch/x86/isa/decoder/two_byte_opcodes.isa
M src/arch/x86/isa/insts/simd128/floating_point/data_transfer/__init__.py
M src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move.py
D src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move_non_temporal.py
5 files changed, 33 insertions(+), 45 deletions(-)



diff --git a/src/arch/x86/SConscript b/src/arch/x86/SConscript
index 6f20f54..0d83684 100644
--- a/src/arch/x86/SConscript
+++ b/src/arch/x86/SConscript
@@ -191,7 +191,6 @@
         'simd128/floating_point/data_transfer/move_mask.py',
         'simd128/floating_point/data_transfer/move.py',
         'simd128/floating_point/data_transfer/move_with_duplication.py',
-        'simd128/floating_point/data_transfer/move_non_temporal.py',
         'simd128/floating_point/data_conversion/__init__.py',
         
'simd128/floating_point/data_conversion/convert_floating_point_to_floating_point.py',
         
'simd128/floating_point/data_conversion/convert_floating_point_to_xmm_integer.py',
diff --git a/src/arch/x86/isa/decoder/two_byte_opcodes.isa b/src/arch/x86/isa/decoder/two_byte_opcodes.isa
index 761e838..5044d10 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,Vo); // don't think sizes matter here
                     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,Vo); // don't think sizes matter here
                     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/__init__.py b/src/arch/x86/isa/insts/simd128/floating_point/data_transfer/__init__.py
index cb727a9..cc524ae 100644
--- a/src/arch/x86/isa/insts/simd128/floating_point/data_transfer/__init__.py +++ b/src/arch/x86/isa/insts/simd128/floating_point/data_transfer/__init__.py
@@ -37,7 +37,6 @@

 categories = ["move",
               "move_with_duplication",
-              "move_non_temporal",
               "move_mask"]

 microcode = '''
diff --git a/src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move.py b/src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move.py
index 81dfc7f..ac76cd8 100644
--- a/src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move.py
+++ b/src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move.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,6 +36,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
 # Authors: Gabe Black
+#          Steve Reinhardt

 microcode = '''
 def macroop MOVAPS_XMM_M {
@@ -73,6 +76,21 @@
     movfp xmmh, xmmhm, dataSize=8
 };

+# movntps is basically the same as movaps, excepting the caching hint and
+# ordering constraints, neither of which we are implementing at this point
+def macroop MOVNTPS_M_XMM {
+    # Check low address.
+    stfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8
+    stfp xmml, seg, sib, disp, dataSize=8
+};
+
+def macroop MOVNTPS_P_XMM {
+    rdip t7
+    # Check low address.
+    stfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8
+    stfp xmml, seg, riprel, disp, dataSize=8
+};
+
 def macroop MOVAPD_XMM_M {
     ldfp xmml, seg, sib, "DISPLACEMENT", dataSize=8
     ldfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8
@@ -95,6 +113,19 @@
     stfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8
 };

+# movntpd is basically the same as movapd, excepting the caching hint and
+# ordering constraints, neither of which we are implementing at this point
+def macroop MOVNTPD_M_XMM {
+    stfp xmml, seg, sib, "DISPLACEMENT", dataSize=8
+    stfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8
+};
+
+def macroop MOVNTPD_P_XMM {
+    rdip t7
+    stfp xmml, seg, riprel, "DISPLACEMENT", dataSize=8
+    stfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8
+};
+
 def macroop MOVUPS_XMM_XMM {
     movfp xmml, xmmlm, dataSize=8
     movfp xmmh, xmmhm, dataSize=8
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
deleted file mode 100644
index 063be91..0000000
--- a/src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move_non_temporal.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (c) 2007 The Hewlett-Packard Development Company
-# All rights reserved.
-#
-# The license below extends only to copyright in the software and shall
-# not be construed as granting a license to any other intellectual
-# property including but not limited to intellectual property relating
-# to a hardware implementation of the functionality of the software
-# licensed hereunder.  You may use the software subject to the license
-# terms below provided that you ensure that this notice is replicated
-# unmodified and in its entirety in all distributions of the software,
-# modified or unmodified, in source code or in binary form.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met: redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer;
-# redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution;
-# neither the name of the copyright holders nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# Authors: Gabe Black
-
-microcode = '''
-# MOVNTPS
-# MOVNTPD
-'''

--
To view, visit https://gem5-review.googlesource.com/9861
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I526cd6551b38d6d35010bc6173f23d017106b466
Gerrit-Change-Number: 9861
Gerrit-PatchSet: 1
Gerrit-Owner: Anthony Gutierrez <anthony.gutier...@amd.com>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to