Silence -Wunused-variable in release builds.
[llvm/stm8.git] / test / MC / X86 / x86-64.s
blob6f828e815d0bff6fdc06e9219249dfb53f0bcdec
1 // RUN: llvm-mc -triple x86_64-unknown-unknown -show-encoding %s > %t 2> %t.err
2 // RUN: FileCheck < %t %s
3 // RUN: FileCheck --check-prefix=CHECK-STDERR < %t.err %s
5 monitor
6 // CHECK: monitor
7 // CHECK: encoding: [0x0f,0x01,0xc8]
8 monitor %rax, %rcx, %rdx
9 // CHECK: monitor
10 // CHECK: encoding: [0x0f,0x01,0xc8]
11 mwait
12 // CHECK: mwait
13 // CHECK: encoding: [0x0f,0x01,0xc9]
14 mwait %rax, %rcx
15 // CHECK: mwait
16 // CHECK: encoding: [0x0f,0x01,0xc9]
18 // Suffix inference:
20 // CHECK: addl $0, %eax
21 add $0, %eax
22 // CHECK: addb $255, %al
23 add $0xFF, %al
24 // CHECK: orq %rax, %rdx
25 or %rax, %rdx
26 // CHECK: shlq $3, %rax
27 shl $3, %rax
30 // CHECK: subb %al, %al
31 subb %al, %al
33 // CHECK: addl $24, %eax
34 addl $24, %eax
36 // CHECK: movl %eax, 10(%ebp)
37 movl %eax, 10(%ebp)
38 // CHECK: movl %eax, 10(%ebp,%ebx)
39 movl %eax, 10(%ebp, %ebx)
40 // CHECK: movl %eax, 10(%ebp,%ebx,4)
41 movl %eax, 10(%ebp, %ebx, 4)
42 // CHECK: movl %eax, 10(,%ebx,4)
43 movl %eax, 10(, %ebx, 4)
45 // CHECK: movl 0, %eax
46 movl 0, %eax
47 // CHECK: movl $0, %eax
48 movl $0, %eax
50 // CHECK: ret
51 ret
53 // FIXME: Check that this matches SUB32ri8
54 // CHECK: subl $1, %eax
55 subl $1, %eax
57 // FIXME: Check that this matches SUB32ri8
58 // CHECK: subl $-1, %eax
59 subl $-1, %eax
61 // FIXME: Check that this matches SUB32ri
62 // CHECK: subl $256, %eax
63 subl $256, %eax
65 // FIXME: Check that this matches XOR64ri8
66 // CHECK: xorq $1, %rax
67 xorq $1, %rax
69 // FIXME: Check that this matches XOR64ri32
70 // CHECK: xorq $256, %rax
71 xorq $256, %rax
73 // FIXME: Check that this matches SUB8rr
74 // CHECK: subb %al, %bl
75 subb %al, %bl
77 // FIXME: Check that this matches SUB16rr
78 // CHECK: subw %ax, %bx
79 subw %ax, %bx
81 // FIXME: Check that this matches SUB32rr
82 // CHECK: subl %eax, %ebx
83 subl %eax, %ebx
85 // FIXME: Check that this matches the correct instruction.
86 // CHECK: callq *%rax
87 call *%rax
89 // FIXME: Check that this matches the correct instruction.
90 // CHECK: shldl %cl, %eax, %ebx
91 shldl %cl, %eax, %ebx
93 // CHECK: shll $2, %eax
94 shll $2, %eax
96 // CHECK: shll $2, %eax
97 sall $2, %eax
99 // CHECK: rep
100 // CHECK: insb
101 rep;insb
103 // CHECK: rep
104 // CHECK: outsb
105 rep;outsb
107 // CHECK: rep
108 // CHECK: movsb
109 rep;movsb
112 // rdar://8470918
113 smovb // CHECK: movsb
114 smovw // CHECK: movsw
115 smovl // CHECK: movsd
116 smovq // CHECK: movsq
118 // rdar://8456361
119 // CHECK: rep
120 // CHECK: movsd
121 rep movsd
123 // CHECK: rep
124 // CHECK: lodsb
125 rep;lodsb
127 // CHECK: rep
128 // CHECK: stosb
129 rep;stosb
131 // NOTE: repz and repe have the same opcode as rep
132 // CHECK: rep
133 // CHECK: cmpsb
134 repz;cmpsb
136 // NOTE: repnz has the same opcode as repne
137 // CHECK: repne
138 // CHECK: cmpsb
139 repnz;cmpsb
141 // NOTE: repe and repz have the same opcode as rep
142 // CHECK: rep
143 // CHECK: scasb
144 repe;scasb
146 // CHECK: repne
147 // CHECK: scasb
148 repne;scasb
150 // CHECK: lock
151 // CHECK: cmpxchgb %al, (%ebx)
152 lock;cmpxchgb %al, 0(%ebx)
154 // CHECK: cs
155 // CHECK: movb (%eax), %al
156 cs;movb 0(%eax), %al
158 // CHECK: ss
159 // CHECK: movb (%eax), %al
160 ss;movb 0(%eax), %al
162 // CHECK: ds
163 // CHECK: movb (%eax), %al
164 ds;movb 0(%eax), %al
166 // CHECK: es
167 // CHECK: movb (%eax), %al
168 es;movb 0(%eax), %al
170 // CHECK: fs
171 // CHECK: movb (%eax), %al
172 fs;movb 0(%eax), %al
174 // CHECK: gs
175 // CHECK: movb (%eax), %al
176 gs;movb 0(%eax), %al
178 // CHECK: fadd %st(0)
179 // CHECK: fadd %st(1)
180 // CHECK: fadd %st(7)
182 fadd %st(0)
183 fadd %st(1)
184 fadd %st(7)
186 // CHECK: leal 0, %eax
187 leal 0, %eax
189 // rdar://7986634 - Insensitivity on opcodes.
190 // CHECK: int3
191 INT3
193 // rdar://8735979 - int $3 -> int3
194 // CHECK: int3
195 int $3
198 // Allow scale factor without index register.
199 // CHECK: movaps %xmm3, (%esi)
200 // CHECK-STDERR: warning: scale factor without index register is ignored
201 movaps %xmm3, (%esi, 2)
203 // CHECK: imull $12, %eax, %eax
204 imul $12, %eax
206 // CHECK: imull %ecx, %eax
207 imull %ecx, %eax
210 // rdar://8208481
211 // CHECK: outb %al, $161
212 outb %al, $161
213 // CHECK: outw %ax, $128
214 outw %ax, $128
215 // CHECK: inb $161, %al
216 inb $161, %al
218 // rdar://8017621
219 // CHECK: pushq $1
220 push $1
222 // rdar://9716860
223 pushq $1
224 // CHECK: encoding: [0x6a,0x01]
225 pushq $1111111
226 // CHECK: encoding: [0x68,0x47,0xf4,0x10,0x00]
228 // rdar://8017530
229 // CHECK: sldtw 4
230 sldt 4
232 // rdar://8208499
233 // CHECK: cmovnew %bx, %ax
234 cmovnz %bx, %ax
235 // CHECK: cmovneq %rbx, %rax
236 cmovnzq %rbx, %rax
239 // rdar://8407928
240 // CHECK: inb $127, %al
241 // CHECK: inw %dx
242 // CHECK: outb %al, $127
243 // CHECK: outw %dx
244 // CHECK: inl %dx
245 inb $0x7f
246 inw %dx
247 outb $0x7f
248 outw %dx
249 inl %dx
252 // PR8114
253 // CHECK: outb %dx
254 // CHECK: outb %dx
255 // CHECK: outw %dx
256 // CHECK: outw %dx
257 // CHECK: outl %dx
258 // CHECK: outl %dx
260 out %al, (%dx)
261 outb %al, (%dx)
262 out %ax, (%dx)
263 outw %ax, (%dx)
264 out %eax, (%dx)
265 outl %eax, (%dx)
267 // CHECK: inb %dx
268 // CHECK: inb %dx
269 // CHECK: inw %dx
270 // CHECK: inw %dx
271 // CHECK: inl %dx
272 // CHECK: inl %dx
274 in (%dx), %al
275 inb (%dx), %al
276 in (%dx), %ax
277 inw (%dx), %ax
278 in (%dx), %eax
279 inl (%dx), %eax
281 // rdar://8431422
283 // CHECK: fxch
284 // CHECK: fucom
285 // CHECK: fucomp
286 // CHECK: faddp
287 // CHECK: faddp %st(0)
288 // CHECK: fsubp
289 // CHECK: fsubrp
290 // CHECK: fmulp
291 // CHECK: fdivp
292 // CHECK: fdivrp
294 fxch
295 fucom
296 fucomp
297 faddp
298 faddp %st
299 fsubp
300 fsubrp
301 fmulp
302 fdivp
303 fdivrp
305 // CHECK: fcomi
306 // CHECK: fcomi %st(2)
307 // CHECK: fucomi
308 // CHECK: fucomi %st(2)
309 // CHECK: fucomi %st(2)
311 fcomi
312 fcomi %st(2)
313 fucomi
314 fucomi %st(2)
315 fucomi %st(2), %st
317 // CHECK: fnstsw
318 // CHECK: fnstsw
319 // CHECK: fnstsw
320 // CHECK: fnstsw
322 fnstsw
323 fnstsw %ax
324 fnstsw %eax
325 fnstsw %al
327 // rdar://8431880
328 // CHECK: rclb %bl
329 // CHECK: rcll 3735928559(%ebx,%ecx,8)
330 // CHECK: rcrl %ecx
331 // CHECK: rcrl 305419896
332 rcl %bl
333 rcll 0xdeadbeef(%ebx,%ecx,8)
334 rcr %ecx
335 rcrl 0x12345678
337 rclb %bl // CHECK: rclb %bl # encoding: [0xd0,0xd3]
338 rclb $1, %bl // CHECK: rclb %bl # encoding: [0xd0,0xd3]
339 rclb $2, %bl // CHECK: rclb $2, %bl # encoding: [0xc0,0xd3,0x02]
341 // rdar://8418316
342 // CHECK: shldw $1, %bx, %bx
343 // CHECK: shldw $1, %bx, %bx
344 // CHECK: shrdw $1, %bx, %bx
345 // CHECK: shrdw $1, %bx, %bx
347 shld %bx,%bx
348 shld $1, %bx,%bx
349 shrd %bx,%bx
350 shrd $1, %bx,%bx
352 // CHECK: sldtl %ecx
353 // CHECK: encoding: [0x0f,0x00,0xc1]
354 // CHECK: sldtw %cx
355 // CHECK: encoding: [0x66,0x0f,0x00,0xc1]
357 sldt %ecx
358 sldt %cx
360 // CHECK: lcalll *3135175374
361 // CHECK: ljmpl *3135175374
362 lcall *0xbadeface
363 ljmp *0xbadeface
366 // rdar://8444631
367 // CHECK: enter $31438, $0
368 // CHECK: encoding: [0xc8,0xce,0x7a,0x00]
369 // CHECK: enter $31438, $1
370 // CHECK: encoding: [0xc8,0xce,0x7a,0x01]
371 // CHECK: enter $31438, $127
372 // CHECK: encoding: [0xc8,0xce,0x7a,0x7f]
373 enter $0x7ace,$0
374 enter $0x7ace,$1
375 enter $0x7ace,$0x7f
378 // rdar://8456364
379 // CHECK: movw %cs, %ax
380 mov %CS, %ax
382 // rdar://8456391
383 fcmovb %st(1), %st(0) // CHECK: fcmovb %st(1), %st(0)
384 fcmove %st(1), %st(0) // CHECK: fcmove %st(1), %st(0)
385 fcmovbe %st(1), %st(0) // CHECK: fcmovbe %st(1), %st(0)
386 fcmovu %st(1), %st(0) // CHECK: fcmovu %st(1), %st(0)
388 fcmovnb %st(1), %st(0) // CHECK: fcmovnb %st(1), %st(0)
389 fcmovne %st(1), %st(0) // CHECK: fcmovne %st(1), %st(0)
390 fcmovnbe %st(1), %st(0) // CHECK: fcmovnbe %st(1), %st(0)
391 fcmovnu %st(1), %st(0) // CHECK: fcmovnu %st(1), %st(0)
393 fcmovnae %st(1), %st(0) // CHECK: fcmovb %st(1), %st(0)
394 fcmovna %st(1), %st(0) // CHECK: fcmovbe %st(1), %st(0)
396 fcmovae %st(1), %st(0) // CHECK: fcmovnb %st(1), %st(0)
397 fcmova %st(1), %st(0) // CHECK: fcmovnbe %st(1), %st(0)
399 // rdar://8456417
400 .byte 88 + 1 & 15 // CHECK: .byte 9
402 // rdar://8456412
403 mov %rdx, %cr0
404 // CHECK: movq %rdx, %cr0
405 // CHECK: encoding: [0x0f,0x22,0xc2]
406 mov %rdx, %cr4
407 // CHECK: movq %rdx, %cr4
408 // CHECK: encoding: [0x0f,0x22,0xe2]
409 mov %rdx, %cr8
410 // CHECK: movq %rdx, %cr8
411 // CHECK: encoding: [0x44,0x0f,0x22,0xc2]
412 mov %rdx, %cr15
413 // CHECK: movq %rdx, %cr15
414 // CHECK: encoding: [0x44,0x0f,0x22,0xfa]
416 // rdar://8456371 - Handle commutable instructions written backward.
417 // CHECK: faddp %st(1)
418 // CHECK: fmulp %st(2)
419 faddp %st, %st(1)
420 fmulp %st, %st(2)
422 // rdar://8468087 - Encode these accurately, they are not synonyms.
423 // CHECK: fmul %st(0), %st(1)
424 // CHECK: encoding: [0xdc,0xc9]
425 // CHECK: fmul %st(1)
426 // CHECK: encoding: [0xd8,0xc9]
427 fmul %st, %st(1)
428 fmul %st(1), %st
430 // CHECK: fadd %st(0), %st(1)
431 // CHECK: encoding: [0xdc,0xc1]
432 // CHECK: fadd %st(1)
433 // CHECK: encoding: [0xd8,0xc1]
434 fadd %st, %st(1)
435 fadd %st(1), %st
438 // rdar://8416805
439 // CHECK: xorb %al, %al
440 // CHECK: encoding: [0x30,0xc0]
441 // CHECK: xorw %di, %di
442 // CHECK: encoding: [0x66,0x31,0xff]
443 // CHECK: xorl %esi, %esi
444 // CHECK: encoding: [0x31,0xf6]
445 // CHECK: xorq %rsi, %rsi
446 // CHECK: encoding: [0x48,0x31,0xf6]
447 clrb %al
448 clr %di
449 clr %esi
450 clr %rsi
452 // rdar://8456378
453 cltq // CHECK: cltq
454 cdqe // CHECK: cltq
455 cwde // CHECK: cwtl
456 cwtl // CHECK: cwtl
458 // rdar://8416805
459 cbw // CHECK: cbtw
460 cwd // CHECK: cwtd
461 cdq // CHECK: cltd
463 // rdar://8456378 and PR7557 - fstsw
464 fstsw %ax
465 // CHECK: wait
466 // CHECK: fnstsw
467 fstsw (%rax)
468 // CHECK: wait
469 // CHECK: fnstsw (%rax)
471 // PR8259
472 fstcw (%rsp)
473 // CHECK: wait
474 // CHECK: fnstcw (%rsp)
476 // PR8259
477 fstcw (%rsp)
478 // CHECK: wait
479 // CHECK: fnstcw (%rsp)
481 // PR8258
482 finit
483 // CHECK: wait
484 // CHECK: fninit
486 fsave 32493
487 // CHECK: wait
488 // CHECK: fnsave 32493
491 // rdar://8456382 - cvtsd2si support.
492 cvtsd2si %xmm1, %rax
493 // CHECK: cvtsd2siq %xmm1, %rax
494 // CHECK: encoding: [0xf2,0x48,0x0f,0x2d,0xc1]
495 cvtsd2si %xmm1, %eax
496 // CHECK: cvtsd2sil %xmm1, %eax
497 // CHECK: encoding: [0xf2,0x0f,0x2d,0xc1]
499 cvtsd2siq %xmm0, %rax // CHECK: cvtsd2siq %xmm0, %rax
500 cvtsd2sil %xmm0, %eax // CHECK: cvtsd2sil %xmm0, %eax
501 cvtsd2si %xmm0, %rax // CHECK: cvtsd2siq %xmm0, %rax
504 cvttpd2dq %xmm1, %xmm0 // CHECK: cvttpd2dq %xmm1, %xmm0
505 cvttpd2dq (%rax), %xmm0 // CHECK: cvttpd2dq (%rax), %xmm0
507 cvttps2dq %xmm1, %xmm0 // CHECK: cvttps2dq %xmm1, %xmm0
508 cvttps2dq (%rax), %xmm0 // CHECK: cvttps2dq (%rax), %xmm0
510 // rdar://8456376 - llvm-mc rejects 'roundss'
511 roundss $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x0a,0xc0,0x0e]
512 roundps $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x08,0xc0,0x0e]
513 roundsd $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x0b,0xc0,0x0e]
514 roundpd $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x09,0xc0,0x0e]
517 // rdar://8482675 - 32-bit mem operand support in 64-bit mode (0x67 prefix)
518 leal 8(%eax), %esi
519 // CHECK: leal 8(%eax), %esi
520 // CHECK: encoding: [0x67,0x8d,0x70,0x08]
521 leaq 8(%eax), %rsi
522 // CHECK: leaq 8(%eax), %rsi
523 // CHECK: encoding: [0x67,0x48,0x8d,0x70,0x08]
524 leaq 8(%rax), %rsi
525 // CHECK: leaq 8(%rax), %rsi
526 // CHECK: encoding: [0x48,0x8d,0x70,0x08]
529 cvttpd2dq 0xdeadbeef(%ebx,%ecx,8),%xmm5
530 // CHECK: cvttpd2dq 3735928559(%ebx,%ecx,8), %xmm5
531 // CHECK: encoding: [0x67,0x66,0x0f,0xe6,0xac,0xcb,0xef,0xbe,0xad,0xde]
533 // rdar://8490728 - llvm-mc rejects 'movmskpd'
534 movmskpd %xmm6, %rax
535 // CHECK: movmskpd %xmm6, %rax
536 // CHECK: encoding: [0x66,0x48,0x0f,0x50,0xc6]
537 movmskpd %xmm6, %eax
538 // CHECK: movmskpd %xmm6, %eax
539 // CHECK: encoding: [0x66,0x0f,0x50,0xc6]
541 // rdar://8491845 - Gas supports commuted forms of non-commutable instructions.
542 fdivrp %st(0), %st(1) // CHECK: encoding: [0xde,0xf9]
543 fdivrp %st(1), %st(0) // CHECK: encoding: [0xde,0xf9]
545 fsubrp %ST(0), %ST(1) // CHECK: encoding: [0xde,0xe9]
546 fsubrp %ST(1), %ST(0) // CHECK: encoding: [0xde,0xe9]
548 // also PR8861
549 fdivp %st(0), %st(1) // CHECK: encoding: [0xde,0xf1]
550 fdivp %st(1), %st(0) // CHECK: encoding: [0xde,0xf1]
553 movl foo(%rip), %eax
554 // CHECK: movl foo(%rip), %eax
555 // CHECK: encoding: [0x8b,0x05,A,A,A,A]
556 // CHECK: fixup A - offset: 2, value: foo-4, kind: reloc_riprel_4byte
558 movb $12, foo(%rip)
559 // CHECK: movb $12, foo(%rip)
560 // CHECK: encoding: [0xc6,0x05,A,A,A,A,0x0c]
561 // CHECK: fixup A - offset: 2, value: foo-5, kind: reloc_riprel_4byte
563 movw $12, foo(%rip)
564 // CHECK: movw $12, foo(%rip)
565 // CHECK: encoding: [0x66,0xc7,0x05,A,A,A,A,0x0c,0x00]
566 // CHECK: fixup A - offset: 3, value: foo-6, kind: reloc_riprel_4byte
568 movl $12, foo(%rip)
569 // CHECK: movl $12, foo(%rip)
570 // CHECK: encoding: [0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00]
571 // CHECK: fixup A - offset: 2, value: foo-8, kind: reloc_riprel_4byte
573 movq $12, foo(%rip)
574 // CHECK: movq $12, foo(%rip)
575 // CHECK: encoding: [0x48,0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00]
576 // CHECK: fixup A - offset: 3, value: foo-8, kind: reloc_riprel_4byte
578 // CHECK: addq $-424, %rax
579 // CHECK: encoding: [0x48,0x05,0x58,0xfe,0xff,0xff]
580 addq $-424, %rax
583 // CHECK: movq _foo@GOTPCREL(%rip), %rax
584 // CHECK: encoding: [0x48,0x8b,0x05,A,A,A,A]
585 // CHECK: fixup A - offset: 3, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load
586 movq _foo@GOTPCREL(%rip), %rax
588 // CHECK: movq _foo@GOTPCREL(%rip), %r14
589 // CHECK: encoding: [0x4c,0x8b,0x35,A,A,A,A]
590 // CHECK: fixup A - offset: 3, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load
591 movq _foo@GOTPCREL(%rip), %r14
594 // CHECK: movq (%r13,%rax,8), %r13
595 // CHECK: encoding: [0x4d,0x8b,0x6c,0xc5,0x00]
596 movq 0x00(%r13,%rax,8),%r13
598 // CHECK: testq %rax, %rbx
599 // CHECK: encoding: [0x48,0x85,0xd8]
600 testq %rax, %rbx
602 // CHECK: cmpq %rbx, %r14
603 // CHECK: encoding: [0x49,0x39,0xde]
604 cmpq %rbx, %r14
606 // rdar://7947167
608 movsq
609 // CHECK: movsq
610 // CHECK: encoding: [0x48,0xa5]
612 movsl
613 // CHECK: movsd
614 // CHECK: encoding: [0xa5]
616 stosq
617 // CHECK: stosq
618 // CHECK: encoding: [0x48,0xab]
619 stosl
620 // CHECK: stosl
621 // CHECK: encoding: [0xab]
624 // Not moffset forms of moves, they are x86-32 only! rdar://7947184
625 movb 0, %al // CHECK: movb 0, %al # encoding: [0x8a,0x04,0x25,0x00,0x00,0x00,0x00]
626 movw 0, %ax // CHECK: movw 0, %ax # encoding: [0x66,0x8b,0x04,0x25,0x00,0x00,0x00,0x00]
627 movl 0, %eax // CHECK: movl 0, %eax # encoding: [0x8b,0x04,0x25,0x00,0x00,0x00,0x00]
629 // CHECK: pushfq # encoding: [0x9c]
630 pushf
631 // CHECK: pushfq # encoding: [0x9c]
632 pushfq
633 // CHECK: popfq # encoding: [0x9d]
634 popf
635 // CHECK: popfq # encoding: [0x9d]
636 popfq
638 // CHECK: movabsq $-281474976710654, %rax
639 // CHECK: encoding: [0x48,0xb8,0x02,0x00,0x00,0x00,0x00,0x00,0xff,0xff]
640 movabsq $0xFFFF000000000002, %rax
642 // CHECK: movabsq $-281474976710654, %rax
643 // CHECK: encoding: [0x48,0xb8,0x02,0x00,0x00,0x00,0x00,0x00,0xff,0xff]
644 movq $0xFFFF000000000002, %rax
646 // CHECK: movq $-65536, %rax
647 // CHECK: encoding: [0x48,0xc7,0xc0,0x00,0x00,0xff,0xff]
648 movq $0xFFFFFFFFFFFF0000, %rax
650 // CHECK: movq $-256, %rax
651 // CHECK: encoding: [0x48,0xc7,0xc0,0x00,0xff,0xff,0xff]
652 movq $0xFFFFFFFFFFFFFF00, %rax
654 // CHECK: movq $10, %rax
655 // CHECK: encoding: [0x48,0xc7,0xc0,0x0a,0x00,0x00,0x00]
656 movq $10, %rax
658 // rdar://8014869
660 // CHECK: ret
661 // CHECK: encoding: [0xc3]
662 retq
664 // CHECK: sete %al
665 // CHECK: encoding: [0x0f,0x94,0xc0]
666 setz %al
668 // CHECK: setne %al
669 // CHECK: encoding: [0x0f,0x95,0xc0]
670 setnz %al
672 // CHECK: je 0
673 // CHECK: encoding: [0x74,A]
674 jz 0
676 // CHECK: jne
677 // CHECK: encoding: [0x75,A]
678 jnz 0
680 // PR9264
681 btl $1, 0 // CHECK: btl $1, 0 # encoding: [0x0f,0xba,0x24,0x25,0x00,0x00,0x00,0x00,0x01]
682 bt $1, 0 // CHECK: btl $1, 0 # encoding: [0x0f,0xba,0x24,0x25,0x00,0x00,0x00,0x00,0x01]
684 // rdar://8017515
685 btq $0x01,%rdx
686 // CHECK: btq $1, %rdx
687 // CHECK: encoding: [0x48,0x0f,0xba,0xe2,0x01]
689 //rdar://8017633
690 // CHECK: movzbl %al, %esi
691 // CHECK: encoding: [0x0f,0xb6,0xf0]
692 movzx %al, %esi
694 // CHECK: movzbq %al, %rsi
695 // CHECK: encoding: [0x48,0x0f,0xb6,0xf0]
696 movzx %al, %rsi
698 // CHECK: movsbw %al, %ax
699 // CHECK: encoding: [0x66,0x0f,0xbe,0xc0]
700 movsx %al, %ax
702 // CHECK: movsbl %al, %eax
703 // CHECK: encoding: [0x0f,0xbe,0xc0]
704 movsx %al, %eax
706 // CHECK: movswl %ax, %eax
707 // CHECK: encoding: [0x0f,0xbf,0xc0]
708 movsx %ax, %eax
710 // CHECK: movsbq %bl, %rax
711 // CHECK: encoding: [0x48,0x0f,0xbe,0xc3]
712 movsx %bl, %rax
714 // CHECK: movswq %cx, %rax
715 // CHECK: encoding: [0x48,0x0f,0xbf,0xc1]
716 movsx %cx, %rax
718 // CHECK: movslq %edi, %rax
719 // CHECK: encoding: [0x48,0x63,0xc7]
720 movsx %edi, %rax
722 // CHECK: movzbw %al, %ax
723 // CHECK: encoding: [0x66,0x0f,0xb6,0xc0]
724 movzx %al, %ax
726 // CHECK: movzbl %al, %eax
727 // CHECK: encoding: [0x0f,0xb6,0xc0]
728 movzx %al, %eax
730 // CHECK: movzwl %ax, %eax
731 // CHECK: encoding: [0x0f,0xb7,0xc0]
732 movzx %ax, %eax
734 // CHECK: movzbq %bl, %rax
735 // CHECK: encoding: [0x48,0x0f,0xb6,0xc3]
736 movzx %bl, %rax
738 // CHECK: movzwq %cx, %rax
739 // CHECK: encoding: [0x48,0x0f,0xb7,0xc1]
740 movzx %cx, %rax
742 // CHECK: movsbw (%rax), %ax
743 // CHECK: encoding: [0x66,0x0f,0xbe,0x00]
744 movsx (%rax), %ax
746 // CHECK: movzbw (%rax), %ax
747 // CHECK: encoding: [0x66,0x0f,0xb6,0x00]
748 movzx (%rax), %ax
751 // rdar://7873482
752 // CHECK: [0x65,0x8b,0x04,0x25,0x7c,0x00,0x00,0x00]
753 movl %gs:124, %eax
755 // CHECK: jmpq *8(%rax)
756 // CHECK: encoding: [0xff,0x60,0x08]
757 jmp *8(%rax)
759 // CHECK: btq $61, -216(%rbp)
760 // CHECK: encoding: [0x48,0x0f,0xba,0xa5,0x28,0xff,0xff,0xff,0x3d]
761 btq $61, -216(%rbp)
764 // rdar://8061602
766 jecxz L1
767 // CHECK: jecxz L1
768 // CHECK: encoding: [0x67,0xe3,A]
769 jrcxz L1
770 // CHECK: jrcxz L1
771 // CHECK: encoding: [0xe3,A]
773 // PR8061
774 xchgl 368(%rax),%ecx
775 // CHECK: xchgl %ecx, 368(%rax)
776 xchgl %ecx, 368(%rax)
777 // CHECK: xchgl %ecx, 368(%rax)
779 // rdar://8407548
780 xchg 0xdeadbeef(%rbx,%rcx,8),%bl
781 // CHECK: xchgb %bl, 3735928559(%rbx,%rcx,8)
785 // PR7254
786 lock incl 1(%rsp)
787 // CHECK: lock
788 // CHECK: incl 1(%rsp)
790 // rdar://8741045
791 lock/incl 1(%rsp)
792 // CHECK: lock
793 // CHECK: incl 1(%rsp)
795 // rdar://8033482
796 rep movsl
797 // CHECK: rep
798 // CHECK: encoding: [0xf3]
799 // CHECK: movsd
800 // CHECK: encoding: [0xa5]
803 // rdar://8403974
804 iret
805 // CHECK: iretl
806 // CHECK: encoding: [0xcf]
807 iretw
808 // CHECK: iretw
809 // CHECK: encoding: [0x66,0xcf]
810 iretl
811 // CHECK: iretl
812 // CHECK: encoding: [0xcf]
813 iretq
814 // CHECK: iretq
815 // CHECK: encoding: [0x48,0xcf]
817 // rdar://8416805
818 // CHECK: retw $31438
819 // CHECK: encoding: [0x66,0xc2,0xce,0x7a]
820 retw $0x7ace
822 // CHECK: lretw $31438
823 // CHECK: encoding: [0x66,0xca,0xce,0x7a]
824 lretw $0x7ace
826 // PR8592
827 lretq // CHECK: lretq # encoding: [0x48,0xcb]
828 lretl // CHECK: lretl # encoding: [0xcb]
829 lret // CHECK: lretl # encoding: [0xcb]
831 // rdar://8403907
832 sysret
833 // CHECK: sysretl
834 // CHECK: encoding: [0x0f,0x07]
835 sysretl
836 // CHECK: sysretl
837 // CHECK: encoding: [0x0f,0x07]
838 sysretq
839 // CHECK: sysretq
840 // CHECK: encoding: [0x48,0x0f,0x07]
842 // rdar://8407242
843 push %fs
844 // CHECK: pushq %fs
845 // CHECK: encoding: [0x0f,0xa0]
846 push %gs
847 // CHECK: pushq %gs
848 // CHECK: encoding: [0x0f,0xa8]
850 pushw %fs
851 // CHECK: pushw %fs
852 // CHECK: encoding: [0x66,0x0f,0xa0]
853 pushw %gs
854 // CHECK: pushw %gs
855 // CHECK: encoding: [0x66,0x0f,0xa8]
858 pop %fs
859 // CHECK: popq %fs
860 // CHECK: encoding: [0x0f,0xa1]
861 pop %gs
862 // CHECK: popq %gs
863 // CHECK: encoding: [0x0f,0xa9]
865 popw %fs
866 // CHECK: popw %fs
867 // CHECK: encoding: [0x66,0x0f,0xa1]
868 popw %gs
869 // CHECK: popw %gs
870 // CHECK: encoding: [0x66,0x0f,0xa9]
872 // rdar://8438816
873 fildq -8(%rsp)
874 fildll -8(%rsp)
875 // CHECK: fildll -8(%rsp)
876 // CHECK: encoding: [0xdf,0x6c,0x24,0xf8]
877 // CHECK: fildll -8(%rsp)
878 // CHECK: encoding: [0xdf,0x6c,0x24,0xf8]
880 // CHECK: callq a
881 callq a
883 // CHECK: leaq -40(%rbp), %r15
884 leaq -40(%rbp), %r15
888 // rdar://8013734 - Alias dr6=db6
889 mov %dr6, %rax
890 mov %db6, %rax
891 // CHECK: movq %dr6, %rax
892 // CHECK: movq %dr6, %rax
895 // INC/DEC encodings.
896 incb %al // CHECK: incb %al # encoding: [0xfe,0xc0]
897 incw %ax // CHECK: incw %ax # encoding: [0x66,0xff,0xc0]
898 incl %eax // CHECK: incl %eax # encoding: [0xff,0xc0]
899 decb %al // CHECK: decb %al # encoding: [0xfe,0xc8]
900 decw %ax // CHECK: decw %ax # encoding: [0x66,0xff,0xc8]
901 decl %eax // CHECK: decl %eax # encoding: [0xff,0xc8]
903 // rdar://8416805
904 // CHECK: lgdt 4(%rax)
905 // CHECK: encoding: [0x0f,0x01,0x50,0x04]
906 lgdt 4(%rax)
908 // CHECK: lgdt 4(%rax)
909 // CHECK: encoding: [0x0f,0x01,0x50,0x04]
910 lgdtq 4(%rax)
912 // CHECK: lidt 4(%rax)
913 // CHECK: encoding: [0x0f,0x01,0x58,0x04]
914 lidt 4(%rax)
916 // CHECK: lidt 4(%rax)
917 // CHECK: encoding: [0x0f,0x01,0x58,0x04]
918 lidtq 4(%rax)
920 // CHECK: sgdt 4(%rax)
921 // CHECK: encoding: [0x0f,0x01,0x40,0x04]
922 sgdt 4(%rax)
924 // CHECK: sgdt 4(%rax)
925 // CHECK: encoding: [0x0f,0x01,0x40,0x04]
926 sgdtq 4(%rax)
928 // CHECK: sidt 4(%rax)
929 // CHECK: encoding: [0x0f,0x01,0x48,0x04]
930 sidt 4(%rax)
932 // CHECK: sidt 4(%rax)
933 // CHECK: encoding: [0x0f,0x01,0x48,0x04]
934 sidtq 4(%rax)
937 // rdar://8208615
938 mov (%rsi), %gs // CHECK: movl (%rsi), %gs # encoding: [0x8e,0x2e]
939 mov %gs, (%rsi) // CHECK: movl %gs, (%rsi) # encoding: [0x8c,0x2e]
942 // rdar://8431864
943 div %bl,%al
944 div %bx,%ax
945 div %ecx,%eax
946 div 0xdeadbeef(%ebx,%ecx,8),%eax
947 div 0x45,%eax
948 div 0x7eed,%eax
949 div 0xbabecafe,%eax
950 div 0x12345678,%eax
951 idiv %bl,%al
952 idiv %bx,%ax
953 idiv %ecx,%eax
954 idiv 0xdeadbeef(%ebx,%ecx,8),%eax
955 idiv 0x45,%eax
956 idiv 0x7eed,%eax
957 idiv 0xbabecafe,%eax
958 idiv 0x12345678,%eax
960 // PR8524
961 movd %rax, %mm5 // CHECK: movd %rax, %mm5 # encoding: [0x48,0x0f,0x6e,0xe8]
962 movd %mm5, %rbx // CHECK: movd %mm5, %rbx # encoding: [0x48,0x0f,0x7e,0xeb]
963 movq %rax, %mm5 // CHECK: movd %rax, %mm5 # encoding: [0x48,0x0f,0x6e,0xe8]
964 movq %mm5, %rbx // CHECK: movd %mm5, %rbx # encoding: [0x48,0x0f,0x7e,0xeb]
966 rex64 // CHECK: rex64 # encoding: [0x48]
967 data16 // CHECK: data16 # encoding: [0x66]
969 // PR8855
970 movq 18446744073709551615,%rbx // CHECK: movq -1, %rbx
972 // PR8946
973 movdqu %xmm0, %xmm1 // CHECK: movdqu %xmm0, %xmm1 # encoding: [0xf3,0x0f,0x6f,0xc8]
975 // PR8935
976 xgetbv // CHECK: xgetbv # encoding: [0x0f,0x01,0xd0]
977 xsetbv // CHECK: xsetbv # encoding: [0x0f,0x01,0xd1]
979 // CHECK: loope 0
980 // CHECK: encoding: [0xe1,A]
981 loopz 0
983 // CHECK: loopne 0
984 // CHECK: encoding: [0xe0,A]
985 loopnz 0
987 // CHECK: outsb # encoding: [0x6e]
988 // CHECK: outsb
989 // CHECK: outsb
990 outsb
991 outsb %ds:(%rsi), %dx
992 outsb (%rsi), %dx
994 // CHECK: outsw # encoding: [0x66,0x6f]
995 // CHECK: outsw
996 // CHECK: outsw
997 outsw
998 outsw %ds:(%rsi), %dx
999 outsw (%rsi), %dx
1001 // CHECK: outsl # encoding: [0x6f]
1002 // CHECK: outsl
1003 outsl
1004 outsl %ds:(%rsi), %dx
1005 outsl (%rsi), %dx
1007 // CHECK: insb # encoding: [0x6c]
1008 // CHECK: insb
1009 insb
1010 insb %dx, %es:(%rdi)
1012 // CHECK: insw # encoding: [0x66,0x6d]
1013 // CHECK: insw
1014 insw
1015 insw %dx, %es:(%rdi)
1017 // CHECK: insl # encoding: [0x6d]
1018 // CHECK: insl
1019 insl
1020 insl %dx, %es:(%rdi)
1022 // CHECK: movsb # encoding: [0xa4]
1023 // CHECK: movsb
1024 // CHECK: movsb
1025 movsb
1026 movsb %ds:(%rsi), %es:(%rdi)
1027 movsb (%rsi), %es:(%rdi)
1029 // CHECK: movsw # encoding: [0x66,0xa5]
1030 // CHECK: movsw
1031 // CHECK: movsw
1032 movsw
1033 movsw %ds:(%rsi), %es:(%rdi)
1034 movsw (%rsi), %es:(%rdi)
1036 // CHECK: movsd # encoding: [0xa5]
1037 // CHECK: movsd
1038 // CHECK: movsd
1039 movsl
1040 movsl %ds:(%rsi), %es:(%rdi)
1041 movsl (%rsi), %es:(%rdi)
1043 // CHECK: movsq # encoding: [0x48,0xa5]
1044 // CHECK: movsq
1045 // CHECK: movsq
1046 movsq
1047 movsq %ds:(%rsi), %es:(%rdi)
1048 movsq (%rsi), %es:(%rdi)
1050 // CHECK: lodsb # encoding: [0xac]
1051 // CHECK: lodsb
1052 // CHECK: lodsb
1053 // CHECK: lodsb
1054 // CHECK: lodsb
1055 lodsb
1056 lodsb %ds:(%rsi), %al
1057 lodsb (%rsi), %al
1058 lods %ds:(%rsi), %al
1059 lods (%rsi), %al
1061 // CHECK: lodsw # encoding: [0x66,0xad]
1062 // CHECK: lodsw
1063 // CHECK: lodsw
1064 // CHECK: lodsw
1065 // CHECK: lodsw
1066 lodsw
1067 lodsw %ds:(%rsi), %ax
1068 lodsw (%rsi), %ax
1069 lods %ds:(%rsi), %ax
1070 lods (%rsi), %ax
1072 // CHECK: lodsl # encoding: [0xad]
1073 // CHECK: lodsl
1074 // CHECK: lodsl
1075 // CHECK: lodsl
1076 // CHECK: lodsl
1077 lodsl
1078 lodsl %ds:(%rsi), %eax
1079 lodsl (%rsi), %eax
1080 lods %ds:(%rsi), %eax
1081 lods (%rsi), %eax
1083 // CHECK: lodsq # encoding: [0x48,0xad]
1084 // CHECK: lodsq
1085 // CHECK: lodsq
1086 // CHECK: lodsq
1087 // CHECK: lodsq
1088 lodsq
1089 lodsq %ds:(%rsi), %rax
1090 lodsq (%rsi), %rax
1091 lods %ds:(%rsi), %rax
1092 lods (%rsi), %rax
1094 // CHECK: stosb # encoding: [0xaa]
1095 // CHECK: stosb
1096 // CHECK: stosb
1097 stosb
1098 stosb %al, %es:(%rdi)
1099 stos %al, %es:(%rdi)
1101 // CHECK: stosw # encoding: [0x66,0xab]
1102 // CHECK: stosw
1103 // CHECK: stosw
1104 stosw
1105 stosw %ax, %es:(%rdi)
1106 stos %ax, %es:(%rdi)
1108 // CHECK: stosl # encoding: [0xab]
1109 // CHECK: stosl
1110 // CHECK: stosl
1111 stosl
1112 stosl %eax, %es:(%rdi)
1113 stos %eax, %es:(%rdi)
1115 // CHECK: stosq # encoding: [0x48,0xab]
1116 // CHECK: stosq
1117 // CHECK: stosq
1118 stosq
1119 stosq %rax, %es:(%rdi)
1120 stos %rax, %es:(%rdi)
1122 // CHECK: strw
1123 // CHECK: encoding: [0x66,0x0f,0x00,0xc8]
1124 str %ax
1126 // CHECK: strl
1127 // CHECK: encoding: [0x0f,0x00,0xc8]
1128 str %eax
1130 // CHECK: strw
1131 // CHECK: encoding: [0x66,0x0f,0x00,0xc8]
1132 str %ax
1134 // CHECK: strq
1135 // CHECK: encoding: [0x48,0x0f,0x00,0xc8]
1136 str %rax
1138 // CHECK: movd %rdi, %xmm0
1139 // CHECK: encoding: [0x66,0x48,0x0f,0x6e,0xc7]
1140 movq %rdi,%xmm0
1142 // CHECK: movd %rdi, %xmm0
1143 // CHECK: encoding: [0x66,0x48,0x0f,0x6e,0xc7]
1144 movd %rdi,%xmm0
1146 // CHECK: movntil %eax, (%rdi)
1147 // CHECK: encoding: [0x0f,0xc3,0x07]
1148 // CHECK: movntil
1149 movntil %eax, (%rdi)
1150 movnti %eax, (%rdi)
1152 // CHECK: movntiq %rax, (%rdi)
1153 // CHECK: encoding: [0x48,0x0f,0xc3,0x07]
1154 // CHECK: movntiq
1155 movntiq %rax, (%rdi)
1156 movnti %rax, (%rdi)
1158 // CHECK: pclmulqdq $17, %xmm0, %xmm1
1159 // CHECK: encoding: [0x66,0x0f,0x3a,0x44,0xc8,0x11]
1160 pclmulhqhqdq %xmm0, %xmm1
1162 // CHECK: pclmulqdq $1, %xmm0, %xmm1
1163 // CHECK: encoding: [0x66,0x0f,0x3a,0x44,0xc8,0x01]
1164 pclmulqdq $1, %xmm0, %xmm1
1166 // CHECK: pclmulqdq $16, (%rdi), %xmm1
1167 // CHECK: encoding: [0x66,0x0f,0x3a,0x44,0x0f,0x10]
1168 pclmullqhqdq (%rdi), %xmm1
1170 // CHECK: pclmulqdq $0, (%rdi), %xmm1
1171 // CHECK: encoding: [0x66,0x0f,0x3a,0x44,0x0f,0x00]
1172 pclmulqdq $0, (%rdi), %xmm1