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