Commit | Line | Data |
---|---|---|
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) | |
334 | xacquire lock orb %al,(%ecx) | |
335 | lock xacquire orb %al,(%ecx) | |
336 | xrelease lock orb %al,(%ecx) | |
337 | lock xrelease orb %al,(%ecx) | |
338 | .byte 0xf0; .byte 0xf2; orb %al,(%ecx) | |
339 | .byte 0xf0; .byte 0xf3; orb %al,(%ecx) | |
340 | xacquire lock sbbb %al,(%ecx) | |
341 | lock xacquire sbbb %al,(%ecx) | |
342 | xrelease lock sbbb %al,(%ecx) | |
343 | lock xrelease sbbb %al,(%ecx) | |
344 | .byte 0xf0; .byte 0xf2; sbbb %al,(%ecx) | |
345 | .byte 0xf0; .byte 0xf3; sbbb %al,(%ecx) | |
346 | xacquire lock subb %al,(%ecx) | |
347 | lock xacquire subb %al,(%ecx) | |
348 | xrelease lock subb %al,(%ecx) | |
349 | lock xrelease subb %al,(%ecx) | |
350 | .byte 0xf0; .byte 0xf2; subb %al,(%ecx) | |
351 | .byte 0xf0; .byte 0xf3; subb %al,(%ecx) | |
352 | xacquire lock xchgb %al,(%ecx) | |
353 | lock xacquire xchgb %al,(%ecx) | |
354 | xacquire xchgb %al,(%ecx) | |
355 | xrelease lock xchgb %al,(%ecx) | |
356 | lock xrelease xchgb %al,(%ecx) | |
357 | xrelease xchgb %al,(%ecx) | |
358 | .byte 0xf0; .byte 0xf2; xchgb %al,(%ecx) | |
359 | .byte 0xf0; .byte 0xf3; xchgb %al,(%ecx) | |
360 | xacquire lock xorb %al,(%ecx) | |
361 | lock xacquire xorb %al,(%ecx) | |
362 | xrelease lock xorb %al,(%ecx) | |
363 | lock xrelease xorb %al,(%ecx) | |
364 | .byte 0xf0; .byte 0xf2; xorb %al,(%ecx) | |
365 | .byte 0xf0; .byte 0xf3; xorb %al,(%ecx) | |
366 | ||
367 | # Tests for op regs regs/m16 | |
368 | # Tests for op regs/m16 regs | |
369 | xacquire lock adcw %ax,(%ecx) | |
370 | lock xacquire adcw %ax,(%ecx) | |
371 | xrelease lock adcw %ax,(%ecx) | |
372 | lock xrelease adcw %ax,(%ecx) | |
373 | .byte 0xf0; .byte 0xf2; adcw %ax,(%ecx) | |
374 | .byte 0xf0; .byte 0xf3; adcw %ax,(%ecx) | |
375 | xacquire lock addw %ax,(%ecx) | |
376 | lock xacquire addw %ax,(%ecx) | |
377 | xrelease lock addw %ax,(%ecx) | |
378 | lock xrelease addw %ax,(%ecx) | |
379 | .byte 0xf0; .byte 0xf2; addw %ax,(%ecx) | |
380 | .byte 0xf0; .byte 0xf3; addw %ax,(%ecx) | |
381 | xacquire lock andw %ax,(%ecx) | |
382 | lock xacquire andw %ax,(%ecx) | |
383 | xrelease lock andw %ax,(%ecx) | |
384 | lock xrelease andw %ax,(%ecx) | |
385 | .byte 0xf0; .byte 0xf2; andw %ax,(%ecx) | |
386 | .byte 0xf0; .byte 0xf3; andw %ax,(%ecx) | |
387 | xrelease movw %ax,(%ecx) | |
388 | xacquire lock orw %ax,(%ecx) | |
389 | lock xacquire orw %ax,(%ecx) | |
390 | xrelease lock orw %ax,(%ecx) | |
391 | lock xrelease orw %ax,(%ecx) | |
392 | .byte 0xf0; .byte 0xf2; orw %ax,(%ecx) | |
393 | .byte 0xf0; .byte 0xf3; orw %ax,(%ecx) | |
394 | xacquire lock sbbw %ax,(%ecx) | |
395 | lock xacquire sbbw %ax,(%ecx) | |
396 | xrelease lock sbbw %ax,(%ecx) | |
397 | lock xrelease sbbw %ax,(%ecx) | |
398 | .byte 0xf0; .byte 0xf2; sbbw %ax,(%ecx) | |
399 | .byte 0xf0; .byte 0xf3; sbbw %ax,(%ecx) | |
400 | xacquire lock subw %ax,(%ecx) | |
401 | lock xacquire subw %ax,(%ecx) | |
402 | xrelease lock subw %ax,(%ecx) | |
403 | lock xrelease subw %ax,(%ecx) | |
404 | .byte 0xf0; .byte 0xf2; subw %ax,(%ecx) | |
405 | .byte 0xf0; .byte 0xf3; subw %ax,(%ecx) | |
406 | xacquire lock xchgw %ax,(%ecx) | |
407 | lock xacquire xchgw %ax,(%ecx) | |
408 | xacquire xchgw %ax,(%ecx) | |
409 | xrelease lock xchgw %ax,(%ecx) | |
410 | lock xrelease xchgw %ax,(%ecx) | |
411 | xrelease xchgw %ax,(%ecx) | |
412 | .byte 0xf0; .byte 0xf2; xchgw %ax,(%ecx) | |
413 | .byte 0xf0; .byte 0xf3; xchgw %ax,(%ecx) | |
414 | xacquire lock xorw %ax,(%ecx) | |
415 | lock xacquire xorw %ax,(%ecx) | |
416 | xrelease lock xorw %ax,(%ecx) | |
417 | lock xrelease xorw %ax,(%ecx) | |
418 | .byte 0xf0; .byte 0xf2; xorw %ax,(%ecx) | |
419 | .byte 0xf0; .byte 0xf3; xorw %ax,(%ecx) | |
420 | ||
421 | # Tests for op regl regl/m32 | |
422 | # Tests for op regl/m32 regl | |
423 | xacquire lock adcl %eax,(%ecx) | |
424 | lock xacquire adcl %eax,(%ecx) | |
425 | xrelease lock adcl %eax,(%ecx) | |
426 | lock xrelease adcl %eax,(%ecx) | |
427 | .byte 0xf0; .byte 0xf2; adcl %eax,(%ecx) | |
428 | .byte 0xf0; .byte 0xf3; adcl %eax,(%ecx) | |
429 | xacquire lock addl %eax,(%ecx) | |
430 | lock xacquire addl %eax,(%ecx) | |
431 | xrelease lock addl %eax,(%ecx) | |
432 | lock xrelease addl %eax,(%ecx) | |
433 | .byte 0xf0; .byte 0xf2; addl %eax,(%ecx) | |
434 | .byte 0xf0; .byte 0xf3; addl %eax,(%ecx) | |
435 | xacquire lock andl %eax,(%ecx) | |
436 | lock xacquire andl %eax,(%ecx) | |
437 | xrelease lock andl %eax,(%ecx) | |
438 | lock xrelease andl %eax,(%ecx) | |
439 | .byte 0xf0; .byte 0xf2; andl %eax,(%ecx) | |
440 | .byte 0xf0; .byte 0xf3; andl %eax,(%ecx) | |
441 | xrelease movl %eax,(%ecx) | |
442 | xacquire lock orl %eax,(%ecx) | |
443 | lock xacquire orl %eax,(%ecx) | |
444 | xrelease lock orl %eax,(%ecx) | |
445 | lock xrelease orl %eax,(%ecx) | |
446 | .byte 0xf0; .byte 0xf2; orl %eax,(%ecx) | |
447 | .byte 0xf0; .byte 0xf3; orl %eax,(%ecx) | |
448 | xacquire lock sbbl %eax,(%ecx) | |
449 | lock xacquire sbbl %eax,(%ecx) | |
450 | xrelease lock sbbl %eax,(%ecx) | |
451 | lock xrelease sbbl %eax,(%ecx) | |
452 | .byte 0xf0; .byte 0xf2; sbbl %eax,(%ecx) | |
453 | .byte 0xf0; .byte 0xf3; sbbl %eax,(%ecx) | |
454 | xacquire lock subl %eax,(%ecx) | |
455 | lock xacquire subl %eax,(%ecx) | |
456 | xrelease lock subl %eax,(%ecx) | |
457 | lock xrelease subl %eax,(%ecx) | |
458 | .byte 0xf0; .byte 0xf2; subl %eax,(%ecx) | |
459 | .byte 0xf0; .byte 0xf3; subl %eax,(%ecx) | |
460 | xacquire lock xchgl %eax,(%ecx) | |
461 | lock xacquire xchgl %eax,(%ecx) | |
462 | xacquire xchgl %eax,(%ecx) | |
463 | xrelease lock xchgl %eax,(%ecx) | |
464 | lock xrelease xchgl %eax,(%ecx) | |
465 | xrelease xchgl %eax,(%ecx) | |
466 | .byte 0xf0; .byte 0xf2; xchgl %eax,(%ecx) | |
467 | .byte 0xf0; .byte 0xf3; xchgl %eax,(%ecx) | |
468 | xacquire lock xorl %eax,(%ecx) | |
469 | lock xacquire xorl %eax,(%ecx) | |
470 | xrelease lock xorl %eax,(%ecx) | |
471 | lock xrelease xorl %eax,(%ecx) | |
472 | .byte 0xf0; .byte 0xf2; xorl %eax,(%ecx) | |
473 | .byte 0xf0; .byte 0xf3; xorl %eax,(%ecx) | |
474 | ||
475 | # Tests for op regs, regs/m16 | |
476 | xacquire lock btcw %ax,(%ecx) | |
477 | lock xacquire btcw %ax,(%ecx) | |
478 | xrelease lock btcw %ax,(%ecx) | |
479 | lock xrelease btcw %ax,(%ecx) | |
480 | .byte 0xf0; .byte 0xf2; btcw %ax,(%ecx) | |
481 | .byte 0xf0; .byte 0xf3; btcw %ax,(%ecx) | |
482 | xacquire lock btrw %ax,(%ecx) | |
483 | lock xacquire btrw %ax,(%ecx) | |
484 | xrelease lock btrw %ax,(%ecx) | |
485 | lock xrelease btrw %ax,(%ecx) | |
486 | .byte 0xf0; .byte 0xf2; btrw %ax,(%ecx) | |
487 | .byte 0xf0; .byte 0xf3; btrw %ax,(%ecx) | |
488 | xacquire lock btsw %ax,(%ecx) | |
489 | lock xacquire btsw %ax,(%ecx) | |
490 | xrelease lock btsw %ax,(%ecx) | |
491 | lock xrelease btsw %ax,(%ecx) | |
492 | .byte 0xf0; .byte 0xf2; btsw %ax,(%ecx) | |
493 | .byte 0xf0; .byte 0xf3; btsw %ax,(%ecx) | |
494 | xacquire lock cmpxchgw %ax,(%ecx) | |
495 | lock xacquire cmpxchgw %ax,(%ecx) | |
496 | xrelease lock cmpxchgw %ax,(%ecx) | |
497 | lock xrelease cmpxchgw %ax,(%ecx) | |
498 | .byte 0xf0; .byte 0xf2; cmpxchgw %ax,(%ecx) | |
499 | .byte 0xf0; .byte 0xf3; cmpxchgw %ax,(%ecx) | |
500 | xacquire lock xaddw %ax,(%ecx) | |
501 | lock xacquire xaddw %ax,(%ecx) | |
502 | xrelease lock xaddw %ax,(%ecx) | |
503 | lock xrelease xaddw %ax,(%ecx) | |
504 | .byte 0xf0; .byte 0xf2; xaddw %ax,(%ecx) | |
505 | .byte 0xf0; .byte 0xf3; xaddw %ax,(%ecx) | |
506 | ||
507 | # Tests for op regl regl/m32 | |
508 | xacquire lock btcl %eax,(%ecx) | |
509 | lock xacquire btcl %eax,(%ecx) | |
510 | xrelease lock btcl %eax,(%ecx) | |
511 | lock xrelease btcl %eax,(%ecx) | |
512 | .byte 0xf0; .byte 0xf2; btcl %eax,(%ecx) | |
513 | .byte 0xf0; .byte 0xf3; btcl %eax,(%ecx) | |
514 | xacquire lock btrl %eax,(%ecx) | |
515 | lock xacquire btrl %eax,(%ecx) | |
516 | xrelease lock btrl %eax,(%ecx) | |
517 | lock xrelease btrl %eax,(%ecx) | |
518 | .byte 0xf0; .byte 0xf2; btrl %eax,(%ecx) | |
519 | .byte 0xf0; .byte 0xf3; btrl %eax,(%ecx) | |
520 | xacquire lock btsl %eax,(%ecx) | |
521 | lock xacquire btsl %eax,(%ecx) | |
522 | xrelease lock btsl %eax,(%ecx) | |
523 | lock xrelease btsl %eax,(%ecx) | |
524 | .byte 0xf0; .byte 0xf2; btsl %eax,(%ecx) | |
525 | .byte 0xf0; .byte 0xf3; btsl %eax,(%ecx) | |
526 | xacquire lock cmpxchgl %eax,(%ecx) | |
527 | lock xacquire cmpxchgl %eax,(%ecx) | |
528 | xrelease lock cmpxchgl %eax,(%ecx) | |
529 | lock xrelease cmpxchgl %eax,(%ecx) | |
530 | .byte 0xf0; .byte 0xf2; cmpxchgl %eax,(%ecx) | |
531 | .byte 0xf0; .byte 0xf3; cmpxchgl %eax,(%ecx) | |
532 | xacquire lock xaddl %eax,(%ecx) | |
533 | lock xacquire xaddl %eax,(%ecx) | |
534 | xrelease lock xaddl %eax,(%ecx) | |
535 | lock xrelease xaddl %eax,(%ecx) | |
536 | .byte 0xf0; .byte 0xf2; xaddl %eax,(%ecx) | |
537 | .byte 0xf0; .byte 0xf3; xaddl %eax,(%ecx) | |
538 | ||
539 | # Tests for op regb/m8 | |
540 | xacquire lock decb (%ecx) | |
541 | lock xacquire decb (%ecx) | |
542 | xrelease lock decb (%ecx) | |
543 | lock xrelease decb (%ecx) | |
544 | .byte 0xf0; .byte 0xf2; decb (%ecx) | |
545 | .byte 0xf0; .byte 0xf3; decb (%ecx) | |
546 | xacquire lock incb (%ecx) | |
547 | lock xacquire incb (%ecx) | |
548 | xrelease lock incb (%ecx) | |
549 | lock xrelease incb (%ecx) | |
550 | .byte 0xf0; .byte 0xf2; incb (%ecx) | |
551 | .byte 0xf0; .byte 0xf3; incb (%ecx) | |
552 | xacquire lock negb (%ecx) | |
553 | lock xacquire negb (%ecx) | |
554 | xrelease lock negb (%ecx) | |
555 | lock xrelease negb (%ecx) | |
556 | .byte 0xf0; .byte 0xf2; negb (%ecx) | |
557 | .byte 0xf0; .byte 0xf3; negb (%ecx) | |
558 | xacquire lock notb (%ecx) | |
559 | lock xacquire notb (%ecx) | |
560 | xrelease lock notb (%ecx) | |
561 | lock xrelease notb (%ecx) | |
562 | .byte 0xf0; .byte 0xf2; notb (%ecx) | |
563 | .byte 0xf0; .byte 0xf3; notb (%ecx) | |
564 | ||
565 | # Tests for op regs/m16 | |
566 | xacquire lock decw (%ecx) | |
567 | lock xacquire decw (%ecx) | |
568 | xrelease lock decw (%ecx) | |
569 | lock xrelease decw (%ecx) | |
570 | .byte 0xf0; .byte 0xf2; decw (%ecx) | |
571 | .byte 0xf0; .byte 0xf3; decw (%ecx) | |
572 | xacquire lock incw (%ecx) | |
573 | lock xacquire incw (%ecx) | |
574 | xrelease lock incw (%ecx) | |
575 | lock xrelease incw (%ecx) | |
576 | .byte 0xf0; .byte 0xf2; incw (%ecx) | |
577 | .byte 0xf0; .byte 0xf3; incw (%ecx) | |
578 | xacquire lock negw (%ecx) | |
579 | lock xacquire negw (%ecx) | |
580 | xrelease lock negw (%ecx) | |
581 | lock xrelease negw (%ecx) | |
582 | .byte 0xf0; .byte 0xf2; negw (%ecx) | |
583 | .byte 0xf0; .byte 0xf3; negw (%ecx) | |
584 | xacquire lock notw (%ecx) | |
585 | lock xacquire notw (%ecx) | |
586 | xrelease lock notw (%ecx) | |
587 | lock xrelease notw (%ecx) | |
588 | .byte 0xf0; .byte 0xf2; notw (%ecx) | |
589 | .byte 0xf0; .byte 0xf3; notw (%ecx) | |
590 | ||
591 | # Tests for op regl/m32 | |
592 | xacquire lock decl (%ecx) | |
593 | lock xacquire decl (%ecx) | |
594 | xrelease lock decl (%ecx) | |
595 | lock xrelease decl (%ecx) | |
596 | .byte 0xf0; .byte 0xf2; decl (%ecx) | |
597 | .byte 0xf0; .byte 0xf3; decl (%ecx) | |
598 | xacquire lock incl (%ecx) | |
599 | lock xacquire incl (%ecx) | |
600 | xrelease lock incl (%ecx) | |
601 | lock xrelease incl (%ecx) | |
602 | .byte 0xf0; .byte 0xf2; incl (%ecx) | |
603 | .byte 0xf0; .byte 0xf3; incl (%ecx) | |
604 | xacquire lock negl (%ecx) | |
605 | lock xacquire negl (%ecx) | |
606 | xrelease lock negl (%ecx) | |
607 | lock xrelease negl (%ecx) | |
608 | .byte 0xf0; .byte 0xf2; negl (%ecx) | |
609 | .byte 0xf0; .byte 0xf3; negl (%ecx) | |
610 | xacquire lock notl (%ecx) | |
611 | lock xacquire notl (%ecx) | |
612 | xrelease lock notl (%ecx) | |
613 | lock xrelease notl (%ecx) | |
614 | .byte 0xf0; .byte 0xf2; notl (%ecx) | |
615 | .byte 0xf0; .byte 0xf3; notl (%ecx) | |
616 | ||
617 | # Tests for op m64 | |
618 | xacquire lock cmpxchg8bq (%ecx) | |
619 | lock xacquire cmpxchg8bq (%ecx) | |
620 | xrelease lock cmpxchg8bq (%ecx) | |
621 | lock xrelease cmpxchg8bq (%ecx) | |
622 | .byte 0xf0; .byte 0xf2; cmpxchg8bq (%ecx) | |
623 | .byte 0xf0; .byte 0xf3; cmpxchg8bq (%ecx) | |
624 | ||
625 | # Tests for op regb, regb/m8 | |
626 | xacquire lock cmpxchgb %cl,(%ecx) | |
627 | lock xacquire cmpxchgb %cl,(%ecx) | |
628 | xrelease lock cmpxchgb %cl,(%ecx) | |
629 | lock xrelease cmpxchgb %cl,(%ecx) | |
630 | .byte 0xf0; .byte 0xf2; cmpxchgb %cl,(%ecx) | |
631 | .byte 0xf0; .byte 0xf3; cmpxchgb %cl,(%ecx) | |
632 | xacquire lock xaddb %cl,(%ecx) | |
633 | lock xacquire xaddb %cl,(%ecx) | |
634 | xrelease lock xaddb %cl,(%ecx) | |
635 | lock xrelease xaddb %cl,(%ecx) | |
636 | .byte 0xf0; .byte 0xf2; xaddb %cl,(%ecx) | |
637 | .byte 0xf0; .byte 0xf3; xaddb %cl,(%ecx) | |
638 | ||
639 | .intel_syntax noprefix | |
640 | ||
641 | # Tests for op imm8 regb/m8 | |
642 | xacquire lock adc BYTE PTR [ecx],100 | |
643 | lock xacquire adc BYTE PTR [ecx],100 | |
644 | xrelease lock adc BYTE PTR [ecx],100 | |
645 | lock xrelease adc BYTE PTR [ecx],100 | |
646 | .byte 0xf0; .byte 0xf2; adc BYTE PTR [ecx],100 | |
647 | .byte 0xf0; .byte 0xf3; adc BYTE PTR [ecx],100 | |
648 | xacquire lock add BYTE PTR [ecx],100 | |
649 | lock xacquire add BYTE PTR [ecx],100 | |
650 | xrelease lock add BYTE PTR [ecx],100 | |
651 | lock xrelease add BYTE PTR [ecx],100 | |
652 | .byte 0xf0; .byte 0xf2; add BYTE PTR [ecx],100 | |
653 | .byte 0xf0; .byte 0xf3; add BYTE PTR [ecx],100 | |
654 | xacquire lock and BYTE PTR [ecx],100 | |
655 | lock xacquire and BYTE PTR [ecx],100 | |
656 | xrelease lock and BYTE PTR [ecx],100 | |
657 | lock xrelease and BYTE PTR [ecx],100 | |
658 | .byte 0xf0; .byte 0xf2; and BYTE PTR [ecx],100 | |
659 | .byte 0xf0; .byte 0xf3; and BYTE PTR [ecx],100 | |
660 | xrelease mov BYTE PTR [ecx],100 | |
661 | xacquire lock or BYTE PTR [ecx],100 | |
662 | lock xacquire or BYTE PTR [ecx],100 | |
663 | xrelease lock or BYTE PTR [ecx],100 | |
664 | lock xrelease or BYTE PTR [ecx],100 | |
665 | .byte 0xf0; .byte 0xf2; or BYTE PTR [ecx],100 | |
666 | .byte 0xf0; .byte 0xf3; or BYTE PTR [ecx],100 | |
667 | xacquire lock sbb BYTE PTR [ecx],100 | |
668 | lock xacquire sbb BYTE PTR [ecx],100 | |
669 | xrelease lock sbb BYTE PTR [ecx],100 | |
670 | lock xrelease sbb BYTE PTR [ecx],100 | |
671 | .byte 0xf0; .byte 0xf2; sbb BYTE PTR [ecx],100 | |
672 | .byte 0xf0; .byte 0xf3; sbb BYTE PTR [ecx],100 | |
673 | xacquire lock sub BYTE PTR [ecx],100 | |
674 | lock xacquire sub BYTE PTR [ecx],100 | |
675 | xrelease lock sub BYTE PTR [ecx],100 | |
676 | lock xrelease sub BYTE PTR [ecx],100 | |
677 | .byte 0xf0; .byte 0xf2; sub BYTE PTR [ecx],100 | |
678 | .byte 0xf0; .byte 0xf3; sub BYTE PTR [ecx],100 | |
679 | xacquire lock xor BYTE PTR [ecx],100 | |
680 | lock xacquire xor BYTE PTR [ecx],100 | |
681 | xrelease lock xor BYTE PTR [ecx],100 | |
682 | lock xrelease xor BYTE PTR [ecx],100 | |
683 | .byte 0xf0; .byte 0xf2; xor BYTE PTR [ecx],100 | |
684 | .byte 0xf0; .byte 0xf3; xor BYTE PTR [ecx],100 | |
685 | ||
686 | # Tests for op imm16 regs/m16 | |
687 | xacquire lock adc WORD PTR [ecx],1000 | |
688 | lock xacquire adc WORD PTR [ecx],1000 | |
689 | xrelease lock adc WORD PTR [ecx],1000 | |
690 | lock xrelease adc WORD PTR [ecx],1000 | |
691 | .byte 0xf0; .byte 0xf2; adc WORD PTR [ecx],1000 | |
692 | .byte 0xf0; .byte 0xf3; adc WORD PTR [ecx],1000 | |
693 | xacquire lock add WORD PTR [ecx],1000 | |
694 | lock xacquire add WORD PTR [ecx],1000 | |
695 | xrelease lock add WORD PTR [ecx],1000 | |
696 | lock xrelease add WORD PTR [ecx],1000 | |
697 | .byte 0xf0; .byte 0xf2; add WORD PTR [ecx],1000 | |
698 | .byte 0xf0; .byte 0xf3; add WORD PTR [ecx],1000 | |
699 | xacquire lock and WORD PTR [ecx],1000 | |
700 | lock xacquire and WORD PTR [ecx],1000 | |
701 | xrelease lock and WORD PTR [ecx],1000 | |
702 | lock xrelease and WORD PTR [ecx],1000 | |
703 | .byte 0xf0; .byte 0xf2; and WORD PTR [ecx],1000 | |
704 | .byte 0xf0; .byte 0xf3; and WORD PTR [ecx],1000 | |
705 | xrelease mov WORD PTR [ecx],1000 | |
706 | xacquire lock or WORD PTR [ecx],1000 | |
707 | lock xacquire or WORD PTR [ecx],1000 | |
708 | xrelease lock or WORD PTR [ecx],1000 | |
709 | lock xrelease or WORD PTR [ecx],1000 | |
710 | .byte 0xf0; .byte 0xf2; or WORD PTR [ecx],1000 | |
711 | .byte 0xf0; .byte 0xf3; or WORD PTR [ecx],1000 | |
712 | xacquire lock sbb WORD PTR [ecx],1000 | |
713 | lock xacquire sbb WORD PTR [ecx],1000 | |
714 | xrelease lock sbb WORD PTR [ecx],1000 | |
715 | lock xrelease sbb WORD PTR [ecx],1000 | |
716 | .byte 0xf0; .byte 0xf2; sbb WORD PTR [ecx],1000 | |
717 | .byte 0xf0; .byte 0xf3; sbb WORD PTR [ecx],1000 | |
718 | xacquire lock sub WORD PTR [ecx],1000 | |
719 | lock xacquire sub WORD PTR [ecx],1000 | |
720 | xrelease lock sub WORD PTR [ecx],1000 | |
721 | lock xrelease sub WORD PTR [ecx],1000 | |
722 | .byte 0xf0; .byte 0xf2; sub WORD PTR [ecx],1000 | |
723 | .byte 0xf0; .byte 0xf3; sub WORD PTR [ecx],1000 | |
724 | xacquire lock xor WORD PTR [ecx],1000 | |
725 | lock xacquire xor WORD PTR [ecx],1000 | |
726 | xrelease lock xor WORD PTR [ecx],1000 | |
727 | lock xrelease xor WORD PTR [ecx],1000 | |
728 | .byte 0xf0; .byte 0xf2; xor WORD PTR [ecx],1000 | |
729 | .byte 0xf0; .byte 0xf3; xor WORD PTR [ecx],1000 | |
730 | ||
731 | # Tests for op imm32 regl/m32 | |
732 | xacquire lock adc DWORD PTR [ecx],10000000 | |
733 | lock xacquire adc DWORD PTR [ecx],10000000 | |
734 | xrelease lock adc DWORD PTR [ecx],10000000 | |
735 | lock xrelease adc DWORD PTR [ecx],10000000 | |
736 | .byte 0xf0; .byte 0xf2; adc DWORD PTR [ecx],10000000 | |
737 | .byte 0xf0; .byte 0xf3; adc DWORD PTR [ecx],10000000 | |
738 | xacquire lock add DWORD PTR [ecx],10000000 | |
739 | lock xacquire add DWORD PTR [ecx],10000000 | |
740 | xrelease lock add DWORD PTR [ecx],10000000 | |
741 | lock xrelease add DWORD PTR [ecx],10000000 | |
742 | .byte 0xf0; .byte 0xf2; add DWORD PTR [ecx],10000000 | |
743 | .byte 0xf0; .byte 0xf3; add DWORD PTR [ecx],10000000 | |
744 | xacquire lock and DWORD PTR [ecx],10000000 | |
745 | lock xacquire and DWORD PTR [ecx],10000000 | |
746 | xrelease lock and DWORD PTR [ecx],10000000 | |
747 | lock xrelease and DWORD PTR [ecx],10000000 | |
748 | .byte 0xf0; .byte 0xf2; and DWORD PTR [ecx],10000000 | |
749 | .byte 0xf0; .byte 0xf3; and DWORD PTR [ecx],10000000 | |
750 | xrelease mov DWORD PTR [ecx],10000000 | |
751 | xacquire lock or DWORD PTR [ecx],10000000 | |
752 | lock xacquire or DWORD PTR [ecx],10000000 | |
753 | xrelease lock or DWORD PTR [ecx],10000000 | |
754 | lock xrelease or DWORD PTR [ecx],10000000 | |
755 | .byte 0xf0; .byte 0xf2; or DWORD PTR [ecx],10000000 | |
756 | .byte 0xf0; .byte 0xf3; or DWORD PTR [ecx],10000000 | |
757 | xacquire lock sbb DWORD PTR [ecx],10000000 | |
758 | lock xacquire sbb DWORD PTR [ecx],10000000 | |
759 | xrelease lock sbb DWORD PTR [ecx],10000000 | |
760 | lock xrelease sbb DWORD PTR [ecx],10000000 | |
761 | .byte 0xf0; .byte 0xf2; sbb DWORD PTR [ecx],10000000 | |
762 | .byte 0xf0; .byte 0xf3; sbb DWORD PTR [ecx],10000000 | |
763 | xacquire lock sub DWORD PTR [ecx],10000000 | |
764 | lock xacquire sub DWORD PTR [ecx],10000000 | |
765 | xrelease lock sub DWORD PTR [ecx],10000000 | |
766 | lock xrelease sub DWORD PTR [ecx],10000000 | |
767 | .byte 0xf0; .byte 0xf2; sub DWORD PTR [ecx],10000000 | |
768 | .byte 0xf0; .byte 0xf3; sub DWORD PTR [ecx],10000000 | |
769 | xacquire lock xor DWORD PTR [ecx],10000000 | |
770 | lock xacquire xor DWORD PTR [ecx],10000000 | |
771 | xrelease lock xor DWORD PTR [ecx],10000000 | |
772 | lock xrelease xor DWORD PTR [ecx],10000000 | |
773 | .byte 0xf0; .byte 0xf2; xor DWORD PTR [ecx],10000000 | |
774 | .byte 0xf0; .byte 0xf3; xor DWORD PTR [ecx],10000000 | |
775 | ||
776 | # Tests for op imm8 regs/m16 | |
777 | xacquire lock adc WORD PTR [ecx],100 | |
778 | lock xacquire adc WORD PTR [ecx],100 | |
779 | xrelease lock adc WORD PTR [ecx],100 | |
780 | lock xrelease adc WORD PTR [ecx],100 | |
781 | .byte 0xf0; .byte 0xf2; adc WORD PTR [ecx],100 | |
782 | .byte 0xf0; .byte 0xf3; adc WORD PTR [ecx],100 | |
783 | xacquire lock add WORD PTR [ecx],100 | |
784 | lock xacquire add WORD PTR [ecx],100 | |
785 | xrelease lock add WORD PTR [ecx],100 | |
786 | lock xrelease add WORD PTR [ecx],100 | |
787 | .byte 0xf0; .byte 0xf2; add WORD PTR [ecx],100 | |
788 | .byte 0xf0; .byte 0xf3; add WORD PTR [ecx],100 | |
789 | xacquire lock and WORD PTR [ecx],100 | |
790 | lock xacquire and WORD PTR [ecx],100 | |
791 | xrelease lock and WORD PTR [ecx],100 | |
792 | lock xrelease and WORD PTR [ecx],100 | |
793 | .byte 0xf0; .byte 0xf2; and WORD PTR [ecx],100 | |
794 | .byte 0xf0; .byte 0xf3; and WORD PTR [ecx],100 | |
795 | xacquire lock btc WORD PTR [ecx],100 | |
796 | lock xacquire btc WORD PTR [ecx],100 | |
797 | xrelease lock btc WORD PTR [ecx],100 | |
798 | lock xrelease btc WORD PTR [ecx],100 | |
799 | .byte 0xf0; .byte 0xf2; btc WORD PTR [ecx],100 | |
800 | .byte 0xf0; .byte 0xf3; btc WORD PTR [ecx],100 | |
801 | xacquire lock btr WORD PTR [ecx],100 | |
802 | lock xacquire btr WORD PTR [ecx],100 | |
803 | xrelease lock btr WORD PTR [ecx],100 | |
804 | lock xrelease btr WORD PTR [ecx],100 | |
805 | .byte 0xf0; .byte 0xf2; btr WORD PTR [ecx],100 | |
806 | .byte 0xf0; .byte 0xf3; btr WORD PTR [ecx],100 | |
807 | xacquire lock bts WORD PTR [ecx],100 | |
808 | lock xacquire bts WORD PTR [ecx],100 | |
809 | xrelease lock bts WORD PTR [ecx],100 | |
810 | lock xrelease bts WORD PTR [ecx],100 | |
811 | .byte 0xf0; .byte 0xf2; bts WORD PTR [ecx],100 | |
812 | .byte 0xf0; .byte 0xf3; bts WORD PTR [ecx],100 | |
813 | xrelease mov WORD PTR [ecx],100 | |
814 | xacquire lock or WORD PTR [ecx],100 | |
815 | lock xacquire or WORD PTR [ecx],100 | |
816 | xrelease lock or WORD PTR [ecx],100 | |
817 | lock xrelease or WORD PTR [ecx],100 | |
818 | .byte 0xf0; .byte 0xf2; or WORD PTR [ecx],100 | |
819 | .byte 0xf0; .byte 0xf3; or WORD PTR [ecx],100 | |
820 | xacquire lock sbb WORD PTR [ecx],100 | |
821 | lock xacquire sbb WORD PTR [ecx],100 | |
822 | xrelease lock sbb WORD PTR [ecx],100 | |
823 | lock xrelease sbb WORD PTR [ecx],100 | |
824 | .byte 0xf0; .byte 0xf2; sbb WORD PTR [ecx],100 | |
825 | .byte 0xf0; .byte 0xf3; sbb WORD PTR [ecx],100 | |
826 | xacquire lock sub WORD PTR [ecx],100 | |
827 | lock xacquire sub WORD PTR [ecx],100 | |
828 | xrelease lock sub WORD PTR [ecx],100 | |
829 | lock xrelease sub WORD PTR [ecx],100 | |
830 | .byte 0xf0; .byte 0xf2; sub WORD PTR [ecx],100 | |
831 | .byte 0xf0; .byte 0xf3; sub WORD PTR [ecx],100 | |
832 | xacquire lock xor WORD PTR [ecx],100 | |
833 | lock xacquire xor WORD PTR [ecx],100 | |
834 | xrelease lock xor WORD PTR [ecx],100 | |
835 | lock xrelease xor WORD PTR [ecx],100 | |
836 | .byte 0xf0; .byte 0xf2; xor WORD PTR [ecx],100 | |
837 | .byte 0xf0; .byte 0xf3; xor WORD PTR [ecx],100 | |
838 | ||
839 | # Tests for op imm8 regl/m32 | |
840 | xacquire lock adc DWORD PTR [ecx],100 | |
841 | lock xacquire adc DWORD PTR [ecx],100 | |
842 | xrelease lock adc DWORD PTR [ecx],100 | |
843 | lock xrelease adc DWORD PTR [ecx],100 | |
844 | .byte 0xf0; .byte 0xf2; adc DWORD PTR [ecx],100 | |
845 | .byte 0xf0; .byte 0xf3; adc DWORD PTR [ecx],100 | |
846 | xacquire lock add DWORD PTR [ecx],100 | |
847 | lock xacquire add DWORD PTR [ecx],100 | |
848 | xrelease lock add DWORD PTR [ecx],100 | |
849 | lock xrelease add DWORD PTR [ecx],100 | |
850 | .byte 0xf0; .byte 0xf2; add DWORD PTR [ecx],100 | |
851 | .byte 0xf0; .byte 0xf3; add DWORD PTR [ecx],100 | |
852 | xacquire lock and DWORD PTR [ecx],100 | |
853 | lock xacquire and DWORD PTR [ecx],100 | |
854 | xrelease lock and DWORD PTR [ecx],100 | |
855 | lock xrelease and DWORD PTR [ecx],100 | |
856 | .byte 0xf0; .byte 0xf2; and DWORD PTR [ecx],100 | |
857 | .byte 0xf0; .byte 0xf3; and DWORD PTR [ecx],100 | |
858 | xacquire lock btc DWORD PTR [ecx],100 | |
859 | lock xacquire btc DWORD PTR [ecx],100 | |
860 | xrelease lock btc DWORD PTR [ecx],100 | |
861 | lock xrelease btc DWORD PTR [ecx],100 | |
862 | .byte 0xf0; .byte 0xf2; btc DWORD PTR [ecx],100 | |
863 | .byte 0xf0; .byte 0xf3; btc DWORD PTR [ecx],100 | |
864 | xacquire lock btr DWORD PTR [ecx],100 | |
865 | lock xacquire btr DWORD PTR [ecx],100 | |
866 | xrelease lock btr DWORD PTR [ecx],100 | |
867 | lock xrelease btr DWORD PTR [ecx],100 | |
868 | .byte 0xf0; .byte 0xf2; btr DWORD PTR [ecx],100 | |
869 | .byte 0xf0; .byte 0xf3; btr DWORD PTR [ecx],100 | |
870 | xacquire lock bts DWORD PTR [ecx],100 | |
871 | lock xacquire bts DWORD PTR [ecx],100 | |
872 | xrelease lock bts DWORD PTR [ecx],100 | |
873 | lock xrelease bts DWORD PTR [ecx],100 | |
874 | .byte 0xf0; .byte 0xf2; bts DWORD PTR [ecx],100 | |
875 | .byte 0xf0; .byte 0xf3; bts DWORD PTR [ecx],100 | |
876 | xrelease mov DWORD PTR [ecx],100 | |
877 | xacquire lock or DWORD PTR [ecx],100 | |
878 | lock xacquire or DWORD PTR [ecx],100 | |
879 | xrelease lock or DWORD PTR [ecx],100 | |
880 | lock xrelease or DWORD PTR [ecx],100 | |
881 | .byte 0xf0; .byte 0xf2; or DWORD PTR [ecx],100 | |
882 | .byte 0xf0; .byte 0xf3; or DWORD PTR [ecx],100 | |
883 | xacquire lock sbb DWORD PTR [ecx],100 | |
884 | lock xacquire sbb DWORD PTR [ecx],100 | |
885 | xrelease lock sbb DWORD PTR [ecx],100 | |
886 | lock xrelease sbb DWORD PTR [ecx],100 | |
887 | .byte 0xf0; .byte 0xf2; sbb DWORD PTR [ecx],100 | |
888 | .byte 0xf0; .byte 0xf3; sbb DWORD PTR [ecx],100 | |
889 | xacquire lock sub DWORD PTR [ecx],100 | |
890 | lock xacquire sub DWORD PTR [ecx],100 | |
891 | xrelease lock sub DWORD PTR [ecx],100 | |
892 | lock xrelease sub DWORD PTR [ecx],100 | |
893 | .byte 0xf0; .byte 0xf2; sub DWORD PTR [ecx],100 | |
894 | .byte 0xf0; .byte 0xf3; sub DWORD PTR [ecx],100 | |
895 | xacquire lock xor DWORD PTR [ecx],100 | |
896 | lock xacquire xor DWORD PTR [ecx],100 | |
897 | xrelease lock xor DWORD PTR [ecx],100 | |
898 | lock xrelease xor DWORD PTR [ecx],100 | |
899 | .byte 0xf0; .byte 0xf2; xor DWORD PTR [ecx],100 | |
900 | .byte 0xf0; .byte 0xf3; xor DWORD PTR [ecx],100 | |
901 | ||
902 | # Tests for op imm8 regb/m8 | |
903 | xacquire lock adc BYTE PTR [ecx],100 | |
904 | lock xacquire adc BYTE PTR [ecx],100 | |
905 | xrelease lock adc BYTE PTR [ecx],100 | |
906 | lock xrelease adc BYTE PTR [ecx],100 | |
907 | .byte 0xf0; .byte 0xf2; adc BYTE PTR [ecx],100 | |
908 | .byte 0xf0; .byte 0xf3; adc BYTE PTR [ecx],100 | |
909 | xacquire lock add BYTE PTR [ecx],100 | |
910 | lock xacquire add BYTE PTR [ecx],100 | |
911 | xrelease lock add BYTE PTR [ecx],100 | |
912 | lock xrelease add BYTE PTR [ecx],100 | |
913 | .byte 0xf0; .byte 0xf2; add BYTE PTR [ecx],100 | |
914 | .byte 0xf0; .byte 0xf3; add BYTE PTR [ecx],100 | |
915 | xacquire lock and BYTE PTR [ecx],100 | |
916 | lock xacquire and BYTE PTR [ecx],100 | |
917 | xrelease lock and BYTE PTR [ecx],100 | |
918 | lock xrelease and BYTE PTR [ecx],100 | |
919 | .byte 0xf0; .byte 0xf2; and BYTE PTR [ecx],100 | |
920 | .byte 0xf0; .byte 0xf3; and BYTE PTR [ecx],100 | |
921 | xrelease mov BYTE PTR [ecx],100 | |
922 | xacquire lock or BYTE PTR [ecx],100 | |
923 | lock xacquire or BYTE PTR [ecx],100 | |
924 | xrelease lock or BYTE PTR [ecx],100 | |
925 | lock xrelease or BYTE PTR [ecx],100 | |
926 | .byte 0xf0; .byte 0xf2; or BYTE PTR [ecx],100 | |
927 | .byte 0xf0; .byte 0xf3; or BYTE PTR [ecx],100 | |
928 | xacquire lock sbb BYTE PTR [ecx],100 | |
929 | lock xacquire sbb BYTE PTR [ecx],100 | |
930 | xrelease lock sbb BYTE PTR [ecx],100 | |
931 | lock xrelease sbb BYTE PTR [ecx],100 | |
932 | .byte 0xf0; .byte 0xf2; sbb BYTE PTR [ecx],100 | |
933 | .byte 0xf0; .byte 0xf3; sbb BYTE PTR [ecx],100 | |
934 | xacquire lock sub BYTE PTR [ecx],100 | |
935 | lock xacquire sub BYTE PTR [ecx],100 | |
936 | xrelease lock sub BYTE PTR [ecx],100 | |
937 | lock xrelease sub BYTE PTR [ecx],100 | |
938 | .byte 0xf0; .byte 0xf2; sub BYTE PTR [ecx],100 | |
939 | .byte 0xf0; .byte 0xf3; sub BYTE PTR [ecx],100 | |
940 | xacquire lock xor BYTE PTR [ecx],100 | |
941 | lock xacquire xor BYTE PTR [ecx],100 | |
942 | xrelease lock xor BYTE PTR [ecx],100 | |
943 | lock xrelease xor BYTE PTR [ecx],100 | |
944 | .byte 0xf0; .byte 0xf2; xor BYTE PTR [ecx],100 | |
945 | .byte 0xf0; .byte 0xf3; xor BYTE PTR [ecx],100 | |
946 | ||
947 | # Tests for op regb regb/m8 | |
948 | # Tests for op regb/m8 regb | |
949 | xacquire lock adc BYTE PTR [ecx],al | |
950 | lock xacquire adc BYTE PTR [ecx],al | |
951 | xrelease lock adc BYTE PTR [ecx],al | |
952 | lock xrelease adc BYTE PTR [ecx],al | |
953 | .byte 0xf0; .byte 0xf2; adc BYTE PTR [ecx],al | |
954 | .byte 0xf0; .byte 0xf3; adc BYTE PTR [ecx],al | |
955 | xacquire lock add BYTE PTR [ecx],al | |
956 | lock xacquire add BYTE PTR [ecx],al | |
957 | xrelease lock add BYTE PTR [ecx],al | |
958 | lock xrelease add BYTE PTR [ecx],al | |
959 | .byte 0xf0; .byte 0xf2; add BYTE PTR [ecx],al | |
960 | .byte 0xf0; .byte 0xf3; add BYTE PTR [ecx],al | |
961 | xacquire lock and BYTE PTR [ecx],al | |
962 | lock xacquire and BYTE PTR [ecx],al | |
963 | xrelease lock and BYTE PTR [ecx],al | |
964 | lock xrelease and BYTE PTR [ecx],al | |
965 | .byte 0xf0; .byte 0xf2; and BYTE PTR [ecx],al | |
966 | .byte 0xf0; .byte 0xf3; and BYTE PTR [ecx],al | |
967 | xrelease mov BYTE PTR [ecx],al | |
968 | xacquire lock or BYTE PTR [ecx],al | |
969 | lock xacquire or BYTE PTR [ecx],al | |
970 | xrelease lock or BYTE PTR [ecx],al | |
971 | lock xrelease or BYTE PTR [ecx],al | |
972 | .byte 0xf0; .byte 0xf2; or BYTE PTR [ecx],al | |
973 | .byte 0xf0; .byte 0xf3; or BYTE PTR [ecx],al | |
974 | xacquire lock sbb BYTE PTR [ecx],al | |
975 | lock xacquire sbb BYTE PTR [ecx],al | |
976 | xrelease lock sbb BYTE PTR [ecx],al | |
977 | lock xrelease sbb BYTE PTR [ecx],al | |
978 | .byte 0xf0; .byte 0xf2; sbb BYTE PTR [ecx],al | |
979 | .byte 0xf0; .byte 0xf3; sbb BYTE PTR [ecx],al | |
980 | xacquire lock sub BYTE PTR [ecx],al | |
981 | lock xacquire sub BYTE PTR [ecx],al | |
982 | xrelease lock sub BYTE PTR [ecx],al | |
983 | lock xrelease sub BYTE PTR [ecx],al | |
984 | .byte 0xf0; .byte 0xf2; sub BYTE PTR [ecx],al | |
985 | .byte 0xf0; .byte 0xf3; sub BYTE PTR [ecx],al | |
986 | xacquire lock xchg BYTE PTR [ecx],al | |
987 | lock xacquire xchg BYTE PTR [ecx],al | |
988 | xacquire xchg BYTE PTR [ecx],al | |
989 | xrelease lock xchg BYTE PTR [ecx],al | |
990 | lock xrelease xchg BYTE PTR [ecx],al | |
991 | xrelease xchg BYTE PTR [ecx],al | |
992 | .byte 0xf0; .byte 0xf2; xchg BYTE PTR [ecx],al | |
993 | .byte 0xf0; .byte 0xf3; xchg BYTE PTR [ecx],al | |
994 | xacquire lock xor BYTE PTR [ecx],al | |
995 | lock xacquire xor BYTE PTR [ecx],al | |
996 | xrelease lock xor BYTE PTR [ecx],al | |
997 | lock xrelease xor BYTE PTR [ecx],al | |
998 | .byte 0xf0; .byte 0xf2; xor BYTE PTR [ecx],al | |
999 | .byte 0xf0; .byte 0xf3; xor BYTE PTR [ecx],al | |
1000 | ||
1001 | # Tests for op regs regs/m16 | |
1002 | # Tests for op regs/m16 regs | |
1003 | xacquire lock adc WORD PTR [ecx],ax | |
1004 | lock xacquire adc WORD PTR [ecx],ax | |
1005 | xrelease lock adc WORD PTR [ecx],ax | |
1006 | lock xrelease adc WORD PTR [ecx],ax | |
1007 | .byte 0xf0; .byte 0xf2; adc WORD PTR [ecx],ax | |
1008 | .byte 0xf0; .byte 0xf3; adc WORD PTR [ecx],ax | |
1009 | xacquire lock add WORD PTR [ecx],ax | |
1010 | lock xacquire add WORD PTR [ecx],ax | |
1011 | xrelease lock add WORD PTR [ecx],ax | |
1012 | lock xrelease add WORD PTR [ecx],ax | |
1013 | .byte 0xf0; .byte 0xf2; add WORD PTR [ecx],ax | |
1014 | .byte 0xf0; .byte 0xf3; add WORD PTR [ecx],ax | |
1015 | xacquire lock and WORD PTR [ecx],ax | |
1016 | lock xacquire and WORD PTR [ecx],ax | |
1017 | xrelease lock and WORD PTR [ecx],ax | |
1018 | lock xrelease and WORD PTR [ecx],ax | |
1019 | .byte 0xf0; .byte 0xf2; and WORD PTR [ecx],ax | |
1020 | .byte 0xf0; .byte 0xf3; and WORD PTR [ecx],ax | |
1021 | xrelease mov WORD PTR [ecx],ax | |
1022 | xacquire lock or WORD PTR [ecx],ax | |
1023 | lock xacquire or WORD PTR [ecx],ax | |
1024 | xrelease lock or WORD PTR [ecx],ax | |
1025 | lock xrelease or WORD PTR [ecx],ax | |
1026 | .byte 0xf0; .byte 0xf2; or WORD PTR [ecx],ax | |
1027 | .byte 0xf0; .byte 0xf3; or WORD PTR [ecx],ax | |
1028 | xacquire lock sbb WORD PTR [ecx],ax | |
1029 | lock xacquire sbb WORD PTR [ecx],ax | |
1030 | xrelease lock sbb WORD PTR [ecx],ax | |
1031 | lock xrelease sbb WORD PTR [ecx],ax | |
1032 | .byte 0xf0; .byte 0xf2; sbb WORD PTR [ecx],ax | |
1033 | .byte 0xf0; .byte 0xf3; sbb WORD PTR [ecx],ax | |
1034 | xacquire lock sub WORD PTR [ecx],ax | |
1035 | lock xacquire sub WORD PTR [ecx],ax | |
1036 | xrelease lock sub WORD PTR [ecx],ax | |
1037 | lock xrelease sub WORD PTR [ecx],ax | |
1038 | .byte 0xf0; .byte 0xf2; sub WORD PTR [ecx],ax | |
1039 | .byte 0xf0; .byte 0xf3; sub WORD PTR [ecx],ax | |
1040 | xacquire lock xchg WORD PTR [ecx],ax | |
1041 | lock xacquire xchg WORD PTR [ecx],ax | |
1042 | xacquire xchg WORD PTR [ecx],ax | |
1043 | xrelease lock xchg WORD PTR [ecx],ax | |
1044 | lock xrelease xchg WORD PTR [ecx],ax | |
1045 | xrelease xchg WORD PTR [ecx],ax | |
1046 | .byte 0xf0; .byte 0xf2; xchg WORD PTR [ecx],ax | |
1047 | .byte 0xf0; .byte 0xf3; xchg WORD PTR [ecx],ax | |
1048 | xacquire lock xor WORD PTR [ecx],ax | |
1049 | lock xacquire xor WORD PTR [ecx],ax | |
1050 | xrelease lock xor WORD PTR [ecx],ax | |
1051 | lock xrelease xor WORD PTR [ecx],ax | |
1052 | .byte 0xf0; .byte 0xf2; xor WORD PTR [ecx],ax | |
1053 | .byte 0xf0; .byte 0xf3; xor WORD PTR [ecx],ax | |
1054 | ||
1055 | # Tests for op regl regl/m32 | |
1056 | # Tests for op regl/m32 regl | |
1057 | xacquire lock adc DWORD PTR [ecx],eax | |
1058 | lock xacquire adc DWORD PTR [ecx],eax | |
1059 | xrelease lock adc DWORD PTR [ecx],eax | |
1060 | lock xrelease adc DWORD PTR [ecx],eax | |
1061 | .byte 0xf0; .byte 0xf2; adc DWORD PTR [ecx],eax | |
1062 | .byte 0xf0; .byte 0xf3; adc DWORD PTR [ecx],eax | |
1063 | xacquire lock add DWORD PTR [ecx],eax | |
1064 | lock xacquire add DWORD PTR [ecx],eax | |
1065 | xrelease lock add DWORD PTR [ecx],eax | |
1066 | lock xrelease add DWORD PTR [ecx],eax | |
1067 | .byte 0xf0; .byte 0xf2; add DWORD PTR [ecx],eax | |
1068 | .byte 0xf0; .byte 0xf3; add DWORD PTR [ecx],eax | |
1069 | xacquire lock and DWORD PTR [ecx],eax | |
1070 | lock xacquire and DWORD PTR [ecx],eax | |
1071 | xrelease lock and DWORD PTR [ecx],eax | |
1072 | lock xrelease and DWORD PTR [ecx],eax | |
1073 | .byte 0xf0; .byte 0xf2; and DWORD PTR [ecx],eax | |
1074 | .byte 0xf0; .byte 0xf3; and DWORD PTR [ecx],eax | |
1075 | xrelease mov DWORD PTR [ecx],eax | |
1076 | xacquire lock or DWORD PTR [ecx],eax | |
1077 | lock xacquire or DWORD PTR [ecx],eax | |
1078 | xrelease lock or DWORD PTR [ecx],eax | |
1079 | lock xrelease or DWORD PTR [ecx],eax | |
1080 | .byte 0xf0; .byte 0xf2; or DWORD PTR [ecx],eax | |
1081 | .byte 0xf0; .byte 0xf3; or DWORD PTR [ecx],eax | |
1082 | xacquire lock sbb DWORD PTR [ecx],eax | |
1083 | lock xacquire sbb DWORD PTR [ecx],eax | |
1084 | xrelease lock sbb DWORD PTR [ecx],eax | |
1085 | lock xrelease sbb DWORD PTR [ecx],eax | |
1086 | .byte 0xf0; .byte 0xf2; sbb DWORD PTR [ecx],eax | |
1087 | .byte 0xf0; .byte 0xf3; sbb DWORD PTR [ecx],eax | |
1088 | xacquire lock sub DWORD PTR [ecx],eax | |
1089 | lock xacquire sub DWORD PTR [ecx],eax | |
1090 | xrelease lock sub DWORD PTR [ecx],eax | |
1091 | lock xrelease sub DWORD PTR [ecx],eax | |
1092 | .byte 0xf0; .byte 0xf2; sub DWORD PTR [ecx],eax | |
1093 | .byte 0xf0; .byte 0xf3; sub DWORD PTR [ecx],eax | |
1094 | xacquire lock xchg DWORD PTR [ecx],eax | |
1095 | lock xacquire xchg DWORD PTR [ecx],eax | |
1096 | xacquire xchg DWORD PTR [ecx],eax | |
1097 | xrelease lock xchg DWORD PTR [ecx],eax | |
1098 | lock xrelease xchg DWORD PTR [ecx],eax | |
1099 | xrelease xchg DWORD PTR [ecx],eax | |
1100 | .byte 0xf0; .byte 0xf2; xchg DWORD PTR [ecx],eax | |
1101 | .byte 0xf0; .byte 0xf3; xchg DWORD PTR [ecx],eax | |
1102 | xacquire lock xor DWORD PTR [ecx],eax | |
1103 | lock xacquire xor DWORD PTR [ecx],eax | |
1104 | xrelease lock xor DWORD PTR [ecx],eax | |
1105 | lock xrelease xor DWORD PTR [ecx],eax | |
1106 | .byte 0xf0; .byte 0xf2; xor DWORD PTR [ecx],eax | |
1107 | .byte 0xf0; .byte 0xf3; xor DWORD PTR [ecx],eax | |
1108 | ||
1109 | # Tests for op regs, regs/m16 | |
1110 | xacquire lock btc WORD PTR [ecx],ax | |
1111 | lock xacquire btc WORD PTR [ecx],ax | |
1112 | xrelease lock btc WORD PTR [ecx],ax | |
1113 | lock xrelease btc WORD PTR [ecx],ax | |
1114 | .byte 0xf0; .byte 0xf2; btc WORD PTR [ecx],ax | |
1115 | .byte 0xf0; .byte 0xf3; btc WORD PTR [ecx],ax | |
1116 | xacquire lock btr WORD PTR [ecx],ax | |
1117 | lock xacquire btr WORD PTR [ecx],ax | |
1118 | xrelease lock btr WORD PTR [ecx],ax | |
1119 | lock xrelease btr WORD PTR [ecx],ax | |
1120 | .byte 0xf0; .byte 0xf2; btr WORD PTR [ecx],ax | |
1121 | .byte 0xf0; .byte 0xf3; btr WORD PTR [ecx],ax | |
1122 | xacquire lock bts WORD PTR [ecx],ax | |
1123 | lock xacquire bts WORD PTR [ecx],ax | |
1124 | xrelease lock bts WORD PTR [ecx],ax | |
1125 | lock xrelease bts WORD PTR [ecx],ax | |
1126 | .byte 0xf0; .byte 0xf2; bts WORD PTR [ecx],ax | |
1127 | .byte 0xf0; .byte 0xf3; bts WORD PTR [ecx],ax | |
1128 | xacquire lock cmpxchg WORD PTR [ecx],ax | |
1129 | lock xacquire cmpxchg WORD PTR [ecx],ax | |
1130 | xrelease lock cmpxchg WORD PTR [ecx],ax | |
1131 | lock xrelease cmpxchg WORD PTR [ecx],ax | |
1132 | .byte 0xf0; .byte 0xf2; cmpxchg WORD PTR [ecx],ax | |
1133 | .byte 0xf0; .byte 0xf3; cmpxchg WORD PTR [ecx],ax | |
1134 | xacquire lock xadd WORD PTR [ecx],ax | |
1135 | lock xacquire xadd WORD PTR [ecx],ax | |
1136 | xrelease lock xadd WORD PTR [ecx],ax | |
1137 | lock xrelease xadd WORD PTR [ecx],ax | |
1138 | .byte 0xf0; .byte 0xf2; xadd WORD PTR [ecx],ax | |
1139 | .byte 0xf0; .byte 0xf3; xadd WORD PTR [ecx],ax | |
1140 | ||
1141 | # Tests for op regl regl/m32 | |
1142 | xacquire lock btc DWORD PTR [ecx],eax | |
1143 | lock xacquire btc DWORD PTR [ecx],eax | |
1144 | xrelease lock btc DWORD PTR [ecx],eax | |
1145 | lock xrelease btc DWORD PTR [ecx],eax | |
1146 | .byte 0xf0; .byte 0xf2; btc DWORD PTR [ecx],eax | |
1147 | .byte 0xf0; .byte 0xf3; btc DWORD PTR [ecx],eax | |
1148 | xacquire lock btr DWORD PTR [ecx],eax | |
1149 | lock xacquire btr DWORD PTR [ecx],eax | |
1150 | xrelease lock btr DWORD PTR [ecx],eax | |
1151 | lock xrelease btr DWORD PTR [ecx],eax | |
1152 | .byte 0xf0; .byte 0xf2; btr DWORD PTR [ecx],eax | |
1153 | .byte 0xf0; .byte 0xf3; btr DWORD PTR [ecx],eax | |
1154 | xacquire lock bts DWORD PTR [ecx],eax | |
1155 | lock xacquire bts DWORD PTR [ecx],eax | |
1156 | xrelease lock bts DWORD PTR [ecx],eax | |
1157 | lock xrelease bts DWORD PTR [ecx],eax | |
1158 | .byte 0xf0; .byte 0xf2; bts DWORD PTR [ecx],eax | |
1159 | .byte 0xf0; .byte 0xf3; bts DWORD PTR [ecx],eax | |
1160 | xacquire lock cmpxchg DWORD PTR [ecx],eax | |
1161 | lock xacquire cmpxchg DWORD PTR [ecx],eax | |
1162 | xrelease lock cmpxchg DWORD PTR [ecx],eax | |
1163 | lock xrelease cmpxchg DWORD PTR [ecx],eax | |
1164 | .byte 0xf0; .byte 0xf2; cmpxchg DWORD PTR [ecx],eax | |
1165 | .byte 0xf0; .byte 0xf3; cmpxchg DWORD PTR [ecx],eax | |
1166 | xacquire lock xadd DWORD PTR [ecx],eax | |
1167 | lock xacquire xadd DWORD PTR [ecx],eax | |
1168 | xrelease lock xadd DWORD PTR [ecx],eax | |
1169 | lock xrelease xadd DWORD PTR [ecx],eax | |
1170 | .byte 0xf0; .byte 0xf2; xadd DWORD PTR [ecx],eax | |
1171 | .byte 0xf0; .byte 0xf3; xadd DWORD PTR [ecx],eax | |
1172 | ||
1173 | # Tests for op regb/m8 | |
1174 | xacquire lock dec BYTE PTR [ecx] | |
1175 | lock xacquire dec BYTE PTR [ecx] | |
1176 | xrelease lock dec BYTE PTR [ecx] | |
1177 | lock xrelease dec BYTE PTR [ecx] | |
1178 | .byte 0xf0; .byte 0xf2; dec BYTE PTR [ecx] | |
1179 | .byte 0xf0; .byte 0xf3; dec BYTE PTR [ecx] | |
1180 | xacquire lock inc BYTE PTR [ecx] | |
1181 | lock xacquire inc BYTE PTR [ecx] | |
1182 | xrelease lock inc BYTE PTR [ecx] | |
1183 | lock xrelease inc BYTE PTR [ecx] | |
1184 | .byte 0xf0; .byte 0xf2; inc BYTE PTR [ecx] | |
1185 | .byte 0xf0; .byte 0xf3; inc BYTE PTR [ecx] | |
1186 | xacquire lock neg BYTE PTR [ecx] | |
1187 | lock xacquire neg BYTE PTR [ecx] | |
1188 | xrelease lock neg BYTE PTR [ecx] | |
1189 | lock xrelease neg BYTE PTR [ecx] | |
1190 | .byte 0xf0; .byte 0xf2; neg BYTE PTR [ecx] | |
1191 | .byte 0xf0; .byte 0xf3; neg BYTE PTR [ecx] | |
1192 | xacquire lock not BYTE PTR [ecx] | |
1193 | lock xacquire not BYTE PTR [ecx] | |
1194 | xrelease lock not BYTE PTR [ecx] | |
1195 | lock xrelease not BYTE PTR [ecx] | |
1196 | .byte 0xf0; .byte 0xf2; not BYTE PTR [ecx] | |
1197 | .byte 0xf0; .byte 0xf3; not BYTE PTR [ecx] | |
1198 | ||
1199 | # Tests for op regs/m16 | |
1200 | xacquire lock dec WORD PTR [ecx] | |
1201 | lock xacquire dec WORD PTR [ecx] | |
1202 | xrelease lock dec WORD PTR [ecx] | |
1203 | lock xrelease dec WORD PTR [ecx] | |
1204 | .byte 0xf0; .byte 0xf2; dec WORD PTR [ecx] | |
1205 | .byte 0xf0; .byte 0xf3; dec WORD PTR [ecx] | |
1206 | xacquire lock inc WORD PTR [ecx] | |
1207 | lock xacquire inc WORD PTR [ecx] | |
1208 | xrelease lock inc WORD PTR [ecx] | |
1209 | lock xrelease inc WORD PTR [ecx] | |
1210 | .byte 0xf0; .byte 0xf2; inc WORD PTR [ecx] | |
1211 | .byte 0xf0; .byte 0xf3; inc WORD PTR [ecx] | |
1212 | xacquire lock neg WORD PTR [ecx] | |
1213 | lock xacquire neg WORD PTR [ecx] | |
1214 | xrelease lock neg WORD PTR [ecx] | |
1215 | lock xrelease neg WORD PTR [ecx] | |
1216 | .byte 0xf0; .byte 0xf2; neg WORD PTR [ecx] | |
1217 | .byte 0xf0; .byte 0xf3; neg WORD PTR [ecx] | |
1218 | xacquire lock not WORD PTR [ecx] | |
1219 | lock xacquire not WORD PTR [ecx] | |
1220 | xrelease lock not WORD PTR [ecx] | |
1221 | lock xrelease not WORD PTR [ecx] | |
1222 | .byte 0xf0; .byte 0xf2; not WORD PTR [ecx] | |
1223 | .byte 0xf0; .byte 0xf3; not WORD PTR [ecx] | |
1224 | ||
1225 | # Tests for op regl/m32 | |
1226 | xacquire lock dec DWORD PTR [ecx] | |
1227 | lock xacquire dec DWORD PTR [ecx] | |
1228 | xrelease lock dec DWORD PTR [ecx] | |
1229 | lock xrelease dec DWORD PTR [ecx] | |
1230 | .byte 0xf0; .byte 0xf2; dec DWORD PTR [ecx] | |
1231 | .byte 0xf0; .byte 0xf3; dec DWORD PTR [ecx] | |
1232 | xacquire lock inc DWORD PTR [ecx] | |
1233 | lock xacquire inc DWORD PTR [ecx] | |
1234 | xrelease lock inc DWORD PTR [ecx] | |
1235 | lock xrelease inc DWORD PTR [ecx] | |
1236 | .byte 0xf0; .byte 0xf2; inc DWORD PTR [ecx] | |
1237 | .byte 0xf0; .byte 0xf3; inc DWORD PTR [ecx] | |
1238 | xacquire lock neg DWORD PTR [ecx] | |
1239 | lock xacquire neg DWORD PTR [ecx] | |
1240 | xrelease lock neg DWORD PTR [ecx] | |
1241 | lock xrelease neg DWORD PTR [ecx] | |
1242 | .byte 0xf0; .byte 0xf2; neg DWORD PTR [ecx] | |
1243 | .byte 0xf0; .byte 0xf3; neg DWORD PTR [ecx] | |
1244 | xacquire lock not DWORD PTR [ecx] | |
1245 | lock xacquire not DWORD PTR [ecx] | |
1246 | xrelease lock not DWORD PTR [ecx] | |
1247 | lock xrelease not DWORD PTR [ecx] | |
1248 | .byte 0xf0; .byte 0xf2; not DWORD PTR [ecx] | |
1249 | .byte 0xf0; .byte 0xf3; not DWORD PTR [ecx] | |
1250 | ||
1251 | # Tests for op m64 | |
1252 | xacquire lock cmpxchg8b QWORD PTR [ecx] | |
1253 | lock xacquire cmpxchg8b QWORD PTR [ecx] | |
1254 | xrelease lock cmpxchg8b QWORD PTR [ecx] | |
1255 | lock xrelease cmpxchg8b QWORD PTR [ecx] | |
1256 | .byte 0xf0; .byte 0xf2; cmpxchg8b QWORD PTR [ecx] | |
1257 | .byte 0xf0; .byte 0xf3; cmpxchg8b QWORD PTR [ecx] | |
1258 | ||
1259 | # Tests for op regb, regb/m8 | |
1260 | xacquire lock cmpxchg BYTE PTR [ecx],cl | |
1261 | lock xacquire cmpxchg BYTE PTR [ecx],cl | |
1262 | xrelease lock cmpxchg BYTE PTR [ecx],cl | |
1263 | lock xrelease cmpxchg BYTE PTR [ecx],cl | |
1264 | .byte 0xf0; .byte 0xf2; cmpxchg BYTE PTR [ecx],cl | |
1265 | .byte 0xf0; .byte 0xf3; cmpxchg BYTE PTR [ecx],cl | |
1266 | xacquire lock xadd BYTE PTR [ecx],cl | |
1267 | lock xacquire xadd BYTE PTR [ecx],cl | |
1268 | xrelease lock xadd BYTE PTR [ecx],cl | |
1269 | lock xrelease xadd BYTE PTR [ecx],cl | |
1270 | .byte 0xf0; .byte 0xf2; xadd BYTE PTR [ecx],cl | |
1271 | .byte 0xf0; .byte 0xf3; xadd BYTE PTR [ecx],cl |