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
)
68 // CHECK
: movl $
257, -4(%rsp
)
69 mov DWORD PTR
[RSP
- 4], 257
70 // CHECK
: movl $
258, 4(%rsp
)
71 mov DWORD PTR
[RSP
+ 4], 258
72 // CHECK
: movq $
123, -16(%rsp
)
73 mov QWORD PTR
[RSP
- 16], 123
74 // CHECK
: movb $
97, -17(%rsp
)
75 mov BYTE PTR
[RSP
- 17], 97
76 // CHECK
: movl
-4(%rsp
), %eax
77 mov EAX
, DWORD PTR
[RSP
- 4]
78 // CHECK
: movq
(%rsp
), %rax
79 mov RAX
, QWORD PTR
[RSP
]
80 // CHECK
: movabsq $
4294967289, %rax
82 // CHECK
: movl $
-4, -4(%rsp
)
83 mov DWORD PTR
[RSP
- 4], -4
84 // CHECK
: movq
0, %rcx
85 mov RCX
, QWORD PTR
[0]
86 // CHECK
: movl
-24(%rsp
,%rax
,4), %eax
87 mov EAX
, DWORD PTR
[RSP
+ 4*RAX
- 24]
88 // CHECK
: movb
%dil
, (%rdx
,%rcx
)
89 mov BYTE PTR
[RDX
+ RCX
], DIL
90 // CHECK
: movzwl
2(%rcx
), %edi
91 movzx EDI
, WORD PTR
[RCX
+ 2]
94 // CHECK
: andw $
12, %ax
96 // CHECK
: andw $
-12, %ax
98 // CHECK
: andw $
257, %ax
100 // CHECK
: andw $
-257, %ax
102 // CHECK
: andl $
12, %eax
104 // CHECK
: andl $
-12, %eax
106 // CHECK
: andl $
257, %eax
108 // CHECK
: andl $
-257, %eax
110 // CHECK
: andq $
12, %rax
112 // CHECK
: andq $
-12, %rax
114 // CHECK
: andq $
257, %rax
116 // CHECK
: andq $
-257, %rax
120 // CHECK
: movl
%fs:(%rdi
), %eax
121 mov EAX
, DWORD PTR
FS:[RDI
]
122 // CHECK
: leal
(,%rdi
,4), %r8d
123 lea R8D
, DWORD PTR
[4*RDI
]
124 // CHECK
: movl _fnan
(,%ecx
,4), %ecx
125 mov ECX
, DWORD PTR
[4*ECX
+ _fnan
]
126 // CHECK
: movq
%fs:320, %rax
127 mov RAX
, QWORD PTR
FS:[320]
128 // CHECK
: movq
%fs:320, %rax
129 mov RAX
, QWORD PTR
FS:320
130 // CHECK
: movq
%rax
, %fs:320
131 mov QWORD PTR
FS:320, RAX
132 // CHECK
: movq
%rax
, %fs:20(%rbx
)
133 mov QWORD PTR
FS:20[rbx
], RAX
134 // CHECK
: vshufpd $
1, %xmm2
, %xmm1
, %xmm0
135 vshufpd XMM0
, XMM1
, XMM2
, 1
136 // CHECK
: vpgatherdd
%xmm8
, (%r15,%xmm9
,2), %xmm1
137 vpgatherdd XMM10
, XMMWORD PTR
[R15 + 2*XMM9
], XMM8
138 // CHECK
: movsd
-8, %xmm5
139 movsd XMM5
, QWORD PTR
[-8]
140 // CHECK
: movsl
(%rsi
), %es
:(%rdi
)
142 // CHECK
: movl
%ecx
, (%eax
)
144 // CHECK
: movl
%ecx
, (,%ebx
,4)
146 // CHECK
: movl
%ecx
, (,%ebx
,4)
148 // CHECK
: movl
%ecx
, 1024
150 // CHECK
: movl
%ecx
, 4132
152 // CHECK
: movl
%ecx
, 32
154 // CHECK
: movl
%ecx
, 0
156 // CHECK
: movl
%ecx
, 32
158 // CHECK
: movl
%ecx
, (%eax
,%ebx
,4)
159 mov
[eax
+ 4*ebx
], ecx
160 // CHECK
: movl
%ecx
, (%eax
,%ebx
,4)
161 mov
[eax
+ ebx
*4], ecx
162 // CHECK
: movl
%ecx
, (%eax
,%ebx
,4)
163 mov
[4*ebx
+ eax
], ecx
164 // CHECK
: movl
%ecx
, (%eax
,%ebx
,4)
165 mov
[ebx
*4 + eax
], ecx
166 // CHECK
: movl
%ecx
, (%eax
,%ebx
,4)
167 mov
[eax
][4*ebx
], ecx
168 // CHECK
: movl
%ecx
, (%eax
,%ebx
,4)
169 mov
[eax
][ebx
*4], ecx
170 // CHECK
: movl
%ecx
, (%eax
,%ebx
,4)
171 mov
[4*ebx
][eax
], ecx
172 // CHECK
: movl
%ecx
, (%eax
,%ebx
,4)
173 mov
[ebx
*4][eax
], ecx
174 // CHECK
: movl
%ecx
, 12(%eax
)
176 // CHECK
: movl
%ecx
, 12(%eax
)
178 // CHECK
: movl
%ecx
, 32(%eax
)
179 mov
[eax
+ 16 + 16], ecx
180 // CHECK
: movl
%ecx
, 32(%eax
)
181 mov
[16 + eax
+ 16], ecx
182 // CHECK
: movl
%ecx
, 32(%eax
)
183 mov
[16 + 16 + eax
], ecx
184 // CHECK
: movl
%ecx
, 12(%eax
)
186 // CHECK
: movl
%ecx
, 12(%eax
)
188 // CHECK
: movl
%ecx
, 32(%eax
)
189 mov
[eax
][16 + 16], ecx
190 // CHECK
: movl
%ecx
, 32(%eax
)
191 mov
[eax
+ 16][16], ecx
192 // CHECK
: movl
%ecx
, 32(%eax
)
193 mov
[eax
][16][16], ecx
194 // CHECK
: movl
%ecx
, 32(%eax
)
195 mov
[16][eax
+ 16], ecx
196 // CHECK
: movl
%ecx
, 32(%eax
)
197 mov
[16 + eax
][16], ecx
198 // CHECK
: movl
%ecx
, 32(%eax
)
199 mov
[16][16 + eax
], ecx
200 // CHECK
: movl
%ecx
, 32(%eax
)
201 mov
[16 + 16][eax
], ecx
202 // CHECK
: movl
%ecx
, 32(%eax
)
203 mov
[eax
][16][16], ecx
204 // CHECK
: movl
%ecx
, 32(%eax
)
205 mov
[16][eax
][16], ecx
206 // CHECK
: movl
%ecx
, 32(%eax
)
207 mov
[16][16][eax
], ecx
208 // CHECK
: movl
%ecx
, 16(,%ebx
,4)
209 mov
[4*ebx
+ 16], ecx
210 // CHECK
: movl
%ecx
, 16(,%ebx
,4)
211 mov
[ebx
*4 + 16], ecx
212 // CHECK
: movl
%ecx
, 16(,%ebx
,4)
214 // CHECK
: movl
%ecx
, 16(,%ebx
,4)
216 // CHECK
: movl
%ecx
, 16(,%ebx
,4)
217 mov
[16 + 4*ebx
], ecx
218 // CHECK
: movl
%ecx
, 16(,%ebx
,4)
219 mov
[16 + ebx
*4], ecx
220 // CHECK
: movl
%ecx
, 16(,%ebx
,4)
222 // CHECK
: movl
%ecx
, 16(,%ebx
,4)
224 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
225 mov
[eax
+ 4*ebx
+ 16], ecx
226 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
227 mov
[eax
+ 16 + 4*ebx
], ecx
228 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
229 mov
[4*ebx
+ eax
+ 16], ecx
230 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
231 mov
[4*ebx
+ 16 + eax
], ecx
232 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
233 mov
[16 + eax
+ 4*ebx
], ecx
234 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
235 mov
[16 + eax
+ 4*ebx
], ecx
236 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
237 mov
[eax
][4*ebx
+ 16], ecx
238 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
239 mov
[eax
][16 + 4*ebx
], ecx
240 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
241 mov
[4*ebx
][eax
+ 16], ecx
242 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
243 mov
[4*ebx
][16 + eax
], ecx
244 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
245 mov
[16][eax
+ 4*ebx
], ecx
246 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
247 mov
[16][eax
+ 4*ebx
], ecx
248 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
249 mov
[eax
+ 4*ebx
][16], ecx
250 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
251 mov
[eax
+ 16][4*ebx
], ecx
252 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
253 mov
[4*ebx
+ eax
][16], ecx
254 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
255 mov
[4*ebx
+ 16][eax
], ecx
256 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
257 mov
[16 + eax
][4*ebx
], ecx
258 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
259 mov
[16 + eax
][4*ebx
], ecx
260 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
261 mov
[eax
][4*ebx
][16], ecx
262 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
263 mov
[eax
][16][4*ebx
], ecx
264 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
265 mov
[4*ebx
][eax
][16], ecx
266 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
267 mov
[4*ebx
][16][eax
], ecx
268 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
269 mov
[16][eax
][4*ebx
], ecx
270 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
271 mov
[16][eax
][4*ebx
], ecx
272 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
273 mov
[eax
+ ebx
*4 + 16], ecx
274 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
275 mov
[eax
+ 16 + ebx
*4], ecx
276 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
277 mov
[ebx
*4 + eax
+ 16], ecx
278 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
279 mov
[ebx
*4 + 16 + eax
], ecx
280 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
281 mov
[16 + eax
+ ebx
*4], ecx
282 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
283 mov
[16 + eax
+ ebx
*4], ecx
284 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
285 mov
[eax
][ebx
*4 + 16], ecx
286 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
287 mov
[eax
][16 + ebx
*4], ecx
288 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
289 mov
[ebx
*4][eax
+ 16], ecx
290 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
291 mov
[ebx
*4][16 + eax
], ecx
292 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
293 mov
[16][eax
+ ebx
*4], ecx
294 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
295 mov
[16][eax
+ ebx
*4], ecx
296 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
297 mov
[eax
+ ebx
*4][16], ecx
298 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
299 mov
[eax
+ 16][ebx
*4], ecx
300 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
301 mov
[ebx
*4 + eax
][16], ecx
302 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
303 mov
[ebx
*4 + 16][eax
], ecx
304 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
305 mov
[16 + eax
][ebx
*4], ecx
306 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
307 mov
[16 + eax
][ebx
*4], ecx
308 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
309 mov
[eax
][ebx
*4][16], ecx
310 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
311 mov
[eax
][16][ebx
*4], ecx
312 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
313 mov
[ebx
*4][eax
][16], ecx
314 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
315 mov
[ebx
*4][16][eax
], ecx
316 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
317 mov
[16][eax
][ebx
*4], ecx
318 // CHECK
: movl
%ecx
, 16(%eax
,%ebx
,4)
319 mov
[16][eax
][ebx
*4], ecx
320 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
321 mov
[eax
][ebx
*4 - 16], ecx
323 // CHECK
: prefetchnta
12800(%esi
)
324 prefetchnta
[esi
+ (200*64)]
325 // CHECK
: prefetchnta
32(%esi
)
326 prefetchnta
[esi
+ (64/2)]
327 // CHECK
: prefetchnta
128(%esi
)
328 prefetchnta
[esi
+ (64/2*4)]
329 // CHECK
: prefetchnta
8(%esi
)
330 prefetchnta
[esi
+ (64/(2*4))]
331 // CHECK
: prefetchnta
48(%esi
)
332 prefetchnta
[esi
+ (64/(2*4)+40)]
334 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
335 mov
[eax
][ebx
*4 - 2*8], ecx
336 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
337 mov
[eax
][4*ebx
- 2*8], ecx
338 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
339 mov
[eax
+ 4*ebx
- 2*8], ecx
340 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
341 mov
[12 + eax
+ (4*ebx
) - 2*14], ecx
342 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
343 mov
[eax
][ebx
*4 - 2*2*2*2], ecx
344 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
345 mov
[eax
][ebx
*4 - (2*8)], ecx
346 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
347 mov
[eax
][ebx
*4 - 2 * 8 + 4 - 4], ecx
348 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
349 mov
[eax
+ ebx
*4 - 2 * 8 + 4 - 4], 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
[-2 * ((8 + 4) - 4) + eax
+ ebx
*4], ecx
354 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
355 mov
[((-2) * ((8 + 4) - 4)) + eax
+ ebx
*4], ecx
356 // CHECK
: movl
%ecx
, -16(%eax
,%ebx
,4)
357 mov
[eax
+ ((-2) * ((8 + 4) - 4)) + ebx
*4], ecx
358 // CHECK
: movl
%ecx
, 96(%eax
,%ebx
,4)
359 mov
[eax
+ ((-2) * ((8 + 4) * -4)) + ebx
*4], ecx
360 // CHECK
: movl
%ecx
, -8(%eax
,%ebx
,4)
361 mov
[eax
][-8][ebx
*4], ecx
362 // CHECK
: movl
%ecx
, -2(%eax
,%ebx
,4)
363 mov
[eax
][16/-8][ebx
*4], ecx
364 // CHECK
: movl
%ecx
, -2(%eax
,%ebx
,4)
365 mov
[eax
][(16)/-8][ebx
*4], ecx
397 // CHECK
: outb
%al
, $
4
401 // CHECK
: cmovbl
%ebx
, %eax
403 // CHECK
: cmovel
%ebx
, %eax
405 // CHECK
: cmovbel
%ebx
, %eax
407 // CHECK
: cmovael
%ebx
, %eax
409 // CHECK
: cmovael
%ebx
, %eax
411 // CHECK
: cmovlel
%ebx
, %eax
413 // CHECK
: cmovgel
%ebx
, %eax
415 // CHECK
: cmovnel
%ebx
, %eax
417 // CHECK
: cmovpl
%ebx
, %eax
419 // CHECK
: cmovnpl
%ebx
, %eax
421 // CHECK
: cmovbl
%ebx
, %eax
423 // CHECK
: cmoval
%ebx
, %eax
425 // CHECK
: cmovll
%ebx
, %eax
427 // CHECK
: cmovgl
%ebx
, %eax
430 // CHECK
: shldw
%cl
, %bx
, %dx
431 // CHECK
: shldw
%cl
, %bx
, %dx
432 // CHECK
: shldw $
1, %bx
, %dx
433 // CHECK
: shldw
%cl
, %bx
, (%rax
)
434 // CHECK
: shldw
%cl
, %bx
, (%rax
)
435 // CHECK
: shrdw
%cl
, %bx
, %dx
436 // CHECK
: shrdw
%cl
, %bx
, %dx
437 // CHECK
: shrdw $
1, %bx
, %dx
438 // CHECK
: shrdw
%cl
, %bx
, (%rax
)
439 // CHECK
: shrdw
%cl
, %bx
, (%rax
)
452 // CHECK
: btl $
1, (%eax
)
453 // CHECK
: btsl $
1, (%eax
)
454 // CHECK
: btrl $
1, (%eax
)
455 // CHECK
: btcl $
1, (%eax
)
456 bt DWORD PTR
[EAX
], 1
457 bt DWORD PTR
[EAX
], 1
458 bts DWORD PTR
[EAX
], 1
459 btr DWORD PTR
[EAX
], 1
460 btc DWORD PTR
[EAX
], 1
465 //CHECK
: divl
3735928559(%ebx
,%ecx
,8)
468 //CHECK
: divl
3133065982
469 //CHECK
: divl
305419896
473 //CHECK
: idivl
3735928559(%ebx
,%ecx
,8)
476 //CHECK
: idivl
3133065982
477 //CHECK
: idivl
305419896
481 div EAX
, [ECX
*8+EBX+
0xdeadbeef]
484 div EAX
, [0xbabecafe]
485 div EAX
, [0x12345678]
489 idiv EAX
, [ECX
*8+EBX+
0xdeadbeef]
492 idiv EAX
, [0xbabecafe]
493 idiv EAX
, [0x12345678]
496 // CHECK
: inb
%dx
, %al
497 // CHECK
: inw
%dx
, %ax
498 // CHECK
: inl
%dx
, %eax
499 // CHECK
: outb
%al
, %dx
500 // CHECK
: outw
%ax
, %dx
501 // CHECK
: outl
%eax
, %dx
509 // CHECK
: xchgq
%rcx
, %rax
510 // CHECK
: xchgq
%rcx
, %rax
511 // CHECK
: xchgl
%ecx
, %eax
512 // CHECK
: xchgl
%ecx
, %eax
513 // CHECK
: xchgw
%cx
, %ax
514 // CHECK
: xchgw
%cx
, %ax
522 // CHECK
: xchgq
%rax
, (%ecx
)
523 // CHECK
: xchgq
%rax
, (%ecx
)
524 // CHECK
: xchgl
%eax
, (%ecx
)
525 // CHECK
: xchgl
%eax
, (%ecx
)
526 // CHECK
: xchgw
%ax
, (%ecx
)
527 // CHECK
: xchgw
%ax
, (%ecx
)
535 // CHECK
: testq
%rax
, (%ecx
)
536 // CHECK
: testq
%rax
, (%ecx
)
537 // CHECK
: testl
%eax
, (%ecx
)
538 // CHECK
: testl
%eax
, (%ecx
)
539 // CHECK
: testw
%ax
, (%ecx
)
540 // CHECK
: testw
%ax
, (%ecx
)
541 // CHECK
: testb
%al
, (%ecx
)
542 // CHECK
: testb
%al
, (%ecx
)
554 // CHECK
: fnstsw
(%eax
)
557 fnstsw WORD PTR
[EAX
]
559 // CHECK
: faddp
%st, %st(1)
560 // CHECK
: fmulp
%st, %st(1)
561 // CHECK
: fsubrp
%st, %st(1)
562 // CHECK
: fsubp
%st, %st(1)
563 // CHECK
: fdivrp
%st, %st(1)
564 // CHECK
: fdivp
%st, %st(1)
572 // CHECK
: faddp
%st, %st(1)
573 // CHECK
: fmulp
%st, %st(1)
574 // CHECK
: fsubrp
%st, %st(1)
575 // CHECK
: fsubp
%st, %st(1)
576 // CHECK
: fdivrp
%st, %st(1)
577 // CHECK
: fdivp
%st, %st(1)
585 // CHECK
: faddp
%st, %st(1)
586 // CHECK
: fmulp
%st, %st(1)
587 // CHECK
: fsubrp
%st, %st(1)
588 // CHECK
: fsubp
%st, %st(1)
589 // CHECK
: fdivrp
%st, %st(1)
590 // CHECK
: fdivp
%st, %st(1)
599 // CHECK
: faddp
%st, %st(1)
600 // CHECK
: fmulp
%st, %st(1)
601 // CHECK
: fsubrp
%st, %st(1)
602 // CHECK
: fsubp
%st, %st(1)
603 // CHECK
: fdivrp
%st, %st(1)
604 // CHECK
: fdivp
%st, %st(1)
612 // CHECK
: faddp
%st, %st(1)
613 // CHECK
: fmulp
%st, %st(1)
614 // CHECK
: fsubrp
%st, %st(1)
615 // CHECK
: fsubp
%st, %st(1)
616 // CHECK
: fdivrp
%st, %st(1)
617 // CHECK
: fdivp
%st, %st(1)
625 // CHECK
: fadd %st(1), %st
626 // CHECK
: fmul %st(1), %st
627 // CHECK
: fsub %st(1), %st
628 // CHECK
: fsubr
%st(1), %st
629 // CHECK
: fdiv %st(1), %st
630 // CHECK
: fdivr
%st(1), %st
638 // CHECK
: fadd %st, %st(1)
639 // CHECK
: fmul %st, %st(1)
640 // CHECK
: fsubr
%st, %st(1)
641 // CHECK
: fsub %st, %st(1)
642 // CHECK
: fdivr
%st, %st(1)
643 // CHECK
: fdiv %st, %st(1)
651 // CHECK
: fadd %st(1), %st
652 // CHECK
: fmul %st(1), %st
653 // CHECK
: fsub %st(1), %st
654 // CHECK
: fsubr
%st(1), %st
655 // CHECK
: fdiv %st(1), %st
656 // CHECK
: fdivr
%st(1), %st
665 // CHECK
: fxsave64
(%rax
)
666 // CHECK
: fxrstor64
(%rax
)
674 // CHECK
: movq _g0
, %rbx
675 // CHECK
: movq _g0+
8, %rcx
676 // CHECK
: movq _g0+
18(%rbp
), %rax
677 // CHECK
: movq _g0
(,%rsi
,4), %rax
678 mov rbx
, qword ptr
[_g0
]
679 mov rcx
, qword ptr
[_g0
+ 8]
680 mov rax
, QWORD PTR _g0
[rbp
+ 1 + (2 * 5) - 3 + 1<<1]
681 mov rax
, QWORD PTR _g0
[rsi
*4]
683 "?half@?0??bar@@YAXXZ@4NA":
684 .quad 4602678819172646912
686 fadd dword ptr
"?half@?0??bar@@YAXXZ@4NA"
687 fadd dword ptr
"?half@?0??bar@@YAXXZ@4NA"@IMGREL
688 // CHECK
: fadds "?half@?0??bar@@YAXXZ@4NA"
689 // CHECK
: fadds "?half@?0??bar@@YAXXZ@4NA"@IMGREL
696 // CHECK
: incq
(%rax
)
697 // CHECK
: incl
(%rax
)
698 // CHECK
: incl
(%rax
)
699 // CHECK
: incw
(%rax
)
700 // CHECK
: incb
(%rax
)
706 // CHECK
: decq
(%rax
)
707 // CHECK
: decl
(%rax
)
708 // CHECK
: decw
(%rax
)
709 // CHECK
: decb
(%rax
)
711 add qword ptr
[rax
], 1
712 add dword ptr
[rax
], 1
713 add word ptr
[rax
], 1
714 add byte ptr
[rax
], 1
715 // CHECK
: addq $
1, (%rax
)
716 // CHECK
: addl $
1, (%rax
)
717 // CHECK
: addw $
1, (%rax
)
718 // CHECK
: addb $
1, (%rax
)
724 // CHECK
: fstpt
(%rax
)
725 // CHECK
: fstpt
(%rax
)
726 // CHECK
: fstpl
(%rax
)
727 // CHECK
: fstps
(%rax
)
733 // CHECK
: fxsave
(%eax
)
735 // CHECK
: fnsave
(%eax
)
736 // CHECK
: fxrstor
(%eax
)
737 // CHECK
: frstor
(%eax
)
739 // FIXME
: Should we accept this? Masm accepts it
, but gas does
not.
740 fxsave dword ptr
[eax
]
741 fsave dword ptr
[eax
]
742 fxrstor dword ptr
[eax
]
743 frstor dword ptr
[eax
]
744 // CHECK
: fxsave
(%eax
)
746 // CHECK
: fnsave
(%eax
)
747 // CHECK
: fxrstor
(%eax
)
748 // CHECK
: frstor
(%eax
)
750 // CHECK
: cmpnless
%xmm1
, %xmm0
756 // CHECK
: insb
%dx
, %es
:(%rdi
)
757 // CHECK
: insw
%dx
, %es
:(%rdi
)
758 // CHECK
: insl
%dx
, %es
:(%rdi
)
763 // CHECK
: outsb
(%rsi
), %dx
764 // CHECK
: outsw
(%rsi
), %dx
765 // CHECK
: outsl
(%rsi
), %dx
770 // CHECK
: imulw $
123, %bx
771 // CHECK
: imull $
123, %ebx
772 // CHECK
: imulq $
123, %rbx
779 // CHECK
: cmpsb
%es
:(%rdi
), (%rsi
)
781 // CHECK
: cmpsb
%es
:(%rdi
), (%rsi
)
783 // CHECK
: cmpsb
%es
:(%rdi
), (%rsi
)
785 // CHECK
: cmpsb
%es
:(%rdi
), (%rsi
)
788 // CHECK
: shll $
123, %eax
790 psignw mm0
, MMWORD PTR t2
791 // CHECK
: psignw t2
, %mm0
793 comisd xmm0
, QWORD PTR
[eax
]
794 comiss xmm0
, DWORD PTR
[eax
]
795 vcomisd xmm0
, QWORD PTR
[eax
]
796 vcomiss xmm0
, DWORD PTR
[eax
]
798 // CHECK
: comisd
(%eax
), %xmm0
799 // CHECK
: comiss
(%eax
), %xmm0
800 // CHECK
: vcomisd
(%eax
), %xmm0
801 // CHECK
: vcomiss
(%eax
), %xmm0
804 fbstp tbyte ptr
[eax
]
805 // CHECK
: fbld
(%eax
)
806 // CHECK
: fbstp
(%eax
)
810 // CHECK
: flds
(%rax
)
811 // CHECK
: fldl
(%rax
)
815 // CHECK
: fcompi
%st(2)
816 // CHECK
: fucompi
%st(2)
821 // CHECK
: loopne _foo
824 // CHECK
: sidtq
(%eax
)
826 ins byte ptr
[eax
], dx
827 // CHECK
: insb
%dx
, %es
:(%edi
)
828 // CHECK-STDERR
: memory operand is only for determining the size
, ES
:(R|E
)DI will
be used for the location
829 // CHECK-STDERR-NEXT
: ins byte ptr
[eax
], dx
830 outs dx
, word ptr
[eax
]
831 // CHECK
: outsw
(%esi
), %dx
832 // CHECK-STDERR
: memory operand is only for determining the size
, ES
:(R|E
)SI will
be used for the location
833 // CHECK-STDERR-NEXT
: outs dx
, word ptr
[eax
]
835 // CHECK
: lodsl
(%esi
), %eax
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
: lods dword ptr
[eax
]
839 // CHECK
: stosq
%rax
, %es
:(%edi
)
840 // CHECK-STDERR
: memory operand is only for determining the size
, ES
:(R|E
)DI will
be used for the location
841 // CHECK-STDERR-NEXT
: stos qword ptr
[eax
]
843 // CHECK
: scasb
%es
:(%edi
), %al
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
: scas byte ptr
[eax
]
846 cmps word ptr
[eax
], word ptr
[ebx
]
847 // CHECK
: cmpsw
%es
:(%edi
), (%esi
)
848 // CHECK-STDERR
: memory operand is only for determining the size
, ES
:(R|E
)SI will
be used for the location
849 // CHECK-STDERR-NEXT
: cmps word ptr
[eax
], word ptr
[ebx
]
850 // CHECK-STDERR
: memory operand is only for determining the size
, ES
:(R|E
)DI will
be used for the location
851 // CHECK-STDERR-NEXT
: cmps word ptr
[eax
], word ptr
[ebx
]
852 movs dword ptr
[eax
], dword ptr
[ebx
]
853 // CHECK
: movsl
(%esi
), %es
:(%edi
)
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
: movs dword ptr
[eax
], dword ptr
[ebx
]
856 // CHECK-STDERR
: memory operand is only for determining the size
, ES
:(R|E
)SI will
be used for the location
857 // CHECK-STDERR-NEXT
: movs dword ptr
[eax
], dword ptr
[ebx
]
859 movsd qword ptr
[rax
], xmm0
860 // CHECK
: movsd
%xmm0
, (%rax
)
861 // CHECK-STDERR-
NOT: movsd qword ptr
[rax
], xmm0
865 // CHECK-STDERR
: memory operand is only for determining the size
, (R|E
)BX will
be used for the location
868 punpcklbw mm0
, dword ptr
[rsp
]
870 punpcklwd mm0
, dword ptr
[rsp
]
872 punpckldq mm0
, dword ptr
[rsp
]
874 // CHECK
: lslq
(%eax
), %rbx
875 lsl rbx
, word ptr
[eax
]
877 // CHECK
: lsll
(%eax
), %ebx
878 lsl ebx
, word ptr
[eax
]
880 // CHECK
: lslw
(%eax
), %bx
881 lsl bx
, word ptr
[eax
]
892 // CHECK
: leaq
(%rsp
,%rax
), %rax
894 // CHECK
: leaq
(%rsp
,%rax
), %rax
896 // CHECK
: leal
(%esp
,%eax
), %eax
898 // CHECK
: leal
(%esp
,%eax
), %eax
901 // CHECK
: vpgatherdq
%ymm2
, (%rdi
,%xmm1
), %ymm0
902 vpgatherdq ymm0
, [rdi+xmm1
], ymm2
903 // CHECK
: vpgatherdq
%ymm2
, (%rdi
,%xmm1
), %ymm0
904 vpgatherdq ymm0
, [xmm1+rdi
], ymm2