x86-64.s revision 7aef62ff8c72506cc9b77333d25f4aa8aa9cf9fe
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: movzbq (%rsp), %rsi 652// CHECK: encoding: [0x48,0x0f,0xb6,0x34,0x24] 653 movzx 0(%rsp), %rsi 654 655 656// rdar://7873482 657// CHECK: [0x65,0x8b,0x04,0x25,0x7c,0x00,0x00,0x00] 658 movl %gs:124, %eax 659 660// CHECK: jmpq *8(%rax) 661// CHECK: encoding: [0xff,0x60,0x08] 662 jmp *8(%rax) 663 664// CHECK: btq $61, -216(%rbp) 665// CHECK: encoding: [0x48,0x0f,0xba,0xa5,0x28,0xff,0xff,0xff,0x3d] 666 btq $61, -216(%rbp) 667 668 669// rdar://8061602 670L1: 671 jecxz L1 672// CHECK: jecxz L1 673// CHECK: encoding: [0x67,0xe3,A] 674 jrcxz L1 675// CHECK: jrcxz L1 676// CHECK: encoding: [0xe3,A] 677 678// PR8061 679xchgl 368(%rax),%ecx 680// CHECK: xchgl %ecx, 368(%rax) 681xchgl %ecx, 368(%rax) 682// CHECK: xchgl %ecx, 368(%rax) 683 684// rdar://8407548 685xchg 0xdeadbeef(%rbx,%rcx,8),%bl 686// CHECK: xchgb %bl, 3735928559(%rbx,%rcx,8) 687 688 689 690// PR7254 691lock incl 1(%rsp) 692// CHECK: lock 693// CHECK: incl 1(%rsp) 694 695// rdar://8033482 696rep movsl 697// CHECK: rep 698// CHECK: encoding: [0xf3] 699// CHECK: movsl 700// CHECK: encoding: [0xa5] 701 702 703// rdar://8403974 704iret 705// CHECK: iretl 706// CHECK: encoding: [0xcf] 707iretw 708// CHECK: iretw 709// CHECK: encoding: [0x66,0xcf] 710iretl 711// CHECK: iretl 712// CHECK: encoding: [0xcf] 713iretq 714// CHECK: iretq 715// CHECK: encoding: [0x48,0xcf] 716 717// rdar://8416805 718// CHECK: retw $31438 719// CHECK: encoding: [0x66,0xc2,0xce,0x7a] 720 retw $0x7ace 721 722// CHECK: lretw $31438 723// CHECK: encoding: [0x66,0xca,0xce,0x7a] 724 lretw $0x7ace 725 726// rdar://8403907 727sysret 728// CHECK: sysretl 729// CHECK: encoding: [0x0f,0x07] 730sysretl 731// CHECK: sysretl 732// CHECK: encoding: [0x0f,0x07] 733sysretq 734// CHECK: sysretq 735// CHECK: encoding: [0x48,0x0f,0x07] 736 737// rdar://8407242 738push %fs 739// CHECK: pushq %fs 740// CHECK: encoding: [0x0f,0xa0] 741push %gs 742// CHECK: pushq %gs 743// CHECK: encoding: [0x0f,0xa8] 744 745pushw %fs 746// CHECK: pushw %fs 747// CHECK: encoding: [0x66,0x0f,0xa0] 748pushw %gs 749// CHECK: pushw %gs 750// CHECK: encoding: [0x66,0x0f,0xa8] 751 752 753pop %fs 754// CHECK: popq %fs 755// CHECK: encoding: [0x0f,0xa1] 756pop %gs 757// CHECK: popq %gs 758// CHECK: encoding: [0x0f,0xa9] 759 760popw %fs 761// CHECK: popw %fs 762// CHECK: encoding: [0x66,0x0f,0xa1] 763popw %gs 764// CHECK: popw %gs 765// CHECK: encoding: [0x66,0x0f,0xa9] 766 767// rdar://8438816 768fildq -8(%rsp) 769fildll -8(%rsp) 770// CHECK: fildll -8(%rsp) 771// CHECK: encoding: [0xdf,0x6c,0x24,0xf8] 772// CHECK: fildll -8(%rsp) 773// CHECK: encoding: [0xdf,0x6c,0x24,0xf8] 774 775// CHECK: callq a 776 callq a 777 778// CHECK: leaq -40(%rbp), %r15 779 leaq -40(%rbp), %r15 780 781 782 783// rdar://8013734 - Alias dr6=db6 784mov %dr6, %rax 785mov %db6, %rax 786// CHECK: movq %dr6, %rax 787// CHECK: movq %dr6, %rax 788 789 790// INC/DEC encodings. 791incb %al // CHECK: incb %al # encoding: [0xfe,0xc0] 792incw %ax // CHECK: incw %ax # encoding: [0x66,0xff,0xc0] 793incl %eax // CHECK: incl %eax # encoding: [0xff,0xc0] 794decb %al // CHECK: decb %al # encoding: [0xfe,0xc8] 795decw %ax // CHECK: decw %ax # encoding: [0x66,0xff,0xc8] 796decl %eax // CHECK: decl %eax # encoding: [0xff,0xc8] 797 798