~ubuntu-branches/ubuntu/utopic/binutils-arm64-cross/utopic

« back to all changes in this revision

Viewing changes to binutils-2.23.52.20130611/gas/testsuite/gas/i386/hle.s

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2013-06-20 17:38:09 UTC
  • Revision ID: package-import@ubuntu.com-20130620173809-app8lzgvymy5fg6c
Tags: 0.7
Build-depend on binutils-source (>= 2.23.52.20130620-1~).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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