Home | History | Annotate | Download | only in X86
      1 // RUN: llvm-mc -triple i386-unknown-unknown --show-encoding %s | FileCheck %s
      2 
      3 	pause
      4 // CHECK: pause
      5 // CHECK: encoding: [0xf3,0x90]
      6 	sfence
      7 // CHECK: sfence
      8 // CHECK: encoding: [0x0f,0xae,0xf8]
      9 	lfence
     10 // CHECK: lfence
     11 // CHECK: encoding: [0x0f,0xae,0xe8]
     12 	mfence
     13 // CHECK: mfence
     14 // CHECK: encoding: [0x0f,0xae,0xf0]
     15 	monitor
     16 // CHECK: monitor
     17 // CHECK: encoding: [0x0f,0x01,0xc8]
     18 	monitor %eax, %ecx, %edx
     19 // CHECK: monitor
     20 // CHECK: encoding: [0x0f,0x01,0xc8]
     21 	mwait
     22 // CHECK: mwait
     23 // CHECK: encoding: [0x0f,0x01,0xc9]
     24 	mwait %eax, %ecx
     25 // CHECK: mwait
     26 // CHECK: encoding: [0x0f,0x01,0xc9]
     27 
     28 	vmcall
     29 // CHECK: vmcall
     30 // CHECK: encoding: [0x0f,0x01,0xc1]
     31 	vmlaunch
     32 // CHECK: vmlaunch
     33 // CHECK: encoding: [0x0f,0x01,0xc2]
     34 	vmresume
     35 // CHECK: vmresume
     36 // CHECK: encoding: [0x0f,0x01,0xc3]
     37 	vmxoff
     38 // CHECK: vmxoff
     39 // CHECK: encoding: [0x0f,0x01,0xc4]
     40 	swapgs
     41 // CHECK: swapgs
     42 // CHECK: encoding: [0x0f,0x01,0xf8]
     43 
     44 rdtscp
     45 // CHECK: rdtscp
     46 // CHECK:  encoding: [0x0f,0x01,0xf9]
     47 
     48 
     49 // CHECK: movl	%eax, 16(%ebp)          # encoding: [0x89,0x45,0x10]
     50 	movl	%eax, 16(%ebp)
     51 // CHECK: movl	%eax, -16(%ebp)          # encoding: [0x89,0x45,0xf0]
     52 	movl	%eax, -16(%ebp)
     53 
     54 // CHECK: testb	%bl, %cl                # encoding: [0x84,0xcb]
     55         testb %bl, %cl
     56 
     57 // CHECK: cmpl	%eax, %ebx              # encoding: [0x39,0xc3]
     58         cmpl %eax, %ebx
     59 
     60 // CHECK: addw	%ax, %ax                # encoding: [0x66,0x01,0xc0]
     61         addw %ax, %ax
     62 
     63 // CHECK: shrl	%eax                    # encoding: [0xd1,0xe8]
     64         shrl $1, %eax
     65 
     66 // CHECK: shll	%eax                    # encoding: [0xd1,0xe0]
     67         sall $1, %eax
     68 // CHECK: shll	%eax                    # encoding: [0xd1,0xe0]
     69         sal $1, %eax
     70 
     71 // moffset forms of moves, rdar://7947184
     72 movb	0, %al    // CHECK: movb 0, %al  # encoding: [0xa0,A,A,A,A]
     73 movw	0, %ax    // CHECK: movw 0, %ax  # encoding: [0x66,0xa1,A,A,A,A]
     74 movl	0, %eax   // CHECK: movl 0, %eax  # encoding: [0xa1,A,A,A,A]
     75 
     76 // rdar://7973775
     77 into
     78 // CHECK: into
     79 // CHECK:  encoding: [0xce]
     80 int3
     81 // CHECK: int3
     82 // CHECK:  encoding: [0xcc]
     83 int $4
     84 // CHECK: int $4
     85 // CHECK:  encoding: [0xcd,0x04]
     86 int $255
     87 // CHECK: int $255
     88 // CHECK:  encoding: [0xcd,0xff]
     89 
     90 // CHECK: pushfl	# encoding: [0x9c]
     91         pushf
     92 // CHECK: pushfl	# encoding: [0x9c]
     93         pushfl
     94 // CHECK: popfl	        # encoding: [0x9d]
     95         popf
     96 // CHECK: popfl	        # encoding: [0x9d]
     97         popfl
     98 
     99 // rdar://8014869
    100 retl
    101 // CHECK: ret
    102 // CHECK:  encoding: [0xc3]
    103 
    104 // rdar://7973854
    105 // CHECK: cmoval	%eax, %edx
    106 // CHECK:  encoding: [0x0f,0x47,0xd0]
    107         	cmoval	%eax,%edx
    108 
    109 // CHECK: cmovael	%eax, %edx
    110 // CHECK:  encoding: [0x0f,0x43,0xd0]
    111         	cmovael	%eax,%edx
    112 
    113 // CHECK: cmovbel	%eax, %edx
    114 // CHECK:  encoding: [0x0f,0x46,0xd0]
    115         	cmovbel	%eax,%edx
    116 
    117 // CHECK: cmovbl	%eax, %edx
    118 // CHECK:  encoding: [0x0f,0x42,0xd0]
    119         	cmovbl	%eax,%edx
    120 
    121 // CHECK: cmovbw %bx, %bx
    122 cmovnae	%bx,%bx
    123 
    124 
    125 // CHECK: cmovbel	%eax, %edx
    126 // CHECK:  encoding: [0x0f,0x46,0xd0]
    127         	cmovbel	%eax,%edx
    128 
    129 // CHECK: cmovbl	%eax, %edx
    130 // CHECK:  encoding: [0x0f,0x42,0xd0]
    131         	cmovcl	%eax,%edx
    132 
    133 // CHECK: cmovel	%eax, %edx
    134 // CHECK:  encoding: [0x0f,0x44,0xd0]
    135         	cmovel	%eax,%edx
    136 
    137 // CHECK: cmovgl	%eax, %edx
    138 // CHECK:  encoding: [0x0f,0x4f,0xd0]
    139         	cmovgl	%eax,%edx
    140 
    141 // CHECK: cmovgel	%eax, %edx
    142 // CHECK:  encoding: [0x0f,0x4d,0xd0]
    143         	cmovgel	%eax,%edx
    144 
    145 // CHECK: cmovll	%eax, %edx
    146 // CHECK:  encoding: [0x0f,0x4c,0xd0]
    147         	cmovll	%eax,%edx
    148 
    149 // CHECK: cmovlel	%eax, %edx
    150 // CHECK:  encoding: [0x0f,0x4e,0xd0]
    151         	cmovlel	%eax,%edx
    152 
    153 // CHECK: cmovbel	%eax, %edx
    154 // CHECK:  encoding: [0x0f,0x46,0xd0]
    155         	cmovnal	%eax,%edx
    156 
    157 // CHECK: cmovnel	%eax, %edx
    158 // CHECK:  encoding: [0x0f,0x45,0xd0]
    159         	cmovnel	%eax,%edx
    160 
    161 // CHECK: cmovael	%eax, %edx
    162 // CHECK:  encoding: [0x0f,0x43,0xd0]
    163         	cmovnbl	%eax,%edx
    164 
    165 // CHECK: cmoval	%eax, %edx
    166 // CHECK:  encoding: [0x0f,0x47,0xd0]
    167         	cmovnbel	%eax,%edx
    168 
    169 // CHECK: cmovael	%eax, %edx
    170 // CHECK:  encoding: [0x0f,0x43,0xd0]
    171         	cmovncl	%eax,%edx
    172 
    173 // CHECK: cmovnel	%eax, %edx
    174 // CHECK:  encoding: [0x0f,0x45,0xd0]
    175         	cmovnel	%eax,%edx
    176 
    177 // CHECK: cmovlel	%eax, %edx
    178 // CHECK:  encoding: [0x0f,0x4e,0xd0]
    179         	cmovngl	%eax,%edx
    180 
    181 // CHECK: cmovgel	%eax, %edx
    182 // CHECK:  encoding: [0x0f,0x4d,0xd0]
    183         	cmovnl	%eax,%edx
    184 
    185 // CHECK: cmovnel	%eax, %edx
    186 // CHECK:  encoding: [0x0f,0x45,0xd0]
    187         	cmovnel	%eax,%edx
    188 
    189 // CHECK: cmovlel	%eax, %edx
    190 // CHECK:  encoding: [0x0f,0x4e,0xd0]
    191         	cmovngl	%eax,%edx
    192 
    193 // CHECK: cmovll	%eax, %edx
    194 // CHECK:  encoding: [0x0f,0x4c,0xd0]
    195         	cmovngel	%eax,%edx
    196 
    197 // CHECK: cmovgel	%eax, %edx
    198 // CHECK:  encoding: [0x0f,0x4d,0xd0]
    199         	cmovnll	%eax,%edx
    200 
    201 // CHECK: cmovgl	%eax, %edx
    202 // CHECK:  encoding: [0x0f,0x4f,0xd0]
    203         	cmovnlel	%eax,%edx
    204 
    205 // CHECK: cmovnol	%eax, %edx
    206 // CHECK:  encoding: [0x0f,0x41,0xd0]
    207         	cmovnol	%eax,%edx
    208 
    209 // CHECK: cmovnpl	%eax, %edx
    210 // CHECK:  encoding: [0x0f,0x4b,0xd0]
    211         	cmovnpl	%eax,%edx
    212 
    213 // CHECK: cmovnsl	%eax, %edx
    214 // CHECK:  encoding: [0x0f,0x49,0xd0]
    215         	cmovnsl	%eax,%edx
    216 
    217 // CHECK: cmovnel	%eax, %edx
    218 // CHECK:  encoding: [0x0f,0x45,0xd0]
    219         	cmovnzl	%eax,%edx
    220 
    221 // CHECK: cmovol	%eax, %edx
    222 // CHECK:  encoding: [0x0f,0x40,0xd0]
    223         	cmovol	%eax,%edx
    224 
    225 // CHECK: cmovpl	%eax, %edx
    226 // CHECK:  encoding: [0x0f,0x4a,0xd0]
    227         	cmovpl	%eax,%edx
    228 
    229 // CHECK: cmovsl	%eax, %edx
    230 // CHECK:  encoding: [0x0f,0x48,0xd0]
    231         	cmovsl	%eax,%edx
    232 
    233 // CHECK: cmovel	%eax, %edx
    234 // CHECK:  encoding: [0x0f,0x44,0xd0]
    235         	cmovzl	%eax,%edx
    236 
    237 // CHECK: cmpps	$0, %xmm0, %xmm1
    238 // CHECK: encoding: [0x0f,0xc2,0xc8,0x00]
    239         cmpps $0, %xmm0, %xmm1
    240 // CHECK:	cmpps	$0, (%eax), %xmm1
    241 // CHECK: encoding: [0x0f,0xc2,0x08,0x00]
    242         cmpps $0, 0(%eax), %xmm1
    243 // CHECK:	cmppd	$0, %xmm0, %xmm1
    244 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x00]
    245         cmppd $0, %xmm0, %xmm1
    246 // CHECK:	cmppd	$0, (%eax), %xmm1
    247 // CHECK: encoding: [0x66,0x0f,0xc2,0x08,0x00]
    248         cmppd $0, 0(%eax), %xmm1
    249 // CHECK:	cmpss	$0, %xmm0, %xmm1
    250 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x00]
    251         cmpss $0, %xmm0, %xmm1
    252 // CHECK:	cmpss	$0, (%eax), %xmm1
    253 // CHECK: encoding: [0xf3,0x0f,0xc2,0x08,0x00]
    254         cmpss $0, 0(%eax), %xmm1
    255 // CHECK:	cmpsd	$0, %xmm0, %xmm1
    256 // CHECK: encoding: [0xf2,0x0f,0xc2,0xc8,0x00]
    257         cmpsd $0, %xmm0, %xmm1
    258 // CHECK:	cmpsd	$0, (%eax), %xmm1
    259 // CHECK: encoding: [0xf2,0x0f,0xc2,0x08,0x00]
    260         cmpsd $0, 0(%eax), %xmm1
    261 
    262 // Check matching of instructions which embed the SSE comparison code.
    263 
    264 // CHECK: cmpps $0, %xmm0, %xmm1
    265 // CHECK: encoding: [0x0f,0xc2,0xc8,0x00]
    266         cmpeqps %xmm0, %xmm1
    267 
    268 // CHECK: cmppd $1, %xmm0, %xmm1
    269 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x01]
    270         cmpltpd %xmm0, %xmm1
    271 
    272 // CHECK: cmpss $2, %xmm0, %xmm1
    273 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x02]
    274         cmpless %xmm0, %xmm1
    275 
    276 // CHECK: cmppd $3, %xmm0, %xmm1
    277 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x03]
    278         cmpunordpd %xmm0, %xmm1
    279 
    280 // CHECK: cmpps $4, %xmm0, %xmm1
    281 // CHECK: encoding: [0x0f,0xc2,0xc8,0x04]
    282         cmpneqps %xmm0, %xmm1
    283 
    284 // CHECK: cmppd $5, %xmm0, %xmm1
    285 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x05]
    286         cmpnltpd %xmm0, %xmm1
    287 
    288 // CHECK: cmpss $6, %xmm0, %xmm1
    289 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x06]
    290         cmpnless %xmm0, %xmm1
    291 
    292 // CHECK: cmpsd $7, %xmm0, %xmm1
    293 // CHECK: encoding: [0xf2,0x0f,0xc2,0xc8,0x07]
    294         cmpordsd %xmm0, %xmm1
    295 
    296 // rdar://7995856
    297 // CHECK: fmul	%st(0)
    298 // CHECK:  encoding: [0xd8,0xc8]
    299         fmul %st(0), %st
    300 
    301 // CHECK: fadd	%st(0)
    302 // CHECK:  encoding: [0xd8,0xc0]
    303         fadd %st(0), %st
    304 
    305 // CHECK: fsub	%st(0)
    306 // CHECK:  encoding: [0xd8,0xe0]
    307         fsub %st(0), %st
    308 
    309 // CHECK: fsubr	%st(0)
    310 // CHECK:  encoding: [0xd8,0xe8]
    311         fsubr %st(0), %st
    312 
    313 // CHECK: fdivr	%st(0)
    314 // CHECK:  encoding: [0xd8,0xf8]
    315         fdivr %st(0), %st
    316 
    317 // CHECK: fdiv	%st(0)
    318 // CHECK:  encoding: [0xd8,0xf0]
    319         fdiv %st(0), %st
    320 
    321 // radr://8017519
    322 // CHECK: movl	%cs, %eax
    323 // CHECK:  encoding: [0x8c,0xc8]
    324         movl %cs, %eax
    325 
    326 // CHECK: movw	%cs, %ax
    327 // CHECK:  encoding: [0x66,0x8c,0xc8]
    328         movw %cs, %ax
    329 
    330 // CHECK: movl	%cs, (%eax)
    331 // CHECK:  encoding: [0x8c,0x08]
    332         movl %cs, (%eax)
    333 
    334 // CHECK: movw	%cs, (%eax)
    335 // CHECK:  encoding: [0x66,0x8c,0x08]
    336         movw %cs, (%eax)
    337 
    338 // CHECK: movl	%eax, %cs
    339 // CHECK:  encoding: [0x8e,0xc8]
    340         movl %eax, %cs
    341 
    342 // CHECK: movl	(%eax), %cs
    343 // CHECK:  encoding: [0x8e,0x08]
    344         movl (%eax), %cs
    345 
    346 // CHECK: movw	(%eax), %cs
    347 // CHECK:  encoding: [0x66,0x8e,0x08]
    348         movw (%eax), %cs
    349 
    350 // radr://8033374
    351 // CHECK: movl	%cr0, %eax
    352 // CHECK:  encoding: [0x0f,0x20,0xc0]
    353         movl %cr0,%eax
    354 
    355 // CHECK: movl	%cr1, %eax
    356 // CHECK:  encoding: [0x0f,0x20,0xc8]
    357         movl %cr1,%eax
    358 
    359 // CHECK: movl	%cr2, %eax
    360 // CHECK:  encoding: [0x0f,0x20,0xd0]
    361         movl %cr2,%eax
    362 
    363 // CHECK: movl	%cr3, %eax
    364 // CHECK:  encoding: [0x0f,0x20,0xd8]
    365         movl %cr3,%eax
    366 
    367 // CHECK: movl	%cr4, %eax
    368 // CHECK:  encoding: [0x0f,0x20,0xe0]
    369         movl %cr4,%eax
    370 
    371 // CHECK: movl	%dr0, %eax
    372 // CHECK:  encoding: [0x0f,0x21,0xc0]
    373         movl %dr0,%eax
    374 
    375 // CHECK: movl	%dr1, %eax
    376 // CHECK:  encoding: [0x0f,0x21,0xc8]
    377         movl %dr1,%eax
    378 
    379 // CHECK: movl	%dr1, %eax
    380 // CHECK:  encoding: [0x0f,0x21,0xc8]
    381         movl %dr1,%eax
    382 
    383 // CHECK: movl	%dr2, %eax
    384 // CHECK:  encoding: [0x0f,0x21,0xd0]
    385         movl %dr2,%eax
    386 
    387 // CHECK: movl	%dr3, %eax
    388 // CHECK:  encoding: [0x0f,0x21,0xd8]
    389         movl %dr3,%eax
    390 
    391 // CHECK: movl	%dr4, %eax
    392 // CHECK:  encoding: [0x0f,0x21,0xe0]
    393         movl %dr4,%eax
    394 
    395 // CHECK: movl	%dr5, %eax
    396 // CHECK:  encoding: [0x0f,0x21,0xe8]
    397         movl %dr5,%eax
    398 
    399 // CHECK: movl	%dr6, %eax
    400 // CHECK:  encoding: [0x0f,0x21,0xf0]
    401         movl %dr6,%eax
    402 
    403 // CHECK: movl	%dr7, %eax
    404 // CHECK:  encoding: [0x0f,0x21,0xf8]
    405         movl %dr7,%eax
    406 
    407 // radr://8017522
    408 // CHECK: wait
    409 // CHECK:  encoding: [0x9b]
    410 	fwait
    411 
    412 // rdar://7873482
    413 // CHECK: [0x65,0x8b,0x05,0x7c,0x00,0x00,0x00]
    414 // FIXME: This is a correct bug poor encoding: Use 65 a1 7c 00 00 00
    415         movl	%gs:124, %eax
    416 
    417 // CHECK: pusha
    418 // CHECK:  encoding: [0x60]
    419         	pusha
    420 
    421 // CHECK: popa
    422 // CHECK:  encoding: [0x61]
    423         	popa
    424 
    425 // CHECK: pushal
    426 // CHECK:  encoding: [0x60]
    427         	pushal
    428 
    429 // CHECK: popal
    430 // CHECK:  encoding: [0x61]
    431         	popal
    432 
    433 // CHECK: jmpl *8(%eax)
    434 // CHECK:   encoding: [0xff,0x60,0x08]
    435 	jmp	*8(%eax)
    436 
    437 // PR7465
    438 // CHECK: lcalll $2, $4660
    439 // CHECK:   encoding: [0x9a,0x34,0x12,0x00,0x00,0x02,0x00]
    440 lcalll $0x2, $0x1234
    441 
    442 
    443 // rdar://8061602
    444 L1:
    445   jcxz L1
    446 // CHECK: jcxz L1
    447 // CHECK:   encoding: [0x67,0xe3,A]
    448   jecxz L1
    449 // CHECK: jecxz L1
    450 // CHECK:   encoding: [0xe3,A]
    451 
    452 // rdar://8403974
    453 iret
    454 // CHECK: iretl
    455 // CHECK: encoding: [0xcf]
    456 iretw
    457 // CHECK: iretw
    458 // CHECK: encoding: [0x66,0xcf]
    459 iretl
    460 // CHECK: iretl
    461 // CHECK: encoding: [0xcf]
    462 
    463 // rdar://8403907
    464 sysret
    465 // CHECK: sysretl
    466 // CHECK: encoding: [0x0f,0x07]
    467 sysretl
    468 // CHECK: sysretl
    469 // CHECK: encoding: [0x0f,0x07]
    470 
    471 // rdar://8018260
    472 testl	%ecx, -24(%ebp)
    473 // CHECK: testl	-24(%ebp), %ecx
    474 testl	-24(%ebp), %ecx
    475 // CHECK: testl	-24(%ebp), %ecx
    476 
    477 
    478 // rdar://8407242
    479 push %cs
    480 // CHECK: pushl	%cs
    481 // CHECK: encoding: [0x0e]
    482 push %ds
    483 // CHECK: pushl	%ds
    484 // CHECK: encoding: [0x1e]
    485 push %ss
    486 // CHECK: pushl	%ss
    487 // CHECK: encoding: [0x16]
    488 push %es
    489 // CHECK: pushl	%es
    490 // CHECK: encoding: [0x06]
    491 push %fs
    492 // CHECK: pushl	%fs
    493 // CHECK: encoding: [0x0f,0xa0]
    494 push %gs
    495 // CHECK: pushl	%gs
    496 // CHECK: encoding: [0x0f,0xa8]
    497 
    498 pushw %cs
    499 // CHECK: pushw	%cs
    500 // CHECK: encoding: [0x66,0x0e]
    501 pushw %ds
    502 // CHECK: pushw	%ds
    503 // CHECK: encoding: [0x66,0x1e]
    504 pushw %ss
    505 // CHECK: pushw	%ss
    506 // CHECK: encoding: [0x66,0x16]
    507 pushw %es
    508 // CHECK: pushw	%es
    509 // CHECK: encoding: [0x66,0x06]
    510 pushw %fs
    511 // CHECK: pushw	%fs
    512 // CHECK: encoding: [0x66,0x0f,0xa0]
    513 pushw %gs
    514 // CHECK: pushw	%gs
    515 // CHECK: encoding: [0x66,0x0f,0xa8]
    516 
    517 pop %ss
    518 // CHECK: popl	%ss
    519 // CHECK: encoding: [0x17]
    520 pop %ds
    521 // CHECK: popl	%ds
    522 // CHECK: encoding: [0x1f]
    523 pop %es
    524 // CHECK: popl	%es
    525 // CHECK: encoding: [0x07]
    526 
    527 // rdar://8408129
    528 pushfd
    529 // CHECK: pushfl
    530 popfd
    531 // CHECK: popfl
    532 pushfl
    533 // CHECK: pushfl
    534 popfl
    535 // CHECK: popfl
    536 
    537 
    538 // rdar://8416805
    539 	setc	%bl
    540 	setnae	%bl
    541 	setnb	%bl
    542 	setnc	%bl
    543 	setna	%bl
    544 	setnbe	%bl
    545 	setpe	%bl
    546 	setpo	%bl
    547 	setnge	%bl
    548 	setnl	%bl
    549 	setng	%bl
    550 	setnle	%bl
    551 
    552 // PR8686
    553         setneb  %cl // CHECK: setne %cl
    554 	setcb	%bl // CHECK: setb %bl
    555 	setnaeb	%bl // CHECK: setb %bl
    556 
    557 
    558 // CHECK: lcalll	$31438, $31438
    559 // CHECK: lcalll	$31438, $31438
    560 // CHECK: ljmpl	$31438, $31438
    561 // CHECK: ljmpl	$31438, $31438
    562 
    563 calll	$0x7ace,$0x7ace
    564 lcalll	$0x7ace,$0x7ace
    565 jmpl	$0x7ace,$0x7ace
    566 ljmpl	$0x7ace,$0x7ace
    567 
    568 // CHECK: lcalll	$31438, $31438
    569 // CHECK: lcalll	$31438, $31438
    570 // CHECK: ljmpl	$31438, $31438
    571 // CHECK: ljmpl	$31438, $31438
    572 
    573 call	$0x7ace,$0x7ace
    574 lcall	$0x7ace,$0x7ace
    575 jmp	$0x7ace,$0x7ace
    576 ljmp	$0x7ace,$0x7ace
    577 
    578 // rdar://8456370
    579 // CHECK: calll a
    580  calll a
    581 
    582 // CHECK:	incb	%al # encoding: [0xfe,0xc0]
    583 	incb %al
    584 
    585 // CHECK:	incw	%ax # encoding: [0x66,0x40]
    586 	incw %ax
    587 
    588 // CHECK:	incl	%eax # encoding: [0x40]
    589 	incl %eax
    590 
    591 // CHECK:	decb	%al # encoding: [0xfe,0xc8]
    592 	decb %al
    593 
    594 // CHECK:	decw	%ax # encoding: [0x66,0x48]
    595 	decw %ax
    596 
    597 // CHECK:	decl	%eax # encoding: [0x48]
    598 	decl %eax
    599 
    600 // CHECK: pshufw $14, %mm4, %mm0 # encoding: [0x0f,0x70,0xc4,0x0e]
    601 pshufw $14, %mm4, %mm0
    602 
    603 // CHECK: pshufw $90, %mm4, %mm0 # encoding: [0x0f,0x70,0xc4,0x5a]
    604 // PR8288
    605 pshufw $90, %mm4, %mm0
    606 
    607 // rdar://8416805
    608 // CHECK: aaa
    609 // CHECK:  encoding: [0x37]
    610         	aaa
    611 
    612 // CHECK: aad	$1
    613 // CHECK:  encoding: [0xd5,0x01]
    614         	aad	$1
    615 
    616 // CHECK: aad
    617 // CHECK:  encoding: [0xd5,0x0a]
    618         	aad	$0xA
    619 
    620 // CHECK: aad
    621 // CHECK:  encoding: [0xd5,0x0a]
    622         	aad
    623 
    624 // CHECK: aam	$2
    625 // CHECK:  encoding: [0xd4,0x02]
    626         	aam	$2
    627 
    628 // CHECK: aam
    629 // CHECK:  encoding: [0xd4,0x0a]
    630         	aam	$0xA
    631 
    632 // CHECK: aam
    633 // CHECK:  encoding: [0xd4,0x0a]
    634         	aam
    635 
    636 // CHECK: aas
    637 // CHECK:  encoding: [0x3f]
    638         	aas
    639 
    640 // CHECK: daa
    641 // CHECK:  encoding: [0x27]
    642         	daa
    643 
    644 // CHECK: das
    645 // CHECK:  encoding: [0x2f]
    646         	das
    647 
    648 // CHECK: retw	$31438
    649 // CHECK:  encoding: [0x66,0xc2,0xce,0x7a]
    650         	retw	$0x7ace
    651 
    652 // CHECK: lretw	$31438
    653 // CHECK:  encoding: [0x66,0xca,0xce,0x7a]
    654         	lretw	$0x7ace
    655 
    656 // CHECK: bound	2(%eax), %bx
    657 // CHECK:  encoding: [0x66,0x62,0x58,0x02]
    658         	bound	2(%eax),%bx
    659 
    660 // CHECK: bound	4(%ebx), %ecx
    661 // CHECK:  encoding: [0x62,0x4b,0x04]
    662         	bound	4(%ebx),%ecx
    663 
    664 // CHECK: arpl	%bx, %bx
    665 // CHECK:  encoding: [0x63,0xdb]
    666         	arpl	%bx,%bx
    667 
    668 // CHECK: arpl	%bx, 6(%ecx)
    669 // CHECK:  encoding: [0x63,0x59,0x06]
    670         	arpl	%bx,6(%ecx)
    671 
    672 // CHECK: lgdtw	4(%eax)
    673 // CHECK:  encoding: [0x66,0x0f,0x01,0x50,0x04]
    674         	lgdtw	4(%eax)
    675 
    676 // CHECK: lgdt	4(%eax)
    677 // CHECK:  encoding: [0x0f,0x01,0x50,0x04]
    678         	lgdt	4(%eax)
    679 
    680 // CHECK: lgdt	4(%eax)
    681 // CHECK:  encoding: [0x0f,0x01,0x50,0x04]
    682         	lgdtl	4(%eax)
    683 
    684 // CHECK: lidtw	4(%eax)
    685 // CHECK:  encoding: [0x66,0x0f,0x01,0x58,0x04]
    686         	lidtw	4(%eax)
    687 
    688 // CHECK: lidt	4(%eax)
    689 // CHECK:  encoding: [0x0f,0x01,0x58,0x04]
    690         	lidt	4(%eax)
    691 
    692 // CHECK: lidt	4(%eax)
    693 // CHECK:  encoding: [0x0f,0x01,0x58,0x04]
    694         	lidtl	4(%eax)
    695 
    696 // CHECK: sgdtw	4(%eax)
    697 // CHECK:  encoding: [0x66,0x0f,0x01,0x40,0x04]
    698         	sgdtw	4(%eax)
    699 
    700 // CHECK: sgdt	4(%eax)
    701 // CHECK:  encoding: [0x0f,0x01,0x40,0x04]
    702         	sgdt	4(%eax)
    703 
    704 // CHECK: sgdt	4(%eax)
    705 // CHECK:  encoding: [0x0f,0x01,0x40,0x04]
    706         	sgdtl	4(%eax)
    707 
    708 // CHECK: sidtw	4(%eax)
    709 // CHECK:  encoding: [0x66,0x0f,0x01,0x48,0x04]
    710         	sidtw	4(%eax)
    711 
    712 // CHECK: sidt	4(%eax)
    713 // CHECK:  encoding: [0x0f,0x01,0x48,0x04]
    714         	sidt	4(%eax)
    715 
    716 // CHECK: sidt	4(%eax)
    717 // CHECK:  encoding: [0x0f,0x01,0x48,0x04]
    718         	sidtl	4(%eax)
    719 
    720 // CHECK: fcompi	%st(2)
    721 // CHECK:  encoding: [0xdf,0xf2]
    722         	fcompi	%st(2), %st
    723 
    724 // CHECK: fcompi	%st(2)
    725 // CHECK:  encoding: [0xdf,0xf2]
    726         	fcompi	%st(2)
    727 
    728 // CHECK: fcompi
    729 // CHECK:  encoding: [0xdf,0xf1]
    730         	fcompi
    731 
    732 // CHECK: fucompi	%st(2)
    733 // CHECK:  encoding: [0xdf,0xea]
    734         	fucompi	%st(2),%st
    735 
    736 // CHECK: fucompi	%st(2)
    737 // CHECK:  encoding: [0xdf,0xea]
    738         	fucompi	%st(2)
    739 
    740 // CHECK: fucompi
    741 // CHECK:  encoding: [0xdf,0xe9]
    742         	fucompi
    743 
    744 // CHECK: fldcw	32493
    745 // CHECK:  encoding: [0xd9,0x2d,0xed,0x7e,0x00,0x00]
    746         	fldcww	0x7eed
    747 
    748 // CHECK: fldcw	32493
    749 // CHECK:  encoding: [0xd9,0x2d,0xed,0x7e,0x00,0x00]
    750         	fldcw	0x7eed
    751 
    752 // CHECK: fnstcw	32493
    753 // CHECK:  encoding: [0xd9,0x3d,0xed,0x7e,0x00,0x00]
    754         	fnstcww	0x7eed
    755 
    756 // CHECK: fnstcw	32493
    757 // CHECK:  encoding: [0xd9,0x3d,0xed,0x7e,0x00,0x00]
    758         	fnstcw	0x7eed
    759 
    760 // CHECK: wait
    761 // CHECK:  encoding: [0x9b]
    762         	fstcww	0x7eed
    763 
    764 // CHECK: wait
    765 // CHECK:  encoding: [0x9b]
    766         	fstcw	0x7eed
    767 
    768 // CHECK: fnstsw	32493
    769 // CHECK:  encoding: [0xdd,0x3d,0xed,0x7e,0x00,0x00]
    770         	fnstsww	0x7eed
    771 
    772 // CHECK: fnstsw	32493
    773 // CHECK:  encoding: [0xdd,0x3d,0xed,0x7e,0x00,0x00]
    774         	fnstsw	0x7eed
    775 
    776 // CHECK: wait
    777 // CHECK:  encoding: [0x9b]
    778         	fstsww	0x7eed
    779 
    780 // CHECK: wait
    781 // CHECK:  encoding: [0x9b]
    782         	fstsw	0x7eed
    783 
    784 // CHECK: verr	32493
    785 // CHECK:  encoding: [0x0f,0x00,0x25,0xed,0x7e,0x00,0x00]
    786         	verrw	0x7eed
    787 
    788 // CHECK: verr	32493
    789 // CHECK:  encoding: [0x0f,0x00,0x25,0xed,0x7e,0x00,0x00]
    790         	verr	0x7eed
    791 
    792 // CHECK: wait
    793 // CHECK:  encoding: [0x9b]
    794         	fclex
    795 
    796 // CHECK: fnclex
    797 // CHECK:  encoding: [0xdb,0xe2]
    798         	fnclex
    799 
    800 // CHECK: ud2
    801 // CHECK:  encoding: [0x0f,0x0b]
    802         	ud2
    803 
    804 // CHECK: ud2
    805 // CHECK:  encoding: [0x0f,0x0b]
    806         	ud2a
    807 
    808 // CHECK: ud2b
    809 // CHECK:  encoding: [0x0f,0xb9]
    810         	ud2b
    811 
    812 // CHECK: loope 0
    813 // CHECK: encoding: [0xe1,A]
    814 	loopz 0
    815 
    816 // CHECK: loopne 0
    817 // CHECK: encoding: [0xe0,A]
    818 	loopnz 0
    819 
    820 // CHECK: outsb # encoding: [0x6e]
    821 // CHECK: outsb
    822 // CHECK: outsb
    823 	outsb
    824 	outsb	%ds:(%esi), %dx
    825 	outsb	(%esi), %dx
    826 
    827 // CHECK: outsw # encoding: [0x66,0x6f]
    828 // CHECK: outsw
    829 // CHECK: outsw
    830 	outsw
    831 	outsw	%ds:(%esi), %dx
    832 	outsw	(%esi), %dx
    833 
    834 // CHECK: outsl # encoding: [0x6f]
    835 // CHECK: outsl
    836 	outsl
    837 	outsl	%ds:(%esi), %dx
    838 	outsl	(%esi), %dx
    839 
    840 // CHECK: insb # encoding: [0x6c]
    841 // CHECK: insb
    842 	insb
    843 	insb	%dx, %es:(%edi)
    844 
    845 // CHECK: insw # encoding: [0x66,0x6d]
    846 // CHECK: insw
    847 	insw
    848 	insw	%dx, %es:(%edi)
    849 
    850 // CHECK: insl # encoding: [0x6d]
    851 // CHECK: insl
    852 	insl
    853 	insl	%dx, %es:(%edi)
    854 
    855 // CHECK: movsb # encoding: [0xa4]
    856 // CHECK: movsb
    857 // CHECK: movsb
    858 	movsb
    859 	movsb	%ds:(%esi), %es:(%edi)
    860 	movsb	(%esi), %es:(%edi)
    861 
    862 // CHECK: movsw # encoding: [0x66,0xa5]
    863 // CHECK: movsw
    864 // CHECK: movsw
    865 	movsw
    866 	movsw	%ds:(%esi), %es:(%edi)
    867 	movsw	(%esi), %es:(%edi)
    868 
    869 // CHECK: movsd # encoding: [0xa5]
    870 // CHECK: movsd
    871 // CHECK: movsd
    872 	movsl
    873 	movsl	%ds:(%esi), %es:(%edi)
    874 	movsl	(%esi), %es:(%edi)
    875 
    876 // CHECK: lodsb # encoding: [0xac]
    877 // CHECK: lodsb
    878 // CHECK: lodsb
    879 // CHECK: lodsb
    880 // CHECK: lodsb
    881 	lodsb
    882 	lodsb	%ds:(%esi), %al
    883 	lodsb	(%esi), %al
    884 	lods	%ds:(%esi), %al
    885 	lods	(%esi), %al
    886 
    887 // CHECK: lodsw # encoding: [0x66,0xad]
    888 // CHECK: lodsw
    889 // CHECK: lodsw
    890 // CHECK: lodsw
    891 // CHECK: lodsw
    892 	lodsw
    893 	lodsw	%ds:(%esi), %ax
    894 	lodsw	(%esi), %ax
    895 	lods	%ds:(%esi), %ax
    896 	lods	(%esi), %ax
    897 
    898 // CHECK: lodsl # encoding: [0xad]
    899 // CHECK: lodsl
    900 // CHECK: lodsl
    901 // CHECK: lodsl
    902 // CHECK: lodsl
    903 	lodsl
    904 	lodsl	%ds:(%esi), %eax
    905 	lodsl	(%esi), %eax
    906 	lods	%ds:(%esi), %eax
    907 	lods	(%esi), %eax
    908 
    909 // CHECK: stosb # encoding: [0xaa]
    910 // CHECK: stosb
    911 // CHECK: stosb
    912 	stosb
    913 	stosb	%al, %es:(%edi)
    914 	stos	%al, %es:(%edi)
    915 
    916 // CHECK: stosw # encoding: [0x66,0xab]
    917 // CHECK: stosw
    918 // CHECK: stosw
    919 	stosw
    920 	stosw	%ax, %es:(%edi)
    921 	stos	%ax, %es:(%edi)
    922 
    923 // CHECK: stosl # encoding: [0xab]
    924 // CHECK: stosl
    925 // CHECK: stosl
    926 	stosl
    927 	stosl	%eax, %es:(%edi)
    928 	stos	%eax, %es:(%edi)
    929 
    930 // CHECK: strw
    931 // CHECK: encoding: [0x66,0x0f,0x00,0xc8]
    932 	str %ax
    933 
    934 // CHECK: strl
    935 // CHECK: encoding: [0x0f,0x00,0xc8]
    936 	str %eax
    937 
    938 
    939 // PR9378
    940 // CHECK: fsubp
    941 // CHECK: encoding: [0xde,0xe1]
    942 fsubp %st,%st(1)
    943 
    944 // PR9164
    945 // CHECK: fsubp	%st(2)
    946 // CHECK: encoding: [0xde,0xe2]
    947 fsubp   %st, %st(2)
    948 
    949 // PR10345
    950 // CHECK: xchgl %eax, %eax
    951 // CHECK: encoding: [0x90]
    952 xchgl %eax, %eax
    953 
    954 // CHECK: xchgw %ax, %ax
    955 // CHECK: encoding: [0x66,0x90]
    956 xchgw %ax, %ax
    957 
    958 // CHECK: xchgl %ecx, %eax
    959 // CHECK: encoding: [0x91]
    960 xchgl %ecx, %eax
    961 
    962 // CHECK: xchgl %ecx, %eax
    963 // CHECK: encoding: [0x91]
    964 xchgl %eax, %ecx
    965