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) | |
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 |