Commit | Line | Data |
---|---|---|
42164a71 L |
1 | # Check 64bit HLE instructions |
2 | ||
3 | .allow_index_reg | |
4 | .text | |
5 | _start: | |
6 | ||
7 | ||
8 | # Tests for op imm32 rax | |
9 | ||
10 | # Tests for op imm8 regb/m8 | |
11 | xacquire lock adcb $100,(%rcx) | |
12 | lock xacquire adcb $100,(%rcx) | |
13 | xrelease lock adcb $100,(%rcx) | |
14 | lock xrelease adcb $100,(%rcx) | |
15 | .byte 0xf0; .byte 0xf2; adcb $100,(%rcx) | |
16 | .byte 0xf0; .byte 0xf3; adcb $100,(%rcx) | |
17 | xacquire lock addb $100,(%rcx) | |
18 | lock xacquire addb $100,(%rcx) | |
19 | xrelease lock addb $100,(%rcx) | |
20 | lock xrelease addb $100,(%rcx) | |
21 | .byte 0xf0; .byte 0xf2; addb $100,(%rcx) | |
22 | .byte 0xf0; .byte 0xf3; addb $100,(%rcx) | |
23 | xacquire lock andb $100,(%rcx) | |
24 | lock xacquire andb $100,(%rcx) | |
25 | xrelease lock andb $100,(%rcx) | |
26 | lock xrelease andb $100,(%rcx) | |
27 | .byte 0xf0; .byte 0xf2; andb $100,(%rcx) | |
28 | .byte 0xf0; .byte 0xf3; andb $100,(%rcx) | |
29 | xrelease movb $100,(%rcx) | |
30 | xacquire lock orb $100,(%rcx) | |
31 | lock xacquire orb $100,(%rcx) | |
32 | xrelease lock orb $100,(%rcx) | |
33 | lock xrelease orb $100,(%rcx) | |
34 | .byte 0xf0; .byte 0xf2; orb $100,(%rcx) | |
35 | .byte 0xf0; .byte 0xf3; orb $100,(%rcx) | |
36 | xacquire lock sbbb $100,(%rcx) | |
37 | lock xacquire sbbb $100,(%rcx) | |
38 | xrelease lock sbbb $100,(%rcx) | |
39 | lock xrelease sbbb $100,(%rcx) | |
40 | .byte 0xf0; .byte 0xf2; sbbb $100,(%rcx) | |
41 | .byte 0xf0; .byte 0xf3; sbbb $100,(%rcx) | |
42 | xacquire lock subb $100,(%rcx) | |
43 | lock xacquire subb $100,(%rcx) | |
44 | xrelease lock subb $100,(%rcx) | |
45 | lock xrelease subb $100,(%rcx) | |
46 | .byte 0xf0; .byte 0xf2; subb $100,(%rcx) | |
47 | .byte 0xf0; .byte 0xf3; subb $100,(%rcx) | |
48 | xacquire lock xorb $100,(%rcx) | |
49 | lock xacquire xorb $100,(%rcx) | |
50 | xrelease lock xorb $100,(%rcx) | |
51 | lock xrelease xorb $100,(%rcx) | |
52 | .byte 0xf0; .byte 0xf2; xorb $100,(%rcx) | |
53 | .byte 0xf0; .byte 0xf3; xorb $100,(%rcx) | |
54 | ||
55 | # Tests for op imm16 regs/m16 | |
56 | xacquire lock adcw $1000,(%rcx) | |
57 | lock xacquire adcw $1000,(%rcx) | |
58 | xrelease lock adcw $1000,(%rcx) | |
59 | lock xrelease adcw $1000,(%rcx) | |
60 | .byte 0xf0; .byte 0xf2; adcw $1000,(%rcx) | |
61 | .byte 0xf0; .byte 0xf3; adcw $1000,(%rcx) | |
62 | xacquire lock addw $1000,(%rcx) | |
63 | lock xacquire addw $1000,(%rcx) | |
64 | xrelease lock addw $1000,(%rcx) | |
65 | lock xrelease addw $1000,(%rcx) | |
66 | .byte 0xf0; .byte 0xf2; addw $1000,(%rcx) | |
67 | .byte 0xf0; .byte 0xf3; addw $1000,(%rcx) | |
68 | xacquire lock andw $1000,(%rcx) | |
69 | lock xacquire andw $1000,(%rcx) | |
70 | xrelease lock andw $1000,(%rcx) | |
71 | lock xrelease andw $1000,(%rcx) | |
72 | .byte 0xf0; .byte 0xf2; andw $1000,(%rcx) | |
73 | .byte 0xf0; .byte 0xf3; andw $1000,(%rcx) | |
74 | xrelease movw $1000,(%rcx) | |
75 | xacquire lock orw $1000,(%rcx) | |
76 | lock xacquire orw $1000,(%rcx) | |
77 | xrelease lock orw $1000,(%rcx) | |
78 | lock xrelease orw $1000,(%rcx) | |
79 | .byte 0xf0; .byte 0xf2; orw $1000,(%rcx) | |
80 | .byte 0xf0; .byte 0xf3; orw $1000,(%rcx) | |
81 | xacquire lock sbbw $1000,(%rcx) | |
82 | lock xacquire sbbw $1000,(%rcx) | |
83 | xrelease lock sbbw $1000,(%rcx) | |
84 | lock xrelease sbbw $1000,(%rcx) | |
85 | .byte 0xf0; .byte 0xf2; sbbw $1000,(%rcx) | |
86 | .byte 0xf0; .byte 0xf3; sbbw $1000,(%rcx) | |
87 | xacquire lock subw $1000,(%rcx) | |
88 | lock xacquire subw $1000,(%rcx) | |
89 | xrelease lock subw $1000,(%rcx) | |
90 | lock xrelease subw $1000,(%rcx) | |
91 | .byte 0xf0; .byte 0xf2; subw $1000,(%rcx) | |
92 | .byte 0xf0; .byte 0xf3; subw $1000,(%rcx) | |
93 | xacquire lock xorw $1000,(%rcx) | |
94 | lock xacquire xorw $1000,(%rcx) | |
95 | xrelease lock xorw $1000,(%rcx) | |
96 | lock xrelease xorw $1000,(%rcx) | |
97 | .byte 0xf0; .byte 0xf2; xorw $1000,(%rcx) | |
98 | .byte 0xf0; .byte 0xf3; xorw $1000,(%rcx) | |
99 | ||
100 | # Tests for op imm32 regl/m32 | |
101 | xacquire lock adcl $10000000,(%rcx) | |
102 | lock xacquire adcl $10000000,(%rcx) | |
103 | xrelease lock adcl $10000000,(%rcx) | |
104 | lock xrelease adcl $10000000,(%rcx) | |
105 | .byte 0xf0; .byte 0xf2; adcl $10000000,(%rcx) | |
106 | .byte 0xf0; .byte 0xf3; adcl $10000000,(%rcx) | |
107 | xacquire lock addl $10000000,(%rcx) | |
108 | lock xacquire addl $10000000,(%rcx) | |
109 | xrelease lock addl $10000000,(%rcx) | |
110 | lock xrelease addl $10000000,(%rcx) | |
111 | .byte 0xf0; .byte 0xf2; addl $10000000,(%rcx) | |
112 | .byte 0xf0; .byte 0xf3; addl $10000000,(%rcx) | |
113 | xacquire lock andl $10000000,(%rcx) | |
114 | lock xacquire andl $10000000,(%rcx) | |
115 | xrelease lock andl $10000000,(%rcx) | |
116 | lock xrelease andl $10000000,(%rcx) | |
117 | .byte 0xf0; .byte 0xf2; andl $10000000,(%rcx) | |
118 | .byte 0xf0; .byte 0xf3; andl $10000000,(%rcx) | |
119 | xrelease movl $10000000,(%rcx) | |
120 | xacquire lock orl $10000000,(%rcx) | |
121 | lock xacquire orl $10000000,(%rcx) | |
122 | xrelease lock orl $10000000,(%rcx) | |
123 | lock xrelease orl $10000000,(%rcx) | |
124 | .byte 0xf0; .byte 0xf2; orl $10000000,(%rcx) | |
125 | .byte 0xf0; .byte 0xf3; orl $10000000,(%rcx) | |
126 | xacquire lock sbbl $10000000,(%rcx) | |
127 | lock xacquire sbbl $10000000,(%rcx) | |
128 | xrelease lock sbbl $10000000,(%rcx) | |
129 | lock xrelease sbbl $10000000,(%rcx) | |
130 | .byte 0xf0; .byte 0xf2; sbbl $10000000,(%rcx) | |
131 | .byte 0xf0; .byte 0xf3; sbbl $10000000,(%rcx) | |
132 | xacquire lock subl $10000000,(%rcx) | |
133 | lock xacquire subl $10000000,(%rcx) | |
134 | xrelease lock subl $10000000,(%rcx) | |
135 | lock xrelease subl $10000000,(%rcx) | |
136 | .byte 0xf0; .byte 0xf2; subl $10000000,(%rcx) | |
137 | .byte 0xf0; .byte 0xf3; subl $10000000,(%rcx) | |
138 | xacquire lock xorl $10000000,(%rcx) | |
139 | lock xacquire xorl $10000000,(%rcx) | |
140 | xrelease lock xorl $10000000,(%rcx) | |
141 | lock xrelease xorl $10000000,(%rcx) | |
142 | .byte 0xf0; .byte 0xf2; xorl $10000000,(%rcx) | |
143 | .byte 0xf0; .byte 0xf3; xorl $10000000,(%rcx) | |
144 | ||
145 | # Tests for op imm32 regq/m64 | |
146 | xacquire lock adcq $10000000,(%rcx) | |
147 | lock xacquire adcq $10000000,(%rcx) | |
148 | xrelease lock adcq $10000000,(%rcx) | |
149 | lock xrelease adcq $10000000,(%rcx) | |
150 | .byte 0xf0; .byte 0xf2; adcq $10000000,(%rcx) | |
151 | .byte 0xf0; .byte 0xf3; adcq $10000000,(%rcx) | |
152 | xacquire lock addq $10000000,(%rcx) | |
153 | lock xacquire addq $10000000,(%rcx) | |
154 | xrelease lock addq $10000000,(%rcx) | |
155 | lock xrelease addq $10000000,(%rcx) | |
156 | .byte 0xf0; .byte 0xf2; addq $10000000,(%rcx) | |
157 | .byte 0xf0; .byte 0xf3; addq $10000000,(%rcx) | |
158 | xacquire lock andq $10000000,(%rcx) | |
159 | lock xacquire andq $10000000,(%rcx) | |
160 | xrelease lock andq $10000000,(%rcx) | |
161 | lock xrelease andq $10000000,(%rcx) | |
162 | .byte 0xf0; .byte 0xf2; andq $10000000,(%rcx) | |
163 | .byte 0xf0; .byte 0xf3; andq $10000000,(%rcx) | |
164 | xrelease movq $10000000,(%rcx) | |
165 | xacquire lock orq $10000000,(%rcx) | |
166 | lock xacquire orq $10000000,(%rcx) | |
167 | xrelease lock orq $10000000,(%rcx) | |
168 | lock xrelease orq $10000000,(%rcx) | |
169 | .byte 0xf0; .byte 0xf2; orq $10000000,(%rcx) | |
170 | .byte 0xf0; .byte 0xf3; orq $10000000,(%rcx) | |
171 | xacquire lock sbbq $10000000,(%rcx) | |
172 | lock xacquire sbbq $10000000,(%rcx) | |
173 | xrelease lock sbbq $10000000,(%rcx) | |
174 | lock xrelease sbbq $10000000,(%rcx) | |
175 | .byte 0xf0; .byte 0xf2; sbbq $10000000,(%rcx) | |
176 | .byte 0xf0; .byte 0xf3; sbbq $10000000,(%rcx) | |
177 | xacquire lock subq $10000000,(%rcx) | |
178 | lock xacquire subq $10000000,(%rcx) | |
179 | xrelease lock subq $10000000,(%rcx) | |
180 | lock xrelease subq $10000000,(%rcx) | |
181 | .byte 0xf0; .byte 0xf2; subq $10000000,(%rcx) | |
182 | .byte 0xf0; .byte 0xf3; subq $10000000,(%rcx) | |
183 | xacquire lock xorq $10000000,(%rcx) | |
184 | lock xacquire xorq $10000000,(%rcx) | |
185 | xrelease lock xorq $10000000,(%rcx) | |
186 | lock xrelease xorq $10000000,(%rcx) | |
187 | .byte 0xf0; .byte 0xf2; xorq $10000000,(%rcx) | |
188 | .byte 0xf0; .byte 0xf3; xorq $10000000,(%rcx) | |
189 | ||
190 | # Tests for op imm8 regs/m16 | |
191 | xacquire lock adcw $100,(%rcx) | |
192 | lock xacquire adcw $100,(%rcx) | |
193 | xrelease lock adcw $100,(%rcx) | |
194 | lock xrelease adcw $100,(%rcx) | |
195 | .byte 0xf0; .byte 0xf2; adcw $100,(%rcx) | |
196 | .byte 0xf0; .byte 0xf3; adcw $100,(%rcx) | |
197 | xacquire lock addw $100,(%rcx) | |
198 | lock xacquire addw $100,(%rcx) | |
199 | xrelease lock addw $100,(%rcx) | |
200 | lock xrelease addw $100,(%rcx) | |
201 | .byte 0xf0; .byte 0xf2; addw $100,(%rcx) | |
202 | .byte 0xf0; .byte 0xf3; addw $100,(%rcx) | |
203 | xacquire lock andw $100,(%rcx) | |
204 | lock xacquire andw $100,(%rcx) | |
205 | xrelease lock andw $100,(%rcx) | |
206 | lock xrelease andw $100,(%rcx) | |
207 | .byte 0xf0; .byte 0xf2; andw $100,(%rcx) | |
208 | .byte 0xf0; .byte 0xf3; andw $100,(%rcx) | |
209 | xacquire lock btcw $100,(%rcx) | |
210 | lock xacquire btcw $100,(%rcx) | |
211 | xrelease lock btcw $100,(%rcx) | |
212 | lock xrelease btcw $100,(%rcx) | |
213 | .byte 0xf0; .byte 0xf2; btcw $100,(%rcx) | |
214 | .byte 0xf0; .byte 0xf3; btcw $100,(%rcx) | |
215 | xacquire lock btrw $100,(%rcx) | |
216 | lock xacquire btrw $100,(%rcx) | |
217 | xrelease lock btrw $100,(%rcx) | |
218 | lock xrelease btrw $100,(%rcx) | |
219 | .byte 0xf0; .byte 0xf2; btrw $100,(%rcx) | |
220 | .byte 0xf0; .byte 0xf3; btrw $100,(%rcx) | |
221 | xacquire lock btsw $100,(%rcx) | |
222 | lock xacquire btsw $100,(%rcx) | |
223 | xrelease lock btsw $100,(%rcx) | |
224 | lock xrelease btsw $100,(%rcx) | |
225 | .byte 0xf0; .byte 0xf2; btsw $100,(%rcx) | |
226 | .byte 0xf0; .byte 0xf3; btsw $100,(%rcx) | |
227 | xrelease movw $100,(%rcx) | |
228 | xacquire lock orw $100,(%rcx) | |
229 | lock xacquire orw $100,(%rcx) | |
230 | xrelease lock orw $100,(%rcx) | |
231 | lock xrelease orw $100,(%rcx) | |
232 | .byte 0xf0; .byte 0xf2; orw $100,(%rcx) | |
233 | .byte 0xf0; .byte 0xf3; orw $100,(%rcx) | |
234 | xacquire lock sbbw $100,(%rcx) | |
235 | lock xacquire sbbw $100,(%rcx) | |
236 | xrelease lock sbbw $100,(%rcx) | |
237 | lock xrelease sbbw $100,(%rcx) | |
238 | .byte 0xf0; .byte 0xf2; sbbw $100,(%rcx) | |
239 | .byte 0xf0; .byte 0xf3; sbbw $100,(%rcx) | |
240 | xacquire lock subw $100,(%rcx) | |
241 | lock xacquire subw $100,(%rcx) | |
242 | xrelease lock subw $100,(%rcx) | |
243 | lock xrelease subw $100,(%rcx) | |
244 | .byte 0xf0; .byte 0xf2; subw $100,(%rcx) | |
245 | .byte 0xf0; .byte 0xf3; subw $100,(%rcx) | |
246 | xacquire lock xorw $100,(%rcx) | |
247 | lock xacquire xorw $100,(%rcx) | |
248 | xrelease lock xorw $100,(%rcx) | |
249 | lock xrelease xorw $100,(%rcx) | |
250 | .byte 0xf0; .byte 0xf2; xorw $100,(%rcx) | |
251 | .byte 0xf0; .byte 0xf3; xorw $100,(%rcx) | |
252 | ||
253 | # Tests for op imm8 regl/m32 | |
254 | xacquire lock adcl $100,(%rcx) | |
255 | lock xacquire adcl $100,(%rcx) | |
256 | xrelease lock adcl $100,(%rcx) | |
257 | lock xrelease adcl $100,(%rcx) | |
258 | .byte 0xf0; .byte 0xf2; adcl $100,(%rcx) | |
259 | .byte 0xf0; .byte 0xf3; adcl $100,(%rcx) | |
260 | xacquire lock addl $100,(%rcx) | |
261 | lock xacquire addl $100,(%rcx) | |
262 | xrelease lock addl $100,(%rcx) | |
263 | lock xrelease addl $100,(%rcx) | |
264 | .byte 0xf0; .byte 0xf2; addl $100,(%rcx) | |
265 | .byte 0xf0; .byte 0xf3; addl $100,(%rcx) | |
266 | xacquire lock andl $100,(%rcx) | |
267 | lock xacquire andl $100,(%rcx) | |
268 | xrelease lock andl $100,(%rcx) | |
269 | lock xrelease andl $100,(%rcx) | |
270 | .byte 0xf0; .byte 0xf2; andl $100,(%rcx) | |
271 | .byte 0xf0; .byte 0xf3; andl $100,(%rcx) | |
272 | xacquire lock btcl $100,(%rcx) | |
273 | lock xacquire btcl $100,(%rcx) | |
274 | xrelease lock btcl $100,(%rcx) | |
275 | lock xrelease btcl $100,(%rcx) | |
276 | .byte 0xf0; .byte 0xf2; btcl $100,(%rcx) | |
277 | .byte 0xf0; .byte 0xf3; btcl $100,(%rcx) | |
278 | xacquire lock btrl $100,(%rcx) | |
279 | lock xacquire btrl $100,(%rcx) | |
280 | xrelease lock btrl $100,(%rcx) | |
281 | lock xrelease btrl $100,(%rcx) | |
282 | .byte 0xf0; .byte 0xf2; btrl $100,(%rcx) | |
283 | .byte 0xf0; .byte 0xf3; btrl $100,(%rcx) | |
284 | xacquire lock btsl $100,(%rcx) | |
285 | lock xacquire btsl $100,(%rcx) | |
286 | xrelease lock btsl $100,(%rcx) | |
287 | lock xrelease btsl $100,(%rcx) | |
288 | .byte 0xf0; .byte 0xf2; btsl $100,(%rcx) | |
289 | .byte 0xf0; .byte 0xf3; btsl $100,(%rcx) | |
290 | xrelease movl $100,(%rcx) | |
291 | xacquire lock orl $100,(%rcx) | |
292 | lock xacquire orl $100,(%rcx) | |
293 | xrelease lock orl $100,(%rcx) | |
294 | lock xrelease orl $100,(%rcx) | |
295 | .byte 0xf0; .byte 0xf2; orl $100,(%rcx) | |
296 | .byte 0xf0; .byte 0xf3; orl $100,(%rcx) | |
297 | xacquire lock sbbl $100,(%rcx) | |
298 | lock xacquire sbbl $100,(%rcx) | |
299 | xrelease lock sbbl $100,(%rcx) | |
300 | lock xrelease sbbl $100,(%rcx) | |
301 | .byte 0xf0; .byte 0xf2; sbbl $100,(%rcx) | |
302 | .byte 0xf0; .byte 0xf3; sbbl $100,(%rcx) | |
303 | xacquire lock subl $100,(%rcx) | |
304 | lock xacquire subl $100,(%rcx) | |
305 | xrelease lock subl $100,(%rcx) | |
306 | lock xrelease subl $100,(%rcx) | |
307 | .byte 0xf0; .byte 0xf2; subl $100,(%rcx) | |
308 | .byte 0xf0; .byte 0xf3; subl $100,(%rcx) | |
309 | xacquire lock xorl $100,(%rcx) | |
310 | lock xacquire xorl $100,(%rcx) | |
311 | xrelease lock xorl $100,(%rcx) | |
312 | lock xrelease xorl $100,(%rcx) | |
313 | .byte 0xf0; .byte 0xf2; xorl $100,(%rcx) | |
314 | .byte 0xf0; .byte 0xf3; xorl $100,(%rcx) | |
315 | ||
316 | # Tests for op imm8 regq/m64 | |
317 | xacquire lock adcq $100,(%rcx) | |
318 | lock xacquire adcq $100,(%rcx) | |
319 | xrelease lock adcq $100,(%rcx) | |
320 | lock xrelease adcq $100,(%rcx) | |
321 | .byte 0xf0; .byte 0xf2; adcq $100,(%rcx) | |
322 | .byte 0xf0; .byte 0xf3; adcq $100,(%rcx) | |
323 | xacquire lock addq $100,(%rcx) | |
324 | lock xacquire addq $100,(%rcx) | |
325 | xrelease lock addq $100,(%rcx) | |
326 | lock xrelease addq $100,(%rcx) | |
327 | .byte 0xf0; .byte 0xf2; addq $100,(%rcx) | |
328 | .byte 0xf0; .byte 0xf3; addq $100,(%rcx) | |
329 | xacquire lock andq $100,(%rcx) | |
330 | lock xacquire andq $100,(%rcx) | |
331 | xrelease lock andq $100,(%rcx) | |
332 | lock xrelease andq $100,(%rcx) | |
333 | .byte 0xf0; .byte 0xf2; andq $100,(%rcx) | |
334 | .byte 0xf0; .byte 0xf3; andq $100,(%rcx) | |
335 | xacquire lock btcq $100,(%rcx) | |
336 | lock xacquire btcq $100,(%rcx) | |
337 | xrelease lock btcq $100,(%rcx) | |
338 | lock xrelease btcq $100,(%rcx) | |
339 | .byte 0xf0; .byte 0xf2; btcq $100,(%rcx) | |
340 | .byte 0xf0; .byte 0xf3; btcq $100,(%rcx) | |
341 | xacquire lock btrq $100,(%rcx) | |
342 | lock xacquire btrq $100,(%rcx) | |
343 | xrelease lock btrq $100,(%rcx) | |
344 | lock xrelease btrq $100,(%rcx) | |
345 | .byte 0xf0; .byte 0xf2; btrq $100,(%rcx) | |
346 | .byte 0xf0; .byte 0xf3; btrq $100,(%rcx) | |
347 | xacquire lock btsq $100,(%rcx) | |
348 | lock xacquire btsq $100,(%rcx) | |
349 | xrelease lock btsq $100,(%rcx) | |
350 | lock xrelease btsq $100,(%rcx) | |
351 | .byte 0xf0; .byte 0xf2; btsq $100,(%rcx) | |
352 | .byte 0xf0; .byte 0xf3; btsq $100,(%rcx) | |
353 | xrelease movq $100,(%rcx) | |
354 | xacquire lock orq $100,(%rcx) | |
355 | lock xacquire orq $100,(%rcx) | |
356 | xrelease lock orq $100,(%rcx) | |
357 | lock xrelease orq $100,(%rcx) | |
358 | .byte 0xf0; .byte 0xf2; orq $100,(%rcx) | |
359 | .byte 0xf0; .byte 0xf3; orq $100,(%rcx) | |
360 | xacquire lock sbbq $100,(%rcx) | |
361 | lock xacquire sbbq $100,(%rcx) | |
362 | xrelease lock sbbq $100,(%rcx) | |
363 | lock xrelease sbbq $100,(%rcx) | |
364 | .byte 0xf0; .byte 0xf2; sbbq $100,(%rcx) | |
365 | .byte 0xf0; .byte 0xf3; sbbq $100,(%rcx) | |
366 | xacquire lock subq $100,(%rcx) | |
367 | lock xacquire subq $100,(%rcx) | |
368 | xrelease lock subq $100,(%rcx) | |
369 | lock xrelease subq $100,(%rcx) | |
370 | .byte 0xf0; .byte 0xf2; subq $100,(%rcx) | |
371 | .byte 0xf0; .byte 0xf3; subq $100,(%rcx) | |
372 | xacquire lock xorq $100,(%rcx) | |
373 | lock xacquire xorq $100,(%rcx) | |
374 | xrelease lock xorq $100,(%rcx) | |
375 | lock xrelease xorq $100,(%rcx) | |
376 | .byte 0xf0; .byte 0xf2; xorq $100,(%rcx) | |
377 | .byte 0xf0; .byte 0xf3; xorq $100,(%rcx) | |
378 | ||
379 | # Tests for op imm8 regb/m8 | |
380 | xacquire lock adcb $100,(%rcx) | |
381 | lock xacquire adcb $100,(%rcx) | |
382 | xrelease lock adcb $100,(%rcx) | |
383 | lock xrelease adcb $100,(%rcx) | |
384 | .byte 0xf0; .byte 0xf2; adcb $100,(%rcx) | |
385 | .byte 0xf0; .byte 0xf3; adcb $100,(%rcx) | |
386 | xacquire lock addb $100,(%rcx) | |
387 | lock xacquire addb $100,(%rcx) | |
388 | xrelease lock addb $100,(%rcx) | |
389 | lock xrelease addb $100,(%rcx) | |
390 | .byte 0xf0; .byte 0xf2; addb $100,(%rcx) | |
391 | .byte 0xf0; .byte 0xf3; addb $100,(%rcx) | |
392 | xacquire lock andb $100,(%rcx) | |
393 | lock xacquire andb $100,(%rcx) | |
394 | xrelease lock andb $100,(%rcx) | |
395 | lock xrelease andb $100,(%rcx) | |
396 | .byte 0xf0; .byte 0xf2; andb $100,(%rcx) | |
397 | .byte 0xf0; .byte 0xf3; andb $100,(%rcx) | |
398 | xrelease movb $100,(%rcx) | |
399 | xacquire lock orb $100,(%rcx) | |
400 | lock xacquire orb $100,(%rcx) | |
401 | xrelease lock orb $100,(%rcx) | |
402 | lock xrelease orb $100,(%rcx) | |
403 | .byte 0xf0; .byte 0xf2; orb $100,(%rcx) | |
404 | .byte 0xf0; .byte 0xf3; orb $100,(%rcx) | |
405 | xacquire lock sbbb $100,(%rcx) | |
406 | lock xacquire sbbb $100,(%rcx) | |
407 | xrelease lock sbbb $100,(%rcx) | |
408 | lock xrelease sbbb $100,(%rcx) | |
409 | .byte 0xf0; .byte 0xf2; sbbb $100,(%rcx) | |
410 | .byte 0xf0; .byte 0xf3; sbbb $100,(%rcx) | |
411 | xacquire lock subb $100,(%rcx) | |
412 | lock xacquire subb $100,(%rcx) | |
413 | xrelease lock subb $100,(%rcx) | |
414 | lock xrelease subb $100,(%rcx) | |
415 | .byte 0xf0; .byte 0xf2; subb $100,(%rcx) | |
416 | .byte 0xf0; .byte 0xf3; subb $100,(%rcx) | |
417 | xacquire lock xorb $100,(%rcx) | |
418 | lock xacquire xorb $100,(%rcx) | |
419 | xrelease lock xorb $100,(%rcx) | |
420 | lock xrelease xorb $100,(%rcx) | |
421 | .byte 0xf0; .byte 0xf2; xorb $100,(%rcx) | |
422 | .byte 0xf0; .byte 0xf3; xorb $100,(%rcx) | |
423 | ||
424 | # Tests for op regb regb/m8 | |
425 | # Tests for op regb/m8 regb | |
426 | xacquire lock adcb %al,(%rcx) | |
427 | lock xacquire adcb %al,(%rcx) | |
428 | xrelease lock adcb %al,(%rcx) | |
429 | lock xrelease adcb %al,(%rcx) | |
430 | .byte 0xf0; .byte 0xf2; adcb %al,(%rcx) | |
431 | .byte 0xf0; .byte 0xf3; adcb %al,(%rcx) | |
432 | xacquire lock addb %al,(%rcx) | |
433 | lock xacquire addb %al,(%rcx) | |
434 | xrelease lock addb %al,(%rcx) | |
435 | lock xrelease addb %al,(%rcx) | |
436 | .byte 0xf0; .byte 0xf2; addb %al,(%rcx) | |
437 | .byte 0xf0; .byte 0xf3; addb %al,(%rcx) | |
438 | xacquire lock andb %al,(%rcx) | |
439 | lock xacquire andb %al,(%rcx) | |
440 | xrelease lock andb %al,(%rcx) | |
441 | lock xrelease andb %al,(%rcx) | |
442 | .byte 0xf0; .byte 0xf2; andb %al,(%rcx) | |
443 | .byte 0xf0; .byte 0xf3; andb %al,(%rcx) | |
444 | xrelease movb %al,(%rcx) | |
445 | xacquire lock orb %al,(%rcx) | |
446 | lock xacquire orb %al,(%rcx) | |
447 | xrelease lock orb %al,(%rcx) | |
448 | lock xrelease orb %al,(%rcx) | |
449 | .byte 0xf0; .byte 0xf2; orb %al,(%rcx) | |
450 | .byte 0xf0; .byte 0xf3; orb %al,(%rcx) | |
451 | xacquire lock sbbb %al,(%rcx) | |
452 | lock xacquire sbbb %al,(%rcx) | |
453 | xrelease lock sbbb %al,(%rcx) | |
454 | lock xrelease sbbb %al,(%rcx) | |
455 | .byte 0xf0; .byte 0xf2; sbbb %al,(%rcx) | |
456 | .byte 0xf0; .byte 0xf3; sbbb %al,(%rcx) | |
457 | xacquire lock subb %al,(%rcx) | |
458 | lock xacquire subb %al,(%rcx) | |
459 | xrelease lock subb %al,(%rcx) | |
460 | lock xrelease subb %al,(%rcx) | |
461 | .byte 0xf0; .byte 0xf2; subb %al,(%rcx) | |
462 | .byte 0xf0; .byte 0xf3; subb %al,(%rcx) | |
463 | xacquire lock xchgb %al,(%rcx) | |
464 | lock xacquire xchgb %al,(%rcx) | |
465 | xacquire xchgb %al,(%rcx) | |
466 | xrelease lock xchgb %al,(%rcx) | |
467 | lock xrelease xchgb %al,(%rcx) | |
468 | xrelease xchgb %al,(%rcx) | |
469 | .byte 0xf0; .byte 0xf2; xchgb %al,(%rcx) | |
470 | .byte 0xf0; .byte 0xf3; xchgb %al,(%rcx) | |
471 | xacquire lock xorb %al,(%rcx) | |
472 | lock xacquire xorb %al,(%rcx) | |
473 | xrelease lock xorb %al,(%rcx) | |
474 | lock xrelease xorb %al,(%rcx) | |
475 | .byte 0xf0; .byte 0xf2; xorb %al,(%rcx) | |
476 | .byte 0xf0; .byte 0xf3; xorb %al,(%rcx) | |
477 | ||
478 | # Tests for op regs regs/m16 | |
479 | # Tests for op regs/m16 regs | |
480 | xacquire lock adcw %ax,(%rcx) | |
481 | lock xacquire adcw %ax,(%rcx) | |
482 | xrelease lock adcw %ax,(%rcx) | |
483 | lock xrelease adcw %ax,(%rcx) | |
484 | .byte 0xf0; .byte 0xf2; adcw %ax,(%rcx) | |
485 | .byte 0xf0; .byte 0xf3; adcw %ax,(%rcx) | |
486 | xacquire lock addw %ax,(%rcx) | |
487 | lock xacquire addw %ax,(%rcx) | |
488 | xrelease lock addw %ax,(%rcx) | |
489 | lock xrelease addw %ax,(%rcx) | |
490 | .byte 0xf0; .byte 0xf2; addw %ax,(%rcx) | |
491 | .byte 0xf0; .byte 0xf3; addw %ax,(%rcx) | |
492 | xacquire lock andw %ax,(%rcx) | |
493 | lock xacquire andw %ax,(%rcx) | |
494 | xrelease lock andw %ax,(%rcx) | |
495 | lock xrelease andw %ax,(%rcx) | |
496 | .byte 0xf0; .byte 0xf2; andw %ax,(%rcx) | |
497 | .byte 0xf0; .byte 0xf3; andw %ax,(%rcx) | |
498 | xrelease movw %ax,(%rcx) | |
499 | xacquire lock orw %ax,(%rcx) | |
500 | lock xacquire orw %ax,(%rcx) | |
501 | xrelease lock orw %ax,(%rcx) | |
502 | lock xrelease orw %ax,(%rcx) | |
503 | .byte 0xf0; .byte 0xf2; orw %ax,(%rcx) | |
504 | .byte 0xf0; .byte 0xf3; orw %ax,(%rcx) | |
505 | xacquire lock sbbw %ax,(%rcx) | |
506 | lock xacquire sbbw %ax,(%rcx) | |
507 | xrelease lock sbbw %ax,(%rcx) | |
508 | lock xrelease sbbw %ax,(%rcx) | |
509 | .byte 0xf0; .byte 0xf2; sbbw %ax,(%rcx) | |
510 | .byte 0xf0; .byte 0xf3; sbbw %ax,(%rcx) | |
511 | xacquire lock subw %ax,(%rcx) | |
512 | lock xacquire subw %ax,(%rcx) | |
513 | xrelease lock subw %ax,(%rcx) | |
514 | lock xrelease subw %ax,(%rcx) | |
515 | .byte 0xf0; .byte 0xf2; subw %ax,(%rcx) | |
516 | .byte 0xf0; .byte 0xf3; subw %ax,(%rcx) | |
517 | xacquire lock xchgw %ax,(%rcx) | |
518 | lock xacquire xchgw %ax,(%rcx) | |
519 | xacquire xchgw %ax,(%rcx) | |
520 | xrelease lock xchgw %ax,(%rcx) | |
521 | lock xrelease xchgw %ax,(%rcx) | |
522 | xrelease xchgw %ax,(%rcx) | |
523 | .byte 0xf0; .byte 0xf2; xchgw %ax,(%rcx) | |
524 | .byte 0xf0; .byte 0xf3; xchgw %ax,(%rcx) | |
525 | xacquire lock xorw %ax,(%rcx) | |
526 | lock xacquire xorw %ax,(%rcx) | |
527 | xrelease lock xorw %ax,(%rcx) | |
528 | lock xrelease xorw %ax,(%rcx) | |
529 | .byte 0xf0; .byte 0xf2; xorw %ax,(%rcx) | |
530 | .byte 0xf0; .byte 0xf3; xorw %ax,(%rcx) | |
531 | ||
532 | # Tests for op regl regl/m32 | |
533 | # Tests for op regl/m32 regl | |
534 | xacquire lock adcl %eax,(%rcx) | |
535 | lock xacquire adcl %eax,(%rcx) | |
536 | xrelease lock adcl %eax,(%rcx) | |
537 | lock xrelease adcl %eax,(%rcx) | |
538 | .byte 0xf0; .byte 0xf2; adcl %eax,(%rcx) | |
539 | .byte 0xf0; .byte 0xf3; adcl %eax,(%rcx) | |
540 | xacquire lock addl %eax,(%rcx) | |
541 | lock xacquire addl %eax,(%rcx) | |
542 | xrelease lock addl %eax,(%rcx) | |
543 | lock xrelease addl %eax,(%rcx) | |
544 | .byte 0xf0; .byte 0xf2; addl %eax,(%rcx) | |
545 | .byte 0xf0; .byte 0xf3; addl %eax,(%rcx) | |
546 | xacquire lock andl %eax,(%rcx) | |
547 | lock xacquire andl %eax,(%rcx) | |
548 | xrelease lock andl %eax,(%rcx) | |
549 | lock xrelease andl %eax,(%rcx) | |
550 | .byte 0xf0; .byte 0xf2; andl %eax,(%rcx) | |
551 | .byte 0xf0; .byte 0xf3; andl %eax,(%rcx) | |
552 | xrelease movl %eax,(%rcx) | |
553 | xacquire lock orl %eax,(%rcx) | |
554 | lock xacquire orl %eax,(%rcx) | |
555 | xrelease lock orl %eax,(%rcx) | |
556 | lock xrelease orl %eax,(%rcx) | |
557 | .byte 0xf0; .byte 0xf2; orl %eax,(%rcx) | |
558 | .byte 0xf0; .byte 0xf3; orl %eax,(%rcx) | |
559 | xacquire lock sbbl %eax,(%rcx) | |
560 | lock xacquire sbbl %eax,(%rcx) | |
561 | xrelease lock sbbl %eax,(%rcx) | |
562 | lock xrelease sbbl %eax,(%rcx) | |
563 | .byte 0xf0; .byte 0xf2; sbbl %eax,(%rcx) | |
564 | .byte 0xf0; .byte 0xf3; sbbl %eax,(%rcx) | |
565 | xacquire lock subl %eax,(%rcx) | |
566 | lock xacquire subl %eax,(%rcx) | |
567 | xrelease lock subl %eax,(%rcx) | |
568 | lock xrelease subl %eax,(%rcx) | |
569 | .byte 0xf0; .byte 0xf2; subl %eax,(%rcx) | |
570 | .byte 0xf0; .byte 0xf3; subl %eax,(%rcx) | |
571 | xacquire lock xchgl %eax,(%rcx) | |
572 | lock xacquire xchgl %eax,(%rcx) | |
573 | xacquire xchgl %eax,(%rcx) | |
574 | xrelease lock xchgl %eax,(%rcx) | |
575 | lock xrelease xchgl %eax,(%rcx) | |
576 | xrelease xchgl %eax,(%rcx) | |
577 | .byte 0xf0; .byte 0xf2; xchgl %eax,(%rcx) | |
578 | .byte 0xf0; .byte 0xf3; xchgl %eax,(%rcx) | |
579 | xacquire lock xorl %eax,(%rcx) | |
580 | lock xacquire xorl %eax,(%rcx) | |
581 | xrelease lock xorl %eax,(%rcx) | |
582 | lock xrelease xorl %eax,(%rcx) | |
583 | .byte 0xf0; .byte 0xf2; xorl %eax,(%rcx) | |
584 | .byte 0xf0; .byte 0xf3; xorl %eax,(%rcx) | |
585 | ||
586 | # Tests for op regq regq/m64 | |
587 | # Tests for op regq/m64 regq | |
588 | xacquire lock adcq %rax,(%rcx) | |
589 | lock xacquire adcq %rax,(%rcx) | |
590 | xrelease lock adcq %rax,(%rcx) | |
591 | lock xrelease adcq %rax,(%rcx) | |
592 | .byte 0xf0; .byte 0xf2; adcq %rax,(%rcx) | |
593 | .byte 0xf0; .byte 0xf3; adcq %rax,(%rcx) | |
594 | xacquire lock addq %rax,(%rcx) | |
595 | lock xacquire addq %rax,(%rcx) | |
596 | xrelease lock addq %rax,(%rcx) | |
597 | lock xrelease addq %rax,(%rcx) | |
598 | .byte 0xf0; .byte 0xf2; addq %rax,(%rcx) | |
599 | .byte 0xf0; .byte 0xf3; addq %rax,(%rcx) | |
600 | xacquire lock andq %rax,(%rcx) | |
601 | lock xacquire andq %rax,(%rcx) | |
602 | xrelease lock andq %rax,(%rcx) | |
603 | lock xrelease andq %rax,(%rcx) | |
604 | .byte 0xf0; .byte 0xf2; andq %rax,(%rcx) | |
605 | .byte 0xf0; .byte 0xf3; andq %rax,(%rcx) | |
606 | xrelease movq %rax,(%rcx) | |
607 | xacquire lock orq %rax,(%rcx) | |
608 | lock xacquire orq %rax,(%rcx) | |
609 | xrelease lock orq %rax,(%rcx) | |
610 | lock xrelease orq %rax,(%rcx) | |
611 | .byte 0xf0; .byte 0xf2; orq %rax,(%rcx) | |
612 | .byte 0xf0; .byte 0xf3; orq %rax,(%rcx) | |
613 | xacquire lock sbbq %rax,(%rcx) | |
614 | lock xacquire sbbq %rax,(%rcx) | |
615 | xrelease lock sbbq %rax,(%rcx) | |
616 | lock xrelease sbbq %rax,(%rcx) | |
617 | .byte 0xf0; .byte 0xf2; sbbq %rax,(%rcx) | |
618 | .byte 0xf0; .byte 0xf3; sbbq %rax,(%rcx) | |
619 | xacquire lock subq %rax,(%rcx) | |
620 | lock xacquire subq %rax,(%rcx) | |
621 | xrelease lock subq %rax,(%rcx) | |
622 | lock xrelease subq %rax,(%rcx) | |
623 | .byte 0xf0; .byte 0xf2; subq %rax,(%rcx) | |
624 | .byte 0xf0; .byte 0xf3; subq %rax,(%rcx) | |
625 | xacquire lock xchgq %rax,(%rcx) | |
626 | lock xacquire xchgq %rax,(%rcx) | |
627 | xacquire xchgq %rax,(%rcx) | |
628 | xrelease lock xchgq %rax,(%rcx) | |
629 | lock xrelease xchgq %rax,(%rcx) | |
630 | xrelease xchgq %rax,(%rcx) | |
631 | .byte 0xf0; .byte 0xf2; xchgq %rax,(%rcx) | |
632 | .byte 0xf0; .byte 0xf3; xchgq %rax,(%rcx) | |
633 | xacquire lock xorq %rax,(%rcx) | |
634 | lock xacquire xorq %rax,(%rcx) | |
635 | xrelease lock xorq %rax,(%rcx) | |
636 | lock xrelease xorq %rax,(%rcx) | |
637 | .byte 0xf0; .byte 0xf2; xorq %rax,(%rcx) | |
638 | .byte 0xf0; .byte 0xf3; xorq %rax,(%rcx) | |
639 | ||
640 | # Tests for op regs, regs/m16 | |
641 | xacquire lock btcw %ax,(%rcx) | |
642 | lock xacquire btcw %ax,(%rcx) | |
643 | xrelease lock btcw %ax,(%rcx) | |
644 | lock xrelease btcw %ax,(%rcx) | |
645 | .byte 0xf0; .byte 0xf2; btcw %ax,(%rcx) | |
646 | .byte 0xf0; .byte 0xf3; btcw %ax,(%rcx) | |
647 | xacquire lock btrw %ax,(%rcx) | |
648 | lock xacquire btrw %ax,(%rcx) | |
649 | xrelease lock btrw %ax,(%rcx) | |
650 | lock xrelease btrw %ax,(%rcx) | |
651 | .byte 0xf0; .byte 0xf2; btrw %ax,(%rcx) | |
652 | .byte 0xf0; .byte 0xf3; btrw %ax,(%rcx) | |
653 | xacquire lock btsw %ax,(%rcx) | |
654 | lock xacquire btsw %ax,(%rcx) | |
655 | xrelease lock btsw %ax,(%rcx) | |
656 | lock xrelease btsw %ax,(%rcx) | |
657 | .byte 0xf0; .byte 0xf2; btsw %ax,(%rcx) | |
658 | .byte 0xf0; .byte 0xf3; btsw %ax,(%rcx) | |
659 | xacquire lock cmpxchgw %ax,(%rcx) | |
660 | lock xacquire cmpxchgw %ax,(%rcx) | |
661 | xrelease lock cmpxchgw %ax,(%rcx) | |
662 | lock xrelease cmpxchgw %ax,(%rcx) | |
663 | .byte 0xf0; .byte 0xf2; cmpxchgw %ax,(%rcx) | |
664 | .byte 0xf0; .byte 0xf3; cmpxchgw %ax,(%rcx) | |
665 | xacquire lock xaddw %ax,(%rcx) | |
666 | lock xacquire xaddw %ax,(%rcx) | |
667 | xrelease lock xaddw %ax,(%rcx) | |
668 | lock xrelease xaddw %ax,(%rcx) | |
669 | .byte 0xf0; .byte 0xf2; xaddw %ax,(%rcx) | |
670 | .byte 0xf0; .byte 0xf3; xaddw %ax,(%rcx) | |
671 | ||
672 | # Tests for op regl regl/m32 | |
673 | xacquire lock btcl %eax,(%rcx) | |
674 | lock xacquire btcl %eax,(%rcx) | |
675 | xrelease lock btcl %eax,(%rcx) | |
676 | lock xrelease btcl %eax,(%rcx) | |
677 | .byte 0xf0; .byte 0xf2; btcl %eax,(%rcx) | |
678 | .byte 0xf0; .byte 0xf3; btcl %eax,(%rcx) | |
679 | xacquire lock btrl %eax,(%rcx) | |
680 | lock xacquire btrl %eax,(%rcx) | |
681 | xrelease lock btrl %eax,(%rcx) | |
682 | lock xrelease btrl %eax,(%rcx) | |
683 | .byte 0xf0; .byte 0xf2; btrl %eax,(%rcx) | |
684 | .byte 0xf0; .byte 0xf3; btrl %eax,(%rcx) | |
685 | xacquire lock btsl %eax,(%rcx) | |
686 | lock xacquire btsl %eax,(%rcx) | |
687 | xrelease lock btsl %eax,(%rcx) | |
688 | lock xrelease btsl %eax,(%rcx) | |
689 | .byte 0xf0; .byte 0xf2; btsl %eax,(%rcx) | |
690 | .byte 0xf0; .byte 0xf3; btsl %eax,(%rcx) | |
691 | xacquire lock cmpxchgl %eax,(%rcx) | |
692 | lock xacquire cmpxchgl %eax,(%rcx) | |
693 | xrelease lock cmpxchgl %eax,(%rcx) | |
694 | lock xrelease cmpxchgl %eax,(%rcx) | |
695 | .byte 0xf0; .byte 0xf2; cmpxchgl %eax,(%rcx) | |
696 | .byte 0xf0; .byte 0xf3; cmpxchgl %eax,(%rcx) | |
697 | xacquire lock xaddl %eax,(%rcx) | |
698 | lock xacquire xaddl %eax,(%rcx) | |
699 | xrelease lock xaddl %eax,(%rcx) | |
700 | lock xrelease xaddl %eax,(%rcx) | |
701 | .byte 0xf0; .byte 0xf2; xaddl %eax,(%rcx) | |
702 | .byte 0xf0; .byte 0xf3; xaddl %eax,(%rcx) | |
703 | ||
704 | # Tests for op regq regq/m64 | |
705 | xacquire lock btcq %rax,(%rcx) | |
706 | lock xacquire btcq %rax,(%rcx) | |
707 | xrelease lock btcq %rax,(%rcx) | |
708 | lock xrelease btcq %rax,(%rcx) | |
709 | .byte 0xf0; .byte 0xf2; btcq %rax,(%rcx) | |
710 | .byte 0xf0; .byte 0xf3; btcq %rax,(%rcx) | |
711 | xacquire lock btrq %rax,(%rcx) | |
712 | lock xacquire btrq %rax,(%rcx) | |
713 | xrelease lock btrq %rax,(%rcx) | |
714 | lock xrelease btrq %rax,(%rcx) | |
715 | .byte 0xf0; .byte 0xf2; btrq %rax,(%rcx) | |
716 | .byte 0xf0; .byte 0xf3; btrq %rax,(%rcx) | |
717 | xacquire lock btsq %rax,(%rcx) | |
718 | lock xacquire btsq %rax,(%rcx) | |
719 | xrelease lock btsq %rax,(%rcx) | |
720 | lock xrelease btsq %rax,(%rcx) | |
721 | .byte 0xf0; .byte 0xf2; btsq %rax,(%rcx) | |
722 | .byte 0xf0; .byte 0xf3; btsq %rax,(%rcx) | |
723 | xacquire lock cmpxchgq %rax,(%rcx) | |
724 | lock xacquire cmpxchgq %rax,(%rcx) | |
725 | xrelease lock cmpxchgq %rax,(%rcx) | |
726 | lock xrelease cmpxchgq %rax,(%rcx) | |
727 | .byte 0xf0; .byte 0xf2; cmpxchgq %rax,(%rcx) | |
728 | .byte 0xf0; .byte 0xf3; cmpxchgq %rax,(%rcx) | |
729 | xacquire lock xaddq %rax,(%rcx) | |
730 | lock xacquire xaddq %rax,(%rcx) | |
731 | xrelease lock xaddq %rax,(%rcx) | |
732 | lock xrelease xaddq %rax,(%rcx) | |
733 | .byte 0xf0; .byte 0xf2; xaddq %rax,(%rcx) | |
734 | .byte 0xf0; .byte 0xf3; xaddq %rax,(%rcx) | |
735 | ||
736 | # Tests for op regb/m8 | |
737 | xacquire lock decb (%rcx) | |
738 | lock xacquire decb (%rcx) | |
739 | xrelease lock decb (%rcx) | |
740 | lock xrelease decb (%rcx) | |
741 | .byte 0xf0; .byte 0xf2; decb (%rcx) | |
742 | .byte 0xf0; .byte 0xf3; decb (%rcx) | |
743 | xacquire lock incb (%rcx) | |
744 | lock xacquire incb (%rcx) | |
745 | xrelease lock incb (%rcx) | |
746 | lock xrelease incb (%rcx) | |
747 | .byte 0xf0; .byte 0xf2; incb (%rcx) | |
748 | .byte 0xf0; .byte 0xf3; incb (%rcx) | |
749 | xacquire lock negb (%rcx) | |
750 | lock xacquire negb (%rcx) | |
751 | xrelease lock negb (%rcx) | |
752 | lock xrelease negb (%rcx) | |
753 | .byte 0xf0; .byte 0xf2; negb (%rcx) | |
754 | .byte 0xf0; .byte 0xf3; negb (%rcx) | |
755 | xacquire lock notb (%rcx) | |
756 | lock xacquire notb (%rcx) | |
757 | xrelease lock notb (%rcx) | |
758 | lock xrelease notb (%rcx) | |
759 | .byte 0xf0; .byte 0xf2; notb (%rcx) | |
760 | .byte 0xf0; .byte 0xf3; notb (%rcx) | |
761 | ||
762 | # Tests for op regs/m16 | |
763 | xacquire lock decw (%rcx) | |
764 | lock xacquire decw (%rcx) | |
765 | xrelease lock decw (%rcx) | |
766 | lock xrelease decw (%rcx) | |
767 | .byte 0xf0; .byte 0xf2; decw (%rcx) | |
768 | .byte 0xf0; .byte 0xf3; decw (%rcx) | |
769 | xacquire lock incw (%rcx) | |
770 | lock xacquire incw (%rcx) | |
771 | xrelease lock incw (%rcx) | |
772 | lock xrelease incw (%rcx) | |
773 | .byte 0xf0; .byte 0xf2; incw (%rcx) | |
774 | .byte 0xf0; .byte 0xf3; incw (%rcx) | |
775 | xacquire lock negw (%rcx) | |
776 | lock xacquire negw (%rcx) | |
777 | xrelease lock negw (%rcx) | |
778 | lock xrelease negw (%rcx) | |
779 | .byte 0xf0; .byte 0xf2; negw (%rcx) | |
780 | .byte 0xf0; .byte 0xf3; negw (%rcx) | |
781 | xacquire lock notw (%rcx) | |
782 | lock xacquire notw (%rcx) | |
783 | xrelease lock notw (%rcx) | |
784 | lock xrelease notw (%rcx) | |
785 | .byte 0xf0; .byte 0xf2; notw (%rcx) | |
786 | .byte 0xf0; .byte 0xf3; notw (%rcx) | |
787 | ||
788 | # Tests for op regl/m32 | |
789 | xacquire lock decl (%rcx) | |
790 | lock xacquire decl (%rcx) | |
791 | xrelease lock decl (%rcx) | |
792 | lock xrelease decl (%rcx) | |
793 | .byte 0xf0; .byte 0xf2; decl (%rcx) | |
794 | .byte 0xf0; .byte 0xf3; decl (%rcx) | |
795 | xacquire lock incl (%rcx) | |
796 | lock xacquire incl (%rcx) | |
797 | xrelease lock incl (%rcx) | |
798 | lock xrelease incl (%rcx) | |
799 | .byte 0xf0; .byte 0xf2; incl (%rcx) | |
800 | .byte 0xf0; .byte 0xf3; incl (%rcx) | |
801 | xacquire lock negl (%rcx) | |
802 | lock xacquire negl (%rcx) | |
803 | xrelease lock negl (%rcx) | |
804 | lock xrelease negl (%rcx) | |
805 | .byte 0xf0; .byte 0xf2; negl (%rcx) | |
806 | .byte 0xf0; .byte 0xf3; negl (%rcx) | |
807 | xacquire lock notl (%rcx) | |
808 | lock xacquire notl (%rcx) | |
809 | xrelease lock notl (%rcx) | |
810 | lock xrelease notl (%rcx) | |
811 | .byte 0xf0; .byte 0xf2; notl (%rcx) | |
812 | .byte 0xf0; .byte 0xf3; notl (%rcx) | |
813 | ||
814 | # Tests for op regq/m64 | |
815 | xacquire lock decq (%rcx) | |
816 | lock xacquire decq (%rcx) | |
817 | xrelease lock decq (%rcx) | |
818 | lock xrelease decq (%rcx) | |
819 | .byte 0xf0; .byte 0xf2; decq (%rcx) | |
820 | .byte 0xf0; .byte 0xf3; decq (%rcx) | |
821 | xacquire lock incq (%rcx) | |
822 | lock xacquire incq (%rcx) | |
823 | xrelease lock incq (%rcx) | |
824 | lock xrelease incq (%rcx) | |
825 | .byte 0xf0; .byte 0xf2; incq (%rcx) | |
826 | .byte 0xf0; .byte 0xf3; incq (%rcx) | |
827 | xacquire lock negq (%rcx) | |
828 | lock xacquire negq (%rcx) | |
829 | xrelease lock negq (%rcx) | |
830 | lock xrelease negq (%rcx) | |
831 | .byte 0xf0; .byte 0xf2; negq (%rcx) | |
832 | .byte 0xf0; .byte 0xf3; negq (%rcx) | |
833 | xacquire lock notq (%rcx) | |
834 | lock xacquire notq (%rcx) | |
835 | xrelease lock notq (%rcx) | |
836 | lock xrelease notq (%rcx) | |
837 | .byte 0xf0; .byte 0xf2; notq (%rcx) | |
838 | .byte 0xf0; .byte 0xf3; notq (%rcx) | |
839 | ||
840 | # Tests for op m64 | |
841 | xacquire lock cmpxchg8bq (%rcx) | |
842 | lock xacquire cmpxchg8bq (%rcx) | |
843 | xrelease lock cmpxchg8bq (%rcx) | |
844 | lock xrelease cmpxchg8bq (%rcx) | |
845 | .byte 0xf0; .byte 0xf2; cmpxchg8bq (%rcx) | |
846 | .byte 0xf0; .byte 0xf3; cmpxchg8bq (%rcx) | |
847 | ||
848 | # Tests for op regb, regb/m8 | |
849 | xacquire lock cmpxchgb %cl,(%rcx) | |
850 | lock xacquire cmpxchgb %cl,(%rcx) | |
851 | xrelease lock cmpxchgb %cl,(%rcx) | |
852 | lock xrelease cmpxchgb %cl,(%rcx) | |
853 | .byte 0xf0; .byte 0xf2; cmpxchgb %cl,(%rcx) | |
854 | .byte 0xf0; .byte 0xf3; cmpxchgb %cl,(%rcx) | |
855 | xacquire lock xaddb %cl,(%rcx) | |
856 | lock xacquire xaddb %cl,(%rcx) | |
857 | xrelease lock xaddb %cl,(%rcx) | |
858 | lock xrelease xaddb %cl,(%rcx) | |
859 | .byte 0xf0; .byte 0xf2; xaddb %cl,(%rcx) | |
860 | .byte 0xf0; .byte 0xf3; xaddb %cl,(%rcx) | |
861 | ||
862 | .intel_syntax noprefix | |
863 | ||
864 | ||
865 | # Tests for op imm32 rax | |
866 | ||
867 | # Tests for op imm8 regb/m8 | |
868 | xacquire lock adc BYTE PTR [rcx],100 | |
869 | lock xacquire adc BYTE PTR [rcx],100 | |
870 | xrelease lock adc BYTE PTR [rcx],100 | |
871 | lock xrelease adc BYTE PTR [rcx],100 | |
872 | .byte 0xf0; .byte 0xf2; adc BYTE PTR [rcx],100 | |
873 | .byte 0xf0; .byte 0xf3; adc BYTE PTR [rcx],100 | |
874 | xacquire lock add BYTE PTR [rcx],100 | |
875 | lock xacquire add BYTE PTR [rcx],100 | |
876 | xrelease lock add BYTE PTR [rcx],100 | |
877 | lock xrelease add BYTE PTR [rcx],100 | |
878 | .byte 0xf0; .byte 0xf2; add BYTE PTR [rcx],100 | |
879 | .byte 0xf0; .byte 0xf3; add BYTE PTR [rcx],100 | |
880 | xacquire lock and BYTE PTR [rcx],100 | |
881 | lock xacquire and BYTE PTR [rcx],100 | |
882 | xrelease lock and BYTE PTR [rcx],100 | |
883 | lock xrelease and BYTE PTR [rcx],100 | |
884 | .byte 0xf0; .byte 0xf2; and BYTE PTR [rcx],100 | |
885 | .byte 0xf0; .byte 0xf3; and BYTE PTR [rcx],100 | |
886 | xrelease mov BYTE PTR [rcx],100 | |
887 | xacquire lock or BYTE PTR [rcx],100 | |
888 | lock xacquire or BYTE PTR [rcx],100 | |
889 | xrelease lock or BYTE PTR [rcx],100 | |
890 | lock xrelease or BYTE PTR [rcx],100 | |
891 | .byte 0xf0; .byte 0xf2; or BYTE PTR [rcx],100 | |
892 | .byte 0xf0; .byte 0xf3; or BYTE PTR [rcx],100 | |
893 | xacquire lock sbb BYTE PTR [rcx],100 | |
894 | lock xacquire sbb BYTE PTR [rcx],100 | |
895 | xrelease lock sbb BYTE PTR [rcx],100 | |
896 | lock xrelease sbb BYTE PTR [rcx],100 | |
897 | .byte 0xf0; .byte 0xf2; sbb BYTE PTR [rcx],100 | |
898 | .byte 0xf0; .byte 0xf3; sbb BYTE PTR [rcx],100 | |
899 | xacquire lock sub BYTE PTR [rcx],100 | |
900 | lock xacquire sub BYTE PTR [rcx],100 | |
901 | xrelease lock sub BYTE PTR [rcx],100 | |
902 | lock xrelease sub BYTE PTR [rcx],100 | |
903 | .byte 0xf0; .byte 0xf2; sub BYTE PTR [rcx],100 | |
904 | .byte 0xf0; .byte 0xf3; sub BYTE PTR [rcx],100 | |
905 | xacquire lock xor BYTE PTR [rcx],100 | |
906 | lock xacquire xor BYTE PTR [rcx],100 | |
907 | xrelease lock xor BYTE PTR [rcx],100 | |
908 | lock xrelease xor BYTE PTR [rcx],100 | |
909 | .byte 0xf0; .byte 0xf2; xor BYTE PTR [rcx],100 | |
910 | .byte 0xf0; .byte 0xf3; xor BYTE PTR [rcx],100 | |
911 | ||
912 | # Tests for op imm16 regs/m16 | |
913 | xacquire lock adc WORD PTR [rcx],1000 | |
914 | lock xacquire adc WORD PTR [rcx],1000 | |
915 | xrelease lock adc WORD PTR [rcx],1000 | |
916 | lock xrelease adc WORD PTR [rcx],1000 | |
917 | .byte 0xf0; .byte 0xf2; adc WORD PTR [rcx],1000 | |
918 | .byte 0xf0; .byte 0xf3; adc WORD PTR [rcx],1000 | |
919 | xacquire lock add WORD PTR [rcx],1000 | |
920 | lock xacquire add WORD PTR [rcx],1000 | |
921 | xrelease lock add WORD PTR [rcx],1000 | |
922 | lock xrelease add WORD PTR [rcx],1000 | |
923 | .byte 0xf0; .byte 0xf2; add WORD PTR [rcx],1000 | |
924 | .byte 0xf0; .byte 0xf3; add WORD PTR [rcx],1000 | |
925 | xacquire lock and WORD PTR [rcx],1000 | |
926 | lock xacquire and WORD PTR [rcx],1000 | |
927 | xrelease lock and WORD PTR [rcx],1000 | |
928 | lock xrelease and WORD PTR [rcx],1000 | |
929 | .byte 0xf0; .byte 0xf2; and WORD PTR [rcx],1000 | |
930 | .byte 0xf0; .byte 0xf3; and WORD PTR [rcx],1000 | |
931 | xrelease mov WORD PTR [rcx],1000 | |
932 | xacquire lock or WORD PTR [rcx],1000 | |
933 | lock xacquire or WORD PTR [rcx],1000 | |
934 | xrelease lock or WORD PTR [rcx],1000 | |
935 | lock xrelease or WORD PTR [rcx],1000 | |
936 | .byte 0xf0; .byte 0xf2; or WORD PTR [rcx],1000 | |
937 | .byte 0xf0; .byte 0xf3; or WORD PTR [rcx],1000 | |
938 | xacquire lock sbb WORD PTR [rcx],1000 | |
939 | lock xacquire sbb WORD PTR [rcx],1000 | |
940 | xrelease lock sbb WORD PTR [rcx],1000 | |
941 | lock xrelease sbb WORD PTR [rcx],1000 | |
942 | .byte 0xf0; .byte 0xf2; sbb WORD PTR [rcx],1000 | |
943 | .byte 0xf0; .byte 0xf3; sbb WORD PTR [rcx],1000 | |
944 | xacquire lock sub WORD PTR [rcx],1000 | |
945 | lock xacquire sub WORD PTR [rcx],1000 | |
946 | xrelease lock sub WORD PTR [rcx],1000 | |
947 | lock xrelease sub WORD PTR [rcx],1000 | |
948 | .byte 0xf0; .byte 0xf2; sub WORD PTR [rcx],1000 | |
949 | .byte 0xf0; .byte 0xf3; sub WORD PTR [rcx],1000 | |
950 | xacquire lock xor WORD PTR [rcx],1000 | |
951 | lock xacquire xor WORD PTR [rcx],1000 | |
952 | xrelease lock xor WORD PTR [rcx],1000 | |
953 | lock xrelease xor WORD PTR [rcx],1000 | |
954 | .byte 0xf0; .byte 0xf2; xor WORD PTR [rcx],1000 | |
955 | .byte 0xf0; .byte 0xf3; xor WORD PTR [rcx],1000 | |
956 | ||
957 | # Tests for op imm32 regl/m32 | |
958 | xacquire lock adc DWORD PTR [rcx],10000000 | |
959 | lock xacquire adc DWORD PTR [rcx],10000000 | |
960 | xrelease lock adc DWORD PTR [rcx],10000000 | |
961 | lock xrelease adc DWORD PTR [rcx],10000000 | |
962 | .byte 0xf0; .byte 0xf2; adc DWORD PTR [rcx],10000000 | |
963 | .byte 0xf0; .byte 0xf3; adc DWORD PTR [rcx],10000000 | |
964 | xacquire lock add DWORD PTR [rcx],10000000 | |
965 | lock xacquire add DWORD PTR [rcx],10000000 | |
966 | xrelease lock add DWORD PTR [rcx],10000000 | |
967 | lock xrelease add DWORD PTR [rcx],10000000 | |
968 | .byte 0xf0; .byte 0xf2; add DWORD PTR [rcx],10000000 | |
969 | .byte 0xf0; .byte 0xf3; add DWORD PTR [rcx],10000000 | |
970 | xacquire lock and DWORD PTR [rcx],10000000 | |
971 | lock xacquire and DWORD PTR [rcx],10000000 | |
972 | xrelease lock and DWORD PTR [rcx],10000000 | |
973 | lock xrelease and DWORD PTR [rcx],10000000 | |
974 | .byte 0xf0; .byte 0xf2; and DWORD PTR [rcx],10000000 | |
975 | .byte 0xf0; .byte 0xf3; and DWORD PTR [rcx],10000000 | |
976 | xrelease mov DWORD PTR [rcx],10000000 | |
977 | xacquire lock or DWORD PTR [rcx],10000000 | |
978 | lock xacquire or DWORD PTR [rcx],10000000 | |
979 | xrelease lock or DWORD PTR [rcx],10000000 | |
980 | lock xrelease or DWORD PTR [rcx],10000000 | |
981 | .byte 0xf0; .byte 0xf2; or DWORD PTR [rcx],10000000 | |
982 | .byte 0xf0; .byte 0xf3; or DWORD PTR [rcx],10000000 | |
983 | xacquire lock sbb DWORD PTR [rcx],10000000 | |
984 | lock xacquire sbb DWORD PTR [rcx],10000000 | |
985 | xrelease lock sbb DWORD PTR [rcx],10000000 | |
986 | lock xrelease sbb DWORD PTR [rcx],10000000 | |
987 | .byte 0xf0; .byte 0xf2; sbb DWORD PTR [rcx],10000000 | |
988 | .byte 0xf0; .byte 0xf3; sbb DWORD PTR [rcx],10000000 | |
989 | xacquire lock sub DWORD PTR [rcx],10000000 | |
990 | lock xacquire sub DWORD PTR [rcx],10000000 | |
991 | xrelease lock sub DWORD PTR [rcx],10000000 | |
992 | lock xrelease sub DWORD PTR [rcx],10000000 | |
993 | .byte 0xf0; .byte 0xf2; sub DWORD PTR [rcx],10000000 | |
994 | .byte 0xf0; .byte 0xf3; sub DWORD PTR [rcx],10000000 | |
995 | xacquire lock xor DWORD PTR [rcx],10000000 | |
996 | lock xacquire xor DWORD PTR [rcx],10000000 | |
997 | xrelease lock xor DWORD PTR [rcx],10000000 | |
998 | lock xrelease xor DWORD PTR [rcx],10000000 | |
999 | .byte 0xf0; .byte 0xf2; xor DWORD PTR [rcx],10000000 | |
1000 | .byte 0xf0; .byte 0xf3; xor DWORD PTR [rcx],10000000 | |
1001 | ||
1002 | # Tests for op imm32 regq/m64 | |
1003 | xacquire lock adc QWORD PTR [rcx],10000000 | |
1004 | lock xacquire adc QWORD PTR [rcx],10000000 | |
1005 | xrelease lock adc QWORD PTR [rcx],10000000 | |
1006 | lock xrelease adc QWORD PTR [rcx],10000000 | |
1007 | .byte 0xf0; .byte 0xf2; adc QWORD PTR [rcx],10000000 | |
1008 | .byte 0xf0; .byte 0xf3; adc QWORD PTR [rcx],10000000 | |
1009 | xacquire lock add QWORD PTR [rcx],10000000 | |
1010 | lock xacquire add QWORD PTR [rcx],10000000 | |
1011 | xrelease lock add QWORD PTR [rcx],10000000 | |
1012 | lock xrelease add QWORD PTR [rcx],10000000 | |
1013 | .byte 0xf0; .byte 0xf2; add QWORD PTR [rcx],10000000 | |
1014 | .byte 0xf0; .byte 0xf3; add QWORD PTR [rcx],10000000 | |
1015 | xacquire lock and QWORD PTR [rcx],10000000 | |
1016 | lock xacquire and QWORD PTR [rcx],10000000 | |
1017 | xrelease lock and QWORD PTR [rcx],10000000 | |
1018 | lock xrelease and QWORD PTR [rcx],10000000 | |
1019 | .byte 0xf0; .byte 0xf2; and QWORD PTR [rcx],10000000 | |
1020 | .byte 0xf0; .byte 0xf3; and QWORD PTR [rcx],10000000 | |
1021 | xrelease mov QWORD PTR [rcx],10000000 | |
1022 | xacquire lock or QWORD PTR [rcx],10000000 | |
1023 | lock xacquire or QWORD PTR [rcx],10000000 | |
1024 | xrelease lock or QWORD PTR [rcx],10000000 | |
1025 | lock xrelease or QWORD PTR [rcx],10000000 | |
1026 | .byte 0xf0; .byte 0xf2; or QWORD PTR [rcx],10000000 | |
1027 | .byte 0xf0; .byte 0xf3; or QWORD PTR [rcx],10000000 | |
1028 | xacquire lock sbb QWORD PTR [rcx],10000000 | |
1029 | lock xacquire sbb QWORD PTR [rcx],10000000 | |
1030 | xrelease lock sbb QWORD PTR [rcx],10000000 | |
1031 | lock xrelease sbb QWORD PTR [rcx],10000000 | |
1032 | .byte 0xf0; .byte 0xf2; sbb QWORD PTR [rcx],10000000 | |
1033 | .byte 0xf0; .byte 0xf3; sbb QWORD PTR [rcx],10000000 | |
1034 | xacquire lock sub QWORD PTR [rcx],10000000 | |
1035 | lock xacquire sub QWORD PTR [rcx],10000000 | |
1036 | xrelease lock sub QWORD PTR [rcx],10000000 | |
1037 | lock xrelease sub QWORD PTR [rcx],10000000 | |
1038 | .byte 0xf0; .byte 0xf2; sub QWORD PTR [rcx],10000000 | |
1039 | .byte 0xf0; .byte 0xf3; sub QWORD PTR [rcx],10000000 | |
1040 | xacquire lock xor QWORD PTR [rcx],10000000 | |
1041 | lock xacquire xor QWORD PTR [rcx],10000000 | |
1042 | xrelease lock xor QWORD PTR [rcx],10000000 | |
1043 | lock xrelease xor QWORD PTR [rcx],10000000 | |
1044 | .byte 0xf0; .byte 0xf2; xor QWORD PTR [rcx],10000000 | |
1045 | .byte 0xf0; .byte 0xf3; xor QWORD PTR [rcx],10000000 | |
1046 | ||
1047 | # Tests for op imm8 regs/m16 | |
1048 | xacquire lock adc WORD PTR [rcx],100 | |
1049 | lock xacquire adc WORD PTR [rcx],100 | |
1050 | xrelease lock adc WORD PTR [rcx],100 | |
1051 | lock xrelease adc WORD PTR [rcx],100 | |
1052 | .byte 0xf0; .byte 0xf2; adc WORD PTR [rcx],100 | |
1053 | .byte 0xf0; .byte 0xf3; adc WORD PTR [rcx],100 | |
1054 | xacquire lock add WORD PTR [rcx],100 | |
1055 | lock xacquire add WORD PTR [rcx],100 | |
1056 | xrelease lock add WORD PTR [rcx],100 | |
1057 | lock xrelease add WORD PTR [rcx],100 | |
1058 | .byte 0xf0; .byte 0xf2; add WORD PTR [rcx],100 | |
1059 | .byte 0xf0; .byte 0xf3; add WORD PTR [rcx],100 | |
1060 | xacquire lock and WORD PTR [rcx],100 | |
1061 | lock xacquire and WORD PTR [rcx],100 | |
1062 | xrelease lock and WORD PTR [rcx],100 | |
1063 | lock xrelease and WORD PTR [rcx],100 | |
1064 | .byte 0xf0; .byte 0xf2; and WORD PTR [rcx],100 | |
1065 | .byte 0xf0; .byte 0xf3; and WORD PTR [rcx],100 | |
1066 | xacquire lock btc WORD PTR [rcx],100 | |
1067 | lock xacquire btc WORD PTR [rcx],100 | |
1068 | xrelease lock btc WORD PTR [rcx],100 | |
1069 | lock xrelease btc WORD PTR [rcx],100 | |
1070 | .byte 0xf0; .byte 0xf2; btc WORD PTR [rcx],100 | |
1071 | .byte 0xf0; .byte 0xf3; btc WORD PTR [rcx],100 | |
1072 | xacquire lock btr WORD PTR [rcx],100 | |
1073 | lock xacquire btr WORD PTR [rcx],100 | |
1074 | xrelease lock btr WORD PTR [rcx],100 | |
1075 | lock xrelease btr WORD PTR [rcx],100 | |
1076 | .byte 0xf0; .byte 0xf2; btr WORD PTR [rcx],100 | |
1077 | .byte 0xf0; .byte 0xf3; btr WORD PTR [rcx],100 | |
1078 | xacquire lock bts WORD PTR [rcx],100 | |
1079 | lock xacquire bts WORD PTR [rcx],100 | |
1080 | xrelease lock bts WORD PTR [rcx],100 | |
1081 | lock xrelease bts WORD PTR [rcx],100 | |
1082 | .byte 0xf0; .byte 0xf2; bts WORD PTR [rcx],100 | |
1083 | .byte 0xf0; .byte 0xf3; bts WORD PTR [rcx],100 | |
1084 | xrelease mov WORD PTR [rcx],100 | |
1085 | xacquire lock or WORD PTR [rcx],100 | |
1086 | lock xacquire or WORD PTR [rcx],100 | |
1087 | xrelease lock or WORD PTR [rcx],100 | |
1088 | lock xrelease or WORD PTR [rcx],100 | |
1089 | .byte 0xf0; .byte 0xf2; or WORD PTR [rcx],100 | |
1090 | .byte 0xf0; .byte 0xf3; or WORD PTR [rcx],100 | |
1091 | xacquire lock sbb WORD PTR [rcx],100 | |
1092 | lock xacquire sbb WORD PTR [rcx],100 | |
1093 | xrelease lock sbb WORD PTR [rcx],100 | |
1094 | lock xrelease sbb WORD PTR [rcx],100 | |
1095 | .byte 0xf0; .byte 0xf2; sbb WORD PTR [rcx],100 | |
1096 | .byte 0xf0; .byte 0xf3; sbb WORD PTR [rcx],100 | |
1097 | xacquire lock sub WORD PTR [rcx],100 | |
1098 | lock xacquire sub WORD PTR [rcx],100 | |
1099 | xrelease lock sub WORD PTR [rcx],100 | |
1100 | lock xrelease sub WORD PTR [rcx],100 | |
1101 | .byte 0xf0; .byte 0xf2; sub WORD PTR [rcx],100 | |
1102 | .byte 0xf0; .byte 0xf3; sub WORD PTR [rcx],100 | |
1103 | xacquire lock xor WORD PTR [rcx],100 | |
1104 | lock xacquire xor WORD PTR [rcx],100 | |
1105 | xrelease lock xor WORD PTR [rcx],100 | |
1106 | lock xrelease xor WORD PTR [rcx],100 | |
1107 | .byte 0xf0; .byte 0xf2; xor WORD PTR [rcx],100 | |
1108 | .byte 0xf0; .byte 0xf3; xor WORD PTR [rcx],100 | |
1109 | ||
1110 | # Tests for op imm8 regl/m32 | |
1111 | xacquire lock adc DWORD PTR [rcx],100 | |
1112 | lock xacquire adc DWORD PTR [rcx],100 | |
1113 | xrelease lock adc DWORD PTR [rcx],100 | |
1114 | lock xrelease adc DWORD PTR [rcx],100 | |
1115 | .byte 0xf0; .byte 0xf2; adc DWORD PTR [rcx],100 | |
1116 | .byte 0xf0; .byte 0xf3; adc DWORD PTR [rcx],100 | |
1117 | xacquire lock add DWORD PTR [rcx],100 | |
1118 | lock xacquire add DWORD PTR [rcx],100 | |
1119 | xrelease lock add DWORD PTR [rcx],100 | |
1120 | lock xrelease add DWORD PTR [rcx],100 | |
1121 | .byte 0xf0; .byte 0xf2; add DWORD PTR [rcx],100 | |
1122 | .byte 0xf0; .byte 0xf3; add DWORD PTR [rcx],100 | |
1123 | xacquire lock and DWORD PTR [rcx],100 | |
1124 | lock xacquire and DWORD PTR [rcx],100 | |
1125 | xrelease lock and DWORD PTR [rcx],100 | |
1126 | lock xrelease and DWORD PTR [rcx],100 | |
1127 | .byte 0xf0; .byte 0xf2; and DWORD PTR [rcx],100 | |
1128 | .byte 0xf0; .byte 0xf3; and DWORD PTR [rcx],100 | |
1129 | xacquire lock btc DWORD PTR [rcx],100 | |
1130 | lock xacquire btc DWORD PTR [rcx],100 | |
1131 | xrelease lock btc DWORD PTR [rcx],100 | |
1132 | lock xrelease btc DWORD PTR [rcx],100 | |
1133 | .byte 0xf0; .byte 0xf2; btc DWORD PTR [rcx],100 | |
1134 | .byte 0xf0; .byte 0xf3; btc DWORD PTR [rcx],100 | |
1135 | xacquire lock btr DWORD PTR [rcx],100 | |
1136 | lock xacquire btr DWORD PTR [rcx],100 | |
1137 | xrelease lock btr DWORD PTR [rcx],100 | |
1138 | lock xrelease btr DWORD PTR [rcx],100 | |
1139 | .byte 0xf0; .byte 0xf2; btr DWORD PTR [rcx],100 | |
1140 | .byte 0xf0; .byte 0xf3; btr DWORD PTR [rcx],100 | |
1141 | xacquire lock bts DWORD PTR [rcx],100 | |
1142 | lock xacquire bts DWORD PTR [rcx],100 | |
1143 | xrelease lock bts DWORD PTR [rcx],100 | |
1144 | lock xrelease bts DWORD PTR [rcx],100 | |
1145 | .byte 0xf0; .byte 0xf2; bts DWORD PTR [rcx],100 | |
1146 | .byte 0xf0; .byte 0xf3; bts DWORD PTR [rcx],100 | |
1147 | xrelease mov DWORD PTR [rcx],100 | |
1148 | xacquire lock or DWORD PTR [rcx],100 | |
1149 | lock xacquire or DWORD PTR [rcx],100 | |
1150 | xrelease lock or DWORD PTR [rcx],100 | |
1151 | lock xrelease or DWORD PTR [rcx],100 | |
1152 | .byte 0xf0; .byte 0xf2; or DWORD PTR [rcx],100 | |
1153 | .byte 0xf0; .byte 0xf3; or DWORD PTR [rcx],100 | |
1154 | xacquire lock sbb DWORD PTR [rcx],100 | |
1155 | lock xacquire sbb DWORD PTR [rcx],100 | |
1156 | xrelease lock sbb DWORD PTR [rcx],100 | |
1157 | lock xrelease sbb DWORD PTR [rcx],100 | |
1158 | .byte 0xf0; .byte 0xf2; sbb DWORD PTR [rcx],100 | |
1159 | .byte 0xf0; .byte 0xf3; sbb DWORD PTR [rcx],100 | |
1160 | xacquire lock sub DWORD PTR [rcx],100 | |
1161 | lock xacquire sub DWORD PTR [rcx],100 | |
1162 | xrelease lock sub DWORD PTR [rcx],100 | |
1163 | lock xrelease sub DWORD PTR [rcx],100 | |
1164 | .byte 0xf0; .byte 0xf2; sub DWORD PTR [rcx],100 | |
1165 | .byte 0xf0; .byte 0xf3; sub DWORD PTR [rcx],100 | |
1166 | xacquire lock xor DWORD PTR [rcx],100 | |
1167 | lock xacquire xor DWORD PTR [rcx],100 | |
1168 | xrelease lock xor DWORD PTR [rcx],100 | |
1169 | lock xrelease xor DWORD PTR [rcx],100 | |
1170 | .byte 0xf0; .byte 0xf2; xor DWORD PTR [rcx],100 | |
1171 | .byte 0xf0; .byte 0xf3; xor DWORD PTR [rcx],100 | |
1172 | ||
1173 | # Tests for op imm8 regq/m64 | |
1174 | xacquire lock adc QWORD PTR [rcx],100 | |
1175 | lock xacquire adc QWORD PTR [rcx],100 | |
1176 | xrelease lock adc QWORD PTR [rcx],100 | |
1177 | lock xrelease adc QWORD PTR [rcx],100 | |
1178 | .byte 0xf0; .byte 0xf2; adc QWORD PTR [rcx],100 | |
1179 | .byte 0xf0; .byte 0xf3; adc QWORD PTR [rcx],100 | |
1180 | xacquire lock add QWORD PTR [rcx],100 | |
1181 | lock xacquire add QWORD PTR [rcx],100 | |
1182 | xrelease lock add QWORD PTR [rcx],100 | |
1183 | lock xrelease add QWORD PTR [rcx],100 | |
1184 | .byte 0xf0; .byte 0xf2; add QWORD PTR [rcx],100 | |
1185 | .byte 0xf0; .byte 0xf3; add QWORD PTR [rcx],100 | |
1186 | xacquire lock and QWORD PTR [rcx],100 | |
1187 | lock xacquire and QWORD PTR [rcx],100 | |
1188 | xrelease lock and QWORD PTR [rcx],100 | |
1189 | lock xrelease and QWORD PTR [rcx],100 | |
1190 | .byte 0xf0; .byte 0xf2; and QWORD PTR [rcx],100 | |
1191 | .byte 0xf0; .byte 0xf3; and QWORD PTR [rcx],100 | |
1192 | xacquire lock btc QWORD PTR [rcx],100 | |
1193 | lock xacquire btc QWORD PTR [rcx],100 | |
1194 | xrelease lock btc QWORD PTR [rcx],100 | |
1195 | lock xrelease btc QWORD PTR [rcx],100 | |
1196 | .byte 0xf0; .byte 0xf2; btc QWORD PTR [rcx],100 | |
1197 | .byte 0xf0; .byte 0xf3; btc QWORD PTR [rcx],100 | |
1198 | xacquire lock btr QWORD PTR [rcx],100 | |
1199 | lock xacquire btr QWORD PTR [rcx],100 | |
1200 | xrelease lock btr QWORD PTR [rcx],100 | |
1201 | lock xrelease btr QWORD PTR [rcx],100 | |
1202 | .byte 0xf0; .byte 0xf2; btr QWORD PTR [rcx],100 | |
1203 | .byte 0xf0; .byte 0xf3; btr QWORD PTR [rcx],100 | |
1204 | xacquire lock bts QWORD PTR [rcx],100 | |
1205 | lock xacquire bts QWORD PTR [rcx],100 | |
1206 | xrelease lock bts QWORD PTR [rcx],100 | |
1207 | lock xrelease bts QWORD PTR [rcx],100 | |
1208 | .byte 0xf0; .byte 0xf2; bts QWORD PTR [rcx],100 | |
1209 | .byte 0xf0; .byte 0xf3; bts QWORD PTR [rcx],100 | |
1210 | xrelease mov QWORD PTR [rcx],100 | |
1211 | xacquire lock or QWORD PTR [rcx],100 | |
1212 | lock xacquire or QWORD PTR [rcx],100 | |
1213 | xrelease lock or QWORD PTR [rcx],100 | |
1214 | lock xrelease or QWORD PTR [rcx],100 | |
1215 | .byte 0xf0; .byte 0xf2; or QWORD PTR [rcx],100 | |
1216 | .byte 0xf0; .byte 0xf3; or QWORD PTR [rcx],100 | |
1217 | xacquire lock sbb QWORD PTR [rcx],100 | |
1218 | lock xacquire sbb QWORD PTR [rcx],100 | |
1219 | xrelease lock sbb QWORD PTR [rcx],100 | |
1220 | lock xrelease sbb QWORD PTR [rcx],100 | |
1221 | .byte 0xf0; .byte 0xf2; sbb QWORD PTR [rcx],100 | |
1222 | .byte 0xf0; .byte 0xf3; sbb QWORD PTR [rcx],100 | |
1223 | xacquire lock sub QWORD PTR [rcx],100 | |
1224 | lock xacquire sub QWORD PTR [rcx],100 | |
1225 | xrelease lock sub QWORD PTR [rcx],100 | |
1226 | lock xrelease sub QWORD PTR [rcx],100 | |
1227 | .byte 0xf0; .byte 0xf2; sub QWORD PTR [rcx],100 | |
1228 | .byte 0xf0; .byte 0xf3; sub QWORD PTR [rcx],100 | |
1229 | xacquire lock xor QWORD PTR [rcx],100 | |
1230 | lock xacquire xor QWORD PTR [rcx],100 | |
1231 | xrelease lock xor QWORD PTR [rcx],100 | |
1232 | lock xrelease xor QWORD PTR [rcx],100 | |
1233 | .byte 0xf0; .byte 0xf2; xor QWORD PTR [rcx],100 | |
1234 | .byte 0xf0; .byte 0xf3; xor QWORD PTR [rcx],100 | |
1235 | ||
1236 | # Tests for op imm8 regb/m8 | |
1237 | xacquire lock adc BYTE PTR [rcx],100 | |
1238 | lock xacquire adc BYTE PTR [rcx],100 | |
1239 | xrelease lock adc BYTE PTR [rcx],100 | |
1240 | lock xrelease adc BYTE PTR [rcx],100 | |
1241 | .byte 0xf0; .byte 0xf2; adc BYTE PTR [rcx],100 | |
1242 | .byte 0xf0; .byte 0xf3; adc BYTE PTR [rcx],100 | |
1243 | xacquire lock add BYTE PTR [rcx],100 | |
1244 | lock xacquire add BYTE PTR [rcx],100 | |
1245 | xrelease lock add BYTE PTR [rcx],100 | |
1246 | lock xrelease add BYTE PTR [rcx],100 | |
1247 | .byte 0xf0; .byte 0xf2; add BYTE PTR [rcx],100 | |
1248 | .byte 0xf0; .byte 0xf3; add BYTE PTR [rcx],100 | |
1249 | xacquire lock and BYTE PTR [rcx],100 | |
1250 | lock xacquire and BYTE PTR [rcx],100 | |
1251 | xrelease lock and BYTE PTR [rcx],100 | |
1252 | lock xrelease and BYTE PTR [rcx],100 | |
1253 | .byte 0xf0; .byte 0xf2; and BYTE PTR [rcx],100 | |
1254 | .byte 0xf0; .byte 0xf3; and BYTE PTR [rcx],100 | |
1255 | xrelease mov BYTE PTR [rcx],100 | |
1256 | xacquire lock or BYTE PTR [rcx],100 | |
1257 | lock xacquire or BYTE PTR [rcx],100 | |
1258 | xrelease lock or BYTE PTR [rcx],100 | |
1259 | lock xrelease or BYTE PTR [rcx],100 | |
1260 | .byte 0xf0; .byte 0xf2; or BYTE PTR [rcx],100 | |
1261 | .byte 0xf0; .byte 0xf3; or BYTE PTR [rcx],100 | |
1262 | xacquire lock sbb BYTE PTR [rcx],100 | |
1263 | lock xacquire sbb BYTE PTR [rcx],100 | |
1264 | xrelease lock sbb BYTE PTR [rcx],100 | |
1265 | lock xrelease sbb BYTE PTR [rcx],100 | |
1266 | .byte 0xf0; .byte 0xf2; sbb BYTE PTR [rcx],100 | |
1267 | .byte 0xf0; .byte 0xf3; sbb BYTE PTR [rcx],100 | |
1268 | xacquire lock sub BYTE PTR [rcx],100 | |
1269 | lock xacquire sub BYTE PTR [rcx],100 | |
1270 | xrelease lock sub BYTE PTR [rcx],100 | |
1271 | lock xrelease sub BYTE PTR [rcx],100 | |
1272 | .byte 0xf0; .byte 0xf2; sub BYTE PTR [rcx],100 | |
1273 | .byte 0xf0; .byte 0xf3; sub BYTE PTR [rcx],100 | |
1274 | xacquire lock xor BYTE PTR [rcx],100 | |
1275 | lock xacquire xor BYTE PTR [rcx],100 | |
1276 | xrelease lock xor BYTE PTR [rcx],100 | |
1277 | lock xrelease xor BYTE PTR [rcx],100 | |
1278 | .byte 0xf0; .byte 0xf2; xor BYTE PTR [rcx],100 | |
1279 | .byte 0xf0; .byte 0xf3; xor BYTE PTR [rcx],100 | |
1280 | ||
1281 | # Tests for op regb regb/m8 | |
1282 | # Tests for op regb/m8 regb | |
1283 | xacquire lock adc BYTE PTR [rcx],al | |
1284 | lock xacquire adc BYTE PTR [rcx],al | |
1285 | xrelease lock adc BYTE PTR [rcx],al | |
1286 | lock xrelease adc BYTE PTR [rcx],al | |
1287 | .byte 0xf0; .byte 0xf2; adc BYTE PTR [rcx],al | |
1288 | .byte 0xf0; .byte 0xf3; adc BYTE PTR [rcx],al | |
1289 | xacquire lock add BYTE PTR [rcx],al | |
1290 | lock xacquire add BYTE PTR [rcx],al | |
1291 | xrelease lock add BYTE PTR [rcx],al | |
1292 | lock xrelease add BYTE PTR [rcx],al | |
1293 | .byte 0xf0; .byte 0xf2; add BYTE PTR [rcx],al | |
1294 | .byte 0xf0; .byte 0xf3; add BYTE PTR [rcx],al | |
1295 | xacquire lock and BYTE PTR [rcx],al | |
1296 | lock xacquire and BYTE PTR [rcx],al | |
1297 | xrelease lock and BYTE PTR [rcx],al | |
1298 | lock xrelease and BYTE PTR [rcx],al | |
1299 | .byte 0xf0; .byte 0xf2; and BYTE PTR [rcx],al | |
1300 | .byte 0xf0; .byte 0xf3; and BYTE PTR [rcx],al | |
1301 | xrelease mov BYTE PTR [rcx],al | |
1302 | xacquire lock or BYTE PTR [rcx],al | |
1303 | lock xacquire or BYTE PTR [rcx],al | |
1304 | xrelease lock or BYTE PTR [rcx],al | |
1305 | lock xrelease or BYTE PTR [rcx],al | |
1306 | .byte 0xf0; .byte 0xf2; or BYTE PTR [rcx],al | |
1307 | .byte 0xf0; .byte 0xf3; or BYTE PTR [rcx],al | |
1308 | xacquire lock sbb BYTE PTR [rcx],al | |
1309 | lock xacquire sbb BYTE PTR [rcx],al | |
1310 | xrelease lock sbb BYTE PTR [rcx],al | |
1311 | lock xrelease sbb BYTE PTR [rcx],al | |
1312 | .byte 0xf0; .byte 0xf2; sbb BYTE PTR [rcx],al | |
1313 | .byte 0xf0; .byte 0xf3; sbb BYTE PTR [rcx],al | |
1314 | xacquire lock sub BYTE PTR [rcx],al | |
1315 | lock xacquire sub BYTE PTR [rcx],al | |
1316 | xrelease lock sub BYTE PTR [rcx],al | |
1317 | lock xrelease sub BYTE PTR [rcx],al | |
1318 | .byte 0xf0; .byte 0xf2; sub BYTE PTR [rcx],al | |
1319 | .byte 0xf0; .byte 0xf3; sub BYTE PTR [rcx],al | |
1320 | xacquire lock xchg BYTE PTR [rcx],al | |
1321 | lock xacquire xchg BYTE PTR [rcx],al | |
1322 | xacquire xchg BYTE PTR [rcx],al | |
1323 | xrelease lock xchg BYTE PTR [rcx],al | |
1324 | lock xrelease xchg BYTE PTR [rcx],al | |
1325 | xrelease xchg BYTE PTR [rcx],al | |
1326 | .byte 0xf0; .byte 0xf2; xchg BYTE PTR [rcx],al | |
1327 | .byte 0xf0; .byte 0xf3; xchg BYTE PTR [rcx],al | |
1328 | xacquire lock xor BYTE PTR [rcx],al | |
1329 | lock xacquire xor BYTE PTR [rcx],al | |
1330 | xrelease lock xor BYTE PTR [rcx],al | |
1331 | lock xrelease xor BYTE PTR [rcx],al | |
1332 | .byte 0xf0; .byte 0xf2; xor BYTE PTR [rcx],al | |
1333 | .byte 0xf0; .byte 0xf3; xor BYTE PTR [rcx],al | |
1334 | ||
1335 | # Tests for op regs regs/m16 | |
1336 | # Tests for op regs/m16 regs | |
1337 | xacquire lock adc WORD PTR [rcx],ax | |
1338 | lock xacquire adc WORD PTR [rcx],ax | |
1339 | xrelease lock adc WORD PTR [rcx],ax | |
1340 | lock xrelease adc WORD PTR [rcx],ax | |
1341 | .byte 0xf0; .byte 0xf2; adc WORD PTR [rcx],ax | |
1342 | .byte 0xf0; .byte 0xf3; adc WORD PTR [rcx],ax | |
1343 | xacquire lock add WORD PTR [rcx],ax | |
1344 | lock xacquire add WORD PTR [rcx],ax | |
1345 | xrelease lock add WORD PTR [rcx],ax | |
1346 | lock xrelease add WORD PTR [rcx],ax | |
1347 | .byte 0xf0; .byte 0xf2; add WORD PTR [rcx],ax | |
1348 | .byte 0xf0; .byte 0xf3; add WORD PTR [rcx],ax | |
1349 | xacquire lock and WORD PTR [rcx],ax | |
1350 | lock xacquire and WORD PTR [rcx],ax | |
1351 | xrelease lock and WORD PTR [rcx],ax | |
1352 | lock xrelease and WORD PTR [rcx],ax | |
1353 | .byte 0xf0; .byte 0xf2; and WORD PTR [rcx],ax | |
1354 | .byte 0xf0; .byte 0xf3; and WORD PTR [rcx],ax | |
1355 | xrelease mov WORD PTR [rcx],ax | |
1356 | xacquire lock or WORD PTR [rcx],ax | |
1357 | lock xacquire or WORD PTR [rcx],ax | |
1358 | xrelease lock or WORD PTR [rcx],ax | |
1359 | lock xrelease or WORD PTR [rcx],ax | |
1360 | .byte 0xf0; .byte 0xf2; or WORD PTR [rcx],ax | |
1361 | .byte 0xf0; .byte 0xf3; or WORD PTR [rcx],ax | |
1362 | xacquire lock sbb WORD PTR [rcx],ax | |
1363 | lock xacquire sbb WORD PTR [rcx],ax | |
1364 | xrelease lock sbb WORD PTR [rcx],ax | |
1365 | lock xrelease sbb WORD PTR [rcx],ax | |
1366 | .byte 0xf0; .byte 0xf2; sbb WORD PTR [rcx],ax | |
1367 | .byte 0xf0; .byte 0xf3; sbb WORD PTR [rcx],ax | |
1368 | xacquire lock sub WORD PTR [rcx],ax | |
1369 | lock xacquire sub WORD PTR [rcx],ax | |
1370 | xrelease lock sub WORD PTR [rcx],ax | |
1371 | lock xrelease sub WORD PTR [rcx],ax | |
1372 | .byte 0xf0; .byte 0xf2; sub WORD PTR [rcx],ax | |
1373 | .byte 0xf0; .byte 0xf3; sub WORD PTR [rcx],ax | |
1374 | xacquire lock xchg WORD PTR [rcx],ax | |
1375 | lock xacquire xchg WORD PTR [rcx],ax | |
1376 | xacquire xchg WORD PTR [rcx],ax | |
1377 | xrelease lock xchg WORD PTR [rcx],ax | |
1378 | lock xrelease xchg WORD PTR [rcx],ax | |
1379 | xrelease xchg WORD PTR [rcx],ax | |
1380 | .byte 0xf0; .byte 0xf2; xchg WORD PTR [rcx],ax | |
1381 | .byte 0xf0; .byte 0xf3; xchg WORD PTR [rcx],ax | |
1382 | xacquire lock xor WORD PTR [rcx],ax | |
1383 | lock xacquire xor WORD PTR [rcx],ax | |
1384 | xrelease lock xor WORD PTR [rcx],ax | |
1385 | lock xrelease xor WORD PTR [rcx],ax | |
1386 | .byte 0xf0; .byte 0xf2; xor WORD PTR [rcx],ax | |
1387 | .byte 0xf0; .byte 0xf3; xor WORD PTR [rcx],ax | |
1388 | ||
1389 | # Tests for op regl regl/m32 | |
1390 | # Tests for op regl/m32 regl | |
1391 | xacquire lock adc DWORD PTR [rcx],eax | |
1392 | lock xacquire adc DWORD PTR [rcx],eax | |
1393 | xrelease lock adc DWORD PTR [rcx],eax | |
1394 | lock xrelease adc DWORD PTR [rcx],eax | |
1395 | .byte 0xf0; .byte 0xf2; adc DWORD PTR [rcx],eax | |
1396 | .byte 0xf0; .byte 0xf3; adc DWORD PTR [rcx],eax | |
1397 | xacquire lock add DWORD PTR [rcx],eax | |
1398 | lock xacquire add DWORD PTR [rcx],eax | |
1399 | xrelease lock add DWORD PTR [rcx],eax | |
1400 | lock xrelease add DWORD PTR [rcx],eax | |
1401 | .byte 0xf0; .byte 0xf2; add DWORD PTR [rcx],eax | |
1402 | .byte 0xf0; .byte 0xf3; add DWORD PTR [rcx],eax | |
1403 | xacquire lock and DWORD PTR [rcx],eax | |
1404 | lock xacquire and DWORD PTR [rcx],eax | |
1405 | xrelease lock and DWORD PTR [rcx],eax | |
1406 | lock xrelease and DWORD PTR [rcx],eax | |
1407 | .byte 0xf0; .byte 0xf2; and DWORD PTR [rcx],eax | |
1408 | .byte 0xf0; .byte 0xf3; and DWORD PTR [rcx],eax | |
1409 | xrelease mov DWORD PTR [rcx],eax | |
1410 | xacquire lock or DWORD PTR [rcx],eax | |
1411 | lock xacquire or DWORD PTR [rcx],eax | |
1412 | xrelease lock or DWORD PTR [rcx],eax | |
1413 | lock xrelease or DWORD PTR [rcx],eax | |
1414 | .byte 0xf0; .byte 0xf2; or DWORD PTR [rcx],eax | |
1415 | .byte 0xf0; .byte 0xf3; or DWORD PTR [rcx],eax | |
1416 | xacquire lock sbb DWORD PTR [rcx],eax | |
1417 | lock xacquire sbb DWORD PTR [rcx],eax | |
1418 | xrelease lock sbb DWORD PTR [rcx],eax | |
1419 | lock xrelease sbb DWORD PTR [rcx],eax | |
1420 | .byte 0xf0; .byte 0xf2; sbb DWORD PTR [rcx],eax | |
1421 | .byte 0xf0; .byte 0xf3; sbb DWORD PTR [rcx],eax | |
1422 | xacquire lock sub DWORD PTR [rcx],eax | |
1423 | lock xacquire sub DWORD PTR [rcx],eax | |
1424 | xrelease lock sub DWORD PTR [rcx],eax | |
1425 | lock xrelease sub DWORD PTR [rcx],eax | |
1426 | .byte 0xf0; .byte 0xf2; sub DWORD PTR [rcx],eax | |
1427 | .byte 0xf0; .byte 0xf3; sub DWORD PTR [rcx],eax | |
1428 | xacquire lock xchg DWORD PTR [rcx],eax | |
1429 | lock xacquire xchg DWORD PTR [rcx],eax | |
1430 | xacquire xchg DWORD PTR [rcx],eax | |
1431 | xrelease lock xchg DWORD PTR [rcx],eax | |
1432 | lock xrelease xchg DWORD PTR [rcx],eax | |
1433 | xrelease xchg DWORD PTR [rcx],eax | |
1434 | .byte 0xf0; .byte 0xf2; xchg DWORD PTR [rcx],eax | |
1435 | .byte 0xf0; .byte 0xf3; xchg DWORD PTR [rcx],eax | |
1436 | xacquire lock xor DWORD PTR [rcx],eax | |
1437 | lock xacquire xor DWORD PTR [rcx],eax | |
1438 | xrelease lock xor DWORD PTR [rcx],eax | |
1439 | lock xrelease xor DWORD PTR [rcx],eax | |
1440 | .byte 0xf0; .byte 0xf2; xor DWORD PTR [rcx],eax | |
1441 | .byte 0xf0; .byte 0xf3; xor DWORD PTR [rcx],eax | |
1442 | ||
1443 | # Tests for op regq regq/m64 | |
1444 | # Tests for op regq/m64 regq | |
1445 | xacquire lock adc QWORD PTR [rcx],rax | |
1446 | lock xacquire adc QWORD PTR [rcx],rax | |
1447 | xrelease lock adc QWORD PTR [rcx],rax | |
1448 | lock xrelease adc QWORD PTR [rcx],rax | |
1449 | .byte 0xf0; .byte 0xf2; adc QWORD PTR [rcx],rax | |
1450 | .byte 0xf0; .byte 0xf3; adc QWORD PTR [rcx],rax | |
1451 | xacquire lock add QWORD PTR [rcx],rax | |
1452 | lock xacquire add QWORD PTR [rcx],rax | |
1453 | xrelease lock add QWORD PTR [rcx],rax | |
1454 | lock xrelease add QWORD PTR [rcx],rax | |
1455 | .byte 0xf0; .byte 0xf2; add QWORD PTR [rcx],rax | |
1456 | .byte 0xf0; .byte 0xf3; add QWORD PTR [rcx],rax | |
1457 | xacquire lock and QWORD PTR [rcx],rax | |
1458 | lock xacquire and QWORD PTR [rcx],rax | |
1459 | xrelease lock and QWORD PTR [rcx],rax | |
1460 | lock xrelease and QWORD PTR [rcx],rax | |
1461 | .byte 0xf0; .byte 0xf2; and QWORD PTR [rcx],rax | |
1462 | .byte 0xf0; .byte 0xf3; and QWORD PTR [rcx],rax | |
1463 | xrelease mov QWORD PTR [rcx],rax | |
1464 | xacquire lock or QWORD PTR [rcx],rax | |
1465 | lock xacquire or QWORD PTR [rcx],rax | |
1466 | xrelease lock or QWORD PTR [rcx],rax | |
1467 | lock xrelease or QWORD PTR [rcx],rax | |
1468 | .byte 0xf0; .byte 0xf2; or QWORD PTR [rcx],rax | |
1469 | .byte 0xf0; .byte 0xf3; or QWORD PTR [rcx],rax | |
1470 | xacquire lock sbb QWORD PTR [rcx],rax | |
1471 | lock xacquire sbb QWORD PTR [rcx],rax | |
1472 | xrelease lock sbb QWORD PTR [rcx],rax | |
1473 | lock xrelease sbb QWORD PTR [rcx],rax | |
1474 | .byte 0xf0; .byte 0xf2; sbb QWORD PTR [rcx],rax | |
1475 | .byte 0xf0; .byte 0xf3; sbb QWORD PTR [rcx],rax | |
1476 | xacquire lock sub QWORD PTR [rcx],rax | |
1477 | lock xacquire sub QWORD PTR [rcx],rax | |
1478 | xrelease lock sub QWORD PTR [rcx],rax | |
1479 | lock xrelease sub QWORD PTR [rcx],rax | |
1480 | .byte 0xf0; .byte 0xf2; sub QWORD PTR [rcx],rax | |
1481 | .byte 0xf0; .byte 0xf3; sub QWORD PTR [rcx],rax | |
1482 | xacquire lock xchg QWORD PTR [rcx],rax | |
1483 | lock xacquire xchg QWORD PTR [rcx],rax | |
1484 | xacquire xchg QWORD PTR [rcx],rax | |
1485 | xrelease lock xchg QWORD PTR [rcx],rax | |
1486 | lock xrelease xchg QWORD PTR [rcx],rax | |
1487 | xrelease xchg QWORD PTR [rcx],rax | |
1488 | .byte 0xf0; .byte 0xf2; xchg QWORD PTR [rcx],rax | |
1489 | .byte 0xf0; .byte 0xf3; xchg QWORD PTR [rcx],rax | |
1490 | xacquire lock xor QWORD PTR [rcx],rax | |
1491 | lock xacquire xor QWORD PTR [rcx],rax | |
1492 | xrelease lock xor QWORD PTR [rcx],rax | |
1493 | lock xrelease xor QWORD PTR [rcx],rax | |
1494 | .byte 0xf0; .byte 0xf2; xor QWORD PTR [rcx],rax | |
1495 | .byte 0xf0; .byte 0xf3; xor QWORD PTR [rcx],rax | |
1496 | ||
1497 | # Tests for op regs, regs/m16 | |
1498 | xacquire lock btc WORD PTR [rcx],ax | |
1499 | lock xacquire btc WORD PTR [rcx],ax | |
1500 | xrelease lock btc WORD PTR [rcx],ax | |
1501 | lock xrelease btc WORD PTR [rcx],ax | |
1502 | .byte 0xf0; .byte 0xf2; btc WORD PTR [rcx],ax | |
1503 | .byte 0xf0; .byte 0xf3; btc WORD PTR [rcx],ax | |
1504 | xacquire lock btr WORD PTR [rcx],ax | |
1505 | lock xacquire btr WORD PTR [rcx],ax | |
1506 | xrelease lock btr WORD PTR [rcx],ax | |
1507 | lock xrelease btr WORD PTR [rcx],ax | |
1508 | .byte 0xf0; .byte 0xf2; btr WORD PTR [rcx],ax | |
1509 | .byte 0xf0; .byte 0xf3; btr WORD PTR [rcx],ax | |
1510 | xacquire lock bts WORD PTR [rcx],ax | |
1511 | lock xacquire bts WORD PTR [rcx],ax | |
1512 | xrelease lock bts WORD PTR [rcx],ax | |
1513 | lock xrelease bts WORD PTR [rcx],ax | |
1514 | .byte 0xf0; .byte 0xf2; bts WORD PTR [rcx],ax | |
1515 | .byte 0xf0; .byte 0xf3; bts WORD PTR [rcx],ax | |
1516 | xacquire lock cmpxchg WORD PTR [rcx],ax | |
1517 | lock xacquire cmpxchg WORD PTR [rcx],ax | |
1518 | xrelease lock cmpxchg WORD PTR [rcx],ax | |
1519 | lock xrelease cmpxchg WORD PTR [rcx],ax | |
1520 | .byte 0xf0; .byte 0xf2; cmpxchg WORD PTR [rcx],ax | |
1521 | .byte 0xf0; .byte 0xf3; cmpxchg WORD PTR [rcx],ax | |
1522 | xacquire lock xadd WORD PTR [rcx],ax | |
1523 | lock xacquire xadd WORD PTR [rcx],ax | |
1524 | xrelease lock xadd WORD PTR [rcx],ax | |
1525 | lock xrelease xadd WORD PTR [rcx],ax | |
1526 | .byte 0xf0; .byte 0xf2; xadd WORD PTR [rcx],ax | |
1527 | .byte 0xf0; .byte 0xf3; xadd WORD PTR [rcx],ax | |
1528 | ||
1529 | # Tests for op regl regl/m32 | |
1530 | xacquire lock btc DWORD PTR [rcx],eax | |
1531 | lock xacquire btc DWORD PTR [rcx],eax | |
1532 | xrelease lock btc DWORD PTR [rcx],eax | |
1533 | lock xrelease btc DWORD PTR [rcx],eax | |
1534 | .byte 0xf0; .byte 0xf2; btc DWORD PTR [rcx],eax | |
1535 | .byte 0xf0; .byte 0xf3; btc DWORD PTR [rcx],eax | |
1536 | xacquire lock btr DWORD PTR [rcx],eax | |
1537 | lock xacquire btr DWORD PTR [rcx],eax | |
1538 | xrelease lock btr DWORD PTR [rcx],eax | |
1539 | lock xrelease btr DWORD PTR [rcx],eax | |
1540 | .byte 0xf0; .byte 0xf2; btr DWORD PTR [rcx],eax | |
1541 | .byte 0xf0; .byte 0xf3; btr DWORD PTR [rcx],eax | |
1542 | xacquire lock bts DWORD PTR [rcx],eax | |
1543 | lock xacquire bts DWORD PTR [rcx],eax | |
1544 | xrelease lock bts DWORD PTR [rcx],eax | |
1545 | lock xrelease bts DWORD PTR [rcx],eax | |
1546 | .byte 0xf0; .byte 0xf2; bts DWORD PTR [rcx],eax | |
1547 | .byte 0xf0; .byte 0xf3; bts DWORD PTR [rcx],eax | |
1548 | xacquire lock cmpxchg DWORD PTR [rcx],eax | |
1549 | lock xacquire cmpxchg DWORD PTR [rcx],eax | |
1550 | xrelease lock cmpxchg DWORD PTR [rcx],eax | |
1551 | lock xrelease cmpxchg DWORD PTR [rcx],eax | |
1552 | .byte 0xf0; .byte 0xf2; cmpxchg DWORD PTR [rcx],eax | |
1553 | .byte 0xf0; .byte 0xf3; cmpxchg DWORD PTR [rcx],eax | |
1554 | xacquire lock xadd DWORD PTR [rcx],eax | |
1555 | lock xacquire xadd DWORD PTR [rcx],eax | |
1556 | xrelease lock xadd DWORD PTR [rcx],eax | |
1557 | lock xrelease xadd DWORD PTR [rcx],eax | |
1558 | .byte 0xf0; .byte 0xf2; xadd DWORD PTR [rcx],eax | |
1559 | .byte 0xf0; .byte 0xf3; xadd DWORD PTR [rcx],eax | |
1560 | ||
1561 | # Tests for op regq regq/m64 | |
1562 | xacquire lock btc QWORD PTR [rcx],rax | |
1563 | lock xacquire btc QWORD PTR [rcx],rax | |
1564 | xrelease lock btc QWORD PTR [rcx],rax | |
1565 | lock xrelease btc QWORD PTR [rcx],rax | |
1566 | .byte 0xf0; .byte 0xf2; btc QWORD PTR [rcx],rax | |
1567 | .byte 0xf0; .byte 0xf3; btc QWORD PTR [rcx],rax | |
1568 | xacquire lock btr QWORD PTR [rcx],rax | |
1569 | lock xacquire btr QWORD PTR [rcx],rax | |
1570 | xrelease lock btr QWORD PTR [rcx],rax | |
1571 | lock xrelease btr QWORD PTR [rcx],rax | |
1572 | .byte 0xf0; .byte 0xf2; btr QWORD PTR [rcx],rax | |
1573 | .byte 0xf0; .byte 0xf3; btr QWORD PTR [rcx],rax | |
1574 | xacquire lock bts QWORD PTR [rcx],rax | |
1575 | lock xacquire bts QWORD PTR [rcx],rax | |
1576 | xrelease lock bts QWORD PTR [rcx],rax | |
1577 | lock xrelease bts QWORD PTR [rcx],rax | |
1578 | .byte 0xf0; .byte 0xf2; bts QWORD PTR [rcx],rax | |
1579 | .byte 0xf0; .byte 0xf3; bts QWORD PTR [rcx],rax | |
1580 | xacquire lock cmpxchg QWORD PTR [rcx],rax | |
1581 | lock xacquire cmpxchg QWORD PTR [rcx],rax | |
1582 | xrelease lock cmpxchg QWORD PTR [rcx],rax | |
1583 | lock xrelease cmpxchg QWORD PTR [rcx],rax | |
1584 | .byte 0xf0; .byte 0xf2; cmpxchg QWORD PTR [rcx],rax | |
1585 | .byte 0xf0; .byte 0xf3; cmpxchg QWORD PTR [rcx],rax | |
1586 | xacquire lock xadd QWORD PTR [rcx],rax | |
1587 | lock xacquire xadd QWORD PTR [rcx],rax | |
1588 | xrelease lock xadd QWORD PTR [rcx],rax | |
1589 | lock xrelease xadd QWORD PTR [rcx],rax | |
1590 | .byte 0xf0; .byte 0xf2; xadd QWORD PTR [rcx],rax | |
1591 | .byte 0xf0; .byte 0xf3; xadd QWORD PTR [rcx],rax | |
1592 | ||
1593 | # Tests for op regb/m8 | |
1594 | xacquire lock dec BYTE PTR [rcx] | |
1595 | lock xacquire dec BYTE PTR [rcx] | |
1596 | xrelease lock dec BYTE PTR [rcx] | |
1597 | lock xrelease dec BYTE PTR [rcx] | |
1598 | .byte 0xf0; .byte 0xf2; dec BYTE PTR [rcx] | |
1599 | .byte 0xf0; .byte 0xf3; dec BYTE PTR [rcx] | |
1600 | xacquire lock inc BYTE PTR [rcx] | |
1601 | lock xacquire inc BYTE PTR [rcx] | |
1602 | xrelease lock inc BYTE PTR [rcx] | |
1603 | lock xrelease inc BYTE PTR [rcx] | |
1604 | .byte 0xf0; .byte 0xf2; inc BYTE PTR [rcx] | |
1605 | .byte 0xf0; .byte 0xf3; inc BYTE PTR [rcx] | |
1606 | xacquire lock neg BYTE PTR [rcx] | |
1607 | lock xacquire neg BYTE PTR [rcx] | |
1608 | xrelease lock neg BYTE PTR [rcx] | |
1609 | lock xrelease neg BYTE PTR [rcx] | |
1610 | .byte 0xf0; .byte 0xf2; neg BYTE PTR [rcx] | |
1611 | .byte 0xf0; .byte 0xf3; neg BYTE PTR [rcx] | |
1612 | xacquire lock not BYTE PTR [rcx] | |
1613 | lock xacquire not BYTE PTR [rcx] | |
1614 | xrelease lock not BYTE PTR [rcx] | |
1615 | lock xrelease not BYTE PTR [rcx] | |
1616 | .byte 0xf0; .byte 0xf2; not BYTE PTR [rcx] | |
1617 | .byte 0xf0; .byte 0xf3; not BYTE PTR [rcx] | |
1618 | ||
1619 | # Tests for op regs/m16 | |
1620 | xacquire lock dec WORD PTR [rcx] | |
1621 | lock xacquire dec WORD PTR [rcx] | |
1622 | xrelease lock dec WORD PTR [rcx] | |
1623 | lock xrelease dec WORD PTR [rcx] | |
1624 | .byte 0xf0; .byte 0xf2; dec WORD PTR [rcx] | |
1625 | .byte 0xf0; .byte 0xf3; dec WORD PTR [rcx] | |
1626 | xacquire lock inc WORD PTR [rcx] | |
1627 | lock xacquire inc WORD PTR [rcx] | |
1628 | xrelease lock inc WORD PTR [rcx] | |
1629 | lock xrelease inc WORD PTR [rcx] | |
1630 | .byte 0xf0; .byte 0xf2; inc WORD PTR [rcx] | |
1631 | .byte 0xf0; .byte 0xf3; inc WORD PTR [rcx] | |
1632 | xacquire lock neg WORD PTR [rcx] | |
1633 | lock xacquire neg WORD PTR [rcx] | |
1634 | xrelease lock neg WORD PTR [rcx] | |
1635 | lock xrelease neg WORD PTR [rcx] | |
1636 | .byte 0xf0; .byte 0xf2; neg WORD PTR [rcx] | |
1637 | .byte 0xf0; .byte 0xf3; neg WORD PTR [rcx] | |
1638 | xacquire lock not WORD PTR [rcx] | |
1639 | lock xacquire not WORD PTR [rcx] | |
1640 | xrelease lock not WORD PTR [rcx] | |
1641 | lock xrelease not WORD PTR [rcx] | |
1642 | .byte 0xf0; .byte 0xf2; not WORD PTR [rcx] | |
1643 | .byte 0xf0; .byte 0xf3; not WORD PTR [rcx] | |
1644 | ||
1645 | # Tests for op regl/m32 | |
1646 | xacquire lock dec DWORD PTR [rcx] | |
1647 | lock xacquire dec DWORD PTR [rcx] | |
1648 | xrelease lock dec DWORD PTR [rcx] | |
1649 | lock xrelease dec DWORD PTR [rcx] | |
1650 | .byte 0xf0; .byte 0xf2; dec DWORD PTR [rcx] | |
1651 | .byte 0xf0; .byte 0xf3; dec DWORD PTR [rcx] | |
1652 | xacquire lock inc DWORD PTR [rcx] | |
1653 | lock xacquire inc DWORD PTR [rcx] | |
1654 | xrelease lock inc DWORD PTR [rcx] | |
1655 | lock xrelease inc DWORD PTR [rcx] | |
1656 | .byte 0xf0; .byte 0xf2; inc DWORD PTR [rcx] | |
1657 | .byte 0xf0; .byte 0xf3; inc DWORD PTR [rcx] | |
1658 | xacquire lock neg DWORD PTR [rcx] | |
1659 | lock xacquire neg DWORD PTR [rcx] | |
1660 | xrelease lock neg DWORD PTR [rcx] | |
1661 | lock xrelease neg DWORD PTR [rcx] | |
1662 | .byte 0xf0; .byte 0xf2; neg DWORD PTR [rcx] | |
1663 | .byte 0xf0; .byte 0xf3; neg DWORD PTR [rcx] | |
1664 | xacquire lock not DWORD PTR [rcx] | |
1665 | lock xacquire not DWORD PTR [rcx] | |
1666 | xrelease lock not DWORD PTR [rcx] | |
1667 | lock xrelease not DWORD PTR [rcx] | |
1668 | .byte 0xf0; .byte 0xf2; not DWORD PTR [rcx] | |
1669 | .byte 0xf0; .byte 0xf3; not DWORD PTR [rcx] | |
1670 | ||
1671 | # Tests for op regq/m64 | |
1672 | xacquire lock dec QWORD PTR [rcx] | |
1673 | lock xacquire dec QWORD PTR [rcx] | |
1674 | xrelease lock dec QWORD PTR [rcx] | |
1675 | lock xrelease dec QWORD PTR [rcx] | |
1676 | .byte 0xf0; .byte 0xf2; dec QWORD PTR [rcx] | |
1677 | .byte 0xf0; .byte 0xf3; dec QWORD PTR [rcx] | |
1678 | xacquire lock inc QWORD PTR [rcx] | |
1679 | lock xacquire inc QWORD PTR [rcx] | |
1680 | xrelease lock inc QWORD PTR [rcx] | |
1681 | lock xrelease inc QWORD PTR [rcx] | |
1682 | .byte 0xf0; .byte 0xf2; inc QWORD PTR [rcx] | |
1683 | .byte 0xf0; .byte 0xf3; inc QWORD PTR [rcx] | |
1684 | xacquire lock neg QWORD PTR [rcx] | |
1685 | lock xacquire neg QWORD PTR [rcx] | |
1686 | xrelease lock neg QWORD PTR [rcx] | |
1687 | lock xrelease neg QWORD PTR [rcx] | |
1688 | .byte 0xf0; .byte 0xf2; neg QWORD PTR [rcx] | |
1689 | .byte 0xf0; .byte 0xf3; neg QWORD PTR [rcx] | |
1690 | xacquire lock not QWORD PTR [rcx] | |
1691 | lock xacquire not QWORD PTR [rcx] | |
1692 | xrelease lock not QWORD PTR [rcx] | |
1693 | lock xrelease not QWORD PTR [rcx] | |
1694 | .byte 0xf0; .byte 0xf2; not QWORD PTR [rcx] | |
1695 | .byte 0xf0; .byte 0xf3; not QWORD PTR [rcx] | |
1696 | ||
1697 | # Tests for op m64 | |
1698 | xacquire lock cmpxchg8b QWORD PTR [rcx] | |
1699 | lock xacquire cmpxchg8b QWORD PTR [rcx] | |
1700 | xrelease lock cmpxchg8b QWORD PTR [rcx] | |
1701 | lock xrelease cmpxchg8b QWORD PTR [rcx] | |
1702 | .byte 0xf0; .byte 0xf2; cmpxchg8b QWORD PTR [rcx] | |
1703 | .byte 0xf0; .byte 0xf3; cmpxchg8b QWORD PTR [rcx] | |
1704 | ||
1705 | # Tests for op regb, regb/m8 | |
1706 | xacquire lock cmpxchg BYTE PTR [rcx],cl | |
1707 | lock xacquire cmpxchg BYTE PTR [rcx],cl | |
1708 | xrelease lock cmpxchg BYTE PTR [rcx],cl | |
1709 | lock xrelease cmpxchg BYTE PTR [rcx],cl | |
1710 | .byte 0xf0; .byte 0xf2; cmpxchg BYTE PTR [rcx],cl | |
1711 | .byte 0xf0; .byte 0xf3; cmpxchg BYTE PTR [rcx],cl | |
1712 | xacquire lock xadd BYTE PTR [rcx],cl | |
1713 | lock xacquire xadd BYTE PTR [rcx],cl | |
1714 | xrelease lock xadd BYTE PTR [rcx],cl | |
1715 | lock xrelease xadd BYTE PTR [rcx],cl | |
1716 | .byte 0xf0; .byte 0xf2; xadd BYTE PTR [rcx],cl | |
1717 | .byte 0xf0; .byte 0xf3; xadd BYTE PTR [rcx],cl |