i386: Also check R12-R15 registers when optimizing testq to testb
[deliverable/binutils-gdb.git] / gas / testsuite / gas / i386 / hle.s
CommitLineData
42164a71
L
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)
1212781b 334 xrelease movb %al,0x12345678
42164a71
L
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)
1212781b 389 xrelease movw %ax,0x12345678
42164a71
L
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)
1212781b 444 xrelease movl %eax,0x12345678
42164a71
L
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
This page took 0.425114 seconds and 4 git commands to generate.