Home | History | Annotate | Download | only in X86
      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 // CHECK: retw
     54         retw
     55 
     56 // FIXME: Check that this matches SUB32ri8
     57 // CHECK: subl $1, %eax
     58         subl $1, %eax
     59 
     60 // FIXME: Check that this matches SUB32ri8
     61 // CHECK: subl $-1, %eax
     62         subl $-1, %eax
     63 
     64 // FIXME: Check that this matches SUB32ri
     65 // CHECK: subl $256, %eax
     66         subl $256, %eax
     67 
     68 // FIXME: Check that this matches XOR64ri8
     69 // CHECK: xorq $1, %rax
     70         xorq $1, %rax
     71 
     72 // FIXME: Check that this matches XOR64ri32
     73 // CHECK: xorq $256, %rax
     74         xorq $256, %rax
     75 
     76 // FIXME: Check that this matches SUB8rr
     77 // CHECK: subb %al, %bl
     78         subb %al, %bl
     79 
     80 // FIXME: Check that this matches SUB16rr
     81 // CHECK: subw %ax, %bx
     82         subw %ax, %bx
     83 
     84 // FIXME: Check that this matches SUB32rr
     85 // CHECK: subl %eax, %ebx
     86         subl %eax, %ebx
     87 
     88 // FIXME: Check that this matches the correct instruction.
     89 // CHECK: callq *%rax
     90         call *%rax
     91 
     92 // FIXME: Check that this matches the correct instruction.
     93 // CHECK: shldl %cl, %eax, %ebx
     94         shldl %cl, %eax, %ebx
     95 
     96 // CHECK: shll $2, %eax
     97         shll $2, %eax
     98 
     99 // CHECK: shll $2, %eax
    100         sall $2, %eax
    101 
    102 // CHECK: rep
    103 // CHECK: insb
    104         rep;insb
    105 
    106 // CHECK: rep
    107 // CHECK: outsb
    108         rep;outsb
    109 
    110 // CHECK: rep
    111 // CHECK: movsb
    112         rep;movsb
    113 
    114 
    115 // rdar://8470918
    116 smovb // CHECK: movsb
    117 smovw // CHECK: movsw
    118 smovl // CHECK: movsl
    119 smovq // CHECK: movsq
    120 
    121 // rdar://8456361
    122 // CHECK: rep
    123 // CHECK: movsl
    124         rep movsd
    125 
    126 // CHECK: rep
    127 // CHECK: lodsb
    128         rep;lodsb
    129 
    130 // CHECK: rep
    131 // CHECK: stosb
    132         rep;stosb
    133 
    134 // NOTE: repz and repe have the same opcode as rep
    135 // CHECK: rep
    136 // CHECK: cmpsb
    137         repz;cmpsb
    138 
    139 // NOTE: repnz has the same opcode as repne
    140 // CHECK: repne
    141 // CHECK: cmpsb
    142         repnz;cmpsb
    143 
    144 // NOTE: repe and repz have the same opcode as rep
    145 // CHECK: rep
    146 // CHECK: scasb
    147         repe;scasb
    148 
    149 // CHECK: repne
    150 // CHECK: scasb
    151         repne;scasb
    152 
    153 // CHECK: lock
    154 // CHECK: cmpxchgb %al, (%ebx)
    155         lock;cmpxchgb %al, 0(%ebx)
    156 
    157 // CHECK: cs
    158 // CHECK: movb (%eax), %al
    159         cs;movb 0(%eax), %al
    160 
    161 // CHECK: ss
    162 // CHECK: movb (%eax), %al
    163         ss;movb 0(%eax), %al
    164 
    165 // CHECK: ds
    166 // CHECK: movb (%eax), %al
    167         ds;movb 0(%eax), %al
    168 
    169 // CHECK: es
    170 // CHECK: movb (%eax), %al
    171         es;movb 0(%eax), %al
    172 
    173 // CHECK: fs
    174 // CHECK: movb (%eax), %al
    175         fs;movb 0(%eax), %al
    176 
    177 // CHECK: gs
    178 // CHECK: movb (%eax), %al
    179         gs;movb 0(%eax), %al
    180 
    181 // CHECK: fadd %st(0)
    182 // CHECK: fadd %st(1)
    183 // CHECK: fadd %st(7)
    184 
    185 fadd %st(0)
    186 fadd %st(1)
    187 fadd %st(7)
    188 
    189 // CHECK: leal 0, %eax
    190         leal 0, %eax
    191 
    192 // rdar://7986634 - Insensitivity on opcodes.
    193 // CHECK: int3
    194 INT3
    195 
    196 // rdar://8735979 - int $3 -> int3
    197 // CHECK: int3
    198 int	$3
    199 
    200 
    201 // Allow scale factor without index register.
    202 // CHECK: movaps	%xmm3, (%esi)
    203 // CHECK-STDERR: warning: scale factor without index register is ignored
    204 movaps %xmm3, (%esi, 2)
    205 
    206 // CHECK: imull $12, %eax
    207 imul $12, %eax
    208 
    209 // CHECK: imull %ecx, %eax
    210 imull %ecx, %eax
    211 
    212 
    213 // rdar://8208481
    214 // CHECK: outb	%al, $161
    215 outb	%al, $161
    216 // CHECK: outw	%ax, $128
    217 outw	%ax, $128
    218 // CHECK: inb	$161, %al
    219 inb	$161, %al
    220 
    221 // rdar://8017621
    222 // CHECK: pushq	$1
    223 push $1
    224 
    225 // rdar://9716860
    226 pushq $1
    227 // CHECK: encoding: [0x6a,0x01]
    228 pushq $1111111
    229 // CHECK: encoding: [0x68,0x47,0xf4,0x10,0x00]
    230 
    231 // rdar://8017530
    232 // CHECK: sldtw	4
    233 sldt	4
    234 
    235 // rdar://8208499
    236 // CHECK: cmovnew	%bx, %ax
    237 cmovnz %bx, %ax
    238 // CHECK: cmovneq	%rbx, %rax
    239 cmovnzq %rbx, %rax
    240 
    241 
    242 // rdar://8407928
    243 // CHECK: inb	$127, %al
    244 // CHECK: inw	%dx, %ax
    245 // CHECK: outb	%al, $127
    246 // CHECK: outw	%ax, %dx
    247 // CHECK: inl	%dx, %eax
    248 inb	$0x7f
    249 inw	%dx
    250 outb	$0x7f
    251 outw	%dx
    252 inl	%dx
    253 
    254 
    255 // PR8114
    256 // CHECK: outb	%al, %dx
    257 // CHECK: outb	%al, %dx
    258 // CHECK: outw	%ax, %dx
    259 // CHECK: outw	%ax, %dx
    260 // CHECK: outl	%eax, %dx
    261 // CHECK: outl	%eax, %dx
    262 
    263 out	%al, (%dx)
    264 outb	%al, (%dx)
    265 out	%ax, (%dx)
    266 outw	%ax, (%dx)
    267 out	%eax, (%dx)
    268 outl	%eax, (%dx)
    269 
    270 // CHECK: inb	%dx, %al
    271 // CHECK: inb	%dx, %al
    272 // CHECK: inw	%dx, %ax
    273 // CHECK: inw	%dx, %ax
    274 // CHECK: inl	%dx, %eax
    275 // CHECK: inl	%dx, %eax
    276 
    277 in	(%dx), %al
    278 inb	(%dx), %al
    279 in	(%dx), %ax
    280 inw	(%dx), %ax
    281 in	(%dx), %eax
    282 inl	(%dx), %eax
    283 
    284 // rdar://8431422
    285 
    286 // CHECK: fxch %st(1)
    287 // CHECK: fucom %st(1)
    288 // CHECK: fucomp %st(1)
    289 // CHECK: faddp %st(1)
    290 // CHECK: faddp	%st(0)
    291 // CHECK: fsubp %st(1)
    292 // CHECK: fsubrp %st(1)
    293 // CHECK: fmulp %st(1)
    294 // CHECK: fdivp %st(1)
    295 // CHECK: fdivrp %st(1)
    296 
    297 fxch
    298 fucom
    299 fucomp
    300 faddp
    301 faddp %st
    302 fsubp
    303 fsubrp
    304 fmulp
    305 fdivp
    306 fdivrp
    307 
    308 // CHECK: fcomi %st(1)
    309 // CHECK: fcomi	%st(2)
    310 // CHECK: fucomi %st(1)
    311 // CHECK: fucomi %st(2)
    312 // CHECK: fucomi %st(2)
    313 
    314 fcomi
    315 fcomi	%st(2)
    316 fucomi
    317 fucomi	%st(2)
    318 fucomi	%st(2), %st
    319 
    320 // CHECK: fnstsw %ax
    321 // CHECK: fnstsw %ax
    322 // CHECK: fnstsw %ax
    323 // CHECK: fnstsw %ax
    324 
    325 fnstsw
    326 fnstsw %ax
    327 fnstsw %eax
    328 fnstsw %al
    329 
    330 // rdar://8431880
    331 // CHECK: rclb	%bl
    332 // CHECK: rcll	3735928559(%ebx,%ecx,8)
    333 // CHECK: rcrl	%ecx
    334 // CHECK: rcrl	305419896
    335 rcl	%bl
    336 rcll	0xdeadbeef(%ebx,%ecx,8)
    337 rcr	%ecx
    338 rcrl	0x12345678
    339 
    340 rclb	%bl       // CHECK: rclb %bl     # encoding: [0xd0,0xd3]
    341 rclb	$1, %bl   // CHECK: rclb %bl     # encoding: [0xd0,0xd3]
    342 rclb	$2, %bl   // CHECK: rclb $2, %bl # encoding: [0xc0,0xd3,0x02]
    343 
    344 // rdar://8418316
    345 // PR12173
    346 // CHECK: shldw	%cl, %bx, %dx
    347 // CHECK: shldw	%cl, %bx, %dx
    348 // CHECK: shldw	$1, %bx, %dx
    349 // CHECK: shldw	%cl, %bx, (%rax)
    350 // CHECK: shldw	%cl, %bx, (%rax)
    351 // CHECK: shrdw	%cl, %bx, %dx
    352 // CHECK: shrdw	%cl, %bx, %dx
    353 // CHECK: shrdw	$1, %bx, %dx
    354 // CHECK: shrdw	%cl, %bx, (%rax)
    355 // CHECK: shrdw	%cl, %bx, (%rax)
    356 
    357 shld  %bx, %dx
    358 shld  %cl, %bx, %dx
    359 shld  $1, %bx, %dx
    360 shld  %bx, (%rax)
    361 shld  %cl, %bx, (%rax)
    362 shrd  %bx, %dx
    363 shrd  %cl, %bx, %dx
    364 shrd  $1, %bx, %dx
    365 shrd  %bx, (%rax)
    366 shrd  %cl, %bx, (%rax)
    367 
    368 // CHECK: sldtl	%ecx
    369 // CHECK: encoding: [0x0f,0x00,0xc1]
    370 // CHECK: sldtw	%cx
    371 // CHECK: encoding: [0x66,0x0f,0x00,0xc1]
    372 
    373 sldt	%ecx
    374 sldt	%cx
    375 
    376 // CHECK: lcalll	*3135175374
    377 // CHECK: ljmpl	*3135175374
    378 lcall	*0xbadeface
    379 ljmp	*0xbadeface
    380 
    381 
    382 // rdar://8444631
    383 // CHECK: enter	$31438, $0
    384 // CHECK: encoding: [0xc8,0xce,0x7a,0x00]
    385 // CHECK: enter	$31438, $1
    386 // CHECK: encoding: [0xc8,0xce,0x7a,0x01]
    387 // CHECK: enter	$31438, $127
    388 // CHECK: encoding: [0xc8,0xce,0x7a,0x7f]
    389 enter $0x7ace,$0
    390 enter $0x7ace,$1
    391 enter $0x7ace,$0x7f
    392 
    393 
    394 // rdar://8456364
    395 // CHECK: movw	%cs, %ax
    396 mov %CS, %ax
    397 
    398 // rdar://8456391
    399 fcmovb %st(1), %st(0)   // CHECK: fcmovb	%st(1), %st(0)
    400 fcmove %st(1), %st(0)   // CHECK: fcmove	%st(1), %st(0)
    401 fcmovbe %st(1), %st(0)  // CHECK: fcmovbe	%st(1), %st(0)
    402 fcmovu %st(1), %st(0)   // CHECK: fcmovu	 %st(1), %st(0)
    403 
    404 fcmovnb %st(1), %st(0)  // CHECK: fcmovnb	%st(1), %st(0)
    405 fcmovne %st(1), %st(0)  // CHECK: fcmovne	%st(1), %st(0)
    406 fcmovnbe %st(1), %st(0) // CHECK: fcmovnbe	%st(1), %st(0)
    407 fcmovnu %st(1), %st(0)  // CHECK: fcmovnu	%st(1), %st(0)
    408 
    409 fcmovnae %st(1), %st(0) // CHECK: fcmovb	%st(1), %st(0)
    410 fcmovna %st(1), %st(0)  // CHECK: fcmovbe	%st(1), %st(0)
    411 
    412 fcmovae %st(1), %st(0)  // CHECK: fcmovnb	%st(1), %st(0)
    413 fcmova %st(1), %st(0)   // CHECK: fcmovnbe	%st(1), %st(0)
    414 
    415 // rdar://8456417
    416 .byte (88 + 1) & 15  // CHECK: .byte	9
    417 
    418 // rdar://8456412
    419 mov %rdx, %cr0
    420 // CHECK: movq	%rdx, %cr0
    421 // CHECK: encoding: [0x0f,0x22,0xc2]
    422 mov %rdx, %cr4
    423 // CHECK: movq	%rdx, %cr4
    424 // CHECK: encoding: [0x0f,0x22,0xe2]
    425 mov %rdx, %cr8
    426 // CHECK: movq	%rdx, %cr8
    427 // CHECK: encoding: [0x44,0x0f,0x22,0xc2]
    428 mov %rdx, %cr15
    429 // CHECK: movq	%rdx, %cr15
    430 // CHECK: encoding: [0x44,0x0f,0x22,0xfa]
    431 
    432 // rdar://8456371 - Handle commutable instructions written backward.
    433 // CHECK: 	faddp	%st(1)
    434 // CHECK:	fmulp	%st(2)
    435 faddp %st, %st(1)
    436 fmulp %st, %st(2)
    437 
    438 // rdar://8468087 - Encode these accurately, they are not synonyms.
    439 // CHECK: fmul	%st(0), %st(1)
    440 // CHECK: encoding: [0xdc,0xc9]
    441 // CHECK: fmul	%st(1)
    442 // CHECK: encoding: [0xd8,0xc9]
    443 fmul %st, %st(1)
    444 fmul %st(1), %st
    445 
    446 // CHECK: fadd	%st(0), %st(1)
    447 // CHECK: encoding: [0xdc,0xc1]
    448 // CHECK: fadd	%st(1)
    449 // CHECK: encoding: [0xd8,0xc1]
    450 fadd %st, %st(1)
    451 fadd %st(1), %st
    452 
    453 
    454 // rdar://8416805
    455 // CHECK: xorb	%al, %al
    456 // CHECK: encoding: [0x30,0xc0]
    457 // CHECK: xorw	%di, %di
    458 // CHECK: encoding: [0x66,0x31,0xff]
    459 // CHECK: xorl	%esi, %esi
    460 // CHECK: encoding: [0x31,0xf6]
    461 // CHECK: xorq	%rsi, %rsi
    462 // CHECK: encoding: [0x48,0x31,0xf6]
    463 clrb    %al
    464 clr    %di
    465 clr    %esi
    466 clr    %rsi
    467 
    468 // rdar://8456378
    469 cltq  // CHECK: cltq
    470 cdqe  // CHECK: cltq
    471 cwde  // CHECK: cwtl
    472 cwtl  // CHECK: cwtl
    473 
    474 // rdar://8416805
    475 cbw   // CHECK: cbtw
    476 cwd   // CHECK: cwtd
    477 cdq   // CHECK: cltd
    478 cqo   // CHECK: cqto
    479 
    480 // rdar://8456378 and PR7557 - fstsw
    481 fstsw %ax
    482 // CHECK: wait
    483 // CHECK: fnstsw
    484 fstsw (%rax)
    485 // CHECK: wait
    486 // CHECK: fnstsw (%rax)
    487 
    488 // PR8259
    489 fstcw (%rsp)
    490 // CHECK: wait
    491 // CHECK: fnstcw (%rsp)
    492 
    493 // PR8259
    494 fstcw (%rsp)
    495 // CHECK: wait
    496 // CHECK: fnstcw (%rsp)
    497 
    498 // PR8258
    499 finit
    500 // CHECK: wait
    501 // CHECK: fninit
    502 
    503 fsave	32493
    504 // CHECK: wait
    505 // CHECK: fnsave 32493
    506 
    507 
    508 // rdar://8456382 - cvtsd2si support.
    509 cvtsd2si	%xmm1, %rax
    510 // CHECK: cvtsd2si	%xmm1, %rax
    511 // CHECK: encoding: [0xf2,0x48,0x0f,0x2d,0xc1]
    512 cvtsd2si	%xmm1, %eax
    513 // CHECK: cvtsd2si	%xmm1, %eax
    514 // CHECK: encoding: [0xf2,0x0f,0x2d,0xc1]
    515 
    516 cvtsd2siq %xmm0, %rax // CHECK: cvtsd2si	%xmm0, %rax
    517 cvtsd2sil %xmm0, %eax // CHECK: cvtsd2si	%xmm0, %eax
    518 cvtsd2si %xmm0, %rax  // CHECK: cvtsd2si	%xmm0, %rax
    519 
    520 
    521 cvttpd2dq %xmm1, %xmm0  // CHECK: cvttpd2dq %xmm1, %xmm0
    522 cvttpd2dq (%rax), %xmm0 // CHECK: cvttpd2dq (%rax), %xmm0
    523 
    524 cvttps2dq %xmm1, %xmm0  // CHECK: cvttps2dq %xmm1, %xmm0
    525 cvttps2dq (%rax), %xmm0 // CHECK: cvttps2dq (%rax), %xmm0
    526 
    527 // rdar://8456376 - llvm-mc rejects 'roundss'
    528 roundss $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x0a,0xc0,0x0e]
    529 roundps $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x08,0xc0,0x0e]
    530 roundsd $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x0b,0xc0,0x0e]
    531 roundpd $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x09,0xc0,0x0e]
    532 
    533 
    534 // rdar://8482675 - 32-bit mem operand support in 64-bit mode (0x67 prefix)
    535 leal	8(%eax), %esi
    536 // CHECK: leal	8(%eax), %esi
    537 // CHECK: encoding: [0x67,0x8d,0x70,0x08]
    538 leaq	8(%eax), %rsi
    539 // CHECK: leaq	8(%eax), %rsi
    540 // CHECK: encoding: [0x67,0x48,0x8d,0x70,0x08]
    541 leaq	8(%rax), %rsi
    542 // CHECK: leaq	8(%rax), %rsi
    543 // CHECK: encoding: [0x48,0x8d,0x70,0x08]
    544 
    545 
    546 cvttpd2dq	0xdeadbeef(%ebx,%ecx,8),%xmm5
    547 // CHECK: cvttpd2dq	3735928559(%ebx,%ecx,8), %xmm5
    548 // CHECK: encoding: [0x67,0x66,0x0f,0xe6,0xac,0xcb,0xef,0xbe,0xad,0xde]
    549 
    550 // rdar://8490728 - llvm-mc rejects 'movmskpd'
    551 movmskpd	%xmm6, %rax
    552 // CHECK: movmskpd	%xmm6, %eax
    553 // CHECK: encoding: [0x66,0x0f,0x50,0xc6]
    554 movmskpd	%xmm6, %eax
    555 // CHECK: movmskpd	%xmm6, %eax
    556 // CHECK: encoding: [0x66,0x0f,0x50,0xc6]
    557 
    558 // rdar://8491845 - Gas supports commuted forms of non-commutable instructions.
    559 fdivrp %st(0), %st(1) // CHECK: encoding: [0xde,0xf9]
    560 fdivrp %st(1), %st(0) // CHECK: encoding: [0xde,0xf9]
    561 
    562 fsubrp %ST(0), %ST(1) // CHECK: encoding: [0xde,0xe9]
    563 fsubrp %ST(1), %ST(0) // CHECK: encoding: [0xde,0xe9]
    564 
    565 // also PR8861
    566 fdivp %st(0), %st(1) // CHECK: encoding: [0xde,0xf1]
    567 fdivp %st(1), %st(0) // CHECK: encoding: [0xde,0xf1]
    568 
    569 
    570 movl	foo(%rip), %eax
    571 // CHECK: movl	foo(%rip), %eax
    572 // CHECK: encoding: [0x8b,0x05,A,A,A,A]
    573 // CHECK: fixup A - offset: 2, value: foo-4, kind: reloc_riprel_4byte
    574 
    575 movb	$12, foo(%rip)
    576 // CHECK: movb	$12, foo(%rip)
    577 // CHECK: encoding: [0xc6,0x05,A,A,A,A,0x0c]
    578 // CHECK:    fixup A - offset: 2, value: foo-5, kind: reloc_riprel_4byte
    579 
    580 movw	$12, foo(%rip)
    581 // CHECK: movw	$12, foo(%rip)
    582 // CHECK: encoding: [0x66,0xc7,0x05,A,A,A,A,0x0c,0x00]
    583 // CHECK:    fixup A - offset: 3, value: foo-6, kind: reloc_riprel_4byte
    584 
    585 movl	$12, foo(%rip)
    586 // CHECK: movl	$12, foo(%rip)
    587 // CHECK: encoding: [0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00]
    588 // CHECK:    fixup A - offset: 2, value: foo-8, kind: reloc_riprel_4byte
    589 
    590 movq	$12, foo(%rip)
    591 // CHECK:  movq	$12, foo(%rip)
    592 // CHECK: encoding: [0x48,0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00]
    593 // CHECK:    fixup A - offset: 3, value: foo-8, kind: reloc_riprel_4byte
    594 
    595 // CHECK: addq	$-424, %rax
    596 // CHECK: encoding: [0x48,0x05,0x58,0xfe,0xff,0xff]
    597 addq $-424, %rax
    598 
    599 
    600 // CHECK: movq	_foo@GOTPCREL(%rip), %rax
    601 // CHECK:  encoding: [0x48,0x8b,0x05,A,A,A,A]
    602 // CHECK:  fixup A - offset: 3, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load
    603 movq _foo@GOTPCREL(%rip), %rax
    604 
    605 // CHECK: movq	_foo@GOTPCREL(%rip), %r14
    606 // CHECK:  encoding: [0x4c,0x8b,0x35,A,A,A,A]
    607 // CHECK:  fixup A - offset: 3, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load
    608 movq _foo@GOTPCREL(%rip), %r14
    609 
    610 
    611 // CHECK: movq	(%r13,%rax,8), %r13
    612 // CHECK:  encoding: [0x4d,0x8b,0x6c,0xc5,0x00]
    613 movq 0x00(%r13,%rax,8),%r13
    614 
    615 // CHECK: testq	%rax, %rbx
    616 // CHECK:  encoding: [0x48,0x85,0xc3]
    617 testq %rax, %rbx
    618 
    619 // CHECK: cmpq	%rbx, %r14
    620 // CHECK:   encoding: [0x49,0x39,0xde]
    621         cmpq %rbx, %r14
    622 
    623 // rdar://7947167
    624 
    625 movsq
    626 // CHECK: movsq
    627 // CHECK:   encoding: [0x48,0xa5]
    628 
    629 movsl
    630 // CHECK: movsl
    631 // CHECK:   encoding: [0xa5]
    632 
    633 stosq
    634 // CHECK: stosq
    635 // CHECK:   encoding: [0x48,0xab]
    636 stosl
    637 // CHECK: stosl
    638 // CHECK:   encoding: [0xab]
    639 
    640 
    641 // Not moffset forms of moves, they are x86-32 only! rdar://7947184
    642 movb	0, %al    // CHECK: movb 0, %al # encoding: [0x8a,0x04,0x25,0x00,0x00,0x00,0x00]
    643 movw	0, %ax    // CHECK: movw 0, %ax # encoding: [0x66,0x8b,0x04,0x25,0x00,0x00,0x00,0x00]
    644 movl	0, %eax   // CHECK: movl 0, %eax # encoding: [0x8b,0x04,0x25,0x00,0x00,0x00,0x00]
    645 
    646 // CHECK: pushfq	# encoding: [0x9c]
    647         pushf
    648 // CHECK: pushfq	# encoding: [0x9c]
    649         pushfq
    650 // CHECK: popfq	        # encoding: [0x9d]
    651         popf
    652 // CHECK: popfq	        # encoding: [0x9d]
    653         popfq
    654 
    655 // CHECK: movabsq $-281474976710654, %rax
    656 // CHECK: encoding: [0x48,0xb8,0x02,0x00,0x00,0x00,0x00,0x00,0xff,0xff]
    657         movabsq $0xFFFF000000000002, %rax
    658 
    659 // CHECK: movabsq $-281474976710654, %rax
    660 // CHECK: encoding: [0x48,0xb8,0x02,0x00,0x00,0x00,0x00,0x00,0xff,0xff]
    661         movq $0xFFFF000000000002, %rax
    662 
    663 // CHECK: movq $-65536, %rax
    664 // CHECK: encoding: [0x48,0xc7,0xc0,0x00,0x00,0xff,0xff]
    665         movq $0xFFFFFFFFFFFF0000, %rax
    666 
    667 // CHECK: movq $-256, %rax
    668 // CHECK: encoding: [0x48,0xc7,0xc0,0x00,0xff,0xff,0xff]
    669         movq $0xFFFFFFFFFFFFFF00, %rax
    670 
    671 // CHECK: movq $10, %rax
    672 // CHECK: encoding: [0x48,0xc7,0xc0,0x0a,0x00,0x00,0x00]
    673         movq $10, %rax
    674 
    675 // CHECK: movabsb -6066930261531658096, %al
    676 // CHECK: encoding: [0xa0,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab]
    677         movabsb 0xabcdef1234567890,%al
    678 
    679 // CHECK: movabsw -6066930261531658096, %ax
    680 // CHECK: encoding: [0x66,0xa1,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab]
    681         movabsw 0xabcdef1234567890,%ax
    682 
    683 // CHECK: movabsl -6066930261531658096, %eax
    684 // CHECK: encoding: [0xa1,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab]
    685         movabsl 0xabcdef1234567890,%eax
    686 
    687 // CHECK: movabsq -6066930261531658096, %rax
    688 // CHECK: encoding: [0x48,0xa1,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab]
    689         movabsq 0xabcdef1234567890, %rax
    690 
    691 // CHECK: movabsb %al, -6066930261531658096
    692 // CHECK: encoding: [0xa2,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab]
    693         movabsb %al,0xabcdef1234567890
    694 
    695 // CHECK: movabsw %ax, -6066930261531658096
    696 // CHECK: encoding: [0x66,0xa3,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab]
    697         movabsw %ax,0xabcdef1234567890
    698 
    699 // CHECK: movabsl %eax, -6066930261531658096
    700 // CHECK: encoding: [0xa3,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab]
    701         movabsl %eax,0xabcdef1234567890
    702 
    703 // CHECK: movabsq %rax, -6066930261531658096
    704 // CHECK: encoding: [0x48,0xa3,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab]
    705         movabsq %rax,0xabcdef1234567890
    706 
    707 // rdar://8014869
    708 //
    709 // CHECK: ret
    710 // CHECK:  encoding: [0xc3]
    711         retq
    712 
    713 // CHECK: sete %al
    714 // CHECK: encoding: [0x0f,0x94,0xc0]
    715         setz %al
    716 
    717 // CHECK: setne %al
    718 // CHECK: encoding: [0x0f,0x95,0xc0]
    719         setnz %al
    720 
    721 // CHECK: je 0
    722 // CHECK: encoding: [0x74,A]
    723         jz 0
    724 
    725 // CHECK: jne
    726 // CHECK: encoding: [0x75,A]
    727         jnz 0
    728 
    729 // PR9264
    730 btl	$1, 0 // CHECK: btl $1, 0 # encoding: [0x0f,0xba,0x24,0x25,0x00,0x00,0x00,0x00,0x01]
    731 bt	$1, 0 // CHECK: btl $1, 0 # encoding: [0x0f,0xba,0x24,0x25,0x00,0x00,0x00,0x00,0x01]
    732 
    733 // rdar://8017515
    734 btq $0x01,%rdx
    735 // CHECK: btq	$1, %rdx
    736 // CHECK:  encoding: [0x48,0x0f,0xba,0xe2,0x01]
    737 
    738 //rdar://8017633
    739 // CHECK: movzbl	%al, %esi
    740 // CHECK:  encoding: [0x0f,0xb6,0xf0]
    741         movzx %al, %esi
    742 
    743 // CHECK: movzbq	%al, %rsi
    744 // CHECK:  encoding: [0x48,0x0f,0xb6,0xf0]
    745         movzx %al, %rsi
    746 
    747 // CHECK: movsbw	%al, %ax
    748 // CHECK: encoding: [0x66,0x0f,0xbe,0xc0]
    749 movsx %al, %ax
    750 
    751 // CHECK: movsbl	%al, %eax
    752 // CHECK: encoding: [0x0f,0xbe,0xc0]
    753 movsx %al, %eax
    754 
    755 // CHECK: movswl	%ax, %eax
    756 // CHECK: encoding: [0x0f,0xbf,0xc0]
    757 movsx %ax, %eax
    758 
    759 // CHECK: movsbq	%bl, %rax
    760 // CHECK: encoding: [0x48,0x0f,0xbe,0xc3]
    761 movsx %bl, %rax
    762 
    763 // CHECK: movswq %cx, %rax
    764 // CHECK: encoding: [0x48,0x0f,0xbf,0xc1]
    765 movsx %cx, %rax
    766 
    767 // CHECK: movslq	%edi, %rax
    768 // CHECK: encoding: [0x48,0x63,0xc7]
    769 movsx %edi, %rax
    770 
    771 // CHECK: movzbw	%al, %ax
    772 // CHECK: encoding: [0x66,0x0f,0xb6,0xc0]
    773 movzx %al, %ax
    774 
    775 // CHECK: movzbl	%al, %eax
    776 // CHECK: encoding: [0x0f,0xb6,0xc0]
    777 movzx %al, %eax
    778 
    779 // CHECK: movzwl	%ax, %eax
    780 // CHECK: encoding: [0x0f,0xb7,0xc0]
    781 movzx %ax, %eax
    782 
    783 // CHECK: movzbq	%bl, %rax
    784 // CHECK: encoding: [0x48,0x0f,0xb6,0xc3]
    785 movzx %bl, %rax
    786 
    787 // CHECK: movzwq	%cx, %rax
    788 // CHECK: encoding: [0x48,0x0f,0xb7,0xc1]
    789 movzx %cx, %rax
    790 
    791 // CHECK: movsbw	(%rax), %ax
    792 // CHECK: encoding: [0x66,0x0f,0xbe,0x00]
    793 movsx (%rax), %ax
    794 
    795 // CHECK: movzbw	(%rax), %ax
    796 // CHECK: encoding: [0x66,0x0f,0xb6,0x00]
    797 movzx (%rax), %ax
    798 
    799 
    800 // rdar://7873482
    801 // CHECK: [0x65,0x8b,0x04,0x25,0x7c,0x00,0x00,0x00]
    802         movl	%gs:124, %eax
    803 
    804 // CHECK: jmpq *8(%rax)
    805 // CHECK:   encoding: [0xff,0x60,0x08]
    806 	jmp	*8(%rax)
    807 
    808 // CHECK: btq $61, -216(%rbp)
    809 // CHECK:   encoding: [0x48,0x0f,0xba,0xa5,0x28,0xff,0xff,0xff,0x3d]
    810 	btq	$61, -216(%rbp)
    811 
    812 
    813 // rdar://8061602
    814 L1:
    815   jecxz L1
    816 // CHECK: jecxz L1
    817 // CHECK:   encoding: [0x67,0xe3,A]
    818   jrcxz L1
    819 // CHECK: jrcxz L1
    820 // CHECK:   encoding: [0xe3,A]
    821 
    822 // PR8061
    823 xchgl   368(%rax),%ecx
    824 // CHECK: xchgl	%ecx, 368(%rax)
    825 xchgl   %ecx, 368(%rax)
    826 // CHECK: xchgl	%ecx, 368(%rax)
    827 
    828 // rdar://8407548
    829 xchg	0xdeadbeef(%rbx,%rcx,8),%bl
    830 // CHECK: xchgb	%bl, 3735928559(%rbx,%rcx,8)
    831 
    832 
    833 
    834 // PR7254
    835 lock  incl 1(%rsp)
    836 // CHECK: lock
    837 // CHECK: incl 1(%rsp)
    838 
    839 // rdar://8741045
    840 lock/incl 1(%rsp)
    841 // CHECK: lock
    842 // CHECK: incl 1(%rsp)
    843 
    844 // rdar://8033482
    845 rep movsl
    846 // CHECK: rep
    847 // CHECK: encoding: [0xf3]
    848 // CHECK: movsl
    849 // CHECK: encoding: [0xa5]
    850 
    851 
    852 // rdar://8403974
    853 iret
    854 // CHECK: iretl
    855 // CHECK: encoding: [0xcf]
    856 iretw
    857 // CHECK: iretw
    858 // CHECK: encoding: [0x66,0xcf]
    859 iretl
    860 // CHECK: iretl
    861 // CHECK: encoding: [0xcf]
    862 iretq
    863 // CHECK: iretq
    864 // CHECK: encoding: [0x48,0xcf]
    865 
    866 // rdar://8416805
    867 // CHECK: retw	$31438
    868 // CHECK:  encoding: [0x66,0xc2,0xce,0x7a]
    869         	retw	$0x7ace
    870 
    871 // CHECK: lretw	$31438
    872 // CHECK:  encoding: [0x66,0xca,0xce,0x7a]
    873         	lretw	$0x7ace
    874 
    875 // PR8592
    876 lretq  // CHECK: lretq # encoding: [0x48,0xcb]
    877 lretl  // CHECK: lretl # encoding: [0xcb]
    878 lret   // CHECK: lretl # encoding: [0xcb]
    879 lretw  // CHECK: lretw # encoding: [0x66,0xcb]
    880 
    881 // rdar://8403907
    882 sysret
    883 // CHECK: sysretl
    884 // CHECK: encoding: [0x0f,0x07]
    885 sysretl
    886 // CHECK: sysretl
    887 // CHECK: encoding: [0x0f,0x07]
    888 sysretq
    889 // CHECK: sysretq
    890 // CHECK: encoding: [0x48,0x0f,0x07]
    891 
    892 // rdar://8407242
    893 push %fs
    894 // CHECK: pushq	%fs
    895 // CHECK: encoding: [0x0f,0xa0]
    896 push %gs
    897 // CHECK: pushq	%gs
    898 // CHECK: encoding: [0x0f,0xa8]
    899 
    900 pushw %fs
    901 // CHECK: pushw	%fs
    902 // CHECK: encoding: [0x66,0x0f,0xa0]
    903 pushw %gs
    904 // CHECK: pushw	%gs
    905 // CHECK: encoding: [0x66,0x0f,0xa8]
    906 
    907 
    908 pop %fs
    909 // CHECK: popq	%fs
    910 // CHECK: encoding: [0x0f,0xa1]
    911 pop %gs
    912 // CHECK: popq	%gs
    913 // CHECK: encoding: [0x0f,0xa9]
    914 
    915 popw %fs
    916 // CHECK: popw	%fs
    917 // CHECK: encoding: [0x66,0x0f,0xa1]
    918 popw %gs
    919 // CHECK: popw	%gs
    920 // CHECK: encoding: [0x66,0x0f,0xa9]
    921 
    922 // rdar://8438816
    923 fildq -8(%rsp)
    924 fildll -8(%rsp)
    925 // CHECK: fildll	-8(%rsp)
    926 // CHECK: encoding: [0xdf,0x6c,0x24,0xf8]
    927 // CHECK: fildll	-8(%rsp)
    928 // CHECK: encoding: [0xdf,0x6c,0x24,0xf8]
    929 
    930 // CHECK: callq a
    931         callq a
    932 
    933 // CHECK: leaq	-40(%rbp), %r15
    934 	leaq	-40(%rbp), %r15
    935 
    936 
    937 
    938 // rdar://8013734 - Alias dr6=db6
    939 mov %dr6, %rax
    940 mov %db6, %rax
    941 // CHECK: movq	%dr6, %rax
    942 // CHECK: movq	%dr6, %rax
    943 
    944 
    945 // INC/DEC encodings.
    946 incb %al  // CHECK:	incb	%al # encoding: [0xfe,0xc0]
    947 incw %ax  // CHECK:	incw	%ax # encoding: [0x66,0xff,0xc0]
    948 incl %eax // CHECK:	incl	%eax # encoding: [0xff,0xc0]
    949 decb %al  // CHECK:	decb	%al # encoding: [0xfe,0xc8]
    950 decw %ax  // CHECK:	decw	%ax # encoding: [0x66,0xff,0xc8]
    951 decl %eax // CHECK:	decl	%eax # encoding: [0xff,0xc8]
    952 
    953 // rdar://8416805
    954 // CHECK: lgdtq	4(%rax)
    955 // CHECK:  encoding: [0x0f,0x01,0x50,0x04]
    956         	lgdt	4(%rax)
    957 
    958 // CHECK: lgdtq	4(%rax)
    959 // CHECK:  encoding: [0x0f,0x01,0x50,0x04]
    960         	lgdtq	4(%rax)
    961 
    962 // CHECK: lidtq	4(%rax)
    963 // CHECK:  encoding: [0x0f,0x01,0x58,0x04]
    964         	lidt	4(%rax)
    965 
    966 // CHECK: lidtq	4(%rax)
    967 // CHECK:  encoding: [0x0f,0x01,0x58,0x04]
    968         	lidtq	4(%rax)
    969 
    970 // CHECK: sgdtq	4(%rax)
    971 // CHECK:  encoding: [0x0f,0x01,0x40,0x04]
    972         	sgdt	4(%rax)
    973 
    974 // CHECK: sgdtq	4(%rax)
    975 // CHECK:  encoding: [0x0f,0x01,0x40,0x04]
    976         	sgdtq	4(%rax)
    977 
    978 // CHECK: sidtq	4(%rax)
    979 // CHECK:  encoding: [0x0f,0x01,0x48,0x04]
    980         	sidt	4(%rax)
    981 
    982 // CHECK: sidtq	4(%rax)
    983 // CHECK:  encoding: [0x0f,0x01,0x48,0x04]
    984         	sidtq	4(%rax)
    985 
    986 
    987 // rdar://8208615
    988 mov (%rsi), %gs  // CHECK: movl	(%rsi), %gs # encoding: [0x8e,0x2e]
    989 mov %gs, (%rsi)  // CHECK: movl	%gs, (%rsi) # encoding: [0x8c,0x2e]
    990 
    991 
    992 // rdar://8431864
    993 //CHECK: divb	%bl
    994 //CHECK: divw	%bx
    995 //CHECK: divl	%ecx
    996 //CHECK: divl	3735928559(%ebx,%ecx,8)
    997 //CHECK: divl	69
    998 //CHECK: divl	32493
    999 //CHECK: divl	3133065982
   1000 //CHECK: divl	305419896
   1001 //CHECK: idivb	%bl
   1002 //CHECK: idivw	%bx
   1003 //CHECK: idivl	%ecx
   1004 //CHECK: idivl	3735928559(%ebx,%ecx,8)
   1005 //CHECK: idivl	69
   1006 //CHECK: idivl	32493
   1007 //CHECK: idivl	3133065982
   1008 //CHECK: idivl	305419896
   1009 	div	%bl,%al
   1010 	div	%bx,%ax
   1011 	div	%ecx,%eax
   1012 	div	0xdeadbeef(%ebx,%ecx,8),%eax
   1013 	div	0x45,%eax
   1014 	div	0x7eed,%eax
   1015 	div	0xbabecafe,%eax
   1016 	div	0x12345678,%eax
   1017 	idiv	%bl,%al
   1018 	idiv	%bx,%ax
   1019 	idiv	%ecx,%eax
   1020 	idiv	0xdeadbeef(%ebx,%ecx,8),%eax
   1021 	idiv	0x45,%eax
   1022 	idiv	0x7eed,%eax
   1023 	idiv	0xbabecafe,%eax
   1024 	idiv	0x12345678,%eax
   1025 
   1026 // PR8524
   1027 movd	%rax, %mm5 // CHECK: movd %rax, %mm5 # encoding: [0x48,0x0f,0x6e,0xe8]
   1028 movd	%mm5, %rbx // CHECK: movd %mm5, %rbx # encoding: [0x48,0x0f,0x7e,0xeb]
   1029 movq	%rax, %mm5 // CHECK: movd %rax, %mm5 # encoding: [0x48,0x0f,0x6e,0xe8]
   1030 movq	%mm5, %rbx // CHECK: movd %mm5, %rbx # encoding: [0x48,0x0f,0x7e,0xeb]
   1031 
   1032 rex64 // CHECK: rex64 # encoding: [0x48]
   1033 data16 // CHECK: data16 # encoding: [0x66]
   1034 
   1035 // PR8855
   1036 movq 18446744073709551615,%rbx   // CHECK: movq	-1, %rbx
   1037 
   1038 // PR8946
   1039 movdqu	%xmm0, %xmm1 // CHECK: movdqu	%xmm0, %xmm1 # encoding: [0xf3,0x0f,0x6f,0xc8]
   1040 
   1041 // PR8935
   1042 xgetbv // CHECK: xgetbv # encoding: [0x0f,0x01,0xd0]
   1043 xsetbv // CHECK: xsetbv # encoding: [0x0f,0x01,0xd1]
   1044 
   1045 // CHECK: loope 0
   1046 // CHECK: encoding: [0xe1,A]
   1047 	loopz 0
   1048 
   1049 // CHECK: loopne 0
   1050 // CHECK: encoding: [0xe0,A]
   1051 	loopnz 0
   1052 
   1053 // CHECK: outsb (%rsi), %dx # encoding: [0x6e]
   1054 // CHECK: outsb
   1055 // CHECK: outsb
   1056 	outsb
   1057 	outsb	%ds:(%rsi), %dx
   1058 	outsb	(%rsi), %dx
   1059 
   1060 // CHECK: outsw (%rsi), %dx # encoding: [0x66,0x6f]
   1061 // CHECK: outsw
   1062 // CHECK: outsw
   1063 	outsw
   1064 	outsw	%ds:(%rsi), %dx
   1065 	outsw	(%rsi), %dx
   1066 
   1067 // CHECK: outsl (%rsi), %dx # encoding: [0x6f]
   1068 // CHECK: outsl
   1069 	outsl
   1070 	outsl	%ds:(%rsi), %dx
   1071 	outsl	(%rsi), %dx
   1072 
   1073 // CHECK: insb  %dx, %es:(%rdi) # encoding: [0x6c]
   1074 // CHECK: insb
   1075 	insb
   1076 	insb	%dx, %es:(%rdi)
   1077 
   1078 // CHECK: insw  %dx, %es:(%rdi) # encoding: [0x66,0x6d]
   1079 // CHECK: insw
   1080 	insw
   1081 	insw	%dx, %es:(%rdi)
   1082 
   1083 // CHECK: insl %dx, %es:(%rdi) # encoding: [0x6d]
   1084 // CHECK: insl
   1085 	insl
   1086 	insl	%dx, %es:(%rdi)
   1087 
   1088 // CHECK: movsb (%rsi), %es:(%rdi) # encoding: [0xa4]
   1089 // CHECK: movsb
   1090 // CHECK: movsb
   1091 	movsb
   1092 	movsb	%ds:(%rsi), %es:(%rdi)
   1093 	movsb	(%rsi), %es:(%rdi)
   1094 
   1095 // CHECK: movsw (%rsi), %es:(%rdi) # encoding: [0x66,0xa5]
   1096 // CHECK: movsw
   1097 // CHECK: movsw
   1098 	movsw
   1099 	movsw	%ds:(%rsi), %es:(%rdi)
   1100 	movsw	(%rsi), %es:(%rdi)
   1101 
   1102 // CHECK: movsl (%rsi), %es:(%rdi) # encoding: [0xa5]
   1103 // CHECK: movsl
   1104 // CHECK: movsl
   1105 	movsl
   1106 	movsl	%ds:(%rsi), %es:(%rdi)
   1107 	movsl	(%rsi), %es:(%rdi)
   1108 // rdar://10883092
   1109 // CHECK: movsl
   1110 	movsl	(%rsi), (%rdi)
   1111 
   1112 // CHECK: movsq (%rsi), %es:(%rdi) # encoding: [0x48,0xa5]
   1113 // CHECK: movsq
   1114 // CHECK: movsq
   1115 	movsq
   1116 	movsq	%ds:(%rsi), %es:(%rdi)
   1117 	movsq	(%rsi), %es:(%rdi)
   1118 
   1119 // CHECK: lodsb (%rsi), %al # encoding: [0xac]
   1120 // CHECK: lodsb
   1121 // CHECK: lodsb
   1122 // CHECK: lodsb
   1123 // CHECK: lodsb
   1124 	lodsb
   1125 	lodsb	%ds:(%rsi), %al
   1126 	lodsb	(%rsi), %al
   1127 	lods	%ds:(%rsi), %al
   1128 	lods	(%rsi), %al
   1129 
   1130 // CHECK: lodsw (%rsi), %ax # encoding: [0x66,0xad]
   1131 // CHECK: lodsw
   1132 // CHECK: lodsw
   1133 // CHECK: lodsw
   1134 // CHECK: lodsw
   1135 	lodsw
   1136 	lodsw	%ds:(%rsi), %ax
   1137 	lodsw	(%rsi), %ax
   1138 	lods	%ds:(%rsi), %ax
   1139 	lods	(%rsi), %ax
   1140 
   1141 // CHECK: lodsl (%rsi), %eax # encoding: [0xad]
   1142 // CHECK: lodsl
   1143 // CHECK: lodsl
   1144 // CHECK: lodsl
   1145 // CHECK: lodsl
   1146 	lodsl
   1147 	lodsl	%ds:(%rsi), %eax
   1148 	lodsl	(%rsi), %eax
   1149 	lods	%ds:(%rsi), %eax
   1150 	lods	(%rsi), %eax
   1151 
   1152 // CHECK: lodsq (%rsi), %rax # encoding: [0x48,0xad]
   1153 // CHECK: lodsq
   1154 // CHECK: lodsq
   1155 // CHECK: lodsq
   1156 // CHECK: lodsq
   1157 	lodsq
   1158 	lodsq	%ds:(%rsi), %rax
   1159 	lodsq	(%rsi), %rax
   1160 	lods	%ds:(%rsi), %rax
   1161 	lods	(%rsi), %rax
   1162 
   1163 // CHECK: stosb %al, %es:(%rdi) # encoding: [0xaa]
   1164 // CHECK: stosb
   1165 // CHECK: stosb
   1166 	stosb
   1167 	stosb	%al, %es:(%rdi)
   1168 	stos	%al, %es:(%rdi)
   1169 
   1170 // CHECK: stosw %ax, %es:(%rdi) # encoding: [0x66,0xab]
   1171 // CHECK: stosw
   1172 // CHECK: stosw
   1173 	stosw
   1174 	stosw	%ax, %es:(%rdi)
   1175 	stos	%ax, %es:(%rdi)
   1176 
   1177 // CHECK: stosl %eax, %es:(%rdi) # encoding: [0xab]
   1178 // CHECK: stosl
   1179 // CHECK: stosl
   1180 	stosl
   1181 	stosl	%eax, %es:(%rdi)
   1182 	stos	%eax, %es:(%rdi)
   1183 
   1184 // CHECK: stosq %rax, %es:(%rdi) # encoding: [0x48,0xab]
   1185 // CHECK: stosq
   1186 // CHECK: stosq
   1187 	stosq
   1188 	stosq	%rax, %es:(%rdi)
   1189 	stos	%rax, %es:(%rdi)
   1190 
   1191 // CHECK: strw
   1192 // CHECK: encoding: [0x66,0x0f,0x00,0xc8]
   1193 	str %ax
   1194 
   1195 // CHECK: strl
   1196 // CHECK: encoding: [0x0f,0x00,0xc8]
   1197 	str %eax
   1198 
   1199 // CHECK: strw
   1200 // CHECK: encoding: [0x66,0x0f,0x00,0xc8]
   1201 	str %ax
   1202 
   1203 // CHECK: strq
   1204 // CHECK: encoding: [0x48,0x0f,0x00,0xc8]
   1205 	str %rax
   1206 
   1207 // CHECK: movd %rdi, %xmm0
   1208 // CHECK: encoding: [0x66,0x48,0x0f,0x6e,0xc7]
   1209 	movq %rdi,%xmm0
   1210 
   1211 // CHECK: movd %rdi, %xmm0
   1212 // CHECK: encoding: [0x66,0x48,0x0f,0x6e,0xc7]
   1213 	movd %rdi,%xmm0
   1214 
   1215 // CHECK: movd  %xmm0, %rax
   1216 // CHECK: encoding: [0x66,0x48,0x0f,0x7e,0xc0]
   1217         movd  %xmm0, %rax
   1218 
   1219 // CHECK: movntil %eax, (%rdi)
   1220 // CHECK: encoding: [0x0f,0xc3,0x07]
   1221 // CHECK: movntil
   1222 movntil %eax, (%rdi)
   1223 movnti %eax, (%rdi)
   1224 
   1225 // CHECK: movntiq %rax, (%rdi)
   1226 // CHECK: encoding: [0x48,0x0f,0xc3,0x07]
   1227 // CHECK: movntiq
   1228 movntiq %rax, (%rdi)
   1229 movnti %rax, (%rdi)
   1230 
   1231 // CHECK: pclmulqdq	$17, %xmm0, %xmm1
   1232 // CHECK: encoding: [0x66,0x0f,0x3a,0x44,0xc8,0x11]
   1233 pclmulhqhqdq %xmm0, %xmm1
   1234 
   1235 // CHECK: pclmulqdq	$1, %xmm0, %xmm1
   1236 // CHECK: encoding: [0x66,0x0f,0x3a,0x44,0xc8,0x01]
   1237 pclmulqdq $1, %xmm0, %xmm1
   1238 
   1239 // CHECK: pclmulqdq	$16, (%rdi), %xmm1
   1240 // CHECK: encoding: [0x66,0x0f,0x3a,0x44,0x0f,0x10]
   1241 pclmullqhqdq (%rdi), %xmm1
   1242 
   1243 // CHECK: pclmulqdq	$0, (%rdi), %xmm1
   1244 // CHECK: encoding: [0x66,0x0f,0x3a,0x44,0x0f,0x00]
   1245 pclmulqdq $0, (%rdi), %xmm1
   1246 
   1247 // PR10345
   1248 // CHECK: xchgq %rax, %rax
   1249 // CHECK: encoding: [0x48,0x90]
   1250 xchgq %rax, %rax
   1251 
   1252 // CHECK: xchgl %eax, %eax
   1253 // CHECK: encoding: [0x87,0xc0]
   1254 xchgl %eax, %eax
   1255 
   1256 // CHECK: xchgw %ax, %ax
   1257 // CHECK: encoding: [0x66,0x90]
   1258 xchgw %ax, %ax
   1259 
   1260 // CHECK: xchgl %ecx, %eax
   1261 // CHECK: encoding: [0x91]
   1262 xchgl %ecx, %eax
   1263 
   1264 // CHECK: xchgl %ecx, %eax
   1265 // CHECK: encoding: [0x91]
   1266 xchgl %eax, %ecx
   1267 
   1268 // CHECK: sysexit
   1269 // CHECK: encoding: [0x0f,0x35]
   1270 sysexit
   1271 
   1272 // CHECK: sysexitl
   1273 // CHECK: encoding: [0x0f,0x35]
   1274 sysexitl
   1275 
   1276 // CHECK: sysexitq
   1277 // CHECK: encoding: [0x48,0x0f,0x35]
   1278 sysexitq
   1279 
   1280 // CHECK: clac
   1281 // CHECK: encoding: [0x0f,0x01,0xca]
   1282 clac
   1283 
   1284 // CHECK: stac
   1285 // CHECK: encoding: [0x0f,0x01,0xcb]
   1286 stac
   1287 
   1288 // CHECK: faddp %st(1)
   1289 // CHECK: fmulp %st(1)
   1290 // CHECK: fsubp %st(1)
   1291 // CHECK: fsubrp %st(1)
   1292 // CHECK: fdivp %st(1)
   1293 // CHECK: fdivrp %st(1)
   1294 faddp %st(0), %st(1)
   1295 fmulp %st(0), %st(1)
   1296 fsubp %st(0), %st(1)
   1297 fsubrp %st(0), %st(1)
   1298 fdivp %st(0), %st(1)
   1299 fdivrp %st(0), %st(1)
   1300 
   1301 // CHECK: faddp %st(1)
   1302 // CHECK: fmulp %st(1)
   1303 // CHECK: fsubp %st(1)
   1304 // CHECK: fsubrp %st(1)
   1305 // CHECK: fdivp %st(1)
   1306 // CHECK: fdivrp %st(1)
   1307 faddp %st(1), %st(0)
   1308 fmulp %st(1), %st(0)
   1309 fsubp %st(1), %st(0)
   1310 fsubrp %st(1), %st(0)
   1311 fdivp %st(1), %st(0)
   1312 fdivrp %st(1), %st(0)
   1313 
   1314 // CHECK: faddp %st(1)
   1315 // CHECK: fmulp %st(1)
   1316 // CHECK: fsubp %st(1)
   1317 // CHECK: fsubrp %st(1)
   1318 // CHECK: fdivp %st(1)
   1319 // CHECK: fdivrp %st(1)
   1320 faddp %st(1)
   1321 fmulp %st(1)
   1322 fsubp %st(1)
   1323 fsubrp %st(1)
   1324 fdivp %st(1)
   1325 fdivrp %st(1)
   1326 
   1327 // CHECK: faddp %st(1)
   1328 // CHECK: fmulp %st(1)
   1329 // CHECK: fsubp %st(1)
   1330 // CHECK: fsubrp %st(1)
   1331 // CHECK: fdivp %st(1)
   1332 // CHECK: fdivrp %st(1)
   1333 faddp
   1334 fmulp
   1335 fsubp
   1336 fsubrp
   1337 fdivp
   1338 fdivrp
   1339 
   1340 // CHECK: fadd %st(1)
   1341 // CHECK: fmul %st(1)
   1342 // CHECK: fsub %st(1)
   1343 // CHECK: fsubr %st(1)
   1344 // CHECK: fdiv %st(1)
   1345 // CHECK: fdivr %st(1)
   1346 fadd %st(1), %st(0)
   1347 fmul %st(1), %st(0)
   1348 fsub %st(1), %st(0)
   1349 fsubr %st(1), %st(0)
   1350 fdiv %st(1), %st(0)
   1351 fdivr %st(1), %st(0)
   1352 
   1353 // CHECK: fadd %st(0), %st(1)
   1354 // CHECK: fmul %st(0), %st(1)
   1355 // CHECK: fsub %st(0), %st(1)
   1356 // CHECK: fsubr %st(0), %st(1)
   1357 // CHECK: fdiv %st(0), %st(1)
   1358 // CHECK: fdivr %st(0), %st(1)
   1359 fadd %st(0), %st(1)
   1360 fmul %st(0), %st(1)
   1361 fsub %st(0), %st(1)
   1362 fsubr %st(0), %st(1)
   1363 fdiv %st(0), %st(1)
   1364 fdivr %st(0), %st(1)
   1365 
   1366 // CHECK: fadd %st(1)
   1367 // CHECK: fmul %st(1)
   1368 // CHECK: fsub %st(1)
   1369 // CHECK: fsubr %st(1)
   1370 // CHECK: fdiv %st(1)
   1371 // CHECK: fdivr %st(1)
   1372 fadd %st(1)
   1373 fmul %st(1)
   1374 fsub %st(1)
   1375 fsubr %st(1)
   1376 fdiv %st(1)
   1377 fdivr %st(1)
   1378 
   1379 // CHECK: movd %xmm0, %eax
   1380 // CHECK: movd %xmm0, %rax
   1381 // CHECK: movd %xmm0, %rax
   1382 // CHECK: vmovd %xmm0, %eax
   1383 // CHECK: vmovq %xmm0, %rax
   1384 // CHECK: vmovq %xmm0, %rax
   1385 movd %xmm0, %eax
   1386 movd %xmm0, %rax
   1387 movq %xmm0, %rax
   1388 vmovd %xmm0, %eax
   1389 vmovd %xmm0, %rax
   1390 vmovq %xmm0, %rax
   1391 
   1392 // CHECK: seto 3735928559(%r10,%r9,8)
   1393 // CHECK:  encoding: [0x43,0x0f,0x90,0x84,0xca,0xef,0xbe,0xad,0xde]
   1394 	seto 0xdeadbeef(%r10,%r9,8)
   1395 
   1396 // CHECK: 	monitorx
   1397 // CHECK:  encoding: [0x0f,0x01,0xfa]
   1398         	monitorx
   1399 
   1400 // CHECK: 	monitorx
   1401 // CHECK:  encoding: [0x0f,0x01,0xfa]
   1402         	monitorx %rax, %rcx, %rdx
   1403 
   1404 // CHECK: 	mwaitx
   1405 // CHECK:  encoding: [0x0f,0x01,0xfb]
   1406         	mwaitx
   1407 
   1408 // CHECK: 	mwaitx
   1409 // CHECK:  encoding: [0x0f,0x01,0xfb]
   1410         	mwaitx %rax, %rcx, %rbx
   1411