1# Check 32bit HLE instructions
2
3	.allow_index_reg
4	.text
5_start:
6
7# Tests for op imm8 regb/m8
8	xacquire lock adcb $100,(%ecx)
9	lock xacquire adcb $100,(%ecx)
10	xrelease lock adcb $100,(%ecx)
11	lock xrelease adcb $100,(%ecx)
12	.byte 0xf0; .byte 0xf2; adcb $100,(%ecx)
13	.byte 0xf0; .byte 0xf3; adcb $100,(%ecx)
14	xacquire lock addb $100,(%ecx)
15	lock xacquire addb $100,(%ecx)
16	xrelease lock addb $100,(%ecx)
17	lock xrelease addb $100,(%ecx)
18	.byte 0xf0; .byte 0xf2; addb $100,(%ecx)
19	.byte 0xf0; .byte 0xf3; addb $100,(%ecx)
20	xacquire lock andb $100,(%ecx)
21	lock xacquire andb $100,(%ecx)
22	xrelease lock andb $100,(%ecx)
23	lock xrelease andb $100,(%ecx)
24	.byte 0xf0; .byte 0xf2; andb $100,(%ecx)
25	.byte 0xf0; .byte 0xf3; andb $100,(%ecx)
26	xrelease movb $100,(%ecx)
27	xacquire lock orb $100,(%ecx)
28	lock xacquire orb $100,(%ecx)
29	xrelease lock orb $100,(%ecx)
30	lock xrelease orb $100,(%ecx)
31	.byte 0xf0; .byte 0xf2; orb $100,(%ecx)
32	.byte 0xf0; .byte 0xf3; orb $100,(%ecx)
33	xacquire lock sbbb $100,(%ecx)
34	lock xacquire sbbb $100,(%ecx)
35	xrelease lock sbbb $100,(%ecx)
36	lock xrelease sbbb $100,(%ecx)
37	.byte 0xf0; .byte 0xf2; sbbb $100,(%ecx)
38	.byte 0xf0; .byte 0xf3; sbbb $100,(%ecx)
39	xacquire lock subb $100,(%ecx)
40	lock xacquire subb $100,(%ecx)
41	xrelease lock subb $100,(%ecx)
42	lock xrelease subb $100,(%ecx)
43	.byte 0xf0; .byte 0xf2; subb $100,(%ecx)
44	.byte 0xf0; .byte 0xf3; subb $100,(%ecx)
45	xacquire lock xorb $100,(%ecx)
46	lock xacquire xorb $100,(%ecx)
47	xrelease lock xorb $100,(%ecx)
48	lock xrelease xorb $100,(%ecx)
49	.byte 0xf0; .byte 0xf2; xorb $100,(%ecx)
50	.byte 0xf0; .byte 0xf3; xorb $100,(%ecx)
51
52# Tests for op imm16 regs/m16
53	xacquire lock adcw $1000,(%ecx)
54	lock xacquire adcw $1000,(%ecx)
55	xrelease lock adcw $1000,(%ecx)
56	lock xrelease adcw $1000,(%ecx)
57	.byte 0xf0; .byte 0xf2; adcw $1000,(%ecx)
58	.byte 0xf0; .byte 0xf3; adcw $1000,(%ecx)
59	xacquire lock addw $1000,(%ecx)
60	lock xacquire addw $1000,(%ecx)
61	xrelease lock addw $1000,(%ecx)
62	lock xrelease addw $1000,(%ecx)
63	.byte 0xf0; .byte 0xf2; addw $1000,(%ecx)
64	.byte 0xf0; .byte 0xf3; addw $1000,(%ecx)
65	xacquire lock andw $1000,(%ecx)
66	lock xacquire andw $1000,(%ecx)
67	xrelease lock andw $1000,(%ecx)
68	lock xrelease andw $1000,(%ecx)
69	.byte 0xf0; .byte 0xf2; andw $1000,(%ecx)
70	.byte 0xf0; .byte 0xf3; andw $1000,(%ecx)
71	xrelease movw $1000,(%ecx)
72	xacquire lock orw $1000,(%ecx)
73	lock xacquire orw $1000,(%ecx)
74	xrelease lock orw $1000,(%ecx)
75	lock xrelease orw $1000,(%ecx)
76	.byte 0xf0; .byte 0xf2; orw $1000,(%ecx)
77	.byte 0xf0; .byte 0xf3; orw $1000,(%ecx)
78	xacquire lock sbbw $1000,(%ecx)
79	lock xacquire sbbw $1000,(%ecx)
80	xrelease lock sbbw $1000,(%ecx)
81	lock xrelease sbbw $1000,(%ecx)
82	.byte 0xf0; .byte 0xf2; sbbw $1000,(%ecx)
83	.byte 0xf0; .byte 0xf3; sbbw $1000,(%ecx)
84	xacquire lock subw $1000,(%ecx)
85	lock xacquire subw $1000,(%ecx)
86	xrelease lock subw $1000,(%ecx)
87	lock xrelease subw $1000,(%ecx)
88	.byte 0xf0; .byte 0xf2; subw $1000,(%ecx)
89	.byte 0xf0; .byte 0xf3; subw $1000,(%ecx)
90	xacquire lock xorw $1000,(%ecx)
91	lock xacquire xorw $1000,(%ecx)
92	xrelease lock xorw $1000,(%ecx)
93	lock xrelease xorw $1000,(%ecx)
94	.byte 0xf0; .byte 0xf2; xorw $1000,(%ecx)
95	.byte 0xf0; .byte 0xf3; xorw $1000,(%ecx)
96
97# Tests for op imm32 regl/m32
98	xacquire lock adcl $10000000,(%ecx)
99	lock xacquire adcl $10000000,(%ecx)
100	xrelease lock adcl $10000000,(%ecx)
101	lock xrelease adcl $10000000,(%ecx)
102	.byte 0xf0; .byte 0xf2; adcl $10000000,(%ecx)
103	.byte 0xf0; .byte 0xf3; adcl $10000000,(%ecx)
104	xacquire lock addl $10000000,(%ecx)
105	lock xacquire addl $10000000,(%ecx)
106	xrelease lock addl $10000000,(%ecx)
107	lock xrelease addl $10000000,(%ecx)
108	.byte 0xf0; .byte 0xf2; addl $10000000,(%ecx)
109	.byte 0xf0; .byte 0xf3; addl $10000000,(%ecx)
110	xacquire lock andl $10000000,(%ecx)
111	lock xacquire andl $10000000,(%ecx)
112	xrelease lock andl $10000000,(%ecx)
113	lock xrelease andl $10000000,(%ecx)
114	.byte 0xf0; .byte 0xf2; andl $10000000,(%ecx)
115	.byte 0xf0; .byte 0xf3; andl $10000000,(%ecx)
116	xrelease movl $10000000,(%ecx)
117	xacquire lock orl $10000000,(%ecx)
118	lock xacquire orl $10000000,(%ecx)
119	xrelease lock orl $10000000,(%ecx)
120	lock xrelease orl $10000000,(%ecx)
121	.byte 0xf0; .byte 0xf2; orl $10000000,(%ecx)
122	.byte 0xf0; .byte 0xf3; orl $10000000,(%ecx)
123	xacquire lock sbbl $10000000,(%ecx)
124	lock xacquire sbbl $10000000,(%ecx)
125	xrelease lock sbbl $10000000,(%ecx)
126	lock xrelease sbbl $10000000,(%ecx)
127	.byte 0xf0; .byte 0xf2; sbbl $10000000,(%ecx)
128	.byte 0xf0; .byte 0xf3; sbbl $10000000,(%ecx)
129	xacquire lock subl $10000000,(%ecx)
130	lock xacquire subl $10000000,(%ecx)
131	xrelease lock subl $10000000,(%ecx)
132	lock xrelease subl $10000000,(%ecx)
133	.byte 0xf0; .byte 0xf2; subl $10000000,(%ecx)
134	.byte 0xf0; .byte 0xf3; subl $10000000,(%ecx)
135	xacquire lock xorl $10000000,(%ecx)
136	lock xacquire xorl $10000000,(%ecx)
137	xrelease lock xorl $10000000,(%ecx)
138	lock xrelease xorl $10000000,(%ecx)
139	.byte 0xf0; .byte 0xf2; xorl $10000000,(%ecx)
140	.byte 0xf0; .byte 0xf3; xorl $10000000,(%ecx)
141
142# Tests for op imm8 regs/m16
143	xacquire lock adcw $100,(%ecx)
144	lock xacquire adcw $100,(%ecx)
145	xrelease lock adcw $100,(%ecx)
146	lock xrelease adcw $100,(%ecx)
147	.byte 0xf0; .byte 0xf2; adcw $100,(%ecx)
148	.byte 0xf0; .byte 0xf3; adcw $100,(%ecx)
149	xacquire lock addw $100,(%ecx)
150	lock xacquire addw $100,(%ecx)
151	xrelease lock addw $100,(%ecx)
152	lock xrelease addw $100,(%ecx)
153	.byte 0xf0; .byte 0xf2; addw $100,(%ecx)
154	.byte 0xf0; .byte 0xf3; addw $100,(%ecx)
155	xacquire lock andw $100,(%ecx)
156	lock xacquire andw $100,(%ecx)
157	xrelease lock andw $100,(%ecx)
158	lock xrelease andw $100,(%ecx)
159	.byte 0xf0; .byte 0xf2; andw $100,(%ecx)
160	.byte 0xf0; .byte 0xf3; andw $100,(%ecx)
161	xacquire lock btcw $100,(%ecx)
162	lock xacquire btcw $100,(%ecx)
163	xrelease lock btcw $100,(%ecx)
164	lock xrelease btcw $100,(%ecx)
165	.byte 0xf0; .byte 0xf2; btcw $100,(%ecx)
166	.byte 0xf0; .byte 0xf3; btcw $100,(%ecx)
167	xacquire lock btrw $100,(%ecx)
168	lock xacquire btrw $100,(%ecx)
169	xrelease lock btrw $100,(%ecx)
170	lock xrelease btrw $100,(%ecx)
171	.byte 0xf0; .byte 0xf2; btrw $100,(%ecx)
172	.byte 0xf0; .byte 0xf3; btrw $100,(%ecx)
173	xacquire lock btsw $100,(%ecx)
174	lock xacquire btsw $100,(%ecx)
175	xrelease lock btsw $100,(%ecx)
176	lock xrelease btsw $100,(%ecx)
177	.byte 0xf0; .byte 0xf2; btsw $100,(%ecx)
178	.byte 0xf0; .byte 0xf3; btsw $100,(%ecx)
179	xrelease movw $100,(%ecx)
180	xacquire lock orw $100,(%ecx)
181	lock xacquire orw $100,(%ecx)
182	xrelease lock orw $100,(%ecx)
183	lock xrelease orw $100,(%ecx)
184	.byte 0xf0; .byte 0xf2; orw $100,(%ecx)
185	.byte 0xf0; .byte 0xf3; orw $100,(%ecx)
186	xacquire lock sbbw $100,(%ecx)
187	lock xacquire sbbw $100,(%ecx)
188	xrelease lock sbbw $100,(%ecx)
189	lock xrelease sbbw $100,(%ecx)
190	.byte 0xf0; .byte 0xf2; sbbw $100,(%ecx)
191	.byte 0xf0; .byte 0xf3; sbbw $100,(%ecx)
192	xacquire lock subw $100,(%ecx)
193	lock xacquire subw $100,(%ecx)
194	xrelease lock subw $100,(%ecx)
195	lock xrelease subw $100,(%ecx)
196	.byte 0xf0; .byte 0xf2; subw $100,(%ecx)
197	.byte 0xf0; .byte 0xf3; subw $100,(%ecx)
198	xacquire lock xorw $100,(%ecx)
199	lock xacquire xorw $100,(%ecx)
200	xrelease lock xorw $100,(%ecx)
201	lock xrelease xorw $100,(%ecx)
202	.byte 0xf0; .byte 0xf2; xorw $100,(%ecx)
203	.byte 0xf0; .byte 0xf3; xorw $100,(%ecx)
204
205# Tests for op imm8 regl/m32
206	xacquire lock adcl $100,(%ecx)
207	lock xacquire adcl $100,(%ecx)
208	xrelease lock adcl $100,(%ecx)
209	lock xrelease adcl $100,(%ecx)
210	.byte 0xf0; .byte 0xf2; adcl $100,(%ecx)
211	.byte 0xf0; .byte 0xf3; adcl $100,(%ecx)
212	xacquire lock addl $100,(%ecx)
213	lock xacquire addl $100,(%ecx)
214	xrelease lock addl $100,(%ecx)
215	lock xrelease addl $100,(%ecx)
216	.byte 0xf0; .byte 0xf2; addl $100,(%ecx)
217	.byte 0xf0; .byte 0xf3; addl $100,(%ecx)
218	xacquire lock andl $100,(%ecx)
219	lock xacquire andl $100,(%ecx)
220	xrelease lock andl $100,(%ecx)
221	lock xrelease andl $100,(%ecx)
222	.byte 0xf0; .byte 0xf2; andl $100,(%ecx)
223	.byte 0xf0; .byte 0xf3; andl $100,(%ecx)
224	xacquire lock btcl $100,(%ecx)
225	lock xacquire btcl $100,(%ecx)
226	xrelease lock btcl $100,(%ecx)
227	lock xrelease btcl $100,(%ecx)
228	.byte 0xf0; .byte 0xf2; btcl $100,(%ecx)
229	.byte 0xf0; .byte 0xf3; btcl $100,(%ecx)
230	xacquire lock btrl $100,(%ecx)
231	lock xacquire btrl $100,(%ecx)
232	xrelease lock btrl $100,(%ecx)
233	lock xrelease btrl $100,(%ecx)
234	.byte 0xf0; .byte 0xf2; btrl $100,(%ecx)
235	.byte 0xf0; .byte 0xf3; btrl $100,(%ecx)
236	xacquire lock btsl $100,(%ecx)
237	lock xacquire btsl $100,(%ecx)
238	xrelease lock btsl $100,(%ecx)
239	lock xrelease btsl $100,(%ecx)
240	.byte 0xf0; .byte 0xf2; btsl $100,(%ecx)
241	.byte 0xf0; .byte 0xf3; btsl $100,(%ecx)
242	xrelease movl $100,(%ecx)
243	xacquire lock orl $100,(%ecx)
244	lock xacquire orl $100,(%ecx)
245	xrelease lock orl $100,(%ecx)
246	lock xrelease orl $100,(%ecx)
247	.byte 0xf0; .byte 0xf2; orl $100,(%ecx)
248	.byte 0xf0; .byte 0xf3; orl $100,(%ecx)
249	xacquire lock sbbl $100,(%ecx)
250	lock xacquire sbbl $100,(%ecx)
251	xrelease lock sbbl $100,(%ecx)
252	lock xrelease sbbl $100,(%ecx)
253	.byte 0xf0; .byte 0xf2; sbbl $100,(%ecx)
254	.byte 0xf0; .byte 0xf3; sbbl $100,(%ecx)
255	xacquire lock subl $100,(%ecx)
256	lock xacquire subl $100,(%ecx)
257	xrelease lock subl $100,(%ecx)
258	lock xrelease subl $100,(%ecx)
259	.byte 0xf0; .byte 0xf2; subl $100,(%ecx)
260	.byte 0xf0; .byte 0xf3; subl $100,(%ecx)
261	xacquire lock xorl $100,(%ecx)
262	lock xacquire xorl $100,(%ecx)
263	xrelease lock xorl $100,(%ecx)
264	lock xrelease xorl $100,(%ecx)
265	.byte 0xf0; .byte 0xf2; xorl $100,(%ecx)
266	.byte 0xf0; .byte 0xf3; xorl $100,(%ecx)
267
268# Tests for op imm8 regb/m8
269	xacquire lock adcb $100,(%ecx)
270	lock xacquire adcb $100,(%ecx)
271	xrelease lock adcb $100,(%ecx)
272	lock xrelease adcb $100,(%ecx)
273	.byte 0xf0; .byte 0xf2; adcb $100,(%ecx)
274	.byte 0xf0; .byte 0xf3; adcb $100,(%ecx)
275	xacquire lock addb $100,(%ecx)
276	lock xacquire addb $100,(%ecx)
277	xrelease lock addb $100,(%ecx)
278	lock xrelease addb $100,(%ecx)
279	.byte 0xf0; .byte 0xf2; addb $100,(%ecx)
280	.byte 0xf0; .byte 0xf3; addb $100,(%ecx)
281	xacquire lock andb $100,(%ecx)
282	lock xacquire andb $100,(%ecx)
283	xrelease lock andb $100,(%ecx)
284	lock xrelease andb $100,(%ecx)
285	.byte 0xf0; .byte 0xf2; andb $100,(%ecx)
286	.byte 0xf0; .byte 0xf3; andb $100,(%ecx)
287	xrelease movb $100,(%ecx)
288	xacquire lock orb $100,(%ecx)
289	lock xacquire orb $100,(%ecx)
290	xrelease lock orb $100,(%ecx)
291	lock xrelease orb $100,(%ecx)
292	.byte 0xf0; .byte 0xf2; orb $100,(%ecx)
293	.byte 0xf0; .byte 0xf3; orb $100,(%ecx)
294	xacquire lock sbbb $100,(%ecx)
295	lock xacquire sbbb $100,(%ecx)
296	xrelease lock sbbb $100,(%ecx)
297	lock xrelease sbbb $100,(%ecx)
298	.byte 0xf0; .byte 0xf2; sbbb $100,(%ecx)
299	.byte 0xf0; .byte 0xf3; sbbb $100,(%ecx)
300	xacquire lock subb $100,(%ecx)
301	lock xacquire subb $100,(%ecx)
302	xrelease lock subb $100,(%ecx)
303	lock xrelease subb $100,(%ecx)
304	.byte 0xf0; .byte 0xf2; subb $100,(%ecx)
305	.byte 0xf0; .byte 0xf3; subb $100,(%ecx)
306	xacquire lock xorb $100,(%ecx)
307	lock xacquire xorb $100,(%ecx)
308	xrelease lock xorb $100,(%ecx)
309	lock xrelease xorb $100,(%ecx)
310	.byte 0xf0; .byte 0xf2; xorb $100,(%ecx)
311	.byte 0xf0; .byte 0xf3; xorb $100,(%ecx)
312
313# Tests for op regb regb/m8
314# Tests for op regb/m8 regb
315	xacquire lock adcb %al,(%ecx)
316	lock xacquire adcb %al,(%ecx)
317	xrelease lock adcb %al,(%ecx)
318	lock xrelease adcb %al,(%ecx)
319	.byte 0xf0; .byte 0xf2; adcb %al,(%ecx)
320	.byte 0xf0; .byte 0xf3; adcb %al,(%ecx)
321	xacquire lock addb %al,(%ecx)
322	lock xacquire addb %al,(%ecx)
323	xrelease lock addb %al,(%ecx)
324	lock xrelease addb %al,(%ecx)
325	.byte 0xf0; .byte 0xf2; addb %al,(%ecx)
326	.byte 0xf0; .byte 0xf3; addb %al,(%ecx)
327	xacquire lock andb %al,(%ecx)
328	lock xacquire andb %al,(%ecx)
329	xrelease lock andb %al,(%ecx)
330	lock xrelease andb %al,(%ecx)
331	.byte 0xf0; .byte 0xf2; andb %al,(%ecx)
332	.byte 0xf0; .byte 0xf3; andb %al,(%ecx)
333	xrelease movb %al,(%ecx)
334	xacquire lock orb %al,(%ecx)
335	lock xacquire orb %al,(%ecx)
336	xrelease lock orb %al,(%ecx)
337	lock xrelease orb %al,(%ecx)
338	.byte 0xf0; .byte 0xf2; orb %al,(%ecx)
339	.byte 0xf0; .byte 0xf3; orb %al,(%ecx)
340	xacquire lock sbbb %al,(%ecx)
341	lock xacquire sbbb %al,(%ecx)
342	xrelease lock sbbb %al,(%ecx)
343	lock xrelease sbbb %al,(%ecx)
344	.byte 0xf0; .byte 0xf2; sbbb %al,(%ecx)
345	.byte 0xf0; .byte 0xf3; sbbb %al,(%ecx)
346	xacquire lock subb %al,(%ecx)
347	lock xacquire subb %al,(%ecx)
348	xrelease lock subb %al,(%ecx)
349	lock xrelease subb %al,(%ecx)
350	.byte 0xf0; .byte 0xf2; subb %al,(%ecx)
351	.byte 0xf0; .byte 0xf3; subb %al,(%ecx)
352	xacquire lock xchgb %al,(%ecx)
353	lock xacquire xchgb %al,(%ecx)
354	xacquire xchgb %al,(%ecx)
355	xrelease lock xchgb %al,(%ecx)
356	lock xrelease xchgb %al,(%ecx)
357	xrelease xchgb %al,(%ecx)
358	.byte 0xf0; .byte 0xf2; xchgb %al,(%ecx)
359	.byte 0xf0; .byte 0xf3; xchgb %al,(%ecx)
360	xacquire lock xorb %al,(%ecx)
361	lock xacquire xorb %al,(%ecx)
362	xrelease lock xorb %al,(%ecx)
363	lock xrelease xorb %al,(%ecx)
364	.byte 0xf0; .byte 0xf2; xorb %al,(%ecx)
365	.byte 0xf0; .byte 0xf3; xorb %al,(%ecx)
366
367# Tests for op regs regs/m16
368# Tests for op regs/m16 regs
369	xacquire lock adcw %ax,(%ecx)
370	lock xacquire adcw %ax,(%ecx)
371	xrelease lock adcw %ax,(%ecx)
372	lock xrelease adcw %ax,(%ecx)
373	.byte 0xf0; .byte 0xf2; adcw %ax,(%ecx)
374	.byte 0xf0; .byte 0xf3; adcw %ax,(%ecx)
375	xacquire lock addw %ax,(%ecx)
376	lock xacquire addw %ax,(%ecx)
377	xrelease lock addw %ax,(%ecx)
378	lock xrelease addw %ax,(%ecx)
379	.byte 0xf0; .byte 0xf2; addw %ax,(%ecx)
380	.byte 0xf0; .byte 0xf3; addw %ax,(%ecx)
381	xacquire lock andw %ax,(%ecx)
382	lock xacquire andw %ax,(%ecx)
383	xrelease lock andw %ax,(%ecx)
384	lock xrelease andw %ax,(%ecx)
385	.byte 0xf0; .byte 0xf2; andw %ax,(%ecx)
386	.byte 0xf0; .byte 0xf3; andw %ax,(%ecx)
387	xrelease movw %ax,(%ecx)
388	xacquire lock orw %ax,(%ecx)
389	lock xacquire orw %ax,(%ecx)
390	xrelease lock orw %ax,(%ecx)
391	lock xrelease orw %ax,(%ecx)
392	.byte 0xf0; .byte 0xf2; orw %ax,(%ecx)
393	.byte 0xf0; .byte 0xf3; orw %ax,(%ecx)
394	xacquire lock sbbw %ax,(%ecx)
395	lock xacquire sbbw %ax,(%ecx)
396	xrelease lock sbbw %ax,(%ecx)
397	lock xrelease sbbw %ax,(%ecx)
398	.byte 0xf0; .byte 0xf2; sbbw %ax,(%ecx)
399	.byte 0xf0; .byte 0xf3; sbbw %ax,(%ecx)
400	xacquire lock subw %ax,(%ecx)
401	lock xacquire subw %ax,(%ecx)
402	xrelease lock subw %ax,(%ecx)
403	lock xrelease subw %ax,(%ecx)
404	.byte 0xf0; .byte 0xf2; subw %ax,(%ecx)
405	.byte 0xf0; .byte 0xf3; subw %ax,(%ecx)
406	xacquire lock xchgw %ax,(%ecx)
407	lock xacquire xchgw %ax,(%ecx)
408	xacquire xchgw %ax,(%ecx)
409	xrelease lock xchgw %ax,(%ecx)
410	lock xrelease xchgw %ax,(%ecx)
411	xrelease xchgw %ax,(%ecx)
412	.byte 0xf0; .byte 0xf2; xchgw %ax,(%ecx)
413	.byte 0xf0; .byte 0xf3; xchgw %ax,(%ecx)
414	xacquire lock xorw %ax,(%ecx)
415	lock xacquire xorw %ax,(%ecx)
416	xrelease lock xorw %ax,(%ecx)
417	lock xrelease xorw %ax,(%ecx)
418	.byte 0xf0; .byte 0xf2; xorw %ax,(%ecx)
419	.byte 0xf0; .byte 0xf3; xorw %ax,(%ecx)
420
421# Tests for op regl regl/m32
422# Tests for op regl/m32 regl
423	xacquire lock adcl %eax,(%ecx)
424	lock xacquire adcl %eax,(%ecx)
425	xrelease lock adcl %eax,(%ecx)
426	lock xrelease adcl %eax,(%ecx)
427	.byte 0xf0; .byte 0xf2; adcl %eax,(%ecx)
428	.byte 0xf0; .byte 0xf3; adcl %eax,(%ecx)
429	xacquire lock addl %eax,(%ecx)
430	lock xacquire addl %eax,(%ecx)
431	xrelease lock addl %eax,(%ecx)
432	lock xrelease addl %eax,(%ecx)
433	.byte 0xf0; .byte 0xf2; addl %eax,(%ecx)
434	.byte 0xf0; .byte 0xf3; addl %eax,(%ecx)
435	xacquire lock andl %eax,(%ecx)
436	lock xacquire andl %eax,(%ecx)
437	xrelease lock andl %eax,(%ecx)
438	lock xrelease andl %eax,(%ecx)
439	.byte 0xf0; .byte 0xf2; andl %eax,(%ecx)
440	.byte 0xf0; .byte 0xf3; andl %eax,(%ecx)
441	xrelease movl %eax,(%ecx)
442	xacquire lock orl %eax,(%ecx)
443	lock xacquire orl %eax,(%ecx)
444	xrelease lock orl %eax,(%ecx)
445	lock xrelease orl %eax,(%ecx)
446	.byte 0xf0; .byte 0xf2; orl %eax,(%ecx)
447	.byte 0xf0; .byte 0xf3; orl %eax,(%ecx)
448	xacquire lock sbbl %eax,(%ecx)
449	lock xacquire sbbl %eax,(%ecx)
450	xrelease lock sbbl %eax,(%ecx)
451	lock xrelease sbbl %eax,(%ecx)
452	.byte 0xf0; .byte 0xf2; sbbl %eax,(%ecx)
453	.byte 0xf0; .byte 0xf3; sbbl %eax,(%ecx)
454	xacquire lock subl %eax,(%ecx)
455	lock xacquire subl %eax,(%ecx)
456	xrelease lock subl %eax,(%ecx)
457	lock xrelease subl %eax,(%ecx)
458	.byte 0xf0; .byte 0xf2; subl %eax,(%ecx)
459	.byte 0xf0; .byte 0xf3; subl %eax,(%ecx)
460	xacquire lock xchgl %eax,(%ecx)
461	lock xacquire xchgl %eax,(%ecx)
462	xacquire xchgl %eax,(%ecx)
463	xrelease lock xchgl %eax,(%ecx)
464	lock xrelease xchgl %eax,(%ecx)
465	xrelease xchgl %eax,(%ecx)
466	.byte 0xf0; .byte 0xf2; xchgl %eax,(%ecx)
467	.byte 0xf0; .byte 0xf3; xchgl %eax,(%ecx)
468	xacquire lock xorl %eax,(%ecx)
469	lock xacquire xorl %eax,(%ecx)
470	xrelease lock xorl %eax,(%ecx)
471	lock xrelease xorl %eax,(%ecx)
472	.byte 0xf0; .byte 0xf2; xorl %eax,(%ecx)
473	.byte 0xf0; .byte 0xf3; xorl %eax,(%ecx)
474
475# Tests for op regs, regs/m16
476	xacquire lock btcw %ax,(%ecx)
477	lock xacquire btcw %ax,(%ecx)
478	xrelease lock btcw %ax,(%ecx)
479	lock xrelease btcw %ax,(%ecx)
480	.byte 0xf0; .byte 0xf2; btcw %ax,(%ecx)
481	.byte 0xf0; .byte 0xf3; btcw %ax,(%ecx)
482	xacquire lock btrw %ax,(%ecx)
483	lock xacquire btrw %ax,(%ecx)
484	xrelease lock btrw %ax,(%ecx)
485	lock xrelease btrw %ax,(%ecx)
486	.byte 0xf0; .byte 0xf2; btrw %ax,(%ecx)
487	.byte 0xf0; .byte 0xf3; btrw %ax,(%ecx)
488	xacquire lock btsw %ax,(%ecx)
489	lock xacquire btsw %ax,(%ecx)
490	xrelease lock btsw %ax,(%ecx)
491	lock xrelease btsw %ax,(%ecx)
492	.byte 0xf0; .byte 0xf2; btsw %ax,(%ecx)
493	.byte 0xf0; .byte 0xf3; btsw %ax,(%ecx)
494	xacquire lock cmpxchgw %ax,(%ecx)
495	lock xacquire cmpxchgw %ax,(%ecx)
496	xrelease lock cmpxchgw %ax,(%ecx)
497	lock xrelease cmpxchgw %ax,(%ecx)
498	.byte 0xf0; .byte 0xf2; cmpxchgw %ax,(%ecx)
499	.byte 0xf0; .byte 0xf3; cmpxchgw %ax,(%ecx)
500	xacquire lock xaddw %ax,(%ecx)
501	lock xacquire xaddw %ax,(%ecx)
502	xrelease lock xaddw %ax,(%ecx)
503	lock xrelease xaddw %ax,(%ecx)
504	.byte 0xf0; .byte 0xf2; xaddw %ax,(%ecx)
505	.byte 0xf0; .byte 0xf3; xaddw %ax,(%ecx)
506
507# Tests for op regl regl/m32
508	xacquire lock btcl %eax,(%ecx)
509	lock xacquire btcl %eax,(%ecx)
510	xrelease lock btcl %eax,(%ecx)
511	lock xrelease btcl %eax,(%ecx)
512	.byte 0xf0; .byte 0xf2; btcl %eax,(%ecx)
513	.byte 0xf0; .byte 0xf3; btcl %eax,(%ecx)
514	xacquire lock btrl %eax,(%ecx)
515	lock xacquire btrl %eax,(%ecx)
516	xrelease lock btrl %eax,(%ecx)
517	lock xrelease btrl %eax,(%ecx)
518	.byte 0xf0; .byte 0xf2; btrl %eax,(%ecx)
519	.byte 0xf0; .byte 0xf3; btrl %eax,(%ecx)
520	xacquire lock btsl %eax,(%ecx)
521	lock xacquire btsl %eax,(%ecx)
522	xrelease lock btsl %eax,(%ecx)
523	lock xrelease btsl %eax,(%ecx)
524	.byte 0xf0; .byte 0xf2; btsl %eax,(%ecx)
525	.byte 0xf0; .byte 0xf3; btsl %eax,(%ecx)
526	xacquire lock cmpxchgl %eax,(%ecx)
527	lock xacquire cmpxchgl %eax,(%ecx)
528	xrelease lock cmpxchgl %eax,(%ecx)
529	lock xrelease cmpxchgl %eax,(%ecx)
530	.byte 0xf0; .byte 0xf2; cmpxchgl %eax,(%ecx)
531	.byte 0xf0; .byte 0xf3; cmpxchgl %eax,(%ecx)
532	xacquire lock xaddl %eax,(%ecx)
533	lock xacquire xaddl %eax,(%ecx)
534	xrelease lock xaddl %eax,(%ecx)
535	lock xrelease xaddl %eax,(%ecx)
536	.byte 0xf0; .byte 0xf2; xaddl %eax,(%ecx)
537	.byte 0xf0; .byte 0xf3; xaddl %eax,(%ecx)
538
539# Tests for op regb/m8
540	xacquire lock decb (%ecx)
541	lock xacquire decb (%ecx)
542	xrelease lock decb (%ecx)
543	lock xrelease decb (%ecx)
544	.byte 0xf0; .byte 0xf2; decb (%ecx)
545	.byte 0xf0; .byte 0xf3; decb (%ecx)
546	xacquire lock incb (%ecx)
547	lock xacquire incb (%ecx)
548	xrelease lock incb (%ecx)
549	lock xrelease incb (%ecx)
550	.byte 0xf0; .byte 0xf2; incb (%ecx)
551	.byte 0xf0; .byte 0xf3; incb (%ecx)
552	xacquire lock negb (%ecx)
553	lock xacquire negb (%ecx)
554	xrelease lock negb (%ecx)
555	lock xrelease negb (%ecx)
556	.byte 0xf0; .byte 0xf2; negb (%ecx)
557	.byte 0xf0; .byte 0xf3; negb (%ecx)
558	xacquire lock notb (%ecx)
559	lock xacquire notb (%ecx)
560	xrelease lock notb (%ecx)
561	lock xrelease notb (%ecx)
562	.byte 0xf0; .byte 0xf2; notb (%ecx)
563	.byte 0xf0; .byte 0xf3; notb (%ecx)
564
565# Tests for op regs/m16
566	xacquire lock decw (%ecx)
567	lock xacquire decw (%ecx)
568	xrelease lock decw (%ecx)
569	lock xrelease decw (%ecx)
570	.byte 0xf0; .byte 0xf2; decw (%ecx)
571	.byte 0xf0; .byte 0xf3; decw (%ecx)
572	xacquire lock incw (%ecx)
573	lock xacquire incw (%ecx)
574	xrelease lock incw (%ecx)
575	lock xrelease incw (%ecx)
576	.byte 0xf0; .byte 0xf2; incw (%ecx)
577	.byte 0xf0; .byte 0xf3; incw (%ecx)
578	xacquire lock negw (%ecx)
579	lock xacquire negw (%ecx)
580	xrelease lock negw (%ecx)
581	lock xrelease negw (%ecx)
582	.byte 0xf0; .byte 0xf2; negw (%ecx)
583	.byte 0xf0; .byte 0xf3; negw (%ecx)
584	xacquire lock notw (%ecx)
585	lock xacquire notw (%ecx)
586	xrelease lock notw (%ecx)
587	lock xrelease notw (%ecx)
588	.byte 0xf0; .byte 0xf2; notw (%ecx)
589	.byte 0xf0; .byte 0xf3; notw (%ecx)
590
591# Tests for op regl/m32
592	xacquire lock decl (%ecx)
593	lock xacquire decl (%ecx)
594	xrelease lock decl (%ecx)
595	lock xrelease decl (%ecx)
596	.byte 0xf0; .byte 0xf2; decl (%ecx)
597	.byte 0xf0; .byte 0xf3; decl (%ecx)
598	xacquire lock incl (%ecx)
599	lock xacquire incl (%ecx)
600	xrelease lock incl (%ecx)
601	lock xrelease incl (%ecx)
602	.byte 0xf0; .byte 0xf2; incl (%ecx)
603	.byte 0xf0; .byte 0xf3; incl (%ecx)
604	xacquire lock negl (%ecx)
605	lock xacquire negl (%ecx)
606	xrelease lock negl (%ecx)
607	lock xrelease negl (%ecx)
608	.byte 0xf0; .byte 0xf2; negl (%ecx)
609	.byte 0xf0; .byte 0xf3; negl (%ecx)
610	xacquire lock notl (%ecx)
611	lock xacquire notl (%ecx)
612	xrelease lock notl (%ecx)
613	lock xrelease notl (%ecx)
614	.byte 0xf0; .byte 0xf2; notl (%ecx)
615	.byte 0xf0; .byte 0xf3; notl (%ecx)
616
617# Tests for op m64
618	xacquire lock cmpxchg8bq (%ecx)
619	lock xacquire cmpxchg8bq (%ecx)
620	xrelease lock cmpxchg8bq (%ecx)
621	lock xrelease cmpxchg8bq (%ecx)
622	.byte 0xf0; .byte 0xf2; cmpxchg8bq (%ecx)
623	.byte 0xf0; .byte 0xf3; cmpxchg8bq (%ecx)
624
625# Tests for op regb, regb/m8
626	xacquire lock cmpxchgb %cl,(%ecx)
627	lock xacquire cmpxchgb %cl,(%ecx)
628	xrelease lock cmpxchgb %cl,(%ecx)
629	lock xrelease cmpxchgb %cl,(%ecx)
630	.byte 0xf0; .byte 0xf2; cmpxchgb %cl,(%ecx)
631	.byte 0xf0; .byte 0xf3; cmpxchgb %cl,(%ecx)
632	xacquire lock xaddb %cl,(%ecx)
633	lock xacquire xaddb %cl,(%ecx)
634	xrelease lock xaddb %cl,(%ecx)
635	lock xrelease xaddb %cl,(%ecx)
636	.byte 0xf0; .byte 0xf2; xaddb %cl,(%ecx)
637	.byte 0xf0; .byte 0xf3; xaddb %cl,(%ecx)
638
639	.intel_syntax noprefix
640
641# Tests for op imm8 regb/m8
642	xacquire lock adc BYTE PTR [ecx],100
643	lock xacquire adc BYTE PTR [ecx],100
644	xrelease lock adc BYTE PTR [ecx],100
645	lock xrelease adc BYTE PTR [ecx],100
646	.byte 0xf0; .byte 0xf2; adc BYTE PTR [ecx],100
647	.byte 0xf0; .byte 0xf3; adc BYTE PTR [ecx],100
648	xacquire lock add BYTE PTR [ecx],100
649	lock xacquire add BYTE PTR [ecx],100
650	xrelease lock add BYTE PTR [ecx],100
651	lock xrelease add BYTE PTR [ecx],100
652	.byte 0xf0; .byte 0xf2; add BYTE PTR [ecx],100
653	.byte 0xf0; .byte 0xf3; add BYTE PTR [ecx],100
654	xacquire lock and BYTE PTR [ecx],100
655	lock xacquire and BYTE PTR [ecx],100
656	xrelease lock and BYTE PTR [ecx],100
657	lock xrelease and BYTE PTR [ecx],100
658	.byte 0xf0; .byte 0xf2; and BYTE PTR [ecx],100
659	.byte 0xf0; .byte 0xf3; and BYTE PTR [ecx],100
660	xrelease mov BYTE PTR [ecx],100
661	xacquire lock or BYTE PTR [ecx],100
662	lock xacquire or BYTE PTR [ecx],100
663	xrelease lock or BYTE PTR [ecx],100
664	lock xrelease or BYTE PTR [ecx],100
665	.byte 0xf0; .byte 0xf2; or BYTE PTR [ecx],100
666	.byte 0xf0; .byte 0xf3; or BYTE PTR [ecx],100
667	xacquire lock sbb BYTE PTR [ecx],100
668	lock xacquire sbb BYTE PTR [ecx],100
669	xrelease lock sbb BYTE PTR [ecx],100
670	lock xrelease sbb BYTE PTR [ecx],100
671	.byte 0xf0; .byte 0xf2; sbb BYTE PTR [ecx],100
672	.byte 0xf0; .byte 0xf3; sbb BYTE PTR [ecx],100
673	xacquire lock sub BYTE PTR [ecx],100
674	lock xacquire sub BYTE PTR [ecx],100
675	xrelease lock sub BYTE PTR [ecx],100
676	lock xrelease sub BYTE PTR [ecx],100
677	.byte 0xf0; .byte 0xf2; sub BYTE PTR [ecx],100
678	.byte 0xf0; .byte 0xf3; sub BYTE PTR [ecx],100
679	xacquire lock xor BYTE PTR [ecx],100
680	lock xacquire xor BYTE PTR [ecx],100
681	xrelease lock xor BYTE PTR [ecx],100
682	lock xrelease xor BYTE PTR [ecx],100
683	.byte 0xf0; .byte 0xf2; xor BYTE PTR [ecx],100
684	.byte 0xf0; .byte 0xf3; xor BYTE PTR [ecx],100
685
686# Tests for op imm16 regs/m16
687	xacquire lock adc WORD PTR [ecx],1000
688	lock xacquire adc WORD PTR [ecx],1000
689	xrelease lock adc WORD PTR [ecx],1000
690	lock xrelease adc WORD PTR [ecx],1000
691	.byte 0xf0; .byte 0xf2; adc WORD PTR [ecx],1000
692	.byte 0xf0; .byte 0xf3; adc WORD PTR [ecx],1000
693	xacquire lock add WORD PTR [ecx],1000
694	lock xacquire add WORD PTR [ecx],1000
695	xrelease lock add WORD PTR [ecx],1000
696	lock xrelease add WORD PTR [ecx],1000
697	.byte 0xf0; .byte 0xf2; add WORD PTR [ecx],1000
698	.byte 0xf0; .byte 0xf3; add WORD PTR [ecx],1000
699	xacquire lock and WORD PTR [ecx],1000
700	lock xacquire and WORD PTR [ecx],1000
701	xrelease lock and WORD PTR [ecx],1000
702	lock xrelease and WORD PTR [ecx],1000
703	.byte 0xf0; .byte 0xf2; and WORD PTR [ecx],1000
704	.byte 0xf0; .byte 0xf3; and WORD PTR [ecx],1000
705	xrelease mov WORD PTR [ecx],1000
706	xacquire lock or WORD PTR [ecx],1000
707	lock xacquire or WORD PTR [ecx],1000
708	xrelease lock or WORD PTR [ecx],1000
709	lock xrelease or WORD PTR [ecx],1000
710	.byte 0xf0; .byte 0xf2; or WORD PTR [ecx],1000
711	.byte 0xf0; .byte 0xf3; or WORD PTR [ecx],1000
712	xacquire lock sbb WORD PTR [ecx],1000
713	lock xacquire sbb WORD PTR [ecx],1000
714	xrelease lock sbb WORD PTR [ecx],1000
715	lock xrelease sbb WORD PTR [ecx],1000
716	.byte 0xf0; .byte 0xf2; sbb WORD PTR [ecx],1000
717	.byte 0xf0; .byte 0xf3; sbb WORD PTR [ecx],1000
718	xacquire lock sub WORD PTR [ecx],1000
719	lock xacquire sub WORD PTR [ecx],1000
720	xrelease lock sub WORD PTR [ecx],1000
721	lock xrelease sub WORD PTR [ecx],1000
722	.byte 0xf0; .byte 0xf2; sub WORD PTR [ecx],1000
723	.byte 0xf0; .byte 0xf3; sub WORD PTR [ecx],1000
724	xacquire lock xor WORD PTR [ecx],1000
725	lock xacquire xor WORD PTR [ecx],1000
726	xrelease lock xor WORD PTR [ecx],1000
727	lock xrelease xor WORD PTR [ecx],1000
728	.byte 0xf0; .byte 0xf2; xor WORD PTR [ecx],1000
729	.byte 0xf0; .byte 0xf3; xor WORD PTR [ecx],1000
730
731# Tests for op imm32 regl/m32
732	xacquire lock adc DWORD PTR [ecx],10000000
733	lock xacquire adc DWORD PTR [ecx],10000000
734	xrelease lock adc DWORD PTR [ecx],10000000
735	lock xrelease adc DWORD PTR [ecx],10000000
736	.byte 0xf0; .byte 0xf2; adc DWORD PTR [ecx],10000000
737	.byte 0xf0; .byte 0xf3; adc DWORD PTR [ecx],10000000
738	xacquire lock add DWORD PTR [ecx],10000000
739	lock xacquire add DWORD PTR [ecx],10000000
740	xrelease lock add DWORD PTR [ecx],10000000
741	lock xrelease add DWORD PTR [ecx],10000000
742	.byte 0xf0; .byte 0xf2; add DWORD PTR [ecx],10000000
743	.byte 0xf0; .byte 0xf3; add DWORD PTR [ecx],10000000
744	xacquire lock and DWORD PTR [ecx],10000000
745	lock xacquire and DWORD PTR [ecx],10000000
746	xrelease lock and DWORD PTR [ecx],10000000
747	lock xrelease and DWORD PTR [ecx],10000000
748	.byte 0xf0; .byte 0xf2; and DWORD PTR [ecx],10000000
749	.byte 0xf0; .byte 0xf3; and DWORD PTR [ecx],10000000
750	xrelease mov DWORD PTR [ecx],10000000
751	xacquire lock or DWORD PTR [ecx],10000000
752	lock xacquire or DWORD PTR [ecx],10000000
753	xrelease lock or DWORD PTR [ecx],10000000
754	lock xrelease or DWORD PTR [ecx],10000000
755	.byte 0xf0; .byte 0xf2; or DWORD PTR [ecx],10000000
756	.byte 0xf0; .byte 0xf3; or DWORD PTR [ecx],10000000
757	xacquire lock sbb DWORD PTR [ecx],10000000
758	lock xacquire sbb DWORD PTR [ecx],10000000
759	xrelease lock sbb DWORD PTR [ecx],10000000
760	lock xrelease sbb DWORD PTR [ecx],10000000
761	.byte 0xf0; .byte 0xf2; sbb DWORD PTR [ecx],10000000
762	.byte 0xf0; .byte 0xf3; sbb DWORD PTR [ecx],10000000
763	xacquire lock sub DWORD PTR [ecx],10000000
764	lock xacquire sub DWORD PTR [ecx],10000000
765	xrelease lock sub DWORD PTR [ecx],10000000
766	lock xrelease sub DWORD PTR [ecx],10000000
767	.byte 0xf0; .byte 0xf2; sub DWORD PTR [ecx],10000000
768	.byte 0xf0; .byte 0xf3; sub DWORD PTR [ecx],10000000
769	xacquire lock xor DWORD PTR [ecx],10000000
770	lock xacquire xor DWORD PTR [ecx],10000000
771	xrelease lock xor DWORD PTR [ecx],10000000
772	lock xrelease xor DWORD PTR [ecx],10000000
773	.byte 0xf0; .byte 0xf2; xor DWORD PTR [ecx],10000000
774	.byte 0xf0; .byte 0xf3; xor DWORD PTR [ecx],10000000
775
776# Tests for op imm8 regs/m16
777	xacquire lock adc WORD PTR [ecx],100
778	lock xacquire adc WORD PTR [ecx],100
779	xrelease lock adc WORD PTR [ecx],100
780	lock xrelease adc WORD PTR [ecx],100
781	.byte 0xf0; .byte 0xf2; adc WORD PTR [ecx],100
782	.byte 0xf0; .byte 0xf3; adc WORD PTR [ecx],100
783	xacquire lock add WORD PTR [ecx],100
784	lock xacquire add WORD PTR [ecx],100
785	xrelease lock add WORD PTR [ecx],100
786	lock xrelease add WORD PTR [ecx],100
787	.byte 0xf0; .byte 0xf2; add WORD PTR [ecx],100
788	.byte 0xf0; .byte 0xf3; add WORD PTR [ecx],100
789	xacquire lock and WORD PTR [ecx],100
790	lock xacquire and WORD PTR [ecx],100
791	xrelease lock and WORD PTR [ecx],100
792	lock xrelease and WORD PTR [ecx],100
793	.byte 0xf0; .byte 0xf2; and WORD PTR [ecx],100
794	.byte 0xf0; .byte 0xf3; and WORD PTR [ecx],100
795	xacquire lock btc WORD PTR [ecx],100
796	lock xacquire btc WORD PTR [ecx],100
797	xrelease lock btc WORD PTR [ecx],100
798	lock xrelease btc WORD PTR [ecx],100
799	.byte 0xf0; .byte 0xf2; btc WORD PTR [ecx],100
800	.byte 0xf0; .byte 0xf3; btc WORD PTR [ecx],100
801	xacquire lock btr WORD PTR [ecx],100
802	lock xacquire btr WORD PTR [ecx],100
803	xrelease lock btr WORD PTR [ecx],100
804	lock xrelease btr WORD PTR [ecx],100
805	.byte 0xf0; .byte 0xf2; btr WORD PTR [ecx],100
806	.byte 0xf0; .byte 0xf3; btr WORD PTR [ecx],100
807	xacquire lock bts WORD PTR [ecx],100
808	lock xacquire bts WORD PTR [ecx],100
809	xrelease lock bts WORD PTR [ecx],100
810	lock xrelease bts WORD PTR [ecx],100
811	.byte 0xf0; .byte 0xf2; bts WORD PTR [ecx],100
812	.byte 0xf0; .byte 0xf3; bts WORD PTR [ecx],100
813	xrelease mov WORD PTR [ecx],100
814	xacquire lock or WORD PTR [ecx],100
815	lock xacquire or WORD PTR [ecx],100
816	xrelease lock or WORD PTR [ecx],100
817	lock xrelease or WORD PTR [ecx],100
818	.byte 0xf0; .byte 0xf2; or WORD PTR [ecx],100
819	.byte 0xf0; .byte 0xf3; or WORD PTR [ecx],100
820	xacquire lock sbb WORD PTR [ecx],100
821	lock xacquire sbb WORD PTR [ecx],100
822	xrelease lock sbb WORD PTR [ecx],100
823	lock xrelease sbb WORD PTR [ecx],100
824	.byte 0xf0; .byte 0xf2; sbb WORD PTR [ecx],100
825	.byte 0xf0; .byte 0xf3; sbb WORD PTR [ecx],100
826	xacquire lock sub WORD PTR [ecx],100
827	lock xacquire sub WORD PTR [ecx],100
828	xrelease lock sub WORD PTR [ecx],100
829	lock xrelease sub WORD PTR [ecx],100
830	.byte 0xf0; .byte 0xf2; sub WORD PTR [ecx],100
831	.byte 0xf0; .byte 0xf3; sub WORD PTR [ecx],100
832	xacquire lock xor WORD PTR [ecx],100
833	lock xacquire xor WORD PTR [ecx],100
834	xrelease lock xor WORD PTR [ecx],100
835	lock xrelease xor WORD PTR [ecx],100
836	.byte 0xf0; .byte 0xf2; xor WORD PTR [ecx],100
837	.byte 0xf0; .byte 0xf3; xor WORD PTR [ecx],100
838
839# Tests for op imm8 regl/m32
840	xacquire lock adc DWORD PTR [ecx],100
841	lock xacquire adc DWORD PTR [ecx],100
842	xrelease lock adc DWORD PTR [ecx],100
843	lock xrelease adc DWORD PTR [ecx],100
844	.byte 0xf0; .byte 0xf2; adc DWORD PTR [ecx],100
845	.byte 0xf0; .byte 0xf3; adc DWORD PTR [ecx],100
846	xacquire lock add DWORD PTR [ecx],100
847	lock xacquire add DWORD PTR [ecx],100
848	xrelease lock add DWORD PTR [ecx],100
849	lock xrelease add DWORD PTR [ecx],100
850	.byte 0xf0; .byte 0xf2; add DWORD PTR [ecx],100
851	.byte 0xf0; .byte 0xf3; add DWORD PTR [ecx],100
852	xacquire lock and DWORD PTR [ecx],100
853	lock xacquire and DWORD PTR [ecx],100
854	xrelease lock and DWORD PTR [ecx],100
855	lock xrelease and DWORD PTR [ecx],100
856	.byte 0xf0; .byte 0xf2; and DWORD PTR [ecx],100
857	.byte 0xf0; .byte 0xf3; and DWORD PTR [ecx],100
858	xacquire lock btc DWORD PTR [ecx],100
859	lock xacquire btc DWORD PTR [ecx],100
860	xrelease lock btc DWORD PTR [ecx],100
861	lock xrelease btc DWORD PTR [ecx],100
862	.byte 0xf0; .byte 0xf2; btc DWORD PTR [ecx],100
863	.byte 0xf0; .byte 0xf3; btc DWORD PTR [ecx],100
864	xacquire lock btr DWORD PTR [ecx],100
865	lock xacquire btr DWORD PTR [ecx],100
866	xrelease lock btr DWORD PTR [ecx],100
867	lock xrelease btr DWORD PTR [ecx],100
868	.byte 0xf0; .byte 0xf2; btr DWORD PTR [ecx],100
869	.byte 0xf0; .byte 0xf3; btr DWORD PTR [ecx],100
870	xacquire lock bts DWORD PTR [ecx],100
871	lock xacquire bts DWORD PTR [ecx],100
872	xrelease lock bts DWORD PTR [ecx],100
873	lock xrelease bts DWORD PTR [ecx],100
874	.byte 0xf0; .byte 0xf2; bts DWORD PTR [ecx],100
875	.byte 0xf0; .byte 0xf3; bts DWORD PTR [ecx],100
876	xrelease mov DWORD PTR [ecx],100
877	xacquire lock or DWORD PTR [ecx],100
878	lock xacquire or DWORD PTR [ecx],100
879	xrelease lock or DWORD PTR [ecx],100
880	lock xrelease or DWORD PTR [ecx],100
881	.byte 0xf0; .byte 0xf2; or DWORD PTR [ecx],100
882	.byte 0xf0; .byte 0xf3; or DWORD PTR [ecx],100
883	xacquire lock sbb DWORD PTR [ecx],100
884	lock xacquire sbb DWORD PTR [ecx],100
885	xrelease lock sbb DWORD PTR [ecx],100
886	lock xrelease sbb DWORD PTR [ecx],100
887	.byte 0xf0; .byte 0xf2; sbb DWORD PTR [ecx],100
888	.byte 0xf0; .byte 0xf3; sbb DWORD PTR [ecx],100
889	xacquire lock sub DWORD PTR [ecx],100
890	lock xacquire sub DWORD PTR [ecx],100
891	xrelease lock sub DWORD PTR [ecx],100
892	lock xrelease sub DWORD PTR [ecx],100
893	.byte 0xf0; .byte 0xf2; sub DWORD PTR [ecx],100
894	.byte 0xf0; .byte 0xf3; sub DWORD PTR [ecx],100
895	xacquire lock xor DWORD PTR [ecx],100
896	lock xacquire xor DWORD PTR [ecx],100
897	xrelease lock xor DWORD PTR [ecx],100
898	lock xrelease xor DWORD PTR [ecx],100
899	.byte 0xf0; .byte 0xf2; xor DWORD PTR [ecx],100
900	.byte 0xf0; .byte 0xf3; xor DWORD PTR [ecx],100
901
902# Tests for op imm8 regb/m8
903	xacquire lock adc BYTE PTR [ecx],100
904	lock xacquire adc BYTE PTR [ecx],100
905	xrelease lock adc BYTE PTR [ecx],100
906	lock xrelease adc BYTE PTR [ecx],100
907	.byte 0xf0; .byte 0xf2; adc BYTE PTR [ecx],100
908	.byte 0xf0; .byte 0xf3; adc BYTE PTR [ecx],100
909	xacquire lock add BYTE PTR [ecx],100
910	lock xacquire add BYTE PTR [ecx],100
911	xrelease lock add BYTE PTR [ecx],100
912	lock xrelease add BYTE PTR [ecx],100
913	.byte 0xf0; .byte 0xf2; add BYTE PTR [ecx],100
914	.byte 0xf0; .byte 0xf3; add BYTE PTR [ecx],100
915	xacquire lock and BYTE PTR [ecx],100
916	lock xacquire and BYTE PTR [ecx],100
917	xrelease lock and BYTE PTR [ecx],100
918	lock xrelease and BYTE PTR [ecx],100
919	.byte 0xf0; .byte 0xf2; and BYTE PTR [ecx],100
920	.byte 0xf0; .byte 0xf3; and BYTE PTR [ecx],100
921	xrelease mov BYTE PTR [ecx],100
922	xacquire lock or BYTE PTR [ecx],100
923	lock xacquire or BYTE PTR [ecx],100
924	xrelease lock or BYTE PTR [ecx],100
925	lock xrelease or BYTE PTR [ecx],100
926	.byte 0xf0; .byte 0xf2; or BYTE PTR [ecx],100
927	.byte 0xf0; .byte 0xf3; or BYTE PTR [ecx],100
928	xacquire lock sbb BYTE PTR [ecx],100
929	lock xacquire sbb BYTE PTR [ecx],100
930	xrelease lock sbb BYTE PTR [ecx],100
931	lock xrelease sbb BYTE PTR [ecx],100
932	.byte 0xf0; .byte 0xf2; sbb BYTE PTR [ecx],100
933	.byte 0xf0; .byte 0xf3; sbb BYTE PTR [ecx],100
934	xacquire lock sub BYTE PTR [ecx],100
935	lock xacquire sub BYTE PTR [ecx],100
936	xrelease lock sub BYTE PTR [ecx],100
937	lock xrelease sub BYTE PTR [ecx],100
938	.byte 0xf0; .byte 0xf2; sub BYTE PTR [ecx],100
939	.byte 0xf0; .byte 0xf3; sub BYTE PTR [ecx],100
940	xacquire lock xor BYTE PTR [ecx],100
941	lock xacquire xor BYTE PTR [ecx],100
942	xrelease lock xor BYTE PTR [ecx],100
943	lock xrelease xor BYTE PTR [ecx],100
944	.byte 0xf0; .byte 0xf2; xor BYTE PTR [ecx],100
945	.byte 0xf0; .byte 0xf3; xor BYTE PTR [ecx],100
946
947# Tests for op regb regb/m8
948# Tests for op regb/m8 regb
949	xacquire lock adc BYTE PTR [ecx],al
950	lock xacquire adc BYTE PTR [ecx],al
951	xrelease lock adc BYTE PTR [ecx],al
952	lock xrelease adc BYTE PTR [ecx],al
953	.byte 0xf0; .byte 0xf2; adc BYTE PTR [ecx],al
954	.byte 0xf0; .byte 0xf3; adc BYTE PTR [ecx],al
955	xacquire lock add BYTE PTR [ecx],al
956	lock xacquire add BYTE PTR [ecx],al
957	xrelease lock add BYTE PTR [ecx],al
958	lock xrelease add BYTE PTR [ecx],al
959	.byte 0xf0; .byte 0xf2; add BYTE PTR [ecx],al
960	.byte 0xf0; .byte 0xf3; add BYTE PTR [ecx],al
961	xacquire lock and BYTE PTR [ecx],al
962	lock xacquire and BYTE PTR [ecx],al
963	xrelease lock and BYTE PTR [ecx],al
964	lock xrelease and BYTE PTR [ecx],al
965	.byte 0xf0; .byte 0xf2; and BYTE PTR [ecx],al
966	.byte 0xf0; .byte 0xf3; and BYTE PTR [ecx],al
967	xrelease mov BYTE PTR [ecx],al
968	xacquire lock or BYTE PTR [ecx],al
969	lock xacquire or BYTE PTR [ecx],al
970	xrelease lock or BYTE PTR [ecx],al
971	lock xrelease or BYTE PTR [ecx],al
972	.byte 0xf0; .byte 0xf2; or BYTE PTR [ecx],al
973	.byte 0xf0; .byte 0xf3; or BYTE PTR [ecx],al
974	xacquire lock sbb BYTE PTR [ecx],al
975	lock xacquire sbb BYTE PTR [ecx],al
976	xrelease lock sbb BYTE PTR [ecx],al
977	lock xrelease sbb BYTE PTR [ecx],al
978	.byte 0xf0; .byte 0xf2; sbb BYTE PTR [ecx],al
979	.byte 0xf0; .byte 0xf3; sbb BYTE PTR [ecx],al
980	xacquire lock sub BYTE PTR [ecx],al
981	lock xacquire sub BYTE PTR [ecx],al
982	xrelease lock sub BYTE PTR [ecx],al
983	lock xrelease sub BYTE PTR [ecx],al
984	.byte 0xf0; .byte 0xf2; sub BYTE PTR [ecx],al
985	.byte 0xf0; .byte 0xf3; sub BYTE PTR [ecx],al
986	xacquire lock xchg BYTE PTR [ecx],al
987	lock xacquire xchg BYTE PTR [ecx],al
988	xacquire xchg BYTE PTR [ecx],al
989	xrelease lock xchg BYTE PTR [ecx],al
990	lock xrelease xchg BYTE PTR [ecx],al
991	xrelease xchg BYTE PTR [ecx],al
992	.byte 0xf0; .byte 0xf2; xchg BYTE PTR [ecx],al
993	.byte 0xf0; .byte 0xf3; xchg BYTE PTR [ecx],al
994	xacquire lock xor BYTE PTR [ecx],al
995	lock xacquire xor BYTE PTR [ecx],al
996	xrelease lock xor BYTE PTR [ecx],al
997	lock xrelease xor BYTE PTR [ecx],al
998	.byte 0xf0; .byte 0xf2; xor BYTE PTR [ecx],al
999	.byte 0xf0; .byte 0xf3; xor BYTE PTR [ecx],al
1000
1001# Tests for op regs regs/m16
1002# Tests for op regs/m16 regs
1003	xacquire lock adc WORD PTR [ecx],ax
1004	lock xacquire adc WORD PTR [ecx],ax
1005	xrelease lock adc WORD PTR [ecx],ax
1006	lock xrelease adc WORD PTR [ecx],ax
1007	.byte 0xf0; .byte 0xf2; adc WORD PTR [ecx],ax
1008	.byte 0xf0; .byte 0xf3; adc WORD PTR [ecx],ax
1009	xacquire lock add WORD PTR [ecx],ax
1010	lock xacquire add WORD PTR [ecx],ax
1011	xrelease lock add WORD PTR [ecx],ax
1012	lock xrelease add WORD PTR [ecx],ax
1013	.byte 0xf0; .byte 0xf2; add WORD PTR [ecx],ax
1014	.byte 0xf0; .byte 0xf3; add WORD PTR [ecx],ax
1015	xacquire lock and WORD PTR [ecx],ax
1016	lock xacquire and WORD PTR [ecx],ax
1017	xrelease lock and WORD PTR [ecx],ax
1018	lock xrelease and WORD PTR [ecx],ax
1019	.byte 0xf0; .byte 0xf2; and WORD PTR [ecx],ax
1020	.byte 0xf0; .byte 0xf3; and WORD PTR [ecx],ax
1021	xrelease mov WORD PTR [ecx],ax
1022	xacquire lock or WORD PTR [ecx],ax
1023	lock xacquire or WORD PTR [ecx],ax
1024	xrelease lock or WORD PTR [ecx],ax
1025	lock xrelease or WORD PTR [ecx],ax
1026	.byte 0xf0; .byte 0xf2; or WORD PTR [ecx],ax
1027	.byte 0xf0; .byte 0xf3; or WORD PTR [ecx],ax
1028	xacquire lock sbb WORD PTR [ecx],ax
1029	lock xacquire sbb WORD PTR [ecx],ax
1030	xrelease lock sbb WORD PTR [ecx],ax
1031	lock xrelease sbb WORD PTR [ecx],ax
1032	.byte 0xf0; .byte 0xf2; sbb WORD PTR [ecx],ax
1033	.byte 0xf0; .byte 0xf3; sbb WORD PTR [ecx],ax
1034	xacquire lock sub WORD PTR [ecx],ax
1035	lock xacquire sub WORD PTR [ecx],ax
1036	xrelease lock sub WORD PTR [ecx],ax
1037	lock xrelease sub WORD PTR [ecx],ax
1038	.byte 0xf0; .byte 0xf2; sub WORD PTR [ecx],ax
1039	.byte 0xf0; .byte 0xf3; sub WORD PTR [ecx],ax
1040	xacquire lock xchg WORD PTR [ecx],ax
1041	lock xacquire xchg WORD PTR [ecx],ax
1042	xacquire xchg WORD PTR [ecx],ax
1043	xrelease lock xchg WORD PTR [ecx],ax
1044	lock xrelease xchg WORD PTR [ecx],ax
1045	xrelease xchg WORD PTR [ecx],ax
1046	.byte 0xf0; .byte 0xf2; xchg WORD PTR [ecx],ax
1047	.byte 0xf0; .byte 0xf3; xchg WORD PTR [ecx],ax
1048	xacquire lock xor WORD PTR [ecx],ax
1049	lock xacquire xor WORD PTR [ecx],ax
1050	xrelease lock xor WORD PTR [ecx],ax
1051	lock xrelease xor WORD PTR [ecx],ax
1052	.byte 0xf0; .byte 0xf2; xor WORD PTR [ecx],ax
1053	.byte 0xf0; .byte 0xf3; xor WORD PTR [ecx],ax
1054
1055# Tests for op regl regl/m32
1056# Tests for op regl/m32 regl
1057	xacquire lock adc DWORD PTR [ecx],eax
1058	lock xacquire adc DWORD PTR [ecx],eax
1059	xrelease lock adc DWORD PTR [ecx],eax
1060	lock xrelease adc DWORD PTR [ecx],eax
1061	.byte 0xf0; .byte 0xf2; adc DWORD PTR [ecx],eax
1062	.byte 0xf0; .byte 0xf3; adc DWORD PTR [ecx],eax
1063	xacquire lock add DWORD PTR [ecx],eax
1064	lock xacquire add DWORD PTR [ecx],eax
1065	xrelease lock add DWORD PTR [ecx],eax
1066	lock xrelease add DWORD PTR [ecx],eax
1067	.byte 0xf0; .byte 0xf2; add DWORD PTR [ecx],eax
1068	.byte 0xf0; .byte 0xf3; add DWORD PTR [ecx],eax
1069	xacquire lock and DWORD PTR [ecx],eax
1070	lock xacquire and DWORD PTR [ecx],eax
1071	xrelease lock and DWORD PTR [ecx],eax
1072	lock xrelease and DWORD PTR [ecx],eax
1073	.byte 0xf0; .byte 0xf2; and DWORD PTR [ecx],eax
1074	.byte 0xf0; .byte 0xf3; and DWORD PTR [ecx],eax
1075	xrelease mov DWORD PTR [ecx],eax
1076	xacquire lock or DWORD PTR [ecx],eax
1077	lock xacquire or DWORD PTR [ecx],eax
1078	xrelease lock or DWORD PTR [ecx],eax
1079	lock xrelease or DWORD PTR [ecx],eax
1080	.byte 0xf0; .byte 0xf2; or DWORD PTR [ecx],eax
1081	.byte 0xf0; .byte 0xf3; or DWORD PTR [ecx],eax
1082	xacquire lock sbb DWORD PTR [ecx],eax
1083	lock xacquire sbb DWORD PTR [ecx],eax
1084	xrelease lock sbb DWORD PTR [ecx],eax
1085	lock xrelease sbb DWORD PTR [ecx],eax
1086	.byte 0xf0; .byte 0xf2; sbb DWORD PTR [ecx],eax
1087	.byte 0xf0; .byte 0xf3; sbb DWORD PTR [ecx],eax
1088	xacquire lock sub DWORD PTR [ecx],eax
1089	lock xacquire sub DWORD PTR [ecx],eax
1090	xrelease lock sub DWORD PTR [ecx],eax
1091	lock xrelease sub DWORD PTR [ecx],eax
1092	.byte 0xf0; .byte 0xf2; sub DWORD PTR [ecx],eax
1093	.byte 0xf0; .byte 0xf3; sub DWORD PTR [ecx],eax
1094	xacquire lock xchg DWORD PTR [ecx],eax
1095	lock xacquire xchg DWORD PTR [ecx],eax
1096	xacquire xchg DWORD PTR [ecx],eax
1097	xrelease lock xchg DWORD PTR [ecx],eax
1098	lock xrelease xchg DWORD PTR [ecx],eax
1099	xrelease xchg DWORD PTR [ecx],eax
1100	.byte 0xf0; .byte 0xf2; xchg DWORD PTR [ecx],eax
1101	.byte 0xf0; .byte 0xf3; xchg DWORD PTR [ecx],eax
1102	xacquire lock xor DWORD PTR [ecx],eax
1103	lock xacquire xor DWORD PTR [ecx],eax
1104	xrelease lock xor DWORD PTR [ecx],eax
1105	lock xrelease xor DWORD PTR [ecx],eax
1106	.byte 0xf0; .byte 0xf2; xor DWORD PTR [ecx],eax
1107	.byte 0xf0; .byte 0xf3; xor DWORD PTR [ecx],eax
1108
1109# Tests for op regs, regs/m16
1110	xacquire lock btc WORD PTR [ecx],ax
1111	lock xacquire btc WORD PTR [ecx],ax
1112	xrelease lock btc WORD PTR [ecx],ax
1113	lock xrelease btc WORD PTR [ecx],ax
1114	.byte 0xf0; .byte 0xf2; btc WORD PTR [ecx],ax
1115	.byte 0xf0; .byte 0xf3; btc WORD PTR [ecx],ax
1116	xacquire lock btr WORD PTR [ecx],ax
1117	lock xacquire btr WORD PTR [ecx],ax
1118	xrelease lock btr WORD PTR [ecx],ax
1119	lock xrelease btr WORD PTR [ecx],ax
1120	.byte 0xf0; .byte 0xf2; btr WORD PTR [ecx],ax
1121	.byte 0xf0; .byte 0xf3; btr WORD PTR [ecx],ax
1122	xacquire lock bts WORD PTR [ecx],ax
1123	lock xacquire bts WORD PTR [ecx],ax
1124	xrelease lock bts WORD PTR [ecx],ax
1125	lock xrelease bts WORD PTR [ecx],ax
1126	.byte 0xf0; .byte 0xf2; bts WORD PTR [ecx],ax
1127	.byte 0xf0; .byte 0xf3; bts WORD PTR [ecx],ax
1128	xacquire lock cmpxchg WORD PTR [ecx],ax
1129	lock xacquire cmpxchg WORD PTR [ecx],ax
1130	xrelease lock cmpxchg WORD PTR [ecx],ax
1131	lock xrelease cmpxchg WORD PTR [ecx],ax
1132	.byte 0xf0; .byte 0xf2; cmpxchg WORD PTR [ecx],ax
1133	.byte 0xf0; .byte 0xf3; cmpxchg WORD PTR [ecx],ax
1134	xacquire lock xadd WORD PTR [ecx],ax
1135	lock xacquire xadd WORD PTR [ecx],ax
1136	xrelease lock xadd WORD PTR [ecx],ax
1137	lock xrelease xadd WORD PTR [ecx],ax
1138	.byte 0xf0; .byte 0xf2; xadd WORD PTR [ecx],ax
1139	.byte 0xf0; .byte 0xf3; xadd WORD PTR [ecx],ax
1140
1141# Tests for op regl regl/m32
1142	xacquire lock btc DWORD PTR [ecx],eax
1143	lock xacquire btc DWORD PTR [ecx],eax
1144	xrelease lock btc DWORD PTR [ecx],eax
1145	lock xrelease btc DWORD PTR [ecx],eax
1146	.byte 0xf0; .byte 0xf2; btc DWORD PTR [ecx],eax
1147	.byte 0xf0; .byte 0xf3; btc DWORD PTR [ecx],eax
1148	xacquire lock btr DWORD PTR [ecx],eax
1149	lock xacquire btr DWORD PTR [ecx],eax
1150	xrelease lock btr DWORD PTR [ecx],eax
1151	lock xrelease btr DWORD PTR [ecx],eax
1152	.byte 0xf0; .byte 0xf2; btr DWORD PTR [ecx],eax
1153	.byte 0xf0; .byte 0xf3; btr DWORD PTR [ecx],eax
1154	xacquire lock bts DWORD PTR [ecx],eax
1155	lock xacquire bts DWORD PTR [ecx],eax
1156	xrelease lock bts DWORD PTR [ecx],eax
1157	lock xrelease bts DWORD PTR [ecx],eax
1158	.byte 0xf0; .byte 0xf2; bts DWORD PTR [ecx],eax
1159	.byte 0xf0; .byte 0xf3; bts DWORD PTR [ecx],eax
1160	xacquire lock cmpxchg DWORD PTR [ecx],eax
1161	lock xacquire cmpxchg DWORD PTR [ecx],eax
1162	xrelease lock cmpxchg DWORD PTR [ecx],eax
1163	lock xrelease cmpxchg DWORD PTR [ecx],eax
1164	.byte 0xf0; .byte 0xf2; cmpxchg DWORD PTR [ecx],eax
1165	.byte 0xf0; .byte 0xf3; cmpxchg DWORD PTR [ecx],eax
1166	xacquire lock xadd DWORD PTR [ecx],eax
1167	lock xacquire xadd DWORD PTR [ecx],eax
1168	xrelease lock xadd DWORD PTR [ecx],eax
1169	lock xrelease xadd DWORD PTR [ecx],eax
1170	.byte 0xf0; .byte 0xf2; xadd DWORD PTR [ecx],eax
1171	.byte 0xf0; .byte 0xf3; xadd DWORD PTR [ecx],eax
1172
1173# Tests for op regb/m8
1174	xacquire lock dec BYTE PTR [ecx]
1175	lock xacquire dec BYTE PTR [ecx]
1176	xrelease lock dec BYTE PTR [ecx]
1177	lock xrelease dec BYTE PTR [ecx]
1178	.byte 0xf0; .byte 0xf2; dec BYTE PTR [ecx]
1179	.byte 0xf0; .byte 0xf3; dec BYTE PTR [ecx]
1180	xacquire lock inc BYTE PTR [ecx]
1181	lock xacquire inc BYTE PTR [ecx]
1182	xrelease lock inc BYTE PTR [ecx]
1183	lock xrelease inc BYTE PTR [ecx]
1184	.byte 0xf0; .byte 0xf2; inc BYTE PTR [ecx]
1185	.byte 0xf0; .byte 0xf3; inc BYTE PTR [ecx]
1186	xacquire lock neg BYTE PTR [ecx]
1187	lock xacquire neg BYTE PTR [ecx]
1188	xrelease lock neg BYTE PTR [ecx]
1189	lock xrelease neg BYTE PTR [ecx]
1190	.byte 0xf0; .byte 0xf2; neg BYTE PTR [ecx]
1191	.byte 0xf0; .byte 0xf3; neg BYTE PTR [ecx]
1192	xacquire lock not BYTE PTR [ecx]
1193	lock xacquire not BYTE PTR [ecx]
1194	xrelease lock not BYTE PTR [ecx]
1195	lock xrelease not BYTE PTR [ecx]
1196	.byte 0xf0; .byte 0xf2; not BYTE PTR [ecx]
1197	.byte 0xf0; .byte 0xf3; not BYTE PTR [ecx]
1198
1199# Tests for op regs/m16
1200	xacquire lock dec WORD PTR [ecx]
1201	lock xacquire dec WORD PTR [ecx]
1202	xrelease lock dec WORD PTR [ecx]
1203	lock xrelease dec WORD PTR [ecx]
1204	.byte 0xf0; .byte 0xf2; dec WORD PTR [ecx]
1205	.byte 0xf0; .byte 0xf3; dec WORD PTR [ecx]
1206	xacquire lock inc WORD PTR [ecx]
1207	lock xacquire inc WORD PTR [ecx]
1208	xrelease lock inc WORD PTR [ecx]
1209	lock xrelease inc WORD PTR [ecx]
1210	.byte 0xf0; .byte 0xf2; inc WORD PTR [ecx]
1211	.byte 0xf0; .byte 0xf3; inc WORD PTR [ecx]
1212	xacquire lock neg WORD PTR [ecx]
1213	lock xacquire neg WORD PTR [ecx]
1214	xrelease lock neg WORD PTR [ecx]
1215	lock xrelease neg WORD PTR [ecx]
1216	.byte 0xf0; .byte 0xf2; neg WORD PTR [ecx]
1217	.byte 0xf0; .byte 0xf3; neg WORD PTR [ecx]
1218	xacquire lock not WORD PTR [ecx]
1219	lock xacquire not WORD PTR [ecx]
1220	xrelease lock not WORD PTR [ecx]
1221	lock xrelease not WORD PTR [ecx]
1222	.byte 0xf0; .byte 0xf2; not WORD PTR [ecx]
1223	.byte 0xf0; .byte 0xf3; not WORD PTR [ecx]
1224
1225# Tests for op regl/m32
1226	xacquire lock dec DWORD PTR [ecx]
1227	lock xacquire dec DWORD PTR [ecx]
1228	xrelease lock dec DWORD PTR [ecx]
1229	lock xrelease dec DWORD PTR [ecx]
1230	.byte 0xf0; .byte 0xf2; dec DWORD PTR [ecx]
1231	.byte 0xf0; .byte 0xf3; dec DWORD PTR [ecx]
1232	xacquire lock inc DWORD PTR [ecx]
1233	lock xacquire inc DWORD PTR [ecx]
1234	xrelease lock inc DWORD PTR [ecx]
1235	lock xrelease inc DWORD PTR [ecx]
1236	.byte 0xf0; .byte 0xf2; inc DWORD PTR [ecx]
1237	.byte 0xf0; .byte 0xf3; inc DWORD PTR [ecx]
1238	xacquire lock neg DWORD PTR [ecx]
1239	lock xacquire neg DWORD PTR [ecx]
1240	xrelease lock neg DWORD PTR [ecx]
1241	lock xrelease neg DWORD PTR [ecx]
1242	.byte 0xf0; .byte 0xf2; neg DWORD PTR [ecx]
1243	.byte 0xf0; .byte 0xf3; neg DWORD PTR [ecx]
1244	xacquire lock not DWORD PTR [ecx]
1245	lock xacquire not DWORD PTR [ecx]
1246	xrelease lock not DWORD PTR [ecx]
1247	lock xrelease not DWORD PTR [ecx]
1248	.byte 0xf0; .byte 0xf2; not DWORD PTR [ecx]
1249	.byte 0xf0; .byte 0xf3; not DWORD PTR [ecx]
1250
1251# Tests for op m64
1252	xacquire lock cmpxchg8b QWORD PTR [ecx]
1253	lock xacquire cmpxchg8b QWORD PTR [ecx]
1254	xrelease lock cmpxchg8b QWORD PTR [ecx]
1255	lock xrelease cmpxchg8b QWORD PTR [ecx]
1256	.byte 0xf0; .byte 0xf2; cmpxchg8b QWORD PTR [ecx]
1257	.byte 0xf0; .byte 0xf3; cmpxchg8b QWORD PTR [ecx]
1258
1259# Tests for op regb, regb/m8
1260	xacquire lock cmpxchg BYTE PTR [ecx],cl
1261	lock xacquire cmpxchg BYTE PTR [ecx],cl
1262	xrelease lock cmpxchg BYTE PTR [ecx],cl
1263	lock xrelease cmpxchg BYTE PTR [ecx],cl
1264	.byte 0xf0; .byte 0xf2; cmpxchg BYTE PTR [ecx],cl
1265	.byte 0xf0; .byte 0xf3; cmpxchg BYTE PTR [ecx],cl
1266	xacquire lock xadd BYTE PTR [ecx],cl
1267	lock xacquire xadd BYTE PTR [ecx],cl
1268	xrelease lock xadd BYTE PTR [ecx],cl
1269	lock xrelease xadd BYTE PTR [ecx],cl
1270	.byte 0xf0; .byte 0xf2; xadd BYTE PTR [ecx],cl
1271	.byte 0xf0; .byte 0xf3; xadd BYTE PTR [ecx],cl
1272