conditional_move.py revision 6482:e4b8ec60fd4b
12567SN/A# Copyright (c) 2007 The Hewlett-Packard Development Company
27585SAli.Saidi@arm.com# All rights reserved.
37585SAli.Saidi@arm.com#
47585SAli.Saidi@arm.com# Redistribution and use of this software in source and binary forms,
57585SAli.Saidi@arm.com# with or without modification, are permitted provided that the
67585SAli.Saidi@arm.com# following conditions are met:
77585SAli.Saidi@arm.com#
87585SAli.Saidi@arm.com# The software must be used only for Non-Commercial Use which means any
97585SAli.Saidi@arm.com# use which is NOT directed to receiving any direct monetary
107585SAli.Saidi@arm.com# compensation for, or commercial advantage from such use.  Illustrative
117585SAli.Saidi@arm.com# examples of non-commercial use are academic research, personal study,
127585SAli.Saidi@arm.com# teaching, education and corporate research & development.
137585SAli.Saidi@arm.com# Illustrative examples of commercial use are distributing products for
142567SN/A# commercial advantage and providing services using the software for
152567SN/A# commercial advantage.
162567SN/A#
172567SN/A# If you wish to use this software or functionality therein that may be
182567SN/A# covered by patents for commercial use, please contact:
192567SN/A#     Director of Intellectual Property Licensing
202567SN/A#     Office of Strategy and Technology
212567SN/A#     Hewlett-Packard Company
222567SN/A#     1501 Page Mill Road
232567SN/A#     Palo Alto, California  94304
242567SN/A#
252567SN/A# Redistributions of source code must retain the above copyright notice,
262567SN/A# this list of conditions and the following disclaimer.  Redistributions
272567SN/A# in binary form must reproduce the above copyright notice, this list of
282567SN/A# conditions and the following disclaimer in the documentation and/or
292567SN/A# other materials provided with the distribution.  Neither the name of
302567SN/A# the COPYRIGHT HOLDER(s), HEWLETT-PACKARD COMPANY, nor the names of its
312567SN/A# contributors may be used to endorse or promote products derived from
322567SN/A# this software without specific prior written permission.  No right of
332567SN/A# sublicense is granted herewith.  Derivatives of the software and
342567SN/A# output created using the software may be prepared, but only for
352567SN/A# Non-Commercial Uses.  Derivatives of the software may be shared with
362567SN/A# others provided: (i) the others agree to abide by the list of
372567SN/A# conditions herein which includes the Non-Commercial Use restrictions;
382567SN/A# and (ii) such Derivatives of the software include the above copyright
392665SN/A# notice to acknowledge the contribution from this software where
402665SN/A# applicable, this list of conditions and the disclaimer below.
412567SN/A#
422567SN/A# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
436757SAli.Saidi@ARM.com# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
447650SAli.Saidi@ARM.com# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
452567SN/A# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
467650SAli.Saidi@ARM.com# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
477650SAli.Saidi@ARM.com# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
482567SN/A# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
496757SAli.Saidi@ARM.com# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
506757SAli.Saidi@ARM.com# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
512567SN/A# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
527650SAli.Saidi@ARM.com# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
532567SN/A#
542567SN/A# Authors: Gabe Black
552567SN/A
566757SAli.Saidi@ARM.commicrocode = '''
572567SN/Adef macroop CMOVZ_R_R
587650SAli.Saidi@ARM.com{
592567SN/A    mov reg, reg, reg, flags=(nCZF,)
602567SN/A    mov reg, reg, regm, flags=(CZF,)
616757SAli.Saidi@ARM.com};
626757SAli.Saidi@ARM.com
636757SAli.Saidi@ARM.comdef macroop CMOVZ_R_M
642567SN/A{
656757SAli.Saidi@ARM.com    ld t1, seg, sib, disp
662567SN/A    mov reg, reg, reg, flags=(nCZF,)
67    mov reg, reg, t1, flags=(CZF,)
68};
69
70def macroop CMOVZ_R_P
71{
72    rdip t7
73    ld t1, seg, riprel, disp
74    mov reg, reg, reg, flags=(nCZF,)
75    mov reg, reg, t1, flags=(CZF,)
76};
77
78def macroop CMOVNZ_R_R
79{
80    mov reg, reg, reg, flags=(CZF,)
81    mov reg, reg, regm, flags=(nCZF,)
82};
83
84def macroop CMOVNZ_R_M
85{
86    ld t1, seg, sib, disp
87    mov reg, reg, reg, flags=(CZF,)
88    mov reg, reg, t1, flags=(nCZF,)
89};
90
91def macroop CMOVNZ_R_P
92{
93    rdip t7
94    ld t1, seg, riprel, disp
95    mov reg, reg, reg, flags=(CZF,)
96    mov reg, reg, t1, flags=(nCZF,)
97};
98
99def macroop CMOVB_R_R
100{
101    mov reg, reg, reg, flags=(nCCF,)
102    mov reg, reg, regm, flags=(CCF,)
103};
104
105def macroop CMOVB_R_M
106{
107    ld t1, seg, sib, disp
108    mov reg, reg, reg, flags=(nCCF,)
109    mov reg, reg, t1, flags=(CCF,)
110};
111
112def macroop CMOVB_R_P
113{
114    rdip t7
115    ld t1, seg, riprel, disp
116    mov reg, reg, reg, flags=(nCCF,)
117    mov reg, reg, t1, flags=(CCF,)
118};
119
120def macroop CMOVNB_R_R
121{
122    mov reg, reg, reg, flags=(CCF,)
123    mov reg, reg, regm, flags=(nCCF,)
124};
125
126def macroop CMOVNB_R_M
127{
128    ld t1, seg, sib, disp
129    mov reg, reg, reg, flags=(CCF,)
130    mov reg, reg, t1, flags=(nCCF,)
131};
132
133def macroop CMOVNB_R_P
134{
135    rdip t7
136    ld t1, seg, riprel, disp
137    mov reg, reg, reg, flags=(CCF,)
138    mov reg, reg, t1, flags=(nCCF,)
139};
140
141def macroop CMOVBE_R_R
142{
143    mov reg, reg, reg, flags=(nCCvZF,)
144    mov reg, reg, regm, flags=(CCvZF,)
145};
146
147def macroop CMOVBE_R_M
148{
149    ld t1, seg, sib, disp
150    mov reg, reg, reg, flags=(nCCvZF,)
151    mov reg, reg, t1, flags=(CCvZF,)
152};
153
154def macroop CMOVBE_R_P
155{
156    rdip t7
157    ld t1, seg, riprel, disp
158    mov reg, reg, reg, flags=(nCCvZF,)
159    mov reg, reg, t1, flags=(CCvZF,)
160};
161
162def macroop CMOVNBE_R_R
163{
164    mov reg, reg, reg, flags=(CCvZF,)
165    mov reg, reg, regm, flags=(nCCvZF,)
166};
167
168def macroop CMOVNBE_R_M
169{
170    ld t1, seg, sib, disp
171    mov reg, reg, reg, flags=(CCvZF,)
172    mov reg, reg, t1, flags=(nCCvZF,)
173};
174
175def macroop CMOVNBE_R_P
176{
177    rdip t7
178    ld t1, seg, riprel, disp
179    mov reg, reg, reg, flags=(CCvZF,)
180    mov reg, reg, t1, flags=(nCCvZF,)
181};
182
183def macroop CMOVS_R_R
184{
185    mov reg, reg, reg, flags=(nCSF,)
186    mov reg, reg, regm, flags=(CSF,)
187};
188
189def macroop CMOVS_R_M
190{
191    ld t1, seg, sib, disp
192    mov reg, reg, reg, flags=(nCSF,)
193    mov reg, reg, t1, flags=(CSF,)
194};
195
196def macroop CMOVS_R_P
197{
198    rdip t7
199    ld t1, seg, riprel, disp
200    mov reg, reg, reg, flags=(nCSF,)
201    mov reg, reg, t1, flags=(CSF,)
202};
203
204def macroop CMOVNS_R_R
205{
206    mov reg, reg, reg, flags=(CSF,)
207    mov reg, reg, regm, flags=(nCSF,)
208};
209
210def macroop CMOVNS_R_M
211{
212    ld t1, seg, sib, disp
213    mov reg, reg, reg, flags=(CSF,)
214    mov reg, reg, t1, flags=(nCSF,)
215};
216
217def macroop CMOVNS_R_P
218{
219    rdip t7
220    ld t1, seg, riprel, disp
221    mov reg, reg, reg, flags=(CSF,)
222    mov reg, reg, t1, flags=(nCSF,)
223};
224
225def macroop CMOVP_R_R
226{
227    mov reg, reg, reg, flags=(nCPF,)
228    mov reg, reg, regm, flags=(CPF,)
229};
230
231def macroop CMOVP_R_M
232{
233    ld t1, seg, sib, disp
234    mov reg, reg, reg, flags=(nCPF,)
235    mov reg, reg, t1, flags=(CPF,)
236};
237
238def macroop CMOVP_R_P
239{
240    rdip t7
241    ld t1, seg, riprel, disp
242    mov reg, reg, reg, flags=(nCPF,)
243    mov reg, reg, t1, flags=(CPF,)
244};
245
246def macroop CMOVNP_R_R
247{
248    mov reg, reg, reg, flags=(CPF,)
249    mov reg, reg, regm, flags=(nCPF,)
250};
251
252def macroop CMOVNP_R_M
253{
254    ld t1, seg, sib, disp
255    mov reg, reg, reg, flags=(CPF,)
256    mov reg, reg, t1, flags=(nCPF,)
257};
258
259def macroop CMOVNP_R_P
260{
261    rdip t7
262    ld t1, seg, riprel, disp
263    mov reg, reg, reg, flags=(CPF,)
264    mov reg, reg, t1, flags=(nCPF,)
265};
266
267def macroop CMOVL_R_R
268{
269    mov reg, reg, reg, flags=(nCSxOF,)
270    mov reg, reg, regm, flags=(CSxOF,)
271};
272
273def macroop CMOVL_R_M
274{
275    ld t1, seg, sib, disp
276    mov reg, reg, reg, flags=(nCSxOF,)
277    mov reg, reg, t1, flags=(CSxOF,)
278};
279
280def macroop CMOVL_R_P
281{
282    rdip t7
283    ld t1, seg, riprel, disp
284    mov reg, reg, reg, flags=(nCSxOF,)
285    mov reg, reg, t1, flags=(CSxOF,)
286};
287
288def macroop CMOVNL_R_R
289{
290    mov reg, reg, reg, flags=(CSxOF,)
291    mov reg, reg, regm, flags=(nCSxOF,)
292};
293
294def macroop CMOVNL_R_M
295{
296    ld t1, seg, sib, disp
297    mov reg, reg, reg, flags=(CSxOF,)
298    mov reg, reg, t1, flags=(nCSxOF,)
299};
300
301def macroop CMOVNL_R_P
302{
303    rdip t7
304    ld t1, seg, riprel, disp
305    mov reg, reg, reg, flags=(CSxOF,)
306    mov reg, reg, t1, flags=(nCSxOF,)
307};
308
309def macroop CMOVLE_R_R
310{
311    mov reg, reg, reg, flags=(nCSxOvZF,)
312    mov reg, reg, regm, flags=(CSxOvZF,)
313};
314
315def macroop CMOVLE_R_M
316{
317    ld t1, seg, sib, disp
318    mov reg, reg, reg, flags=(nCSxOvZF,)
319    mov reg, reg, t1, flags=(CSxOvZF,)
320};
321
322def macroop CMOVLE_R_P
323{
324    rdip t7
325    ld t1, seg, riprel, disp
326    mov reg, reg, reg, flags=(nCSxOvZF,)
327    mov reg, reg, t1, flags=(CSxOvZF,)
328};
329
330def macroop CMOVNLE_R_R
331{
332    mov reg, reg, reg, flags=(CSxOvZF,)
333    mov reg, reg, regm, flags=(nCSxOvZF,)
334};
335
336def macroop CMOVNLE_R_M
337{
338    ld t1, seg, sib, disp
339    mov reg, reg, reg, flags=(CSxOvZF,)
340    mov reg, reg, t1, flags=(nCSxOvZF,)
341};
342
343def macroop CMOVNLE_R_P
344{
345    rdip t7
346    ld t1, seg, riprel, disp
347    mov reg, reg, reg, flags=(CSxOvZF,)
348    mov reg, reg, t1, flags=(nCSxOvZF,)
349};
350
351def macroop CMOVO_R_R
352{
353    mov reg, reg, reg, flags=(nCOF,)
354    mov reg, reg, regm, flags=(COF,)
355};
356
357def macroop CMOVO_R_M
358{
359    ld t1, seg, sib, disp
360    mov reg, reg, reg, flags=(nCOF,)
361    mov reg, reg, t1, flags=(COF,)
362};
363
364def macroop CMOVO_R_P
365{
366    rdip t7
367    ld t1, seg, riprel, disp
368    mov reg, reg, reg, flags=(nCOF,)
369    mov reg, reg, t1, flags=(COF,)
370};
371
372def macroop CMOVNO_R_R
373{
374    mov reg, reg, reg, flags=(COF,)
375    mov reg, reg, regm, flags=(nCOF,)
376};
377
378def macroop CMOVNO_R_M
379{
380    ld t1, seg, sib, disp
381    mov reg, reg, reg, flags=(COF,)
382    mov reg, reg, t1, flags=(nCOF,)
383};
384
385def macroop CMOVNO_R_P
386{
387    rdip t7
388    ld t1, seg, riprel, disp
389    mov reg, reg, reg, flags=(COF,)
390    mov reg, reg, t1, flags=(nCOF,)
391};
392'''
393