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