x86-64.s revision 86d822df6d9a484b3672b2a909641262663a45dc
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 4 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] 17 18// Suffix inference: 19 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 28 29 30// CHECK: subb %al, %al 31 subb %al, %al 32 33// CHECK: addl $24, %eax 34 addl $24, %eax 35 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) 44 45// CHECK: movl 0, %eax 46 movl 0, %eax 47// CHECK: movl $0, %eax 48 movl $0, %eax 49 50// CHECK: ret 51 ret 52 53// FIXME: Check that this matches SUB32ri8 54// CHECK: subl $1, %eax 55 subl $1, %eax 56 57// FIXME: Check that this matches SUB32ri8 58// CHECK: subl $-1, %eax 59 subl $-1, %eax 60 61// FIXME: Check that this matches SUB32ri 62// CHECK: subl $256, %eax 63 subl $256, %eax 64 65// FIXME: Check that this matches XOR64ri8 66// CHECK: xorq $1, %rax 67 xorq $1, %rax 68 69// FIXME: Check that this matches XOR64ri32 70// CHECK: xorq $256, %rax 71 xorq $256, %rax 72 73// FIXME: Check that this matches SUB8rr 74// CHECK: subb %al, %bl 75 subb %al, %bl 76 77// FIXME: Check that this matches SUB16rr 78// CHECK: subw %ax, %bx 79 subw %ax, %bx 80 81// FIXME: Check that this matches SUB32rr 82// CHECK: subl %eax, %ebx 83 subl %eax, %ebx 84 85// FIXME: Check that this matches the correct instruction. 86// CHECK: callq *%rax 87 call *%rax 88 89// FIXME: Check that this matches the correct instruction. 90// CHECK: shldl %cl, %eax, %ebx 91 shldl %cl, %eax, %ebx 92 93// CHECK: shll $2, %eax 94 shll $2, %eax 95 96// CHECK: shll $2, %eax 97 sall $2, %eax 98 99// CHECK: rep 100// CHECK: insb 101 rep;insb 102 103// CHECK: rep 104// CHECK: outsb 105 rep;outsb 106 107// CHECK: rep 108// CHECK: movsb 109 rep;movsb 110 111 112// rdar://8470918 113smovb // CHECK: movsb 114smovw // CHECK: movsw 115smovl // CHECK: movsl 116smovq // CHECK: movsq 117 118// rdar://8456361 119// CHECK: rep 120// CHECK: movsl 121 rep movsd 122 123// CHECK: rep 124// CHECK: lodsb 125 rep;lodsb 126 127// CHECK: rep 128// CHECK: stosb 129 rep;stosb 130 131// NOTE: repz and repe have the same opcode as rep 132// CHECK: rep 133// CHECK: cmpsb 134 repz;cmpsb 135 136// NOTE: repnz has the same opcode as repne 137// CHECK: repne 138// CHECK: cmpsb 139 repnz;cmpsb 140 141// NOTE: repe and repz have the same opcode as rep 142// CHECK: rep 143// CHECK: scasb 144 repe;scasb 145 146// CHECK: repne 147// CHECK: scasb 148 repne;scasb 149 150// CHECK: lock 151// CHECK: cmpxchgb %al, (%ebx) 152 lock;cmpxchgb %al, 0(%ebx) 153 154// CHECK: cs 155// CHECK: movb (%eax), %al 156 cs;movb 0(%eax), %al 157 158// CHECK: ss 159// CHECK: movb (%eax), %al 160 ss;movb 0(%eax), %al 161 162// CHECK: ds 163// CHECK: movb (%eax), %al 164 ds;movb 0(%eax), %al 165 166// CHECK: es 167// CHECK: movb (%eax), %al 168 es;movb 0(%eax), %al 169 170// CHECK: fs 171// CHECK: movb (%eax), %al 172 fs;movb 0(%eax), %al 173 174// CHECK: gs 175// CHECK: movb (%eax), %al 176 gs;movb 0(%eax), %al 177 178// CHECK: fadd %st(0) 179// CHECK: fadd %st(1) 180// CHECK: fadd %st(7) 181 182fadd %st(0) 183fadd %st(1) 184fadd %st(7) 185 186// CHECK: leal 0, %eax 187 leal 0, %eax 188 189// rdar://7986634 - Insensitivity on opcodes. 190// CHECK: int3 191INT3 192 193 194// Allow scale factor without index register. 195// CHECK: movaps %xmm3, (%esi) 196// CHECK-STDERR: warning: scale factor without index register is ignored 197movaps %xmm3, (%esi, 2) 198 199// CHECK: imull $12, %eax, %eax 200imul $12, %eax 201 202// CHECK: imull %ecx, %eax 203imull %ecx, %eax 204 205 206// rdar://8208481 207// CHECK: outb %al, $161 208outb %al, $161 209// CHECK: outw %ax, $128 210outw %ax, $128 211// CHECK: inb $161, %al 212inb $161, %al 213 214// rdar://8017621 215// CHECK: pushq $1 216push $1 217 218// rdar://8017530 219// CHECK: sldtw 4 220sldt 4 221 222// rdar://8208499 223// CHECK: cmovnew %bx, %ax 224cmovnz %bx, %ax 225// CHECK: cmovneq %rbx, %rax 226cmovnzq %rbx, %rax 227 228 229// rdar://8407928 230// CHECK: inb $127, %al 231// CHECK: inw %dx, %ax 232// CHECK: outb %al, $127 233// CHECK: outw %ax, %dx 234// CHECK: inl %dx, %eax 235inb $0x7f 236inw %dx 237outb $0x7f 238outw %dx 239inl %dx 240 241 242// PR8114 243// CHECK: outb %al, %dx 244// CHECK: outb %al, %dx 245// CHECK: outw %ax, %dx 246// CHECK: outw %ax, %dx 247// CHECK: outl %eax, %dx 248// CHECK: outl %eax, %dx 249 250out %al, (%dx) 251outb %al, (%dx) 252out %ax, (%dx) 253outw %ax, (%dx) 254out %eax, (%dx) 255outl %eax, (%dx) 256 257// CHECK: inb %dx, %al 258// CHECK: inb %dx, %al 259// CHECK: inw %dx, %ax 260// CHECK: inw %dx, %ax 261// CHECK: inl %dx, %eax 262// CHECK: inl %dx, %eax 263 264in (%dx), %al 265inb (%dx), %al 266in (%dx), %ax 267inw (%dx), %ax 268in (%dx), %eax 269inl (%dx), %eax 270 271// rdar://8431422 272 273// CHECK: fxch %st(1) 274// CHECK: fucom %st(1) 275// CHECK: fucomp %st(1) 276// CHECK: faddp %st(1) 277// CHECK: faddp %st(0) 278// CHECK: fsubp %st(1) 279// CHECK: fsubrp %st(1) 280// CHECK: fmulp %st(1) 281// CHECK: fdivp %st(1) 282// CHECK: fdivrp %st(1) 283 284fxch 285fucom 286fucomp 287faddp 288faddp %st 289fsubp 290fsubrp 291fmulp 292fdivp 293fdivrp 294 295// CHECK: fcomi %st(1) 296// CHECK: fcomi %st(2) 297// CHECK: fucomi %st(1) 298// CHECK: fucomi %st(2) 299// CHECK: fucomi %st(2) 300 301fcomi 302fcomi %st(2) 303fucomi 304fucomi %st(2) 305fucomi %st(2), %st 306 307// CHECK: fnstsw %ax 308// CHECK: fnstsw %ax 309// CHECK: fnstsw %ax 310// CHECK: fnstsw %ax 311 312fnstsw 313fnstsw %ax 314fnstsw %eax 315fnstsw %al 316 317// rdar://8431880 318// CHECK: rclb %bl 319// CHECK: rcll 3735928559(%ebx,%ecx,8) 320// CHECK: rcrl %ecx 321// CHECK: rcrl 305419896 322rcl %bl 323rcll 0xdeadbeef(%ebx,%ecx,8) 324rcr %ecx 325rcrl 0x12345678 326 327rclb %bl // CHECK: rclb %bl # encoding: [0xd0,0xd3] 328rclb $1, %bl // CHECK: rclb %bl # encoding: [0xd0,0xd3] 329rclb $2, %bl // CHECK: rclb $2, %bl # encoding: [0xc0,0xd3,0x02] 330 331// rdar://8418316 332// CHECK: shldw $1, %bx, %bx 333// CHECK: shldw $1, %bx, %bx 334// CHECK: shrdw $1, %bx, %bx 335// CHECK: shrdw $1, %bx, %bx 336 337shld %bx,%bx 338shld $1, %bx,%bx 339shrd %bx,%bx 340shrd $1, %bx,%bx 341 342// CHECK: sldtl %ecx 343// CHECK: encoding: [0x0f,0x00,0xc1] 344// CHECK: sldtw %cx 345// CHECK: encoding: [0x66,0x0f,0x00,0xc1] 346 347sldt %ecx 348sldt %cx 349 350// CHECK: lcalll *3135175374 351// CHECK: ljmpl *3135175374 352lcall *0xbadeface 353ljmp *0xbadeface 354 355 356// rdar://8444631 357// CHECK: enter $31438, $0 358// CHECK: encoding: [0xc8,0xce,0x7a,0x00] 359// CHECK: enter $31438, $1 360// CHECK: encoding: [0xc8,0xce,0x7a,0x01] 361// CHECK: enter $31438, $127 362// CHECK: encoding: [0xc8,0xce,0x7a,0x7f] 363enter $0x7ace,$0 364enter $0x7ace,$1 365enter $0x7ace,$0x7f 366 367 368// rdar://8456364 369// CHECK: movw %cs, %ax 370mov %CS, %ax 371 372// rdar://8456391 373fcmovb %st(1), %st(0) // CHECK: fcmovb %st(1), %st(0) 374fcmove %st(1), %st(0) // CHECK: fcmove %st(1), %st(0) 375fcmovbe %st(1), %st(0) // CHECK: fcmovbe %st(1), %st(0) 376fcmovu %st(1), %st(0) // CHECK: fcmovu %st(1), %st(0) 377 378fcmovnb %st(1), %st(0) // CHECK: fcmovnb %st(1), %st(0) 379fcmovne %st(1), %st(0) // CHECK: fcmovne %st(1), %st(0) 380fcmovnbe %st(1), %st(0) // CHECK: fcmovnbe %st(1), %st(0) 381fcmovnu %st(1), %st(0) // CHECK: fcmovnu %st(1), %st(0) 382 383fcmovnae %st(1), %st(0) // CHECK: fcmovb %st(1), %st(0) 384fcmovna %st(1), %st(0) // CHECK: fcmovbe %st(1), %st(0) 385 386fcmovae %st(1), %st(0) // CHECK: fcmovnb %st(1), %st(0) 387fcmova %st(1), %st(0) // CHECK: fcmovnbe %st(1), %st(0) 388 389// rdar://8456417 390.byte 88 + 1 & 15 // CHECK: .byte 9 391 392// rdar://8456412 393mov %rdx, %cr0 394// CHECK: movq %rdx, %cr0 395// CHECK: encoding: [0x0f,0x22,0xc2] 396mov %rdx, %cr4 397// CHECK: movq %rdx, %cr4 398// CHECK: encoding: [0x0f,0x22,0xe2] 399mov %rdx, %cr8 400// CHECK: movq %rdx, %cr8 401// CHECK: encoding: [0x44,0x0f,0x22,0xc2] 402mov %rdx, %cr15 403// CHECK: movq %rdx, %cr15 404// CHECK: encoding: [0x44,0x0f,0x22,0xfa] 405 406// rdar://8456371 - Handle commutable instructions written backward. 407// CHECK: faddp %st(1) 408// CHECK: fmulp %st(2) 409faddp %st, %st(1) 410fmulp %st, %st(2) 411 412// rdar://8468087 - Encode these accurately, they are not synonyms. 413// CHECK: fmul %st(0), %st(1) 414// CHECK: encoding: [0xdc,0xc9] 415// CHECK: fmul %st(1) 416// CHECK: encoding: [0xd8,0xc9] 417fmul %st, %st(1) 418fmul %st(1), %st 419 420// CHECK: fadd %st(0), %st(1) 421// CHECK: encoding: [0xdc,0xc1] 422// CHECK: fadd %st(1) 423// CHECK: encoding: [0xd8,0xc1] 424fadd %st, %st(1) 425fadd %st(1), %st 426 427 428// rdar://8416805 429// CHECK: xorb %al, %al 430// CHECK: encoding: [0x30,0xc0] 431// CHECK: xorw %di, %di 432// CHECK: encoding: [0x66,0x31,0xff] 433// CHECK: xorl %esi, %esi 434// CHECK: encoding: [0x31,0xf6] 435// CHECK: xorq %rsi, %rsi 436// CHECK: encoding: [0x48,0x31,0xf6] 437clrb %al 438clr %di 439clr %esi 440clr %rsi 441 442// rdar://8456378 443cltq // CHECK: cltq 444cdqe // CHECK: cltq 445cwde // CHECK: cwtl 446cwtl // CHECK: cwtl 447 448// rdar://8416805 449cbw // CHECK: cbtw 450cwd // CHECK: cwtd 451cdq // CHECK: cltd 452 453// rdar://8456378 and PR7557 - fstsw 454fstsw %ax 455// CHECK: wait 456// CHECK: fnstsw %ax 457fstsw (%rax) 458// CHECK: wait 459// CHECK: fnstsw (%rax) 460 461// PR8259 462fstcw (%rsp) 463// CHECK: wait 464// CHECK: fnstcw (%rsp) 465 466// PR8259 467fstcw (%rsp) 468// CHECK: wait 469// CHECK: fnstcw (%rsp) 470 471// PR8258 472finit 473// CHECK: wait 474// CHECK: fninit 475 476fsave 32493 477// CHECK: wait 478// CHECK: fnsave 32493 479 480 481// rdar://8456382 - cvtsd2si support. 482cvtsd2si %xmm1, %rax 483// CHECK: cvtsd2siq %xmm1, %rax 484// CHECK: encoding: [0xf2,0x48,0x0f,0x2d,0xc1] 485cvtsd2si %xmm1, %eax 486// CHECK: cvtsd2sil %xmm1, %eax 487// CHECK: encoding: [0xf2,0x0f,0x2d,0xc1] 488 489cvtsd2siq %xmm0, %rax // CHECK: cvtsd2siq %xmm0, %rax 490cvtsd2sil %xmm0, %eax // CHECK: cvtsd2sil %xmm0, %eax 491cvtsd2si %xmm0, %rax // CHECK: cvtsd2siq %xmm0, %rax 492 493 494cvttpd2dq %xmm1, %xmm0 // CHECK: cvttpd2dq %xmm1, %xmm0 495cvttpd2dq (%rax), %xmm0 // CHECK: cvttpd2dq (%rax), %xmm0 496 497cvttps2dq %xmm1, %xmm0 // CHECK: cvttps2dq %xmm1, %xmm0 498cvttps2dq (%rax), %xmm0 // CHECK: cvttps2dq (%rax), %xmm0 499 500// rdar://8456376 - llvm-mc rejects 'roundss' 501roundss $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x0a,0xc0,0x0e] 502roundps $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x08,0xc0,0x0e] 503roundsd $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x0b,0xc0,0x0e] 504roundpd $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x09,0xc0,0x0e] 505 506 507// rdar://8482675 - 32-bit mem operand support in 64-bit mode (0x67 prefix) 508leal 8(%eax), %esi 509// CHECK: leal 8(%eax), %esi 510// CHECK: encoding: [0x67,0x8d,0x70,0x08] 511leaq 8(%eax), %rsi 512// CHECK: leaq 8(%eax), %rsi 513// CHECK: encoding: [0x67,0x48,0x8d,0x70,0x08] 514leaq 8(%rax), %rsi 515// CHECK: leaq 8(%rax), %rsi 516// CHECK: encoding: [0x48,0x8d,0x70,0x08] 517 518 519cvttpd2dq 0xdeadbeef(%ebx,%ecx,8),%xmm5 520// CHECK: cvttpd2dq 3735928559(%ebx,%ecx,8), %xmm5 521// CHECK: encoding: [0x67,0x66,0x0f,0xe6,0xac,0xcb,0xef,0xbe,0xad,0xde] 522 523// rdar://8490728 - llvm-mc rejects 'movmskpd' 524movmskpd %xmm6, %rax 525// CHECK: movmskpd %xmm6, %rax 526// CHECK: encoding: [0x66,0x48,0x0f,0x50,0xc6] 527movmskpd %xmm6, %eax 528// CHECK: movmskpd %xmm6, %eax 529// CHECK: encoding: [0x66,0x0f,0x50,0xc6] 530 531// rdar://8491845 - Gas supports commuted forms of non-commutable instructions. 532fdivrp %st(0), %st(1) // CHECK: encoding: [0xde,0xf9] 533fdivrp %st(1), %st(0) // CHECK: encoding: [0xde,0xf9] 534 535fsubrp %ST(0), %ST(1) // CHECK: encoding: [0xde,0xe9] 536fsubrp %ST(1), %ST(0) // CHECK: encoding: [0xde,0xe9] 537 538// also PR8861 539fdivp %st(0), %st(1) // CHECK: encoding: [0xde,0xf1] 540fdivp %st(1), %st(0) // CHECK: encoding: [0xde,0xf1] 541 542 543movl foo(%rip), %eax 544// CHECK: movl foo(%rip), %eax 545// CHECK: encoding: [0x8b,0x05,A,A,A,A] 546// CHECK: fixup A - offset: 2, value: foo-4, kind: reloc_riprel_4byte 547 548movb $12, foo(%rip) 549// CHECK: movb $12, foo(%rip) 550// CHECK: encoding: [0xc6,0x05,A,A,A,A,0x0c] 551// CHECK: fixup A - offset: 2, value: foo-5, kind: reloc_riprel_4byte 552 553movw $12, foo(%rip) 554// CHECK: movw $12, foo(%rip) 555// CHECK: encoding: [0x66,0xc7,0x05,A,A,A,A,0x0c,0x00] 556// CHECK: fixup A - offset: 3, value: foo-6, kind: reloc_riprel_4byte 557 558movl $12, foo(%rip) 559// CHECK: movl $12, foo(%rip) 560// CHECK: encoding: [0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00] 561// CHECK: fixup A - offset: 2, value: foo-8, kind: reloc_riprel_4byte 562 563movq $12, foo(%rip) 564// CHECK: movq $12, foo(%rip) 565// CHECK: encoding: [0x48,0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00] 566// CHECK: fixup A - offset: 3, value: foo-8, kind: reloc_riprel_4byte 567 568// CHECK: addq $-424, %rax 569// CHECK: encoding: [0x48,0x05,0x58,0xfe,0xff,0xff] 570addq $-424, %rax 571 572 573// CHECK: movq _foo@GOTPCREL(%rip), %rax 574// CHECK: encoding: [0x48,0x8b,0x05,A,A,A,A] 575// CHECK: fixup A - offset: 3, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load 576movq _foo@GOTPCREL(%rip), %rax 577 578// CHECK: movq _foo@GOTPCREL(%rip), %r14 579// CHECK: encoding: [0x4c,0x8b,0x35,A,A,A,A] 580// CHECK: fixup A - offset: 3, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load 581movq _foo@GOTPCREL(%rip), %r14 582 583 584// CHECK: movq (%r13,%rax,8), %r13 585// CHECK: encoding: [0x4d,0x8b,0x6c,0xc5,0x00] 586movq 0x00(%r13,%rax,8),%r13 587 588// CHECK: testq %rax, %rbx 589// CHECK: encoding: [0x48,0x85,0xd8] 590testq %rax, %rbx 591 592// CHECK: cmpq %rbx, %r14 593// CHECK: encoding: [0x49,0x39,0xde] 594 cmpq %rbx, %r14 595 596// rdar://7947167 597 598movsq 599// CHECK: movsq 600// CHECK: encoding: [0x48,0xa5] 601 602movsl 603// CHECK: movsl 604// CHECK: encoding: [0xa5] 605 606stosq 607// CHECK: stosq 608// CHECK: encoding: [0x48,0xab] 609stosl 610// CHECK: stosl 611// CHECK: encoding: [0xab] 612 613 614// Not moffset forms of moves, they are x86-32 only! rdar://7947184 615movb 0, %al // CHECK: movb 0, %al # encoding: [0x8a,0x04,0x25,0x00,0x00,0x00,0x00] 616movw 0, %ax // CHECK: movw 0, %ax # encoding: [0x66,0x8b,0x04,0x25,0x00,0x00,0x00,0x00] 617movl 0, %eax // CHECK: movl 0, %eax # encoding: [0x8b,0x04,0x25,0x00,0x00,0x00,0x00] 618 619// CHECK: pushfq # encoding: [0x9c] 620 pushf 621// CHECK: pushfq # encoding: [0x9c] 622 pushfq 623// CHECK: popfq # encoding: [0x9d] 624 popf 625// CHECK: popfq # encoding: [0x9d] 626 popfq 627 628// CHECK: movabsq $-281474976710654, %rax 629// CHECK: encoding: [0x48,0xb8,0x02,0x00,0x00,0x00,0x00,0x00,0xff,0xff] 630 movabsq $0xFFFF000000000002, %rax 631 632// CHECK: movabsq $-281474976710654, %rax 633// CHECK: encoding: [0x48,0xb8,0x02,0x00,0x00,0x00,0x00,0x00,0xff,0xff] 634 movq $0xFFFF000000000002, %rax 635 636// CHECK: movq $-65536, %rax 637// CHECK: encoding: [0x48,0xc7,0xc0,0x00,0x00,0xff,0xff] 638 movq $0xFFFFFFFFFFFF0000, %rax 639 640// CHECK: movq $-256, %rax 641// CHECK: encoding: [0x48,0xc7,0xc0,0x00,0xff,0xff,0xff] 642 movq $0xFFFFFFFFFFFFFF00, %rax 643 644// CHECK: movq $10, %rax 645// CHECK: encoding: [0x48,0xc7,0xc0,0x0a,0x00,0x00,0x00] 646 movq $10, %rax 647 648// rdar://8014869 649// 650// CHECK: ret 651// CHECK: encoding: [0xc3] 652 retq 653 654// CHECK: sete %al 655// CHECK: encoding: [0x0f,0x94,0xc0] 656 setz %al 657 658// CHECK: setne %al 659// CHECK: encoding: [0x0f,0x95,0xc0] 660 setnz %al 661 662// CHECK: je 0 663// CHECK: encoding: [0x74,A] 664 jz 0 665 666// CHECK: jne 667// CHECK: encoding: [0x75,A] 668 jnz 0 669 670// PR9264 671btl $1, 0 // CHECK: btl $1, 0 # encoding: [0x0f,0xba,0x24,0x25,0x00,0x00,0x00,0x00,0x01] 672bt $1, 0 // CHECK: btl $1, 0 # encoding: [0x0f,0xba,0x24,0x25,0x00,0x00,0x00,0x00,0x01] 673 674// rdar://8017515 675btq $0x01,%rdx 676// CHECK: btq $1, %rdx 677// CHECK: encoding: [0x48,0x0f,0xba,0xe2,0x01] 678 679//rdar://8017633 680// CHECK: movzbl %al, %esi 681// CHECK: encoding: [0x0f,0xb6,0xf0] 682 movzx %al, %esi 683 684// CHECK: movzbq %al, %rsi 685// CHECK: encoding: [0x48,0x0f,0xb6,0xf0] 686 movzx %al, %rsi 687 688// CHECK: movsbw %al, %ax 689// CHECK: encoding: [0x66,0x0f,0xbe,0xc0] 690movsx %al, %ax 691 692// CHECK: movsbl %al, %eax 693// CHECK: encoding: [0x0f,0xbe,0xc0] 694movsx %al, %eax 695 696// CHECK: movswl %ax, %eax 697// CHECK: encoding: [0x0f,0xbf,0xc0] 698movsx %ax, %eax 699 700// CHECK: movsbq %bl, %rax 701// CHECK: encoding: [0x48,0x0f,0xbe,0xc3] 702movsx %bl, %rax 703 704// CHECK: movswq %cx, %rax 705// CHECK: encoding: [0x48,0x0f,0xbf,0xc1] 706movsx %cx, %rax 707 708// CHECK: movslq %edi, %rax 709// CHECK: encoding: [0x48,0x63,0xc7] 710movsx %edi, %rax 711 712// CHECK: movzbw %al, %ax 713// CHECK: encoding: [0x66,0x0f,0xb6,0xc0] 714movzx %al, %ax 715 716// CHECK: movzbl %al, %eax 717// CHECK: encoding: [0x0f,0xb6,0xc0] 718movzx %al, %eax 719 720// CHECK: movzwl %ax, %eax 721// CHECK: encoding: [0x0f,0xb7,0xc0] 722movzx %ax, %eax 723 724// CHECK: movzbq %bl, %rax 725// CHECK: encoding: [0x48,0x0f,0xb6,0xc3] 726movzx %bl, %rax 727 728// CHECK: movzwq %cx, %rax 729// CHECK: encoding: [0x48,0x0f,0xb7,0xc1] 730movzx %cx, %rax 731 732// CHECK: movsbw (%rax), %ax 733// CHECK: encoding: [0x66,0x0f,0xbe,0x00] 734movsx (%rax), %ax 735 736// CHECK: movzbw (%rax), %ax 737// CHECK: encoding: [0x66,0x0f,0xb6,0x00] 738movzx (%rax), %ax 739 740 741// rdar://7873482 742// CHECK: [0x65,0x8b,0x04,0x25,0x7c,0x00,0x00,0x00] 743 movl %gs:124, %eax 744 745// CHECK: jmpq *8(%rax) 746// CHECK: encoding: [0xff,0x60,0x08] 747 jmp *8(%rax) 748 749// CHECK: btq $61, -216(%rbp) 750// CHECK: encoding: [0x48,0x0f,0xba,0xa5,0x28,0xff,0xff,0xff,0x3d] 751 btq $61, -216(%rbp) 752 753 754// rdar://8061602 755L1: 756 jecxz L1 757// CHECK: jecxz L1 758// CHECK: encoding: [0x67,0xe3,A] 759 jrcxz L1 760// CHECK: jrcxz L1 761// CHECK: encoding: [0xe3,A] 762 763// PR8061 764xchgl 368(%rax),%ecx 765// CHECK: xchgl %ecx, 368(%rax) 766xchgl %ecx, 368(%rax) 767// CHECK: xchgl %ecx, 368(%rax) 768 769// rdar://8407548 770xchg 0xdeadbeef(%rbx,%rcx,8),%bl 771// CHECK: xchgb %bl, 3735928559(%rbx,%rcx,8) 772 773 774 775// PR7254 776lock incl 1(%rsp) 777// CHECK: lock 778// CHECK: incl 1(%rsp) 779 780// rdar://8741045 781lock/incl 1(%rsp) 782// CHECK: lock 783// CHECK: incl 1(%rsp) 784 785// rdar://8033482 786rep movsl 787// CHECK: rep 788// CHECK: encoding: [0xf3] 789// CHECK: movsl 790// CHECK: encoding: [0xa5] 791 792 793// rdar://8403974 794iret 795// CHECK: iretl 796// CHECK: encoding: [0xcf] 797iretw 798// CHECK: iretw 799// CHECK: encoding: [0x66,0xcf] 800iretl 801// CHECK: iretl 802// CHECK: encoding: [0xcf] 803iretq 804// CHECK: iretq 805// CHECK: encoding: [0x48,0xcf] 806 807// rdar://8416805 808// CHECK: retw $31438 809// CHECK: encoding: [0x66,0xc2,0xce,0x7a] 810 retw $0x7ace 811 812// CHECK: lretw $31438 813// CHECK: encoding: [0x66,0xca,0xce,0x7a] 814 lretw $0x7ace 815 816// PR8592 817lretq // CHECK: lretq # encoding: [0x48,0xcb] 818lretl // CHECK: lretl # encoding: [0xcb] 819lret // CHECK: lretl # encoding: [0xcb] 820 821// rdar://8403907 822sysret 823// CHECK: sysretl 824// CHECK: encoding: [0x0f,0x07] 825sysretl 826// CHECK: sysretl 827// CHECK: encoding: [0x0f,0x07] 828sysretq 829// CHECK: sysretq 830// CHECK: encoding: [0x48,0x0f,0x07] 831 832// rdar://8407242 833push %fs 834// CHECK: pushq %fs 835// CHECK: encoding: [0x0f,0xa0] 836push %gs 837// CHECK: pushq %gs 838// CHECK: encoding: [0x0f,0xa8] 839 840pushw %fs 841// CHECK: pushw %fs 842// CHECK: encoding: [0x66,0x0f,0xa0] 843pushw %gs 844// CHECK: pushw %gs 845// CHECK: encoding: [0x66,0x0f,0xa8] 846 847 848pop %fs 849// CHECK: popq %fs 850// CHECK: encoding: [0x0f,0xa1] 851pop %gs 852// CHECK: popq %gs 853// CHECK: encoding: [0x0f,0xa9] 854 855popw %fs 856// CHECK: popw %fs 857// CHECK: encoding: [0x66,0x0f,0xa1] 858popw %gs 859// CHECK: popw %gs 860// CHECK: encoding: [0x66,0x0f,0xa9] 861 862// rdar://8438816 863fildq -8(%rsp) 864fildll -8(%rsp) 865// CHECK: fildll -8(%rsp) 866// CHECK: encoding: [0xdf,0x6c,0x24,0xf8] 867// CHECK: fildll -8(%rsp) 868// CHECK: encoding: [0xdf,0x6c,0x24,0xf8] 869 870// CHECK: callq a 871 callq a 872 873// CHECK: leaq -40(%rbp), %r15 874 leaq -40(%rbp), %r15 875 876 877 878// rdar://8013734 - Alias dr6=db6 879mov %dr6, %rax 880mov %db6, %rax 881// CHECK: movq %dr6, %rax 882// CHECK: movq %dr6, %rax 883 884 885// INC/DEC encodings. 886incb %al // CHECK: incb %al # encoding: [0xfe,0xc0] 887incw %ax // CHECK: incw %ax # encoding: [0x66,0xff,0xc0] 888incl %eax // CHECK: incl %eax # encoding: [0xff,0xc0] 889decb %al // CHECK: decb %al # encoding: [0xfe,0xc8] 890decw %ax // CHECK: decw %ax # encoding: [0x66,0xff,0xc8] 891decl %eax // CHECK: decl %eax # encoding: [0xff,0xc8] 892 893// rdar://8416805 894// CHECK: lgdt 4(%rax) 895// CHECK: encoding: [0x0f,0x01,0x50,0x04] 896 lgdt 4(%rax) 897 898// CHECK: lgdt 4(%rax) 899// CHECK: encoding: [0x0f,0x01,0x50,0x04] 900 lgdtq 4(%rax) 901 902// CHECK: lidt 4(%rax) 903// CHECK: encoding: [0x0f,0x01,0x58,0x04] 904 lidt 4(%rax) 905 906// CHECK: lidt 4(%rax) 907// CHECK: encoding: [0x0f,0x01,0x58,0x04] 908 lidtq 4(%rax) 909 910// CHECK: sgdt 4(%rax) 911// CHECK: encoding: [0x0f,0x01,0x40,0x04] 912 sgdt 4(%rax) 913 914// CHECK: sgdt 4(%rax) 915// CHECK: encoding: [0x0f,0x01,0x40,0x04] 916 sgdtq 4(%rax) 917 918// CHECK: sidt 4(%rax) 919// CHECK: encoding: [0x0f,0x01,0x48,0x04] 920 sidt 4(%rax) 921 922// CHECK: sidt 4(%rax) 923// CHECK: encoding: [0x0f,0x01,0x48,0x04] 924 sidtq 4(%rax) 925 926 927// rdar://8208615 928mov (%rsi), %gs // CHECK: movl (%rsi), %gs # encoding: [0x8e,0x2e] 929mov %gs, (%rsi) // CHECK: movl %gs, (%rsi) # encoding: [0x8c,0x2e] 930 931 932// rdar://8431864 933 div %bl,%al 934 div %bx,%ax 935 div %ecx,%eax 936 div 0xdeadbeef(%ebx,%ecx,8),%eax 937 div 0x45,%eax 938 div 0x7eed,%eax 939 div 0xbabecafe,%eax 940 div 0x12345678,%eax 941 idiv %bl,%al 942 idiv %bx,%ax 943 idiv %ecx,%eax 944 idiv 0xdeadbeef(%ebx,%ecx,8),%eax 945 idiv 0x45,%eax 946 idiv 0x7eed,%eax 947 idiv 0xbabecafe,%eax 948 idiv 0x12345678,%eax 949 950// PR8524 951movd %rax, %mm5 // CHECK: movd %rax, %mm5 # encoding: [0x48,0x0f,0x6e,0xe8] 952movd %mm5, %rbx // CHECK: movd %mm5, %rbx # encoding: [0x48,0x0f,0x7e,0xeb] 953movq %rax, %mm5 // CHECK: movd %rax, %mm5 # encoding: [0x48,0x0f,0x6e,0xe8] 954movq %mm5, %rbx // CHECK: movd %mm5, %rbx # encoding: [0x48,0x0f,0x7e,0xeb] 955 956rex64 // CHECK: rex64 # encoding: [0x48] 957data16 // CHECK: data16 # encoding: [0x66] 958 959// PR8855 960movq 18446744073709551615,%rbx // CHECK: movq -1, %rbx 961 962// PR8946 963movdqu %xmm0, %xmm1 // CHECK: movdqu %xmm0, %xmm1 # encoding: [0xf3,0x0f,0x6f,0xc8] 964 965// PR8935 966xgetbv // CHECK: xgetbv # encoding: [0x0f,0x01,0xd0] 967xsetbv // CHECK: xsetbv # encoding: [0x0f,0x01,0xd1] 968 969// CHECK: loope 0 970// CHECK: encoding: [0xe1,A] 971 loopz 0 972 973// CHECK: loopne 0 974// CHECK: encoding: [0xe0,A] 975 loopnz 0 976 977// CHECK: strw 978// CHECK: encoding: [0x66,0x0f,0x00,0xc8] 979 str %ax 980 981// CHECK: strl 982// CHECK: encoding: [0x0f,0x00,0xc8] 983 str %eax 984 985// CHECK: strw 986// CHECK: encoding: [0x66,0x0f,0x00,0xc8] 987 str %ax 988 989// CHECK: strq 990// CHECK: encoding: [0x48,0x0f,0x00,0xc8] 991 str %rax 992