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