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