i386: Check for reserved VEX.vvvv and EVEX.vvvv
[external/binutils.git] / gas / testsuite / gas / i386 / hle.s
1 # Check 32bit HLE instructions
2
3         .allow_index_reg
4         .text
5 _start:
6
7 # Tests for op imm8 regb/m8
8         xacquire lock adcb $100,(%ecx)
9         lock xacquire adcb $100,(%ecx)
10         xrelease lock adcb $100,(%ecx)
11         lock xrelease adcb $100,(%ecx)
12         .byte 0xf0; .byte 0xf2; adcb $100,(%ecx)
13         .byte 0xf0; .byte 0xf3; adcb $100,(%ecx)
14         xacquire lock addb $100,(%ecx)
15         lock xacquire addb $100,(%ecx)
16         xrelease lock addb $100,(%ecx)
17         lock xrelease addb $100,(%ecx)
18         .byte 0xf0; .byte 0xf2; addb $100,(%ecx)
19         .byte 0xf0; .byte 0xf3; addb $100,(%ecx)
20         xacquire lock andb $100,(%ecx)
21         lock xacquire andb $100,(%ecx)
22         xrelease lock andb $100,(%ecx)
23         lock xrelease andb $100,(%ecx)
24         .byte 0xf0; .byte 0xf2; andb $100,(%ecx)
25         .byte 0xf0; .byte 0xf3; andb $100,(%ecx)
26         xrelease movb $100,(%ecx)
27         xacquire lock orb $100,(%ecx)
28         lock xacquire orb $100,(%ecx)
29         xrelease lock orb $100,(%ecx)
30         lock xrelease orb $100,(%ecx)
31         .byte 0xf0; .byte 0xf2; orb $100,(%ecx)
32         .byte 0xf0; .byte 0xf3; orb $100,(%ecx)
33         xacquire lock sbbb $100,(%ecx)
34         lock xacquire sbbb $100,(%ecx)
35         xrelease lock sbbb $100,(%ecx)
36         lock xrelease sbbb $100,(%ecx)
37         .byte 0xf0; .byte 0xf2; sbbb $100,(%ecx)
38         .byte 0xf0; .byte 0xf3; sbbb $100,(%ecx)
39         xacquire lock subb $100,(%ecx)
40         lock xacquire subb $100,(%ecx)
41         xrelease lock subb $100,(%ecx)
42         lock xrelease subb $100,(%ecx)
43         .byte 0xf0; .byte 0xf2; subb $100,(%ecx)
44         .byte 0xf0; .byte 0xf3; subb $100,(%ecx)
45         xacquire lock xorb $100,(%ecx)
46         lock xacquire xorb $100,(%ecx)
47         xrelease lock xorb $100,(%ecx)
48         lock xrelease xorb $100,(%ecx)
49         .byte 0xf0; .byte 0xf2; xorb $100,(%ecx)
50         .byte 0xf0; .byte 0xf3; xorb $100,(%ecx)
51
52 # Tests for op imm16 regs/m16
53         xacquire lock adcw $1000,(%ecx)
54         lock xacquire adcw $1000,(%ecx)
55         xrelease lock adcw $1000,(%ecx)
56         lock xrelease adcw $1000,(%ecx)
57         .byte 0xf0; .byte 0xf2; adcw $1000,(%ecx)
58         .byte 0xf0; .byte 0xf3; adcw $1000,(%ecx)
59         xacquire lock addw $1000,(%ecx)
60         lock xacquire addw $1000,(%ecx)
61         xrelease lock addw $1000,(%ecx)
62         lock xrelease addw $1000,(%ecx)
63         .byte 0xf0; .byte 0xf2; addw $1000,(%ecx)
64         .byte 0xf0; .byte 0xf3; addw $1000,(%ecx)
65         xacquire lock andw $1000,(%ecx)
66         lock xacquire andw $1000,(%ecx)
67         xrelease lock andw $1000,(%ecx)
68         lock xrelease andw $1000,(%ecx)
69         .byte 0xf0; .byte 0xf2; andw $1000,(%ecx)
70         .byte 0xf0; .byte 0xf3; andw $1000,(%ecx)
71         xrelease movw $1000,(%ecx)
72         xacquire lock orw $1000,(%ecx)
73         lock xacquire orw $1000,(%ecx)
74         xrelease lock orw $1000,(%ecx)
75         lock xrelease orw $1000,(%ecx)
76         .byte 0xf0; .byte 0xf2; orw $1000,(%ecx)
77         .byte 0xf0; .byte 0xf3; orw $1000,(%ecx)
78         xacquire lock sbbw $1000,(%ecx)
79         lock xacquire sbbw $1000,(%ecx)
80         xrelease lock sbbw $1000,(%ecx)
81         lock xrelease sbbw $1000,(%ecx)
82         .byte 0xf0; .byte 0xf2; sbbw $1000,(%ecx)
83         .byte 0xf0; .byte 0xf3; sbbw $1000,(%ecx)
84         xacquire lock subw $1000,(%ecx)
85         lock xacquire subw $1000,(%ecx)
86         xrelease lock subw $1000,(%ecx)
87         lock xrelease subw $1000,(%ecx)
88         .byte 0xf0; .byte 0xf2; subw $1000,(%ecx)
89         .byte 0xf0; .byte 0xf3; subw $1000,(%ecx)
90         xacquire lock xorw $1000,(%ecx)
91         lock xacquire xorw $1000,(%ecx)
92         xrelease lock xorw $1000,(%ecx)
93         lock xrelease xorw $1000,(%ecx)
94         .byte 0xf0; .byte 0xf2; xorw $1000,(%ecx)
95         .byte 0xf0; .byte 0xf3; xorw $1000,(%ecx)
96
97 # Tests for op imm32 regl/m32
98         xacquire lock adcl $10000000,(%ecx)
99         lock xacquire adcl $10000000,(%ecx)
100         xrelease lock adcl $10000000,(%ecx)
101         lock xrelease adcl $10000000,(%ecx)
102         .byte 0xf0; .byte 0xf2; adcl $10000000,(%ecx)
103         .byte 0xf0; .byte 0xf3; adcl $10000000,(%ecx)
104         xacquire lock addl $10000000,(%ecx)
105         lock xacquire addl $10000000,(%ecx)
106         xrelease lock addl $10000000,(%ecx)
107         lock xrelease addl $10000000,(%ecx)
108         .byte 0xf0; .byte 0xf2; addl $10000000,(%ecx)
109         .byte 0xf0; .byte 0xf3; addl $10000000,(%ecx)
110         xacquire lock andl $10000000,(%ecx)
111         lock xacquire andl $10000000,(%ecx)
112         xrelease lock andl $10000000,(%ecx)
113         lock xrelease andl $10000000,(%ecx)
114         .byte 0xf0; .byte 0xf2; andl $10000000,(%ecx)
115         .byte 0xf0; .byte 0xf3; andl $10000000,(%ecx)
116         xrelease movl $10000000,(%ecx)
117         xacquire lock orl $10000000,(%ecx)
118         lock xacquire orl $10000000,(%ecx)
119         xrelease lock orl $10000000,(%ecx)
120         lock xrelease orl $10000000,(%ecx)
121         .byte 0xf0; .byte 0xf2; orl $10000000,(%ecx)
122         .byte 0xf0; .byte 0xf3; orl $10000000,(%ecx)
123         xacquire lock sbbl $10000000,(%ecx)
124         lock xacquire sbbl $10000000,(%ecx)
125         xrelease lock sbbl $10000000,(%ecx)
126         lock xrelease sbbl $10000000,(%ecx)
127         .byte 0xf0; .byte 0xf2; sbbl $10000000,(%ecx)
128         .byte 0xf0; .byte 0xf3; sbbl $10000000,(%ecx)
129         xacquire lock subl $10000000,(%ecx)
130         lock xacquire subl $10000000,(%ecx)
131         xrelease lock subl $10000000,(%ecx)
132         lock xrelease subl $10000000,(%ecx)
133         .byte 0xf0; .byte 0xf2; subl $10000000,(%ecx)
134         .byte 0xf0; .byte 0xf3; subl $10000000,(%ecx)
135         xacquire lock xorl $10000000,(%ecx)
136         lock xacquire xorl $10000000,(%ecx)
137         xrelease lock xorl $10000000,(%ecx)
138         lock xrelease xorl $10000000,(%ecx)
139         .byte 0xf0; .byte 0xf2; xorl $10000000,(%ecx)
140         .byte 0xf0; .byte 0xf3; xorl $10000000,(%ecx)
141
142 # Tests for op imm8 regs/m16
143         xacquire lock adcw $100,(%ecx)
144         lock xacquire adcw $100,(%ecx)
145         xrelease lock adcw $100,(%ecx)
146         lock xrelease adcw $100,(%ecx)
147         .byte 0xf0; .byte 0xf2; adcw $100,(%ecx)
148         .byte 0xf0; .byte 0xf3; adcw $100,(%ecx)
149         xacquire lock addw $100,(%ecx)
150         lock xacquire addw $100,(%ecx)
151         xrelease lock addw $100,(%ecx)
152         lock xrelease addw $100,(%ecx)
153         .byte 0xf0; .byte 0xf2; addw $100,(%ecx)
154         .byte 0xf0; .byte 0xf3; addw $100,(%ecx)
155         xacquire lock andw $100,(%ecx)
156         lock xacquire andw $100,(%ecx)
157         xrelease lock andw $100,(%ecx)
158         lock xrelease andw $100,(%ecx)
159         .byte 0xf0; .byte 0xf2; andw $100,(%ecx)
160         .byte 0xf0; .byte 0xf3; andw $100,(%ecx)
161         xacquire lock btcw $100,(%ecx)
162         lock xacquire btcw $100,(%ecx)
163         xrelease lock btcw $100,(%ecx)
164         lock xrelease btcw $100,(%ecx)
165         .byte 0xf0; .byte 0xf2; btcw $100,(%ecx)
166         .byte 0xf0; .byte 0xf3; btcw $100,(%ecx)
167         xacquire lock btrw $100,(%ecx)
168         lock xacquire btrw $100,(%ecx)
169         xrelease lock btrw $100,(%ecx)
170         lock xrelease btrw $100,(%ecx)
171         .byte 0xf0; .byte 0xf2; btrw $100,(%ecx)
172         .byte 0xf0; .byte 0xf3; btrw $100,(%ecx)
173         xacquire lock btsw $100,(%ecx)
174         lock xacquire btsw $100,(%ecx)
175         xrelease lock btsw $100,(%ecx)
176         lock xrelease btsw $100,(%ecx)
177         .byte 0xf0; .byte 0xf2; btsw $100,(%ecx)
178         .byte 0xf0; .byte 0xf3; btsw $100,(%ecx)
179         xrelease movw $100,(%ecx)
180         xacquire lock orw $100,(%ecx)
181         lock xacquire orw $100,(%ecx)
182         xrelease lock orw $100,(%ecx)
183         lock xrelease orw $100,(%ecx)
184         .byte 0xf0; .byte 0xf2; orw $100,(%ecx)
185         .byte 0xf0; .byte 0xf3; orw $100,(%ecx)
186         xacquire lock sbbw $100,(%ecx)
187         lock xacquire sbbw $100,(%ecx)
188         xrelease lock sbbw $100,(%ecx)
189         lock xrelease sbbw $100,(%ecx)
190         .byte 0xf0; .byte 0xf2; sbbw $100,(%ecx)
191         .byte 0xf0; .byte 0xf3; sbbw $100,(%ecx)
192         xacquire lock subw $100,(%ecx)
193         lock xacquire subw $100,(%ecx)
194         xrelease lock subw $100,(%ecx)
195         lock xrelease subw $100,(%ecx)
196         .byte 0xf0; .byte 0xf2; subw $100,(%ecx)
197         .byte 0xf0; .byte 0xf3; subw $100,(%ecx)
198         xacquire lock xorw $100,(%ecx)
199         lock xacquire xorw $100,(%ecx)
200         xrelease lock xorw $100,(%ecx)
201         lock xrelease xorw $100,(%ecx)
202         .byte 0xf0; .byte 0xf2; xorw $100,(%ecx)
203         .byte 0xf0; .byte 0xf3; xorw $100,(%ecx)
204
205 # Tests for op imm8 regl/m32
206         xacquire lock adcl $100,(%ecx)
207         lock xacquire adcl $100,(%ecx)
208         xrelease lock adcl $100,(%ecx)
209         lock xrelease adcl $100,(%ecx)
210         .byte 0xf0; .byte 0xf2; adcl $100,(%ecx)
211         .byte 0xf0; .byte 0xf3; adcl $100,(%ecx)
212         xacquire lock addl $100,(%ecx)
213         lock xacquire addl $100,(%ecx)
214         xrelease lock addl $100,(%ecx)
215         lock xrelease addl $100,(%ecx)
216         .byte 0xf0; .byte 0xf2; addl $100,(%ecx)
217         .byte 0xf0; .byte 0xf3; addl $100,(%ecx)
218         xacquire lock andl $100,(%ecx)
219         lock xacquire andl $100,(%ecx)
220         xrelease lock andl $100,(%ecx)
221         lock xrelease andl $100,(%ecx)
222         .byte 0xf0; .byte 0xf2; andl $100,(%ecx)
223         .byte 0xf0; .byte 0xf3; andl $100,(%ecx)
224         xacquire lock btcl $100,(%ecx)
225         lock xacquire btcl $100,(%ecx)
226         xrelease lock btcl $100,(%ecx)
227         lock xrelease btcl $100,(%ecx)
228         .byte 0xf0; .byte 0xf2; btcl $100,(%ecx)
229         .byte 0xf0; .byte 0xf3; btcl $100,(%ecx)
230         xacquire lock btrl $100,(%ecx)
231         lock xacquire btrl $100,(%ecx)
232         xrelease lock btrl $100,(%ecx)
233         lock xrelease btrl $100,(%ecx)
234         .byte 0xf0; .byte 0xf2; btrl $100,(%ecx)
235         .byte 0xf0; .byte 0xf3; btrl $100,(%ecx)
236         xacquire lock btsl $100,(%ecx)
237         lock xacquire btsl $100,(%ecx)
238         xrelease lock btsl $100,(%ecx)
239         lock xrelease btsl $100,(%ecx)
240         .byte 0xf0; .byte 0xf2; btsl $100,(%ecx)
241         .byte 0xf0; .byte 0xf3; btsl $100,(%ecx)
242         xrelease movl $100,(%ecx)
243         xacquire lock orl $100,(%ecx)
244         lock xacquire orl $100,(%ecx)
245         xrelease lock orl $100,(%ecx)
246         lock xrelease orl $100,(%ecx)
247         .byte 0xf0; .byte 0xf2; orl $100,(%ecx)
248         .byte 0xf0; .byte 0xf3; orl $100,(%ecx)
249         xacquire lock sbbl $100,(%ecx)
250         lock xacquire sbbl $100,(%ecx)
251         xrelease lock sbbl $100,(%ecx)
252         lock xrelease sbbl $100,(%ecx)
253         .byte 0xf0; .byte 0xf2; sbbl $100,(%ecx)
254         .byte 0xf0; .byte 0xf3; sbbl $100,(%ecx)
255         xacquire lock subl $100,(%ecx)
256         lock xacquire subl $100,(%ecx)
257         xrelease lock subl $100,(%ecx)
258         lock xrelease subl $100,(%ecx)
259         .byte 0xf0; .byte 0xf2; subl $100,(%ecx)
260         .byte 0xf0; .byte 0xf3; subl $100,(%ecx)
261         xacquire lock xorl $100,(%ecx)
262         lock xacquire xorl $100,(%ecx)
263         xrelease lock xorl $100,(%ecx)
264         lock xrelease xorl $100,(%ecx)
265         .byte 0xf0; .byte 0xf2; xorl $100,(%ecx)
266         .byte 0xf0; .byte 0xf3; xorl $100,(%ecx)
267
268 # Tests for op imm8 regb/m8
269         xacquire lock adcb $100,(%ecx)
270         lock xacquire adcb $100,(%ecx)
271         xrelease lock adcb $100,(%ecx)
272         lock xrelease adcb $100,(%ecx)
273         .byte 0xf0; .byte 0xf2; adcb $100,(%ecx)
274         .byte 0xf0; .byte 0xf3; adcb $100,(%ecx)
275         xacquire lock addb $100,(%ecx)
276         lock xacquire addb $100,(%ecx)
277         xrelease lock addb $100,(%ecx)
278         lock xrelease addb $100,(%ecx)
279         .byte 0xf0; .byte 0xf2; addb $100,(%ecx)
280         .byte 0xf0; .byte 0xf3; addb $100,(%ecx)
281         xacquire lock andb $100,(%ecx)
282         lock xacquire andb $100,(%ecx)
283         xrelease lock andb $100,(%ecx)
284         lock xrelease andb $100,(%ecx)
285         .byte 0xf0; .byte 0xf2; andb $100,(%ecx)
286         .byte 0xf0; .byte 0xf3; andb $100,(%ecx)
287         xrelease movb $100,(%ecx)
288         xacquire lock orb $100,(%ecx)
289         lock xacquire orb $100,(%ecx)
290         xrelease lock orb $100,(%ecx)
291         lock xrelease orb $100,(%ecx)
292         .byte 0xf0; .byte 0xf2; orb $100,(%ecx)
293         .byte 0xf0; .byte 0xf3; orb $100,(%ecx)
294         xacquire lock sbbb $100,(%ecx)
295         lock xacquire sbbb $100,(%ecx)
296         xrelease lock sbbb $100,(%ecx)
297         lock xrelease sbbb $100,(%ecx)
298         .byte 0xf0; .byte 0xf2; sbbb $100,(%ecx)
299         .byte 0xf0; .byte 0xf3; sbbb $100,(%ecx)
300         xacquire lock subb $100,(%ecx)
301         lock xacquire subb $100,(%ecx)
302         xrelease lock subb $100,(%ecx)
303         lock xrelease subb $100,(%ecx)
304         .byte 0xf0; .byte 0xf2; subb $100,(%ecx)
305         .byte 0xf0; .byte 0xf3; subb $100,(%ecx)
306         xacquire lock xorb $100,(%ecx)
307         lock xacquire xorb $100,(%ecx)
308         xrelease lock xorb $100,(%ecx)
309         lock xrelease xorb $100,(%ecx)
310         .byte 0xf0; .byte 0xf2; xorb $100,(%ecx)
311         .byte 0xf0; .byte 0xf3; xorb $100,(%ecx)
312
313 # Tests for op regb regb/m8
314 # Tests for op regb/m8 regb
315         xacquire lock adcb %al,(%ecx)
316         lock xacquire adcb %al,(%ecx)
317         xrelease lock adcb %al,(%ecx)
318         lock xrelease adcb %al,(%ecx)
319         .byte 0xf0; .byte 0xf2; adcb %al,(%ecx)
320         .byte 0xf0; .byte 0xf3; adcb %al,(%ecx)
321         xacquire lock addb %al,(%ecx)
322         lock xacquire addb %al,(%ecx)
323         xrelease lock addb %al,(%ecx)
324         lock xrelease addb %al,(%ecx)
325         .byte 0xf0; .byte 0xf2; addb %al,(%ecx)
326         .byte 0xf0; .byte 0xf3; addb %al,(%ecx)
327         xacquire lock andb %al,(%ecx)
328         lock xacquire andb %al,(%ecx)
329         xrelease lock andb %al,(%ecx)
330         lock xrelease andb %al,(%ecx)
331         .byte 0xf0; .byte 0xf2; andb %al,(%ecx)
332         .byte 0xf0; .byte 0xf3; andb %al,(%ecx)
333         xrelease movb %al,(%ecx)
334         xrelease movb %al,0x12345678
335         xacquire lock orb %al,(%ecx)
336         lock xacquire orb %al,(%ecx)
337         xrelease lock orb %al,(%ecx)
338         lock xrelease orb %al,(%ecx)
339         .byte 0xf0; .byte 0xf2; orb %al,(%ecx)
340         .byte 0xf0; .byte 0xf3; orb %al,(%ecx)
341         xacquire lock sbbb %al,(%ecx)
342         lock xacquire sbbb %al,(%ecx)
343         xrelease lock sbbb %al,(%ecx)
344         lock xrelease sbbb %al,(%ecx)
345         .byte 0xf0; .byte 0xf2; sbbb %al,(%ecx)
346         .byte 0xf0; .byte 0xf3; sbbb %al,(%ecx)
347         xacquire lock subb %al,(%ecx)
348         lock xacquire subb %al,(%ecx)
349         xrelease lock subb %al,(%ecx)
350         lock xrelease subb %al,(%ecx)
351         .byte 0xf0; .byte 0xf2; subb %al,(%ecx)
352         .byte 0xf0; .byte 0xf3; subb %al,(%ecx)
353         xacquire lock xchgb %al,(%ecx)
354         lock xacquire xchgb %al,(%ecx)
355         xacquire xchgb %al,(%ecx)
356         xrelease lock xchgb %al,(%ecx)
357         lock xrelease xchgb %al,(%ecx)
358         xrelease xchgb %al,(%ecx)
359         .byte 0xf0; .byte 0xf2; xchgb %al,(%ecx)
360         .byte 0xf0; .byte 0xf3; xchgb %al,(%ecx)
361         xacquire lock xorb %al,(%ecx)
362         lock xacquire xorb %al,(%ecx)
363         xrelease lock xorb %al,(%ecx)
364         lock xrelease xorb %al,(%ecx)
365         .byte 0xf0; .byte 0xf2; xorb %al,(%ecx)
366         .byte 0xf0; .byte 0xf3; xorb %al,(%ecx)
367
368 # Tests for op regs regs/m16
369 # Tests for op regs/m16 regs
370         xacquire lock adcw %ax,(%ecx)
371         lock xacquire adcw %ax,(%ecx)
372         xrelease lock adcw %ax,(%ecx)
373         lock xrelease adcw %ax,(%ecx)
374         .byte 0xf0; .byte 0xf2; adcw %ax,(%ecx)
375         .byte 0xf0; .byte 0xf3; adcw %ax,(%ecx)
376         xacquire lock addw %ax,(%ecx)
377         lock xacquire addw %ax,(%ecx)
378         xrelease lock addw %ax,(%ecx)
379         lock xrelease addw %ax,(%ecx)
380         .byte 0xf0; .byte 0xf2; addw %ax,(%ecx)
381         .byte 0xf0; .byte 0xf3; addw %ax,(%ecx)
382         xacquire lock andw %ax,(%ecx)
383         lock xacquire andw %ax,(%ecx)
384         xrelease lock andw %ax,(%ecx)
385         lock xrelease andw %ax,(%ecx)
386         .byte 0xf0; .byte 0xf2; andw %ax,(%ecx)
387         .byte 0xf0; .byte 0xf3; andw %ax,(%ecx)
388         xrelease movw %ax,(%ecx)
389         xrelease movw %ax,0x12345678
390         xacquire lock orw %ax,(%ecx)
391         lock xacquire orw %ax,(%ecx)
392         xrelease lock orw %ax,(%ecx)
393         lock xrelease orw %ax,(%ecx)
394         .byte 0xf0; .byte 0xf2; orw %ax,(%ecx)
395         .byte 0xf0; .byte 0xf3; orw %ax,(%ecx)
396         xacquire lock sbbw %ax,(%ecx)
397         lock xacquire sbbw %ax,(%ecx)
398         xrelease lock sbbw %ax,(%ecx)
399         lock xrelease sbbw %ax,(%ecx)
400         .byte 0xf0; .byte 0xf2; sbbw %ax,(%ecx)
401         .byte 0xf0; .byte 0xf3; sbbw %ax,(%ecx)
402         xacquire lock subw %ax,(%ecx)
403         lock xacquire subw %ax,(%ecx)
404         xrelease lock subw %ax,(%ecx)
405         lock xrelease subw %ax,(%ecx)
406         .byte 0xf0; .byte 0xf2; subw %ax,(%ecx)
407         .byte 0xf0; .byte 0xf3; subw %ax,(%ecx)
408         xacquire lock xchgw %ax,(%ecx)
409         lock xacquire xchgw %ax,(%ecx)
410         xacquire xchgw %ax,(%ecx)
411         xrelease lock xchgw %ax,(%ecx)
412         lock xrelease xchgw %ax,(%ecx)
413         xrelease xchgw %ax,(%ecx)
414         .byte 0xf0; .byte 0xf2; xchgw %ax,(%ecx)
415         .byte 0xf0; .byte 0xf3; xchgw %ax,(%ecx)
416         xacquire lock xorw %ax,(%ecx)
417         lock xacquire xorw %ax,(%ecx)
418         xrelease lock xorw %ax,(%ecx)
419         lock xrelease xorw %ax,(%ecx)
420         .byte 0xf0; .byte 0xf2; xorw %ax,(%ecx)
421         .byte 0xf0; .byte 0xf3; xorw %ax,(%ecx)
422
423 # Tests for op regl regl/m32
424 # Tests for op regl/m32 regl
425         xacquire lock adcl %eax,(%ecx)
426         lock xacquire adcl %eax,(%ecx)
427         xrelease lock adcl %eax,(%ecx)
428         lock xrelease adcl %eax,(%ecx)
429         .byte 0xf0; .byte 0xf2; adcl %eax,(%ecx)
430         .byte 0xf0; .byte 0xf3; adcl %eax,(%ecx)
431         xacquire lock addl %eax,(%ecx)
432         lock xacquire addl %eax,(%ecx)
433         xrelease lock addl %eax,(%ecx)
434         lock xrelease addl %eax,(%ecx)
435         .byte 0xf0; .byte 0xf2; addl %eax,(%ecx)
436         .byte 0xf0; .byte 0xf3; addl %eax,(%ecx)
437         xacquire lock andl %eax,(%ecx)
438         lock xacquire andl %eax,(%ecx)
439         xrelease lock andl %eax,(%ecx)
440         lock xrelease andl %eax,(%ecx)
441         .byte 0xf0; .byte 0xf2; andl %eax,(%ecx)
442         .byte 0xf0; .byte 0xf3; andl %eax,(%ecx)
443         xrelease movl %eax,(%ecx)
444         xrelease movl %eax,0x12345678
445         xacquire lock orl %eax,(%ecx)
446         lock xacquire orl %eax,(%ecx)
447         xrelease lock orl %eax,(%ecx)
448         lock xrelease orl %eax,(%ecx)
449         .byte 0xf0; .byte 0xf2; orl %eax,(%ecx)
450         .byte 0xf0; .byte 0xf3; orl %eax,(%ecx)
451         xacquire lock sbbl %eax,(%ecx)
452         lock xacquire sbbl %eax,(%ecx)
453         xrelease lock sbbl %eax,(%ecx)
454         lock xrelease sbbl %eax,(%ecx)
455         .byte 0xf0; .byte 0xf2; sbbl %eax,(%ecx)
456         .byte 0xf0; .byte 0xf3; sbbl %eax,(%ecx)
457         xacquire lock subl %eax,(%ecx)
458         lock xacquire subl %eax,(%ecx)
459         xrelease lock subl %eax,(%ecx)
460         lock xrelease subl %eax,(%ecx)
461         .byte 0xf0; .byte 0xf2; subl %eax,(%ecx)
462         .byte 0xf0; .byte 0xf3; subl %eax,(%ecx)
463         xacquire lock xchgl %eax,(%ecx)
464         lock xacquire xchgl %eax,(%ecx)
465         xacquire xchgl %eax,(%ecx)
466         xrelease lock xchgl %eax,(%ecx)
467         lock xrelease xchgl %eax,(%ecx)
468         xrelease xchgl %eax,(%ecx)
469         .byte 0xf0; .byte 0xf2; xchgl %eax,(%ecx)
470         .byte 0xf0; .byte 0xf3; xchgl %eax,(%ecx)
471         xacquire lock xorl %eax,(%ecx)
472         lock xacquire xorl %eax,(%ecx)
473         xrelease lock xorl %eax,(%ecx)
474         lock xrelease xorl %eax,(%ecx)
475         .byte 0xf0; .byte 0xf2; xorl %eax,(%ecx)
476         .byte 0xf0; .byte 0xf3; xorl %eax,(%ecx)
477
478 # Tests for op regs, regs/m16
479         xacquire lock btcw %ax,(%ecx)
480         lock xacquire btcw %ax,(%ecx)
481         xrelease lock btcw %ax,(%ecx)
482         lock xrelease btcw %ax,(%ecx)
483         .byte 0xf0; .byte 0xf2; btcw %ax,(%ecx)
484         .byte 0xf0; .byte 0xf3; btcw %ax,(%ecx)
485         xacquire lock btrw %ax,(%ecx)
486         lock xacquire btrw %ax,(%ecx)
487         xrelease lock btrw %ax,(%ecx)
488         lock xrelease btrw %ax,(%ecx)
489         .byte 0xf0; .byte 0xf2; btrw %ax,(%ecx)
490         .byte 0xf0; .byte 0xf3; btrw %ax,(%ecx)
491         xacquire lock btsw %ax,(%ecx)
492         lock xacquire btsw %ax,(%ecx)
493         xrelease lock btsw %ax,(%ecx)
494         lock xrelease btsw %ax,(%ecx)
495         .byte 0xf0; .byte 0xf2; btsw %ax,(%ecx)
496         .byte 0xf0; .byte 0xf3; btsw %ax,(%ecx)
497         xacquire lock cmpxchgw %ax,(%ecx)
498         lock xacquire cmpxchgw %ax,(%ecx)
499         xrelease lock cmpxchgw %ax,(%ecx)
500         lock xrelease cmpxchgw %ax,(%ecx)
501         .byte 0xf0; .byte 0xf2; cmpxchgw %ax,(%ecx)
502         .byte 0xf0; .byte 0xf3; cmpxchgw %ax,(%ecx)
503         xacquire lock xaddw %ax,(%ecx)
504         lock xacquire xaddw %ax,(%ecx)
505         xrelease lock xaddw %ax,(%ecx)
506         lock xrelease xaddw %ax,(%ecx)
507         .byte 0xf0; .byte 0xf2; xaddw %ax,(%ecx)
508         .byte 0xf0; .byte 0xf3; xaddw %ax,(%ecx)
509
510 # Tests for op regl regl/m32
511         xacquire lock btcl %eax,(%ecx)
512         lock xacquire btcl %eax,(%ecx)
513         xrelease lock btcl %eax,(%ecx)
514         lock xrelease btcl %eax,(%ecx)
515         .byte 0xf0; .byte 0xf2; btcl %eax,(%ecx)
516         .byte 0xf0; .byte 0xf3; btcl %eax,(%ecx)
517         xacquire lock btrl %eax,(%ecx)
518         lock xacquire btrl %eax,(%ecx)
519         xrelease lock btrl %eax,(%ecx)
520         lock xrelease btrl %eax,(%ecx)
521         .byte 0xf0; .byte 0xf2; btrl %eax,(%ecx)
522         .byte 0xf0; .byte 0xf3; btrl %eax,(%ecx)
523         xacquire lock btsl %eax,(%ecx)
524         lock xacquire btsl %eax,(%ecx)
525         xrelease lock btsl %eax,(%ecx)
526         lock xrelease btsl %eax,(%ecx)
527         .byte 0xf0; .byte 0xf2; btsl %eax,(%ecx)
528         .byte 0xf0; .byte 0xf3; btsl %eax,(%ecx)
529         xacquire lock cmpxchgl %eax,(%ecx)
530         lock xacquire cmpxchgl %eax,(%ecx)
531         xrelease lock cmpxchgl %eax,(%ecx)
532         lock xrelease cmpxchgl %eax,(%ecx)
533         .byte 0xf0; .byte 0xf2; cmpxchgl %eax,(%ecx)
534         .byte 0xf0; .byte 0xf3; cmpxchgl %eax,(%ecx)
535         xacquire lock xaddl %eax,(%ecx)
536         lock xacquire xaddl %eax,(%ecx)
537         xrelease lock xaddl %eax,(%ecx)
538         lock xrelease xaddl %eax,(%ecx)
539         .byte 0xf0; .byte 0xf2; xaddl %eax,(%ecx)
540         .byte 0xf0; .byte 0xf3; xaddl %eax,(%ecx)
541
542 # Tests for op regb/m8
543         xacquire lock decb (%ecx)
544         lock xacquire decb (%ecx)
545         xrelease lock decb (%ecx)
546         lock xrelease decb (%ecx)
547         .byte 0xf0; .byte 0xf2; decb (%ecx)
548         .byte 0xf0; .byte 0xf3; decb (%ecx)
549         xacquire lock incb (%ecx)
550         lock xacquire incb (%ecx)
551         xrelease lock incb (%ecx)
552         lock xrelease incb (%ecx)
553         .byte 0xf0; .byte 0xf2; incb (%ecx)
554         .byte 0xf0; .byte 0xf3; incb (%ecx)
555         xacquire lock negb (%ecx)
556         lock xacquire negb (%ecx)
557         xrelease lock negb (%ecx)
558         lock xrelease negb (%ecx)
559         .byte 0xf0; .byte 0xf2; negb (%ecx)
560         .byte 0xf0; .byte 0xf3; negb (%ecx)
561         xacquire lock notb (%ecx)
562         lock xacquire notb (%ecx)
563         xrelease lock notb (%ecx)
564         lock xrelease notb (%ecx)
565         .byte 0xf0; .byte 0xf2; notb (%ecx)
566         .byte 0xf0; .byte 0xf3; notb (%ecx)
567
568 # Tests for op regs/m16
569         xacquire lock decw (%ecx)
570         lock xacquire decw (%ecx)
571         xrelease lock decw (%ecx)
572         lock xrelease decw (%ecx)
573         .byte 0xf0; .byte 0xf2; decw (%ecx)
574         .byte 0xf0; .byte 0xf3; decw (%ecx)
575         xacquire lock incw (%ecx)
576         lock xacquire incw (%ecx)
577         xrelease lock incw (%ecx)
578         lock xrelease incw (%ecx)
579         .byte 0xf0; .byte 0xf2; incw (%ecx)
580         .byte 0xf0; .byte 0xf3; incw (%ecx)
581         xacquire lock negw (%ecx)
582         lock xacquire negw (%ecx)
583         xrelease lock negw (%ecx)
584         lock xrelease negw (%ecx)
585         .byte 0xf0; .byte 0xf2; negw (%ecx)
586         .byte 0xf0; .byte 0xf3; negw (%ecx)
587         xacquire lock notw (%ecx)
588         lock xacquire notw (%ecx)
589         xrelease lock notw (%ecx)
590         lock xrelease notw (%ecx)
591         .byte 0xf0; .byte 0xf2; notw (%ecx)
592         .byte 0xf0; .byte 0xf3; notw (%ecx)
593
594 # Tests for op regl/m32
595         xacquire lock decl (%ecx)
596         lock xacquire decl (%ecx)
597         xrelease lock decl (%ecx)
598         lock xrelease decl (%ecx)
599         .byte 0xf0; .byte 0xf2; decl (%ecx)
600         .byte 0xf0; .byte 0xf3; decl (%ecx)
601         xacquire lock incl (%ecx)
602         lock xacquire incl (%ecx)
603         xrelease lock incl (%ecx)
604         lock xrelease incl (%ecx)
605         .byte 0xf0; .byte 0xf2; incl (%ecx)
606         .byte 0xf0; .byte 0xf3; incl (%ecx)
607         xacquire lock negl (%ecx)
608         lock xacquire negl (%ecx)
609         xrelease lock negl (%ecx)
610         lock xrelease negl (%ecx)
611         .byte 0xf0; .byte 0xf2; negl (%ecx)
612         .byte 0xf0; .byte 0xf3; negl (%ecx)
613         xacquire lock notl (%ecx)
614         lock xacquire notl (%ecx)
615         xrelease lock notl (%ecx)
616         lock xrelease notl (%ecx)
617         .byte 0xf0; .byte 0xf2; notl (%ecx)
618         .byte 0xf0; .byte 0xf3; notl (%ecx)
619
620 # Tests for op m64
621         xacquire lock cmpxchg8bq (%ecx)
622         lock xacquire cmpxchg8bq (%ecx)
623         xrelease lock cmpxchg8bq (%ecx)
624         lock xrelease cmpxchg8bq (%ecx)
625         .byte 0xf0; .byte 0xf2; cmpxchg8bq (%ecx)
626         .byte 0xf0; .byte 0xf3; cmpxchg8bq (%ecx)
627
628 # Tests for op regb, regb/m8
629         xacquire lock cmpxchgb %cl,(%ecx)
630         lock xacquire cmpxchgb %cl,(%ecx)
631         xrelease lock cmpxchgb %cl,(%ecx)
632         lock xrelease cmpxchgb %cl,(%ecx)
633         .byte 0xf0; .byte 0xf2; cmpxchgb %cl,(%ecx)
634         .byte 0xf0; .byte 0xf3; cmpxchgb %cl,(%ecx)
635         xacquire lock xaddb %cl,(%ecx)
636         lock xacquire xaddb %cl,(%ecx)
637         xrelease lock xaddb %cl,(%ecx)
638         lock xrelease xaddb %cl,(%ecx)
639         .byte 0xf0; .byte 0xf2; xaddb %cl,(%ecx)
640         .byte 0xf0; .byte 0xf3; xaddb %cl,(%ecx)
641
642         .intel_syntax noprefix
643
644 # Tests for op imm8 regb/m8
645         xacquire lock adc BYTE PTR [ecx],100
646         lock xacquire adc BYTE PTR [ecx],100
647         xrelease lock adc BYTE PTR [ecx],100
648         lock xrelease adc BYTE PTR [ecx],100
649         .byte 0xf0; .byte 0xf2; adc BYTE PTR [ecx],100
650         .byte 0xf0; .byte 0xf3; adc BYTE PTR [ecx],100
651         xacquire lock add BYTE PTR [ecx],100
652         lock xacquire add BYTE PTR [ecx],100
653         xrelease lock add BYTE PTR [ecx],100
654         lock xrelease add BYTE PTR [ecx],100
655         .byte 0xf0; .byte 0xf2; add BYTE PTR [ecx],100
656         .byte 0xf0; .byte 0xf3; add BYTE PTR [ecx],100
657         xacquire lock and BYTE PTR [ecx],100
658         lock xacquire and BYTE PTR [ecx],100
659         xrelease lock and BYTE PTR [ecx],100
660         lock xrelease and BYTE PTR [ecx],100
661         .byte 0xf0; .byte 0xf2; and BYTE PTR [ecx],100
662         .byte 0xf0; .byte 0xf3; and BYTE PTR [ecx],100
663         xrelease mov BYTE PTR [ecx],100
664         xacquire lock or BYTE PTR [ecx],100
665         lock xacquire or BYTE PTR [ecx],100
666         xrelease lock or BYTE PTR [ecx],100
667         lock xrelease or BYTE PTR [ecx],100
668         .byte 0xf0; .byte 0xf2; or BYTE PTR [ecx],100
669         .byte 0xf0; .byte 0xf3; or BYTE PTR [ecx],100
670         xacquire lock sbb BYTE PTR [ecx],100
671         lock xacquire sbb BYTE PTR [ecx],100
672         xrelease lock sbb BYTE PTR [ecx],100
673         lock xrelease sbb BYTE PTR [ecx],100
674         .byte 0xf0; .byte 0xf2; sbb BYTE PTR [ecx],100
675         .byte 0xf0; .byte 0xf3; sbb BYTE PTR [ecx],100
676         xacquire lock sub BYTE PTR [ecx],100
677         lock xacquire sub BYTE PTR [ecx],100
678         xrelease lock sub BYTE PTR [ecx],100
679         lock xrelease sub BYTE PTR [ecx],100
680         .byte 0xf0; .byte 0xf2; sub BYTE PTR [ecx],100
681         .byte 0xf0; .byte 0xf3; sub BYTE PTR [ecx],100
682         xacquire lock xor BYTE PTR [ecx],100
683         lock xacquire xor BYTE PTR [ecx],100
684         xrelease lock xor BYTE PTR [ecx],100
685         lock xrelease xor BYTE PTR [ecx],100
686         .byte 0xf0; .byte 0xf2; xor BYTE PTR [ecx],100
687         .byte 0xf0; .byte 0xf3; xor BYTE PTR [ecx],100
688
689 # Tests for op imm16 regs/m16
690         xacquire lock adc WORD PTR [ecx],1000
691         lock xacquire adc WORD PTR [ecx],1000
692         xrelease lock adc WORD PTR [ecx],1000
693         lock xrelease adc WORD PTR [ecx],1000
694         .byte 0xf0; .byte 0xf2; adc WORD PTR [ecx],1000
695         .byte 0xf0; .byte 0xf3; adc WORD PTR [ecx],1000
696         xacquire lock add WORD PTR [ecx],1000
697         lock xacquire add WORD PTR [ecx],1000
698         xrelease lock add WORD PTR [ecx],1000
699         lock xrelease add WORD PTR [ecx],1000
700         .byte 0xf0; .byte 0xf2; add WORD PTR [ecx],1000
701         .byte 0xf0; .byte 0xf3; add WORD PTR [ecx],1000
702         xacquire lock and WORD PTR [ecx],1000
703         lock xacquire and WORD PTR [ecx],1000
704         xrelease lock and WORD PTR [ecx],1000
705         lock xrelease and WORD PTR [ecx],1000
706         .byte 0xf0; .byte 0xf2; and WORD PTR [ecx],1000
707         .byte 0xf0; .byte 0xf3; and WORD PTR [ecx],1000
708         xrelease mov WORD PTR [ecx],1000
709         xacquire lock or WORD PTR [ecx],1000
710         lock xacquire or WORD PTR [ecx],1000
711         xrelease lock or WORD PTR [ecx],1000
712         lock xrelease or WORD PTR [ecx],1000
713         .byte 0xf0; .byte 0xf2; or WORD PTR [ecx],1000
714         .byte 0xf0; .byte 0xf3; or WORD PTR [ecx],1000
715         xacquire lock sbb WORD PTR [ecx],1000
716         lock xacquire sbb WORD PTR [ecx],1000
717         xrelease lock sbb WORD PTR [ecx],1000
718         lock xrelease sbb WORD PTR [ecx],1000
719         .byte 0xf0; .byte 0xf2; sbb WORD PTR [ecx],1000
720         .byte 0xf0; .byte 0xf3; sbb WORD PTR [ecx],1000
721         xacquire lock sub WORD PTR [ecx],1000
722         lock xacquire sub WORD PTR [ecx],1000
723         xrelease lock sub WORD PTR [ecx],1000
724         lock xrelease sub WORD PTR [ecx],1000
725         .byte 0xf0; .byte 0xf2; sub WORD PTR [ecx],1000
726         .byte 0xf0; .byte 0xf3; sub WORD PTR [ecx],1000
727         xacquire lock xor WORD PTR [ecx],1000
728         lock xacquire xor WORD PTR [ecx],1000
729         xrelease lock xor WORD PTR [ecx],1000
730         lock xrelease xor WORD PTR [ecx],1000
731         .byte 0xf0; .byte 0xf2; xor WORD PTR [ecx],1000
732         .byte 0xf0; .byte 0xf3; xor WORD PTR [ecx],1000
733
734 # Tests for op imm32 regl/m32
735         xacquire lock adc DWORD PTR [ecx],10000000
736         lock xacquire adc DWORD PTR [ecx],10000000
737         xrelease lock adc DWORD PTR [ecx],10000000
738         lock xrelease adc DWORD PTR [ecx],10000000
739         .byte 0xf0; .byte 0xf2; adc DWORD PTR [ecx],10000000
740         .byte 0xf0; .byte 0xf3; adc DWORD PTR [ecx],10000000
741         xacquire lock add DWORD PTR [ecx],10000000
742         lock xacquire add DWORD PTR [ecx],10000000
743         xrelease lock add DWORD PTR [ecx],10000000
744         lock xrelease add DWORD PTR [ecx],10000000
745         .byte 0xf0; .byte 0xf2; add DWORD PTR [ecx],10000000
746         .byte 0xf0; .byte 0xf3; add DWORD PTR [ecx],10000000
747         xacquire lock and DWORD PTR [ecx],10000000
748         lock xacquire and DWORD PTR [ecx],10000000
749         xrelease lock and DWORD PTR [ecx],10000000
750         lock xrelease and DWORD PTR [ecx],10000000
751         .byte 0xf0; .byte 0xf2; and DWORD PTR [ecx],10000000
752         .byte 0xf0; .byte 0xf3; and DWORD PTR [ecx],10000000
753         xrelease mov DWORD PTR [ecx],10000000
754         xacquire lock or DWORD PTR [ecx],10000000
755         lock xacquire or DWORD PTR [ecx],10000000
756         xrelease lock or DWORD PTR [ecx],10000000
757         lock xrelease or DWORD PTR [ecx],10000000
758         .byte 0xf0; .byte 0xf2; or DWORD PTR [ecx],10000000
759         .byte 0xf0; .byte 0xf3; or DWORD PTR [ecx],10000000
760         xacquire lock sbb DWORD PTR [ecx],10000000
761         lock xacquire sbb DWORD PTR [ecx],10000000
762         xrelease lock sbb DWORD PTR [ecx],10000000
763         lock xrelease sbb DWORD PTR [ecx],10000000
764         .byte 0xf0; .byte 0xf2; sbb DWORD PTR [ecx],10000000
765         .byte 0xf0; .byte 0xf3; sbb DWORD PTR [ecx],10000000
766         xacquire lock sub DWORD PTR [ecx],10000000
767         lock xacquire sub DWORD PTR [ecx],10000000
768         xrelease lock sub DWORD PTR [ecx],10000000
769         lock xrelease sub DWORD PTR [ecx],10000000
770         .byte 0xf0; .byte 0xf2; sub DWORD PTR [ecx],10000000
771         .byte 0xf0; .byte 0xf3; sub DWORD PTR [ecx],10000000
772         xacquire lock xor DWORD PTR [ecx],10000000
773         lock xacquire xor DWORD PTR [ecx],10000000
774         xrelease lock xor DWORD PTR [ecx],10000000
775         lock xrelease xor DWORD PTR [ecx],10000000
776         .byte 0xf0; .byte 0xf2; xor DWORD PTR [ecx],10000000
777         .byte 0xf0; .byte 0xf3; xor DWORD PTR [ecx],10000000
778
779 # Tests for op imm8 regs/m16
780         xacquire lock adc WORD PTR [ecx],100
781         lock xacquire adc WORD PTR [ecx],100
782         xrelease lock adc WORD PTR [ecx],100
783         lock xrelease adc WORD PTR [ecx],100
784         .byte 0xf0; .byte 0xf2; adc WORD PTR [ecx],100
785         .byte 0xf0; .byte 0xf3; adc WORD PTR [ecx],100
786         xacquire lock add WORD PTR [ecx],100
787         lock xacquire add WORD PTR [ecx],100
788         xrelease lock add WORD PTR [ecx],100
789         lock xrelease add WORD PTR [ecx],100
790         .byte 0xf0; .byte 0xf2; add WORD PTR [ecx],100
791         .byte 0xf0; .byte 0xf3; add WORD PTR [ecx],100
792         xacquire lock and WORD PTR [ecx],100
793         lock xacquire and WORD PTR [ecx],100
794         xrelease lock and WORD PTR [ecx],100
795         lock xrelease and WORD PTR [ecx],100
796         .byte 0xf0; .byte 0xf2; and WORD PTR [ecx],100
797         .byte 0xf0; .byte 0xf3; and WORD PTR [ecx],100
798         xacquire lock btc WORD PTR [ecx],100
799         lock xacquire btc WORD PTR [ecx],100
800         xrelease lock btc WORD PTR [ecx],100
801         lock xrelease btc WORD PTR [ecx],100
802         .byte 0xf0; .byte 0xf2; btc WORD PTR [ecx],100
803         .byte 0xf0; .byte 0xf3; btc WORD PTR [ecx],100
804         xacquire lock btr WORD PTR [ecx],100
805         lock xacquire btr WORD PTR [ecx],100
806         xrelease lock btr WORD PTR [ecx],100
807         lock xrelease btr WORD PTR [ecx],100
808         .byte 0xf0; .byte 0xf2; btr WORD PTR [ecx],100
809         .byte 0xf0; .byte 0xf3; btr WORD PTR [ecx],100
810         xacquire lock bts WORD PTR [ecx],100
811         lock xacquire bts WORD PTR [ecx],100
812         xrelease lock bts WORD PTR [ecx],100
813         lock xrelease bts WORD PTR [ecx],100
814         .byte 0xf0; .byte 0xf2; bts WORD PTR [ecx],100
815         .byte 0xf0; .byte 0xf3; bts WORD PTR [ecx],100
816         xrelease mov WORD PTR [ecx],100
817         xacquire lock or WORD PTR [ecx],100
818         lock xacquire or WORD PTR [ecx],100
819         xrelease lock or WORD PTR [ecx],100
820         lock xrelease or WORD PTR [ecx],100
821         .byte 0xf0; .byte 0xf2; or WORD PTR [ecx],100
822         .byte 0xf0; .byte 0xf3; or WORD PTR [ecx],100
823         xacquire lock sbb WORD PTR [ecx],100
824         lock xacquire sbb WORD PTR [ecx],100
825         xrelease lock sbb WORD PTR [ecx],100
826         lock xrelease sbb WORD PTR [ecx],100
827         .byte 0xf0; .byte 0xf2; sbb WORD PTR [ecx],100
828         .byte 0xf0; .byte 0xf3; sbb WORD PTR [ecx],100
829         xacquire lock sub WORD PTR [ecx],100
830         lock xacquire sub WORD PTR [ecx],100
831         xrelease lock sub WORD PTR [ecx],100
832         lock xrelease sub WORD PTR [ecx],100
833         .byte 0xf0; .byte 0xf2; sub WORD PTR [ecx],100
834         .byte 0xf0; .byte 0xf3; sub WORD PTR [ecx],100
835         xacquire lock xor WORD PTR [ecx],100
836         lock xacquire xor WORD PTR [ecx],100
837         xrelease lock xor WORD PTR [ecx],100
838         lock xrelease xor WORD PTR [ecx],100
839         .byte 0xf0; .byte 0xf2; xor WORD PTR [ecx],100
840         .byte 0xf0; .byte 0xf3; xor WORD PTR [ecx],100
841
842 # Tests for op imm8 regl/m32
843         xacquire lock adc DWORD PTR [ecx],100
844         lock xacquire adc DWORD PTR [ecx],100
845         xrelease lock adc DWORD PTR [ecx],100
846         lock xrelease adc DWORD PTR [ecx],100
847         .byte 0xf0; .byte 0xf2; adc DWORD PTR [ecx],100
848         .byte 0xf0; .byte 0xf3; adc DWORD PTR [ecx],100
849         xacquire lock add DWORD PTR [ecx],100
850         lock xacquire add DWORD PTR [ecx],100
851         xrelease lock add DWORD PTR [ecx],100
852         lock xrelease add DWORD PTR [ecx],100
853         .byte 0xf0; .byte 0xf2; add DWORD PTR [ecx],100
854         .byte 0xf0; .byte 0xf3; add DWORD PTR [ecx],100
855         xacquire lock and DWORD PTR [ecx],100
856         lock xacquire and DWORD PTR [ecx],100
857         xrelease lock and DWORD PTR [ecx],100
858         lock xrelease and DWORD PTR [ecx],100
859         .byte 0xf0; .byte 0xf2; and DWORD PTR [ecx],100
860         .byte 0xf0; .byte 0xf3; and DWORD PTR [ecx],100
861         xacquire lock btc DWORD PTR [ecx],100
862         lock xacquire btc DWORD PTR [ecx],100
863         xrelease lock btc DWORD PTR [ecx],100
864         lock xrelease btc DWORD PTR [ecx],100
865         .byte 0xf0; .byte 0xf2; btc DWORD PTR [ecx],100
866         .byte 0xf0; .byte 0xf3; btc DWORD PTR [ecx],100
867         xacquire lock btr DWORD PTR [ecx],100
868         lock xacquire btr DWORD PTR [ecx],100
869         xrelease lock btr DWORD PTR [ecx],100
870         lock xrelease btr DWORD PTR [ecx],100
871         .byte 0xf0; .byte 0xf2; btr DWORD PTR [ecx],100
872         .byte 0xf0; .byte 0xf3; btr DWORD PTR [ecx],100
873         xacquire lock bts DWORD PTR [ecx],100
874         lock xacquire bts DWORD PTR [ecx],100
875         xrelease lock bts DWORD PTR [ecx],100
876         lock xrelease bts DWORD PTR [ecx],100
877         .byte 0xf0; .byte 0xf2; bts DWORD PTR [ecx],100
878         .byte 0xf0; .byte 0xf3; bts DWORD PTR [ecx],100
879         xrelease mov DWORD PTR [ecx],100
880         xacquire lock or DWORD PTR [ecx],100
881         lock xacquire or DWORD PTR [ecx],100
882         xrelease lock or DWORD PTR [ecx],100
883         lock xrelease or DWORD PTR [ecx],100
884         .byte 0xf0; .byte 0xf2; or DWORD PTR [ecx],100
885         .byte 0xf0; .byte 0xf3; or DWORD PTR [ecx],100
886         xacquire lock sbb DWORD PTR [ecx],100
887         lock xacquire sbb DWORD PTR [ecx],100
888         xrelease lock sbb DWORD PTR [ecx],100
889         lock xrelease sbb DWORD PTR [ecx],100
890         .byte 0xf0; .byte 0xf2; sbb DWORD PTR [ecx],100
891         .byte 0xf0; .byte 0xf3; sbb DWORD PTR [ecx],100
892         xacquire lock sub DWORD PTR [ecx],100
893         lock xacquire sub DWORD PTR [ecx],100
894         xrelease lock sub DWORD PTR [ecx],100
895         lock xrelease sub DWORD PTR [ecx],100
896         .byte 0xf0; .byte 0xf2; sub DWORD PTR [ecx],100
897         .byte 0xf0; .byte 0xf3; sub DWORD PTR [ecx],100
898         xacquire lock xor DWORD PTR [ecx],100
899         lock xacquire xor DWORD PTR [ecx],100
900         xrelease lock xor DWORD PTR [ecx],100
901         lock xrelease xor DWORD PTR [ecx],100
902         .byte 0xf0; .byte 0xf2; xor DWORD PTR [ecx],100
903         .byte 0xf0; .byte 0xf3; xor DWORD PTR [ecx],100
904
905 # Tests for op imm8 regb/m8
906         xacquire lock adc BYTE PTR [ecx],100
907         lock xacquire adc BYTE PTR [ecx],100
908         xrelease lock adc BYTE PTR [ecx],100
909         lock xrelease adc BYTE PTR [ecx],100
910         .byte 0xf0; .byte 0xf2; adc BYTE PTR [ecx],100
911         .byte 0xf0; .byte 0xf3; adc BYTE PTR [ecx],100
912         xacquire lock add BYTE PTR [ecx],100
913         lock xacquire add BYTE PTR [ecx],100
914         xrelease lock add BYTE PTR [ecx],100
915         lock xrelease add BYTE PTR [ecx],100
916         .byte 0xf0; .byte 0xf2; add BYTE PTR [ecx],100
917         .byte 0xf0; .byte 0xf3; add BYTE PTR [ecx],100
918         xacquire lock and BYTE PTR [ecx],100
919         lock xacquire and BYTE PTR [ecx],100
920         xrelease lock and BYTE PTR [ecx],100
921         lock xrelease and BYTE PTR [ecx],100
922         .byte 0xf0; .byte 0xf2; and BYTE PTR [ecx],100
923         .byte 0xf0; .byte 0xf3; and BYTE PTR [ecx],100
924         xrelease mov BYTE PTR [ecx],100
925         xacquire lock or BYTE PTR [ecx],100
926         lock xacquire or BYTE PTR [ecx],100
927         xrelease lock or BYTE PTR [ecx],100
928         lock xrelease or BYTE PTR [ecx],100
929         .byte 0xf0; .byte 0xf2; or BYTE PTR [ecx],100
930         .byte 0xf0; .byte 0xf3; or BYTE PTR [ecx],100
931         xacquire lock sbb BYTE PTR [ecx],100
932         lock xacquire sbb BYTE PTR [ecx],100
933         xrelease lock sbb BYTE PTR [ecx],100
934         lock xrelease sbb BYTE PTR [ecx],100
935         .byte 0xf0; .byte 0xf2; sbb BYTE PTR [ecx],100
936         .byte 0xf0; .byte 0xf3; sbb BYTE PTR [ecx],100
937         xacquire lock sub BYTE PTR [ecx],100
938         lock xacquire sub BYTE PTR [ecx],100
939         xrelease lock sub BYTE PTR [ecx],100
940         lock xrelease sub BYTE PTR [ecx],100
941         .byte 0xf0; .byte 0xf2; sub BYTE PTR [ecx],100
942         .byte 0xf0; .byte 0xf3; sub BYTE PTR [ecx],100
943         xacquire lock xor BYTE PTR [ecx],100
944         lock xacquire xor BYTE PTR [ecx],100
945         xrelease lock xor BYTE PTR [ecx],100
946         lock xrelease xor BYTE PTR [ecx],100
947         .byte 0xf0; .byte 0xf2; xor BYTE PTR [ecx],100
948         .byte 0xf0; .byte 0xf3; xor BYTE PTR [ecx],100
949
950 # Tests for op regb regb/m8
951 # Tests for op regb/m8 regb
952         xacquire lock adc BYTE PTR [ecx],al
953         lock xacquire adc BYTE PTR [ecx],al
954         xrelease lock adc BYTE PTR [ecx],al
955         lock xrelease adc BYTE PTR [ecx],al
956         .byte 0xf0; .byte 0xf2; adc BYTE PTR [ecx],al
957         .byte 0xf0; .byte 0xf3; adc BYTE PTR [ecx],al
958         xacquire lock add BYTE PTR [ecx],al
959         lock xacquire add BYTE PTR [ecx],al
960         xrelease lock add BYTE PTR [ecx],al
961         lock xrelease add BYTE PTR [ecx],al
962         .byte 0xf0; .byte 0xf2; add BYTE PTR [ecx],al
963         .byte 0xf0; .byte 0xf3; add BYTE PTR [ecx],al
964         xacquire lock and BYTE PTR [ecx],al
965         lock xacquire and BYTE PTR [ecx],al
966         xrelease lock and BYTE PTR [ecx],al
967         lock xrelease and BYTE PTR [ecx],al
968         .byte 0xf0; .byte 0xf2; and BYTE PTR [ecx],al
969         .byte 0xf0; .byte 0xf3; and BYTE PTR [ecx],al
970         xrelease mov BYTE PTR [ecx],al
971         xacquire lock or BYTE PTR [ecx],al
972         lock xacquire or BYTE PTR [ecx],al
973         xrelease lock or BYTE PTR [ecx],al
974         lock xrelease or BYTE PTR [ecx],al
975         .byte 0xf0; .byte 0xf2; or BYTE PTR [ecx],al
976         .byte 0xf0; .byte 0xf3; or BYTE PTR [ecx],al
977         xacquire lock sbb BYTE PTR [ecx],al
978         lock xacquire sbb BYTE PTR [ecx],al
979         xrelease lock sbb BYTE PTR [ecx],al
980         lock xrelease sbb BYTE PTR [ecx],al
981         .byte 0xf0; .byte 0xf2; sbb BYTE PTR [ecx],al
982         .byte 0xf0; .byte 0xf3; sbb BYTE PTR [ecx],al
983         xacquire lock sub BYTE PTR [ecx],al
984         lock xacquire sub BYTE PTR [ecx],al
985         xrelease lock sub BYTE PTR [ecx],al
986         lock xrelease sub BYTE PTR [ecx],al
987         .byte 0xf0; .byte 0xf2; sub BYTE PTR [ecx],al
988         .byte 0xf0; .byte 0xf3; sub BYTE PTR [ecx],al
989         xacquire lock xchg BYTE PTR [ecx],al
990         lock xacquire xchg BYTE PTR [ecx],al
991         xacquire xchg BYTE PTR [ecx],al
992         xrelease lock xchg BYTE PTR [ecx],al
993         lock xrelease xchg BYTE PTR [ecx],al
994         xrelease xchg BYTE PTR [ecx],al
995         .byte 0xf0; .byte 0xf2; xchg BYTE PTR [ecx],al
996         .byte 0xf0; .byte 0xf3; xchg BYTE PTR [ecx],al
997         xacquire lock xor BYTE PTR [ecx],al
998         lock xacquire xor BYTE PTR [ecx],al
999         xrelease lock xor BYTE PTR [ecx],al
1000         lock xrelease xor BYTE PTR [ecx],al
1001         .byte 0xf0; .byte 0xf2; xor BYTE PTR [ecx],al
1002         .byte 0xf0; .byte 0xf3; xor BYTE PTR [ecx],al
1003
1004 # Tests for op regs regs/m16
1005 # Tests for op regs/m16 regs
1006         xacquire lock adc WORD PTR [ecx],ax
1007         lock xacquire adc WORD PTR [ecx],ax
1008         xrelease lock adc WORD PTR [ecx],ax
1009         lock xrelease adc WORD PTR [ecx],ax
1010         .byte 0xf0; .byte 0xf2; adc WORD PTR [ecx],ax
1011         .byte 0xf0; .byte 0xf3; adc WORD PTR [ecx],ax
1012         xacquire lock add WORD PTR [ecx],ax
1013         lock xacquire add WORD PTR [ecx],ax
1014         xrelease lock add WORD PTR [ecx],ax
1015         lock xrelease add WORD PTR [ecx],ax
1016         .byte 0xf0; .byte 0xf2; add WORD PTR [ecx],ax
1017         .byte 0xf0; .byte 0xf3; add WORD PTR [ecx],ax
1018         xacquire lock and WORD PTR [ecx],ax
1019         lock xacquire and WORD PTR [ecx],ax
1020         xrelease lock and WORD PTR [ecx],ax
1021         lock xrelease and WORD PTR [ecx],ax
1022         .byte 0xf0; .byte 0xf2; and WORD PTR [ecx],ax
1023         .byte 0xf0; .byte 0xf3; and WORD PTR [ecx],ax
1024         xrelease mov WORD PTR [ecx],ax
1025         xacquire lock or WORD PTR [ecx],ax
1026         lock xacquire or WORD PTR [ecx],ax
1027         xrelease lock or WORD PTR [ecx],ax
1028         lock xrelease or WORD PTR [ecx],ax
1029         .byte 0xf0; .byte 0xf2; or WORD PTR [ecx],ax
1030         .byte 0xf0; .byte 0xf3; or WORD PTR [ecx],ax
1031         xacquire lock sbb WORD PTR [ecx],ax
1032         lock xacquire sbb WORD PTR [ecx],ax
1033         xrelease lock sbb WORD PTR [ecx],ax
1034         lock xrelease sbb WORD PTR [ecx],ax
1035         .byte 0xf0; .byte 0xf2; sbb WORD PTR [ecx],ax
1036         .byte 0xf0; .byte 0xf3; sbb WORD PTR [ecx],ax
1037         xacquire lock sub WORD PTR [ecx],ax
1038         lock xacquire sub WORD PTR [ecx],ax
1039         xrelease lock sub WORD PTR [ecx],ax
1040         lock xrelease sub WORD PTR [ecx],ax
1041         .byte 0xf0; .byte 0xf2; sub WORD PTR [ecx],ax
1042         .byte 0xf0; .byte 0xf3; sub WORD PTR [ecx],ax
1043         xacquire lock xchg WORD PTR [ecx],ax
1044         lock xacquire xchg WORD PTR [ecx],ax
1045         xacquire xchg WORD PTR [ecx],ax
1046         xrelease lock xchg WORD PTR [ecx],ax
1047         lock xrelease xchg WORD PTR [ecx],ax
1048         xrelease xchg WORD PTR [ecx],ax
1049         .byte 0xf0; .byte 0xf2; xchg WORD PTR [ecx],ax
1050         .byte 0xf0; .byte 0xf3; xchg WORD PTR [ecx],ax
1051         xacquire lock xor WORD PTR [ecx],ax
1052         lock xacquire xor WORD PTR [ecx],ax
1053         xrelease lock xor WORD PTR [ecx],ax
1054         lock xrelease xor WORD PTR [ecx],ax
1055         .byte 0xf0; .byte 0xf2; xor WORD PTR [ecx],ax
1056         .byte 0xf0; .byte 0xf3; xor WORD PTR [ecx],ax
1057
1058 # Tests for op regl regl/m32
1059 # Tests for op regl/m32 regl
1060         xacquire lock adc DWORD PTR [ecx],eax
1061         lock xacquire adc DWORD PTR [ecx],eax
1062         xrelease lock adc DWORD PTR [ecx],eax
1063         lock xrelease adc DWORD PTR [ecx],eax
1064         .byte 0xf0; .byte 0xf2; adc DWORD PTR [ecx],eax
1065         .byte 0xf0; .byte 0xf3; adc DWORD PTR [ecx],eax
1066         xacquire lock add DWORD PTR [ecx],eax
1067         lock xacquire add DWORD PTR [ecx],eax
1068         xrelease lock add DWORD PTR [ecx],eax
1069         lock xrelease add DWORD PTR [ecx],eax
1070         .byte 0xf0; .byte 0xf2; add DWORD PTR [ecx],eax
1071         .byte 0xf0; .byte 0xf3; add DWORD PTR [ecx],eax
1072         xacquire lock and DWORD PTR [ecx],eax
1073         lock xacquire and DWORD PTR [ecx],eax
1074         xrelease lock and DWORD PTR [ecx],eax
1075         lock xrelease and DWORD PTR [ecx],eax
1076         .byte 0xf0; .byte 0xf2; and DWORD PTR [ecx],eax
1077         .byte 0xf0; .byte 0xf3; and DWORD PTR [ecx],eax
1078         xrelease mov DWORD PTR [ecx],eax
1079         xacquire lock or DWORD PTR [ecx],eax
1080         lock xacquire or DWORD PTR [ecx],eax
1081         xrelease lock or DWORD PTR [ecx],eax
1082         lock xrelease or DWORD PTR [ecx],eax
1083         .byte 0xf0; .byte 0xf2; or DWORD PTR [ecx],eax
1084         .byte 0xf0; .byte 0xf3; or DWORD PTR [ecx],eax
1085         xacquire lock sbb DWORD PTR [ecx],eax
1086         lock xacquire sbb DWORD PTR [ecx],eax
1087         xrelease lock sbb DWORD PTR [ecx],eax
1088         lock xrelease sbb DWORD PTR [ecx],eax
1089         .byte 0xf0; .byte 0xf2; sbb DWORD PTR [ecx],eax
1090         .byte 0xf0; .byte 0xf3; sbb DWORD PTR [ecx],eax
1091         xacquire lock sub DWORD PTR [ecx],eax
1092         lock xacquire sub DWORD PTR [ecx],eax
1093         xrelease lock sub DWORD PTR [ecx],eax
1094         lock xrelease sub DWORD PTR [ecx],eax
1095         .byte 0xf0; .byte 0xf2; sub DWORD PTR [ecx],eax
1096         .byte 0xf0; .byte 0xf3; sub DWORD PTR [ecx],eax
1097         xacquire lock xchg DWORD PTR [ecx],eax
1098         lock xacquire xchg DWORD PTR [ecx],eax
1099         xacquire xchg DWORD PTR [ecx],eax
1100         xrelease lock xchg DWORD PTR [ecx],eax
1101         lock xrelease xchg DWORD PTR [ecx],eax
1102         xrelease xchg DWORD PTR [ecx],eax
1103         .byte 0xf0; .byte 0xf2; xchg DWORD PTR [ecx],eax
1104         .byte 0xf0; .byte 0xf3; xchg DWORD PTR [ecx],eax
1105         xacquire lock xor DWORD PTR [ecx],eax
1106         lock xacquire xor DWORD PTR [ecx],eax
1107         xrelease lock xor DWORD PTR [ecx],eax
1108         lock xrelease xor DWORD PTR [ecx],eax
1109         .byte 0xf0; .byte 0xf2; xor DWORD PTR [ecx],eax
1110         .byte 0xf0; .byte 0xf3; xor DWORD PTR [ecx],eax
1111
1112 # Tests for op regs, regs/m16
1113         xacquire lock btc WORD PTR [ecx],ax
1114         lock xacquire btc WORD PTR [ecx],ax
1115         xrelease lock btc WORD PTR [ecx],ax
1116         lock xrelease btc WORD PTR [ecx],ax
1117         .byte 0xf0; .byte 0xf2; btc WORD PTR [ecx],ax
1118         .byte 0xf0; .byte 0xf3; btc WORD PTR [ecx],ax
1119         xacquire lock btr WORD PTR [ecx],ax
1120         lock xacquire btr WORD PTR [ecx],ax
1121         xrelease lock btr WORD PTR [ecx],ax
1122         lock xrelease btr WORD PTR [ecx],ax
1123         .byte 0xf0; .byte 0xf2; btr WORD PTR [ecx],ax
1124         .byte 0xf0; .byte 0xf3; btr WORD PTR [ecx],ax
1125         xacquire lock bts WORD PTR [ecx],ax
1126         lock xacquire bts WORD PTR [ecx],ax
1127         xrelease lock bts WORD PTR [ecx],ax
1128         lock xrelease bts WORD PTR [ecx],ax
1129         .byte 0xf0; .byte 0xf2; bts WORD PTR [ecx],ax
1130         .byte 0xf0; .byte 0xf3; bts WORD PTR [ecx],ax
1131         xacquire lock cmpxchg WORD PTR [ecx],ax
1132         lock xacquire cmpxchg WORD PTR [ecx],ax
1133         xrelease lock cmpxchg WORD PTR [ecx],ax
1134         lock xrelease cmpxchg WORD PTR [ecx],ax
1135         .byte 0xf0; .byte 0xf2; cmpxchg WORD PTR [ecx],ax
1136         .byte 0xf0; .byte 0xf3; cmpxchg WORD PTR [ecx],ax
1137         xacquire lock xadd WORD PTR [ecx],ax
1138         lock xacquire xadd WORD PTR [ecx],ax
1139         xrelease lock xadd WORD PTR [ecx],ax
1140         lock xrelease xadd WORD PTR [ecx],ax
1141         .byte 0xf0; .byte 0xf2; xadd WORD PTR [ecx],ax
1142         .byte 0xf0; .byte 0xf3; xadd WORD PTR [ecx],ax
1143
1144 # Tests for op regl regl/m32
1145         xacquire lock btc DWORD PTR [ecx],eax
1146         lock xacquire btc DWORD PTR [ecx],eax
1147         xrelease lock btc DWORD PTR [ecx],eax
1148         lock xrelease btc DWORD PTR [ecx],eax
1149         .byte 0xf0; .byte 0xf2; btc DWORD PTR [ecx],eax
1150         .byte 0xf0; .byte 0xf3; btc DWORD PTR [ecx],eax
1151         xacquire lock btr DWORD PTR [ecx],eax
1152         lock xacquire btr DWORD PTR [ecx],eax
1153         xrelease lock btr DWORD PTR [ecx],eax
1154         lock xrelease btr DWORD PTR [ecx],eax
1155         .byte 0xf0; .byte 0xf2; btr DWORD PTR [ecx],eax
1156         .byte 0xf0; .byte 0xf3; btr DWORD PTR [ecx],eax
1157         xacquire lock bts DWORD PTR [ecx],eax
1158         lock xacquire bts DWORD PTR [ecx],eax
1159         xrelease lock bts DWORD PTR [ecx],eax
1160         lock xrelease bts DWORD PTR [ecx],eax
1161         .byte 0xf0; .byte 0xf2; bts DWORD PTR [ecx],eax
1162         .byte 0xf0; .byte 0xf3; bts DWORD PTR [ecx],eax
1163         xacquire lock cmpxchg DWORD PTR [ecx],eax
1164         lock xacquire cmpxchg DWORD PTR [ecx],eax
1165         xrelease lock cmpxchg DWORD PTR [ecx],eax
1166         lock xrelease cmpxchg DWORD PTR [ecx],eax
1167         .byte 0xf0; .byte 0xf2; cmpxchg DWORD PTR [ecx],eax
1168         .byte 0xf0; .byte 0xf3; cmpxchg DWORD PTR [ecx],eax
1169         xacquire lock xadd DWORD PTR [ecx],eax
1170         lock xacquire xadd DWORD PTR [ecx],eax
1171         xrelease lock xadd DWORD PTR [ecx],eax
1172         lock xrelease xadd DWORD PTR [ecx],eax
1173         .byte 0xf0; .byte 0xf2; xadd DWORD PTR [ecx],eax
1174         .byte 0xf0; .byte 0xf3; xadd DWORD PTR [ecx],eax
1175
1176 # Tests for op regb/m8
1177         xacquire lock dec BYTE PTR [ecx]
1178         lock xacquire dec BYTE PTR [ecx]
1179         xrelease lock dec BYTE PTR [ecx]
1180         lock xrelease dec BYTE PTR [ecx]
1181         .byte 0xf0; .byte 0xf2; dec BYTE PTR [ecx]
1182         .byte 0xf0; .byte 0xf3; dec BYTE PTR [ecx]
1183         xacquire lock inc BYTE PTR [ecx]
1184         lock xacquire inc BYTE PTR [ecx]
1185         xrelease lock inc BYTE PTR [ecx]
1186         lock xrelease inc BYTE PTR [ecx]
1187         .byte 0xf0; .byte 0xf2; inc BYTE PTR [ecx]
1188         .byte 0xf0; .byte 0xf3; inc BYTE PTR [ecx]
1189         xacquire lock neg BYTE PTR [ecx]
1190         lock xacquire neg BYTE PTR [ecx]
1191         xrelease lock neg BYTE PTR [ecx]
1192         lock xrelease neg BYTE PTR [ecx]
1193         .byte 0xf0; .byte 0xf2; neg BYTE PTR [ecx]
1194         .byte 0xf0; .byte 0xf3; neg BYTE PTR [ecx]
1195         xacquire lock not BYTE PTR [ecx]
1196         lock xacquire not BYTE PTR [ecx]
1197         xrelease lock not BYTE PTR [ecx]
1198         lock xrelease not BYTE PTR [ecx]
1199         .byte 0xf0; .byte 0xf2; not BYTE PTR [ecx]
1200         .byte 0xf0; .byte 0xf3; not BYTE PTR [ecx]
1201
1202 # Tests for op regs/m16
1203         xacquire lock dec WORD PTR [ecx]
1204         lock xacquire dec WORD PTR [ecx]
1205         xrelease lock dec WORD PTR [ecx]
1206         lock xrelease dec WORD PTR [ecx]
1207         .byte 0xf0; .byte 0xf2; dec WORD PTR [ecx]
1208         .byte 0xf0; .byte 0xf3; dec WORD PTR [ecx]
1209         xacquire lock inc WORD PTR [ecx]
1210         lock xacquire inc WORD PTR [ecx]
1211         xrelease lock inc WORD PTR [ecx]
1212         lock xrelease inc WORD PTR [ecx]
1213         .byte 0xf0; .byte 0xf2; inc WORD PTR [ecx]
1214         .byte 0xf0; .byte 0xf3; inc WORD PTR [ecx]
1215         xacquire lock neg WORD PTR [ecx]
1216         lock xacquire neg WORD PTR [ecx]
1217         xrelease lock neg WORD PTR [ecx]
1218         lock xrelease neg WORD PTR [ecx]
1219         .byte 0xf0; .byte 0xf2; neg WORD PTR [ecx]
1220         .byte 0xf0; .byte 0xf3; neg WORD PTR [ecx]
1221         xacquire lock not WORD PTR [ecx]
1222         lock xacquire not WORD PTR [ecx]
1223         xrelease lock not WORD PTR [ecx]
1224         lock xrelease not WORD PTR [ecx]
1225         .byte 0xf0; .byte 0xf2; not WORD PTR [ecx]
1226         .byte 0xf0; .byte 0xf3; not WORD PTR [ecx]
1227
1228 # Tests for op regl/m32
1229         xacquire lock dec DWORD PTR [ecx]
1230         lock xacquire dec DWORD PTR [ecx]
1231         xrelease lock dec DWORD PTR [ecx]
1232         lock xrelease dec DWORD PTR [ecx]
1233         .byte 0xf0; .byte 0xf2; dec DWORD PTR [ecx]
1234         .byte 0xf0; .byte 0xf3; dec DWORD PTR [ecx]
1235         xacquire lock inc DWORD PTR [ecx]
1236         lock xacquire inc DWORD PTR [ecx]
1237         xrelease lock inc DWORD PTR [ecx]
1238         lock xrelease inc DWORD PTR [ecx]
1239         .byte 0xf0; .byte 0xf2; inc DWORD PTR [ecx]
1240         .byte 0xf0; .byte 0xf3; inc DWORD PTR [ecx]
1241         xacquire lock neg DWORD PTR [ecx]
1242         lock xacquire neg DWORD PTR [ecx]
1243         xrelease lock neg DWORD PTR [ecx]
1244         lock xrelease neg DWORD PTR [ecx]
1245         .byte 0xf0; .byte 0xf2; neg DWORD PTR [ecx]
1246         .byte 0xf0; .byte 0xf3; neg DWORD PTR [ecx]
1247         xacquire lock not DWORD PTR [ecx]
1248         lock xacquire not DWORD PTR [ecx]
1249         xrelease lock not DWORD PTR [ecx]
1250         lock xrelease not DWORD PTR [ecx]
1251         .byte 0xf0; .byte 0xf2; not DWORD PTR [ecx]
1252         .byte 0xf0; .byte 0xf3; not DWORD PTR [ecx]
1253
1254 # Tests for op m64
1255         xacquire lock cmpxchg8b QWORD PTR [ecx]
1256         lock xacquire cmpxchg8b QWORD PTR [ecx]
1257         xrelease lock cmpxchg8b QWORD PTR [ecx]
1258         lock xrelease cmpxchg8b QWORD PTR [ecx]
1259         .byte 0xf0; .byte 0xf2; cmpxchg8b QWORD PTR [ecx]
1260         .byte 0xf0; .byte 0xf3; cmpxchg8b QWORD PTR [ecx]
1261
1262 # Tests for op regb, regb/m8
1263         xacquire lock cmpxchg BYTE PTR [ecx],cl
1264         lock xacquire cmpxchg BYTE PTR [ecx],cl
1265         xrelease lock cmpxchg BYTE PTR [ecx],cl
1266         lock xrelease cmpxchg BYTE PTR [ecx],cl
1267         .byte 0xf0; .byte 0xf2; cmpxchg BYTE PTR [ecx],cl
1268         .byte 0xf0; .byte 0xf3; cmpxchg BYTE PTR [ecx],cl
1269         xacquire lock xadd BYTE PTR [ecx],cl
1270         lock xacquire xadd BYTE PTR [ecx],cl
1271         xrelease lock xadd BYTE PTR [ecx],cl
1272         lock xrelease xadd BYTE PTR [ecx],cl
1273         .byte 0xf0; .byte 0xf2; xadd BYTE PTR [ecx],cl
1274         .byte 0xf0; .byte 0xf3; xadd BYTE PTR [ecx],cl