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
442