1# Check 64bit 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
32# Tests for op imm32 rax
33	xacquire adc $10000000,%rax
34	xacquire lock adc $10000000,%rax
35	lock xacquire adc $10000000,%rax
36	xrelease adc $10000000,%rax
37	xrelease lock adc $10000000,%rax
38	lock xrelease adc $10000000,%rax
39
40# Tests for op imm8 regb/m8
41	xacquire adcb $100,%cl
42	xacquire lock adcb $100,%cl
43	lock xacquire adcb $100,%cl
44	xrelease adcb $100,%cl
45	xrelease lock adcb $100,%cl
46	lock xrelease adcb $100,%cl
47	xacquire adcb $100,(%rcx)
48	xrelease adcb $100,(%rcx)
49
50# Tests for op imm16 regs/m16
51	xacquire adcw $1000,%cx
52	xacquire lock adcw $1000,%cx
53	lock xacquire adcw $1000,%cx
54	xrelease adcw $1000,%cx
55	xrelease lock adcw $1000,%cx
56	lock xrelease adcw $1000,%cx
57	xacquire adcw $1000,(%rcx)
58	xrelease adcw $1000,(%rcx)
59
60# Tests for op imm32 regl/m32
61	xacquire adcl $10000000,%ecx
62	xacquire lock adcl $10000000,%ecx
63	lock xacquire adcl $10000000,%ecx
64	xrelease adcl $10000000,%ecx
65	xrelease lock adcl $10000000,%ecx
66	lock xrelease adcl $10000000,%ecx
67	xacquire adcl $10000000,(%rcx)
68	xrelease adcl $10000000,(%rcx)
69
70# Tests for op imm32 regq/m64
71	xacquire adcq $10000000,%rcx
72	xacquire lock adcq $10000000,%rcx
73	lock xacquire adcq $10000000,%rcx
74	xrelease adcq $10000000,%rcx
75	xrelease lock adcq $10000000,%rcx
76	lock xrelease adcq $10000000,%rcx
77	xacquire adcq $10000000,(%rcx)
78	xrelease adcq $10000000,(%rcx)
79
80# Tests for op imm8 regs/m16
81	xacquire adcw $100,%cx
82	xacquire lock adcw $100,%cx
83	lock xacquire adcw $100,%cx
84	xrelease adcw $100,%cx
85	xrelease lock adcw $100,%cx
86	lock xrelease adcw $100,%cx
87	xacquire adcw $100,(%rcx)
88	xrelease adcw $100,(%rcx)
89
90# Tests for op imm8 regl/m32
91	xacquire adcl $100,%ecx
92	xacquire lock adcl $100,%ecx
93	lock xacquire adcl $100,%ecx
94	xrelease adcl $100,%ecx
95	xrelease lock adcl $100,%ecx
96	lock xrelease adcl $100,%ecx
97	xacquire adcl $100,(%rcx)
98	xrelease adcl $100,(%rcx)
99
100# Tests for op imm8 regq/m64
101	xacquire adcq $100,%rcx
102	xacquire lock adcq $100,%rcx
103	lock xacquire adcq $100,%rcx
104	xrelease adcq $100,%rcx
105	xrelease lock adcq $100,%rcx
106	lock xrelease adcq $100,%rcx
107	xacquire adcq $100,(%rcx)
108	xrelease adcq $100,(%rcx)
109
110# Tests for op imm8 regb/m8
111	xacquire adcb $100,%cl
112	xacquire lock adcb $100,%cl
113	lock xacquire adcb $100,%cl
114	xrelease adcb $100,%cl
115	xrelease lock adcb $100,%cl
116	lock xrelease adcb $100,%cl
117	xacquire adcb $100,(%rcx)
118	xrelease adcb $100,(%rcx)
119
120# Tests for op regb regb/m8
121# Tests for op regb/m8 regb
122	xacquire adcb %al,%cl
123	xacquire lock adcb %al,%cl
124	lock xacquire adcb %al,%cl
125	xrelease adcb %al,%cl
126	xrelease lock adcb %al,%cl
127	lock xrelease adcb %al,%cl
128	xacquire adcb %al,(%rcx)
129	xrelease adcb %al,(%rcx)
130	xacquire adcb %cl,%al
131	xacquire lock adcb %cl,%al
132	lock xacquire adcb %cl,%al
133	xrelease adcb %cl,%al
134	xrelease lock adcb %cl,%al
135	lock xrelease adcb %cl,%al
136	xacquire adcb (%rcx),%al
137	xacquire lock adcb (%rcx),%al
138	lock xacquire adcb (%rcx),%al
139	xrelease adcb (%rcx),%al
140	xrelease lock adcb (%rcx),%al
141	lock xrelease adcb (%rcx),%al
142
143# Tests for op regs regs/m16
144# Tests for op regs/m16 regs
145	xacquire adcw %ax,%cx
146	xacquire lock adcw %ax,%cx
147	lock xacquire adcw %ax,%cx
148	xrelease adcw %ax,%cx
149	xrelease lock adcw %ax,%cx
150	lock xrelease adcw %ax,%cx
151	xacquire adcw %ax,(%rcx)
152	xrelease adcw %ax,(%rcx)
153	xacquire adcw %cx,%ax
154	xacquire lock adcw %cx,%ax
155	lock xacquire adcw %cx,%ax
156	xrelease adcw %cx,%ax
157	xrelease lock adcw %cx,%ax
158	lock xrelease adcw %cx,%ax
159	xacquire adcw (%rcx),%ax
160	xacquire lock adcw (%rcx),%ax
161	lock xacquire adcw (%rcx),%ax
162	xrelease adcw (%rcx),%ax
163	xrelease lock adcw (%rcx),%ax
164	lock xrelease adcw (%rcx),%ax
165
166# Tests for op regl regl/m32
167# Tests for op regl/m32 regl
168	xacquire adcl %eax,%ecx
169	xacquire lock adcl %eax,%ecx
170	lock xacquire adcl %eax,%ecx
171	xrelease adcl %eax,%ecx
172	xrelease lock adcl %eax,%ecx
173	lock xrelease adcl %eax,%ecx
174	xacquire adcl %eax,(%rcx)
175	xrelease adcl %eax,(%rcx)
176	xacquire adcl %ecx,%eax
177	xacquire lock adcl %ecx,%eax
178	lock xacquire adcl %ecx,%eax
179	xrelease adcl %ecx,%eax
180	xrelease lock adcl %ecx,%eax
181	lock xrelease adcl %ecx,%eax
182	xacquire adcl (%rcx),%eax
183	xacquire lock adcl (%rcx),%eax
184	lock xacquire adcl (%rcx),%eax
185	xrelease adcl (%rcx),%eax
186	xrelease lock adcl (%rcx),%eax
187	lock xrelease adcl (%rcx),%eax
188
189# Tests for op regq regq/m64
190# Tests for op regq/m64 regq
191	xacquire adcq %rax,%rcx
192	xacquire lock adcq %rax,%rcx
193	lock xacquire adcq %rax,%rcx
194	xrelease adcq %rax,%rcx
195	xrelease lock adcq %rax,%rcx
196	lock xrelease adcq %rax,%rcx
197	xacquire adcq %rax,(%rcx)
198	xrelease adcq %rax,(%rcx)
199	xacquire adcq %rcx,%rax
200	xacquire lock adcq %rcx,%rax
201	lock xacquire adcq %rcx,%rax
202	xrelease adcq %rcx,%rax
203	xrelease lock adcq %rcx,%rax
204	lock xrelease adcq %rcx,%rax
205	xacquire adcq (%rcx),%rax
206	xacquire lock adcq (%rcx),%rax
207	lock xacquire adcq (%rcx),%rax
208	xrelease adcq (%rcx),%rax
209	xrelease lock adcq (%rcx),%rax
210	lock xrelease adcq (%rcx),%rax
211
212# Tests for op regs, regs/m16
213	xacquire btcw %ax,%cx
214	xacquire lock btcw %ax,%cx
215	lock xacquire btcw %ax,%cx
216	xrelease btcw %ax,%cx
217	xrelease lock btcw %ax,%cx
218	lock xrelease btcw %ax,%cx
219	xacquire btcw %ax,(%rcx)
220	xrelease btcw %ax,(%rcx)
221
222# Tests for op regl regl/m32
223	xacquire btcl %eax,%ecx
224	xacquire lock btcl %eax,%ecx
225	lock xacquire btcl %eax,%ecx
226	xrelease btcl %eax,%ecx
227	xrelease lock btcl %eax,%ecx
228	lock xrelease btcl %eax,%ecx
229	xacquire btcl %eax,(%rcx)
230	xrelease btcl %eax,(%rcx)
231
232# Tests for op regq regq/m64
233	xacquire btcq %rax,%rcx
234	xacquire lock btcq %rax,%rcx
235	lock xacquire btcq %rax,%rcx
236	xrelease btcq %rax,%rcx
237	xrelease lock btcq %rax,%rcx
238	lock xrelease btcq %rax,%rcx
239	xacquire btcq %rax,(%rcx)
240	xrelease btcq %rax,(%rcx)
241
242# Tests for op regb/m8
243	xacquire decb %cl
244	xacquire lock decb %cl
245	lock xacquire decb %cl
246	xrelease decb %cl
247	xrelease lock decb %cl
248	lock xrelease decb %cl
249	xacquire decb (%rcx)
250	xrelease decb (%rcx)
251
252# Tests for op regs/m16
253	xacquire decw %cx
254	xacquire lock decw %cx
255	lock xacquire decw %cx
256	xrelease decw %cx
257	xrelease lock decw %cx
258	lock xrelease decw %cx
259	xacquire decw (%rcx)
260	xrelease decw (%rcx)
261
262# Tests for op regl/m32
263	xacquire decl %ecx
264	xacquire lock decl %ecx
265	lock xacquire decl %ecx
266	xrelease decl %ecx
267	xrelease lock decl %ecx
268	lock xrelease decl %ecx
269	xacquire decl (%rcx)
270	xrelease decl (%rcx)
271
272# Tests for op regq/m64
273	xacquire decq %rcx
274	xacquire lock decq %rcx
275	lock xacquire decq %rcx
276	xrelease decq %rcx
277	xrelease lock decq %rcx
278	lock xrelease decq %rcx
279	xacquire decq (%rcx)
280	xrelease decq (%rcx)
281
282# Tests for op m64
283	xacquire cmpxchg8bq (%rcx)
284	xrelease cmpxchg8bq (%rcx)
285
286# Tests for op regb, regb/m8
287	xacquire cmpxchgb %cl,%al
288	xacquire lock cmpxchgb %cl,%al
289	lock xacquire cmpxchgb %cl,%al
290	xrelease cmpxchgb %cl,%al
291	xrelease lock cmpxchgb %cl,%al
292	lock xrelease cmpxchgb %cl,%al
293	xacquire cmpxchgb %cl,(%rcx)
294	xrelease cmpxchgb %cl,(%rcx)
295
296	.intel_syntax noprefix
297
298# Tests for op imm8 al
299	xacquire adc al,100
300	xacquire lock adc al,100
301	lock xacquire adc al,100
302	xrelease adc al,100
303	xrelease lock adc al,100
304	lock xrelease adc al,100
305
306# Tests for op imm16 ax
307	xacquire adc ax,1000
308	xacquire lock adc ax,1000
309	lock xacquire adc ax,1000
310	xrelease adc ax,1000
311	xrelease lock adc ax,1000
312	lock xrelease adc ax,1000
313
314# Tests for op imm32 eax
315	xacquire adc eax,10000000
316	xacquire lock adc eax,10000000
317	lock xacquire adc eax,10000000
318	xrelease adc eax,10000000
319	xrelease lock adc eax,10000000
320	lock xrelease adc eax,10000000
321
322
323# Tests for op imm32 rax
324	xacquire adc rax,10000000
325	xacquire lock adc rax,10000000
326	lock xacquire adc rax,10000000
327	xrelease adc rax,10000000
328	xrelease lock adc rax,10000000
329	lock xrelease adc rax,10000000
330
331# Tests for op imm8 regb/m8
332	xacquire adc cl,100
333	xacquire lock adc cl,100
334	lock xacquire adc cl,100
335	xrelease adc cl,100
336	xrelease lock adc cl,100
337	lock xrelease adc cl,100
338	xacquire adc BYTE PTR [rcx],100
339	xrelease adc BYTE PTR [rcx],100
340
341# Tests for op imm16 regs/m16
342	xacquire adc cx,1000
343	xacquire lock adc cx,1000
344	lock xacquire adc cx,1000
345	xrelease adc cx,1000
346	xrelease lock adc cx,1000
347	lock xrelease adc cx,1000
348	xacquire adc WORD PTR [rcx],1000
349	xrelease adc WORD PTR [rcx],1000
350
351# Tests for op imm32 regl/m32
352	xacquire adc ecx,10000000
353	xacquire lock adc ecx,10000000
354	lock xacquire adc ecx,10000000
355	xrelease adc ecx,10000000
356	xrelease lock adc ecx,10000000
357	lock xrelease adc ecx,10000000
358	xacquire adc DWORD PTR [rcx],10000000
359	xrelease adc DWORD PTR [rcx],10000000
360
361# Tests for op imm32 regq/m64
362	xacquire adc rcx,10000000
363	xacquire lock adc rcx,10000000
364	lock xacquire adc rcx,10000000
365	xrelease adc rcx,10000000
366	xrelease lock adc rcx,10000000
367	lock xrelease adc rcx,10000000
368	xacquire adc QWORD PTR [rcx],10000000
369	xrelease adc QWORD PTR [rcx],10000000
370
371# Tests for op imm8 regs/m16
372	xacquire adc cx,100
373	xacquire lock adc cx,100
374	lock xacquire adc cx,100
375	xrelease adc cx,100
376	xrelease lock adc cx,100
377	lock xrelease adc cx,100
378	xacquire adc WORD PTR [rcx],100
379	xrelease adc WORD PTR [rcx],100
380
381# Tests for op imm8 regl/m32
382	xacquire adc ecx,100
383	xacquire lock adc ecx,100
384	lock xacquire adc ecx,100
385	xrelease adc ecx,100
386	xrelease lock adc ecx,100
387	lock xrelease adc ecx,100
388	xacquire adc DWORD PTR [rcx],100
389	xrelease adc DWORD PTR [rcx],100
390
391# Tests for op imm8 regq/m64
392	xacquire adc rcx,100
393	xacquire lock adc rcx,100
394	lock xacquire adc rcx,100
395	xrelease adc rcx,100
396	xrelease lock adc rcx,100
397	lock xrelease adc rcx,100
398	xacquire adc QWORD PTR [rcx],100
399	xrelease adc QWORD PTR [rcx],100
400
401# Tests for op imm8 regb/m8
402	xacquire adc cl,100
403	xacquire lock adc cl,100
404	lock xacquire adc cl,100
405	xrelease adc cl,100
406	xrelease lock adc cl,100
407	lock xrelease adc cl,100
408	xacquire adc BYTE PTR [rcx],100
409	xrelease adc BYTE PTR [rcx],100
410
411# Tests for op regb regb/m8
412# Tests for op regb/m8 regb
413	xacquire adc cl,al
414	xacquire lock adc cl,al
415	lock xacquire adc cl,al
416	xrelease adc cl,al
417	xrelease lock adc cl,al
418	lock xrelease adc cl,al
419	xacquire adc BYTE PTR [rcx],al
420	xrelease adc BYTE PTR [rcx],al
421	xacquire adc al,cl
422	xacquire lock adc al,cl
423	lock xacquire adc al,cl
424	xrelease adc al,cl
425	xrelease lock adc al,cl
426	lock xrelease adc al,cl
427	xacquire adc al,BYTE PTR [rcx]
428	xacquire lock adc al,BYTE PTR [rcx]
429	lock xacquire adc al,BYTE PTR [rcx]
430	xrelease adc al,BYTE PTR [rcx]
431	xrelease lock adc al,BYTE PTR [rcx]
432	lock xrelease adc al,BYTE PTR [rcx]
433
434# Tests for op regs regs/m16
435# Tests for op regs/m16 regs
436	xacquire adc cx,ax
437	xacquire lock adc cx,ax
438	lock xacquire adc cx,ax
439	xrelease adc cx,ax
440	xrelease lock adc cx,ax
441	lock xrelease adc cx,ax
442	xacquire adc WORD PTR [rcx],ax
443	xrelease adc WORD PTR [rcx],ax
444	xacquire adc ax,cx
445	xacquire lock adc ax,cx
446	lock xacquire adc ax,cx
447	xrelease adc ax,cx
448	xrelease lock adc ax,cx
449	lock xrelease adc ax,cx
450	xacquire adc ax,WORD PTR [rcx]
451	xacquire lock adc ax,WORD PTR [rcx]
452	lock xacquire adc ax,WORD PTR [rcx]
453	xrelease adc ax,WORD PTR [rcx]
454	xrelease lock adc ax,WORD PTR [rcx]
455	lock xrelease adc ax,WORD PTR [rcx]
456
457# Tests for op regl regl/m32
458# Tests for op regl/m32 regl
459	xacquire adc ecx,eax
460	xacquire lock adc ecx,eax
461	lock xacquire adc ecx,eax
462	xrelease adc ecx,eax
463	xrelease lock adc ecx,eax
464	lock xrelease adc ecx,eax
465	xacquire adc DWORD PTR [rcx],eax
466	xrelease adc DWORD PTR [rcx],eax
467	xacquire adc eax,ecx
468	xacquire lock adc eax,ecx
469	lock xacquire adc eax,ecx
470	xrelease adc eax,ecx
471	xrelease lock adc eax,ecx
472	lock xrelease adc eax,ecx
473	xacquire adc eax,DWORD PTR [rcx]
474	xacquire lock adc eax,DWORD PTR [rcx]
475	lock xacquire adc eax,DWORD PTR [rcx]
476	xrelease adc eax,DWORD PTR [rcx]
477	xrelease lock adc eax,DWORD PTR [rcx]
478	lock xrelease adc eax,DWORD PTR [rcx]
479
480# Tests for op regq regq/m64
481# Tests for op regq/m64 regq
482	xacquire adc rcx,rax
483	xacquire lock adc rcx,rax
484	lock xacquire adc rcx,rax
485	xrelease adc rcx,rax
486	xrelease lock adc rcx,rax
487	lock xrelease adc rcx,rax
488	xacquire adc QWORD PTR [rcx],rax
489	xrelease adc QWORD PTR [rcx],rax
490	xacquire adc rax,rcx
491	xacquire lock adc rax,rcx
492	lock xacquire adc rax,rcx
493	xrelease adc rax,rcx
494	xrelease lock adc rax,rcx
495	lock xrelease adc rax,rcx
496	xacquire adc rax,QWORD PTR [rcx]
497	xacquire lock adc rax,QWORD PTR [rcx]
498	lock xacquire adc rax,QWORD PTR [rcx]
499	xrelease adc rax,QWORD PTR [rcx]
500	xrelease lock adc rax,QWORD PTR [rcx]
501	lock xrelease adc rax,QWORD PTR [rcx]
502
503# Tests for op regs, regs/m16
504	xacquire btc cx,ax
505	xacquire lock btc cx,ax
506	lock xacquire btc cx,ax
507	xrelease btc cx,ax
508	xrelease lock btc cx,ax
509	lock xrelease btc cx,ax
510	xacquire btc WORD PTR [rcx],ax
511	xrelease btc WORD PTR [rcx],ax
512
513# Tests for op regl regl/m32
514	xacquire btc ecx,eax
515	xacquire lock btc ecx,eax
516	lock xacquire btc ecx,eax
517	xrelease btc ecx,eax
518	xrelease lock btc ecx,eax
519	lock xrelease btc ecx,eax
520	xacquire btc DWORD PTR [rcx],eax
521	xrelease btc DWORD PTR [rcx],eax
522
523# Tests for op regq regq/m64
524	xacquire btc rcx,rax
525	xacquire lock btc rcx,rax
526	lock xacquire btc rcx,rax
527	xrelease btc rcx,rax
528	xrelease lock btc rcx,rax
529	lock xrelease btc rcx,rax
530	xacquire btc QWORD PTR [rcx],rax
531	xrelease btc QWORD PTR [rcx],rax
532
533# Tests for op regb/m8
534	xacquire dec cl
535	xacquire lock dec cl
536	lock xacquire dec cl
537	xrelease dec cl
538	xrelease lock dec cl
539	lock xrelease dec cl
540	xacquire dec BYTE PTR [rcx]
541	xrelease dec BYTE PTR [rcx]
542
543# Tests for op regs/m16
544	xacquire dec cx
545	xacquire lock dec cx
546	lock xacquire dec cx
547	xrelease dec cx
548	xrelease lock dec cx
549	lock xrelease dec cx
550	xacquire dec WORD PTR [rcx]
551	xrelease dec WORD PTR [rcx]
552
553# Tests for op regl/m32
554	xacquire dec ecx
555	xacquire lock dec ecx
556	lock xacquire dec ecx
557	xrelease dec ecx
558	xrelease lock dec ecx
559	lock xrelease dec ecx
560	xacquire dec DWORD PTR [rcx]
561	xrelease dec DWORD PTR [rcx]
562
563# Tests for op regq/m64
564	xacquire dec rcx
565	xacquire lock dec rcx
566	lock xacquire dec rcx
567	xrelease dec rcx
568	xrelease lock dec rcx
569	lock xrelease dec rcx
570	xacquire dec QWORD PTR [rcx]
571	xrelease dec QWORD PTR [rcx]
572
573# Tests for op m64
574	xacquire cmpxchg8b QWORD PTR [rcx]
575	xrelease cmpxchg8b QWORD PTR [rcx]
576
577# Tests for op regb, regb/m8
578	xacquire cmpxchg al,cl
579	xacquire lock cmpxchg al,cl
580	lock xacquire cmpxchg al,cl
581	xrelease cmpxchg al,cl
582	xrelease lock cmpxchg al,cl
583	lock xrelease cmpxchg al,cl
584	xacquire cmpxchg BYTE PTR [rcx],cl
585	xrelease cmpxchg BYTE PTR [rcx],cl
586