1 // RUN
: llvm-mc
-triple x86_64-unknown-unknown
-x86-asm-syntax
=intel
%s
> %t 2> %t.err
2 // RUN
: FileCheck
< %t %s
3 // RUN
: FileCheck
--check-prefix
=CHECK-STDERR
< %t.err
%s
16 // CHECK
: leaq _foo
(%rbx
,%rax
,8), %rdx
17 lea RDX
, [8 * RAX
+ RBX
+ _foo
]
18 // CHECK
: leaq _foo
(%rbx
,%rax
,8), %rdx
19 lea RDX
, [_foo
+ 8 * RAX
+ RBX
]
20 // CHECK
: leaq
8(%rcx
,%rax
,8), %rdx
21 lea RDX
, [8 + RAX
* 8 + RCX
]
22 // CHECK
: leaq
8(%rcx
,%rax
,8), %rdx
23 lea RDX
, [number
+ 8 * RAX
+ RCX
]
24 // CHECK
: leaq _foo
(,%rax
,8), %rdx
25 lea RDX
, [_foo
+ RAX
* 8]
26 // CHECK
: leaq _foo
(%rbx
,%rax
,8), %rdx
27 lea RDX
, [_foo
+ RAX
* 8 + RBX
]
28 // CHECK
: leaq
-8(%rax
), %rdx
29 lea RDX
, [RAX
- number
]
30 // CHECK
: leaq
-8(%rax
), %rdx
32 // CHECK
: leaq _foo
(%rax
), %rdx
34 // CHECK
: leaq
8(%rax
), %rdx
35 lea RDX
, [RAX
+ number
]
36 // CHECK
: leaq
8(%rax
), %rdx
38 // CHECK
: leaq _foo
(%rbx
,%rax
,8), %rdx
39 lea RDX
, [RAX
* number
+ RBX
+ _foo
]
40 // CHECK
: leaq _foo
(%rbx
,%rax
,8), %rdx
41 lea RDX
, [_foo
+ RAX
* number
+ RBX
]
42 // CHECK
: leaq
8(%rcx
,%rax
,8), %rdx
43 lea RDX
, [number
+ RAX
* number
+ RCX
]
44 // CHECK
: leaq _foo
(,%rax
,8), %rdx
45 lea RDX
, [_foo
+ RAX
* number
]
46 // CHECK
: leaq _foo
(%rbx
,%rax
,8), %rdx
47 lea RDX
, [number
* RAX
+ RBX
+ _foo
]
48 // CHECK
: leaq _foo
(%rbx
,%rax
,8), %rdx
49 lea RDX
, [_foo
+ number
* RAX
+ RBX
]
50 // CHECK
: leaq
8(%rcx
,%rax
,8), %rdx
51 lea RDX
, [8 + number
* RAX
+ RCX
]
52 // CHECK
: leaq _foo
(%rax
), %rdx
54 // CHECK
: leaq
8(%rax
), %rdx
55 lea RDX
, [number
+ RAX
]
56 // CHECK
: leaq
8(%rax
), %rdx
59 // CHECK
: lcalll
*(%rax
)
61 // CHECK
: lcalll
*(%rax
)
63 // CHECK
: ljmpl
*(%rax
)
65 // CHECK
: ljmpq
*(%rax
)
72 // CHECK
: movl $
257, -4(%rsp
)
73 mov DWORD PTR
[RSP
- 4], 257
74 // CHECK
: movl $
258, 4(%rsp
)
75 mov DWORD PTR
[RSP
+ 4], 258
76 // CHECK
: movq $
123, -16(%rsp
)
77 mov QWORD PTR
[RSP
- 16], 123
78 // CHECK
: movb $
97, -17(%rsp
)
79 mov BYTE PTR
[RSP
- 17], 97
80 // CHECK
: movl
-4(%rsp
), %eax
81 mov EAX
, DWORD PTR
[RSP
- 4]
82 // CHECK
: movq
(%rsp
), %rax
83 mov RAX
, QWORD PTR
[RSP
]
84 // CHECK
: movabsq $
4294967289, %rax
86 // CHECK
: movl $
-4, -4(%rsp
)
87 mov DWORD PTR
[RSP
- 4], -4
88 // CHECK
: movq
0, %rcx
89 mov RCX
, QWORD PTR
[0]
90 // CHECK
: movl
-24(%rsp
,%rax
,4), %eax
91 mov EAX
, DWORD PTR
[RSP
+ 4*RAX
- 24]
92 // CHECK
: movb
%dil
, (%rdx
,%rcx
)
93 mov BYTE PTR
[RDX
+ RCX
], DIL
94 // CHECK
: movzwl
2(%rcx
), %edi
95 movzx EDI
, WORD PTR
[RCX
+ 2]
98 // CHECK
: andw $
12, %ax
100 // CHECK
: andw $
-12, %ax
102 // CHECK
: andw $
257, %ax
104 // CHECK
: andw $
-257, %ax
106 // CHECK
: andl $
12, %eax
108 // CHECK
: andl $
-12, %eax
110 // CHECK
: andl $
257, %eax
112 // CHECK
: andl $
-257, %eax
114 // CHECK
: andq $
12, %rax
116 // CHECK
: andq $
-12, %rax
118 // CHECK
: andq $
257, %rax
120 // CHECK
: andq $
-257, %rax
124 // CHECK
: movl
%fs:(%rdi
), %eax
125 mov EAX
, DWORD PTR
FS:[RDI
]
126 // CHECK
: leal
(,%rdi
,4), %r8d
127 lea R8D
, DWORD PTR
[4*RDI
]
128 // CHECK
: movl _fnan
(,%ecx
,4), %ecx
129 mov ECX
, DWORD PTR
[4*ECX
+ _fnan
]
130 // CHECK
: movq
%fs:320, %rax
131 mov RAX
, QWORD PTR
FS:[320]
132 // CHECK
: movq
%fs:320, %rax
133 mov RAX
, QWORD PTR
FS:320
134 // CHECK
: movq
%rax
, %fs:320
135 mov QWORD PTR
FS:320, RAX
136 // CHECK
: movq
%rax
, %fs:20(%rbx
)
137 mov QWORD PTR
FS:20[rbx
], RAX
138 // CHECK
: vshufpd $
1, %xmm2
, %xmm1
, %xmm0
139 vshufpd XMM0
, XMM1
, XMM2
, 1
140 // CHECK
: vpgatherdd
%xmm8
, (%r15,%xmm9
,2), %xmm1
141 vpgatherdd XMM10
, XMMWORD PTR
[R15 + 2*XMM9
], XMM8
142 // CHECK
: movsd
-8, %xmm5
143 movsd XMM5
, QWORD PTR
[-8]
144 // CHECK
: movsl
(%rsi
), %es
:(%rdi
)
146 // CHECK
: movl
%ecx
, (%eax
)
148 // CHECK
: movl
%ecx
, (,%ebx
,4)
150 // CHECK
: movl
%ecx
, (,%ebx
,4)
152 // CHECK
: movl
%ecx
, 1024
154 // CHECK
: movl
%ecx
, 4132
156 // CHECK
: movl
%ecx
, 32
158 // CHECK
: movl
%ecx
, 0
160 // CHECK
: movl
%ecx
, 32
162 // CHECK
: movl
%ecx
, (%eax
,%ebx
,4)
163 mov
[eax
+ 4*ebx
], ecx
164 // CHECK
: movl
%ecx
, (%eax
,%ebx
,4)
165 mov
[eax
+ ebx
*4], ecx
166 // CHECK
: movl
%ecx
, (%eax
,%ebx
,4)
167 mov
[4*ebx
+ eax
], ecx
168 // CHECK
: movl
%ecx
, (%eax
,%ebx
,4)
169 mov
[ebx
*4 + eax
], ecx
170 // CHECK
: movl
%ecx
, (%eax
,%ebx
,4)
171 mov
[eax
][4*ebx
], ecx
172 // CHECK
: movl
%ecx
, (%eax
,%ebx
,4)
173 mov
[eax
][ebx
*4], ecx
174 // CHECK
: movl
%ecx
, (%eax
,%ebx
,4)
175 mov
[4*ebx
][eax
], ecx
176 // CHECK
: movl
%ecx
, (%eax
,%ebx
,4)
177 mov
[ebx
*4][eax
], ecx
178 // CHECK
: movl
%ecx
, 12(%eax
)
180 // CHECK
: movl
%ecx
, 12(%eax
)
182 // CHECK
: movl
%ecx
, 32(%eax
)
183 mov
[eax
+ 16 + 16], ecx
184 // CHECK
: movl
%ecx
, 32(%eax
)
185 mov
[16 + eax
+ 16], ecx
186 // CHECK
: movl
%ecx
, 32(%eax
)
187 mov
[16 + 16 + eax
], ecx
188 // CHECK
: movl
%ecx
, 12(%eax
)
190 // CHECK
: movl
%ecx
, 12(%eax
)
192 // CHECK
: movl
%ecx
, 32(%eax
)
193 mov
[eax
][16 + 16], ecx
194 // CHECK
: movl
%ecx
, 32(%eax
)
195 mov
[eax
+ 16][16], ecx
196 // CHECK
: movl
%ecx
, 32(%eax
)
197 mov
[eax
][16][16], ecx
198 // CHECK
: movl
%ecx
, 32(%eax
)
199 mov
[16][eax
+ 16], ecx
200 // CHECK
: movl
%ecx
, 32(%eax
)
201 mov
[16 + eax
][16], ecx
202 // CHECK
: movl
%ecx
, 32(%eax
)
203 mov
[16][16 + eax
], ecx
204 // CHECK
: movl
%ecx
, 32(%eax
)
205 mov
[16 + 16][eax
], ecx
206 // CHECK
: movl
%ecx
, 32(%eax
)
207 mov
[eax
][16][16], ecx
208 // CHECK
: movl
%ecx
, 32(%eax
)
209 mov
[16][eax
][16], ecx
210 // CHECK
: movl
%ecx
, 32(%eax
)
211 mov
[16][16][eax
], ecx
212 // CHECK
: movl
%ecx
, 16(,%ebx
,4)
213 mov
[4*ebx
+ 16], ecx
214 // CHECK
: movl
%ecx
, 16(,%ebx
,4)
215 mov
[ebx
*4 + 16], ecx
216 // CHECK
: movl
%ecx
, 16(,%ebx
,4)
218 // CHECK
: movl
%ecx
, 16(,%ebx
,4)
220 // CHECK
: movl
%ecx
, 16(,%ebx
,4)
221 mov
[16 + 4*ebx
], ecx
222 // CHECK
: movl
%ecx
, 16(,%ebx
,4)
223 mov
[16 + ebx
*4], ecx
224 // CHECK
: movl
%ecx
, 16(,%ebx
,4)
226 // CHECK
: movl
%ecx
, 16(,%ebx
,4)
228 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
229 mov
[eax
+ 4*ebx
+ 16], ecx
230 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
231 mov
[eax
+ 16 + 4*ebx
], ecx
232 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
233 mov
[4*ebx
+ eax
+ 16], ecx
234 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
235 mov
[4*ebx
+ 16 + eax
], ecx
236 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
237 mov
[16 + eax
+ 4*ebx
], ecx
238 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
239 mov
[16 + eax
+ 4*ebx
], ecx
240 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
241 mov
[eax
][4*ebx
+ 16], ecx
242 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
243 mov
[eax
][16 + 4*ebx
], ecx
244 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
245 mov
[4*ebx
][eax
+ 16], ecx
246 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
247 mov
[4*ebx
][16 + eax
], ecx
248 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
249 mov
[16][eax
+ 4*ebx
], ecx
250 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
251 mov
[16][eax
+ 4*ebx
], ecx
252 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
253 mov
[eax
+ 4*ebx
][16], ecx
254 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
255 mov
[eax
+ 16][4*ebx
], ecx
256 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
257 mov
[4*ebx
+ eax
][16], ecx
258 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
259 mov
[4*ebx
+ 16][eax
], ecx
260 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
261 mov
[16 + eax
][4*ebx
], ecx
262 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
263 mov
[16 + eax
][4*ebx
], ecx
264 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
265 mov
[eax
][4*ebx
][16], ecx
266 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
267 mov
[eax
][16][4*ebx
], ecx
268 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
269 mov
[4*ebx
][eax
][16], ecx
270 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
271 mov
[4*ebx
][16][eax
], ecx
272 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
273 mov
[16][eax
][4*ebx
], ecx
274 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
275 mov
[16][eax
][4*ebx
], ecx
276 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
277 mov
[eax
+ ebx
*4 + 16], ecx
278 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
279 mov
[eax
+ 16 + ebx
*4], ecx
280 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
281 mov
[ebx
*4 + eax
+ 16], ecx
282 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
283 mov
[ebx
*4 + 16 + eax
], ecx
284 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
285 mov
[16 + eax
+ ebx
*4], ecx
286 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
287 mov
[16 + eax
+ ebx
*4], ecx
288 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
289 mov
[eax
][ebx
*4 + 16], ecx
290 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
291 mov
[eax
][16 + ebx
*4], ecx
292 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
293 mov
[ebx
*4][eax
+ 16], ecx
294 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
295 mov
[ebx
*4][16 + eax
], ecx
296 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
297 mov
[16][eax
+ ebx
*4], ecx
298 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
299 mov
[16][eax
+ ebx
*4], ecx
300 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
301 mov
[eax
+ ebx
*4][16], ecx
302 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
303 mov
[eax
+ 16][ebx
*4], ecx
304 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
305 mov
[ebx
*4 + eax
][16], ecx
306 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
307 mov
[ebx
*4 + 16][eax
], ecx
308 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
309 mov
[16 + eax
][ebx
*4], ecx
310 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
311 mov
[16 + eax
][ebx
*4], ecx
312 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
313 mov
[eax
][ebx
*4][16], ecx
314 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
315 mov
[eax
][16][ebx
*4], ecx
316 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
317 mov
[ebx
*4][eax
][16], ecx
318 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
319 mov
[ebx
*4][16][eax
], ecx
320 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
321 mov
[16][eax
][ebx
*4], ecx
322 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
323 mov
[16][eax
][ebx
*4], ecx
324 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
325 mov
[eax
][ebx
*4 - 16], ecx
327 // CHECK
: prefetchnta
12800(%esi
)
328 prefetchnta
[esi
+ (200*64)]
329 // CHECK
: prefetchnta
32(%esi
)
330 prefetchnta
[esi
+ (64/2)]
331 // CHECK
: prefetchnta
128(%esi
)
332 prefetchnta
[esi
+ (64/2*4)]
333 // CHECK
: prefetchnta
8(%esi
)
334 prefetchnta
[esi
+ (64/(2*4))]
335 // CHECK
: prefetchnta
48(%esi
)
336 prefetchnta
[esi
+ (64/(2*4)+40)]
338 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
339 mov
[eax
][ebx
*4 - 2*8], ecx
340 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
341 mov
[eax
][4*ebx
- 2*8], ecx
342 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
343 mov
[eax
+ 4*ebx
- 2*8], ecx
344 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
345 mov
[12 + eax
+ (4*ebx
) - 2*14], ecx
346 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
347 mov
[eax
][ebx
*4 - 2*2*2*2], ecx
348 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
349 mov
[eax
][ebx
*4 - (2*8)], ecx
350 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
351 mov
[eax
][ebx
*4 - 2 * 8 + 4 - 4], ecx
352 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
353 mov
[eax
+ ebx
*4 - 2 * 8 + 4 - 4], ecx
354 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
355 mov
[eax
+ ebx
*4 - 2 * ((8 + 4) - 4)], ecx
356 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
357 mov
[-2 * ((8 + 4) - 4) + eax
+ ebx
*4], ecx
358 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
359 mov
[((-2) * ((8 + 4) - 4)) + eax
+ ebx
*4], ecx
360 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
361 mov
[eax
+ ((-2) * ((8 + 4) - 4)) + ebx
*4], ecx
362 // CHECK
: movl
%ecx
, 96(%eax
,%ebx
,4)
363 mov
[eax
+ ((-2) * ((8 + 4) * -4)) + ebx
*4], ecx
364 // CHECK
: movl
%ecx
, -8(%eax
,%ebx
,4)
365 mov
[eax
][-8][ebx
*4], ecx
366 // CHECK
: movl
%ecx
, -2(%eax
,%ebx
,4)
367 mov
[eax
][16/-8][ebx
*4], ecx
368 // CHECK
: movl
%ecx
, -2(%eax
,%ebx
,4)
369 mov
[eax
][(16)/-8][ebx
*4], ecx
401 // CHECK
: outb
%al
, $
4
405 // CHECK
: cmovbl
%ebx
, %eax
407 // CHECK
: cmovel
%ebx
, %eax
409 // CHECK
: cmovbel
%ebx
, %eax
411 // CHECK
: cmovael
%ebx
, %eax
413 // CHECK
: cmovael
%ebx
, %eax
415 // CHECK
: cmovlel
%ebx
, %eax
417 // CHECK
: cmovgel
%ebx
, %eax
419 // CHECK
: cmovnel
%ebx
, %eax
421 // CHECK
: cmovpl
%ebx
, %eax
423 // CHECK
: cmovnpl
%ebx
, %eax
425 // CHECK
: cmovbl
%ebx
, %eax
427 // CHECK
: cmoval
%ebx
, %eax
429 // CHECK
: cmovll
%ebx
, %eax
431 // CHECK
: cmovgl
%ebx
, %eax
434 // CHECK
: shldw
%cl
, %bx
, %dx
435 // CHECK
: shldw
%cl
, %bx
, %dx
436 // CHECK
: shldw $
1, %bx
, %dx
437 // CHECK
: shldw
%cl
, %bx
, (%rax
)
438 // CHECK
: shldw
%cl
, %bx
, (%rax
)
439 // CHECK
: shrdw
%cl
, %bx
, %dx
440 // CHECK
: shrdw
%cl
, %bx
, %dx
441 // CHECK
: shrdw $
1, %bx
, %dx
442 // CHECK
: shrdw
%cl
, %bx
, (%rax
)
443 // CHECK
: shrdw
%cl
, %bx
, (%rax
)
456 // CHECK
: btl $
1, (%eax
)
457 // CHECK
: btsl $
1, (%eax
)
458 // CHECK
: btrl $
1, (%eax
)
459 // CHECK
: btcl $
1, (%eax
)
460 bt DWORD PTR
[EAX
], 1
461 bt DWORD PTR
[EAX
], 1
462 bts DWORD PTR
[EAX
], 1
463 btr DWORD PTR
[EAX
], 1
464 btc DWORD PTR
[EAX
], 1
469 //CHECK
: divl
3735928559(%ebx
,%ecx
,8)
472 //CHECK
: divl
3133065982
473 //CHECK
: divl
305419896
477 //CHECK
: idivl
3735928559(%ebx
,%ecx
,8)
480 //CHECK
: idivl
3133065982
481 //CHECK
: idivl
305419896
485 div EAX
, [ECX
*8+EBX+
0xdeadbeef]
488 div EAX
, [0xbabecafe]
489 div EAX
, [0x12345678]
493 idiv EAX
, [ECX
*8+EBX+
0xdeadbeef]
496 idiv EAX
, [0xbabecafe]
497 idiv EAX
, [0x12345678]
500 // CHECK
: inb
%dx
, %al
501 // CHECK
: inw
%dx
, %ax
502 // CHECK
: inl
%dx
, %eax
503 // CHECK
: outb
%al
, %dx
504 // CHECK
: outw
%ax
, %dx
505 // CHECK
: outl
%eax
, %dx
513 // CHECK
: xchgq
%rcx
, %rax
514 // CHECK
: xchgq
%rcx
, %rax
515 // CHECK
: xchgl
%ecx
, %eax
516 // CHECK
: xchgl
%ecx
, %eax
517 // CHECK
: xchgw
%cx
, %ax
518 // CHECK
: xchgw
%cx
, %ax
526 // CHECK
: xchgq
%rax
, (%ecx
)
527 // CHECK
: xchgq
%rax
, (%ecx
)
528 // CHECK
: xchgl
%eax
, (%ecx
)
529 // CHECK
: xchgl
%eax
, (%ecx
)
530 // CHECK
: xchgw
%ax
, (%ecx
)
531 // CHECK
: xchgw
%ax
, (%ecx
)
539 // CHECK
: testq
%rax
, (%ecx
)
540 // CHECK
: testq
%rax
, (%ecx
)
541 // CHECK
: testl
%eax
, (%ecx
)
542 // CHECK
: testl
%eax
, (%ecx
)
543 // CHECK
: testw
%ax
, (%ecx
)
544 // CHECK
: testw
%ax
, (%ecx
)
545 // CHECK
: testb
%al
, (%ecx
)
546 // CHECK
: testb
%al
, (%ecx
)
558 // CHECK
: fnstsw
(%eax
)
561 fnstsw WORD PTR
[EAX
]
563 // CHECK
: faddp
%st, %st(1)
564 // CHECK
: fmulp
%st, %st(1)
565 // CHECK
: fsubrp
%st, %st(1)
566 // CHECK
: fsubp
%st, %st(1)
567 // CHECK
: fdivrp
%st, %st(1)
568 // CHECK
: fdivp
%st, %st(1)
576 // CHECK
: faddp
%st, %st(1)
577 // CHECK
: fmulp
%st, %st(1)
578 // CHECK
: fsubrp
%st, %st(1)
579 // CHECK
: fsubp
%st, %st(1)
580 // CHECK
: fdivrp
%st, %st(1)
581 // CHECK
: fdivp
%st, %st(1)
589 // CHECK
: faddp
%st, %st(1)
590 // CHECK
: fmulp
%st, %st(1)
591 // CHECK
: fsubrp
%st, %st(1)
592 // CHECK
: fsubp
%st, %st(1)
593 // CHECK
: fdivrp
%st, %st(1)
594 // CHECK
: fdivp
%st, %st(1)
603 // CHECK
: faddp
%st, %st(1)
604 // CHECK
: fmulp
%st, %st(1)
605 // CHECK
: fsubrp
%st, %st(1)
606 // CHECK
: fsubp
%st, %st(1)
607 // CHECK
: fdivrp
%st, %st(1)
608 // CHECK
: fdivp
%st, %st(1)
616 // CHECK
: faddp
%st, %st(1)
617 // CHECK
: fmulp
%st, %st(1)
618 // CHECK
: fsubrp
%st, %st(1)
619 // CHECK
: fsubp
%st, %st(1)
620 // CHECK
: fdivrp
%st, %st(1)
621 // CHECK
: fdivp
%st, %st(1)
629 // CHECK
: fadd %st(1), %st
630 // CHECK
: fmul %st(1), %st
631 // CHECK
: fsub %st(1), %st
632 // CHECK
: fsubr
%st(1), %st
633 // CHECK
: fdiv %st(1), %st
634 // CHECK
: fdivr
%st(1), %st
642 // CHECK
: fadd %st, %st(1)
643 // CHECK
: fmul %st, %st(1)
644 // CHECK
: fsubr
%st, %st(1)
645 // CHECK
: fsub %st, %st(1)
646 // CHECK
: fdivr
%st, %st(1)
647 // CHECK
: fdiv %st, %st(1)
655 // CHECK
: fadd %st(1), %st
656 // CHECK
: fmul %st(1), %st
657 // CHECK
: fsub %st(1), %st
658 // CHECK
: fsubr
%st(1), %st
659 // CHECK
: fdiv %st(1), %st
660 // CHECK
: fdivr
%st(1), %st
669 // CHECK
: fxsave64
(%rax
)
670 // CHECK
: fxrstor64
(%rax
)
678 // CHECK
: movq _g0
, %rbx
679 // CHECK
: movq _g0+
8, %rcx
680 // CHECK
: movq _g0+
18(%rbp
), %rax
681 // CHECK
: movq _g0
(,%rsi
,4), %rax
682 mov rbx
, qword ptr
[_g0
]
683 mov rcx
, qword ptr
[_g0
+ 8]
684 mov rax
, QWORD PTR _g0
[rbp
+ 1 + (2 * 5) - 3 + 1<<1]
685 mov rax
, QWORD PTR _g0
[rsi
*4]
687 "?half@?0??bar@@YAXXZ@4NA":
688 .quad 4602678819172646912
690 fadd dword ptr
"?half@?0??bar@@YAXXZ@4NA"
691 fadd dword ptr
"?half@?0??bar@@YAXXZ@4NA"@IMGREL
692 // CHECK
: fadds "?half@?0??bar@@YAXXZ@4NA"
693 // CHECK
: fadds "?half@?0??bar@@YAXXZ@4NA"@IMGREL
700 // CHECK
: incq
(%rax
)
701 // CHECK
: incl
(%rax
)
702 // CHECK
: incl
(%rax
)
703 // CHECK
: incw
(%rax
)
704 // CHECK
: incb
(%rax
)
710 // CHECK
: decq
(%rax
)
711 // CHECK
: decl
(%rax
)
712 // CHECK
: decw
(%rax
)
713 // CHECK
: decb
(%rax
)
715 add qword ptr
[rax
], 1
716 add dword ptr
[rax
], 1
717 add word ptr
[rax
], 1
718 add byte ptr
[rax
], 1
719 // CHECK
: addq $
1, (%rax
)
720 // CHECK
: addl $
1, (%rax
)
721 // CHECK
: addw $
1, (%rax
)
722 // CHECK
: addb $
1, (%rax
)
728 // CHECK
: fstpt
(%rax
)
729 // CHECK
: fstpt
(%rax
)
730 // CHECK
: fstpl
(%rax
)
731 // CHECK
: fstps
(%rax
)
737 // CHECK
: fxsave
(%eax
)
739 // CHECK
: fnsave
(%eax
)
740 // CHECK
: fxrstor
(%eax
)
741 // CHECK
: frstor
(%eax
)
743 // FIXME
: Should we accept this? Masm accepts it
, but gas does
not.
744 fxsave dword ptr
[eax
]
745 fsave dword ptr
[eax
]
746 fxrstor dword ptr
[eax
]
747 frstor dword ptr
[eax
]
748 // CHECK
: fxsave
(%eax
)
750 // CHECK
: fnsave
(%eax
)
751 // CHECK
: fxrstor
(%eax
)
752 // CHECK
: frstor
(%eax
)
754 // CHECK
: cmpnless
%xmm1
, %xmm0
760 // CHECK
: insb
%dx
, %es
:(%rdi
)
761 // CHECK
: insw
%dx
, %es
:(%rdi
)
762 // CHECK
: insl
%dx
, %es
:(%rdi
)
767 // CHECK
: outsb
(%rsi
), %dx
768 // CHECK
: outsw
(%rsi
), %dx
769 // CHECK
: outsl
(%rsi
), %dx
774 // CHECK
: imulw $
123, %bx
775 // CHECK
: imull $
123, %ebx
776 // CHECK
: imulq $
123, %rbx
783 // CHECK
: cmpsb
%es
:(%rdi
), (%rsi
)
785 // CHECK
: cmpsb
%es
:(%rdi
), (%rsi
)
787 // CHECK
: cmpsb
%es
:(%rdi
), (%rsi
)
789 // CHECK
: cmpsb
%es
:(%rdi
), (%rsi
)
792 // CHECK
: shll $
123, %eax
794 psignw mm0
, MMWORD PTR t2
795 // CHECK
: psignw t2
, %mm0
797 comisd xmm0
, QWORD PTR
[eax
]
798 comiss xmm0
, DWORD PTR
[eax
]
799 vcomisd xmm0
, QWORD PTR
[eax
]
800 vcomiss xmm0
, DWORD PTR
[eax
]
802 // CHECK
: comisd
(%eax
), %xmm0
803 // CHECK
: comiss
(%eax
), %xmm0
804 // CHECK
: vcomisd
(%eax
), %xmm0
805 // CHECK
: vcomiss
(%eax
), %xmm0
808 fbstp tbyte ptr
[eax
]
809 // CHECK
: fbld
(%eax
)
810 // CHECK
: fbstp
(%eax
)
814 // CHECK
: flds
(%rax
)
815 // CHECK
: fldl
(%rax
)
819 // CHECK
: fcompi
%st(2)
820 // CHECK
: fucompi
%st(2)
825 // CHECK
: loopne _foo
828 // CHECK
: sidtq
(%eax
)
830 ins byte ptr
[eax
], dx
831 // CHECK
: insb
%dx
, %es
:(%edi
)
832 // CHECK-STDERR
: memory operand is only for determining the size
, ES
:(R|E
)DI will
be used for the location
833 // CHECK-STDERR-NEXT
: ins byte ptr
[eax
], dx
834 outs dx
, word ptr
[eax
]
835 // CHECK
: outsw
(%esi
), %dx
836 // CHECK-STDERR
: memory operand is only for determining the size
, ES
:(R|E
)SI will
be used for the location
837 // CHECK-STDERR-NEXT
: outs dx
, word ptr
[eax
]
839 // CHECK
: lodsl
(%esi
), %eax
840 // CHECK-STDERR
: memory operand is only for determining the size
, ES
:(R|E
)SI will
be used for the location
841 // CHECK-STDERR-NEXT
: lods dword ptr
[eax
]
843 // CHECK
: stosq
%rax
, %es
:(%edi
)
844 // CHECK-STDERR
: memory operand is only for determining the size
, ES
:(R|E
)DI will
be used for the location
845 // CHECK-STDERR-NEXT
: stos qword ptr
[eax
]
847 // CHECK
: scasb
%es
:(%edi
), %al
848 // CHECK-STDERR
: memory operand is only for determining the size
, ES
:(R|E
)DI will
be used for the location
849 // CHECK-STDERR-NEXT
: scas byte ptr
[eax
]
850 cmps word ptr
[eax
], word ptr
[ebx
]
851 // CHECK
: cmpsw
%es
:(%edi
), (%esi
)
852 // CHECK-STDERR
: memory operand is only for determining the size
, ES
:(R|E
)SI will
be used for the location
853 // CHECK-STDERR-NEXT
: cmps word ptr
[eax
], word ptr
[ebx
]
854 // CHECK-STDERR
: memory operand is only for determining the size
, ES
:(R|E
)DI will
be used for the location
855 // CHECK-STDERR-NEXT
: cmps word ptr
[eax
], word ptr
[ebx
]
856 movs dword ptr
[eax
], dword ptr
[ebx
]
857 // CHECK
: movsl
(%esi
), %es
:(%edi
)
858 // CHECK-STDERR
: memory operand is only for determining the size
, ES
:(R|E
)DI will
be used for the location
859 // CHECK-STDERR-NEXT
: movs dword ptr
[eax
], dword ptr
[ebx
]
860 // CHECK-STDERR
: memory operand is only for determining the size
, ES
:(R|E
)SI will
be used for the location
861 // CHECK-STDERR-NEXT
: movs dword ptr
[eax
], dword ptr
[ebx
]
863 movsd qword ptr
[rax
], xmm0
864 // CHECK
: movsd
%xmm0
, (%rax
)
865 // CHECK-STDERR-
NOT: movsd qword ptr
[rax
], xmm0
869 // CHECK-STDERR
: memory operand is only for determining the size
, (R|E
)BX will
be used for the location
872 punpcklbw mm0
, dword ptr
[rsp
]
874 punpcklwd mm0
, dword ptr
[rsp
]
876 punpckldq mm0
, dword ptr
[rsp
]
878 // CHECK
: lslq
(%eax
), %rbx
879 lsl rbx
, word ptr
[eax
]
881 // CHECK
: lsll
(%eax
), %ebx
882 lsl ebx
, word ptr
[eax
]
884 // CHECK
: lslw
(%eax
), %bx
885 lsl bx
, word ptr
[eax
]
896 // CHECK
: leaq
(%rsp
,%rax
), %rax
898 // CHECK
: leaq
(%rsp
,%rax
), %rax
900 // CHECK
: leal
(%esp
,%eax
), %eax
902 // CHECK
: leal
(%esp
,%eax
), %eax
905 // CHECK
: vpgatherdq
%ymm2
, (%rdi
,%xmm1
), %ymm0
906 vpgatherdq ymm0
, [rdi+xmm1
], ymm2
907 // CHECK
: vpgatherdq
%ymm2
, (%rdi
,%xmm1
), %ymm0
908 vpgatherdq ymm0
, [xmm1+rdi
], ymm2