move_non_temporal.py (14220:d8f83e601091) move_non_temporal.py (14287:1c9774d969ac)
1# Copyright (c) 2007 The Hewlett-Packard Development Company
2# All rights reserved.
3#
4# The license below extends only to copyright in the software and shall
5# not be construed as granting a license to any other intellectual
6# property including but not limited to intellectual property relating
7# to a hardware implementation of the functionality of the software
8# licensed hereunder. You may use the software subject to the license

--- 24 unchanged lines hidden (view full) ---

33# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35#
36# Authors: Gabe Black
37# Pouya Fotouhi
38
39microcode = '''
40def macroop MOVNTDQ_M_XMM {
1# Copyright (c) 2007 The Hewlett-Packard Development Company
2# All rights reserved.
3#
4# The license below extends only to copyright in the software and shall
5# not be construed as granting a license to any other intellectual
6# property including but not limited to intellectual property relating
7# to a hardware implementation of the functionality of the software
8# licensed hereunder. You may use the software subject to the license

--- 24 unchanged lines hidden (view full) ---

33# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35#
36# Authors: Gabe Black
37# Pouya Fotouhi
38
39microcode = '''
40def macroop MOVNTDQ_M_XMM {
41 warn "MOVNTDQ: Ignoring non-temporal hint, modeling as cacheable!"
41 warn_once "MOVNTDQ: Ignoring non-temporal hint, modeling as cacheable!"
42 cda seg, sib, "DISPLACEMENT + 8", dataSize=8
43 stfp xmml, seg, sib, "DISPLACEMENT", dataSize=8
44 stfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8
45};
46
47def macroop MOVNTDQ_P_XMM {
42 cda seg, sib, "DISPLACEMENT + 8", dataSize=8
43 stfp xmml, seg, sib, "DISPLACEMENT", dataSize=8
44 stfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8
45};
46
47def macroop MOVNTDQ_P_XMM {
48 warn "MOVNTDQ_P: Ignoring non-temporal hint, modeling as cacheable!"
48 warn_once "MOVNTDQ_P: Ignoring non-temporal hint, modeling as cacheable!"
49 rdip t7
50 cda seg, riprel, "DISPLACEMENT + 8", dataSize=8
51 stfp xmml, seg, riprel, "DISPLACEMENT", dataSize=8
52 stfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8
53};
54
55def macroop MASKMOVDQU_XMM_XMM {
56 ldfp ufp1, ds, [1, t0, rdi], dataSize=8
57 ldfp ufp2, ds, [1, t0, rdi], 8, dataSize=8
58 maskmov ufp1, xmml, xmmlm, size=1
59 maskmov ufp2, xmmh, xmmhm, size=1
60 stfp ufp1, ds, [1, t0, rdi], dataSize=8
61 stfp ufp2, ds, [1, t0, rdi], 8, dataSize=8
62};
63'''
49 rdip t7
50 cda seg, riprel, "DISPLACEMENT + 8", dataSize=8
51 stfp xmml, seg, riprel, "DISPLACEMENT", dataSize=8
52 stfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8
53};
54
55def macroop MASKMOVDQU_XMM_XMM {
56 ldfp ufp1, ds, [1, t0, rdi], dataSize=8
57 ldfp ufp2, ds, [1, t0, rdi], 8, dataSize=8
58 maskmov ufp1, xmml, xmmlm, size=1
59 maskmov ufp2, xmmh, xmmhm, size=1
60 stfp ufp1, ds, [1, t0, rdi], dataSize=8
61 stfp ufp2, ds, [1, t0, rdi], 8, dataSize=8
62};
63'''