move.py revision 6698:21047815f78e
16166Ssteve.reinhardt@amd.com# Copyright (c) 2007 The Hewlett-Packard Development Company
26928SBrad.Beckmann@amd.com# All rights reserved.
36166Ssteve.reinhardt@amd.com#
46166Ssteve.reinhardt@amd.com# Redistribution and use of this software in source and binary forms,
56166Ssteve.reinhardt@amd.com# with or without modification, are permitted provided that the
66166Ssteve.reinhardt@amd.com# following conditions are met:
76166Ssteve.reinhardt@amd.com#
86166Ssteve.reinhardt@amd.com# The software must be used only for Non-Commercial Use which means any
96166Ssteve.reinhardt@amd.com# use which is NOT directed to receiving any direct monetary
106166Ssteve.reinhardt@amd.com# compensation for, or commercial advantage from such use.  Illustrative
116166Ssteve.reinhardt@amd.com# examples of non-commercial use are academic research, personal study,
126166Ssteve.reinhardt@amd.com# teaching, education and corporate research & development.
136166Ssteve.reinhardt@amd.com# Illustrative examples of commercial use are distributing products for
146166Ssteve.reinhardt@amd.com# commercial advantage and providing services using the software for
156166Ssteve.reinhardt@amd.com# commercial advantage.
166166Ssteve.reinhardt@amd.com#
176166Ssteve.reinhardt@amd.com# If you wish to use this software or functionality therein that may be
186166Ssteve.reinhardt@amd.com# covered by patents for commercial use, please contact:
196166Ssteve.reinhardt@amd.com#     Director of Intellectual Property Licensing
206166Ssteve.reinhardt@amd.com#     Office of Strategy and Technology
216166Ssteve.reinhardt@amd.com#     Hewlett-Packard Company
226166Ssteve.reinhardt@amd.com#     1501 Page Mill Road
236166Ssteve.reinhardt@amd.com#     Palo Alto, California  94304
246166Ssteve.reinhardt@amd.com#
256166Ssteve.reinhardt@amd.com# Redistributions of source code must retain the above copyright notice,
266166Ssteve.reinhardt@amd.com# this list of conditions and the following disclaimer.  Redistributions
276166Ssteve.reinhardt@amd.com# in binary form must reproduce the above copyright notice, this list of
286166Ssteve.reinhardt@amd.com# conditions and the following disclaimer in the documentation and/or
296166Ssteve.reinhardt@amd.com# other materials provided with the distribution.  Neither the name of
306166Ssteve.reinhardt@amd.com# the COPYRIGHT HOLDER(s), HEWLETT-PACKARD COMPANY, nor the names of its
316166Ssteve.reinhardt@amd.com# contributors may be used to endorse or promote products derived from
326919SBrad.Beckmann@amd.com# this software without specific prior written permission.  No right of
336919SBrad.Beckmann@amd.com# sublicense is granted herewith.  Derivatives of the software and
346919SBrad.Beckmann@amd.com# output created using the software may be prepared, but only for
356166Ssteve.reinhardt@amd.com# Non-Commercial Uses.  Derivatives of the software may be shared with
366919SBrad.Beckmann@amd.com# others provided: (i) the others agree to abide by the list of
376919SBrad.Beckmann@amd.com# conditions herein which includes the Non-Commercial Use restrictions;
386919SBrad.Beckmann@amd.com# and (ii) such Derivatives of the software include the above copyright
396919SBrad.Beckmann@amd.com# notice to acknowledge the contribution from this software where
406919SBrad.Beckmann@amd.com# applicable, this list of conditions and the disclaimer below.
416919SBrad.Beckmann@amd.com#
426919SBrad.Beckmann@amd.com# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
436919SBrad.Beckmann@amd.com# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
446919SBrad.Beckmann@amd.com# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
456919SBrad.Beckmann@amd.com# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
466919SBrad.Beckmann@amd.com# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
476919SBrad.Beckmann@amd.com# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
486919SBrad.Beckmann@amd.com# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
496919SBrad.Beckmann@amd.com# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
506919SBrad.Beckmann@amd.com# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
517570SBrad.Beckmann@amd.com# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
526919SBrad.Beckmann@amd.com# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
537570SBrad.Beckmann@amd.com#
546919SBrad.Beckmann@amd.com# Authors: Gabe Black
556919SBrad.Beckmann@amd.com
566919SBrad.Beckmann@amd.commicrocode = '''
576919SBrad.Beckmann@amd.comdef macroop MOVAPS_XMM_M {
586166Ssteve.reinhardt@amd.com    # Check low address.
597570SBrad.Beckmann@amd.com    ldfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8
607570SBrad.Beckmann@amd.com    ldfp xmml, seg, sib, disp, dataSize=8
617570SBrad.Beckmann@amd.com};
627570SBrad.Beckmann@amd.com
637570SBrad.Beckmann@amd.comdef macroop MOVAPS_XMM_P {
647570SBrad.Beckmann@amd.com    rdip t7
657570SBrad.Beckmann@amd.com    # Check low address.
667570SBrad.Beckmann@amd.com    ldfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8
677570SBrad.Beckmann@amd.com    ldfp xmml, seg, riprel, disp, dataSize=8
687570SBrad.Beckmann@amd.com};
697570SBrad.Beckmann@amd.com
707570SBrad.Beckmann@amd.comdef macroop MOVAPS_M_XMM {
717570SBrad.Beckmann@amd.com    # Check low address.
726166Ssteve.reinhardt@amd.com    stfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8
736166Ssteve.reinhardt@amd.com    stfp xmml, seg, sib, disp, dataSize=8
746928SBrad.Beckmann@amd.com};
756928SBrad.Beckmann@amd.com
766928SBrad.Beckmann@amd.comdef macroop MOVAPS_P_XMM {
776928SBrad.Beckmann@amd.com    rdip t7
786928SBrad.Beckmann@amd.com    # Check low address.
796166Ssteve.reinhardt@amd.com    stfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8
806919SBrad.Beckmann@amd.com    stfp xmml, seg, riprel, disp, dataSize=8
816919SBrad.Beckmann@amd.com};
826919SBrad.Beckmann@amd.com
836919SBrad.Beckmann@amd.comdef macroop MOVAPS_XMM_XMM {
846919SBrad.Beckmann@amd.com    # Check low address.
856919SBrad.Beckmann@amd.com    movfp xmml, xmmlm, dataSize=8
866919SBrad.Beckmann@amd.com    movfp xmmh, xmmhm, dataSize=8
876289Snate@binkert.org};
887570SBrad.Beckmann@amd.com
896166Ssteve.reinhardt@amd.comdef macroop MOVAPD_XMM_XMM {
908322Ssteve.reinhardt@amd.com    movfp xmml, xmmlm, dataSize=8
916166Ssteve.reinhardt@amd.com    movfp xmmh, xmmhm, dataSize=8
928322Ssteve.reinhardt@amd.com};
936919SBrad.Beckmann@amd.com
946919SBrad.Beckmann@amd.comdef macroop MOVAPD_XMM_M {
956919SBrad.Beckmann@amd.com    ldfp xmml, seg, sib, "DISPLACEMENT", dataSize=8
966919SBrad.Beckmann@amd.com    ldfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8
976919SBrad.Beckmann@amd.com};
986919SBrad.Beckmann@amd.com
997938SBrad.Beckmann@amd.comdef macroop MOVAPD_XMM_P {
1007938SBrad.Beckmann@amd.com    rdip t7
1017938SBrad.Beckmann@amd.com    ldfp xmml, seg, riprel, "DISPLACEMENT", dataSize=8
1027938SBrad.Beckmann@amd.com    ldfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8
1037938SBrad.Beckmann@amd.com};
1047938SBrad.Beckmann@amd.com
1056166Ssteve.reinhardt@amd.comdef macroop MOVAPD_M_XMM {
1066166Ssteve.reinhardt@amd.com    stfp xmml, seg, sib, "DISPLACEMENT", dataSize=8
1076166Ssteve.reinhardt@amd.com    stfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8
1086166Ssteve.reinhardt@amd.com};
1096166Ssteve.reinhardt@amd.com
1106166Ssteve.reinhardt@amd.comdef macroop MOVAPD_P_XMM {
1116166Ssteve.reinhardt@amd.com    rdip t7
1126928SBrad.Beckmann@amd.com    stfp xmml, seg, riprel, "DISPLACEMENT", dataSize=8
1136928SBrad.Beckmann@amd.com    stfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8
1146928SBrad.Beckmann@amd.com};
115
116def macroop MOVUPS_XMM_XMM {
117    movfp xmml, xmmlm, dataSize=8
118    movfp xmmh, xmmhm, dataSize=8
119};
120
121def macroop MOVUPS_XMM_M {
122    ldfp xmml, seg, sib, "DISPLACEMENT", dataSize=8
123    ldfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8
124};
125
126def macroop MOVUPS_XMM_P {
127    rdip t7
128    ldfp xmml, seg, riprel, "DISPLACEMENT", dataSize=8
129    ldfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8
130};
131
132def macroop MOVUPS_M_XMM {
133    stfp xmml, seg, sib, "DISPLACEMENT", dataSize=8
134    stfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8
135};
136
137def macroop MOVUPS_P_XMM {
138    rdip t7
139    stfp xmml, seg, riprel, "DISPLACEMENT", dataSize=8
140    stfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8
141};
142
143def macroop MOVUPD_XMM_XMM {
144    movfp xmml, xmmlm, dataSize=8
145    movfp xmmh, xmmhm, dataSize=8
146};
147
148def macroop MOVUPD_XMM_M {
149    ldfp xmml, seg, sib, "DISPLACEMENT", dataSize=8
150    ldfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8
151};
152
153def macroop MOVUPD_XMM_P {
154    rdip t7
155    ldfp xmml, seg, riprel, "DISPLACEMENT", dataSize=8
156    ldfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8
157};
158
159def macroop MOVUPD_M_XMM {
160    stfp xmml, seg, sib, "DISPLACEMENT", dataSize=8
161    stfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8
162};
163
164def macroop MOVUPD_P_XMM {
165    rdip t7
166    stfp xmml, seg, riprel, "DISPLACEMENT", dataSize=8
167    stfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8
168};
169
170def macroop MOVHPS_XMM_M {
171    ldfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8
172};
173
174def macroop MOVHPS_XMM_P {
175    rdip t7
176    ldfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8
177};
178
179def macroop MOVHPS_M_XMM {
180    stfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8
181};
182
183def macroop MOVHPS_P_XMM {
184    rdip t7
185    stfp xmml, seg, riprel, "DISPLACEMENT", dataSize=8
186    stfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8
187};
188
189def macroop MOVHPD_XMM_M {
190    ldfp xmmh, seg, sib, disp, dataSize=8
191};
192
193def macroop MOVHPD_XMM_P {
194    rdip t7
195    ldfp xmmh, seg, riprel, disp, dataSize=8
196};
197
198def macroop MOVHPD_M_XMM {
199    stfp xmmh, seg, sib, disp, dataSize=8
200};
201
202def macroop MOVHPD_P_XMM {
203    rdip t7
204    stfp xmmh, seg, riprel, disp, dataSize=8
205};
206
207def macroop MOVLPS_XMM_M {
208    ldfp xmml, seg, sib, disp, dataSize=8
209};
210
211def macroop MOVLPS_XMM_P {
212    rdip t7
213    ldfp xmml, seg, riprel, disp, dataSize=8
214};
215
216def macroop MOVLPS_M_XMM {
217    stfp xmml, seg, sib, disp, dataSize=8
218};
219
220def macroop MOVLPS_P_XMM {
221    rdip t7
222    stfp xmml, seg, riprel, disp, dataSize=8
223};
224
225def macroop MOVLPD_XMM_M {
226    ldfp xmml, seg, sib, disp, dataSize=8
227};
228
229def macroop MOVLPD_XMM_P {
230    rdip t7
231    ldfp xmml, seg, riprel, disp, dataSize=8
232};
233
234def macroop MOVLPD_M_XMM {
235    stfp xmml, seg, sib, disp, dataSize=8
236};
237
238def macroop MOVLPD_P_XMM {
239    rdip t7
240    stfp xmml, seg, riprel, disp, dataSize=8
241};
242
243def macroop MOVHLPS_XMM_XMM {
244    movfp xmml, xmmhm, dataSize=8
245};
246
247def macroop MOVLHPS_XMM_XMM {
248    movfp xmmh, xmmlm, dataSize=8
249};
250
251def macroop MOVSS_XMM_XMM {
252    movfp xmml, xmmlm, dataSize=4
253};
254
255def macroop MOVSS_XMM_M {
256    lfpimm xmml, 0
257    lfpimm xmmh, 0
258    ldfp xmml, seg, sib, disp, dataSize=4
259};
260
261def macroop MOVSS_XMM_P {
262    rdip t7
263    lfpimm xmml, 0
264    lfpimm xmmh, 0
265    ldfp xmml, seg, riprel, disp, dataSize=4
266};
267
268def macroop MOVSS_M_XMM {
269    stfp xmml, seg, sib, disp, dataSize=4
270};
271
272def macroop MOVSS_P_XMM {
273    rdip t7
274    stfp xmml, seg, riprel, disp, dataSize=4
275};
276
277def macroop MOVSD_XMM_M {
278    # Zero xmmh
279    ldfp xmml, seg, sib, disp, dataSize=8
280};
281
282def macroop MOVSD_XMM_P {
283    rdip t7
284    # Zero xmmh
285    ldfp xmml, seg, riprel, disp, dataSize=8
286};
287
288def macroop MOVSD_M_XMM {
289    stfp xmml, seg, sib, disp, dataSize=8
290};
291
292def macroop MOVSD_P_XMM {
293    rdip t7
294    stfp xmml, seg, riprel, disp, dataSize=8
295};
296
297def macroop MOVSD_XMM_XMM {
298    movfp xmml, xmmlm, dataSize=8
299};
300'''
301