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	xrelease movb %al,0x12345678
335	xacquire lock orb %al,(%ecx)
336	lock xacquire orb %al,(%ecx)
337	xrelease lock orb %al,(%ecx)
338	lock xrelease orb %al,(%ecx)
339	.byte 0xf0; .byte 0xf2; orb %al,(%ecx)
340	.byte 0xf0; .byte 0xf3; orb %al,(%ecx)
341	xacquire lock sbbb %al,(%ecx)
342	lock xacquire sbbb %al,(%ecx)
343	xrelease lock sbbb %al,(%ecx)
344	lock xrelease sbbb %al,(%ecx)
345	.byte 0xf0; .byte 0xf2; sbbb %al,(%ecx)
346	.byte 0xf0; .byte 0xf3; sbbb %al,(%ecx)
347	xacquire lock subb %al,(%ecx)
348	lock xacquire subb %al,(%ecx)
349	xrelease lock subb %al,(%ecx)
350	lock xrelease subb %al,(%ecx)
351	.byte 0xf0; .byte 0xf2; subb %al,(%ecx)
352	.byte 0xf0; .byte 0xf3; subb %al,(%ecx)
353	xacquire lock xchgb %al,(%ecx)
354	lock xacquire xchgb %al,(%ecx)
355	xacquire xchgb %al,(%ecx)
356	xrelease lock xchgb %al,(%ecx)
357	lock xrelease xchgb %al,(%ecx)
358	xrelease xchgb %al,(%ecx)
359	.byte 0xf0; .byte 0xf2; xchgb %al,(%ecx)
360	.byte 0xf0; .byte 0xf3; xchgb %al,(%ecx)
361	xacquire lock xorb %al,(%ecx)
362	lock xacquire xorb %al,(%ecx)
363	xrelease lock xorb %al,(%ecx)
364	lock xrelease xorb %al,(%ecx)
365	.byte 0xf0; .byte 0xf2; xorb %al,(%ecx)
366	.byte 0xf0; .byte 0xf3; xorb %al,(%ecx)
367
368# Tests for op regs regs/m16
369# Tests for op regs/m16 regs
370	xacquire lock adcw %ax,(%ecx)
371	lock xacquire adcw %ax,(%ecx)
372	xrelease lock adcw %ax,(%ecx)
373	lock xrelease adcw %ax,(%ecx)
374	.byte 0xf0; .byte 0xf2; adcw %ax,(%ecx)
375	.byte 0xf0; .byte 0xf3; adcw %ax,(%ecx)
376	xacquire lock addw %ax,(%ecx)
377	lock xacquire addw %ax,(%ecx)
378	xrelease lock addw %ax,(%ecx)
379	lock xrelease addw %ax,(%ecx)
380	.byte 0xf0; .byte 0xf2; addw %ax,(%ecx)
381	.byte 0xf0; .byte 0xf3; addw %ax,(%ecx)
382	xacquire lock andw %ax,(%ecx)
383	lock xacquire andw %ax,(%ecx)
384	xrelease lock andw %ax,(%ecx)
385	lock xrelease andw %ax,(%ecx)
386	.byte 0xf0; .byte 0xf2; andw %ax,(%ecx)
387	.byte 0xf0; .byte 0xf3; andw %ax,(%ecx)
388	xrelease movw %ax,(%ecx)
389	xrelease movw %ax,0x12345678
390	xacquire lock orw %ax,(%ecx)
391	lock xacquire orw %ax,(%ecx)
392	xrelease lock orw %ax,(%ecx)
393	lock xrelease orw %ax,(%ecx)
394	.byte 0xf0; .byte 0xf2; orw %ax,(%ecx)
395	.byte 0xf0; .byte 0xf3; orw %ax,(%ecx)
396	xacquire lock sbbw %ax,(%ecx)
397	lock xacquire sbbw %ax,(%ecx)
398	xrelease lock sbbw %ax,(%ecx)
399	lock xrelease sbbw %ax,(%ecx)
400	.byte 0xf0; .byte 0xf2; sbbw %ax,(%ecx)
401	.byte 0xf0; .byte 0xf3; sbbw %ax,(%ecx)
402	xacquire lock subw %ax,(%ecx)
403	lock xacquire subw %ax,(%ecx)
404	xrelease lock subw %ax,(%ecx)
405	lock xrelease subw %ax,(%ecx)
406	.byte 0xf0; .byte 0xf2; subw %ax,(%ecx)
407	.byte 0xf0; .byte 0xf3; subw %ax,(%ecx)
408	xacquire lock xchgw %ax,(%ecx)
409	lock xacquire xchgw %ax,(%ecx)
410	xacquire xchgw %ax,(%ecx)
411	xrelease lock xchgw %ax,(%ecx)
412	lock xrelease xchgw %ax,(%ecx)
413	xrelease xchgw %ax,(%ecx)
414	.byte 0xf0; .byte 0xf2; xchgw %ax,(%ecx)
415	.byte 0xf0; .byte 0xf3; xchgw %ax,(%ecx)
416	xacquire lock xorw %ax,(%ecx)
417	lock xacquire xorw %ax,(%ecx)
418	xrelease lock xorw %ax,(%ecx)
419	lock xrelease xorw %ax,(%ecx)
420	.byte 0xf0; .byte 0xf2; xorw %ax,(%ecx)
421	.byte 0xf0; .byte 0xf3; xorw %ax,(%ecx)
422
423# Tests for op regl regl/m32
424# Tests for op regl/m32 regl
425	xacquire lock adcl %eax,(%ecx)
426	lock xacquire adcl %eax,(%ecx)
427	xrelease lock adcl %eax,(%ecx)
428	lock xrelease adcl %eax,(%ecx)
429	.byte 0xf0; .byte 0xf2; adcl %eax,(%ecx)
430	.byte 0xf0; .byte 0xf3; adcl %eax,(%ecx)
431	xacquire lock addl %eax,(%ecx)
432	lock xacquire addl %eax,(%ecx)
433	xrelease lock addl %eax,(%ecx)
434	lock xrelease addl %eax,(%ecx)
435	.byte 0xf0; .byte 0xf2; addl %eax,(%ecx)
436	.byte 0xf0; .byte 0xf3; addl %eax,(%ecx)
437	xacquire lock andl %eax,(%ecx)
438	lock xacquire andl %eax,(%ecx)
439	xrelease lock andl %eax,(%ecx)
440	lock xrelease andl %eax,(%ecx)
441	.byte 0xf0; .byte 0xf2; andl %eax,(%ecx)
442	.byte 0xf0; .byte 0xf3; andl %eax,(%ecx)
443	xrelease movl %eax,(%ecx)
444	xrelease movl %eax,0x12345678
445	xacquire lock orl %eax,(%ecx)
446	lock xacquire orl %eax,(%ecx)
447	xrelease lock orl %eax,(%ecx)
448	lock xrelease orl %eax,(%ecx)
449	.byte 0xf0; .byte 0xf2; orl %eax,(%ecx)
450	.byte 0xf0; .byte 0xf3; orl %eax,(%ecx)
451	xacquire lock sbbl %eax,(%ecx)
452	lock xacquire sbbl %eax,(%ecx)
453	xrelease lock sbbl %eax,(%ecx)
454	lock xrelease sbbl %eax,(%ecx)
455	.byte 0xf0; .byte 0xf2; sbbl %eax,(%ecx)
456	.byte 0xf0; .byte 0xf3; sbbl %eax,(%ecx)
457	xacquire lock subl %eax,(%ecx)
458	lock xacquire subl %eax,(%ecx)
459	xrelease lock subl %eax,(%ecx)
460	lock xrelease subl %eax,(%ecx)
461	.byte 0xf0; .byte 0xf2; subl %eax,(%ecx)
462	.byte 0xf0; .byte 0xf3; subl %eax,(%ecx)
463	xacquire lock xchgl %eax,(%ecx)
464	lock xacquire xchgl %eax,(%ecx)
465	xacquire xchgl %eax,(%ecx)
466	xrelease lock xchgl %eax,(%ecx)
467	lock xrelease xchgl %eax,(%ecx)
468	xrelease xchgl %eax,(%ecx)
469	.byte 0xf0; .byte 0xf2; xchgl %eax,(%ecx)
470	.byte 0xf0; .byte 0xf3; xchgl %eax,(%ecx)
471	xacquire lock xorl %eax,(%ecx)
472	lock xacquire xorl %eax,(%ecx)
473	xrelease lock xorl %eax,(%ecx)
474	lock xrelease xorl %eax,(%ecx)
475	.byte 0xf0; .byte 0xf2; xorl %eax,(%ecx)
476	.byte 0xf0; .byte 0xf3; xorl %eax,(%ecx)
477
478# Tests for op regs, regs/m16
479	xacquire lock btcw %ax,(%ecx)
480	lock xacquire btcw %ax,(%ecx)
481	xrelease lock btcw %ax,(%ecx)
482	lock xrelease btcw %ax,(%ecx)
483	.byte 0xf0; .byte 0xf2; btcw %ax,(%ecx)
484	.byte 0xf0; .byte 0xf3; btcw %ax,(%ecx)
485	xacquire lock btrw %ax,(%ecx)
486	lock xacquire btrw %ax,(%ecx)
487	xrelease lock btrw %ax,(%ecx)
488	lock xrelease btrw %ax,(%ecx)
489	.byte 0xf0; .byte 0xf2; btrw %ax,(%ecx)
490	.byte 0xf0; .byte 0xf3; btrw %ax,(%ecx)
491	xacquire lock btsw %ax,(%ecx)
492	lock xacquire btsw %ax,(%ecx)
493	xrelease lock btsw %ax,(%ecx)
494	lock xrelease btsw %ax,(%ecx)
495	.byte 0xf0; .byte 0xf2; btsw %ax,(%ecx)
496	.byte 0xf0; .byte 0xf3; btsw %ax,(%ecx)
497	xacquire lock cmpxchgw %ax,(%ecx)
498	lock xacquire cmpxchgw %ax,(%ecx)
499	xrelease lock cmpxchgw %ax,(%ecx)
500	lock xrelease cmpxchgw %ax,(%ecx)
501	.byte 0xf0; .byte 0xf2; cmpxchgw %ax,(%ecx)
502	.byte 0xf0; .byte 0xf3; cmpxchgw %ax,(%ecx)
503	xacquire lock xaddw %ax,(%ecx)
504	lock xacquire xaddw %ax,(%ecx)
505	xrelease lock xaddw %ax,(%ecx)
506	lock xrelease xaddw %ax,(%ecx)
507	.byte 0xf0; .byte 0xf2; xaddw %ax,(%ecx)
508	.byte 0xf0; .byte 0xf3; xaddw %ax,(%ecx)
509
510# Tests for op regl regl/m32
511	xacquire lock btcl %eax,(%ecx)
512	lock xacquire btcl %eax,(%ecx)
513	xrelease lock btcl %eax,(%ecx)
514	lock xrelease btcl %eax,(%ecx)
515	.byte 0xf0; .byte 0xf2; btcl %eax,(%ecx)
516	.byte 0xf0; .byte 0xf3; btcl %eax,(%ecx)
517	xacquire lock btrl %eax,(%ecx)
518	lock xacquire btrl %eax,(%ecx)
519	xrelease lock btrl %eax,(%ecx)
520	lock xrelease btrl %eax,(%ecx)
521	.byte 0xf0; .byte 0xf2; btrl %eax,(%ecx)
522	.byte 0xf0; .byte 0xf3; btrl %eax,(%ecx)
523	xacquire lock btsl %eax,(%ecx)
524	lock xacquire btsl %eax,(%ecx)
525	xrelease lock btsl %eax,(%ecx)
526	lock xrelease btsl %eax,(%ecx)
527	.byte 0xf0; .byte 0xf2; btsl %eax,(%ecx)
528	.byte 0xf0; .byte 0xf3; btsl %eax,(%ecx)
529	xacquire lock cmpxchgl %eax,(%ecx)
530	lock xacquire cmpxchgl %eax,(%ecx)
531	xrelease lock cmpxchgl %eax,(%ecx)
532	lock xrelease cmpxchgl %eax,(%ecx)
533	.byte 0xf0; .byte 0xf2; cmpxchgl %eax,(%ecx)
534	.byte 0xf0; .byte 0xf3; cmpxchgl %eax,(%ecx)
535	xacquire lock xaddl %eax,(%ecx)
536	lock xacquire xaddl %eax,(%ecx)
537	xrelease lock xaddl %eax,(%ecx)
538	lock xrelease xaddl %eax,(%ecx)
539	.byte 0xf0; .byte 0xf2; xaddl %eax,(%ecx)
540	.byte 0xf0; .byte 0xf3; xaddl %eax,(%ecx)
541
542# Tests for op regb/m8
543	xacquire lock decb (%ecx)
544	lock xacquire decb (%ecx)
545	xrelease lock decb (%ecx)
546	lock xrelease decb (%ecx)
547	.byte 0xf0; .byte 0xf2; decb (%ecx)
548	.byte 0xf0; .byte 0xf3; decb (%ecx)
549	xacquire lock incb (%ecx)
550	lock xacquire incb (%ecx)
551	xrelease lock incb (%ecx)
552	lock xrelease incb (%ecx)
553	.byte 0xf0; .byte 0xf2; incb (%ecx)
554	.byte 0xf0; .byte 0xf3; incb (%ecx)
555	xacquire lock negb (%ecx)
556	lock xacquire negb (%ecx)
557	xrelease lock negb (%ecx)
558	lock xrelease negb (%ecx)
559	.byte 0xf0; .byte 0xf2; negb (%ecx)
560	.byte 0xf0; .byte 0xf3; negb (%ecx)
561	xacquire lock notb (%ecx)
562	lock xacquire notb (%ecx)
563	xrelease lock notb (%ecx)
564	lock xrelease notb (%ecx)
565	.byte 0xf0; .byte 0xf2; notb (%ecx)
566	.byte 0xf0; .byte 0xf3; notb (%ecx)
567
568# Tests for op regs/m16
569	xacquire lock decw (%ecx)
570	lock xacquire decw (%ecx)
571	xrelease lock decw (%ecx)
572	lock xrelease decw (%ecx)
573	.byte 0xf0; .byte 0xf2; decw (%ecx)
574	.byte 0xf0; .byte 0xf3; decw (%ecx)
575	xacquire lock incw (%ecx)
576	lock xacquire incw (%ecx)
577	xrelease lock incw (%ecx)
578	lock xrelease incw (%ecx)
579	.byte 0xf0; .byte 0xf2; incw (%ecx)
580	.byte 0xf0; .byte 0xf3; incw (%ecx)
581	xacquire lock negw (%ecx)
582	lock xacquire negw (%ecx)
583	xrelease lock negw (%ecx)
584	lock xrelease negw (%ecx)
585	.byte 0xf0; .byte 0xf2; negw (%ecx)
586	.byte 0xf0; .byte 0xf3; negw (%ecx)
587	xacquire lock notw (%ecx)
588	lock xacquire notw (%ecx)
589	xrelease lock notw (%ecx)
590	lock xrelease notw (%ecx)
591	.byte 0xf0; .byte 0xf2; notw (%ecx)
592	.byte 0xf0; .byte 0xf3; notw (%ecx)
593
594# Tests for op regl/m32
595	xacquire lock decl (%ecx)
596	lock xacquire decl (%ecx)
597	xrelease lock decl (%ecx)
598	lock xrelease decl (%ecx)
599	.byte 0xf0; .byte 0xf2; decl (%ecx)
600	.byte 0xf0; .byte 0xf3; decl (%ecx)
601	xacquire lock incl (%ecx)
602	lock xacquire incl (%ecx)
603	xrelease lock incl (%ecx)
604	lock xrelease incl (%ecx)
605	.byte 0xf0; .byte 0xf2; incl (%ecx)
606	.byte 0xf0; .byte 0xf3; incl (%ecx)
607	xacquire lock negl (%ecx)
608	lock xacquire negl (%ecx)
609	xrelease lock negl (%ecx)
610	lock xrelease negl (%ecx)
611	.byte 0xf0; .byte 0xf2; negl (%ecx)
612	.byte 0xf0; .byte 0xf3; negl (%ecx)
613	xacquire lock notl (%ecx)
614	lock xacquire notl (%ecx)
615	xrelease lock notl (%ecx)
616	lock xrelease notl (%ecx)
617	.byte 0xf0; .byte 0xf2; notl (%ecx)
618	.byte 0xf0; .byte 0xf3; notl (%ecx)
619
620# Tests for op m64
621	xacquire lock cmpxchg8bq (%ecx)
622	lock xacquire cmpxchg8bq (%ecx)
623	xrelease lock cmpxchg8bq (%ecx)
624	lock xrelease cmpxchg8bq (%ecx)
625	.byte 0xf0; .byte 0xf2; cmpxchg8bq (%ecx)
626	.byte 0xf0; .byte 0xf3; cmpxchg8bq (%ecx)
627
628# Tests for op regb, regb/m8
629	xacquire lock cmpxchgb %cl,(%ecx)
630	lock xacquire cmpxchgb %cl,(%ecx)
631	xrelease lock cmpxchgb %cl,(%ecx)
632	lock xrelease cmpxchgb %cl,(%ecx)
633	.byte 0xf0; .byte 0xf2; cmpxchgb %cl,(%ecx)
634	.byte 0xf0; .byte 0xf3; cmpxchgb %cl,(%ecx)
635	xacquire lock xaddb %cl,(%ecx)
636	lock xacquire xaddb %cl,(%ecx)
637	xrelease lock xaddb %cl,(%ecx)
638	lock xrelease xaddb %cl,(%ecx)
639	.byte 0xf0; .byte 0xf2; xaddb %cl,(%ecx)
640	.byte 0xf0; .byte 0xf3; xaddb %cl,(%ecx)
641
642	.intel_syntax noprefix
643
644# Tests for op imm8 regb/m8
645	xacquire lock adc BYTE PTR [ecx],100
646	lock xacquire adc BYTE PTR [ecx],100
647	xrelease lock adc BYTE PTR [ecx],100
648	lock xrelease adc BYTE PTR [ecx],100
649	.byte 0xf0; .byte 0xf2; adc BYTE PTR [ecx],100
650	.byte 0xf0; .byte 0xf3; adc BYTE PTR [ecx],100
651	xacquire lock add BYTE PTR [ecx],100
652	lock xacquire add BYTE PTR [ecx],100
653	xrelease lock add BYTE PTR [ecx],100
654	lock xrelease add BYTE PTR [ecx],100
655	.byte 0xf0; .byte 0xf2; add BYTE PTR [ecx],100
656	.byte 0xf0; .byte 0xf3; add BYTE PTR [ecx],100
657	xacquire lock and BYTE PTR [ecx],100
658	lock xacquire and BYTE PTR [ecx],100
659	xrelease lock and BYTE PTR [ecx],100
660	lock xrelease and BYTE PTR [ecx],100
661	.byte 0xf0; .byte 0xf2; and BYTE PTR [ecx],100
662	.byte 0xf0; .byte 0xf3; and BYTE PTR [ecx],100
663	xrelease mov BYTE PTR [ecx],100
664	xacquire lock or BYTE PTR [ecx],100
665	lock xacquire or BYTE PTR [ecx],100
666	xrelease lock or BYTE PTR [ecx],100
667	lock xrelease or BYTE PTR [ecx],100
668	.byte 0xf0; .byte 0xf2; or BYTE PTR [ecx],100
669	.byte 0xf0; .byte 0xf3; or BYTE PTR [ecx],100
670	xacquire lock sbb BYTE PTR [ecx],100
671	lock xacquire sbb BYTE PTR [ecx],100
672	xrelease lock sbb BYTE PTR [ecx],100
673	lock xrelease sbb BYTE PTR [ecx],100
674	.byte 0xf0; .byte 0xf2; sbb BYTE PTR [ecx],100
675	.byte 0xf0; .byte 0xf3; sbb BYTE PTR [ecx],100
676	xacquire lock sub BYTE PTR [ecx],100
677	lock xacquire sub BYTE PTR [ecx],100
678	xrelease lock sub BYTE PTR [ecx],100
679	lock xrelease sub BYTE PTR [ecx],100
680	.byte 0xf0; .byte 0xf2; sub BYTE PTR [ecx],100
681	.byte 0xf0; .byte 0xf3; sub BYTE PTR [ecx],100
682	xacquire lock xor BYTE PTR [ecx],100
683	lock xacquire xor BYTE PTR [ecx],100
684	xrelease lock xor BYTE PTR [ecx],100
685	lock xrelease xor BYTE PTR [ecx],100
686	.byte 0xf0; .byte 0xf2; xor BYTE PTR [ecx],100
687	.byte 0xf0; .byte 0xf3; xor BYTE PTR [ecx],100
688
689# Tests for op imm16 regs/m16
690	xacquire lock adc WORD PTR [ecx],1000
691	lock xacquire adc WORD PTR [ecx],1000
692	xrelease lock adc WORD PTR [ecx],1000
693	lock xrelease adc WORD PTR [ecx],1000
694	.byte 0xf0; .byte 0xf2; adc WORD PTR [ecx],1000
695	.byte 0xf0; .byte 0xf3; adc WORD PTR [ecx],1000
696	xacquire lock add WORD PTR [ecx],1000
697	lock xacquire add WORD PTR [ecx],1000
698	xrelease lock add WORD PTR [ecx],1000
699	lock xrelease add WORD PTR [ecx],1000
700	.byte 0xf0; .byte 0xf2; add WORD PTR [ecx],1000
701	.byte 0xf0; .byte 0xf3; add WORD PTR [ecx],1000
702	xacquire lock and WORD PTR [ecx],1000
703	lock xacquire and WORD PTR [ecx],1000
704	xrelease lock and WORD PTR [ecx],1000
705	lock xrelease and WORD PTR [ecx],1000
706	.byte 0xf0; .byte 0xf2; and WORD PTR [ecx],1000
707	.byte 0xf0; .byte 0xf3; and WORD PTR [ecx],1000
708	xrelease mov WORD PTR [ecx],1000
709	xacquire lock or WORD PTR [ecx],1000
710	lock xacquire or WORD PTR [ecx],1000
711	xrelease lock or WORD PTR [ecx],1000
712	lock xrelease or WORD PTR [ecx],1000
713	.byte 0xf0; .byte 0xf2; or WORD PTR [ecx],1000
714	.byte 0xf0; .byte 0xf3; or WORD PTR [ecx],1000
715	xacquire lock sbb WORD PTR [ecx],1000
716	lock xacquire sbb WORD PTR [ecx],1000
717	xrelease lock sbb WORD PTR [ecx],1000
718	lock xrelease sbb WORD PTR [ecx],1000
719	.byte 0xf0; .byte 0xf2; sbb WORD PTR [ecx],1000
720	.byte 0xf0; .byte 0xf3; sbb WORD PTR [ecx],1000
721	xacquire lock sub WORD PTR [ecx],1000
722	lock xacquire sub WORD PTR [ecx],1000
723	xrelease lock sub WORD PTR [ecx],1000
724	lock xrelease sub WORD PTR [ecx],1000
725	.byte 0xf0; .byte 0xf2; sub WORD PTR [ecx],1000
726	.byte 0xf0; .byte 0xf3; sub WORD PTR [ecx],1000
727	xacquire lock xor WORD PTR [ecx],1000
728	lock xacquire xor WORD PTR [ecx],1000
729	xrelease lock xor WORD PTR [ecx],1000
730	lock xrelease xor WORD PTR [ecx],1000
731	.byte 0xf0; .byte 0xf2; xor WORD PTR [ecx],1000
732	.byte 0xf0; .byte 0xf3; xor WORD PTR [ecx],1000
733
734# Tests for op imm32 regl/m32
735	xacquire lock adc DWORD PTR [ecx],10000000
736	lock xacquire adc DWORD PTR [ecx],10000000
737	xrelease lock adc DWORD PTR [ecx],10000000
738	lock xrelease adc DWORD PTR [ecx],10000000
739	.byte 0xf0; .byte 0xf2; adc DWORD PTR [ecx],10000000
740	.byte 0xf0; .byte 0xf3; adc DWORD PTR [ecx],10000000
741	xacquire lock add DWORD PTR [ecx],10000000
742	lock xacquire add DWORD PTR [ecx],10000000
743	xrelease lock add DWORD PTR [ecx],10000000
744	lock xrelease add DWORD PTR [ecx],10000000
745	.byte 0xf0; .byte 0xf2; add DWORD PTR [ecx],10000000
746	.byte 0xf0; .byte 0xf3; add DWORD PTR [ecx],10000000
747	xacquire lock and DWORD PTR [ecx],10000000
748	lock xacquire and DWORD PTR [ecx],10000000
749	xrelease lock and DWORD PTR [ecx],10000000
750	lock xrelease and DWORD PTR [ecx],10000000
751	.byte 0xf0; .byte 0xf2; and DWORD PTR [ecx],10000000
752	.byte 0xf0; .byte 0xf3; and DWORD PTR [ecx],10000000
753	xrelease mov DWORD PTR [ecx],10000000
754	xacquire lock or DWORD PTR [ecx],10000000
755	lock xacquire or DWORD PTR [ecx],10000000
756	xrelease lock or DWORD PTR [ecx],10000000
757	lock xrelease or DWORD PTR [ecx],10000000
758	.byte 0xf0; .byte 0xf2; or DWORD PTR [ecx],10000000
759	.byte 0xf0; .byte 0xf3; or DWORD PTR [ecx],10000000
760	xacquire lock sbb DWORD PTR [ecx],10000000
761	lock xacquire sbb DWORD PTR [ecx],10000000
762	xrelease lock sbb DWORD PTR [ecx],10000000
763	lock xrelease sbb DWORD PTR [ecx],10000000
764	.byte 0xf0; .byte 0xf2; sbb DWORD PTR [ecx],10000000
765	.byte 0xf0; .byte 0xf3; sbb DWORD PTR [ecx],10000000
766	xacquire lock sub DWORD PTR [ecx],10000000
767	lock xacquire sub DWORD PTR [ecx],10000000
768	xrelease lock sub DWORD PTR [ecx],10000000
769	lock xrelease sub DWORD PTR [ecx],10000000
770	.byte 0xf0; .byte 0xf2; sub DWORD PTR [ecx],10000000
771	.byte 0xf0; .byte 0xf3; sub DWORD PTR [ecx],10000000
772	xacquire lock xor DWORD PTR [ecx],10000000
773	lock xacquire xor DWORD PTR [ecx],10000000
774	xrelease lock xor DWORD PTR [ecx],10000000
775	lock xrelease xor DWORD PTR [ecx],10000000
776	.byte 0xf0; .byte 0xf2; xor DWORD PTR [ecx],10000000
777	.byte 0xf0; .byte 0xf3; xor DWORD PTR [ecx],10000000
778
779# Tests for op imm8 regs/m16
780	xacquire lock adc WORD PTR [ecx],100
781	lock xacquire adc WORD PTR [ecx],100
782	xrelease lock adc WORD PTR [ecx],100
783	lock xrelease adc WORD PTR [ecx],100
784	.byte 0xf0; .byte 0xf2; adc WORD PTR [ecx],100
785	.byte 0xf0; .byte 0xf3; adc WORD PTR [ecx],100
786	xacquire lock add WORD PTR [ecx],100
787	lock xacquire add WORD PTR [ecx],100
788	xrelease lock add WORD PTR [ecx],100
789	lock xrelease add WORD PTR [ecx],100
790	.byte 0xf0; .byte 0xf2; add WORD PTR [ecx],100
791	.byte 0xf0; .byte 0xf3; add WORD PTR [ecx],100
792	xacquire lock and WORD PTR [ecx],100
793	lock xacquire and WORD PTR [ecx],100
794	xrelease lock and WORD PTR [ecx],100
795	lock xrelease and WORD PTR [ecx],100
796	.byte 0xf0; .byte 0xf2; and WORD PTR [ecx],100
797	.byte 0xf0; .byte 0xf3; and WORD PTR [ecx],100
798	xacquire lock btc WORD PTR [ecx],100
799	lock xacquire btc WORD PTR [ecx],100
800	xrelease lock btc WORD PTR [ecx],100
801	lock xrelease btc WORD PTR [ecx],100
802	.byte 0xf0; .byte 0xf2; btc WORD PTR [ecx],100
803	.byte 0xf0; .byte 0xf3; btc WORD PTR [ecx],100
804	xacquire lock btr WORD PTR [ecx],100
805	lock xacquire btr WORD PTR [ecx],100
806	xrelease lock btr WORD PTR [ecx],100
807	lock xrelease btr WORD PTR [ecx],100
808	.byte 0xf0; .byte 0xf2; btr WORD PTR [ecx],100
809	.byte 0xf0; .byte 0xf3; btr WORD PTR [ecx],100
810	xacquire lock bts WORD PTR [ecx],100
811	lock xacquire bts WORD PTR [ecx],100
812	xrelease lock bts WORD PTR [ecx],100
813	lock xrelease bts WORD PTR [ecx],100
814	.byte 0xf0; .byte 0xf2; bts WORD PTR [ecx],100
815	.byte 0xf0; .byte 0xf3; bts WORD PTR [ecx],100
816	xrelease mov WORD PTR [ecx],100
817	xacquire lock or WORD PTR [ecx],100
818	lock xacquire or WORD PTR [ecx],100
819	xrelease lock or WORD PTR [ecx],100
820	lock xrelease or WORD PTR [ecx],100
821	.byte 0xf0; .byte 0xf2; or WORD PTR [ecx],100
822	.byte 0xf0; .byte 0xf3; or WORD PTR [ecx],100
823	xacquire lock sbb WORD PTR [ecx],100
824	lock xacquire sbb WORD PTR [ecx],100
825	xrelease lock sbb WORD PTR [ecx],100
826	lock xrelease sbb WORD PTR [ecx],100
827	.byte 0xf0; .byte 0xf2; sbb WORD PTR [ecx],100
828	.byte 0xf0; .byte 0xf3; sbb WORD PTR [ecx],100
829	xacquire lock sub WORD PTR [ecx],100
830	lock xacquire sub WORD PTR [ecx],100
831	xrelease lock sub WORD PTR [ecx],100
832	lock xrelease sub WORD PTR [ecx],100
833	.byte 0xf0; .byte 0xf2; sub WORD PTR [ecx],100
834	.byte 0xf0; .byte 0xf3; sub WORD PTR [ecx],100
835	xacquire lock xor WORD PTR [ecx],100
836	lock xacquire xor WORD PTR [ecx],100
837	xrelease lock xor WORD PTR [ecx],100
838	lock xrelease xor WORD PTR [ecx],100
839	.byte 0xf0; .byte 0xf2; xor WORD PTR [ecx],100
840	.byte 0xf0; .byte 0xf3; xor WORD PTR [ecx],100
841
842# Tests for op imm8 regl/m32
843	xacquire lock adc DWORD PTR [ecx],100
844	lock xacquire adc DWORD PTR [ecx],100
845	xrelease lock adc DWORD PTR [ecx],100
846	lock xrelease adc DWORD PTR [ecx],100
847	.byte 0xf0; .byte 0xf2; adc DWORD PTR [ecx],100
848	.byte 0xf0; .byte 0xf3; adc DWORD PTR [ecx],100
849	xacquire lock add DWORD PTR [ecx],100
850	lock xacquire add DWORD PTR [ecx],100
851	xrelease lock add DWORD PTR [ecx],100
852	lock xrelease add DWORD PTR [ecx],100
853	.byte 0xf0; .byte 0xf2; add DWORD PTR [ecx],100
854	.byte 0xf0; .byte 0xf3; add DWORD PTR [ecx],100
855	xacquire lock and DWORD PTR [ecx],100
856	lock xacquire and DWORD PTR [ecx],100
857	xrelease lock and DWORD PTR [ecx],100
858	lock xrelease and DWORD PTR [ecx],100
859	.byte 0xf0; .byte 0xf2; and DWORD PTR [ecx],100
860	.byte 0xf0; .byte 0xf3; and DWORD PTR [ecx],100
861	xacquire lock btc DWORD PTR [ecx],100
862	lock xacquire btc DWORD PTR [ecx],100
863	xrelease lock btc DWORD PTR [ecx],100
864	lock xrelease btc DWORD PTR [ecx],100
865	.byte 0xf0; .byte 0xf2; btc DWORD PTR [ecx],100
866	.byte 0xf0; .byte 0xf3; btc DWORD PTR [ecx],100
867	xacquire lock btr DWORD PTR [ecx],100
868	lock xacquire btr DWORD PTR [ecx],100
869	xrelease lock btr DWORD PTR [ecx],100
870	lock xrelease btr DWORD PTR [ecx],100
871	.byte 0xf0; .byte 0xf2; btr DWORD PTR [ecx],100
872	.byte 0xf0; .byte 0xf3; btr DWORD PTR [ecx],100
873	xacquire lock bts DWORD PTR [ecx],100
874	lock xacquire bts DWORD PTR [ecx],100
875	xrelease lock bts DWORD PTR [ecx],100
876	lock xrelease bts DWORD PTR [ecx],100
877	.byte 0xf0; .byte 0xf2; bts DWORD PTR [ecx],100
878	.byte 0xf0; .byte 0xf3; bts DWORD PTR [ecx],100
879	xrelease mov DWORD PTR [ecx],100
880	xacquire lock or DWORD PTR [ecx],100
881	lock xacquire or DWORD PTR [ecx],100
882	xrelease lock or DWORD PTR [ecx],100
883	lock xrelease or DWORD PTR [ecx],100
884	.byte 0xf0; .byte 0xf2; or DWORD PTR [ecx],100
885	.byte 0xf0; .byte 0xf3; or DWORD PTR [ecx],100
886	xacquire lock sbb DWORD PTR [ecx],100
887	lock xacquire sbb DWORD PTR [ecx],100
888	xrelease lock sbb DWORD PTR [ecx],100
889	lock xrelease sbb DWORD PTR [ecx],100
890	.byte 0xf0; .byte 0xf2; sbb DWORD PTR [ecx],100
891	.byte 0xf0; .byte 0xf3; sbb DWORD PTR [ecx],100
892	xacquire lock sub DWORD PTR [ecx],100
893	lock xacquire sub DWORD PTR [ecx],100
894	xrelease lock sub DWORD PTR [ecx],100
895	lock xrelease sub DWORD PTR [ecx],100
896	.byte 0xf0; .byte 0xf2; sub DWORD PTR [ecx],100
897	.byte 0xf0; .byte 0xf3; sub DWORD PTR [ecx],100
898	xacquire lock xor DWORD PTR [ecx],100
899	lock xacquire xor DWORD PTR [ecx],100
900	xrelease lock xor DWORD PTR [ecx],100
901	lock xrelease xor DWORD PTR [ecx],100
902	.byte 0xf0; .byte 0xf2; xor DWORD PTR [ecx],100
903	.byte 0xf0; .byte 0xf3; xor DWORD PTR [ecx],100
904
905# Tests for op imm8 regb/m8
906	xacquire lock adc BYTE PTR [ecx],100
907	lock xacquire adc BYTE PTR [ecx],100
908	xrelease lock adc BYTE PTR [ecx],100
909	lock xrelease adc BYTE PTR [ecx],100
910	.byte 0xf0; .byte 0xf2; adc BYTE PTR [ecx],100
911	.byte 0xf0; .byte 0xf3; adc BYTE PTR [ecx],100
912	xacquire lock add BYTE PTR [ecx],100
913	lock xacquire add BYTE PTR [ecx],100
914	xrelease lock add BYTE PTR [ecx],100
915	lock xrelease add BYTE PTR [ecx],100
916	.byte 0xf0; .byte 0xf2; add BYTE PTR [ecx],100
917	.byte 0xf0; .byte 0xf3; add BYTE PTR [ecx],100
918	xacquire lock and BYTE PTR [ecx],100
919	lock xacquire and BYTE PTR [ecx],100
920	xrelease lock and BYTE PTR [ecx],100
921	lock xrelease and BYTE PTR [ecx],100
922	.byte 0xf0; .byte 0xf2; and BYTE PTR [ecx],100
923	.byte 0xf0; .byte 0xf3; and BYTE PTR [ecx],100
924	xrelease mov BYTE PTR [ecx],100
925	xacquire lock or BYTE PTR [ecx],100
926	lock xacquire or BYTE PTR [ecx],100
927	xrelease lock or BYTE PTR [ecx],100
928	lock xrelease or BYTE PTR [ecx],100
929	.byte 0xf0; .byte 0xf2; or BYTE PTR [ecx],100
930	.byte 0xf0; .byte 0xf3; or BYTE PTR [ecx],100
931	xacquire lock sbb BYTE PTR [ecx],100
932	lock xacquire sbb BYTE PTR [ecx],100
933	xrelease lock sbb BYTE PTR [ecx],100
934	lock xrelease sbb BYTE PTR [ecx],100
935	.byte 0xf0; .byte 0xf2; sbb BYTE PTR [ecx],100
936	.byte 0xf0; .byte 0xf3; sbb BYTE PTR [ecx],100
937	xacquire lock sub BYTE PTR [ecx],100
938	lock xacquire sub BYTE PTR [ecx],100
939	xrelease lock sub BYTE PTR [ecx],100
940	lock xrelease sub BYTE PTR [ecx],100
941	.byte 0xf0; .byte 0xf2; sub BYTE PTR [ecx],100
942	.byte 0xf0; .byte 0xf3; sub BYTE PTR [ecx],100
943	xacquire lock xor BYTE PTR [ecx],100
944	lock xacquire xor BYTE PTR [ecx],100
945	xrelease lock xor BYTE PTR [ecx],100
946	lock xrelease xor BYTE PTR [ecx],100
947	.byte 0xf0; .byte 0xf2; xor BYTE PTR [ecx],100
948	.byte 0xf0; .byte 0xf3; xor BYTE PTR [ecx],100
949
950# Tests for op regb regb/m8
951# Tests for op regb/m8 regb
952	xacquire lock adc BYTE PTR [ecx],al
953	lock xacquire adc BYTE PTR [ecx],al
954	xrelease lock adc BYTE PTR [ecx],al
955	lock xrelease adc BYTE PTR [ecx],al
956	.byte 0xf0; .byte 0xf2; adc BYTE PTR [ecx],al
957	.byte 0xf0; .byte 0xf3; adc BYTE PTR [ecx],al
958	xacquire lock add BYTE PTR [ecx],al
959	lock xacquire add BYTE PTR [ecx],al
960	xrelease lock add BYTE PTR [ecx],al
961	lock xrelease add BYTE PTR [ecx],al
962	.byte 0xf0; .byte 0xf2; add BYTE PTR [ecx],al
963	.byte 0xf0; .byte 0xf3; add BYTE PTR [ecx],al
964	xacquire lock and BYTE PTR [ecx],al
965	lock xacquire and BYTE PTR [ecx],al
966	xrelease lock and BYTE PTR [ecx],al
967	lock xrelease and BYTE PTR [ecx],al
968	.byte 0xf0; .byte 0xf2; and BYTE PTR [ecx],al
969	.byte 0xf0; .byte 0xf3; and BYTE PTR [ecx],al
970	xrelease mov BYTE PTR [ecx],al
971	xacquire lock or BYTE PTR [ecx],al
972	lock xacquire or BYTE PTR [ecx],al
973	xrelease lock or BYTE PTR [ecx],al
974	lock xrelease or BYTE PTR [ecx],al
975	.byte 0xf0; .byte 0xf2; or BYTE PTR [ecx],al
976	.byte 0xf0; .byte 0xf3; or BYTE PTR [ecx],al
977	xacquire lock sbb BYTE PTR [ecx],al
978	lock xacquire sbb BYTE PTR [ecx],al
979	xrelease lock sbb BYTE PTR [ecx],al
980	lock xrelease sbb BYTE PTR [ecx],al
981	.byte 0xf0; .byte 0xf2; sbb BYTE PTR [ecx],al
982	.byte 0xf0; .byte 0xf3; sbb BYTE PTR [ecx],al
983	xacquire lock sub BYTE PTR [ecx],al
984	lock xacquire sub BYTE PTR [ecx],al
985	xrelease lock sub BYTE PTR [ecx],al
986	lock xrelease sub BYTE PTR [ecx],al
987	.byte 0xf0; .byte 0xf2; sub BYTE PTR [ecx],al
988	.byte 0xf0; .byte 0xf3; sub BYTE PTR [ecx],al
989	xacquire lock xchg BYTE PTR [ecx],al
990	lock xacquire xchg BYTE PTR [ecx],al
991	xacquire xchg BYTE PTR [ecx],al
992	xrelease lock xchg BYTE PTR [ecx],al
993	lock xrelease xchg BYTE PTR [ecx],al
994	xrelease xchg BYTE PTR [ecx],al
995	.byte 0xf0; .byte 0xf2; xchg BYTE PTR [ecx],al
996	.byte 0xf0; .byte 0xf3; xchg BYTE PTR [ecx],al
997	xacquire lock xor BYTE PTR [ecx],al
998	lock xacquire xor BYTE PTR [ecx],al
999	xrelease lock xor BYTE PTR [ecx],al
1000	lock xrelease xor BYTE PTR [ecx],al
1001	.byte 0xf0; .byte 0xf2; xor BYTE PTR [ecx],al
1002	.byte 0xf0; .byte 0xf3; xor BYTE PTR [ecx],al
1003
1004# Tests for op regs regs/m16
1005# Tests for op regs/m16 regs
1006	xacquire lock adc WORD PTR [ecx],ax
1007	lock xacquire adc WORD PTR [ecx],ax
1008	xrelease lock adc WORD PTR [ecx],ax
1009	lock xrelease adc WORD PTR [ecx],ax
1010	.byte 0xf0; .byte 0xf2; adc WORD PTR [ecx],ax
1011	.byte 0xf0; .byte 0xf3; adc WORD PTR [ecx],ax
1012	xacquire lock add WORD PTR [ecx],ax
1013	lock xacquire add WORD PTR [ecx],ax
1014	xrelease lock add WORD PTR [ecx],ax
1015	lock xrelease add WORD PTR [ecx],ax
1016	.byte 0xf0; .byte 0xf2; add WORD PTR [ecx],ax
1017	.byte 0xf0; .byte 0xf3; add WORD PTR [ecx],ax
1018	xacquire lock and WORD PTR [ecx],ax
1019	lock xacquire and WORD PTR [ecx],ax
1020	xrelease lock and WORD PTR [ecx],ax
1021	lock xrelease and WORD PTR [ecx],ax
1022	.byte 0xf0; .byte 0xf2; and WORD PTR [ecx],ax
1023	.byte 0xf0; .byte 0xf3; and WORD PTR [ecx],ax
1024	xrelease mov WORD PTR [ecx],ax
1025	xacquire lock or WORD PTR [ecx],ax
1026	lock xacquire or WORD PTR [ecx],ax
1027	xrelease lock or WORD PTR [ecx],ax
1028	lock xrelease or WORD PTR [ecx],ax
1029	.byte 0xf0; .byte 0xf2; or WORD PTR [ecx],ax
1030	.byte 0xf0; .byte 0xf3; or WORD PTR [ecx],ax
1031	xacquire lock sbb WORD PTR [ecx],ax
1032	lock xacquire sbb WORD PTR [ecx],ax
1033	xrelease lock sbb WORD PTR [ecx],ax
1034	lock xrelease sbb WORD PTR [ecx],ax
1035	.byte 0xf0; .byte 0xf2; sbb WORD PTR [ecx],ax
1036	.byte 0xf0; .byte 0xf3; sbb WORD PTR [ecx],ax
1037	xacquire lock sub WORD PTR [ecx],ax
1038	lock xacquire sub WORD PTR [ecx],ax
1039	xrelease lock sub WORD PTR [ecx],ax
1040	lock xrelease sub WORD PTR [ecx],ax
1041	.byte 0xf0; .byte 0xf2; sub WORD PTR [ecx],ax
1042	.byte 0xf0; .byte 0xf3; sub WORD PTR [ecx],ax
1043	xacquire lock xchg WORD PTR [ecx],ax
1044	lock xacquire xchg WORD PTR [ecx],ax
1045	xacquire xchg WORD PTR [ecx],ax
1046	xrelease lock xchg WORD PTR [ecx],ax
1047	lock xrelease xchg WORD PTR [ecx],ax
1048	xrelease xchg WORD PTR [ecx],ax
1049	.byte 0xf0; .byte 0xf2; xchg WORD PTR [ecx],ax
1050	.byte 0xf0; .byte 0xf3; xchg WORD PTR [ecx],ax
1051	xacquire lock xor WORD PTR [ecx],ax
1052	lock xacquire xor WORD PTR [ecx],ax
1053	xrelease lock xor WORD PTR [ecx],ax
1054	lock xrelease xor WORD PTR [ecx],ax
1055	.byte 0xf0; .byte 0xf2; xor WORD PTR [ecx],ax
1056	.byte 0xf0; .byte 0xf3; xor WORD PTR [ecx],ax
1057
1058# Tests for op regl regl/m32
1059# Tests for op regl/m32 regl
1060	xacquire lock adc DWORD PTR [ecx],eax
1061	lock xacquire adc DWORD PTR [ecx],eax
1062	xrelease lock adc DWORD PTR [ecx],eax
1063	lock xrelease adc DWORD PTR [ecx],eax
1064	.byte 0xf0; .byte 0xf2; adc DWORD PTR [ecx],eax
1065	.byte 0xf0; .byte 0xf3; adc DWORD PTR [ecx],eax
1066	xacquire lock add DWORD PTR [ecx],eax
1067	lock xacquire add DWORD PTR [ecx],eax
1068	xrelease lock add DWORD PTR [ecx],eax
1069	lock xrelease add DWORD PTR [ecx],eax
1070	.byte 0xf0; .byte 0xf2; add DWORD PTR [ecx],eax
1071	.byte 0xf0; .byte 0xf3; add DWORD PTR [ecx],eax
1072	xacquire lock and DWORD PTR [ecx],eax
1073	lock xacquire and DWORD PTR [ecx],eax
1074	xrelease lock and DWORD PTR [ecx],eax
1075	lock xrelease and DWORD PTR [ecx],eax
1076	.byte 0xf0; .byte 0xf2; and DWORD PTR [ecx],eax
1077	.byte 0xf0; .byte 0xf3; and DWORD PTR [ecx],eax
1078	xrelease mov DWORD PTR [ecx],eax
1079	xacquire lock or DWORD PTR [ecx],eax
1080	lock xacquire or DWORD PTR [ecx],eax
1081	xrelease lock or DWORD PTR [ecx],eax
1082	lock xrelease or DWORD PTR [ecx],eax
1083	.byte 0xf0; .byte 0xf2; or DWORD PTR [ecx],eax
1084	.byte 0xf0; .byte 0xf3; or DWORD PTR [ecx],eax
1085	xacquire lock sbb DWORD PTR [ecx],eax
1086	lock xacquire sbb DWORD PTR [ecx],eax
1087	xrelease lock sbb DWORD PTR [ecx],eax
1088	lock xrelease sbb DWORD PTR [ecx],eax
1089	.byte 0xf0; .byte 0xf2; sbb DWORD PTR [ecx],eax
1090	.byte 0xf0; .byte 0xf3; sbb DWORD PTR [ecx],eax
1091	xacquire lock sub DWORD PTR [ecx],eax
1092	lock xacquire sub DWORD PTR [ecx],eax
1093	xrelease lock sub DWORD PTR [ecx],eax
1094	lock xrelease sub DWORD PTR [ecx],eax
1095	.byte 0xf0; .byte 0xf2; sub DWORD PTR [ecx],eax
1096	.byte 0xf0; .byte 0xf3; sub DWORD PTR [ecx],eax
1097	xacquire lock xchg DWORD PTR [ecx],eax
1098	lock xacquire xchg DWORD PTR [ecx],eax
1099	xacquire xchg DWORD PTR [ecx],eax
1100	xrelease lock xchg DWORD PTR [ecx],eax
1101	lock xrelease xchg DWORD PTR [ecx],eax
1102	xrelease xchg DWORD PTR [ecx],eax
1103	.byte 0xf0; .byte 0xf2; xchg DWORD PTR [ecx],eax
1104	.byte 0xf0; .byte 0xf3; xchg DWORD PTR [ecx],eax
1105	xacquire lock xor DWORD PTR [ecx],eax
1106	lock xacquire xor DWORD PTR [ecx],eax
1107	xrelease lock xor DWORD PTR [ecx],eax
1108	lock xrelease xor DWORD PTR [ecx],eax
1109	.byte 0xf0; .byte 0xf2; xor DWORD PTR [ecx],eax
1110	.byte 0xf0; .byte 0xf3; xor DWORD PTR [ecx],eax
1111
1112# Tests for op regs, regs/m16
1113	xacquire lock btc WORD PTR [ecx],ax
1114	lock xacquire btc WORD PTR [ecx],ax
1115	xrelease lock btc WORD PTR [ecx],ax
1116	lock xrelease btc WORD PTR [ecx],ax
1117	.byte 0xf0; .byte 0xf2; btc WORD PTR [ecx],ax
1118	.byte 0xf0; .byte 0xf3; btc WORD PTR [ecx],ax
1119	xacquire lock btr WORD PTR [ecx],ax
1120	lock xacquire btr WORD PTR [ecx],ax
1121	xrelease lock btr WORD PTR [ecx],ax
1122	lock xrelease btr WORD PTR [ecx],ax
1123	.byte 0xf0; .byte 0xf2; btr WORD PTR [ecx],ax
1124	.byte 0xf0; .byte 0xf3; btr WORD PTR [ecx],ax
1125	xacquire lock bts WORD PTR [ecx],ax
1126	lock xacquire bts WORD PTR [ecx],ax
1127	xrelease lock bts WORD PTR [ecx],ax
1128	lock xrelease bts WORD PTR [ecx],ax
1129	.byte 0xf0; .byte 0xf2; bts WORD PTR [ecx],ax
1130	.byte 0xf0; .byte 0xf3; bts WORD PTR [ecx],ax
1131	xacquire lock cmpxchg WORD PTR [ecx],ax
1132	lock xacquire cmpxchg WORD PTR [ecx],ax
1133	xrelease lock cmpxchg WORD PTR [ecx],ax
1134	lock xrelease cmpxchg WORD PTR [ecx],ax
1135	.byte 0xf0; .byte 0xf2; cmpxchg WORD PTR [ecx],ax
1136	.byte 0xf0; .byte 0xf3; cmpxchg WORD PTR [ecx],ax
1137	xacquire lock xadd WORD PTR [ecx],ax
1138	lock xacquire xadd WORD PTR [ecx],ax
1139	xrelease lock xadd WORD PTR [ecx],ax
1140	lock xrelease xadd WORD PTR [ecx],ax
1141	.byte 0xf0; .byte 0xf2; xadd WORD PTR [ecx],ax
1142	.byte 0xf0; .byte 0xf3; xadd WORD PTR [ecx],ax
1143
1144# Tests for op regl regl/m32
1145	xacquire lock btc DWORD PTR [ecx],eax
1146	lock xacquire btc DWORD PTR [ecx],eax
1147	xrelease lock btc DWORD PTR [ecx],eax
1148	lock xrelease btc DWORD PTR [ecx],eax
1149	.byte 0xf0; .byte 0xf2; btc DWORD PTR [ecx],eax
1150	.byte 0xf0; .byte 0xf3; btc DWORD PTR [ecx],eax
1151	xacquire lock btr DWORD PTR [ecx],eax
1152	lock xacquire btr DWORD PTR [ecx],eax
1153	xrelease lock btr DWORD PTR [ecx],eax
1154	lock xrelease btr DWORD PTR [ecx],eax
1155	.byte 0xf0; .byte 0xf2; btr DWORD PTR [ecx],eax
1156	.byte 0xf0; .byte 0xf3; btr DWORD PTR [ecx],eax
1157	xacquire lock bts DWORD PTR [ecx],eax
1158	lock xacquire bts DWORD PTR [ecx],eax
1159	xrelease lock bts DWORD PTR [ecx],eax
1160	lock xrelease bts DWORD PTR [ecx],eax
1161	.byte 0xf0; .byte 0xf2; bts DWORD PTR [ecx],eax
1162	.byte 0xf0; .byte 0xf3; bts DWORD PTR [ecx],eax
1163	xacquire lock cmpxchg DWORD PTR [ecx],eax
1164	lock xacquire cmpxchg DWORD PTR [ecx],eax
1165	xrelease lock cmpxchg DWORD PTR [ecx],eax
1166	lock xrelease cmpxchg DWORD PTR [ecx],eax
1167	.byte 0xf0; .byte 0xf2; cmpxchg DWORD PTR [ecx],eax
1168	.byte 0xf0; .byte 0xf3; cmpxchg DWORD PTR [ecx],eax
1169	xacquire lock xadd DWORD PTR [ecx],eax
1170	lock xacquire xadd DWORD PTR [ecx],eax
1171	xrelease lock xadd DWORD PTR [ecx],eax
1172	lock xrelease xadd DWORD PTR [ecx],eax
1173	.byte 0xf0; .byte 0xf2; xadd DWORD PTR [ecx],eax
1174	.byte 0xf0; .byte 0xf3; xadd DWORD PTR [ecx],eax
1175
1176# Tests for op regb/m8
1177	xacquire lock dec BYTE PTR [ecx]
1178	lock xacquire dec BYTE PTR [ecx]
1179	xrelease lock dec BYTE PTR [ecx]
1180	lock xrelease dec BYTE PTR [ecx]
1181	.byte 0xf0; .byte 0xf2; dec BYTE PTR [ecx]
1182	.byte 0xf0; .byte 0xf3; dec BYTE PTR [ecx]
1183	xacquire lock inc BYTE PTR [ecx]
1184	lock xacquire inc BYTE PTR [ecx]
1185	xrelease lock inc BYTE PTR [ecx]
1186	lock xrelease inc BYTE PTR [ecx]
1187	.byte 0xf0; .byte 0xf2; inc BYTE PTR [ecx]
1188	.byte 0xf0; .byte 0xf3; inc BYTE PTR [ecx]
1189	xacquire lock neg BYTE PTR [ecx]
1190	lock xacquire neg BYTE PTR [ecx]
1191	xrelease lock neg BYTE PTR [ecx]
1192	lock xrelease neg BYTE PTR [ecx]
1193	.byte 0xf0; .byte 0xf2; neg BYTE PTR [ecx]
1194	.byte 0xf0; .byte 0xf3; neg BYTE PTR [ecx]
1195	xacquire lock not BYTE PTR [ecx]
1196	lock xacquire not BYTE PTR [ecx]
1197	xrelease lock not BYTE PTR [ecx]
1198	lock xrelease not BYTE PTR [ecx]
1199	.byte 0xf0; .byte 0xf2; not BYTE PTR [ecx]
1200	.byte 0xf0; .byte 0xf3; not BYTE PTR [ecx]
1201
1202# Tests for op regs/m16
1203	xacquire lock dec WORD PTR [ecx]
1204	lock xacquire dec WORD PTR [ecx]
1205	xrelease lock dec WORD PTR [ecx]
1206	lock xrelease dec WORD PTR [ecx]
1207	.byte 0xf0; .byte 0xf2; dec WORD PTR [ecx]
1208	.byte 0xf0; .byte 0xf3; dec WORD PTR [ecx]
1209	xacquire lock inc WORD PTR [ecx]
1210	lock xacquire inc WORD PTR [ecx]
1211	xrelease lock inc WORD PTR [ecx]
1212	lock xrelease inc WORD PTR [ecx]
1213	.byte 0xf0; .byte 0xf2; inc WORD PTR [ecx]
1214	.byte 0xf0; .byte 0xf3; inc WORD PTR [ecx]
1215	xacquire lock neg WORD PTR [ecx]
1216	lock xacquire neg WORD PTR [ecx]
1217	xrelease lock neg WORD PTR [ecx]
1218	lock xrelease neg WORD PTR [ecx]
1219	.byte 0xf0; .byte 0xf2; neg WORD PTR [ecx]
1220	.byte 0xf0; .byte 0xf3; neg WORD PTR [ecx]
1221	xacquire lock not WORD PTR [ecx]
1222	lock xacquire not WORD PTR [ecx]
1223	xrelease lock not WORD PTR [ecx]
1224	lock xrelease not WORD PTR [ecx]
1225	.byte 0xf0; .byte 0xf2; not WORD PTR [ecx]
1226	.byte 0xf0; .byte 0xf3; not WORD PTR [ecx]
1227
1228# Tests for op regl/m32
1229	xacquire lock dec DWORD PTR [ecx]
1230	lock xacquire dec DWORD PTR [ecx]
1231	xrelease lock dec DWORD PTR [ecx]
1232	lock xrelease dec DWORD PTR [ecx]
1233	.byte 0xf0; .byte 0xf2; dec DWORD PTR [ecx]
1234	.byte 0xf0; .byte 0xf3; dec DWORD PTR [ecx]
1235	xacquire lock inc DWORD PTR [ecx]
1236	lock xacquire inc DWORD PTR [ecx]
1237	xrelease lock inc DWORD PTR [ecx]
1238	lock xrelease inc DWORD PTR [ecx]
1239	.byte 0xf0; .byte 0xf2; inc DWORD PTR [ecx]
1240	.byte 0xf0; .byte 0xf3; inc DWORD PTR [ecx]
1241	xacquire lock neg DWORD PTR [ecx]
1242	lock xacquire neg DWORD PTR [ecx]
1243	xrelease lock neg DWORD PTR [ecx]
1244	lock xrelease neg DWORD PTR [ecx]
1245	.byte 0xf0; .byte 0xf2; neg DWORD PTR [ecx]
1246	.byte 0xf0; .byte 0xf3; neg DWORD PTR [ecx]
1247	xacquire lock not DWORD PTR [ecx]
1248	lock xacquire not DWORD PTR [ecx]
1249	xrelease lock not DWORD PTR [ecx]
1250	lock xrelease not DWORD PTR [ecx]
1251	.byte 0xf0; .byte 0xf2; not DWORD PTR [ecx]
1252	.byte 0xf0; .byte 0xf3; not DWORD PTR [ecx]
1253
1254# Tests for op m64
1255	xacquire lock cmpxchg8b QWORD PTR [ecx]
1256	lock xacquire cmpxchg8b QWORD PTR [ecx]
1257	xrelease lock cmpxchg8b QWORD PTR [ecx]
1258	lock xrelease cmpxchg8b QWORD PTR [ecx]
1259	.byte 0xf0; .byte 0xf2; cmpxchg8b QWORD PTR [ecx]
1260	.byte 0xf0; .byte 0xf3; cmpxchg8b QWORD PTR [ecx]
1261
1262# Tests for op regb, regb/m8
1263	xacquire lock cmpxchg BYTE PTR [ecx],cl
1264	lock xacquire cmpxchg BYTE PTR [ecx],cl
1265	xrelease lock cmpxchg BYTE PTR [ecx],cl
1266	lock xrelease cmpxchg BYTE PTR [ecx],cl
1267	.byte 0xf0; .byte 0xf2; cmpxchg BYTE PTR [ecx],cl
1268	.byte 0xf0; .byte 0xf3; cmpxchg BYTE PTR [ecx],cl
1269	xacquire lock xadd BYTE PTR [ecx],cl
1270	lock xacquire xadd BYTE PTR [ecx],cl
1271	xrelease lock xadd BYTE PTR [ecx],cl
1272	lock xrelease xadd BYTE PTR [ecx],cl
1273	.byte 0xf0; .byte 0xf2; xadd BYTE PTR [ecx],cl
1274	.byte 0xf0; .byte 0xf3; xadd BYTE PTR [ecx],cl
1275