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-NEXT: movsb
    104 rep     # comment
    105 movsb
    106 
    107 // CHECK: rep
    108 // CHECK: insb
    109         rep;insb
    110 
    111 // CHECK: rep
    112 // CHECK: outsb
    113         rep;outsb
    114 
    115 // CHECK: rep
    116 // CHECK: movsb
    117         rep;movsb
    118 
    119 
    120 // rdar://8470918
    121 smovb // CHECK: movsb
    122 smovw // CHECK: movsw
    123 smovl // CHECK: movsl
    124 smovq // CHECK: movsq
    125 
    126 // rdar://8456361
    127 // CHECK: rep
    128 // CHECK: movsl
    129         rep movsd
    130 
    131 // CHECK: rep
    132 // CHECK: lodsb
    133         rep;lodsb
    134 
    135 // CHECK: rep
    136 // CHECK: stosb
    137         rep;stosb
    138 
    139 // NOTE: repz and repe have the same opcode as rep
    140 // CHECK: rep
    141 // CHECK: cmpsb
    142         repz;cmpsb
    143 
    144 // NOTE: repnz has the same opcode as repne
    145 // CHECK: repne
    146 // CHECK: cmpsb
    147         repnz;cmpsb
    148 
    149 // NOTE: repe and repz have the same opcode as rep
    150 // CHECK: rep
    151 // CHECK: scasb
    152         repe;scasb
    153 
    154 // CHECK: repne
    155 // CHECK: scasb
    156         repne;scasb
    157 
    158 // CHECK: lock
    159 // CHECK: cmpxchgb %al, (%ebx)
    160         lock;cmpxchgb %al, 0(%ebx)
    161 
    162 // CHECK: cs
    163 // CHECK: movb (%eax), %al
    164         cs;movb 0(%eax), %al
    165 
    166 // CHECK: ss
    167 // CHECK: movb (%eax), %al
    168         ss;movb 0(%eax), %al
    169 
    170 // CHECK: ds
    171 // CHECK: movb (%eax), %al
    172         ds;movb 0(%eax), %al
    173 
    174 // CHECK: es
    175 // CHECK: movb (%eax), %al
    176         es;movb 0(%eax), %al
    177 
    178 // CHECK: fs
    179 // CHECK: movb (%eax), %al
    180         fs;movb 0(%eax), %al
    181 
    182 // CHECK: gs
    183 // CHECK: movb (%eax), %al
    184         gs;movb 0(%eax), %al
    185 
    186 // CHECK: fadd %st(0)
    187 // CHECK: fadd %st(1)
    188 // CHECK: fadd %st(7)
    189 
    190 fadd %st(0)
    191 fadd %st(1)
    192 fadd %st(7)
    193 
    194 // CHECK: leal 0, %eax
    195         leal 0, %eax
    196 
    197 // rdar://7986634 - Insensitivity on opcodes.
    198 // CHECK: int3
    199 INT3
    200 
    201 // rdar://8735979 - int $3 -> int3
    202 // CHECK: int3
    203 int	$3
    204 
    205 
    206 // Allow scale factor without index register.
    207 // CHECK: movaps	%xmm3, (%esi)
    208 // CHECK-STDERR: warning: scale factor without index register is ignored
    209 movaps %xmm3, (%esi, 2)
    210 
    211 // CHECK: imull $12, %eax
    212 imul $12, %eax
    213 
    214 // CHECK: imull %ecx, %eax
    215 imull %ecx, %eax
    216 
    217 
    218 // rdar://8208481
    219 // CHECK: outb	%al, $161
    220 outb	%al, $161
    221 // CHECK: outw	%ax, $128
    222 outw	%ax, $128
    223 // CHECK: inb	$161, %al
    224 inb	$161, %al
    225 
    226 // rdar://8017621
    227 // CHECK: pushq	$1
    228 push $1
    229 
    230 // rdar://9716860
    231 pushq $1
    232 // CHECK: encoding: [0x6a,0x01]
    233 pushq $1111111
    234 // CHECK: encoding: [0x68,0x47,0xf4,0x10,0x00]
    235 
    236 // rdar://8017530
    237 // CHECK: sldtw	4
    238 sldt	4
    239 
    240 // rdar://8208499
    241 // CHECK: cmovnew	%bx, %ax
    242 cmovnz %bx, %ax
    243 // CHECK: cmovneq	%rbx, %rax
    244 cmovnzq %rbx, %rax
    245 
    246 
    247 // rdar://8407928
    248 // CHECK: inb	$127, %al
    249 // CHECK: inw	%dx, %ax
    250 // CHECK: outb	%al, $127
    251 // CHECK: outw	%ax, %dx
    252 // CHECK: inl	%dx, %eax
    253 inb	$0x7f
    254 inw	%dx
    255 outb	$0x7f
    256 outw	%dx
    257 inl	%dx
    258 
    259 
    260 // PR8114
    261 // CHECK: outb	%al, %dx
    262 // CHECK: outb	%al, %dx
    263 // CHECK: outw	%ax, %dx
    264 // CHECK: outw	%ax, %dx
    265 // CHECK: outl	%eax, %dx
    266 // CHECK: outl	%eax, %dx
    267 
    268 out	%al, (%dx)
    269 outb	%al, (%dx)
    270 out	%ax, (%dx)
    271 outw	%ax, (%dx)
    272 out	%eax, (%dx)
    273 outl	%eax, (%dx)
    274 
    275 // CHECK: inb	%dx, %al
    276 // CHECK: inb	%dx, %al
    277 // CHECK: inw	%dx, %ax
    278 // CHECK: inw	%dx, %ax
    279 // CHECK: inl	%dx, %eax
    280 // CHECK: inl	%dx, %eax
    281 
    282 in	(%dx), %al
    283 inb	(%dx), %al
    284 in	(%dx), %ax
    285 inw	(%dx), %ax
    286 in	(%dx), %eax
    287 inl	(%dx), %eax
    288 
    289 //PR15455
    290 
    291 outsb	(%rsi), (%dx)
    292 // CHECK: outsb	(%rsi), %dx
    293 outsw	(%rsi), (%dx)
    294 // CHECK: outsw	(%rsi), %dx
    295 outsl	(%rsi), (%dx)
    296 // CHECK: outsl	(%rsi), %dx
    297 
    298 insb	(%dx), %es:(%rdi)
    299 // CHECK: insb	%dx, %es:(%rdi)
    300 insw	(%dx), %es:(%rdi)
    301 // CHECK: insw	%dx, %es:(%rdi)
    302 insl	(%dx), %es:(%rdi)
    303 // CHECK: insl	%dx, %es:(%rdi)
    304 
    305 // rdar://8431422
    306 
    307 // CHECK: fxch %st(1)
    308 // CHECK: fucom %st(1)
    309 // CHECK: fucomp %st(1)
    310 // CHECK: faddp %st(1)
    311 // CHECK: faddp	%st(0)
    312 // CHECK: fsubp %st(1)
    313 // CHECK: fsubrp %st(1)
    314 // CHECK: fmulp %st(1)
    315 // CHECK: fdivp %st(1)
    316 // CHECK: fdivrp %st(1)
    317 
    318 fxch
    319 fucom
    320 fucomp
    321 faddp
    322 faddp %st
    323 fsubp
    324 fsubrp
    325 fmulp
    326 fdivp
    327 fdivrp
    328 
    329 // CHECK: fcomi %st(1)
    330 // CHECK: fcomi	%st(2)
    331 // CHECK: fucomi %st(1)
    332 // CHECK: fucomi %st(2)
    333 // CHECK: fucomi %st(2)
    334 
    335 fcomi
    336 fcomi	%st(2)
    337 fucomi
    338 fucomi	%st(2)
    339 fucomi	%st(2), %st
    340 
    341 // CHECK: fnstsw %ax
    342 // CHECK: fnstsw %ax
    343 
    344 fnstsw
    345 fnstsw %ax
    346 
    347 // rdar://8431880
    348 // CHECK: rclb	%bl
    349 // CHECK: rcll	3735928559(%ebx,%ecx,8)
    350 // CHECK: rcrl	%ecx
    351 // CHECK: rcrl	305419896
    352 rcl	%bl
    353 rcll	0xdeadbeef(%ebx,%ecx,8)
    354 rcr	%ecx
    355 rcrl	0x12345678
    356 
    357 rclb	%bl       // CHECK: rclb %bl     # encoding: [0xd0,0xd3]
    358 rclb	$1, %bl   // CHECK: rclb %bl     # encoding: [0xd0,0xd3]
    359 rclb	$2, %bl   // CHECK: rclb $2, %bl # encoding: [0xc0,0xd3,0x02]
    360 
    361 // rdar://8418316
    362 // PR12173
    363 // CHECK: shldw	%cl, %bx, %dx
    364 // CHECK: shldw	%cl, %bx, %dx
    365 // CHECK: shldw	$1, %bx, %dx
    366 // CHECK: shldw	%cl, %bx, (%rax)
    367 // CHECK: shldw	%cl, %bx, (%rax)
    368 // CHECK: shrdw	%cl, %bx, %dx
    369 // CHECK: shrdw	%cl, %bx, %dx
    370 // CHECK: shrdw	$1, %bx, %dx
    371 // CHECK: shrdw	%cl, %bx, (%rax)
    372 // CHECK: shrdw	%cl, %bx, (%rax)
    373 
    374 shld  %bx, %dx
    375 shld  %cl, %bx, %dx
    376 shld  $1, %bx, %dx
    377 shld  %bx, (%rax)
    378 shld  %cl, %bx, (%rax)
    379 shrd  %bx, %dx
    380 shrd  %cl, %bx, %dx
    381 shrd  $1, %bx, %dx
    382 shrd  %bx, (%rax)
    383 shrd  %cl, %bx, (%rax)
    384 
    385 // CHECK: sldtl	%ecx
    386 // CHECK: encoding: [0x0f,0x00,0xc1]
    387 // CHECK: sldtw	%cx
    388 // CHECK: encoding: [0x66,0x0f,0x00,0xc1]
    389 
    390 sldt	%ecx
    391 sldt	%cx
    392 
    393 // CHECK: lcalll *3135175374
    394 // CHECK: ljmpl  *3135175374
    395 // CHECK: lcalll *(%rax)
    396 // CHECK: ljmpl *(%rax)
    397 lcall  *0xbadeface
    398 ljmp *0xbadeface
    399 lcall *(%rax)
    400 ljmpl *(%rax)
    401 
    402 // rdar://8444631
    403 // CHECK: enter	$31438, $0
    404 // CHECK: encoding: [0xc8,0xce,0x7a,0x00]
    405 // CHECK: enter	$31438, $1
    406 // CHECK: encoding: [0xc8,0xce,0x7a,0x01]
    407 // CHECK: enter	$31438, $127
    408 // CHECK: encoding: [0xc8,0xce,0x7a,0x7f]
    409 enter $0x7ace,$0
    410 enter $0x7ace,$1
    411 enter $0x7ace,$0x7f
    412 
    413 
    414 // rdar://8456364
    415 // CHECK: movw	%cs, %ax
    416 mov %cs, %ax
    417 
    418 // rdar://8456391
    419 fcmovb %st(1), %st(0)   // CHECK: fcmovb	%st(1), %st(0)
    420 fcmove %st(1), %st(0)   // CHECK: fcmove	%st(1), %st(0)
    421 fcmovbe %st(1), %st(0)  // CHECK: fcmovbe	%st(1), %st(0)
    422 fcmovu %st(1), %st(0)   // CHECK: fcmovu	 %st(1), %st(0)
    423 
    424 fcmovnb %st(1), %st(0)  // CHECK: fcmovnb	%st(1), %st(0)
    425 fcmovne %st(1), %st(0)  // CHECK: fcmovne	%st(1), %st(0)
    426 fcmovnbe %st(1), %st(0) // CHECK: fcmovnbe	%st(1), %st(0)
    427 fcmovnu %st(1), %st(0)  // CHECK: fcmovnu	%st(1), %st(0)
    428 
    429 fcmovnae %st(1), %st(0) // CHECK: fcmovb	%st(1), %st(0)
    430 fcmovna %st(1), %st(0)  // CHECK: fcmovbe	%st(1), %st(0)
    431 
    432 fcmovae %st(1), %st(0)  // CHECK: fcmovnb	%st(1), %st(0)
    433 fcmova %st(1), %st(0)   // CHECK: fcmovnbe	%st(1), %st(0)
    434 
    435 // rdar://8456417
    436 .byte (88 + 1) & 15  // CHECK: .byte	9
    437 
    438 // rdar://8456412
    439 mov %rdx, %cr0
    440 // CHECK: movq	%rdx, %cr0
    441 // CHECK: encoding: [0x0f,0x22,0xc2]
    442 mov %rdx, %cr4
    443 // CHECK: movq	%rdx, %cr4
    444 // CHECK: encoding: [0x0f,0x22,0xe2]
    445 mov %rdx, %cr8
    446 // CHECK: movq	%rdx, %cr8
    447 // CHECK: encoding: [0x44,0x0f,0x22,0xc2]
    448 mov %rdx, %cr15
    449 // CHECK: movq	%rdx, %cr15
    450 // CHECK: encoding: [0x44,0x0f,0x22,0xfa]
    451 mov %rdx, %dr15
    452 // CHECK: movq	%rdx, %dr15
    453 // CHECK: encoding: [0x44,0x0f,0x23,0xfa]
    454 mov %rdx, %db15
    455 // CHECK: movq	%rdx, %dr15
    456 // CHECK: encoding: [0x44,0x0f,0x23,0xfa]
    457 
    458 // rdar://8456371 - Handle commutable instructions written backward.
    459 // CHECK: 	faddp	%st(1)
    460 // CHECK:	fmulp	%st(2)
    461 faddp %st, %st(1)
    462 fmulp %st, %st(2)
    463 
    464 // rdar://8468087 - Encode these accurately, they are not synonyms.
    465 // CHECK: fmul	%st(0), %st(1)
    466 // CHECK: encoding: [0xdc,0xc9]
    467 // CHECK: fmul	%st(1)
    468 // CHECK: encoding: [0xd8,0xc9]
    469 fmul %st, %st(1)
    470 fmul %st(1), %st
    471 
    472 // CHECK: fadd	%st(0), %st(1)
    473 // CHECK: encoding: [0xdc,0xc1]
    474 // CHECK: fadd	%st(1)
    475 // CHECK: encoding: [0xd8,0xc1]
    476 fadd %st, %st(1)
    477 fadd %st(1), %st
    478 
    479 
    480 // rdar://8416805
    481 // CHECK: xorb	%al, %al
    482 // CHECK: encoding: [0x30,0xc0]
    483 // CHECK: xorw	%di, %di
    484 // CHECK: encoding: [0x66,0x31,0xff]
    485 // CHECK: xorl	%esi, %esi
    486 // CHECK: encoding: [0x31,0xf6]
    487 // CHECK: xorq	%rsi, %rsi
    488 // CHECK: encoding: [0x48,0x31,0xf6]
    489 clrb    %al
    490 clr    %di
    491 clr    %esi
    492 clr    %rsi
    493 
    494 // rdar://8456378
    495 cltq  // CHECK: cltq
    496 cdqe  // CHECK: cltq
    497 cwde  // CHECK: cwtl
    498 cwtl  // CHECK: cwtl
    499 
    500 // rdar://8416805
    501 cbw   // CHECK: cbtw
    502 cwd   // CHECK: cwtd
    503 cdq   // CHECK: cltd
    504 cqo   // CHECK: cqto
    505 
    506 // rdar://8456378 and PR7557 - fstsw
    507 fstsw %ax
    508 // CHECK: wait
    509 // CHECK: fnstsw
    510 fstsw (%rax)
    511 // CHECK: wait
    512 // CHECK: fnstsw (%rax)
    513 
    514 // PR8259
    515 fstcw (%rsp)
    516 // CHECK: wait
    517 // CHECK: fnstcw (%rsp)
    518 
    519 // PR8259
    520 fstcw (%rsp)
    521 // CHECK: wait
    522 // CHECK: fnstcw (%rsp)
    523 
    524 // PR8258
    525 finit
    526 // CHECK: wait
    527 // CHECK: fninit
    528 
    529 fsave	32493
    530 // CHECK: wait
    531 // CHECK: fnsave 32493
    532 
    533 
    534 // rdar://8456382 - cvtsd2si support.
    535 cvtsd2si	%xmm1, %rax
    536 // CHECK: cvtsd2si	%xmm1, %rax
    537 // CHECK: encoding: [0xf2,0x48,0x0f,0x2d,0xc1]
    538 cvtsd2si	%xmm1, %eax
    539 // CHECK: cvtsd2si	%xmm1, %eax
    540 // CHECK: encoding: [0xf2,0x0f,0x2d,0xc1]
    541 
    542 cvtsd2siq %xmm0, %rax // CHECK: cvtsd2si	%xmm0, %rax
    543 cvtsd2sil %xmm0, %eax // CHECK: cvtsd2si	%xmm0, %eax
    544 cvtsd2si %xmm0, %rax  // CHECK: cvtsd2si	%xmm0, %rax
    545 
    546 
    547 cvttpd2dq %xmm1, %xmm0  // CHECK: cvttpd2dq %xmm1, %xmm0
    548 cvttpd2dq (%rax), %xmm0 // CHECK: cvttpd2dq (%rax), %xmm0
    549 
    550 cvttps2dq %xmm1, %xmm0  // CHECK: cvttps2dq %xmm1, %xmm0
    551 cvttps2dq (%rax), %xmm0 // CHECK: cvttps2dq (%rax), %xmm0
    552 
    553 // rdar://8456376 - llvm-mc rejects 'roundss'
    554 roundss $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x0a,0xc0,0x0e]
    555 roundps $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x08,0xc0,0x0e]
    556 roundsd $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x0b,0xc0,0x0e]
    557 roundpd $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x09,0xc0,0x0e]
    558 
    559 
    560 // rdar://8482675 - 32-bit mem operand support in 64-bit mode (0x67 prefix)
    561 leal	8(%eax), %esi
    562 // CHECK: leal	8(%eax), %esi
    563 // CHECK: encoding: [0x67,0x8d,0x70,0x08]
    564 leaq	8(%eax), %rsi
    565 // CHECK: leaq	8(%eax), %rsi
    566 // CHECK: encoding: [0x67,0x48,0x8d,0x70,0x08]
    567 leaq	8(%rax), %rsi
    568 // CHECK: leaq	8(%rax), %rsi
    569 // CHECK: encoding: [0x48,0x8d,0x70,0x08]
    570 
    571 
    572 cvttpd2dq	0xdeadbeef(%ebx,%ecx,8),%xmm5
    573 // CHECK: cvttpd2dq	3735928559(%ebx,%ecx,8), %xmm5
    574 // CHECK: encoding: [0x67,0x66,0x0f,0xe6,0xac,0xcb,0xef,0xbe,0xad,0xde]
    575 
    576 // rdar://8490728 - llvm-mc rejects 'movmskpd'
    577 movmskpd	%xmm6, %rax
    578 // CHECK: movmskpd	%xmm6, %eax
    579 // CHECK: encoding: [0x66,0x0f,0x50,0xc6]
    580 movmskpd	%xmm6, %eax
    581 // CHECK: movmskpd	%xmm6, %eax
    582 // CHECK: encoding: [0x66,0x0f,0x50,0xc6]
    583 
    584 // rdar://8491845 - Gas supports commuted forms of non-commutable instructions.
    585 fdivrp %st(0), %st(1) // CHECK: encoding: [0xde,0xf9]
    586 fdivrp %st(1), %st(0) // CHECK: encoding: [0xde,0xf9]
    587 
    588 fsubrp %st(0), %st(1) // CHECK: encoding: [0xde,0xe9]
    589 fsubrp %st(1), %st(0) // CHECK: encoding: [0xde,0xe9]
    590 
    591 // also PR8861
    592 fdivp %st(0), %st(1) // CHECK: encoding: [0xde,0xf1]
    593 fdivp %st(1), %st(0) // CHECK: encoding: [0xde,0xf1]
    594 
    595 
    596 movl	foo(%rip), %eax
    597 // CHECK: movl	foo(%rip), %eax
    598 // CHECK: encoding: [0x8b,0x05,A,A,A,A]
    599 // CHECK: fixup A - offset: 2, value: foo-4, kind: reloc_riprel_4byte
    600 
    601 movb	$12, foo(%rip)
    602 // CHECK: movb	$12, foo(%rip)
    603 // CHECK: encoding: [0xc6,0x05,A,A,A,A,0x0c]
    604 // CHECK:    fixup A - offset: 2, value: foo-5, kind: reloc_riprel_4byte
    605 
    606 movw	$12, foo(%rip)
    607 // CHECK: movw	$12, foo(%rip)
    608 // CHECK: encoding: [0x66,0xc7,0x05,A,A,A,A,0x0c,0x00]
    609 // CHECK:    fixup A - offset: 3, value: foo-6, kind: reloc_riprel_4byte
    610 
    611 movl	$12, foo(%rip)
    612 // CHECK: movl	$12, foo(%rip)
    613 // CHECK: encoding: [0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00]
    614 // CHECK:    fixup A - offset: 2, value: foo-8, kind: reloc_riprel_4byte
    615 
    616 // rdar://37247000
    617 movl	$12, 1024(%rip)
    618 // CHECK: movl	$12, 1024(%rip)
    619 // CHECK: encoding: [0xc7,0x05,0x00,0x04,0x00,0x00,0x0c,0x00,0x00,0x00]
    620 
    621 movq	$12, foo(%rip)
    622 // CHECK:  movq	$12, foo(%rip)
    623 // CHECK: encoding: [0x48,0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00]
    624 // CHECK:    fixup A - offset: 3, value: foo-8, kind: reloc_riprel_4byte
    625 
    626 movl	foo(%eip), %eax
    627 // CHECK: movl	foo(%eip), %eax
    628 // CHECK: encoding: [0x67,0x8b,0x05,A,A,A,A]
    629 // CHECK: fixup A - offset: 3, value: foo-4, kind: reloc_riprel_4byte
    630 
    631 movb	$12, foo(%eip)
    632 // CHECK: movb	$12, foo(%eip)
    633 // CHECK: encoding: [0x67,0xc6,0x05,A,A,A,A,0x0c]
    634 // CHECK:    fixup A - offset: 3, value: foo-5, kind: reloc_riprel_4byte
    635 
    636 movw	$12, foo(%eip)
    637 // CHECK: movw	$12, foo(%eip)
    638 // CHECK: encoding: [0x67,0x66,0xc7,0x05,A,A,A,A,0x0c,0x00]
    639 // CHECK:    fixup A - offset: 4, value: foo-6, kind: reloc_riprel_4byte
    640 
    641 movl	$12, foo(%eip)
    642 // CHECK: movl	$12, foo(%eip)
    643 // CHECK: encoding: [0x67,0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00]
    644 // CHECK:    fixup A - offset: 3, value: foo-8, kind: reloc_riprel_4byte
    645 
    646 movq	$12, foo(%eip)
    647 // CHECK:  movq	$12, foo(%eip)
    648 // CHECK: encoding: [0x67,0x48,0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00]
    649 // CHECK:    fixup A - offset: 4, value: foo-8, kind: reloc_riprel_4byte
    650 
    651 // CHECK: addq	$-424, %rax
    652 // CHECK: encoding: [0x48,0x05,0x58,0xfe,0xff,0xff]
    653 addq $-424, %rax
    654 
    655 
    656 // CHECK: movq	_foo@GOTPCREL(%rip), %rax
    657 // CHECK:  encoding: [0x48,0x8b,0x05,A,A,A,A]
    658 // CHECK:  fixup A - offset: 3, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load
    659 movq _foo@GOTPCREL(%rip), %rax
    660 
    661 // CHECK: movq	_foo@GOTPCREL(%rip), %r14
    662 // CHECK:  encoding: [0x4c,0x8b,0x35,A,A,A,A]
    663 // CHECK:  fixup A - offset: 3, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load
    664 movq _foo@GOTPCREL(%rip), %r14
    665 
    666 // CHECK: movq	_foo@GOTPCREL(%eip), %rax
    667 // CHECK:  encoding: [0x67,0x48,0x8b,0x05,A,A,A,A]
    668 // CHECK:  fixup A - offset: 4, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load
    669 movq _foo@GOTPCREL(%eip), %rax
    670 
    671 // CHECK: movq	_foo@GOTPCREL(%eip), %r14
    672 // CHECK:  encoding: [0x67,0x4c,0x8b,0x35,A,A,A,A]
    673 // CHECK:  fixup A - offset: 4, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load
    674 movq _foo@GOTPCREL(%eip), %r14
    675 
    676 // CHECK: movq	(%r13,%rax,8), %r13
    677 // CHECK:  encoding: [0x4d,0x8b,0x6c,0xc5,0x00]
    678 movq 0x00(%r13,%rax,8),%r13
    679 
    680 // CHECK: testq	%rax, %rbx
    681 // CHECK:  encoding: [0x48,0x85,0xc3]
    682 testq %rax, %rbx
    683 
    684 // CHECK: cmpq	%rbx, %r14
    685 // CHECK:   encoding: [0x49,0x39,0xde]
    686         cmpq %rbx, %r14
    687 
    688 // rdar://7947167
    689 
    690 movsq
    691 // CHECK: movsq
    692 // CHECK:   encoding: [0x48,0xa5]
    693 
    694 movsl
    695 // CHECK: movsl
    696 // CHECK:   encoding: [0xa5]
    697 
    698 stosq
    699 // CHECK: stosq
    700 // CHECK:   encoding: [0x48,0xab]
    701 stosl
    702 // CHECK: stosl
    703 // CHECK:   encoding: [0xab]
    704 
    705 
    706 // Not moffset forms of moves, they are x86-32 only! rdar://7947184
    707 movb	0, %al    // CHECK: movb 0, %al # encoding: [0x8a,0x04,0x25,0x00,0x00,0x00,0x00]
    708 movw	0, %ax    // CHECK: movw 0, %ax # encoding: [0x66,0x8b,0x04,0x25,0x00,0x00,0x00,0x00]
    709 movl	0, %eax   // CHECK: movl 0, %eax # encoding: [0x8b,0x04,0x25,0x00,0x00,0x00,0x00]
    710 
    711 // CHECK: pushfq	# encoding: [0x9c]
    712         pushf
    713 // CHECK: pushfq	# encoding: [0x9c]
    714         pushfq
    715 // CHECK: popfq	        # encoding: [0x9d]
    716         popf
    717 // CHECK: popfq	        # encoding: [0x9d]
    718         popfq
    719 
    720 // CHECK: movabsq $-281474976710654, %rax
    721 // CHECK: encoding: [0x48,0xb8,0x02,0x00,0x00,0x00,0x00,0x00,0xff,0xff]
    722         movabsq $0xFFFF000000000002, %rax
    723 
    724 // CHECK: movabsq $-281474976710654, %rax
    725 // CHECK: encoding: [0x48,0xb8,0x02,0x00,0x00,0x00,0x00,0x00,0xff,0xff]
    726         movq $0xFFFF000000000002, %rax
    727 
    728 // CHECK: movq $-65536, %rax
    729 // CHECK: encoding: [0x48,0xc7,0xc0,0x00,0x00,0xff,0xff]
    730         movq $0xFFFFFFFFFFFF0000, %rax
    731 
    732 // CHECK: movq $-256, %rax
    733 // CHECK: encoding: [0x48,0xc7,0xc0,0x00,0xff,0xff,0xff]
    734         movq $0xFFFFFFFFFFFFFF00, %rax
    735 
    736 // CHECK: movq $10, %rax
    737 // CHECK: encoding: [0x48,0xc7,0xc0,0x0a,0x00,0x00,0x00]
    738         movq $10, %rax
    739 
    740 // CHECK: movabsb -6066930261531658096, %al
    741 // CHECK: encoding: [0xa0,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab]
    742         movabsb 0xabcdef1234567890,%al
    743 
    744 // CHECK: movabsw -6066930261531658096, %ax
    745 // CHECK: encoding: [0x66,0xa1,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab]
    746         movabsw 0xabcdef1234567890,%ax
    747 
    748 // CHECK: movabsl -6066930261531658096, %eax
    749 // CHECK: encoding: [0xa1,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab]
    750         movabsl 0xabcdef1234567890,%eax
    751 
    752 // CHECK: movabsq -6066930261531658096, %rax
    753 // CHECK: encoding: [0x48,0xa1,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab]
    754         movabsq 0xabcdef1234567890, %rax
    755 
    756 // CHECK: movabsb %al, -6066930261531658096
    757 // CHECK: encoding: [0xa2,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab]
    758         movabsb %al,0xabcdef1234567890
    759 
    760 // CHECK: movabsw %ax, -6066930261531658096
    761 // CHECK: encoding: [0x66,0xa3,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab]
    762         movabsw %ax,0xabcdef1234567890
    763 
    764 // CHECK: movabsl %eax, -6066930261531658096
    765 // CHECK: encoding: [0xa3,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab]
    766         movabsl %eax,0xabcdef1234567890
    767 
    768 // CHECK: movabsq %rax, -6066930261531658096
    769 // CHECK: encoding: [0x48,0xa3,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab]
    770         movabsq %rax,0xabcdef1234567890
    771 
    772 // rdar://8014869
    773 //
    774 // CHECK: ret
    775 // CHECK:  encoding: [0xc3]
    776         retq
    777 
    778 // CHECK: sete %al
    779 // CHECK: encoding: [0x0f,0x94,0xc0]
    780         setz %al
    781 
    782 // CHECK: setne %al
    783 // CHECK: encoding: [0x0f,0x95,0xc0]
    784         setnz %al
    785 
    786 // CHECK: je 0
    787 // CHECK: encoding: [0x74,A]
    788         jz 0
    789 
    790 // CHECK: jne
    791 // CHECK: encoding: [0x75,A]
    792         jnz 0
    793 
    794 // PR9264
    795 btl	$1, 0 // CHECK: btl $1, 0 # encoding: [0x0f,0xba,0x24,0x25,0x00,0x00,0x00,0x00,0x01]
    796 bt	$1, 0 // CHECK: btl $1, 0 # encoding: [0x0f,0xba,0x24,0x25,0x00,0x00,0x00,0x00,0x01]
    797 
    798 // rdar://8017515
    799 btq $0x01,%rdx
    800 // CHECK: btq	$1, %rdx
    801 // CHECK:  encoding: [0x48,0x0f,0xba,0xe2,0x01]
    802 
    803 //rdar://8017633
    804 // CHECK: movzbl	%al, %esi
    805 // CHECK:  encoding: [0x0f,0xb6,0xf0]
    806         movzx %al, %esi
    807 
    808 // CHECK: movzbq	%al, %rsi
    809 // CHECK:  encoding: [0x48,0x0f,0xb6,0xf0]
    810         movzx %al, %rsi
    811 
    812 // CHECK: movsbw	%al, %ax
    813 // CHECK: encoding: [0x66,0x0f,0xbe,0xc0]
    814 movsx %al, %ax
    815 
    816 // CHECK: movsbl	%al, %eax
    817 // CHECK: encoding: [0x0f,0xbe,0xc0]
    818 movsx %al, %eax
    819 
    820 // CHECK: movswl	%ax, %eax
    821 // CHECK: encoding: [0x0f,0xbf,0xc0]
    822 movsx %ax, %eax
    823 
    824 // CHECK: movsbq	%bl, %rax
    825 // CHECK: encoding: [0x48,0x0f,0xbe,0xc3]
    826 movsx %bl, %rax
    827 
    828 // CHECK: movswq %cx, %rax
    829 // CHECK: encoding: [0x48,0x0f,0xbf,0xc1]
    830 movsx %cx, %rax
    831 
    832 // CHECK: movslq	%edi, %rax
    833 // CHECK: encoding: [0x48,0x63,0xc7]
    834 movsx %edi, %rax
    835 
    836 // CHECK: movzbw	%al, %ax
    837 // CHECK: encoding: [0x66,0x0f,0xb6,0xc0]
    838 movzx %al, %ax
    839 
    840 // CHECK: movzbl	%al, %eax
    841 // CHECK: encoding: [0x0f,0xb6,0xc0]
    842 movzx %al, %eax
    843 
    844 // CHECK: movzwl	%ax, %eax
    845 // CHECK: encoding: [0x0f,0xb7,0xc0]
    846 movzx %ax, %eax
    847 
    848 // CHECK: movzbq	%bl, %rax
    849 // CHECK: encoding: [0x48,0x0f,0xb6,0xc3]
    850 movzx %bl, %rax
    851 
    852 // CHECK: movzwq	%cx, %rax
    853 // CHECK: encoding: [0x48,0x0f,0xb7,0xc1]
    854 movzx %cx, %rax
    855 
    856 // CHECK: movsbw	(%rax), %ax
    857 // CHECK: encoding: [0x66,0x0f,0xbe,0x00]
    858 movsx (%rax), %ax
    859 
    860 // CHECK: movzbw	(%rax), %ax
    861 // CHECK: encoding: [0x66,0x0f,0xb6,0x00]
    862 movzx (%rax), %ax
    863 
    864 
    865 // rdar://7873482
    866 // CHECK: [0x65,0x8b,0x04,0x25,0x7c,0x00,0x00,0x00]
    867         movl	%gs:124, %eax
    868 
    869 // CHECK: jmpq *8(%rax)
    870 // CHECK:   encoding: [0xff,0x60,0x08]
    871 	jmp	*8(%rax)
    872 
    873 // CHECK: btq $61, -216(%rbp)
    874 // CHECK:   encoding: [0x48,0x0f,0xba,0xa5,0x28,0xff,0xff,0xff,0x3d]
    875 	btq	$61, -216(%rbp)
    876 
    877 
    878 // rdar://8061602
    879 L1:
    880   jecxz L1
    881 // CHECK: jecxz L1
    882 // CHECK:   encoding: [0x67,0xe3,A]
    883   jrcxz L1
    884 // CHECK: jrcxz L1
    885 // CHECK:   encoding: [0xe3,A]
    886 
    887 // PR8061
    888 xchgl   368(%rax),%ecx
    889 // CHECK: xchgl	%ecx, 368(%rax)
    890 xchgl   %ecx, 368(%rax)
    891 // CHECK: xchgl	%ecx, 368(%rax)
    892 
    893 // rdar://8407548
    894 xchg	0xdeadbeef(%rbx,%rcx,8),%bl
    895 // CHECK: xchgb	%bl, 3735928559(%rbx,%rcx,8)
    896 
    897 
    898 
    899 // PR7254
    900 lock  incl 1(%rsp)
    901 // CHECK: lock
    902 // CHECK: incl 1(%rsp)
    903 
    904 // rdar://8741045
    905 lock/incl 1(%rsp)
    906 // CHECK: lock
    907 // CHECK: incl 1(%rsp)
    908 
    909 
    910 lock addq %rsi, (%rdi)
    911 // CHECK: lock
    912 // CHECK: addq %rsi, (%rdi)
    913 // CHECK: encoding: [0xf0,0x48,0x01,0x37]
    914 
    915 lock subq %rsi, (%rdi)
    916 // CHECK: lock
    917 // CHECK: subq %rsi, (%rdi)
    918 // CHECK: encoding: [0xf0,0x48,0x29,0x37]
    919 
    920 lock andq %rsi, (%rdi)
    921 // CHECK: lock
    922 // CHECK: andq %rsi, (%rdi)
    923 // CHECK: encoding: [0xf0,0x48,0x21,0x37]
    924 
    925 lock orq %rsi, (%rdi)
    926 // CHECK: lock
    927 // CHECK: orq %rsi, (%rdi)
    928 // CHECK: encoding: [0xf0,0x48,0x09,0x37]
    929 
    930 lock xorq %rsi, (%rdi)
    931 // CHECK: lock
    932 // CHECK: xorq %rsi, (%rdi)
    933 // CHECK: encoding: [0xf0,0x48,0x31,0x37]
    934 
    935 xacquire lock addq %rax, (%rax)
    936 // CHECK: xacquire
    937 // CHECK: encoding: [0xf2]
    938 // CHECK: lock
    939 // CHECK: addq %rax, (%rax)
    940 // CHECK: encoding: [0xf0,0x48,0x01,0x00]
    941 
    942 xrelease lock addq %rax, (%rax)
    943 // CHECK: xrelease
    944 // CHECK: encoding: [0xf3]
    945 // CHECK: lock
    946 // CHECK: addq %rax, (%rax)
    947 // CHECK: encoding: [0xf0,0x48,0x01,0x00]
    948 
    949 // rdar://8033482
    950 rep movsl
    951 // CHECK: rep
    952 // CHECK: movsl
    953 // CHECK: encoding: [0xf3,0xa5]
    954 
    955 
    956 // rdar://8403974
    957 iret
    958 // CHECK: iretl
    959 // CHECK: encoding: [0xcf]
    960 iretw
    961 // CHECK: iretw
    962 // CHECK: encoding: [0x66,0xcf]
    963 iretl
    964 // CHECK: iretl
    965 // CHECK: encoding: [0xcf]
    966 iretq
    967 // CHECK: iretq
    968 // CHECK: encoding: [0x48,0xcf]
    969 
    970 // rdar://8416805
    971 // CHECK: retw	$31438
    972 // CHECK:  encoding: [0x66,0xc2,0xce,0x7a]
    973         	retw	$0x7ace
    974 
    975 // CHECK: lretw	$31438
    976 // CHECK:  encoding: [0x66,0xca,0xce,0x7a]
    977         	lretw	$0x7ace
    978 
    979 // PR8592
    980 lretq  // CHECK: lretq # encoding: [0x48,0xcb]
    981 lretl  // CHECK: lretl # encoding: [0xcb]
    982 lret   // CHECK: lretl # encoding: [0xcb]
    983 lretw  // CHECK: lretw # encoding: [0x66,0xcb]
    984 
    985 // rdar://8403907
    986 sysret
    987 // CHECK: sysretl
    988 // CHECK: encoding: [0x0f,0x07]
    989 sysretl
    990 // CHECK: sysretl
    991 // CHECK: encoding: [0x0f,0x07]
    992 sysretq
    993 // CHECK: sysretq
    994 // CHECK: encoding: [0x48,0x0f,0x07]
    995 
    996 // rdar://8407242
    997 push %fs
    998 // CHECK: pushq	%fs
    999 // CHECK: encoding: [0x0f,0xa0]
   1000 push %gs
   1001 // CHECK: pushq	%gs
   1002 // CHECK: encoding: [0x0f,0xa8]
   1003 
   1004 pushw %fs
   1005 // CHECK: pushw	%fs
   1006 // CHECK: encoding: [0x66,0x0f,0xa0]
   1007 pushw %gs
   1008 // CHECK: pushw	%gs
   1009 // CHECK: encoding: [0x66,0x0f,0xa8]
   1010 
   1011 
   1012 pop %fs
   1013 // CHECK: popq	%fs
   1014 // CHECK: encoding: [0x0f,0xa1]
   1015 pop %gs
   1016 // CHECK: popq	%gs
   1017 // CHECK: encoding: [0x0f,0xa9]
   1018 
   1019 popw %fs
   1020 // CHECK: popw	%fs
   1021 // CHECK: encoding: [0x66,0x0f,0xa1]
   1022 popw %gs
   1023 // CHECK: popw	%gs
   1024 // CHECK: encoding: [0x66,0x0f,0xa9]
   1025 
   1026 // rdar://8438816
   1027 fildq -8(%rsp)
   1028 fildll -8(%rsp)
   1029 // CHECK: fildll	-8(%rsp)
   1030 // CHECK: encoding: [0xdf,0x6c,0x24,0xf8]
   1031 // CHECK: fildll	-8(%rsp)
   1032 // CHECK: encoding: [0xdf,0x6c,0x24,0xf8]
   1033 
   1034 // CHECK: callq a
   1035         callq a
   1036 
   1037 // CHECK: leaq	-40(%rbp), %r15
   1038 	leaq	-40(%rbp), %r15
   1039 
   1040 
   1041 
   1042 // rdar://8013734 - Alias dr6=db6
   1043 mov %dr6, %rax
   1044 mov %db6, %rax
   1045 // CHECK: movq	%dr6, %rax
   1046 // CHECK: movq	%dr6, %rax
   1047 
   1048 
   1049 // INC/DEC encodings.
   1050 incb %al  // CHECK:	incb	%al # encoding: [0xfe,0xc0]
   1051 incw %ax  // CHECK:	incw	%ax # encoding: [0x66,0xff,0xc0]
   1052 incl %eax // CHECK:	incl	%eax # encoding: [0xff,0xc0]
   1053 decb %al  // CHECK:	decb	%al # encoding: [0xfe,0xc8]
   1054 decw %ax  // CHECK:	decw	%ax # encoding: [0x66,0xff,0xc8]
   1055 decl %eax // CHECK:	decl	%eax # encoding: [0xff,0xc8]
   1056 
   1057 // rdar://8416805
   1058 // CHECK: lgdtq	4(%rax)
   1059 // CHECK:  encoding: [0x0f,0x01,0x50,0x04]
   1060         	lgdt	4(%rax)
   1061 
   1062 // CHECK: lgdtq	4(%rax)
   1063 // CHECK:  encoding: [0x0f,0x01,0x50,0x04]
   1064         	lgdtq	4(%rax)
   1065 
   1066 // CHECK: lidtq	4(%rax)
   1067 // CHECK:  encoding: [0x0f,0x01,0x58,0x04]
   1068         	lidt	4(%rax)
   1069 
   1070 // CHECK: lidtq	4(%rax)
   1071 // CHECK:  encoding: [0x0f,0x01,0x58,0x04]
   1072         	lidtq	4(%rax)
   1073 
   1074 // CHECK: sgdtq	4(%rax)
   1075 // CHECK:  encoding: [0x0f,0x01,0x40,0x04]
   1076         	sgdt	4(%rax)
   1077 
   1078 // CHECK: sgdtq	4(%rax)
   1079 // CHECK:  encoding: [0x0f,0x01,0x40,0x04]
   1080         	sgdtq	4(%rax)
   1081 
   1082 // CHECK: sidtq	4(%rax)
   1083 // CHECK:  encoding: [0x0f,0x01,0x48,0x04]
   1084         	sidt	4(%rax)
   1085 
   1086 // CHECK: sidtq	4(%rax)
   1087 // CHECK:  encoding: [0x0f,0x01,0x48,0x04]
   1088         	sidtq	4(%rax)
   1089 
   1090 
   1091 // rdar://8208615
   1092 mov (%rsi), %gs  // CHECK: movw	(%rsi), %gs # encoding: [0x8e,0x2e]
   1093 mov %gs, (%rsi)  // CHECK: movw	%gs, (%rsi) # encoding: [0x8c,0x2e]
   1094 
   1095 
   1096 // rdar://8431864
   1097 //CHECK: divb	%bl
   1098 //CHECK: divw	%bx
   1099 //CHECK: divl	%ecx
   1100 //CHECK: divl	3735928559(%ebx,%ecx,8)
   1101 //CHECK: divl	69
   1102 //CHECK: divl	32493
   1103 //CHECK: divl	3133065982
   1104 //CHECK: divl	305419896
   1105 //CHECK: idivb	%bl
   1106 //CHECK: idivw	%bx
   1107 //CHECK: idivl	%ecx
   1108 //CHECK: idivl	3735928559(%ebx,%ecx,8)
   1109 //CHECK: idivl	69
   1110 //CHECK: idivl	32493
   1111 //CHECK: idivl	3133065982
   1112 //CHECK: idivl	305419896
   1113 	div	%bl,%al
   1114 	div	%bx,%ax
   1115 	div	%ecx,%eax
   1116 	div	0xdeadbeef(%ebx,%ecx,8),%eax
   1117 	div	0x45,%eax
   1118 	div	0x7eed,%eax
   1119 	div	0xbabecafe,%eax
   1120 	div	0x12345678,%eax
   1121 	idiv	%bl,%al
   1122 	idiv	%bx,%ax
   1123 	idiv	%ecx,%eax
   1124 	idiv	0xdeadbeef(%ebx,%ecx,8),%eax
   1125 	idiv	0x45,%eax
   1126 	idiv	0x7eed,%eax
   1127 	idiv	0xbabecafe,%eax
   1128 	idiv	0x12345678,%eax
   1129 
   1130 // PR8524
   1131 movd	%rax, %mm5 // CHECK: movq %rax, %mm5 # encoding: [0x48,0x0f,0x6e,0xe8]
   1132 movd	%mm5, %rbx // CHECK: movq %mm5, %rbx # encoding: [0x48,0x0f,0x7e,0xeb]
   1133 movq	%rax, %mm5 // CHECK: movq %rax, %mm5 # encoding: [0x48,0x0f,0x6e,0xe8]
   1134 movq	%mm5, %rbx // CHECK: movq %mm5, %rbx # encoding: [0x48,0x0f,0x7e,0xeb]
   1135 
   1136 rex64 // CHECK: rex64 # encoding: [0x48]
   1137 data16 // CHECK: data16 # encoding: [0x66]
   1138 
   1139 // CHECK: data16
   1140 // CHECK: encoding: [0x66]
   1141 // CHECK: lgdtq 4(%rax)
   1142 // CHECK:  encoding: [0x0f,0x01,0x50,0x04]
   1143 data16 lgdt 4(%rax)
   1144 
   1145 // PR8855
   1146 movq 18446744073709551615,%rbx   // CHECK: movq	-1, %rbx
   1147 
   1148 // PR8946
   1149 movdqu	%xmm0, %xmm1 // CHECK: movdqu	%xmm0, %xmm1 # encoding: [0xf3,0x0f,0x6f,0xc8]
   1150 
   1151 // PR8935
   1152 xgetbv // CHECK: xgetbv # encoding: [0x0f,0x01,0xd0]
   1153 xsetbv // CHECK: xsetbv # encoding: [0x0f,0x01,0xd1]
   1154 
   1155 // CHECK: loope 0
   1156 // CHECK: encoding: [0xe1,A]
   1157 	loopz 0
   1158 
   1159 // CHECK: loopne 0
   1160 // CHECK: encoding: [0xe0,A]
   1161 	loopnz 0
   1162 
   1163 // CHECK: outsb (%rsi), %dx # encoding: [0x6e]
   1164 // CHECK: outsb
   1165 // CHECK: outsb
   1166 	outsb
   1167 	outsb	%ds:(%rsi), %dx
   1168 	outsb	(%rsi), %dx
   1169 
   1170 // CHECK: outsw (%rsi), %dx # encoding: [0x66,0x6f]
   1171 // CHECK: outsw
   1172 // CHECK: outsw
   1173 	outsw
   1174 	outsw	%ds:(%rsi), %dx
   1175 	outsw	(%rsi), %dx
   1176 
   1177 // CHECK: outsl (%rsi), %dx # encoding: [0x6f]
   1178 // CHECK: outsl
   1179 	outsl
   1180 	outsl	%ds:(%rsi), %dx
   1181 	outsl	(%rsi), %dx
   1182 
   1183 // CHECK: insb  %dx, %es:(%rdi) # encoding: [0x6c]
   1184 // CHECK: insb
   1185 	insb
   1186 	insb	%dx, %es:(%rdi)
   1187 
   1188 // CHECK: insw  %dx, %es:(%rdi) # encoding: [0x66,0x6d]
   1189 // CHECK: insw
   1190 	insw
   1191 	insw	%dx, %es:(%rdi)
   1192 
   1193 // CHECK: insl %dx, %es:(%rdi) # encoding: [0x6d]
   1194 // CHECK: insl
   1195 	insl
   1196 	insl	%dx, %es:(%rdi)
   1197 
   1198 // CHECK: movsb (%rsi), %es:(%rdi) # encoding: [0xa4]
   1199 // CHECK: movsb
   1200 // CHECK: movsb
   1201 	movsb
   1202 	movsb	%ds:(%rsi), %es:(%rdi)
   1203 	movsb	(%rsi), %es:(%rdi)
   1204 
   1205 // CHECK: movsw (%rsi), %es:(%rdi) # encoding: [0x66,0xa5]
   1206 // CHECK: movsw
   1207 // CHECK: movsw
   1208 	movsw
   1209 	movsw	%ds:(%rsi), %es:(%rdi)
   1210 	movsw	(%rsi), %es:(%rdi)
   1211 
   1212 // CHECK: movsl (%rsi), %es:(%rdi) # encoding: [0xa5]
   1213 // CHECK: movsl
   1214 // CHECK: movsl
   1215 	movsl
   1216 	movsl	%ds:(%rsi), %es:(%rdi)
   1217 	movsl	(%rsi), %es:(%rdi)
   1218 // rdar://10883092
   1219 // CHECK: movsl
   1220 	movsl	(%rsi), (%rdi)
   1221 
   1222 // CHECK: movsq (%rsi), %es:(%rdi) # encoding: [0x48,0xa5]
   1223 // CHECK: movsq
   1224 // CHECK: movsq
   1225 	movsq
   1226 	movsq	%ds:(%rsi), %es:(%rdi)
   1227 	movsq	(%rsi), %es:(%rdi)
   1228 
   1229 // CHECK: lodsb (%rsi), %al # encoding: [0xac]
   1230 // CHECK: lodsb
   1231 // CHECK: lodsb
   1232 // CHECK: lodsb
   1233 // CHECK: lodsb
   1234 	lodsb
   1235 	lodsb	%ds:(%rsi), %al
   1236 	lodsb	(%rsi), %al
   1237 	lods	%ds:(%rsi), %al
   1238 	lods	(%rsi), %al
   1239 
   1240 // CHECK: lodsw (%rsi), %ax # encoding: [0x66,0xad]
   1241 // CHECK: lodsw
   1242 // CHECK: lodsw
   1243 // CHECK: lodsw
   1244 // CHECK: lodsw
   1245 	lodsw
   1246 	lodsw	%ds:(%rsi), %ax
   1247 	lodsw	(%rsi), %ax
   1248 	lods	%ds:(%rsi), %ax
   1249 	lods	(%rsi), %ax
   1250 
   1251 // CHECK: lodsl (%rsi), %eax # encoding: [0xad]
   1252 // CHECK: lodsl
   1253 // CHECK: lodsl
   1254 // CHECK: lodsl
   1255 // CHECK: lodsl
   1256 	lodsl
   1257 	lodsl	%ds:(%rsi), %eax
   1258 	lodsl	(%rsi), %eax
   1259 	lods	%ds:(%rsi), %eax
   1260 	lods	(%rsi), %eax
   1261 
   1262 // CHECK: lodsq (%rsi), %rax # encoding: [0x48,0xad]
   1263 // CHECK: lodsq
   1264 // CHECK: lodsq
   1265 // CHECK: lodsq
   1266 // CHECK: lodsq
   1267 	lodsq
   1268 	lodsq	%ds:(%rsi), %rax
   1269 	lodsq	(%rsi), %rax
   1270 	lods	%ds:(%rsi), %rax
   1271 	lods	(%rsi), %rax
   1272 
   1273 // CHECK: stosb %al, %es:(%rdi) # encoding: [0xaa]
   1274 // CHECK: stosb
   1275 // CHECK: stosb
   1276 	stosb
   1277 	stosb	%al, %es:(%rdi)
   1278 	stos	%al, %es:(%rdi)
   1279 
   1280 // CHECK: stosw %ax, %es:(%rdi) # encoding: [0x66,0xab]
   1281 // CHECK: stosw
   1282 // CHECK: stosw
   1283 	stosw
   1284 	stosw	%ax, %es:(%rdi)
   1285 	stos	%ax, %es:(%rdi)
   1286 
   1287 // CHECK: stosl %eax, %es:(%rdi) # encoding: [0xab]
   1288 // CHECK: stosl
   1289 // CHECK: stosl
   1290 	stosl
   1291 	stosl	%eax, %es:(%rdi)
   1292 	stos	%eax, %es:(%rdi)
   1293 
   1294 // CHECK: stosq %rax, %es:(%rdi) # encoding: [0x48,0xab]
   1295 // CHECK: stosq
   1296 // CHECK: stosq
   1297 	stosq
   1298 	stosq	%rax, %es:(%rdi)
   1299 	stos	%rax, %es:(%rdi)
   1300 
   1301 // CHECK: strw
   1302 // CHECK: encoding: [0x66,0x0f,0x00,0xc8]
   1303 	str %ax
   1304 
   1305 // CHECK: strl
   1306 // CHECK: encoding: [0x0f,0x00,0xc8]
   1307 	str %eax
   1308 
   1309 // CHECK: strw
   1310 // CHECK: encoding: [0x66,0x0f,0x00,0xc8]
   1311 	str %ax
   1312 
   1313 // CHECK: strq
   1314 // CHECK: encoding: [0x48,0x0f,0x00,0xc8]
   1315 	str %rax
   1316 
   1317 // CHECK: movq %rdi, %xmm0
   1318 // CHECK: encoding: [0x66,0x48,0x0f,0x6e,0xc7]
   1319 	movq %rdi,%xmm0
   1320 
   1321 // CHECK: movq  %xmm0, %rax
   1322 // CHECK: encoding: [0x66,0x48,0x0f,0x7e,0xc0]
   1323     movq  %xmm0, %rax
   1324 
   1325 // CHECK: movntil %eax, (%rdi)
   1326 // CHECK: encoding: [0x0f,0xc3,0x07]
   1327 // CHECK: movntil
   1328 movntil %eax, (%rdi)
   1329 movnti %eax, (%rdi)
   1330 
   1331 // CHECK: movntiq %rax, (%rdi)
   1332 // CHECK: encoding: [0x48,0x0f,0xc3,0x07]
   1333 // CHECK: movntiq
   1334 movntiq %rax, (%rdi)
   1335 movnti %rax, (%rdi)
   1336 
   1337 // CHECK: pclmulqdq	$17, %xmm0, %xmm1
   1338 // CHECK: encoding: [0x66,0x0f,0x3a,0x44,0xc8,0x11]
   1339 pclmulhqhqdq %xmm0, %xmm1
   1340 
   1341 // CHECK: pclmulqdq	$1, %xmm0, %xmm1
   1342 // CHECK: encoding: [0x66,0x0f,0x3a,0x44,0xc8,0x01]
   1343 pclmulqdq $1, %xmm0, %xmm1
   1344 
   1345 // CHECK: pclmulqdq	$16, (%rdi), %xmm1
   1346 // CHECK: encoding: [0x66,0x0f,0x3a,0x44,0x0f,0x10]
   1347 pclmullqhqdq (%rdi), %xmm1
   1348 
   1349 // CHECK: pclmulqdq	$0, (%rdi), %xmm1
   1350 // CHECK: encoding: [0x66,0x0f,0x3a,0x44,0x0f,0x00]
   1351 pclmulqdq $0, (%rdi), %xmm1
   1352 
   1353 // PR10345
   1354 // CHECK: nop
   1355 // CHECK: encoding: [0x90]
   1356 xchgq %rax, %rax
   1357 
   1358 // CHECK: xchgl %eax, %eax
   1359 // CHECK: encoding: [0x87,0xc0]
   1360 xchgl %eax, %eax
   1361 
   1362 // CHECK: xchgw %ax, %ax
   1363 // CHECK: encoding: [0x66,0x90]
   1364 xchgw %ax, %ax
   1365 
   1366 // CHECK: xchgl %ecx, %eax
   1367 // CHECK: encoding: [0x91]
   1368 xchgl %ecx, %eax
   1369 
   1370 // CHECK: xchgl %ecx, %eax
   1371 // CHECK: encoding: [0x91]
   1372 xchgl %eax, %ecx
   1373 
   1374 // CHECK: sysexit
   1375 // CHECK: encoding: [0x0f,0x35]
   1376 sysexit
   1377 
   1378 // CHECK: sysexitl
   1379 // CHECK: encoding: [0x0f,0x35]
   1380 sysexitl
   1381 
   1382 // CHECK: sysexitq
   1383 // CHECK: encoding: [0x48,0x0f,0x35]
   1384 sysexitq
   1385 
   1386 // CHECK: clac
   1387 // CHECK: encoding: [0x0f,0x01,0xca]
   1388 clac
   1389 
   1390 // CHECK: stac
   1391 // CHECK: encoding: [0x0f,0x01,0xcb]
   1392 stac
   1393 
   1394 // CHECK: faddp %st(1)
   1395 // CHECK: fmulp %st(1)
   1396 // CHECK: fsubp %st(1)
   1397 // CHECK: fsubrp %st(1)
   1398 // CHECK: fdivp %st(1)
   1399 // CHECK: fdivrp %st(1)
   1400 faddp %st(0), %st(1)
   1401 fmulp %st(0), %st(1)
   1402 fsubp %st(0), %st(1)
   1403 fsubrp %st(0), %st(1)
   1404 fdivp %st(0), %st(1)
   1405 fdivrp %st(0), %st(1)
   1406 
   1407 // CHECK: faddp %st(1)
   1408 // CHECK: fmulp %st(1)
   1409 // CHECK: fsubp %st(1)
   1410 // CHECK: fsubrp %st(1)
   1411 // CHECK: fdivp %st(1)
   1412 // CHECK: fdivrp %st(1)
   1413 faddp %st(1), %st(0)
   1414 fmulp %st(1), %st(0)
   1415 fsubp %st(1), %st(0)
   1416 fsubrp %st(1), %st(0)
   1417 fdivp %st(1), %st(0)
   1418 fdivrp %st(1), %st(0)
   1419 
   1420 // CHECK: faddp %st(1)
   1421 // CHECK: fmulp %st(1)
   1422 // CHECK: fsubp %st(1)
   1423 // CHECK: fsubrp %st(1)
   1424 // CHECK: fdivp %st(1)
   1425 // CHECK: fdivrp %st(1)
   1426 faddp %st(1)
   1427 fmulp %st(1)
   1428 fsubp %st(1)
   1429 fsubrp %st(1)
   1430 fdivp %st(1)
   1431 fdivrp %st(1)
   1432 
   1433 // CHECK: faddp %st(1)
   1434 // CHECK: fmulp %st(1)
   1435 // CHECK: fsubp %st(1)
   1436 // CHECK: fsubrp %st(1)
   1437 // CHECK: fdivp %st(1)
   1438 // CHECK: fdivrp %st(1)
   1439 faddp
   1440 fmulp
   1441 fsubp
   1442 fsubrp
   1443 fdivp
   1444 fdivrp
   1445 
   1446 // CHECK: fadd %st(1)
   1447 // CHECK: fmul %st(1)
   1448 // CHECK: fsub %st(1)
   1449 // CHECK: fsubr %st(1)
   1450 // CHECK: fdiv %st(1)
   1451 // CHECK: fdivr %st(1)
   1452 fadd %st(1), %st(0)
   1453 fmul %st(1), %st(0)
   1454 fsub %st(1), %st(0)
   1455 fsubr %st(1), %st(0)
   1456 fdiv %st(1), %st(0)
   1457 fdivr %st(1), %st(0)
   1458 
   1459 // CHECK: fadd %st(0), %st(1)
   1460 // CHECK: fmul %st(0), %st(1)
   1461 // CHECK: fsub %st(0), %st(1)
   1462 // CHECK: fsubr %st(0), %st(1)
   1463 // CHECK: fdiv %st(0), %st(1)
   1464 // CHECK: fdivr %st(0), %st(1)
   1465 fadd %st(0), %st(1)
   1466 fmul %st(0), %st(1)
   1467 fsub %st(0), %st(1)
   1468 fsubr %st(0), %st(1)
   1469 fdiv %st(0), %st(1)
   1470 fdivr %st(0), %st(1)
   1471 
   1472 // CHECK: fadd %st(1)
   1473 // CHECK: fmul %st(1)
   1474 // CHECK: fsub %st(1)
   1475 // CHECK: fsubr %st(1)
   1476 // CHECK: fdiv %st(1)
   1477 // CHECK: fdivr %st(1)
   1478 fadd %st(1)
   1479 fmul %st(1)
   1480 fsub %st(1)
   1481 fsubr %st(1)
   1482 fdiv %st(1)
   1483 fdivr %st(1)
   1484 
   1485 // CHECK: movd %xmm0, %eax
   1486 // CHECK: movq %xmm0, %rax
   1487 // CHECK: movq %xmm0, %rax
   1488 // CHECK: vmovd %xmm0, %eax
   1489 // CHECK: vmovq %xmm0, %rax
   1490 // CHECK: vmovq %xmm0, %rax
   1491 movd %xmm0, %eax
   1492 movq %xmm0, %rax
   1493 movq %xmm0, %rax
   1494 vmovd %xmm0, %eax
   1495 vmovd %xmm0, %rax
   1496 vmovq %xmm0, %rax
   1497 
   1498 // CHECK: seto 3735928559(%r10,%r9,8)
   1499 // CHECK:  encoding: [0x43,0x0f,0x90,0x84,0xca,0xef,0xbe,0xad,0xde]
   1500 	seto 0xdeadbeef(%r10,%r9,8)
   1501 
   1502 // CHECK: 	monitorx
   1503 // CHECK:  encoding: [0x0f,0x01,0xfa]
   1504         	monitorx
   1505 
   1506 // CHECK: 	monitorx
   1507 // CHECK:  encoding: [0x0f,0x01,0xfa]
   1508         	monitorx %rax, %rcx, %rdx
   1509 
   1510 // CHECK: 	mwaitx
   1511 // CHECK:  encoding: [0x0f,0x01,0xfb]
   1512         	mwaitx
   1513 
   1514 // CHECK: 	mwaitx
   1515 // CHECK:  encoding: [0x0f,0x01,0xfb]
   1516         	mwaitx %rax, %rcx, %rbx
   1517 
   1518 // CHECK:       clzero
   1519 // CHECK:  encoding: [0x0f,0x01,0xfc]
   1520                 clzero
   1521 
   1522 // CHECK:       clzero
   1523 // CHECK:  encoding: [0x0f,0x01,0xfc]
   1524                 clzero %rax
   1525 
   1526 // CHECK: 	movl %r15d, (%r15,%r15)
   1527 // CHECK:  encoding: [0x47,0x89,0x3c,0x3f]
   1528 movl %r15d, (%r15,%r15)
   1529 
   1530 // CHECK: nopq	3735928559(%rbx,%rcx,8)
   1531 // CHECK:  encoding: [0x48,0x0f,0x1f,0x84,0xcb,0xef,0xbe,0xad,0xde]
   1532 nopq	0xdeadbeef(%rbx,%rcx,8)
   1533 
   1534 // CHECK: nopq	%rax
   1535 // CHECK:  encoding: [0x48,0x0f,0x1f,0xc0]
   1536 nopq	%rax
   1537 
   1538 // CHECK: rdpid %rax
   1539 // CHECK: encoding: [0xf3,0x0f,0xc7,0xf8]
   1540 rdpid %rax
   1541 
   1542 // CHECK: ptwritel 3735928559(%rbx,%rcx,8)
   1543 // CHECK:  encoding: [0xf3,0x0f,0xae,0xa4,0xcb,0xef,0xbe,0xad,0xde]
   1544 ptwritel 0xdeadbeef(%rbx,%rcx,8)
   1545 
   1546 // CHECK: ptwritel %eax
   1547 // CHECK:  encoding: [0xf3,0x0f,0xae,0xe0]
   1548 ptwritel %eax
   1549 
   1550 // CHECK: ptwriteq 3735928559(%rbx,%rcx,8)
   1551 // CHECK:  encoding: [0xf3,0x48,0x0f,0xae,0xa4,0xcb,0xef,0xbe,0xad,0xde]
   1552 ptwriteq 0xdeadbeef(%rbx,%rcx,8)
   1553 
   1554 // CHECK: ptwriteq %rax
   1555 // CHECK:  encoding: [0xf3,0x48,0x0f,0xae,0xe0]
   1556 ptwriteq %rax
   1557 
   1558 // CHECK: wbnoinvd
   1559 // CHECK:  encoding: [0xf3,0x0f,0x09]
   1560 wbnoinvd
   1561 
   1562 // CHECK: cldemote 4(%rax)
   1563 // CHECK:  encoding: [0x0f,0x1c,0x40,0x04]
   1564 cldemote 4(%rax)
   1565 
   1566 // CHECK: cldemote 3735928559(%rbx,%rcx,8)
   1567 // CHECK:  encoding: [0x0f,0x1c,0x84,0xcb,0xef,0xbe,0xad,0xde]
   1568 cldemote 0xdeadbeef(%rbx,%rcx,8)
   1569 
   1570 // CHECK: umonitor %r13
   1571 // CHECK:  encoding: [0xf3,0x41,0x0f,0xae,0xf5]
   1572 umonitor %r13
   1573 
   1574 // CHECK: umonitor %rax
   1575 // CHECK:  encoding: [0xf3,0x0f,0xae,0xf0]
   1576 umonitor %rax
   1577 
   1578 // CHECK: umonitor %eax
   1579 // CHECK:  encoding: [0x67,0xf3,0x0f,0xae,0xf0]
   1580 umonitor %eax
   1581 
   1582 // CHECK: umwait %r15
   1583 // CHECK:  encoding: [0xf2,0x41,0x0f,0xae,0xf7]
   1584 umwait %r15
   1585 
   1586 // CHECK: umwait %ebx
   1587 // CHECK:  encoding: [0xf2,0x0f,0xae,0xf3]
   1588 umwait %ebx
   1589 
   1590 // CHECK: tpause %r15
   1591 // CHECK:  encoding: [0x66,0x41,0x0f,0xae,0xf7]
   1592 tpause %r15
   1593 
   1594 // CHECK: tpause %ebx
   1595 // CHECK:  encoding: [0x66,0x0f,0xae,0xf3]
   1596 tpause %ebx
   1597 
   1598 // CHECK: movdiri %r15, 485498096
   1599 // CHECK: # encoding: [0x4c,0x0f,0x38,0xf9,0x3c,0x25,0xf0,0x1c,0xf0,0x1c]
   1600 movdiri %r15, 485498096
   1601 
   1602 // CHECK: movdiri %r15, (%rdx)
   1603 // CHECK: # encoding: [0x4c,0x0f,0x38,0xf9,0x3a]
   1604 movdiri %r15, (%rdx)
   1605 
   1606 // CHECK: movdiri %r15, 64(%rdx)
   1607 // CHECK: # encoding: [0x4c,0x0f,0x38,0xf9,0x7a,0x40]
   1608 movdiri %r15, 64(%rdx)
   1609 
   1610 // CHECK: movdir64b 485498096, %rax
   1611 // CHECK: # encoding: [0x66,0x0f,0x38,0xf8,0x04,0x25,0xf0,0x1c,0xf0,0x1c]
   1612 movdir64b 485498096, %rax
   1613 
   1614 // CHECK: movdir64b 485498096, %eax
   1615 // CHECK: # encoding: [0x67,0x66,0x0f,0x38,0xf8,0x04,0x25,0xf0,0x1c,0xf0,0x1c]
   1616 movdir64b 485498096, %eax
   1617 
   1618 // CHECK: movdir64b (%rdx), %r15
   1619 // CHECK: # encoding: [0x66,0x44,0x0f,0x38,0xf8,0x3a]
   1620 movdir64b (%rdx), %r15
   1621 
   1622 // CHECK: pconfig
   1623 // CHECK: # encoding: [0x0f,0x01,0xc5]
   1624 pconfig
   1625 
   1626 // CHECK: encls
   1627 // CHECK: encoding: [0x0f,0x01,0xcf]
   1628 encls
   1629 
   1630 // CHECK: enclu
   1631 // CHECK: encoding: [0x0f,0x01,0xd7]
   1632 enclu
   1633 
   1634 // CHECK: enclv
   1635 // CHECK: encoding: [0x0f,0x01,0xc0]
   1636 enclv
   1637 
   1638 // CHECK: movq %rax, %rbx
   1639 // CHECK: encoding: [0x48,0x8b,0xd8]
   1640 movq.s %rax, %rbx
   1641 
   1642 // CHECK: movq %rax, %rbx
   1643 // CHECK: encoding: [0x48,0x8b,0xd8]
   1644 mov.s %rax, %rbx
   1645 
   1646 // CHECK: movl %eax, %ebx
   1647 // CHECK: encoding: [0x8b,0xd8]
   1648 movl.s %eax, %ebx
   1649 
   1650 // CHECK: movl %eax, %ebx
   1651 // CHECK: encoding: [0x8b,0xd8]
   1652 mov.s %eax, %ebx
   1653 
   1654 // CHECK: movw %ax, %bx
   1655 // CHECK: encoding: [0x66,0x8b,0xd8]
   1656 movw.s %ax, %bx
   1657 
   1658 // CHECK: movw %ax, %bx
   1659 // CHECK: encoding: [0x66,0x8b,0xd8]
   1660 mov.s %ax, %bx
   1661 
   1662 // CHECK: movb %al, %bl
   1663 // CHECK: encoding: [0x8a,0xd8]
   1664 movb.s %al, %bl
   1665 
   1666 // CHECK: movb %al, %bl
   1667 // CHECK: encoding: [0x8a,0xd8]
   1668 mov.s %al, %bl
   1669 
   1670 // CHECK: movq %mm0, %mm1
   1671 // CHECK: encoding: [0x0f,0x7f,0xc1]
   1672 movq.s %mm0, %mm1
   1673 
   1674 // CHECK: movq %xmm0, %xmm1
   1675 // CHECK: encoding: [0x66,0x0f,0xd6,0xc1]
   1676 movq.s %xmm0, %xmm1
   1677 
   1678 // CHECK: movdqa %xmm0, %xmm1
   1679 // CHECK: encoding: [0x66,0x0f,0x7f,0xc1]
   1680 movdqa.s %xmm0, %xmm1
   1681 
   1682 // CHECK: movdqu %xmm0, %xmm1
   1683 // CHECK: encoding: [0xf3,0x0f,0x7f,0xc1]
   1684 movdqu.s %xmm0, %xmm1
   1685 
   1686 // CHECK: movaps %xmm0, %xmm1
   1687 // CHECK: encoding: [0x0f,0x29,0xc1]
   1688 movaps.s %xmm0, %xmm1
   1689 
   1690 // CHECK: movups %xmm0, %xmm1
   1691 // CHECK: encoding: [0x0f,0x11,0xc1]
   1692 movups.s %xmm0, %xmm1
   1693 
   1694 // CHECK: movapd %xmm0, %xmm1
   1695 // CHECK: encoding: [0x66,0x0f,0x29,0xc1]
   1696 movapd.s %xmm0, %xmm1
   1697 
   1698 // CHECK: movupd %xmm0, %xmm1
   1699 // CHECK: encoding: [0x66,0x0f,0x11,0xc1]
   1700 movupd.s %xmm0, %xmm1
   1701 
   1702 // CHECK: vmovq %xmm0, %xmm8
   1703 // CHECK: encoding: [0xc4,0xc1,0x79,0xd6,0xc0]
   1704 vmovq.s %xmm0, %xmm8
   1705 
   1706 // CHECK: vmovq %xmm8, %xmm0
   1707 // CHECK: encoding: [0xc5,0x79,0xd6,0xc0]
   1708 vmovq.s %xmm8, %xmm0
   1709 
   1710 // CHECK: vmovdqa %xmm0, %xmm8
   1711 // CHECK: encoding: [0xc4,0xc1,0x79,0x7f,0xc0]
   1712 vmovdqa.s %xmm0, %xmm8
   1713 
   1714 // CHECK: vmovdqa %xmm8, %xmm0
   1715 // CHECK: encoding: [0xc5,0x79,0x7f,0xc0]
   1716 vmovdqa.s %xmm8, %xmm0
   1717 
   1718 // CHECK: vmovdqu %xmm0, %xmm8
   1719 // CHECK: encoding: [0xc4,0xc1,0x7a,0x7f,0xc0]
   1720 vmovdqu.s %xmm0, %xmm8
   1721 
   1722 // CHECK: vmovdqu %xmm8, %xmm0
   1723 // CHECK: encoding: [0xc5,0x7a,0x7f,0xc0]
   1724 vmovdqu.s %xmm8, %xmm0
   1725 
   1726 // CHECK: vmovaps %xmm0, %xmm8
   1727 // CHECK: encoding: [0xc4,0xc1,0x78,0x29,0xc0]
   1728 vmovaps.s %xmm0, %xmm8
   1729 
   1730 // CHECK: vmovaps %xmm8, %xmm0
   1731 // CHECK: encoding: [0xc5,0x78,0x29,0xc0]
   1732 vmovaps.s %xmm8, %xmm0
   1733 
   1734 // CHECK: vmovups %xmm0, %xmm8
   1735 // CHECK: encoding: [0xc4,0xc1,0x78,0x11,0xc0]
   1736 vmovups.s %xmm0, %xmm8
   1737 
   1738 // CHECK: vmovups %xmm8, %xmm0
   1739 // CHECK: encoding: [0xc5,0x78,0x11,0xc0]
   1740 vmovups.s %xmm8, %xmm0
   1741 
   1742 // CHECK: vmovapd %xmm0, %xmm8
   1743 // CHECK: encoding: [0xc4,0xc1,0x79,0x29,0xc0]
   1744 vmovapd.s %xmm0, %xmm8
   1745 
   1746 // CHECK: vmovapd %xmm8, %xmm0
   1747 // CHECK: encoding: [0xc5,0x79,0x29,0xc0]
   1748 vmovapd.s %xmm8, %xmm0
   1749 
   1750 // CHECK: vmovupd %xmm0, %xmm8
   1751 // CHECK: encoding: [0xc4,0xc1,0x79,0x11,0xc0]
   1752 vmovupd.s %xmm0, %xmm8
   1753 
   1754 // CHECK: vmovupd %xmm8, %xmm0
   1755 // CHECK: encoding: [0xc5,0x79,0x11,0xc0]
   1756 vmovupd.s %xmm8, %xmm0
   1757 
   1758 //  __asm __volatile(
   1759 //    "pushf        \n\t"
   1760 //    "popf       \n\t"
   1761 //    "rep        \n\t"
   1762 //    ".byte  0x0f, 0xa7, 0xd0"
   1763 //  );
   1764 // CHECK: pushfq
   1765 // CHECK-NEXT: popfq
   1766 // CHECK-NEXT: rep
   1767 // CHECK-NEXT: .byte 15
   1768 // CHECK-NEXT: .byte 167
   1769 // CHECK-NEXT: .byte 208
   1770 pushfq
   1771 popfq
   1772 rep
   1773 .byte 15
   1774 .byte 167
   1775 .byte 208
   1776 
   1777 // CHECK: lock
   1778 // CHECK: cmpxchgl
   1779         cmp $0, %edx
   1780         je 1f
   1781         lock
   1782 1:      cmpxchgl %ecx,(%rdi)
   1783 
   1784 // CHECK: rep
   1785 // CHECK-NEXT: byte
   1786 rep
   1787 .byte 0xa4      # movsb
   1788 
   1789 // CHECK: lock
   1790 // This line has to be the last one in the file
   1791 lock
   1792