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
1718