Commit | Line | Data |
---|---|---|
42164a71 L |
1 | # Check 32bit unsupported HLE instructions |
2 | ||
3 | .allow_index_reg | |
4 | .text | |
5 | _start: | |
6 | ||
7 | # Tests for op imm8 al | |
8 | xacquire adc $100,%al | |
9 | xacquire lock adc $100,%al | |
10 | lock xacquire adc $100,%al | |
11 | xrelease adc $100,%al | |
12 | xrelease lock adc $100,%al | |
13 | lock xrelease adc $100,%al | |
14 | ||
15 | # Tests for op imm16 ax | |
16 | xacquire adc $1000,%ax | |
17 | xacquire lock adc $1000,%ax | |
18 | lock xacquire adc $1000,%ax | |
19 | xrelease adc $1000,%ax | |
20 | xrelease lock adc $1000,%ax | |
21 | lock xrelease adc $1000,%ax | |
22 | ||
23 | # Tests for op imm32 eax | |
24 | xacquire adc $10000000,%eax | |
25 | xacquire lock adc $10000000,%eax | |
26 | lock xacquire adc $10000000,%eax | |
27 | xrelease adc $10000000,%eax | |
28 | xrelease lock adc $10000000,%eax | |
29 | lock xrelease adc $10000000,%eax | |
30 | ||
31 | # Tests for op imm8 regb/m8 | |
32 | xacquire adcb $100,%cl | |
33 | xacquire lock adcb $100,%cl | |
34 | lock xacquire adcb $100,%cl | |
35 | xrelease adcb $100,%cl | |
36 | xrelease lock adcb $100,%cl | |
37 | lock xrelease adcb $100,%cl | |
38 | xacquire adcb $100,(%ecx) | |
39 | xrelease adcb $100,(%ecx) | |
40 | ||
41 | # Tests for op imm16 regs/m16 | |
42 | xacquire adcw $1000,%cx | |
43 | xacquire lock adcw $1000,%cx | |
44 | lock xacquire adcw $1000,%cx | |
45 | xrelease adcw $1000,%cx | |
46 | xrelease lock adcw $1000,%cx | |
47 | lock xrelease adcw $1000,%cx | |
48 | xacquire adcw $1000,(%ecx) | |
49 | xrelease adcw $1000,(%ecx) | |
50 | ||
51 | # Tests for op imm32 regl/m32 | |
52 | xacquire adcl $10000000,%ecx | |
53 | xacquire lock adcl $10000000,%ecx | |
54 | lock xacquire adcl $10000000,%ecx | |
55 | xrelease adcl $10000000,%ecx | |
56 | xrelease lock adcl $10000000,%ecx | |
57 | lock xrelease adcl $10000000,%ecx | |
58 | xacquire adcl $10000000,(%ecx) | |
59 | xrelease adcl $10000000,(%ecx) | |
60 | ||
61 | # Tests for op imm8 regs/m16 | |
62 | xacquire adcw $100,%cx | |
63 | xacquire lock adcw $100,%cx | |
64 | lock xacquire adcw $100,%cx | |
65 | xrelease adcw $100,%cx | |
66 | xrelease lock adcw $100,%cx | |
67 | lock xrelease adcw $100,%cx | |
68 | xacquire adcw $100,(%ecx) | |
69 | xrelease adcw $100,(%ecx) | |
70 | ||
71 | # Tests for op imm8 regl/m32 | |
72 | xacquire adcl $100,%ecx | |
73 | xacquire lock adcl $100,%ecx | |
74 | lock xacquire adcl $100,%ecx | |
75 | xrelease adcl $100,%ecx | |
76 | xrelease lock adcl $100,%ecx | |
77 | lock xrelease adcl $100,%ecx | |
78 | xacquire adcl $100,(%ecx) | |
79 | xrelease adcl $100,(%ecx) | |
80 | ||
81 | # Tests for op imm8 regb/m8 | |
82 | xacquire adcb $100,%cl | |
83 | xacquire lock adcb $100,%cl | |
84 | lock xacquire adcb $100,%cl | |
85 | xrelease adcb $100,%cl | |
86 | xrelease lock adcb $100,%cl | |
87 | lock xrelease adcb $100,%cl | |
88 | xacquire adcb $100,(%ecx) | |
89 | xrelease adcb $100,(%ecx) | |
90 | ||
91 | # Tests for op regb regb/m8 | |
92 | # Tests for op regb/m8 regb | |
93 | xacquire adcb %al,%cl | |
94 | xacquire lock adcb %al,%cl | |
95 | lock xacquire adcb %al,%cl | |
96 | xrelease adcb %al,%cl | |
97 | xrelease lock adcb %al,%cl | |
98 | lock xrelease adcb %al,%cl | |
99 | xacquire adcb %al,(%ecx) | |
100 | xrelease adcb %al,(%ecx) | |
101 | xacquire adcb %cl,%al | |
102 | xacquire lock adcb %cl,%al | |
103 | lock xacquire adcb %cl,%al | |
104 | xrelease adcb %cl,%al | |
105 | xrelease lock adcb %cl,%al | |
106 | lock xrelease adcb %cl,%al | |
107 | xacquire adcb (%ecx),%al | |
108 | xacquire lock adcb (%ecx),%al | |
109 | lock xacquire adcb (%ecx),%al | |
110 | xrelease adcb (%ecx),%al | |
111 | xrelease lock adcb (%ecx),%al | |
112 | lock xrelease adcb (%ecx),%al | |
113 | ||
114 | # Tests for op regs regs/m16 | |
115 | # Tests for op regs/m16 regs | |
116 | xacquire adcw %ax,%cx | |
117 | xacquire lock adcw %ax,%cx | |
118 | lock xacquire adcw %ax,%cx | |
119 | xrelease adcw %ax,%cx | |
120 | xrelease lock adcw %ax,%cx | |
121 | lock xrelease adcw %ax,%cx | |
122 | xacquire adcw %ax,(%ecx) | |
123 | xrelease adcw %ax,(%ecx) | |
124 | xacquire adcw %cx,%ax | |
125 | xacquire lock adcw %cx,%ax | |
126 | lock xacquire adcw %cx,%ax | |
127 | xrelease adcw %cx,%ax | |
128 | xrelease lock adcw %cx,%ax | |
129 | lock xrelease adcw %cx,%ax | |
130 | xacquire adcw (%ecx),%ax | |
131 | xacquire lock adcw (%ecx),%ax | |
132 | lock xacquire adcw (%ecx),%ax | |
133 | xrelease adcw (%ecx),%ax | |
134 | xrelease lock adcw (%ecx),%ax | |
135 | lock xrelease adcw (%ecx),%ax | |
136 | ||
137 | # Tests for op regl regl/m32 | |
138 | # Tests for op regl/m32 regl | |
139 | xacquire adcl %eax,%ecx | |
140 | xacquire lock adcl %eax,%ecx | |
141 | lock xacquire adcl %eax,%ecx | |
142 | xrelease adcl %eax,%ecx | |
143 | xrelease lock adcl %eax,%ecx | |
144 | lock xrelease adcl %eax,%ecx | |
145 | xacquire adcl %eax,(%ecx) | |
146 | xrelease adcl %eax,(%ecx) | |
147 | xacquire adcl %ecx,%eax | |
148 | xacquire lock adcl %ecx,%eax | |
149 | lock xacquire adcl %ecx,%eax | |
150 | xrelease adcl %ecx,%eax | |
151 | xrelease lock adcl %ecx,%eax | |
152 | lock xrelease adcl %ecx,%eax | |
153 | xacquire adcl (%ecx),%eax | |
154 | xacquire lock adcl (%ecx),%eax | |
155 | lock xacquire adcl (%ecx),%eax | |
156 | xrelease adcl (%ecx),%eax | |
157 | xrelease lock adcl (%ecx),%eax | |
158 | lock xrelease adcl (%ecx),%eax | |
159 | ||
160 | # Tests for op regs, regs/m16 | |
161 | xacquire btcw %ax,%cx | |
162 | xacquire lock btcw %ax,%cx | |
163 | lock xacquire btcw %ax,%cx | |
164 | xrelease btcw %ax,%cx | |
165 | xrelease lock btcw %ax,%cx | |
166 | lock xrelease btcw %ax,%cx | |
167 | xacquire btcw %ax,(%ecx) | |
168 | xrelease btcw %ax,(%ecx) | |
169 | ||
170 | # Tests for op regl regl/m32 | |
171 | xacquire btcl %eax,%ecx | |
172 | xacquire lock btcl %eax,%ecx | |
173 | lock xacquire btcl %eax,%ecx | |
174 | xrelease btcl %eax,%ecx | |
175 | xrelease lock btcl %eax,%ecx | |
176 | lock xrelease btcl %eax,%ecx | |
177 | xacquire btcl %eax,(%ecx) | |
178 | xrelease btcl %eax,(%ecx) | |
179 | ||
180 | # Tests for op regb/m8 | |
181 | xacquire decb %cl | |
182 | xacquire lock decb %cl | |
183 | lock xacquire decb %cl | |
184 | xrelease decb %cl | |
185 | xrelease lock decb %cl | |
186 | lock xrelease decb %cl | |
187 | xacquire decb (%ecx) | |
188 | xrelease decb (%ecx) | |
189 | ||
190 | # Tests for op regs/m16 | |
191 | xacquire decw %cx | |
192 | xacquire lock decw %cx | |
193 | lock xacquire decw %cx | |
194 | xrelease decw %cx | |
195 | xrelease lock decw %cx | |
196 | lock xrelease decw %cx | |
197 | xacquire decw (%ecx) | |
198 | xrelease decw (%ecx) | |
199 | ||
200 | # Tests for op regl/m32 | |
201 | xacquire decl %ecx | |
202 | xacquire lock decl %ecx | |
203 | lock xacquire decl %ecx | |
204 | xrelease decl %ecx | |
205 | xrelease lock decl %ecx | |
206 | lock xrelease decl %ecx | |
207 | xacquire decl (%ecx) | |
208 | xrelease decl (%ecx) | |
209 | ||
210 | # Tests for op m64 | |
211 | xacquire cmpxchg8bq (%ecx) | |
212 | xrelease cmpxchg8bq (%ecx) | |
213 | ||
214 | # Tests for op regb, regb/m8 | |
215 | xacquire cmpxchgb %cl,%al | |
216 | xacquire lock cmpxchgb %cl,%al | |
217 | lock xacquire cmpxchgb %cl,%al | |
218 | xrelease cmpxchgb %cl,%al | |
219 | xrelease lock cmpxchgb %cl,%al | |
220 | lock xrelease cmpxchgb %cl,%al | |
221 | xacquire cmpxchgb %cl,(%ecx) | |
222 | xrelease cmpxchgb %cl,(%ecx) | |
223 | ||
224 | .intel_syntax noprefix | |
225 | ||
226 | # Tests for op imm8 al | |
227 | xacquire adc al,100 | |
228 | xacquire lock adc al,100 | |
229 | lock xacquire adc al,100 | |
230 | xrelease adc al,100 | |
231 | xrelease lock adc al,100 | |
232 | lock xrelease adc al,100 | |
233 | ||
234 | # Tests for op imm16 ax | |
235 | xacquire adc ax,1000 | |
236 | xacquire lock adc ax,1000 | |
237 | lock xacquire adc ax,1000 | |
238 | xrelease adc ax,1000 | |
239 | xrelease lock adc ax,1000 | |
240 | lock xrelease adc ax,1000 | |
241 | ||
242 | # Tests for op imm32 eax | |
243 | xacquire adc eax,10000000 | |
244 | xacquire lock adc eax,10000000 | |
245 | lock xacquire adc eax,10000000 | |
246 | xrelease adc eax,10000000 | |
247 | xrelease lock adc eax,10000000 | |
248 | lock xrelease adc eax,10000000 | |
249 | ||
250 | # Tests for op imm8 regb/m8 | |
251 | xacquire adc cl,100 | |
252 | xacquire lock adc cl,100 | |
253 | lock xacquire adc cl,100 | |
254 | xrelease adc cl,100 | |
255 | xrelease lock adc cl,100 | |
256 | lock xrelease adc cl,100 | |
257 | xacquire adc BYTE PTR [ecx],100 | |
258 | xrelease adc BYTE PTR [ecx],100 | |
259 | ||
260 | # Tests for op imm16 regs/m16 | |
261 | xacquire adc cx,1000 | |
262 | xacquire lock adc cx,1000 | |
263 | lock xacquire adc cx,1000 | |
264 | xrelease adc cx,1000 | |
265 | xrelease lock adc cx,1000 | |
266 | lock xrelease adc cx,1000 | |
267 | xacquire adc WORD PTR [ecx],1000 | |
268 | xrelease adc WORD PTR [ecx],1000 | |
269 | ||
270 | # Tests for op imm32 regl/m32 | |
271 | xacquire adc ecx,10000000 | |
272 | xacquire lock adc ecx,10000000 | |
273 | lock xacquire adc ecx,10000000 | |
274 | xrelease adc ecx,10000000 | |
275 | xrelease lock adc ecx,10000000 | |
276 | lock xrelease adc ecx,10000000 | |
277 | xacquire adc DWORD PTR [ecx],10000000 | |
278 | xrelease adc DWORD PTR [ecx],10000000 | |
279 | ||
280 | # Tests for op imm8 regs/m16 | |
281 | xacquire adc cx,100 | |
282 | xacquire lock adc cx,100 | |
283 | lock xacquire adc cx,100 | |
284 | xrelease adc cx,100 | |
285 | xrelease lock adc cx,100 | |
286 | lock xrelease adc cx,100 | |
287 | xacquire adc WORD PTR [ecx],100 | |
288 | xrelease adc WORD PTR [ecx],100 | |
289 | ||
290 | # Tests for op imm8 regl/m32 | |
291 | xacquire adc ecx,100 | |
292 | xacquire lock adc ecx,100 | |
293 | lock xacquire adc ecx,100 | |
294 | xrelease adc ecx,100 | |
295 | xrelease lock adc ecx,100 | |
296 | lock xrelease adc ecx,100 | |
297 | xacquire adc DWORD PTR [ecx],100 | |
298 | xrelease adc DWORD PTR [ecx],100 | |
299 | ||
300 | # Tests for op imm8 regb/m8 | |
301 | xacquire adc cl,100 | |
302 | xacquire lock adc cl,100 | |
303 | lock xacquire adc cl,100 | |
304 | xrelease adc cl,100 | |
305 | xrelease lock adc cl,100 | |
306 | lock xrelease adc cl,100 | |
307 | xacquire adc BYTE PTR [ecx],100 | |
308 | xrelease adc BYTE PTR [ecx],100 | |
309 | ||
310 | # Tests for op regb regb/m8 | |
311 | # Tests for op regb/m8 regb | |
312 | xacquire adc cl,al | |
313 | xacquire lock adc cl,al | |
314 | lock xacquire adc cl,al | |
315 | xrelease adc cl,al | |
316 | xrelease lock adc cl,al | |
317 | lock xrelease adc cl,al | |
318 | xacquire adc BYTE PTR [ecx],al | |
319 | xrelease adc BYTE PTR [ecx],al | |
320 | xacquire adc al,cl | |
321 | xacquire lock adc al,cl | |
322 | lock xacquire adc al,cl | |
323 | xrelease adc al,cl | |
324 | xrelease lock adc al,cl | |
325 | lock xrelease adc al,cl | |
326 | xacquire adc al,BYTE PTR [ecx] | |
327 | xacquire lock adc al,BYTE PTR [ecx] | |
328 | lock xacquire adc al,BYTE PTR [ecx] | |
329 | xrelease adc al,BYTE PTR [ecx] | |
330 | xrelease lock adc al,BYTE PTR [ecx] | |
331 | lock xrelease adc al,BYTE PTR [ecx] | |
332 | ||
333 | # Tests for op regs regs/m16 | |
334 | # Tests for op regs/m16 regs | |
335 | xacquire adc cx,ax | |
336 | xacquire lock adc cx,ax | |
337 | lock xacquire adc cx,ax | |
338 | xrelease adc cx,ax | |
339 | xrelease lock adc cx,ax | |
340 | lock xrelease adc cx,ax | |
341 | xacquire adc WORD PTR [ecx],ax | |
342 | xrelease adc WORD PTR [ecx],ax | |
343 | xacquire adc ax,cx | |
344 | xacquire lock adc ax,cx | |
345 | lock xacquire adc ax,cx | |
346 | xrelease adc ax,cx | |
347 | xrelease lock adc ax,cx | |
348 | lock xrelease adc ax,cx | |
349 | xacquire adc ax,WORD PTR [ecx] | |
350 | xacquire lock adc ax,WORD PTR [ecx] | |
351 | lock xacquire adc ax,WORD PTR [ecx] | |
352 | xrelease adc ax,WORD PTR [ecx] | |
353 | xrelease lock adc ax,WORD PTR [ecx] | |
354 | lock xrelease adc ax,WORD PTR [ecx] | |
355 | ||
356 | # Tests for op regl regl/m32 | |
357 | # Tests for op regl/m32 regl | |
358 | xacquire adc ecx,eax | |
359 | xacquire lock adc ecx,eax | |
360 | lock xacquire adc ecx,eax | |
361 | xrelease adc ecx,eax | |
362 | xrelease lock adc ecx,eax | |
363 | lock xrelease adc ecx,eax | |
364 | xacquire adc DWORD PTR [ecx],eax | |
365 | xrelease adc DWORD PTR [ecx],eax | |
366 | xacquire adc eax,ecx | |
367 | xacquire lock adc eax,ecx | |
368 | lock xacquire adc eax,ecx | |
369 | xrelease adc eax,ecx | |
370 | xrelease lock adc eax,ecx | |
371 | lock xrelease adc eax,ecx | |
372 | xacquire adc eax,DWORD PTR [ecx] | |
373 | xacquire lock adc eax,DWORD PTR [ecx] | |
374 | lock xacquire adc eax,DWORD PTR [ecx] | |
375 | xrelease adc eax,DWORD PTR [ecx] | |
376 | xrelease lock adc eax,DWORD PTR [ecx] | |
377 | lock xrelease adc eax,DWORD PTR [ecx] | |
378 | ||
379 | # Tests for op regs, regs/m16 | |
380 | xacquire btc cx,ax | |
381 | xacquire lock btc cx,ax | |
382 | lock xacquire btc cx,ax | |
383 | xrelease btc cx,ax | |
384 | xrelease lock btc cx,ax | |
385 | lock xrelease btc cx,ax | |
386 | xacquire btc WORD PTR [ecx],ax | |
387 | xrelease btc WORD PTR [ecx],ax | |
388 | ||
389 | # Tests for op regl regl/m32 | |
390 | xacquire btc ecx,eax | |
391 | xacquire lock btc ecx,eax | |
392 | lock xacquire btc ecx,eax | |
393 | xrelease btc ecx,eax | |
394 | xrelease lock btc ecx,eax | |
395 | lock xrelease btc ecx,eax | |
396 | xacquire btc DWORD PTR [ecx],eax | |
397 | xrelease btc DWORD PTR [ecx],eax | |
398 | ||
399 | # Tests for op regb/m8 | |
400 | xacquire dec cl | |
401 | xacquire lock dec cl | |
402 | lock xacquire dec cl | |
403 | xrelease dec cl | |
404 | xrelease lock dec cl | |
405 | lock xrelease dec cl | |
406 | xacquire dec BYTE PTR [ecx] | |
407 | xrelease dec BYTE PTR [ecx] | |
408 | ||
409 | # Tests for op regs/m16 | |
410 | xacquire dec cx | |
411 | xacquire lock dec cx | |
412 | lock xacquire dec cx | |
413 | xrelease dec cx | |
414 | xrelease lock dec cx | |
415 | lock xrelease dec cx | |
416 | xacquire dec WORD PTR [ecx] | |
417 | xrelease dec WORD PTR [ecx] | |
418 | ||
419 | # Tests for op regl/m32 | |
420 | xacquire dec ecx | |
421 | xacquire lock dec ecx | |
422 | lock xacquire dec ecx | |
423 | xrelease dec ecx | |
424 | xrelease lock dec ecx | |
425 | lock xrelease dec ecx | |
426 | xacquire dec DWORD PTR [ecx] | |
427 | xrelease dec DWORD PTR [ecx] | |
428 | ||
429 | # Tests for op m64 | |
430 | xacquire cmpxchg8b QWORD PTR [ecx] | |
431 | xrelease cmpxchg8b QWORD PTR [ecx] | |
432 | ||
433 | # Tests for op regb, regb/m8 | |
434 | xacquire cmpxchg al,cl | |
435 | xacquire lock cmpxchg al,cl | |
436 | lock xacquire cmpxchg al,cl | |
437 | xrelease cmpxchg al,cl | |
438 | xrelease lock cmpxchg al,cl | |
439 | lock xrelease cmpxchg al,cl | |
440 | xacquire cmpxchg BYTE PTR [ecx],cl | |
441 | xrelease cmpxchg BYTE PTR [ecx],cl |