shuffle.py (5081:2ccce8600a9d) shuffle.py (6597:4903cea6a8c2)
1# Copyright (c) 2007 The Hewlett-Packard Development Company
2# All rights reserved.
3#
4# Redistribution and use of this software in source and binary forms,
5# with or without modification, are permitted provided that the
6# following conditions are met:
7#
8# The software must be used only for Non-Commercial Use which means any

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

49# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
50# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
51# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
52# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
53#
54# Authors: Gabe Black
55
56microcode = '''
1# Copyright (c) 2007 The Hewlett-Packard Development Company
2# All rights reserved.
3#
4# Redistribution and use of this software in source and binary forms,
5# with or without modification, are permitted provided that the
6# following conditions are met:
7#
8# The software must be used only for Non-Commercial Use which means any

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

49# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
50# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
51# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
52# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
53#
54# Authors: Gabe Black
55
56microcode = '''
57# PSHUFD
58# PSHUFHW
59# PSHUFLW
57def macroop PSHUFD_XMM_XMM_I {
58 shuffle ufp1, xmmlm, xmmhm, size=4, ext="IMMEDIATE"
59 shuffle xmmh, xmmlm, xmmhm, size=4, ext="IMMEDIATE >> 4"
60 movfp xmml, ufp1, dataSize=8
61};
62
63def macroop PSHUFD_XMM_M_I {
64 ldfp ufp1, seg, sib, "DISPLACEMENT", dataSize=8
65 ldfp ufp2, seg, sib, "DISPLACEMENT + 8", dataSize=8
66 shuffle xmml, ufp1, ufp2, size=4, ext="IMMEDIATE"
67 shuffle xmmh, ufp1, ufp2, size=4, ext="IMMEDIATE >> 4"
68};
69
70def macroop PSHUFD_XMM_P_I {
71 rdip t7
72 ldfp ufp1, seg, riprel, "DISPLACEMENT", dataSize=8
73 ldfp ufp2, seg, riprel, "DISPLACEMENT + 8", dataSize=8
74 shuffle xmml, ufp1, ufp2, size=4, ext="IMMEDIATE"
75 shuffle xmmh, ufp1, ufp2, size=4, ext="IMMEDIATE >> 4"
76};
77
78def macroop PSHUFHW_XMM_XMM_I {
79 shuffle xmmh, xmmhm, xmmhm, size=2, ext=imm
80};
81
82def macroop PSHUFHW_XMM_M_I {
83 ldfp ufp1, seg, sib, "DISPLACEMENT + 8", dataSize=8
84 shuffle xmmh, ufp1, ufp1, size=2, ext=imm
85};
86
87def macroop PSHUFHW_XMM_P_I {
88 rdip t7
89 ldfp ufp1, seg, riprel, "DISPLACEMENT + 8", dataSize=8
90 shuffle xmmh, ufp1, ufp1, size=2, ext=imm
91};
92
93def macroop PSHUFLW_XMM_XMM_I {
94 shuffle xmml, xmmlm, xmmlm, size=2, ext=imm
95};
96
97def macroop PSHUFLW_XMM_M_I {
98 ldfp ufp1, seg, sib, "DISPLACEMENT", dataSize=8
99 shuffle xmml, ufp1, ufp1, size=2, ext=imm
100};
101
102def macroop PSHUFLW_XMM_P_I {
103 rdip t7
104 ldfp ufp1, seg, riprel, "DISPLACEMENT", dataSize=8
105 shuffle xmml, ufp1, ufp1, size=2, ext=imm
106};
60'''
107'''